X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=inline;f=MONITOR%2Falionlinemonitor.cxx;h=22452bf6c25091ef6bf2d8b5f54a24d781543a86;hb=ac1a9cf1f69054cb9a11455edff50b2e84d9c638;hp=34a38bc560f2ff97533cfd8bcc099773db67a32b;hpb=c6d78c69939da49a77987e98cd062f7c55c25571;p=u%2Fmrichter%2FAliRoot.git diff --git a/MONITOR/alionlinemonitor.cxx b/MONITOR/alionlinemonitor.cxx index 34a38bc560f..22452bf6c25 100644 --- a/MONITOR/alionlinemonitor.cxx +++ b/MONITOR/alionlinemonitor.cxx @@ -3,6 +3,12 @@ #include +#include +#include +#include + +#include + 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.*'", + 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;