90 TIter next_run(f->GetListOfKeys());
92 while ((key_run =
dynamic_cast<TKey*
> (next_run())) != 0) {
93 if (!key_run->IsFolder())
continue;
94 run_dir = key_run->GetName();
95 if (run_dir.find(
"run") == std::string::npos) {
101 std::string jetmon_dir = run_dir +
"/HLT/JetMon";
104 std::string akt4topo_dir = jetmon_dir +
"/AntiKt4TopoJets/TrigEff";
108 if (!(dir = f->GetDirectory(akt4topo_dir.c_str()))) {
109 std::cerr <<
"--> HLTJetCalcEfficiencyAndRate: directory " << akt4topo_dir <<
" not found." << std::endl;
119 std::string snum, sden, hnumname;
120 for (
const std::string& item : TrigItems) {
121 for (
const std::string& eff : effobs) {
122 hnumname = item + eff +
"_num";
123 snum = akt4topo_dir +
"/" + hnumname;
124 sden = akt4topo_dir +
"/" + item + eff +
"_den";
133 if (f->Get(snum.c_str()) && f->Get(sden.c_str())) {
134 hnum =
dynamic_cast<TH1F*
>(f->Get(snum.c_str()));
136 std::cerr<<
"MonitoringFile::HLTJetCalcEfficiencyAndRate: Dynamic cast of hnum failed"<<std::endl;
140 hden =
dynamic_cast<TH1F*
>(f->Get(sden.c_str()));
142 std::cerr<<
"MonitoringFile::HLTJetCalcEfficiencyAndRate: Dynamic cast of hden failed"<<std::endl;
156 hnum->Divide(hnum, hden, 1., 1.,
"B");
159 hnum->Write(
"", TObject::kOverwrite);
217 if (hnum == 0 || hden == 0)
return -1;
219 Int_t nbins_num = hnum->GetNbinsX();
220 Int_t nbins_den = hden->GetNbinsX();
222 if (nbins_num != nbins_den)
return -2;
224 if (hden->GetEntries() == 0)
return -3;
227 for (Int_t i = -1; i <= nbins_num; ++i) {
228 float n = hden->GetBinContent(i);
229 if (n == 0)
continue;
230 float k = hnum->GetBinContent(i);
231 if (k < 0 || n < 0) {
233 <<
" for histograms " << hnum->GetName() <<
" , " << hden->GetName() << std::endl;
236 float num1 = (k + 1) * (k + 2);
237 float den1 = (n + 2) * (n + 3);
238 float num2 = (k + 1) * (k + 1);
239 float den2 = (n + 2) * (n + 2);
240 float variance = num1 / den1 - num2 / den2;
241 float err = sqrt(variance);
242 errors.push_back(err);
244 Int_t num_err = (Int_t) errors.size();
246 if (num_err != nbins_num) retval = -4;