47 TH1::AddDirectory(
false);
49 B2DEBUG(1,
"DQMHistReference: reading references from input root file");
52 if (run_type ==
"") run_type =
"default";
54 B2INFO(
"DQMHistReference: run_type " << run_type);
58 if (refFile->IsZombie()) {
59 B2INFO(
"DQMHistReference: reference file " <<
m_referenceFileName <<
" does not exist. No references will be used!");
67 TIter nextRefDirKey(refFile->GetListOfKeys());
69 while ((refDirKey = (TKey*)nextRefDirKey())) {
70 if (refDirKey->IsFolder() &&
string(refDirKey->GetName()) ==
string(
"ref")) {
71 TDirectory* refDir = (TDirectory*)refDirKey->ReadObj();
72 TIter nextDetDirKey(refDir->GetListOfKeys());
75 while ((detDirKey = (TKey*)nextDetDirKey())) {
76 if (!detDirKey->IsFolder())
continue;
77 TDirectory* detDir = ((TDirectory*)detDirKey->ReadObj());
78 TIter nextRunTypeDirKey(detDir->GetListOfKeys());
80 TDirectory* runtypeDir =
nullptr;
82 while ((runtypeDirKey = (TKey*)nextRunTypeDirKey())) {
83 if (!runtypeDirKey->IsFolder())
continue;
84 if (
string(runtypeDirKey->GetName()) == run_type) {
85 if (runtypeDir)
delete runtypeDir;
86 runtypeDir = (TDirectory*)runtypeDirKey->ReadObj();
90 if (
string(runtypeDirKey->GetName()) ==
"default") runtypeDir = (TDirectory*)runtypeDirKey->ReadObj();
92 string detName = detDir->GetName();
95 B2INFO(
"No run type specific or default references available for " << detName);
97 B2INFO(
"Reading reference histograms for " << detName <<
" from run type folder: " << runtypeDir->GetName());
99 TIter nextHistkey(runtypeDir->GetListOfKeys());
102 while ((histKey = (TKey*)nextHistkey())) {
103 if (histKey->IsFolder())
continue;
104 if (gROOT->GetClass(histKey->GetClassName())->InheritsFrom(
"TH1")) {
105 addRefHist(detName, (TH1*)histKey->ReadObj());
116 B2INFO(
"DQMHistReference: read references done");
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.