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);
52 event = manager->GetEvent(socket);
55 cout<<"Received event. Run:"<<event->GetRunNumber()<<"\t event:"<<event->GetEventNumberInFile()<<endl;
57 cout<<event->GetPeriodNumber()<<endl;
58 cout<<event->GetOrbitNumber()<<endl;
59 cout<<event->GetBunchCrossNumber()<<endl;
60 for(int i=0;i<100;i++)
62 if(strcmp(event->GetESDRun()->GetTriggerClass(i),"")){
63 cout<<event->GetESDRun()->GetTriggerClass(i)<<endl;}
69 cout<<"NO EVENT"<<endl;
73 else if(atoi(argv[1])==1)
75 socket = SERVER_COMMUNICATION_REQ;
76 manager->CreateSocket(socket);
79 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
80 requestMessage->messageType = REQUEST_GET_LAST_EVENT;
82 manager->Send(requestMessage,socket);
83 event = manager->GetEvent(socket);
86 cout<<"Last event - Run:"<<event->GetRunNumber()<<"\t event:"<<event->GetEventNumberInFile()<<endl;
92 cout<<"NO EVENT"<<endl;
97 else if(atoi(argv[1])==2)
99 TThread *getEventThread = new TThread("getEventThread",GetNextEvent,nullptr);
100 getEventThread->Run();
107 if(isNewEventAvaliable)
109 cout<<"new event"<<endl;
111 if(writingToEventIndex == 0) eventInUse = 0;
112 else if(writingToEventIndex == 1) eventInUse = 1;
113 cout<<"Using:"<<eventInUse<<endl;
115 if(currentEvent[eventInUse])
117 if(currentEvent[eventInUse]->GetRunNumber() >= 0)
119 cout<<"CURRENT EVENT:"<<currentEvent[eventInUse]->GetEventNumberInFile()<<endl;
122 isNewEventAvaliable = false;
125 else{cout<<"No new event is avaliable."<<endl;}
134 void* GetNextEvent(void*)
136 AliStorageEventManager *eventManager = AliStorageEventManager::GetEventManagerInstance();
137 eventManager->CreateSocket(EVENTS_SERVER_SUB);
143 AliESDEvent *tmpEvent;
147 //if(tmpEvent){delete tmpEvent;tmpEvent=0;}
148 tmpEvent = eventManager->GetEvent(EVENTS_SERVER_SUB);
152 if(tmpEvent->GetRunNumber()>=0)
155 if(eventInUse == 0){writingToEventIndex = 1;}
156 else if(eventInUse == 1){writingToEventIndex = 0;}
158 if(currentEvent[writingToEventIndex])
160 delete currentEvent[writingToEventIndex];
161 currentEvent[writingToEventIndex]=0;
163 currentEvent[writingToEventIndex] = tmpEvent;
164 isNewEventAvaliable = true;