10 #include <framework/core/ModuleParam.templateDetails.h>
11 #include <dqm/analysis/modules/DQMHistSnapshots.h>
12 #include <daq/slc/base/StringUtil.h>
33 addParam(
"CheckInterval", m_check_interval,
"Interval between two checks [s]", 180);
34 B2DEBUG(1,
"DQMHistSnapshots: Constructor done.");
38 DQMHistSnapshotsModule::~DQMHistSnapshotsModule() { }
40 void DQMHistSnapshotsModule::initialize()
43 B2DEBUG(20,
"DQMHistSnapshots: initialized.");
47 void DQMHistSnapshotsModule::beginRun()
50 B2DEBUG(20,
"DQMHistSnapshots: beginRun called.");
55 for (
auto& it : m_ssnode) {
56 if (it->histo->GetName() == a)
62 TCanvas* DQMHistSnapshotsModule::find_canvas(TString canvas_name)
64 TIter nextkey(gROOT->GetListOfCanvases());
67 while ((obj = (TObject*)nextkey())) {
68 if (obj->IsA()->InheritsFrom(
"TCanvas")) {
69 if (obj->GetName() == canvas_name)
76 void DQMHistSnapshotsModule::event()
79 time_t cur_time = time(NULL);
81 if ((m_last_check == 0) || (cur_time - m_last_check > m_check_interval)) {
83 m_last_check = cur_time;
86 const HistList& hlist = getHistList();
88 for (HistList::const_iterator it = hlist.begin(); it != hlist.end(); ++it) {
89 TString a = it->first;
91 SSNODE* n = find_snapshot(a);
94 n->histo = (TH1*) it->second->Clone();
96 StringList s = StringUtil::split(a.Data(),
'/');
97 std::string dirname = s[0];
98 std::string hname = s[1];
99 std::string canvas_name = dirname +
"/c_" + hname;
100 n->canvas = find_canvas(canvas_name);
103 m_ssnode.push_back(n);
107 if (h->GetEntries() > n->histo->GetEntries()) {
109 n->histo = (TH1*)h->Clone();
115 if (n->stale == 1 && n->canvas != NULL) {
116 h->SetTitle((h->GetTitle() +
string(
" [STALLED]")).c_str());
123 void DQMHistSnapshotsModule::endRun()
125 B2DEBUG(20,
"DQMHistSnapshots: endRun called");
129 void DQMHistSnapshotsModule::terminate()
131 B2DEBUG(20,
"DQMHistSnapshots: terminate called");