1 #include "AliStorageEventManager.h"
2 #include "AliStorageTypes.h"
3 #include "AliESDEvent.h"
15 0 - connect directly to reconstruction socket
16 1 - connect to Storage Manager and ask for last event
17 2 - connect to alieventserver, receive in thread and use in main thread
22 AliESDEvent *currentEvent[2];
23 TTree *currentTree[2];
26 int writingToEventIndex=0;
27 bool isNewEventAvaliable=false;
30 static void* GetNextEvent(void*);
32 int main(int argc, char **argv)
36 cout<<"Usage: alifakedisplay <mode>"<<endl;
38 cout<<"0 - connect directly to reconstruction socket"<<endl;
39 cout<<"1 - connect to Storage Manager and ask for last event"<<endl;
40 cout<<"3 - connect to Storage Manager, download list of perm events and ask for them in loop"<<endl;
44 storageSockets socket;
45 AliStorageEventManager *manager = AliStorageEventManager::GetEventManagerInstance();
47 struct recPointsStruct *files;
51 manager->CreateSocket(EVENTS_SERVER_SUB);
52 manager->CreateSocket(ITS_POINTS_SUB);
53 cout<<"Socket created"<<endl;
56 cout<<"waiting for event..."<<flush;
57 event = manager->GetEvent(EVENTS_SERVER_SUB);
61 cout<<"Received event. Run:"<<event->GetRunNumber()<<"\t event:"<<event->GetEventNumberInFile()<<endl;
63 cout<<event->GetPeriodNumber()<<endl;
64 cout<<event->GetOrbitNumber()<<endl;
65 cout<<event->GetBunchCrossNumber()<<endl;
66 for(int i=0;i<100;i++)
68 if(strcmp(event->GetESDRun()->GetTriggerClass(i),"")){
69 cout<<event->GetESDRun()->GetTriggerClass(i)<<endl;}
75 cout<<"NO EVENT"<<endl;
78 // Receiving RecPoints:
81 files = manager->GetFiles(ITS_POINTS_SUB);
84 cout<<"Received file."<<endl;
86 //file->Write("ITS.RecPoints.root",kOverwrite);
87 if(files->files[0]){files->files[0]->SaveAs("ITS.RecPoints.root","recreate");}
88 if(files->files[1]){files->files[1]->SaveAs("TOF.RecPoints.root","recreate");}
89 if(files->files[2]){files->files[2]->SaveAs("galice.root","recreate");}
95 files->files[i]->Close();
96 delete files->files[i];files->files[i]=0;
103 else if(atoi(argv[1])==1)
105 socket = SERVER_COMMUNICATION_REQ;
106 manager->CreateSocket(socket);
109 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
110 requestMessage->messageType = REQUEST_GET_LAST_EVENT;
112 manager->Send(requestMessage,socket);
113 event = manager->GetEvent(socket);
116 cout<<"Last event - Run:"<<event->GetRunNumber()<<"\t event:"<<event->GetEventNumberInFile()<<endl;
122 cout<<"NO EVENT"<<endl;
127 else if(atoi(argv[1])==2)
129 TThread *getEventThread = new TThread("getEventThread",GetNextEvent,nullptr);
130 getEventThread->Run();
137 if(isNewEventAvaliable)
139 cout<<"new event"<<endl;
141 if(writingToEventIndex == 0) eventInUse = 0;
142 else if(writingToEventIndex == 1) eventInUse = 1;
143 cout<<"Using:"<<eventInUse<<endl;
145 if(currentEvent[eventInUse])
147 if(currentEvent[eventInUse]->GetRunNumber() >= 0)
149 cout<<"CURRENT EVENT:"<<currentEvent[eventInUse]->GetEventNumberInFile()<<endl;
152 isNewEventAvaliable = false;
155 else{cout<<"No new event is avaliable."<<endl;}
160 else if(atoi(argv[1])==3)
162 socket = SERVER_COMMUNICATION_REQ;
163 manager->CreateSocket(socket);
166 struct listRequestStruct list;
168 list.runNumber[1]=999999;
169 list.eventNumber[0]=0;
170 list.eventNumber[1]=999999;
173 list.multiplicity[0]=1;
174 list.multiplicity[1]=999999;
175 strcpy(list.system[0],"p-p");
176 strcpy(list.system[1],"A-A");
177 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
178 requestMessage->messageType = REQUEST_LIST_EVENTS;
179 requestMessage->list = list;
181 manager->Send(requestMessage,socket);
182 vector<serverListStruct> receivedList = manager->GetServerListVector(socket,3000);
184 cout<<"FAKE DISPLAY -- received list of marked events"<<endl;
186 for(int i=0;i<receivedList.size();i++){
187 cout<<"ev:"<<receivedList[i].eventNumber<<endl;
193 if(iter<receivedList.size())
195 struct eventStruct mark;
196 mark.runNumber = receivedList[iter].runNumber;
197 mark.eventNumber = receivedList[iter].eventNumber;
199 requestMessage->messageType = REQUEST_GET_EVENT;
200 requestMessage->event = mark;
202 manager->Send(requestMessage,socket);
203 event = manager->GetEvent(socket);
207 cout<<"i:"<<iter<<"\tevent:"<<event->GetEventNumberInFile()<<endl;
211 cout<<"Received NO event"<<endl;
223 void* GetNextEvent(void*)
225 AliStorageEventManager *eventManager = AliStorageEventManager::GetEventManagerInstance();
226 eventManager->CreateSocket(EVENTS_SERVER_SUB);
232 AliESDEvent *tmpEvent;
236 //if(tmpEvent){delete tmpEvent;tmpEvent=0;}
237 tmpEvent = eventManager->GetEvent(EVENTS_SERVER_SUB);
241 if(tmpEvent->GetRunNumber()>=0)
244 if(eventInUse == 0){writingToEventIndex = 1;}
245 else if(eventInUse == 1){writingToEventIndex = 0;}
247 if(currentEvent[writingToEventIndex])
249 delete currentEvent[writingToEventIndex];
250 currentEvent[writingToEventIndex]=0;
252 currentEvent[writingToEventIndex] = tmpEvent;
253 isNewEventAvaliable = true;