31 TFile* f = TFile::Open(inFilename.c_str(),
"READ");
34 if (f == 0 || !f->IsOpen()) {
49 if (f->GetSize() < 1000.) {
56 TIter next_run(f->GetListOfKeys());
58 std::string minbiasmonDirName;
60 std::vector< std::pair<std::string, std::string> >* v_targetNames =
new std::vector< std::pair<std::string, std::string> >(0);
64 while ((key_run =
dynamic_cast<TKey*
>(next_run())) != 0) {
65 TObject* obj_run = key_run->ReadObj();
66 TDirectory* tdir_run =
dynamic_cast<TDirectory*
>(obj_run);
75 std::string runDirName(tdir_run->GetName());
78 if (runDirName.find(
"run") == std::string::npos) {
84 minbiasmonDirName = runDirName +
"/HLT/MinBiasMon";
85 TDirectory* minbiasmonDir(0);
86 if (!(minbiasmonDir = f->GetDirectory(minbiasmonDirName.c_str()))) {
97 f = TFile::Open(inFilename.c_str(),
"UPDATE");
99 const std::string repPath = std::string(f->GetPath());
102 f->cd(minbiasmonDirName.c_str());
104 TH1F* h_triggEffic =
dynamic_cast<TH1F*
>(gDirectory->Get(
"TriggerEfficiencies"));
105 TH1F* h_triggEfficPass =
dynamic_cast<TH1F*
>(gDirectory->Get(
"TriggerEfficienciesPassed"));
106 TH1F* h_triggEfficAll =
dynamic_cast<TH1F*
>(gDirectory->Get(
"TriggerEfficienciesAll"));
107 if (!h_triggEffic or !h_triggEfficPass or !h_triggEfficAll) {
108 std::cerr <<
"Dynamic cast failed in MonitoringFile::HLTMinBiasMonPostProcess\n";
111 delete v_targetNames;
115 h_triggEffic->Divide(h_triggEfficPass, h_triggEfficAll, 1., 1.,
"B");
116 h_triggEffic->GetYaxis()->SetRangeUser(0., 1.2);
117 h_triggEffic->Write(
"", TObject::kOverwrite);
119 for (
uint k = 0; k < v_targetNames->size(); k++) {
120 TString stmp = v_targetNames->at(k).first;
121 stmp.ReplaceAll(repPath,
"");
122 v_targetNames->at(k).first = stmp.Data();
124 f->cd(v_targetNames->at(k).first.c_str());
126 TH1F* h_target =
dynamic_cast<TH1F*
>(gDirectory->Get(v_targetNames->at(k).second.c_str()));
127 TH1F* h_num =
dynamic_cast<TH1F*
>(gDirectory->Get((v_targetNames->at(k).second +
"Passed").c_str()));
128 TH1F* h_den =
dynamic_cast<TH1F*
>(gDirectory->Get((v_targetNames->at(k).second +
"All").c_str()));
130 if (h_target != 0 && h_num != 0 && h_den != 0) {
131 h_target->Divide(h_num, h_den, 1., 1.,
"B");
132 h_target->GetYaxis()->SetRangeUser(0., 1.2);
133 h_target->Write(
"", TObject::kOverwrite);
136 v_targetNames->clear();
137 delete v_targetNames;
145 std::string > >& targetNames)
148 TIter nextkey(source->GetListOfKeys());
150 while ((key = (TKey*) nextkey())) {
151 const char* classname = key->GetClassName();
152 TClass* cl = gROOT->GetClass(classname);
154 if (cl->InheritsFrom(TDirectory::Class())) {
155 source->cd(key->GetName());
156 TDirectory* nextdir = gDirectory;
159 if (cl->InheritsFrom(TH1F::Class())) {
160 std::string cRatio = std::string(key->GetName());
161 if (cRatio ==
"Efficiency" ||
162 cRatio ==
"Purity" ||
163 cRatio ==
"EfficienciesTrigger" ||
164 cRatio ==
"EfficiencyTracks" ||
166 "TriggerPurities") targetNames.push_back(std::pair<std::string, std::string>(std::string(gDirectory->GetPath()),
167 std::string(key->GetName())));