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;
39 cout<<"3 - connect to Storage Manager, download list of perm events and ask for them in loop"<<endl;
43 storageSockets socket;
44 AliStorageEventManager *manager = AliStorageEventManager::GetEventManagerInstance();
49 socket = EVENTS_SERVER_SUB;
50 manager->CreateSocket(socket);
51 cout<<"Socket created"<<endl;
54 cout<<"waiting for event..."<<flush;
55 event = manager->GetEvent(socket);
59 cout<<"Received event. Run:"<<event->GetRunNumber()<<"\t event:"<<event->GetEventNumberInFile()<<endl;
61 cout<<event->GetPeriodNumber()<<endl;
62 cout<<event->GetOrbitNumber()<<endl;
63 cout<<event->GetBunchCrossNumber()<<endl;
64 for(int i=0;i<100;i++)
66 if(strcmp(event->GetESDRun()->GetTriggerClass(i),"")){
67 cout<<event->GetESDRun()->GetTriggerClass(i)<<endl;}
73 cout<<"NO EVENT"<<endl;
77 else if(atoi(argv[1])==1)
79 socket = SERVER_COMMUNICATION_REQ;
80 manager->CreateSocket(socket);
83 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
84 requestMessage->messageType = REQUEST_GET_LAST_EVENT;
86 manager->Send(requestMessage,socket);
87 event = manager->GetEvent(socket);
90 cout<<"Last event - Run:"<<event->GetRunNumber()<<"\t event:"<<event->GetEventNumberInFile()<<endl;
96 cout<<"NO EVENT"<<endl;
101 else if(atoi(argv[1])==2)
103 TThread *getEventThread = new TThread("getEventThread",GetNextEvent,nullptr);
104 getEventThread->Run();
111 if(isNewEventAvaliable)
113 cout<<"new event"<<endl;
115 if(writingToEventIndex == 0) eventInUse = 0;
116 else if(writingToEventIndex == 1) eventInUse = 1;
117 cout<<"Using:"<<eventInUse<<endl;
119 if(currentEvent[eventInUse])
121 if(currentEvent[eventInUse]->GetRunNumber() >= 0)
123 cout<<"CURRENT EVENT:"<<currentEvent[eventInUse]->GetEventNumberInFile()<<endl;
126 isNewEventAvaliable = false;
129 else{cout<<"No new event is avaliable."<<endl;}
134 else if(atoi(argv[1])==3)
136 socket = SERVER_COMMUNICATION_REQ;
137 manager->CreateSocket(socket);
140 struct listRequestStruct list;
142 list.runNumber[1]=999999;
143 list.eventNumber[0]=0;
144 list.eventNumber[1]=999999;
147 list.multiplicity[0]=1;
148 list.multiplicity[1]=999999;
149 strcpy(list.system[0],"p-p");
150 strcpy(list.system[1],"A-A");
151 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
152 requestMessage->messageType = REQUEST_LIST_EVENTS;
153 requestMessage->list = list;
155 manager->Send(requestMessage,socket);
156 vector<serverListStruct> receivedList = manager->GetServerListVector(socket,3000);
158 cout<<"FAKE DISPLAY -- received list of marked events"<<endl;
160 for(int i=0;i<receivedList.size();i++){
161 cout<<"ev:"<<receivedList[i].eventNumber<<endl;
167 if(iter<receivedList.size())
169 struct eventStruct mark;
170 mark.runNumber = receivedList[iter].runNumber;
171 mark.eventNumber = receivedList[iter].eventNumber;
173 requestMessage->messageType = REQUEST_GET_EVENT;
174 requestMessage->event = mark;
176 manager->Send(requestMessage,socket);
177 event = manager->GetEvent(socket);
181 cout<<"i:"<<iter<<"\tevent:"<<event->GetEventNumberInFile()<<endl;
185 cout<<"Received NO event"<<endl;
197 void* GetNextEvent(void*)
199 AliStorageEventManager *eventManager = AliStorageEventManager::GetEventManagerInstance();
200 eventManager->CreateSocket(EVENTS_SERVER_SUB);
206 AliESDEvent *tmpEvent;
210 //if(tmpEvent){delete tmpEvent;tmpEvent=0;}
211 tmpEvent = eventManager->GetEvent(EVENTS_SERVER_SUB);
215 if(tmpEvent->GetRunNumber()>=0)
218 if(eventInUse == 0){writingToEventIndex = 1;}
219 else if(eventInUse == 1){writingToEventIndex = 0;}
221 if(currentEvent[writingToEventIndex])
223 delete currentEvent[writingToEventIndex];
224 currentEvent[writingToEventIndex]=0;
226 currentEvent[writingToEventIndex] = tmpEvent;
227 isNewEventAvaliable = true;