33 LogDebug(
"HltSusyExoPostProcessor") <<
"Start dqmEndJob";
43 LogDebug(
"HltSusyExoPostProcessor") <<
"DQMStore cd";
56 int nL1bins = (iGetter_.
get(iBooker_.
pwd() + triggerBitsDir +
"/L1Bits")->getNbinsX());
57 int nHltbins = (iGetter_.
get(iBooker_.
pwd() + triggerBitsDir +
"/HltBits")->getNbinsX());
59 std::vector<int> L1placement;
60 L1placement.reserve(nL1bins - 1 *
mcFlag);
61 for (
int i = 0;
i < nL1bins - 1 *
mcFlag; ++
i)
62 L1placement.push_back(6);
63 std::vector<int> Hltplacement;
64 Hltplacement.reserve(nHltbins - 1 *
mcFlag);
65 for (
int i = 0;
i < nHltbins - 1 *
mcFlag; ++
i)
66 Hltplacement.push_back(7);
68 for (
unsigned int i = 0;
i <
sizeof(L1bins) /
sizeof(L1bins[0]); ++
i)
71 for (
unsigned int i = 0;
i <
sizeof(Hltbins) /
sizeof(Hltbins[0]); ++
i)
73 string L1search[8] = {
"Mu",
"EG",
"Jet",
"ET",
"TauJet",
"X",
""};
74 string L1search3 =
"HTT", L1search6 =
"Bias";
75 string Hltsearch[8] = {
"Mu",
"Ele",
"Jet",
"Photon",
"MET",
"Tau",
"X",
""};
76 string Hltsearch4 =
"HT", Hltsearch5 =
"BTag", Hltsearch6_1 =
"EG", Hltsearch6_2 =
"ET", Hltsearch7_1 =
"Bias",
77 Hltsearch7_2 =
"AlCa";
79 LogDebug(
"HltSusyExoPostProcessor") <<
"number of L1 bins = " << nL1bins <<
" number of HLT bins = " << nHltbins;
87 TH1F *hHltPaths = iGetter_.
get(
subDir_ + triggerBitsDir +
"/HltPaths")->
getTH1F();
90 LogDebug(
"HltSusyExoPostProcessor") <<
"MonitorElements booked";
93 float nTotalBeforeCuts = -1;
94 int reference_bin = -1;
97 reference_bin = nL1bins;
99 for (
int i = 0;
i < nHltbins; ++
i) {
100 string triggername = ((TProfile *)hHltEffBeforeCuts->
getTProfile())->GetXaxis()->GetBinLabel(
i + 1);
101 string eff_search =
"HLT_ZeroBias";
102 if (triggername.find(eff_search) != string::npos && triggername.size() == eff_search.size()) {
103 nTotalBeforeCuts = ((TProfile *)hHltEffBeforeCuts->
getTProfile())->GetBinContent(
i + 1);
104 reference_bin =
i + 1;
108 if (nTotalBeforeCuts == -1) {
110 reference_bin = nHltbins;
113 LogDebug(
"HltSusyExoPostProcessor") <<
"Total number of events = " << nTotalBeforeCuts;
116 for (
int i = 0;
i < nL1bins - 1 *
mcFlag;
i++) {
125 string triggername = ((TProfile *)hL1EffBeforeCuts->
getTProfile())->GetXaxis()->GetBinLabel(
i + 1);
126 if (triggername.find(L1search6) == string::npos) {
127 for (
unsigned int j = 0;
j <
sizeof(L1search) /
sizeof(L1search[0]) - 2; ++
j) {
128 if (triggername.find(L1search[
j]) != string::npos || (
j == 3 && triggername.find(L1search3) != string::npos)) {
129 if (L1placement[
i] == 6)
131 else if (L1placement[
i] == 2 &&
j == 4)
135 }
else if (triggername.empty() || triggername.find(
"Total") != string::npos)
141 for (
unsigned int i = 0;
i < L1placement.size(); ++
i)
142 if (L1placement[
i] != -1)
143 ++L1bins[L1placement[
i]];
145 for (
int i = 0;
i < nHltbins - 1 *
mcFlag;
i++) {
154 string triggername = ((TProfile *)hHltEffBeforeCuts->
getTProfile())->GetXaxis()->GetBinLabel(
i + 1);
155 if (triggername.find(Hltsearch7_1) == string::npos && triggername.find(Hltsearch7_2) == string::npos) {
156 for (
unsigned int j = 0;
j <
sizeof(Hltsearch) /
sizeof(Hltsearch[0]) - 2; ++
j) {
157 if (triggername.find(Hltsearch[
j]) != string::npos ||
158 (
j == 4 && triggername.find(Hltsearch4) != string::npos) ||
159 (
j == 5 && triggername.find(Hltsearch5) != string::npos)) {
160 if (Hltplacement[
i] == 7)
162 else if (triggername.find(Hltsearch5) != string::npos)
166 }
else if (triggername.empty() || triggername.find(
"Total") != string::npos)
167 Hltplacement[
i] = -1;
169 if (Hltplacement[
i] >= 0 && Hltplacement[
i] <= 5 &&
170 (triggername.find(Hltsearch6_1) != string::npos ||
171 (triggername.find(Hltsearch6_2) != string::npos && Hltplacement[
i] != 4)))
176 for (
unsigned int i = 0;
i < Hltplacement.size(); ++
i)
177 if (Hltplacement[
i] != -1)
178 ++Hltbins[Hltplacement[
i]];
180 LogDebug(
"HltSusyExoPostProcessor") <<
"MonitorElements filled";
185 iBooker_.
bookProfile(
"L1_Mu",
new TProfile(
"L1_Mu",
"Efficiencies of L1 Muon Triggers", L1bins[0], 0, L1bins[0])),
186 iBooker_.
bookProfile(
"L1_EG",
new TProfile(
"L1_EG",
"Efficiencies of L1 EG Triggers", L1bins[1], 0, L1bins[1])),
188 new TProfile(
"L1_Jet",
"Efficiencies of L1 Jet Triggers", L1bins[2], 0, L1bins[2])),
191 new TProfile(
"L1_ETM_ETT_HTT",
"Efficiencies of L1 ETM, ETT, and HTT Triggers", L1bins[3], 0, L1bins[3])),
193 new TProfile(
"L1_TauJet",
"Efficiencies of L1 TauJet Triggers", L1bins[4], 0, L1bins[4])),
195 new TProfile(
"L1_XTrigger",
"Efficiencies of L1 Cross Triggers", L1bins[5], 0, L1bins[5])),
197 "L1_Overflow",
new TProfile(
"L1_Overflow",
"Efficiencies of L1 Unsorted Triggers", L1bins[6], 0, L1bins[6]))};
201 new TProfile(
"Hlt_Mu",
"Efficiencies of HL Muon Triggers", Hltbins[0], 0, Hltbins[0])),
203 new TProfile(
"Hlt_Ele",
"Efficiencies of HL Electron Triggers", Hltbins[1], 0, Hltbins[1])),
205 new TProfile(
"Hlt_Jet",
"Efficiencies of HL Jet Triggers", Hltbins[2], 0, Hltbins[2],
"s")),
207 new TProfile(
"Hlt_Photon",
"Efficiencies of HL Photon Triggers", Hltbins[3], 0, Hltbins[3])),
210 new TProfile(
"Hlt_MET_HT",
"Efficiencies of HL MET and HT Triggers", Hltbins[4], 0, Hltbins[4])),
213 new TProfile(
"Hlt_Tau_Btag",
"Efficiencies of HL Tau and BTag Triggers", Hltbins[5], 0, Hltbins[5])),
215 "Hlt_XTrigger",
new TProfile(
"Hlt_XTrigger",
"Efficiencies of HL Cross Triggers", Hltbins[6], 0, Hltbins[6])),
218 new TProfile(
"Hlt_Overflow",
"Efficiencies of HL Unsorted Triggers", Hltbins[7], 0, Hltbins[7]))};
221 for (
unsigned int i = 0;
i <
sizeof(L1bincounter) /
sizeof(L1bincounter[0]); ++
i)
223 int Hltbincounter[8];
224 for (
unsigned int i = 0;
i <
sizeof(Hltbincounter) /
sizeof(Hltbincounter[0]); ++
i)
225 Hltbincounter[
i] = 0;
226 TProfile *hL1_ = (TProfile *)hL1EffBeforeCuts->
getTProfile();
227 TProfile *hHlt_ = (TProfile *)hHltEffBeforeCuts->
getTProfile();
230 for (
unsigned int i = 0;
i < L1placement.size(); ++
i) {
231 if (L1placement[
i] != -1) {
232 hL1EffSorted[L1placement[
i]]->
setBinLabel(L1bincounter[L1placement[
i]] + 1, hL1_->GetXaxis()->GetBinLabel(
i + 1));
233 hL1EffSorted[L1placement[
i]]->
setBinContent(L1bincounter[L1placement[
i]] + 1, hL1_->GetBinContent(
i + 1));
234 hL1EffSorted[L1placement[
i]]->
setBinEntries(L1bincounter[L1placement[
i]] + 1, 1);
235 hL1EffSorted[L1placement[
i]]->
setBinError(L1bincounter[L1placement[
i]] + 1, hL1_->GetBinError(
i + 1));
236 ++L1bincounter[L1placement[
i]];
239 for (
unsigned int i = 0;
i < Hltplacement.size(); ++
i) {
240 if (Hltplacement[
i] != -1) {
241 hHltEffSorted[Hltplacement[
i]]->
setBinLabel(Hltbincounter[Hltplacement[
i]] + 1,
242 hHlt_->GetXaxis()->GetBinLabel(
i + 1));
243 hHltEffSorted[Hltplacement[
i]]->
setBinContent(Hltbincounter[Hltplacement[
i]] + 1, hHlt_->GetBinContent(
i + 1));
244 hHltEffSorted[Hltplacement[
i]]->
setBinEntries(Hltbincounter[Hltplacement[
i]] + 1, 1);
245 hHltEffSorted[Hltplacement[
i]]->
setBinError(Hltbincounter[Hltplacement[
i]] + 1, hHlt_->GetBinError(
i + 1));
246 ++Hltbincounter[Hltplacement[
i]];
250 for (
unsigned int i = 0;
i <
mc_dirs.size(); ++
i) {
254 char set_name_L1[256], set_name_Hlt[256];
255 sprintf(set_name_L1,
"L1Eff_%s",
mc_dirs[
i].c_str());
256 sprintf(set_name_Hlt,
"HltEff_%s",
mc_dirs[
i].c_str());
261 hL1EffAfterMcCuts->
setTitle(
"L1 Efficiencies for " +
mc_dirs[
i] +
" selection");
266 hHltEffAfterMcCuts->
setTitle(
"HLT Efficiencies for " +
mc_dirs[
i] +
" selection");
268 LogDebug(
"HltSusyExoPostProcessor") <<
"MonitorElements for " <<
mc_dirs[
i] <<
" selection booked";
271 float nTotalAfterMcCuts;
279 LogDebug(
"HltSusyExoPostProcessor") <<
"Total number of events = " << nTotalAfterMcCuts;
283 char buffer1[256], buffer2[256];
284 string L1_nametags[7] = {
"Mu",
"EG",
"Jet",
"ETM_ETT_HTT",
"TauJet",
"XTrigger",
"Overflow"};
285 string L1_titletags[7] = {
"Muon",
"EG",
"Jet",
"ETM, ETT, and HTT",
"TauJet",
"Cross",
"Unsorted"};
286 string Hlt_nametags[8] = {
"Mu",
"Ele",
"Jet",
"Photon",
"MET_HT",
"Tau_BTag",
"XTrigger",
"Overflow"};
287 string Hlt_titletags[8] = {
"Muon",
"Electron",
"Jet",
"Photon",
"MET and HT",
"Tau and BTag",
"Cross",
"Unsorted"};
288 for (
unsigned int j = 0;
j <
sizeof(hL1EffSorted_mc) /
sizeof(hL1EffSorted_mc[0]); ++
j) {
289 sprintf(buffer1,
"L1_%s_%s",
mc_dirs[
i].c_str(), L1_nametags[
j].c_str());
290 sprintf(buffer2,
"Efficiencies of L1 %s Triggers for %s Selection", L1_titletags[
j].c_str(),
mc_dirs[
i].c_str());
291 hL1EffSorted_mc[
j] = iBooker_.
bookProfile(buffer1,
new TProfile(buffer1, buffer2, L1bins[
j], 0, L1bins[
j]));
293 for (
unsigned int j = 0;
j <
sizeof(hHltEffSorted_mc) /
sizeof(hHltEffSorted_mc[0]); ++
j) {
294 sprintf(buffer1,
"Hlt_%s_%s",
mc_dirs[
i].c_str(), Hlt_nametags[
j].c_str());
295 sprintf(buffer2,
"Efficiencies of HL %s Triggers for %s Selection", Hlt_titletags[
j].c_str(),
mc_dirs[
i].c_str());
296 hHltEffSorted_mc[
j] = iBooker_.
bookProfile(buffer1,
new TProfile(buffer1, buffer2, Hltbins[
j], 0, Hltbins[
j]));
300 int L1bincounter_mc[8];
301 for (
unsigned int j = 0;
j <
sizeof(L1bincounter_mc) /
sizeof(L1bincounter_mc[0]); ++
j)
302 L1bincounter_mc[
j] = 0;
303 int Hltbincounter_mc[8];
304 for (
unsigned int j = 0;
j <
sizeof(Hltbincounter_mc) /
sizeof(Hltbincounter_mc[0]); ++
j)
305 Hltbincounter_mc[
j] = 0;
306 TProfile *hL1_mc = (TProfile *)hL1EffAfterMcCuts->
getTProfile();
307 TProfile *hHlt_mc = (TProfile *)hHltEffAfterMcCuts->
getTProfile();
308 for (
unsigned int j = 0;
j < L1placement.size();
j++) {
309 value = nTotalAfterMcCuts
318 if (L1placement[
j] != -1) {
319 hL1EffSorted_mc[L1placement[
j]]->
setBinLabel(L1bincounter_mc[L1placement[
j]] + 1,
320 hL1_mc->GetXaxis()->GetBinLabel(
j + 1));
321 hL1EffSorted_mc[L1placement[
j]]->
setBinContent(L1bincounter_mc[L1placement[
j]] + 1,
322 hL1_mc->GetBinContent(
j + 1));
323 hL1EffSorted_mc[L1placement[
j]]->
setBinEntries(L1bincounter_mc[L1placement[
j]] + 1, 1);
324 hL1EffSorted_mc[L1placement[
j]]->
setBinError(L1bincounter_mc[L1placement[
j]] + 1, hL1_mc->GetBinError(
j + 1));
325 ++L1bincounter_mc[L1placement[
j]];
328 if (nL1bins !=
int(L1placement.size())) {
329 value = nTotalAfterMcCuts
339 for (
unsigned int j = 0;
j < Hltplacement.size();
j++) {
340 value = nTotalAfterMcCuts
349 if (Hltplacement[
j] != -1) {
350 hHltEffSorted_mc[Hltplacement[
j]]->
setBinLabel(Hltbincounter_mc[Hltplacement[
j]] + 1,
351 hHlt_mc->GetXaxis()->GetBinLabel(
j + 1));
352 hHltEffSorted_mc[Hltplacement[
j]]->
setBinContent(Hltbincounter_mc[Hltplacement[
j]] + 1,
353 hHlt_mc->GetBinContent(
j + 1));
354 hHltEffSorted_mc[Hltplacement[
j]]->
setBinEntries(Hltbincounter_mc[Hltplacement[
j]] + 1, 1);
355 hHltEffSorted_mc[Hltplacement[
j]]->
setBinError(Hltbincounter_mc[Hltplacement[
j]] + 1,
356 hHlt_mc->GetBinError(
j + 1));
357 ++Hltbincounter_mc[Hltplacement[
j]];
360 if (nHltbins !=
int(Hltplacement.size())) {
361 value = nTotalAfterMcCuts
371 LogDebug(
"HltSusyExoPostProcessor") <<
"MonitorElements filled for " <<
mc_dirs[
i] <<
" selection";
378 char set_name_L1[256], set_name_Hlt[256];
379 sprintf(set_name_L1,
"L1Eff_%s",
reco_dirs[
i].c_str());
380 sprintf(set_name_Hlt,
"HltEff_%s",
reco_dirs[
i].c_str());
390 hHltEffAfterRecoCuts->
setTitle(
"HLT Efficiencies for " +
reco_dirs[
i] +
" selection");
392 LogDebug(
"HltSusyExoPostProcessor") <<
"MonitorElements for " <<
reco_dirs[
i] <<
" selection booked";
395 float nTotalAfterRecoCuts;
403 LogDebug(
"HltSusyExoPostProcessor") <<
"Total number of events = " << nTotalAfterRecoCuts;
407 char buffer1[256], buffer2[256];
408 string L1_nametags[7] = {
"Mu",
"EG",
"Jet",
"ETM_ETT_HTT",
"TauJet",
"XTrigger",
"Overflow"};
409 string L1_titletags[7] = {
"Muon",
"EG",
"Jet",
"ETM, ETT, and HTT",
"TauJet",
"Cross",
"Unsorted"};
410 string Hlt_nametags[8] = {
"Mu",
"Ele",
"Jet",
"Photon",
"MET_HT",
"Tau_BTag",
"XTrigger",
"Overflow"};
411 string Hlt_titletags[8] = {
"Muon",
"Electron",
"Jet",
"Photon",
"MET and HT",
"Tau and BTag",
"Cross",
"Unsorted"};
412 for (
unsigned int j = 0;
j <
sizeof(hL1EffSorted_reco) /
sizeof(hL1EffSorted_reco[0]); ++
j) {
413 sprintf(buffer1,
"L1_%s_%s",
reco_dirs[
i].c_str(), L1_nametags[
j].c_str());
415 buffer2,
"Efficiencies of L1 %s Triggers for %s Selection", L1_titletags[
j].c_str(),
reco_dirs[
i].c_str());
416 hL1EffSorted_reco[
j] = iBooker_.
bookProfile(buffer1,
new TProfile(buffer1, buffer2, L1bins[
j], 0, L1bins[
j]));
418 for (
unsigned int j = 0;
j <
sizeof(hHltEffSorted_reco) /
sizeof(hHltEffSorted_reco[0]); ++
j) {
419 sprintf(buffer1,
"Hlt_%s_%s",
reco_dirs[
i].c_str(), Hlt_nametags[
j].c_str());
421 buffer2,
"Efficiencies of HL %s Triggers for %s Selection", Hlt_titletags[
j].c_str(),
reco_dirs[
i].c_str());
422 hHltEffSorted_reco[
j] = iBooker_.
bookProfile(buffer1,
new TProfile(buffer1, buffer2, Hltbins[
j], 0, Hltbins[
j]));
426 int L1bincounter_reco[8];
427 for (
unsigned int j = 0;
j <
sizeof(L1bincounter_reco) /
sizeof(L1bincounter_reco[0]); ++
j)
428 L1bincounter_reco[
j] = 0;
429 int Hltbincounter_reco[8];
430 for (
unsigned int j = 0;
j <
sizeof(Hltbincounter_reco) /
sizeof(Hltbincounter_reco[0]); ++
j)
431 Hltbincounter_reco[
j] = 0;
432 TProfile *hL1_reco = (TProfile *)hL1EffAfterRecoCuts->
getTProfile();
433 TProfile *hHlt_reco = (TProfile *)hHltEffAfterRecoCuts->
getTProfile();
434 for (
unsigned int j = 0;
j < L1placement.size();
j++) {
435 value = nTotalAfterRecoCuts
444 if (L1placement[
j] != -1) {
445 hL1EffSorted_reco[L1placement[
j]]->
setBinLabel(L1bincounter_reco[L1placement[
j]] + 1,
446 hL1_reco->GetXaxis()->GetBinLabel(
j + 1));
447 hL1EffSorted_reco[L1placement[
j]]->
setBinContent(L1bincounter_reco[L1placement[
j]] + 1,
448 hL1_reco->GetBinContent(
j + 1));
449 hL1EffSorted_reco[L1placement[
j]]->
setBinEntries(L1bincounter_reco[L1placement[
j]] + 1, 1);
450 hL1EffSorted_reco[L1placement[
j]]->
setBinError(L1bincounter_reco[L1placement[
j]] + 1,
451 hL1_reco->GetBinError(
j + 1));
452 ++L1bincounter_reco[L1placement[
j]];
455 if (nL1bins !=
int(L1placement.size())) {
456 value = nTotalAfterRecoCuts
466 for (
unsigned int j = 0;
j < Hltplacement.size();
j++) {
467 value = nTotalAfterRecoCuts
476 if (Hltplacement[
j] != -1) {
477 hHltEffSorted_reco[Hltplacement[
j]]->
setBinLabel(Hltbincounter_reco[Hltplacement[
j]] + 1,
478 hHlt_reco->GetXaxis()->GetBinLabel(
j + 1));
479 hHltEffSorted_reco[Hltplacement[
j]]->
setBinContent(Hltbincounter_reco[Hltplacement[
j]] + 1,
480 hHlt_reco->GetBinContent(
j + 1));
481 hHltEffSorted_reco[Hltplacement[
j]]->
setBinEntries(Hltbincounter_reco[Hltplacement[
j]] + 1, 1);
482 hHltEffSorted_reco[Hltplacement[
j]]->
setBinError(Hltbincounter_reco[Hltplacement[
j]] + 1,
483 hHlt_reco->GetBinError(
j + 1));
484 ++Hltbincounter_reco[Hltplacement[
j]];
487 if (nHltbins !=
int(Hltplacement.size())) {
488 value = nTotalAfterRecoCuts
498 LogDebug(
"HltSusyExoPostProcessor") <<
"MonitorElements filled";
501 int pt_bins = 100, eta_bins = 100;
502 double pt_floor = 0., pt_ceiling = 200., eta_floor = -3.5, eta_ceiling = 3.5;
505 "Pt_1_ByEvent",
"Turn on as a Function of P_{t}, |Eta|<1.2, By Event", pt_bins, pt_floor, pt_ceiling);
507 "Eta_1_ByEvent",
"Efficiency as a Function of Eta, P_{t}>0, By Event", eta_bins, eta_floor, eta_ceiling);
509 "Pt_2_ByEvent",
"Turn on as a Function of P_{t}, 1.2<|Eta|<2.1, By Event", pt_bins, pt_floor, pt_ceiling);
511 "Eta_2_ByEvent",
"Efficiency as a Function of Eta, P_{t}>10, By Event", eta_bins, eta_floor, eta_ceiling);
513 "Pt_3_ByEvent",
"Turn on as a Function of P_{t}, |Eta|>2.1, By Event", pt_bins, pt_floor, pt_ceiling);
515 "Eta_3_ByEvent",
"Efficiency as a Function of Eta, P_{t}>20, By Event", eta_bins, eta_floor, eta_ceiling);
518 "Pt_1_ByMuon",
"Turn on as a Function of P_{t}, |Eta|<1.2, By Muon", pt_bins, pt_floor, pt_ceiling);
520 "Eta_1_ByMuon",
"Efficiency as a Function of Eta, P_{t}>0, By Muon", eta_bins, eta_floor, eta_ceiling);
522 "Pt_2_ByMuon",
"Turn on as a Function of P_{t}, 1.2<|Eta|<2.1, By Muon", pt_bins, pt_floor, pt_ceiling);
524 "Eta_2_ByMuon",
"Efficiency as a Function of Eta, P_{t}>10, By Muon", eta_bins, eta_floor, eta_ceiling);
526 "Pt_3_ByMuon",
"Turn on as a Function of P_{t}, |Eta|>2.1, By Muon", pt_bins, pt_floor, pt_ceiling);
528 "Eta_3_ByMuon",
"Efficiency as a Function of Eta, P_{t}>20, By Muon", eta_bins, eta_floor, eta_ceiling);
574 for (
int i = 1;
i <= hEta_1_ByEvent->
getNbinsX(); ++
i) {