1 #include "AliStorageEventManager.h"
2 #include "AliStorageTypes.h"
3 #include "AliESDEvent.h"
14 0 - connect directly to reconstruction socket
15 1 - connect to Storage Manager and ask for last event
16 2 - connect to alieventserver, receive in thread and use in main thread
21 AliESDEvent *currentEvent[2];
22 TTree *currentTree[2];
25 int writingToEventIndex=0;
26 bool isNewEventAvaliable=false;
29 static void* GetNextEvent(void*);
31 int main(int argc, char **argv)
35 cout<<"Usage: alifakedisplay <mode>"<<endl;
37 cout<<"0 - connect directly to reconstruction socket"<<endl;
38 cout<<"1 - connect to Storage Manager and ask for last event"<<endl;
42 storageSockets socket;
43 AliStorageEventManager *manager = AliStorageEventManager::GetEventManagerInstance();
48 socket = EVENTS_SERVER_SUB;
49 manager->CreateSocket(socket);
50 cout<<"Socket created"<<endl;
53 cout<<"waiting for event..."<<flush;
54 event = manager->GetEvent(socket);
58 cout<<"Received event. Run:"<<event->GetRunNumber()<<"\t event:"<<event->GetEventNumberInFile()<<endl;
60 cout<<event->GetPeriodNumber()<<endl;
61 cout<<event->GetOrbitNumber()<<endl;
62 cout<<event->GetBunchCrossNumber()<<endl;
63 for(int i=0;i<100;i++)
65 if(strcmp(event->GetESDRun()->GetTriggerClass(i),"")){
66 cout<<event->GetESDRun()->GetTriggerClass(i)<<endl;}
72 cout<<"NO EVENT"<<endl;
76 else if(atoi(argv[1])==1)
78 socket = SERVER_COMMUNICATION_REQ;
79 manager->CreateSocket(socket);
82 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
83 requestMessage->messageType = REQUEST_GET_LAST_EVENT;
85 manager->Send(requestMessage,socket);
86 event = manager->GetEvent(socket);
89 cout<<"Last event - Run:"<<event->GetRunNumber()<<"\t event:"<<event->GetEventNumberInFile()<<endl;
95 cout<<"NO EVENT"<<endl;
100 else if(atoi(argv[1])==2)
102 TThread *getEventThread = new TThread("getEventThread",GetNextEvent,nullptr);
103 getEventThread->Run();
110 if(isNewEventAvaliable)
112 cout<<"new event"<<endl;
114 if(writingToEventIndex == 0) eventInUse = 0;
115 else if(writingToEventIndex == 1) eventInUse = 1;
116 cout<<"Using:"<<eventInUse<<endl;
118 if(currentEvent[eventInUse])
120 if(currentEvent[eventInUse]->GetRunNumber() >= 0)
122 cout<<"CURRENT EVENT:"<<currentEvent[eventInUse]->GetEventNumberInFile()<<endl;
125 isNewEventAvaliable = false;
128 else{cout<<"No new event is avaliable."<<endl;}
137 void* GetNextEvent(void*)
139 AliStorageEventManager *eventManager = AliStorageEventManager::GetEventManagerInstance();
140 eventManager->CreateSocket(EVENTS_SERVER_SUB);
146 AliESDEvent *tmpEvent;
150 //if(tmpEvent){delete tmpEvent;tmpEvent=0;}
151 tmpEvent = eventManager->GetEvent(EVENTS_SERVER_SUB);
155 if(tmpEvent->GetRunNumber()>=0)
158 if(eventInUse == 0){writingToEventIndex = 1;}
159 else if(eventInUse == 1){writingToEventIndex = 0;}
161 if(currentEvent[writingToEventIndex])
163 delete currentEvent[writingToEventIndex];
164 currentEvent[writingToEventIndex]=0;
166 currentEvent[writingToEventIndex] = tmpEvent;
167 isNewEventAvaliable = true;