]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MONITOR/alionlinemonitor.cxx
Addition to the revision 45154. The calibrated TDC threshold used also in the raw...
[u/mrichter/AliRoot.git] / MONITOR / alionlinemonitor.cxx
index 34a38bc560f2ff97533cfd8bcc099773db67a32b..eab7195a107dd6b728498225edd93f6a0edf4457 100644 (file)
@@ -3,6 +3,12 @@
 
 #include <TRint.h>
 
+#include <TSQLServer.h>
+#include <TSQLResult.h>
+#include <TSQLRow.h>
+
+#include <TTimeStamp.h>
+
 int main(int argc, char **argv)
 {
   AliDimIntNotifier::SetMainThreadId();
@@ -14,17 +20,70 @@ int main(int argc, char **argv)
   AliOnlineReco *win = new AliOnlineReco;
   win->MapWindow();
 
+  TString autoRun(gSystem->Getenv("ONLINERECO_AUTORUN"));
+  if (autoRun == "1" || autoRun.CompareTo("true", TString::kIgnoreCase) == 0)
+  {
+    win->SetAutoRunMode(kTRUE);
+  }
+
   if (test)
   {
     win->SetTestMode();
 
-    win->GetSOR()->infoHandlerTest(2214);
-    win->GetSOR()->infoHandlerTest(2215);
-    win->GetSOR()->infoHandlerTest(2224);
-    win->GetSOR()->infoHandlerTest(2244);
+    win->GetSOR(0)->infoHandlerTest(2214);
+    win->GetSOR(0)->infoHandlerTest(2215);
+    win->GetSOR(0)->infoHandlerTest(2224);
+    win->GetSOR(0)->infoHandlerTest(2244);
 
     printf("win = (AliOnlineReco*) 0x%lx\n", (unsigned long)win);
   }
+  else
+  {
+    TString baseDir = gSystem->Getenv("ONLINERECO_BASE_DIR");
+    if (baseDir.IsNull())
+    {
+      printf("ERROR: ONLINERECO_BASE_DIR is not set. Exiting...");
+      return 0;
+    }
+
+    const char *dbHost = "aldaqdb";
+    Int_t dbPort = 3306;
+    const char *dbName = "LOGBOOK";
+    const char *user = "logbook";
+    const char *password = "alice";
+
+    TSQLServer* server = TSQLServer::Connect(Form("mysql://%s:%d/%s", dbHost, dbPort, dbName), user, password);
+    if (!server) {
+      printf("ERROR: Could not connect to DAQ Logbook");
+      return 0;
+    }
+    TString sqlQuery;
+    TTimeStamp ts;
+    sqlQuery.Form("SELECT run FROM logbook WHERE DAQ_time_start > %u AND DAQ_time_end IS NULL AND partition REGEXP 'PHYSICS.*'",
+                 (UInt_t)ts.GetSec()-86400);
+    TSQLResult* result = server->Query(sqlQuery);
+    if (!result)
+    {
+      printf("ERROR: Can't execute query <%s>!", sqlQuery.Data());
+      return 0;
+    }
+    if (result->GetRowCount() == 0)
+    {
+      printf("No active physics runs found");
+    }
+    else
+    {
+      for (Int_t iRow = 0; iRow < result->GetRowCount(); iRow++)
+      {
+       TSQLRow* row = result->Next();
+       TString runStr = row->GetField(0);
+       if (runStr.IsDigit())
+         win->StartOfRun(runStr.Atoi());
+       delete row;
+      }
+    }
+    delete result;
+  }
 
   app.Run(kTRUE);
   return 0;