From: jniedzie Date: Wed, 29 Oct 2014 13:03:59 +0000 (+0100) Subject: Loop over marked events added to Event Display. X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=626a31586e1ea89f554d0b61e803b3f09f603f56 Loop over marked events added to Event Display. --- diff --git a/EVE/EveBase/AliEveEventManager.cxx b/EVE/EveBase/AliEveEventManager.cxx index 844fbf93d64..356c46d8286 100644 --- a/EVE/EveBase/AliEveEventManager.cxx +++ b/EVE/EveBase/AliEveEventManager.cxx @@ -132,7 +132,7 @@ AliEveEventManager::AliEveEventManager(const TString& name, Int_t ev) : fESDfriend (0), fESDfriendExists(kFALSE), fAODFile (0), fAODTree (0), fAOD (0), fRawReader (0), fEventInfo(), - fAutoLoad (kFALSE), fAutoLoadTime (5), fAutoLoadTimer(0), + fAutoLoad (kFALSE),fLoopMarked(kFALSE), fAutoLoadTime (5), fAutoLoadTimer(0), fIsOpen (kFALSE), fHasEvent (kFALSE), fExternalCtrl (kFALSE), fGlobal (0), fGlobalReplace (kTRUE), fGlobalUpdate (kTRUE), fExecutor (0), fTransients(0), fTransientLists(0), @@ -223,19 +223,74 @@ AliEveEventManager::~AliEveEventManager() void AliEveEventManager::GetNextEvent() { #ifdef ZMQ - AliStorageEventManager *eventManager = - AliStorageEventManager::GetEventManagerInstance(); + AliStorageEventManager *eventManager = AliStorageEventManager::GetEventManagerInstance(); eventManager->CreateSocket(EVENTS_SERVER_SUB); + eventManager->CreateSocket(SERVER_COMMUNICATION_REQ); fCurrentEvent[0]=0; fCurrentEvent[1]=0; - fCurrentTree[0]=0; - fCurrentTree[1]=0; + AliESDEvent *tmpEvent = NULL; + // get list of marked events: + struct listRequestStruct list; + + list.runNumber[0]=0; + list.runNumber[1]=999999; + list.eventNumber[0]=0; + list.eventNumber[1]=999999; + list.marked[0]=1; + list.marked[1]=1; + list.multiplicity[0]=1; + list.multiplicity[1]=999999; + strcpy(list.system[0],"p-p"); + strcpy(list.system[1],"A-A"); + + struct serverRequestStruct *requestMessage = new struct serverRequestStruct; + requestMessage->messageType = REQUEST_LIST_EVENTS; + requestMessage->list = list; + + eventManager->Send(requestMessage,SERVER_COMMUNICATION_REQ); + vector receivedList = eventManager->GetServerListVector(SERVER_COMMUNICATION_REQ); + + cout<<"EVENT DISPLAY -- received list of marked events"<GetEvent(EVENTS_SERVER_SUB); + if(!fLoopMarked) + { + cout<<"taking event from reco server"<GetEvent(EVENTS_SERVER_SUB,5); + if(!tmpEvent){sleep(1);} + } + else + { + cout<<"taking event from storage manager"<messageType = REQUEST_GET_EVENT; + requestMessage->event = mark; + + eventManager->Send(requestMessage,SERVER_COMMUNICATION_REQ); + tmpEvent = eventManager->GetEvent(SERVER_COMMUNICATION_REQ); + + iter++; + sleep(1); + } + else{iter=0;} + } + if(tmpEvent) { if(tmpEvent->GetRunNumber()>=0) @@ -243,7 +298,7 @@ void AliEveEventManager::GetNextEvent() fMutex->Lock(); if(fEventInUse == 0){fWritingToEventIndex = 1;} else if(fEventInUse == 1){fWritingToEventIndex = 0;} - cout<<"Received new event"<GetEventNumberInFile()<UnLock(); } } + else + { + cout<<"didn't receive new event"<SetToolTipText("Automatic event loading."); fAutoLoad->Connect("Toggled(Bool_t)", cls, this, "DoSetAutoLoad()"); + fLoopMarked = new TGCheckButton(f, "Loop Marked"); + f->AddFrame(fLoopMarked, new TGLayoutHints(kLHintsLeft, 0, 4, 3, 0)); + fLoopMarked->SetToolTipText("Automatic marked events loading."); + fLoopMarked->Connect("Toggled(Bool_t)", cls, this, "DoSetLoopMarked()"); + fAutoLoadTime = new TEveGValuator(f, "Time: ", 110, 0); f->AddFrame(fAutoLoadTime); fAutoLoadTime->SetShowSlider(kFALSE); @@ -307,6 +313,14 @@ void AliEveEventManagerWindow::DoSetAutoLoad() Update(fM->NewEventAvailable()); } +//______________________________________________________________________________ +void AliEveEventManagerWindow::DoSetLoopMarked() +{ + // Set the auto-load flag + fM->SetLoopMarked(fLoopMarked->IsOn()); +// Update(fM->NewEventAvailable()); +} + //______________________________________________________________________________ void AliEveEventManagerWindow::DoSetAutoLoadTime() { diff --git a/EVE/EveBase/AliEveEventManagerEditor.h b/EVE/EveBase/AliEveEventManagerEditor.h index d5dd6129147..13535850561 100644 --- a/EVE/EveBase/AliEveEventManagerEditor.h +++ b/EVE/EveBase/AliEveEventManagerEditor.h @@ -81,6 +81,7 @@ public: void DoRefresh(); void DoSetAutoLoad(); + void DoSetLoopMarked(); void DoSetAutoLoadTime(); void DoSetTrigSel(); @@ -103,6 +104,7 @@ protected: TGLabel *fInfoLabel; // Display last available event id TGCheckButton *fAutoLoad; // Check-box for automatic loading of events + TGCheckButton *fLoopMarked; // Check-box for automatic loading of events TEveGValuator *fAutoLoadTime; // Time for automatic loading of events TGComboBox *fTrigSel; // Trigger selection combo box diff --git a/EVE/macros/alieve_online_new.C b/EVE/macros/alieve_online_new.C index 83eb3c28888..4674644467a 100644 --- a/EVE/macros/alieve_online_new.C +++ b/EVE/macros/alieve_online_new.C @@ -245,13 +245,8 @@ void alieve_online_on_new_event() if (++g_pic_id >= g_pic_max) g_pic_id = 0; g_pic_prev.Set(); -<<<<<<< HEAD - } - AliSysInfo::AddStamp("on_new_event_end"); -======= }*/ - AliSysInfo::AddStamp("on_new_event_end"); ->>>>>>> Fixing bugs in Event Display + AliSysInfo::AddStamp("on_new_event_end"); } void alieve_init_import_macros() diff --git a/MONITOR/alistoragemanager/AliStorageAdministratorPanel.cxx b/MONITOR/alistoragemanager/AliStorageAdministratorPanel.cxx index 39b3617d912..6da237c4463 100644 --- a/MONITOR/alistoragemanager/AliStorageAdministratorPanel.cxx +++ b/MONITOR/alistoragemanager/AliStorageAdministratorPanel.cxx @@ -26,7 +26,7 @@ enum TOOLBUTTON{ enum MENUBAR{ MENUBAR_CLIENT_SET_PARAMS=1, MENUBAR_SERVER_LIST_EVENTS, - MENUBAR_SERVER_MARK_EVENT, + MENUBAR_SERVER_MARK_EVENT, MENUBAR_SERVER_GET_EVENT, MENUBAR_SERVER_GET_NEXT_EVENT, MENUBAR_SERVER_GET_LAST_EVENT diff --git a/MONITOR/alistoragemanager/AliStorageEventManager.cxx b/MONITOR/alistoragemanager/AliStorageEventManager.cxx index 6c3f5c5e2bd..350de7bc8bd 100644 --- a/MONITOR/alistoragemanager/AliStorageEventManager.cxx +++ b/MONITOR/alistoragemanager/AliStorageEventManager.cxx @@ -25,81 +25,81 @@ AliStorageEventManager *AliStorageEventManager::fManagerInstance = 0; AliStorageEventManager::AliStorageEventManager() { - //read config file - TThread::Lock(); - ifstream configFile (GetConfigFilePath()); + //read config file + TThread::Lock(); + ifstream configFile (GetConfigFilePath()); - if (configFile.is_open()) - { - string line; - int from,to; - while(configFile.good()) - { - getline(configFile,line); - from = line.find("\"")+1; - to = line.find_last_of("\""); - if(line.find("STORAGE_SERVER=")==0) - { - fStorageServer=line.substr(from,to-from); - } - else if(line.find("EVENT_SERVER=")==0) - { - fEventServer=line.substr(from,to-from); - } - else if(line.find("STORAGE_SERVER_PORT=")==0) - { - fStorageServerPort=atoi(line.substr(from,to-from).c_str()); - } - else if(line.find("EVENT_SERVER_PORT=")==0) - { - fEventServerPort=atoi(line.substr(from,to-from).c_str()); - } - else if(line.find("STORAGE_CLIENT_PORT=")==0) - { - fStorageClientPort=atoi(line.substr(from,to-from).c_str()); - } - else if(line.find("XML_SERVER_PORT=")==0) - { - fXmlServerPort=atoi(line.substr(from,to-from).c_str()); - } - } - if(configFile.eof()) - { - configFile.clear(); - } - configFile.close(); - } - else - { - cout<<"EVENT MANAGER -- Unable to open config file"< list,storageSockets socket) { - //send size of the struct first - int numberOfRecords = list.size(); - message_t message(20); - snprintf ((char *)message.data(), 20 ,"%d",numberOfRecords); - - fSockets[socket]->send(message); - if(numberOfRecords==0)return; + //send size of the struct first + int numberOfRecords = list.size(); + message_t message(20); + snprintf ((char *)message.data(), 20 ,"%d",numberOfRecords); + + fSockets[socket]->send(message); + if(numberOfRecords==0)return; message_t *tmpMessage = new message_t(); - fSockets[socket]->recv(tmpMessage);//empty message just to keep req-rep order + fSockets[socket]->recv(tmpMessage);//empty message just to keep req-rep order - // //prepare message with event's list - // char *buffer = reinterpret_cast (&list[0]); - // message_t *reply = new message_t((void*)buffer, - // sizeof(serverListStruct)*numberOfRecords,0); - // fSockets[socket]->send(*reply); - // if(reply){delete reply;} - - message_t reply(sizeof(serverListStruct)*numberOfRecords); - memcpy(reply.data(), reinterpret_cast (&list[0]), sizeof(serverListStruct)*numberOfRecords); - - fSockets[socket]->send(reply); + // //prepare message with event's list + // char *buffer = reinterpret_cast (&list[0]); + // message_t *reply = new message_t((void*)buffer, + // sizeof(serverListStruct)*numberOfRecords,0); + // fSockets[socket]->send(*reply); + // if(reply){delete reply;} + + message_t reply(sizeof(serverListStruct)*numberOfRecords); + memcpy(reply.data(), reinterpret_cast (&list[0]), sizeof(serverListStruct)*numberOfRecords); + + fSockets[socket]->send(reply); if(tmpMessage){delete tmpMessage;} } void AliStorageEventManager::Send(struct serverRequestStruct *request,storageSockets socket) { - char *buffer = (char*)(request); - message_t *requestMessage = new message_t((void*)buffer, - sizeof(struct serverRequestStruct) - +sizeof(struct listRequestStruct) - +sizeof(struct eventStruct),freeBuff); - fSockets[socket]->send(*requestMessage); + char *buffer = (char*)(request); + message_t *requestMessage = new message_t((void*)buffer, + sizeof(struct serverRequestStruct) + +sizeof(struct listRequestStruct) + +sizeof(struct eventStruct),freeBuff); + fSockets[socket]->send(*requestMessage); } bool AliStorageEventManager::Send(struct clientRequestStruct *request,storageSockets socket,int timeout) { - pollitem_t items[1] = {{*fSockets[socket],0,ZMQ_POLLIN,0}} ; - - - char *buffer = (char*)(request); - message_t *requestMessage = new message_t((void*)buffer, - sizeof(struct clientRequestStruct),freeBuff); - - try - { - fSockets[socket]->send(*requestMessage); - } - catch (const zmq::error_t& e) - { - cout<<"MANAGER -- "<=0) - { - if(poll (&items[0], 1, timeout)==0) - { - delete requestMessage; - return 0; - } - } - delete requestMessage; - return 1; + pollitem_t items[1] = {{*fSockets[socket],0,ZMQ_POLLIN,0}} ; + + + char *buffer = (char*)(request); + message_t *requestMessage = new message_t((void*)buffer, + sizeof(struct clientRequestStruct),freeBuff); + + try + { + fSockets[socket]->send(*requestMessage); + } + catch (const zmq::error_t& e) + { + cout<<"MANAGER -- "<=0) + { + if(poll (&items[0], 1, timeout)==0) + { + delete requestMessage; + return 0; + } + } + delete requestMessage; + return 1; } void AliStorageEventManager::Send(long message,storageSockets socket) { - stringstream streamBuffer; - streamBuffer << message; - string stringBuffer = streamBuffer.str(); - char *buffer = (char*)stringBuffer.c_str(); - message_t *replyMessage = new message_t((void*)buffer,sizeof(stringBuffer),freeBuff); + stringstream streamBuffer; + streamBuffer << message; + string stringBuffer = streamBuffer.str(); + char *buffer = (char*)stringBuffer.c_str(); + message_t *replyMessage = new message_t((void*)buffer,sizeof(stringBuffer),freeBuff); - fSockets[socket]->send(*replyMessage); - delete replyMessage; - streamBuffer.str(string()); - streamBuffer.clear(); + fSockets[socket]->send(*replyMessage); + delete replyMessage; + streamBuffer.str(string()); + streamBuffer.clear(); } void AliStorageEventManager::Send(bool message,storageSockets socket) { - char *buffer; - if(message==true) - { - buffer = (char*)("true"); - } - else - { - buffer = (char*)("false"); - } - message_t *replyMessage = new message_t((void*)buffer,sizeof(buffer),freeBuff); - fSockets[socket]->send(*replyMessage); - delete replyMessage; + char *buffer; + if(message==true) + { + buffer = (char*)("true"); + } + else + { + buffer = (char*)("false"); + } + message_t *replyMessage = new message_t((void*)buffer,sizeof(buffer),freeBuff); + fSockets[socket]->send(*replyMessage); + delete replyMessage; } void AliStorageEventManager::Send(AliESDEvent *event, storageSockets socket) { - TMessage tmess(kMESS_OBJECT); - tmess.Reset(); - tmess.WriteObject(event); - TMessage::EnableSchemaEvolutionForAll(kTRUE); - - int bufsize = tmess.Length(); - char* buf = (char*) malloc(bufsize * sizeof(char)); - memcpy(buf, tmess.Buffer(), bufsize); - - message_t message((void*)buf, bufsize, freeBuff); - fSockets[socket]->send(message); + TMessage tmess(kMESS_OBJECT); + tmess.Reset(); + tmess.WriteObject(event); + TMessage::EnableSchemaEvolutionForAll(kTRUE); + + int bufsize = tmess.Length(); + char* buf = (char*) malloc(bufsize * sizeof(char)); + memcpy(buf, tmess.Buffer(), bufsize); + + message_t message((void*)buf, bufsize, freeBuff); + fSockets[socket]->send(message); } void AliStorageEventManager::SendAsXml(AliESDEvent *event,storageSockets socket) { - cout<<"SENDING AS XML"<"<" << endl; - - for(int i=0;iGetNumberOfTracks();i++) - { - AliESDtrack *track = event->GetTrack(i); - bufferStream << "\tGetMass()<<"\">" <GetTrackPointArray(); - - if(array) - { - const float *x = array->GetX(); - const float *y = array->GetY(); - const float *z = array->GetZ(); - int n = array->GetNPoints(); - - for(int j=0;j"<"<< x[j] <<""<"<< y[j] <<""<"<< z[j] <<""<"<"<"<send(message); - cout<<"xml sent"<"<" << endl; + + for(int i=0;iGetNumberOfTracks();i++) + { + AliESDtrack *track = event->GetTrack(i); + bufferStream << "\tGetMass()<<"\">" <GetTrackPointArray(); + + if(array) + { + const float *x = array->GetX(); + const float *y = array->GetY(); + const float *z = array->GetZ(); + int n = array->GetNPoints(); + + for(int j=0;j"<"<< x[j] <<""<"<< y[j] <<""<"<< z[j] <<""<"<"<"<send(message); + cout<<"xml sent"< AliStorageEventManager::GetServerListVector(storageSockets socket) { - //get size of the incomming message - message_t sizeMessage; - fSockets[socket]->recv(&sizeMessage); - int numberOfRecords; - istringstream iss(static_cast(sizeMessage.data())); - iss >> numberOfRecords; - - if(numberOfRecords==0){cout<<"MANAGER -- list is empty"<send(*(new message_t()));//receive empty message just to keep req-rep order - -//get list of events - message_t *response = new message_t(sizeof(serverListStruct)*numberOfRecords); - fSockets[socket]->recv(response); - - vector receivedList(static_cast(response->data()), static_cast(response->data()) + numberOfRecords); - - if (response) {delete response;} - return receivedList; + //get size of the incomming message + message_t sizeMessage; + fSockets[socket]->recv(&sizeMessage); + int numberOfRecords; + istringstream iss(static_cast(sizeMessage.data())); + iss >> numberOfRecords; + + if(numberOfRecords==0){cout<<"MANAGER -- list is empty"<send(*(new message_t()));//receive empty message just to keep req-rep order + + //get list of events + message_t *response = new message_t(sizeof(serverListStruct)*numberOfRecords); + fSockets[socket]->recv(response); + + vector receivedList(static_cast(response->data()), static_cast(response->data()) + numberOfRecords); + + if (response) {delete response;} + return receivedList; } AliESDEvent* AliStorageEventManager::GetEvent(storageSockets socket,int timeout) { - message_t* message = new message_t(); - - try - { - fSockets[socket]->recv(message); - } - catch (const zmq::error_t& e) - { - cout<<"MANAGER -- "<size()+sizeof(UInt_t), - message->data()); - mess->InitMap(); - mess->ReadClass();// get first the class stored in message - mess->SetBufferOffset(sizeof(UInt_t) + sizeof(kMESS_OBJECT)); - mess->ResetMap(); - - AliESDEvent* data = (AliESDEvent*)(mess->ReadObjectAny(AliESDEvent::Class())); - - if (data) - { - data->GetStdContent(); - if(message){delete message;} - return data; - } - else - { - if(message){delete message;} - return NULL; - } + pollitem_t items[1] = {{*fSockets[socket],0,ZMQ_POLLIN,0}} ; + + if(timeout>=0) + { + if(poll (&items[0], 1, timeout)==0) + { + return NULL; + } + } + + message_t* message = new message_t(); + + try + { + fSockets[socket]->recv(message); + } + catch (const zmq::error_t& e) + { + cout<<"MANAGER -- "<size()+sizeof(UInt_t), + message->data()); + mess->InitMap(); + mess->ReadClass();// get first the class stored in message + mess->SetBufferOffset(sizeof(UInt_t) + sizeof(kMESS_OBJECT)); + mess->ResetMap(); + + AliESDEvent* data = (AliESDEvent*)(mess->ReadObjectAny(AliESDEvent::Class())); + + if (data) + { + data->GetStdContent(); + if(message){delete message;} + return data; + } + else + { + if(message){delete message;} + return NULL; + } } struct serverRequestStruct* AliStorageEventManager::GetServerStruct(storageSockets socket) { - struct serverRequestStruct *request = new struct serverRequestStruct; - message_t *requestMessage = new message_t(); - fSockets[socket]->recv(requestMessage); - request = static_cast(requestMessage->data()); - return request; + struct serverRequestStruct *request = new struct serverRequestStruct; + message_t *requestMessage = new message_t(); + fSockets[socket]->recv(requestMessage); + request = static_cast(requestMessage->data()); + return request; } struct clientRequestStruct* AliStorageEventManager::GetClientStruct(storageSockets socket) { - struct clientRequestStruct *request = new struct clientRequestStruct; - message_t *requestMessage = new message_t(); - fSockets[socket]->recv(requestMessage); - request = static_cast(requestMessage->data()); - return request; + struct clientRequestStruct *request = new struct clientRequestStruct; + message_t *requestMessage = new message_t(); + fSockets[socket]->recv(requestMessage); + request = static_cast(requestMessage->data()); + return request; } bool AliStorageEventManager::GetBool(storageSockets socket) { - message_t *response = new message_t(); - fSockets[socket]->recv(response); - char *result = (char*)response->data(); - - if(!strcmp("true",result)){return true;} - else{return false;} + message_t *response = new message_t(); + fSockets[socket]->recv(response); + char *result = (char*)response->data(); + + if(!strcmp("true",result)){return true;} + else{return false;} } long AliStorageEventManager::GetLong(storageSockets socket) { - message_t *responseMessage = new message_t(); - fSockets[socket]->recv(responseMessage); + message_t *responseMessage = new message_t(); + fSockets[socket]->recv(responseMessage); long result = 0; @@ -481,6 +491,6 @@ long AliStorageEventManager::GetLong(storageSockets socket) result = (long)atoi(static_cast(responseMessage->data())); delete responseMessage; } - return result; + return result; }