bugfix: correct range of DDL for specified detector
[u/mrichter/AliRoot.git] / MONITOR / alionlinemonitor.cxx
1 #include "AliDimIntNotifier.h"
2 #include "AliOnlineReco.h"
3
4 #include <TRint.h>
5
6 #include <TSQLServer.h>
7 #include <TSQLResult.h>
8 #include <TSQLRow.h>
9
10 #include <TTimeStamp.h>
11
12 int main(int argc, char **argv)
13 {
14   AliDimIntNotifier::SetMainThreadId();
15
16   Bool_t test = argc > 1 && strcmp("-test", argv[1]) == 0;
17
18   TRint app("App", &argc, argv);
19
20   AliOnlineReco *win = new AliOnlineReco;
21   win->MapWindow();
22
23   TString autoRun(gSystem->Getenv("ONLINERECO_AUTORUN"));
24   if (autoRun == "1" || autoRun.CompareTo("true", TString::kIgnoreCase) == 0)
25   {
26     win->SetAutoRunMode(kTRUE);
27   }
28
29   if (test)
30   {
31     win->SetTestMode();
32
33     win->GetSOR(0)->infoHandlerTest(2214);
34     win->GetSOR(0)->infoHandlerTest(2215);
35     win->GetSOR(0)->infoHandlerTest(2224);
36     win->GetSOR(0)->infoHandlerTest(2244);
37
38     printf("win = (AliOnlineReco*) 0x%lx\n", (unsigned long)win);
39   }
40   else
41   {
42     TString baseDir = gSystem->Getenv("ONLINERECO_BASE_DIR");
43     if (baseDir.IsNull())
44     {
45       printf("ERROR: ONLINERECO_BASE_DIR is not set. Exiting...");
46       return 0;
47     }
48
49     TString dbHost = gSystem->Getenv("ONLINERECO_DB_HOST");
50     if (dbHost.IsNull())
51     {
52       printf("ERROR: ONLINERECO_DB_HOST is not set. Exiting...");
53       return 0;
54     }
55
56     TString dbPort = gSystem->Getenv("ONLINERECO_DB_PORT");
57     if (dbPort.IsNull())
58     {
59       printf("ERROR: ONLINERECO_DB_PORT is not set. Exiting...");
60       return 0;
61     }
62
63     TString dbName = gSystem->Getenv("ONLINERECO_DB_NAME");
64     if (dbName.IsNull())
65     {
66       printf("ERROR: ONLINERECO_DB_NAME is not set. Exiting...");
67       return 0;
68     }
69
70     TString user = gSystem->Getenv("ONLINERECO_DB_USER");
71     if (user.IsNull())
72     {
73       printf("ERROR: ONLINERECO_DB_USER is not set. Exiting...");
74       return 0;
75     }
76
77     TString password = gSystem->Getenv("ONLINERECO_DB_PASSWORD");
78     if (password.IsNull())
79     {
80       printf("ERROR: ONLINERECO_DB_PASSWORD is not set. Exiting...");
81       return 0;
82     }
83
84     TSQLServer* server = TSQLServer::Connect(Form("mysql://%s:%s/%s", dbHost.Data(), dbPort.Data(), dbName.Data()), user.Data(), password.Data());
85     if (!server) {
86       printf("ERROR: Could not connect to DAQ Logbook");
87       return 0;
88     }
89     TString sqlQuery;
90     TTimeStamp ts;
91     sqlQuery.Form("SELECT run FROM logbook WHERE DAQ_time_start > %u AND DAQ_time_end IS NULL AND partition REGEXP 'PHYSICS.*'",
92       (UInt_t)ts.GetSec()-86400);
93     TSQLResult* result = server->Query(sqlQuery);
94     if (!result)
95     {
96       printf("ERROR: Can't execute query <%s>!", sqlQuery.Data());
97       return 0;
98     }
99     if (result->GetRowCount() == 0)
100     {
101       printf("No active physics runs found");
102     }
103     else
104     {
105       for (Int_t iRow = 0; iRow < result->GetRowCount(); iRow++)
106       {
107         TSQLRow* row = result->Next();
108         TString runStr = row->GetField(0);
109         if (runStr.IsDigit())
110           win->StartOfRun(runStr.Atoi());
111         delete row;
112       }
113     }
114     delete result;
115   }
116
117   app.Run(kTRUE);
118   
119   return 0;
120 }