From da6a894f1e31673517473df32654a93ea1b8ea9b Mon Sep 17 00:00:00 2001 From: jniedzie Date: Tue, 11 Nov 2014 08:45:54 +0100 Subject: [PATCH] Online reco now listens only in PHYSICS_1 --- .../alionlinereco/AliOnlineReconstruction.cxx | 37 ++++++-- MONITOR/alionlinereco/onlinereco.cxx | 7 +- .../AliDIMListenerThread.cxx | 92 +++++++++++-------- .../alistoragemanager/AliDIMListenerThread.h | 15 ++- 4 files changed, 95 insertions(+), 56 deletions(-) diff --git a/MONITOR/alionlinereco/AliOnlineReconstruction.cxx b/MONITOR/alionlinereco/AliOnlineReconstruction.cxx index b921c45bac6..13a2dd2c8e6 100644 --- a/MONITOR/alionlinereco/AliOnlineReconstruction.cxx +++ b/MONITOR/alionlinereco/AliOnlineReconstruction.cxx @@ -15,10 +15,14 @@ #include #include +#include #include using namespace std; +bool gQuit = false; +void GotSignal(int){gQuit = true;} + AliOnlineReconstruction::AliOnlineReconstruction(int run) : fRun(run), fDataSource(""), @@ -26,14 +30,32 @@ AliOnlineReconstruction::AliOnlineReconstruction(int run) : fAliReco(new AliReconstruction()), fCDBmanager(AliCDBManager::Instance()) { + // make sure that destructor is called when kill signal comes + struct sigaction sa; + memset(&sa,0,sizeof(sa)); + sa.sa_handler = GotSignal; + sigfillset(&sa.sa_mask); + sigaction(SIGINT,&sa,NULL); + + printf("CDB Lock is %s\n",AliCDBManager::Instance()->GetLock() ? "ON":"OFF"); + + fSettings.ReadFile(AliOnlineReconstructionUtil::GetPathToServerConf(), kEnvUser); StartOfRun(); + cout<<"after startofrun"<SlaveTerminate(); + // fAliReco->Terminate(); + // delete fAliReco;fAliReco=0; + } if(fCDBmanager){fCDBmanager->Destroy();fCDBmanager=0;} + cout<<"OK"<HasNextEventAfter(iEvent)) + while (fAliReco->HasNextEventAfter(iEvent) && !gQuit) { if (!fAliReco->HasEnoughResources(iEvent)) break; Bool_t status = fAliReco->ProcessEvent(iEvent); @@ -153,11 +175,14 @@ void AliOnlineReconstruction::ReconstructionLoop() cout<<"Event server -- aborting"<Abort("ProcessEvent",TSelector::kAbortFile); } + cout<<"clean"<CleanProcessedEvent(); + cout<<"iEvent++"<SlaveTerminate(); - if (fAliReco->GetAbort() != TSelector::kContinue) return; - fAliReco->Terminate(); - if (fAliReco->GetAbort() != TSelector::kContinue) return; + cout<<"after while"<SlaveTerminate(); + //if (fAliReco->GetAbort() != TSelector::kContinue) return; + //fAliReco->Terminate(); + //if (fAliReco->GetAbort() != TSelector::kContinue) return; } diff --git a/MONITOR/alionlinereco/onlinereco.cxx b/MONITOR/alionlinereco/onlinereco.cxx index 8faa633fd7f..fba23e08dc2 100644 --- a/MONITOR/alionlinereco/onlinereco.cxx +++ b/MONITOR/alionlinereco/onlinereco.cxx @@ -48,12 +48,13 @@ int main(int argc, char **argv) return 0; } - TApplication app("AliOnlineReconstruction", &argc, argv); + //TApplication app("AliOnlineReconstruction", &argc, argv); std::cout<<"Starting Online Reconstruction for run:"<Connect("DimMessage(int)", "AliDIMListenerThread", this, "StartOfRun(int)"); fDimEORListener[i]->Connect("DimMessage(int)", "AliDIMListenerThread", this, "EndOfRun(int)"); -#else - fDimSORListener[i]=0x0; - fDimEORListener[i]=0x0; +} + */ + fDimSORListener = new AliDimIntNotifier("/LOGBOOK/SUBSCRIBE/DAQ_SOR_PHYSICS_1"); + fDimEORListener = new AliDimIntNotifier("/LOGBOOK/SUBSCRIBE/DAQ_EOR_PHYSICS_1"); + fDimSORListener->Connect("DimMessage(int)", "AliDIMListenerThread", this, "StartOfRun(int)"); + fDimEORListener->Connect("DimMessage(int)", "AliDIMListenerThread", this, "EndOfRun(int)"); #endif - } } void AliDIMListenerThread::StartOfRun(int run) { - cout<<"DIM Listener -- SOR signal received for run:"<Exec(Form("ssh -n -f %s@%s \"killall alionlinereco;alionlinereco %d\"",username.c_str(),hostname.c_str(),run)); - + cout<<"AliDIMListenerThread -- SOR signal received for run:"<Exec(Form("ssh -n -f %s@%s \"killall alionlinereco;alionlinereco %d\"",fOnlineReconstructionUsername.c_str(),fOnlineReconstructionHostname.c_str(),run)); } void AliDIMListenerThread::EndOfRun(int run) { - cout<<"DIM Listener -- EOR signal received for run:"<Exec(Form("ssh -n -f %s@%s \"killall alionlinereco\"",fOnlineReconstructionUsername.c_str(),fOnlineReconstructionHostname.c_str())); } diff --git a/MONITOR/alistoragemanager/AliDIMListenerThread.h b/MONITOR/alistoragemanager/AliDIMListenerThread.h index 0bf9c82824b..cadcad2297c 100644 --- a/MONITOR/alistoragemanager/AliDIMListenerThread.h +++ b/MONITOR/alistoragemanager/AliDIMListenerThread.h @@ -2,11 +2,7 @@ #define __AliDIMListenerThread__ #include "AliDimIntNotifier.h" -/* -#ifdef ALI_DATE -#include -#endif -*/ + class AliDimIntNotifier; class AliDIMListenerThread @@ -21,8 +17,11 @@ public: private: void InitDIMListeners(); - AliDimIntNotifier *fDimSORListener[5]; - AliDimIntNotifier *fDimEORListener[5]; + AliDimIntNotifier *fDimSORListener;//[5]; //now listening just in PHYSICS_1 + AliDimIntNotifier *fDimEORListener;//[5]; + + std::string fOnlineReconstructionHostname; + std::string fOnlineReconstructionUsername; }; -#endif /* defined(__AliDIMListenerThread__) */ +#endif -- 2.43.0