14 #include <dqm/analysis/modules/DQMHistAnalysisOutputFile.h>
36 addParam(
"HistoFile", m_filename,
"Output Histogram Filename", std::string(
"histo.root"));
37 addParam(
"histogramDirectoryName", m_histogramDirectoryName,
"Name of the directory where histograms will be placed",
39 addParam(
"SaveHistos", m_saveHistos,
"Save Histos (default)",
true);
40 addParam(
"SaveCanvases", m_saveCanvases,
"Save Canvases (not default)",
false);
41 B2DEBUG(20,
"DQMHistAnalysisOutputFile: Constructor done.");
45 DQMHistAnalysisOutputFileModule::~DQMHistAnalysisOutputFileModule() { }
47 void DQMHistAnalysisOutputFileModule::initialize()
49 B2DEBUG(20,
"DQMHistAnalysisOutputFile: initialized.");
53 void DQMHistAnalysisOutputFileModule::beginRun()
55 B2DEBUG(20,
"DQMHistAnalysisOutputFile: beginRun called.");
59 void DQMHistAnalysisOutputFileModule::event()
61 B2DEBUG(20,
"DQMHistAnalysisOutputFile: event called.");
64 void DQMHistAnalysisOutputFileModule::endRun()
66 B2INFO(
"DQMHistAnalysisOutputFile: endRun called");
70 TFile f(m_filename.data(),
"recreate");
72 TDirectory* oldDir = gDirectory;
73 oldDir->mkdir(m_histogramDirectoryName.c_str());
74 oldDir->cd(m_histogramDirectoryName.c_str());
79 seq = gROOT->GetListOfCanvases() ;
81 B2INFO(
"found canvases");
85 while ((obj = (TObject*)next())) {
86 if (obj->InheritsFrom(
"TCanvas")) {
87 B2INFO(
"Canvas name: " << obj->GetName() <<
" title " << obj->GetTitle());
90 B2INFO(
"Others name: " << obj->GetName() <<
" title " << obj->GetTitle());
96 TSeqCollection* files;
97 files = gROOT->GetListOfFiles() ;
100 TIter nextfile(files) ;
103 while ((file = (TObject*)nextfile())) {
104 if (file->InheritsFrom(
"TFile")) {
105 B2INFO(
"File name: " << file->GetName() <<
" title " << file->GetTitle());
106 if (file == &f || file->GetName() == m_filename)
continue;
108 TList* list = ((TFile*)file)->GetListOfKeys() ;
114 while ((key = (TKey*)next())) {
115 TString skey(key->GetClassName());
116 if (skey.BeginsWith(TString(
"Belle2::")))
continue;
117 TClass clkey(key->GetClassName());
118 if (clkey.InheritsFrom(
"TH1")) {
119 obj = key->ReadObj() ;
120 B2INFO(
"Histo name: " << obj->GetName() <<
" title " << obj->GetTitle());
122 d = old = gDirectory;
123 TString myl = obj->GetName();
130 while (myl.Tokenize(tok, from,
"/")) {
134 if (myl.Tokenize(dummy, fr,
"/")) {
135 auto e = d->GetDirectory(tok);
148 ((TH1*)obj)->SetName(tok);
155 B2INFO(
"Others name: " << file->GetName() <<
" title " << file->GetTitle());
168 void DQMHistAnalysisOutputFileModule::terminate()
170 B2INFO(
"DQMHistAnalysisOutputFile: terminate called");
The base class for the histogram analysis module.
Class definition for the output module of Sequential ROOT I/O.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.