1 #include "AliStorageEventManager.h"
2 #include "AliStorageTypes.h"
3 #include "AliESDEvent.h"
6 #include "AliRawEventHeaderBase.h"
17 0 - connect directly to reconstruction socket
18 1 - connect to Storage Manager and ask for last event
19 2 - connect to alieventserver, receive in thread and use in main thread
24 AliESDEvent *currentEvent[2];
25 TTree *currentTree[2];
28 int writingToEventIndex=0;
29 bool isNewEventAvaliable=false;
32 static void* GetNextEvent(void*);
34 int main(int argc, char **argv)
38 cout<<"Usage: alifakedisplay <mode>"<<endl;
40 cout<<"0 - connect directly to reconstruction socket"<<endl;
41 cout<<"1 - connect to Storage Manager and ask for last event"<<endl;
42 cout<<"3 - connect to Storage Manager, download list of perm events and ask for them in loop"<<endl;
46 storageSockets socket;
47 AliStorageEventManager *manager = AliStorageEventManager::GetEventManagerInstance();
49 struct recPointsStruct *files;
53 manager->CreateSocket(EVENTS_SERVER_SUB);
54 manager->CreateSocket(ITS_POINTS_SUB);
55 cout<<"Socket created"<<endl;
58 cout<<"waiting for event..."<<flush;
59 event = manager->GetEvent(EVENTS_SERVER_SUB);
63 cout<<"Received event. Run:"<<event->GetRunNumber()<<"\t event:"<<event->GetEventNumberInFile()<<endl;
65 cout<<event->GetPeriodNumber()<<endl;
66 cout<<event->GetOrbitNumber()<<endl;
67 cout<<event->GetBunchCrossNumber()<<endl;
68 cout<<AliRawEventHeaderBase::GetTypeName(event->GetEventType())<<endl;
69 for(int i=0;i<100;i++)
71 if(strcmp(event->GetESDRun()->GetTriggerClass(i),"")){
72 cout<<event->GetESDRun()->GetTriggerClass(i)<<endl;}
78 cout<<"NO EVENT"<<endl;
81 // Receiving RecPoints:
84 files = manager->GetFiles(ITS_POINTS_SUB);
87 cout<<"Received file."<<endl;
89 //file->Write("ITS.RecPoints.root",kOverwrite);
90 if(files->files[0]){files->files[0]->SaveAs("ITS.RecPoints.root","recreate");}
91 if(files->files[1]){files->files[1]->SaveAs("TOF.RecPoints.root","recreate");}
92 if(files->files[2]){files->files[2]->SaveAs("galice.root","recreate");}
98 files->files[i]->Close();
99 delete files->files[i];files->files[i]=0;
106 else if(atoi(argv[1])==1)
108 socket = SERVER_COMMUNICATION_REQ;
109 manager->CreateSocket(socket);
112 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
113 requestMessage->messageType = REQUEST_GET_LAST_EVENT;
115 manager->Send(requestMessage,socket);
116 event = manager->GetEvent(socket);
119 cout<<"Last event - Run:"<<event->GetRunNumber()<<"\t event:"<<event->GetEventNumberInFile()<<endl;
125 cout<<"NO EVENT"<<endl;
130 else if(atoi(argv[1])==2)
132 TThread *getEventThread = new TThread("getEventThread",GetNextEvent,nullptr);
133 getEventThread->Run();
140 if(isNewEventAvaliable)
142 cout<<"new event"<<endl;
144 if(writingToEventIndex == 0) eventInUse = 0;
145 else if(writingToEventIndex == 1) eventInUse = 1;
146 cout<<"Using:"<<eventInUse<<endl;
148 if(currentEvent[eventInUse])
150 if(currentEvent[eventInUse]->GetRunNumber() >= 0)
152 cout<<"CURRENT EVENT:"<<currentEvent[eventInUse]->GetEventNumberInFile()<<endl;
155 isNewEventAvaliable = false;
158 else{cout<<"No new event is avaliable."<<endl;}
163 else if(atoi(argv[1])==3)
165 socket = SERVER_COMMUNICATION_REQ;
166 manager->CreateSocket(socket);
169 struct listRequestStruct list;
171 list.runNumber[1]=999999;
172 list.eventNumber[0]=0;
173 list.eventNumber[1]=999999;
176 list.multiplicity[0]=1;
177 list.multiplicity[1]=999999;
178 strcpy(list.system[0],"p-p");
179 strcpy(list.system[1],"A-A");
180 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
181 requestMessage->messageType = REQUEST_LIST_EVENTS;
182 requestMessage->list = list;
184 manager->Send(requestMessage,socket);
185 vector<serverListStruct> receivedList = manager->GetServerListVector(socket,3000);
187 cout<<"FAKE DISPLAY -- received list of marked events"<<endl;
189 for(int i=0;i<receivedList.size();i++){
190 cout<<"ev:"<<receivedList[i].eventNumber<<endl;
196 if(iter<receivedList.size())
198 struct eventStruct mark;
199 mark.runNumber = receivedList[iter].runNumber;
200 mark.eventNumber = receivedList[iter].eventNumber;
202 requestMessage->messageType = REQUEST_GET_EVENT;
203 requestMessage->event = mark;
205 manager->Send(requestMessage,socket);
206 event = manager->GetEvent(socket);
210 cout<<"i:"<<iter<<"\tevent:"<<event->GetEventNumberInFile()<<endl;
214 cout<<"Received NO event"<<endl;
226 void* GetNextEvent(void*)
228 AliStorageEventManager *eventManager = AliStorageEventManager::GetEventManagerInstance();
229 eventManager->CreateSocket(EVENTS_SERVER_SUB);
235 AliESDEvent *tmpEvent;
239 //if(tmpEvent){delete tmpEvent;tmpEvent=0;}
240 tmpEvent = eventManager->GetEvent(EVENTS_SERVER_SUB);
244 if(tmpEvent->GetRunNumber()>=0)
247 if(eventInUse == 0){writingToEventIndex = 1;}
248 else if(eventInUse == 1){writingToEventIndex = 0;}
250 if(currentEvent[writingToEventIndex])
252 delete currentEvent[writingToEventIndex];
253 currentEvent[writingToEventIndex]=0;
255 currentEvent[writingToEventIndex] = tmpEvent;
256 isNewEventAvaliable = true;