added fake OCDB object needed for QA
[u/mrichter/AliRoot.git] / MONITOR / AliOnlineReco.cxx
index a256ca5..dcec436 100644 (file)
@@ -18,6 +18,8 @@
 #include <TGListBox.h>
 #include <TGButton.h>
 
+#include <TInterpreter.h>
+
 #include <unistd.h>
 #include <signal.h>
 
@@ -32,8 +34,11 @@ AliOnlineReco::AliOnlineReco() :
 
   fRunList(0), fAutoRun(0), fStartButt(0), fStopButt(0), fExitButt(0),
   fAutoRunTimer(0), fAutoRunScheduled(0), fAutoRunRunning(0),
+  fRun2PidMap(),
   fTestMode(kFALSE)
 {
+  // Constructor.
+
   // GUI components.
   fRunList = new TGListBox(this);
   AddFrame(fRunList, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY));
@@ -91,21 +96,29 @@ AliOnlineReco::AliOnlineReco() :
 
 AliOnlineReco::~AliOnlineReco()
 {
+  // Destructor.
+
   delete fAutoRunTimer;
 }
 
 Int_t AliOnlineReco::GetLastRun() const
 {
+  // Returns the last started run.
+
   return fRun2PidMap.empty() ? 0 : fRun2PidMap.rbegin()->first;
 }
 
 Bool_t AliOnlineReco::GetAutoRunMode() const
 {
+  // Return state of auto-run flag.
+
   return fAutoRun->IsOn();
 }
 
 void AliOnlineReco::SetAutoRunMode(Bool_t ar)
 {
+  // Set auto-run flag.
+
   if (ar == fAutoRun->IsOn())
     return;
 
@@ -118,6 +131,9 @@ void AliOnlineReco::SetAutoRunMode(Bool_t ar)
 
 AliOnlineReco::mIntInt_i AliOnlineReco::FindMapEntryByPid(Int_t pid)
 {
+  // Find run-to-pid map iterator by pid.
+  // Requires iteration over map.
+
   for (mIntInt_i i = fRun2PidMap.begin(); i != fRun2PidMap.end(); ++i)
   {
     if (i->second == pid)
@@ -129,6 +145,8 @@ AliOnlineReco::mIntInt_i AliOnlineReco::FindMapEntryByPid(Int_t pid)
 
 void AliOnlineReco::StartAliEve(mIntInt_i& mi)
 {
+  // Start alieve to process run given my the run-pid entry.
+
   Int_t run = mi->first;
 
   if (mi->second == 0)
@@ -149,6 +167,14 @@ void AliOnlineReco::StartAliEve(mIntInt_i& mi)
     }
     else
     {
+      gCINTMutex = 0;
+
+      struct sigaction sac;
+      sac.sa_handler = 0;
+      sigemptyset(&sac.sa_mask);
+      sac.sa_flags = 0;
+      sigaction(SIGCHLD, &sac, 0);
+
       int s;
       if (fTestMode)
       {
@@ -184,13 +210,18 @@ void AliOnlineReco::StartAliEve(mIntInt_i& mi)
        gSystem->mkdir(Form("run%d_%d", run, (Int_t)procPID));
        gSystem->cd(Form("run%d_%d", run, (Int_t)procPID));
 
-       const char *recMacroPath = "$ALICE_ROOT/test/cosmic/rec.C";
+       TString recMacroPath(gSystem->Getenv("ONLINERECO_MACRO"));
+       if (recMacroPath.IsNull()) {
+         recMacroPath = "$ALICE_ROOT/MONITOR/rec.C";
+       }
 
        s = execlp("alieve",
                   "alieve",
                   "-q",
-                  Form("%s(\"mem://@*:\")", gSystem->ExpandPathName(recMacroPath)),
+                  Form("%s(\"mem://@*:\")", gSystem->ExpandPathName(recMacroPath.Data())),
                   (char*) 0);
+
+       gSystem->Exec(Form("rm -rf %s/reco/run%d_%d",gSystem->Getenv("ONLINERECO_BASE_DIR"),run,(Int_t)procPID));
       }
 
       if (s == -1)
@@ -208,6 +239,8 @@ void AliOnlineReco::StartAliEve(mIntInt_i& mi)
 
 void AliOnlineReco::KillPid(Int_t pid)
 {
+  // Terminate process given by pid.
+
   // Send terminate signal to process ...
 
   if (fTestMode)
@@ -239,12 +272,16 @@ void AliOnlineReco::StartAutoRunTimer(Int_t run)
 
 void AliOnlineReco::StopAutoRunTimer()
 {
+  // Stop auto-run timer.
+
   fAutoRunTimer->TurnOff();
   fAutoRunScheduled = 0;
 }
 
 void AliOnlineReco::AutoRunTimerTimeout()
 {
+  // Slot called on auto-timer timeout.
+
   Int_t run = fAutoRunScheduled;
 
   StopAutoRunTimer();
@@ -269,6 +306,8 @@ void AliOnlineReco::AutoRunTimerTimeout()
 
 void AliOnlineReco::StartOfRun(Int_t run)
 {
+  // Slot called from DIM handler on start of run.
+
   mIntInt_i i = fRun2PidMap.find(run);
   if (i == fRun2PidMap.end())
   {
@@ -289,6 +328,8 @@ void AliOnlineReco::StartOfRun(Int_t run)
 
 void AliOnlineReco::EndOfRun(Int_t run)
 {
+  // Slot called from DIM handler on stop of run.
+
   mIntInt_i i = fRun2PidMap.find(run);
   if (i != fRun2PidMap.end())
   {
@@ -319,6 +360,8 @@ void AliOnlineReco::EndOfRun(Int_t run)
 
 void AliOnlineReco::ChildProcTerm(Int_t pid, Int_t status)
 {
+  // Slot called on termination of child process.
+
   printf("child process termination pid=%d, status=%d...\n", pid, status);
 
   mIntInt_i i = FindMapEntryByPid(pid);
@@ -359,6 +402,8 @@ void AliOnlineReco::ChildProcTerm(Int_t pid, Int_t status)
 
 void AliOnlineReco::DoAutoRun()
 {
+  // Slot called from auto-run check-box.
+
   Bool_t autoRun = fAutoRun->IsOn();
 
   if (autoRun)
@@ -369,6 +414,8 @@ void AliOnlineReco::DoAutoRun()
 
 void AliOnlineReco::DoStart()
 {
+  // Slot called from Start button.
+
   Int_t run = fRunList->GetSelected();
   mIntInt_i i = fRun2PidMap.find(run);
 
@@ -383,6 +430,8 @@ void AliOnlineReco::DoStart()
 
 void AliOnlineReco::DoStop()
 {
+  // Slot called from Stop button.
+
   Int_t run = fRunList->GetSelected();
   mIntInt_i i = fRun2PidMap.find(run);
 
@@ -405,15 +454,21 @@ void AliOnlineReco::DoStop()
 
 void AliOnlineReco::DoExit()
 {
+  // Slot called from Exit button.
+
   gSystem->ExitLoop();
 }
 
 void AliOnlineReco::CloseWindow()
 {
+  // Virtual method called when window-manager close-window button is pressed.
+
   gSystem->ExitLoop();
 }
 
-Int_t AliOnlineReco::RetrieveGRP(UInt_t run, TString &gdc) {
+Int_t AliOnlineReco::RetrieveGRP(UInt_t run, TString &gdc)
+{
+  // Retrieve GRP entry for given run from aldaqdb.
 
   Int_t ret=AliGRPPreprocessor::ReceivePromptRecoParameters(run, "aldaqdb", 0, "LOGBOOK", "logbook", "alice",
                                                            Form("local://%s",gSystem->pwd()),