bugfix
[u/mrichter/AliRoot.git] / EVE / EveHLT / AliEveHLTEventManager.h
1 #ifndef ALIEVEHLTEVENTMANAGER_H
2 #define ALIEVEHLTEVENTMANAGER_H
3
4
5 #include "TEveEventManager.h"
6 #include "AliHLTLoggingVariadicFree.h"
7
8 class AliHLTHOMERBlockDesc;
9 class TList;
10
11 class TEveManager;
12 class TEveScene;
13 class TEveProjectionManager;
14 class TTimer;
15 class TEveViewer;
16
17 class AliHLTEvePhos;
18 class AliHLTEveEmcal;
19 class AliHLTEveTPC;
20 class AliHLTEveHLT;
21 class AliHLTEveITS;
22 class AliHLTEveISSD;
23 class AliHLTEveISDD;
24 class AliHLTEveISPD;
25 class AliHLTEveTRD;
26 class AliHLTEveAny;
27 class AliHLTEveMuon;
28 class AliEveEventBuffer;
29 class AliESDEvent;
30
31 class AliEveHLTEventManager : public TEveElementList { 
32
33 public:
34
35   ///Constructor
36   AliEveHLTEventManager();
37   
38   virtual ~AliEveHLTEventManager();
39
40
41
42   /**Set and get the global instance of the Eve manager */
43   void SetEveManager(TEveManager * manager) {fEveManager = manager;}
44   TEveManager * GetEveManager() const {return fEveManager;}
45
46   /**Set and get the global instance of TGeoManager */
47   void SetGeoManager(TGeoManager * manager) {fGeoManager = manager;}
48   TGeoManager * GetGeoManager() const {return fGeoManager;}
49
50   /** Set the projection scenes and their managers */
51   void SetRPhiManager (TEveProjectionManager * mgr) {fRPhiManager = mgr;}
52   void SetRPhiEventScene (TEveScene * scene ) {fRPhiEventScene = scene;}
53   void SetRPhiViewer(TEveViewer * viewer ) {fRPhiViewer = viewer;}
54   void SetRhoZManager(TEveProjectionManager * mgr) {fRhoZManager = mgr;}
55   void SetRhoZEventScene(TEveScene * scene ) {fRhoZEventScene = scene;}
56   void SetRhoZViewer(TEveViewer * viewer ) {fRhoZViewer = viewer;}
57
58   /** Start and stop the automatic event loop */
59   void StartLoop();
60   void StopLoop();
61
62   //* Show muon arm*//
63   void SetShowMuon(Bool_t showmuon) { fShowMuon = showmuon; }
64
65   /** Print the screens to a file **/
66   void PrintScreens();
67
68
69   virtual void NavigateBack() = 0;
70   virtual void NavigateFwd() = 0;
71
72
73
74   //Event buffer stuff
75   virtual void ConnectEventBuffer();  
76   virtual void StartBufferMonitor();
77   virtual void NextEvent() = 0;
78
79   virtual void SaveEveryThing();
80   
81  protected:
82
83   /** copy constructor prohibited */
84   AliEveHLTEventManager(const AliEveHLTEventManager&);
85
86   /** assignment operator prohibited */
87   AliEveHLTEventManager& operator=(const AliEveHLTEventManager&);
88
89   /** Process the event data */
90   Int_t ProcessEvent(TList * blockList);
91   Int_t ProcessEvent(AliESDEvent * event);
92
93   /** Set flag for event loop */
94   void SetEventLoopStarted (Bool_t started) {fEventLoopStarted = started;}
95
96   void DestroyDetectorElements();
97   
98   virtual AliEveEventBuffer * GetEventBuffer() {return NULL;}
99   
100   /** Process block */
101   void ProcessBlock(AliHLTHOMERBlockDesc * block);  //Process block
102   /** Reset the elements in the display */
103   void ResetDisplay();  
104   /** Update the display  */
105   void UpdateDisplay(); 
106
107
108   Int_t GetRunNumber() const { return fRunNumber; }
109   ULong64_t GetEventId() const { return fEventId; }
110   void SetRunNumber(Int_t rn) { fRunNumber = rn; }
111   void SetEventId(ULong64_t id) { fEventId = id; }
112
113
114   void CreatePhosElement();
115   void CreateEmcalElement();
116   void CreateTPCElement();
117   void CreateITSElement();
118   void CreateISPDElement();
119   void CreateISDDElement();
120   void CreateISSDElement();
121   void CreateTRDElement();
122   void CreateHLTElement();
123
124
125   TGeoManager * fGeoManager;              //The global TGeoManager instance
126   TEveManager * fEveManager;              //The global TEveManager instance
127   TEveProjectionManager * fRPhiManager;   //The R - Phi projection scene manager
128   TEveProjectionManager * fRhoZManager;   //The Rho- Z projection sene manager
129   TEveScene * fRPhiEventScene;            //The R - Phi projection scene
130   TEveScene * fRhoZEventScene;            //The Rho - Z projection sene
131   TEveViewer * fRhoZViewer;
132   TEveViewer * fRPhiViewer;
133   
134
135
136   TTimer * fTimer;                   //Timer for event loop
137   //TTimer * fSourceListTimer;       //Timer for source list loop
138  
139   AliHLTEvePhos  * fPhosElement;     //Phos eve processor
140   AliHLTEveEmcal * fEmcalElement;    //Emcal eve processor
141   AliHLTEveTPC   * fTPCElement;      //TPC eve processor
142   AliHLTEveHLT   * fHLTElement;      //HLT
143   AliHLTEveITS   * fITSElement;      //ITS
144   AliHLTEveISPD  * fISPDElement;     //ISPD
145   AliHLTEveISSD  * fISSDElement;     //ISSD
146   AliHLTEveISDD  * fISDDElement;     //ISDD
147   AliHLTEveTRD   * fTRDElement;      //TRD
148   AliHLTEveMuon  * fMuonElement;     //MUON
149   AliHLTEveAny   * fAnyElement;      //Catch all
150
151
152
153   Bool_t fEventLoopStarted;                    // Flag indicating whether the loop is running
154   Bool_t fCenterProjectionsAtPrimaryVertex;    // Flag indicating whether to center the projection scenes at primary vertex (as opposed to 0, 0, 0)
155   Bool_t fShowBarrel;                               // Display barrel detectors ?
156   Bool_t fShowMuon;                                 // Display Muon arm ?
157
158   Int_t fRunNumber;
159   ULong64_t fEventId;
160
161   ClassDef(AliEveHLTEventManager, 0);
162
163 };
164
165 #endif