ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/
#ifndef AliEveTRDLoader_H
#define AliEveTRDLoader_H

////////////////////////////////////////////////////////////////////////
// - ALIEVE implementation -
// Loader for the TRD detector - base class
//    - AliEveTRDLoader - loader of TRD data (simulation + measured)
//    - AliEveTRDLoaderEditor - UI
//
// by A.Bercuci (A.Bercuci@gsi.de)   Fri Oct 27 2006
////////////////////////////////////////////////////////////////////////

#include <TEveElement.h>
#include <TGedFrame.h>
#include <TString.h>

class AliTRDv1;
class AliTRDgeometry;

class TGNumberEntry;
class TGColorSelect;
class TGTextEntry;
class TTree;

class TEveGValuator;

class AliEveTRDChamber;
class AliEveTRDLoaderManager;

class AliEveTRDLoader : public TEveElementList
{
  friend class AliEveTRDLoaderEditor;

public:
  enum TRDDataTypes {
    kTRDHits     = BIT(0),
    kTRDDigits   = BIT(1),
    kTRDClusters = BIT(2),
    kTRDTracklets= BIT(3),
    kTRDRawRoot  = BIT(4),
    kTRDRawDate  = BIT(5)
  };

  AliEveTRDLoader(const Text_t* n="AliEveTRDLoader", const Text_t* t=0);
  virtual ~AliEveTRDLoader() {}

  virtual void		AddChambers(int sm=-1, int stk=-1, int ly=-1);
  virtual AliEveTRDChamber*	GetChamber(int d);
  virtual Int_t   GetDataType() const {return fDataType;}
  virtual Int_t   GetEvent() const {return fEvent;}
  virtual Bool_t	GoToEvent(int ev);
          Bool_t  IsDataLinked() const {return TestBit(1);}

  virtual Bool_t	Open(const char *file, const char *dir = ".");
  inline virtual  Bool_t  NextEvent(Bool_t rewind = kTRUE);
  virtual void 		Paint(Option_t *option="");

  virtual void		SetDataType(UChar_t type = 0){fDataType = type;}


protected:
  virtual Bool_t	LoadHits(TTree *tH);
  virtual Bool_t	LoadClusters(TTree *tC);
  virtual Bool_t	LoadDigits(TTree *tD);
  virtual Bool_t	LoadTracklets(TTree *trklTree);
          void    SetDataLinked(Bool_t linked = kTRUE) {SetBit(1, linked);}

  virtual void		Unload();

  UChar_t fDataType;        // data type
  //Bool_t	fLoadHits, fLoadDigits, fLoadClusters, fLoadTracks; // flags for data-loading
  Char_t	fSM, fStack, fLy; // supermodule, stack, layer
  Short_t		fEvent;         // current event to be displayed
  AliTRDgeometry		*fGeo;  // the TRD geometry
  TString	fFilename;        // name of data file
  TString	fDir;             // data directory

private:
  AliEveTRDLoader(const AliEveTRDLoader&);            // Not implemented
  AliEveTRDLoader& operator=(const AliEveTRDLoader&); // Not implemented

  ClassDef(AliEveTRDLoader, 0); // Alieve Loader class for the TRD detector.
};

Bool_t AliEveTRDLoader::NextEvent(Bool_t)
{
  fEvent++;
  return GoToEvent(fEvent);
}

class AliEveTRDLoaderEditor : public TGedFrame
{
public:
  AliEveTRDLoaderEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
			UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground());
  virtual ~AliEveTRDLoaderEditor() {}

  virtual void	AddChambers();
  virtual void	FileOpen();
  virtual void	GoTo();
  virtual void	Next();
  virtual void	SetEvent(Double_t ev){fM->fEvent = (Int_t)ev;}
  virtual void	SetModel(TObject* obj);

protected:
  AliEveTRDLoader	*fM;     // Model object.
  TGTextEntry		*fFile;    // File name weed.
  TGTextButton  *fBrowse;  // browse button
  TEveGValuator		*fEvent; // Event no weed.
  TEveGValuator		*fSMNumber, *fStackNumber, *fPlaneNumber; // Detector id weeds.

private:
  AliEveTRDLoaderEditor(const AliEveTRDLoaderEditor&);            // Not implemented
  AliEveTRDLoaderEditor& operator=(const AliEveTRDLoaderEditor&); // Not implemented

  ClassDef(AliEveTRDLoaderEditor, 0); // Editor for AliEveTRDLoader.
};

