11 #include <dqm/analysis/modules/DQMHistAnalysisOutputFile.h>
33 addParam(
"HistoFile", m_filename,
"Output Histogram Filename", std::string(
"histo.root"));
34 addParam(
"histogramDirectoryName", m_histogramDirectoryName,
"Name of the directory where histograms will be placed",
36 addParam(
"SaveHistos", m_saveHistos,
"Save Histos (default)",
true);
37 addParam(
"SaveCanvases", m_saveCanvases,
"Save Canvases (not default)",
false);
38 B2DEBUG(20,
"DQMHistAnalysisOutputFile: Constructor done.");
42 DQMHistAnalysisOutputFileModule::~DQMHistAnalysisOutputFileModule() { }
44 void DQMHistAnalysisOutputFileModule::initialize()
46 B2DEBUG(20,
"DQMHistAnalysisOutputFile: initialized.");
50 void DQMHistAnalysisOutputFileModule::beginRun()
52 B2DEBUG(20,
"DQMHistAnalysisOutputFile: beginRun called.");
56 void DQMHistAnalysisOutputFileModule::event()
58 B2DEBUG(20,
"DQMHistAnalysisOutputFile: event called.");
61 void DQMHistAnalysisOutputFileModule::endRun()
63 B2INFO(
"DQMHistAnalysisOutputFile: endRun called");
67 TFile f(m_filename.data(),
"recreate");
69 TDirectory* oldDir = gDirectory;
70 oldDir->mkdir(m_histogramDirectoryName.c_str());
71 oldDir->cd(m_histogramDirectoryName.c_str());
76 seq = gROOT->GetListOfCanvases() ;
78 B2INFO(
"found canvases");
82 while ((obj = (TObject*)next())) {
83 if (obj->InheritsFrom(
"TCanvas")) {
84 B2INFO(
"Canvas name: " << obj->GetName() <<
" title " << obj->GetTitle());
87 B2INFO(
"Others name: " << obj->GetName() <<
" title " << obj->GetTitle());
93 TSeqCollection* files;
94 files = gROOT->GetListOfFiles() ;
97 TIter nextfile(files) ;
100 while ((file = (TObject*)nextfile())) {
101 if (file->InheritsFrom(
"TFile")) {
102 B2INFO(
"File name: " << file->GetName() <<
" title " << file->GetTitle());
103 if (file == &f || file->GetName() == m_filename)
continue;
105 TList* list = ((TFile*)file)->GetListOfKeys() ;
111 while ((key = (TKey*)next())) {
112 TString skey(key->GetClassName());
113 if (skey.BeginsWith(TString(
"Belle2::")))
continue;
114 TClass clkey(key->GetClassName());
115 if (clkey.InheritsFrom(
"TH1")) {
116 obj = key->ReadObj() ;
117 B2INFO(
"Histo name: " << obj->GetName() <<
" title " << obj->GetTitle());
119 d = old = gDirectory;
120 TString myl = obj->GetName();
127 while (myl.Tokenize(tok, from,
"/")) {
131 if (myl.Tokenize(dummy, fr,
"/")) {
132 auto e = d->GetDirectory(tok);
145 ((TH1*)obj)->SetName(tok);
152 B2INFO(
"Others name: " << file->GetName() <<
" title " << file->GetTitle());
165 void DQMHistAnalysisOutputFileModule::terminate()
167 B2INFO(
"DQMHistAnalysisOutputFile: terminate called");