]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/EveHLT/AliEveHLTEventManagerHomer.cxx
make buffer loop start automatically
[u/mrichter/AliRoot.git] / EVE / EveHLT / AliEveHLTEventManagerHomer.cxx
1 // Author: 2010 Svein Lindal <slindal@fys.uio.no>                        *
2 //         for The ALICE HLT Project.                                    *
3
4 #include "AliHLTEveHLT.h"
5 #include "AliHLTEvePhos.h"
6 #include "AliHLTEveEmcal.h"
7
8
9 #include "AliESDEvent.h"
10 #include "AliEveHLTEventManager.h"
11 #include "AliEveEventBufferOffline.h"
12 #include "AliEveHLTEventManagerHomer.h"
13 #include "TList.h"
14 #include "AliEveHOMERManager.h"
15 #include "TEveManager.h"
16
17 ClassImp(AliEveHLTEventManagerHomer)
18
19 AliEveHLTEventManagerHomer::AliEveHLTEventManagerHomer() : 
20   AliEveHLTEventManager(),
21   fEventBuffer(NULL)
22 {
23   // see header file for class documentation
24   // or
25   // refer to README to build package
26   // or
27   // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
28   fEventBuffer = new AliEveEventBufferHomer();
29   fEventBuffer->StartBufferMonitor();
30   //AliEveHOMERManager * hm = fEventBuffer->GetHomerManager();
31   //if(hm) GetEveManager()->AddToListTree(hm, kTRUE);
32   
33
34 }
35
36  
37 AliEveHLTEventManagerHomer::~AliEveHLTEventManagerHomer() {
38
39   //DestroyElements();
40   //DestroyDetectorElements();  
41   if(fEventBuffer)
42     delete fEventBuffer;
43   fEventBuffer = NULL;
44
45 }
46
47 ///________________________________________________________________________________
48 void AliEveHLTEventManagerHomer::ProcessList(TList * blockList) {
49
50   ProcessEvent(blockList);
51   UpdateDisplay();
52
53 }
54
55
56
57 ///________________________________________________________________________________
58 void AliEveHLTEventManagerHomer::NextEvent() {
59   //See header file for documentation
60   if(fEventBuffer->GetBusy() ) {
61     cout << "event buffer already busy"<<endl;
62     return;
63   }else {
64     fEventBuffer->SetBusy(kTRUE);
65   }
66
67   TList * aSyncEvent = fEventBuffer->GetASyncEvent();
68   TList * event = static_cast<TList*>(fEventBuffer->NextEvent());
69   if(event) {
70     cout << "Got the event, reset the display " <<endl;
71     ResetDisplay();
72     cout << "Process event"<<endl;
73     ProcessEvent(event);
74     if(aSyncEvent) {
75       cout  << "Process asynchroneous event" << endl;
76       ProcessEvent(aSyncEvent);
77     }  else {
78       cout << "Could not get async event"<<endl;
79     }
80     
81     cout << "Upate the display"<<endl;
82     UpdateDisplay();
83   
84   } else {
85     cout << "couldn't get the sync event"<<endl;
86   }
87   
88   //  cout  << "doint async block"<<endl;
89   //  TList * async = static_cast<TList*>(fEventBuffer->GetAList());
90   //  if(async) {
91   //    ProcessEvent(async);
92   //   }  else {
93   //     cout << "No async bloc"<<endl;
94   // }
95
96   fEventBuffer->SetBusy(kFALSE);
97 }
98
99
100 ///____________________________________________________________________________________
101 void AliEveHLTEventManagerHomer::NavigateFwd() {
102   //See header file for documentation
103   TList * fEvent = dynamic_cast<TList*>(fEventBuffer->Fwd());
104   if(fEvent) {
105     ResetDisplay();
106     ProcessEvent(fEvent);
107     UpdateDisplay();
108   } else {
109     cout << "couldn't get the fwd event"<<endl;
110   }
111 }
112
113
114 ///______________________________________________________________________________________
115 void AliEveHLTEventManagerHomer::NavigateBack() {
116   //See header file for documentation
117   TList * fEvent = dynamic_cast<TList*>(fEventBuffer->Back());
118   if(fEvent) {
119     ResetDisplay();
120     ProcessEvent(fEvent);
121     UpdateDisplay();
122   } else {
123     cout << "couldn't get the back event"<<endl;
124   }
125 }
126