/////////////////////////////////////////////////////////////////////////////// // uses OFFLINE_MON_DIR /////////////////////////////////////////////////////////////////////////////// #include "cstdlib" #include "stdio.h" #include "time.h" #include "OfflineMon/TOfflineMon.hh" #include "OfflineMon/TOfflineMonitor.hh" #include "TROOT.h" #include "TFile.h" #include "TTree.h" #include "TFolder.h" #include "TSystem.h" #include "TH1F.h" #include "TF1.h" ClassImp(TOfflineMon) //_____________________________________________________________________________ TOfflineMon::TOfflineMon() { const char* offline_mon_dir = gSystem->Getenv("OFFLINE_MON_DIR"); if (offline_mon_dir) { fHtmlDirectory = offline_mon_dir; } else { printf ("TOfflineMon"," env var OFFLINE_MON_DIR is not defined"); } fListOfMonitors = new TObjArray(); } //_____________________________________________________________________________ TOfflineMon::~TOfflineMon() { fListOfMonitors->Delete(); delete fListOfMonitors; } //_____________________________________________________________________________ int TOfflineMon::AddMonitor(TOfflineMonitor* Mon) { TOfflineMonitor* mon; mon = (TOfflineMonitor*) fListOfMonitors->FindObject(Mon->GetName()); if (mon == 0) { fListOfMonitors->Add(Mon); } return 0; } //_____________________________________________________________________________ int TOfflineMon::Init() { TOfflineMonitor* mon; int nmon = fListOfMonitors->GetEntriesFast(); for (int i=0; iAt(i); mon->Init(); } return 0; } //_____________________________________________________________________________ int TOfflineMon::UpdateNtuple() { TOfflineMonitor* mon; int nmon = fListOfMonitors->GetEntriesFast(); for (int i=0; iAt(i); mon->UpdateNtuple(); } return 0; } //_____________________________________________________________________________ int TOfflineMon::MakePlots() { TOfflineMonitor* mon; int nmon = fListOfMonitors->GetEntriesFast(); for (int i=0; iAt(i); mon->MakePlots(); } return 0; } //_____________________________________________________________________________ int TOfflineMon::MakeHtml() { TOfflineMonitor* mon; int status; FILE* f = fopen("offline.html","w"); int nmon = fListOfMonitors->GetEntriesFast(); int global_status = 0; //----------------------------------------------------------------------------- // determine global status: if at least one of the subsystems reports a failure, // the whole system is in failure //----------------------------------------------------------------------------- for (int i=0; iAt(i); status = mon->GetStatus(); mon->MakeHtml(); // AC if (status < 0) { global_status = -1; } } if (global_status == 0) { fprintf(f,""); } else { fprintf(f,""); } //----------------------------------------------------------------------------- // now loop over the subsystems again and add status of each of them to the // web page //----------------------------------------------------------------------------- for (int i=0; iAt(i); status = mon->GetStatus(); if (status == 0) { } else { } } return 0; } int TOfflineMon::MakeXml() { int nmon = fListOfMonitors->GetEntriesFast(); for (int i=0; iAt(i); mon->MakeXml(); } }