#include "AliStorageEventManager.h" #include "AliStorageTypes.h" #include "AliESDEvent.h" #include "AliESDRun.h" #include #include using namespace std; /* parameters: 0 - connect directly to reconstruction socket 1 - connect to Storage Manager and ask for last event 2 - connect to alieventserver, receive in thread and use in main thread */ // global variables: AliESDEvent *currentEvent[2]; TTree *currentTree[2]; TMutex myMutex; int eventInUse=1; int writingToEventIndex=0; bool isNewEventAvaliable=false; //----------------- static void* GetNextEvent(void*); int main(int argc, char **argv) { if(argc<2) { cout<<"Usage: alifakedisplay "<CreateSocket(socket); cout<<"Socket created"<GetEvent(socket); if(event) { cout<<"Received event. Run:"<GetRunNumber()<<"\t event:"<GetEventNumberInFile()<GetPeriodNumber()<GetOrbitNumber()<GetBunchCrossNumber()<GetESDRun()->GetTriggerClass(i),"")){ cout<GetESDRun()->GetTriggerClass(i)<CreateSocket(socket); while(1) { struct serverRequestStruct *requestMessage = new struct serverRequestStruct; requestMessage->messageType = REQUEST_GET_LAST_EVENT; manager->Send(requestMessage,socket); event = manager->GetEvent(socket); if(event) { cout<<"Last event - Run:"<GetRunNumber()<<"\t event:"<GetEventNumberInFile()<Run(); int counter=0; while(1) { counter++; if(isNewEventAvaliable) { cout<<"new event"<GetRunNumber() >= 0) { cout<<"CURRENT EVENT:"<GetEventNumberInFile()<CreateSocket(EVENTS_SERVER_SUB); currentEvent[0]=0; currentEvent[1]=0; currentTree[0]=0; currentTree[1]=0; AliESDEvent *tmpEvent; while(1) { //if(tmpEvent){delete tmpEvent;tmpEvent=0;} tmpEvent = eventManager->GetEvent(EVENTS_SERVER_SUB); if(tmpEvent) { if(tmpEvent->GetRunNumber()>=0) { myMutex.Lock(); if(eventInUse == 0){writingToEventIndex = 1;} else if(eventInUse == 1){writingToEventIndex = 0;} if(currentEvent[writingToEventIndex]) { delete currentEvent[writingToEventIndex]; currentEvent[writingToEventIndex]=0; } currentEvent[writingToEventIndex] = tmpEvent; isNewEventAvaliable = true; myMutex.UnLock(); } } } }