#endif
 AliEveTRDLoader.h:1
 AliEveTRDLoader.h:2
 AliEveTRDLoader.h:3
 AliEveTRDLoader.h:4
 AliEveTRDLoader.h:5
 AliEveTRDLoader.h:6
 AliEveTRDLoader.h:7
 AliEveTRDLoader.h:8
 AliEveTRDLoader.h:9
 AliEveTRDLoader.h:10
 AliEveTRDLoader.h:11
 AliEveTRDLoader.h:12
 AliEveTRDLoader.h:13
 AliEveTRDLoader.h:14
 AliEveTRDLoader.h:15
 AliEveTRDLoader.h:16
 AliEveTRDLoader.h:17
 AliEveTRDLoader.h:18
 AliEveTRDLoader.h:19
 AliEveTRDLoader.h:20
 AliEveTRDLoader.h:21
 AliEveTRDLoader.h:22
 AliEveTRDLoader.h:23
 AliEveTRDLoader.h:24
 AliEveTRDLoader.h:25
 AliEveTRDLoader.h:26
 AliEveTRDLoader.h:27
 AliEveTRDLoader.h:28
 AliEveTRDLoader.h:29
 AliEveTRDLoader.h:30
 AliEveTRDLoader.h:31
 AliEveTRDLoader.h:32
 AliEveTRDLoader.h:33
 AliEveTRDLoader.h:34
 AliEveTRDLoader.h:35
 AliEveTRDLoader.h:36
 AliEveTRDLoader.h:37
 AliEveTRDLoader.h:38
 AliEveTRDLoader.h:39
 AliEveTRDLoader.h:40
 AliEveTRDLoader.h:41
 AliEveTRDLoader.h:42
 AliEveTRDLoader.h:43
 AliEveTRDLoader.h:44
 AliEveTRDLoader.h:45
 AliEveTRDLoader.h:46
 AliEveTRDLoader.h:47
 AliEveTRDLoader.h:48
 AliEveTRDLoader.h:49
 AliEveTRDLoader.h:50
 AliEveTRDLoader.h:51
 AliEveTRDLoader.h:52
 AliEveTRDLoader.h:53
 AliEveTRDLoader.h:54
 AliEveTRDLoader.h:55
 AliEveTRDLoader.h:56
 AliEveTRDLoader.h:57
 AliEveTRDLoader.h:58
 AliEveTRDLoader.h:59
 AliEveTRDLoader.h:60
 AliEveTRDLoader.h:61
 AliEveTRDLoader.h:62
 AliEveTRDLoader.h:63
 AliEveTRDLoader.h:64
 AliEveTRDLoader.h:65
 AliEveTRDLoader.h:66
 AliEveTRDLoader.h:67
 AliEveTRDLoader.h:68
 AliEveTRDLoader.h:69
 AliEveTRDLoader.h:70
 AliEveTRDLoader.h:71
 AliEveTRDLoader.h:72
 AliEveTRDLoader.h:73
 AliEveTRDLoader.h:74
 AliEveTRDLoader.h:75
 AliEveTRDLoader.h:76
 AliEveTRDLoader.h:77
 AliEveTRDLoader.h:78
 AliEveTRDLoader.h:79
 AliEveTRDLoader.h:80
 AliEveTRDLoader.h:81
 AliEveTRDLoader.h:82
 AliEveTRDLoader.h:83
 AliEveTRDLoader.h:84
 AliEveTRDLoader.h:85
 AliEveTRDLoader.h:86
 AliEveTRDLoader.h:87
 AliEveTRDLoader.h:88
 AliEveTRDLoader.h:89
 AliEveTRDLoader.h:90
 AliEveTRDLoader.h:91
 AliEveTRDLoader.h:92
 AliEveTRDLoader.h:93
 AliEveTRDLoader.h:94
 AliEveTRDLoader.h:95
 AliEveTRDLoader.h:96
 AliEveTRDLoader.h:97
 AliEveTRDLoader.h:98
 AliEveTRDLoader.h:99
 AliEveTRDLoader.h:100
 AliEveTRDLoader.h:101
 AliEveTRDLoader.h:102
 AliEveTRDLoader.h:103
 AliEveTRDLoader.h:104
 AliEveTRDLoader.h:105
 AliEveTRDLoader.h:106
 AliEveTRDLoader.h:107
 AliEveTRDLoader.h:108
 AliEveTRDLoader.h:109
 AliEveTRDLoader.h:110
 AliEveTRDLoader.h:111
 AliEveTRDLoader.h:112
 AliEveTRDLoader.h:113
 AliEveTRDLoader.h:114
 AliEveTRDLoader.h:115
 AliEveTRDLoader.h:116
 AliEveTRDLoader.h:117
 AliEveTRDLoader.h:118
 AliEveTRDLoader.h:119
 AliEveTRDLoader.h:120
 AliEveTRDLoader.h:121
 AliEveTRDLoader.h:122
 AliEveTRDLoader.h:123
 AliEveTRDLoader.h:124
 AliEveTRDLoader.h:125
 AliEveTRDLoader.h:126
 AliEveTRDLoader.h:127