1 #include <daq/dqm/DqmMasterCallback.h>
2 #include <framework/pcore/EvtMessage.h>
3 #include <framework/pcore/MsgHandler.h>
18 static int m_running = 0;
23 void* RunDqmMasterLogger(
void*)
27 DqmMasterCallback::DqmMasterCallback(
ConfigFile& config)
29 m_hltdir = config.get(
"dqmmaster.hltdir");
30 m_erecodir = config.get(
"dqmmaster.erecodir");
32 printf(
"DqmMasterCallback : hltdir = %s, erecodir = %s\n", m_hltdir.c_str(), m_erecodir.c_str());
43 DqmMasterCallback::~DqmMasterCallback()
48 void DqmMasterCallback::load(
const DBObject& ,
const std::string& runtype)
53 void DqmMasterCallback::start(
int expno,
int runno)
61 TText rc_clear(0, 0,
"DQMRC:CLEAR");
62 hdl.add(&rc_clear,
"DQMRC:CLEAR");
64 TText subdir(0, 0,
"DQMInfo");
65 hdl.add(&subdir,
"SUBDIR:DQMInfo") ;
67 TH1F h_expno(
"expno", to_string(m_expno).c_str(), 1, 0, 1);
68 hdl.add(&h_expno,
"expno");
70 TH1F h_runno(
"runno", to_string(m_runno).c_str(), 1, 0, 1);
71 hdl.add(&h_runno,
"runno");
73 TH1F h_rtype(
"rtype", m_runtype.c_str(), 1, 0, 1);
74 hdl.add(&h_rtype,
"rtype");
76 TText command(0, 0,
"COMMAND:EXIT");
77 hdl.add(&command,
"SUBDIR:EXIT");
79 TText rc_merge(0, 0,
"DQMRC:MERGE");
80 hdl.add(&rc_merge,
"DQMRC:MERGE");
84 (msg->
header())->reserved[0] = 0;
85 (msg->
header())->reserved[1] = numobjs;
87 m_sock_hlt->send(msg);
88 m_sock_reco->send(msg);
91 printf(
"expno = %d, runno = %d\n", m_expno, m_runno);
95 void DqmMasterCallback::stop()
98 if (m_running == 0)
return;
107 TMemFile* hlttmem = m_hltdqm->LoadMemFile();
108 TMemFile* erecotmem = m_erecodqm->LoadMemFile();
114 sprintf(outfile,
"%s/hltdqm_e%4.4dr%6.6d.root", m_hltdir.c_str(), m_expno, m_runno);
115 TFile* dqmtfile =
new TFile(outfile,
"RECREATE");
116 printf(
"HLT dqm file = %s\n", outfile);
119 TIter next(hlttmem->GetListOfKeys());
121 while ((key = (TKey*)next())) {
122 TH1* hist = (TH1*)key->ReadObj();
123 printf(
"HistTitle %s : entries = %f\n", hist->GetName(), hist->GetEntries());
124 TH1* cpyhst = (TH1*)hist->Clone();
133 }
else if (proc1 < 0) {
134 perror(
"DQMMASTER : fork HLTDQM writing");
141 sprintf(outfile,
"%s/erecodqm_e%4.4dr%6.6d.root", m_erecodir.c_str(), m_expno, m_runno);
143 TFile* erdqmtfile =
new TFile(outfile,
"RECREATE");
144 printf(
"ERECO dqm file = %s\n", outfile);
147 TIter ernext(erecotmem->GetListOfKeys());
149 while ((erkey = (TKey*)ernext())) {
150 TH1* hist = (TH1*)erkey->ReadObj();
151 printf(
"HistTitle %s : entries = %f\n", hist->GetName(), hist->GetEntries());
152 TH1* cpyhst = (TH1*)hist->Clone();
161 }
else if (proc2 < 0) {
162 perror(
"DQMMASTER : fork ERECODQM writing");
166 int status1, status2;
167 waitpid(proc1, &status1, 0);
168 waitpid(proc2, &status2, 0);
174 void DqmMasterCallback::abort()