8 m_mcLabels = mc.getParameterNamesForType<std::vector<unsigned int>>();
13 HCALSpecialsNames[
HEP18] =
"HEP18";
14 HCALSpecialsNames[
HEM17] =
"HEM17";
28 for (
unsigned int ind = 0; ind <
hltPathNames_.size(); ind++) {
35 std::map<std::string, TH1F> effics;
36 std::map<std::string, bool> efficsOK;
37 std::map<std::string, std::map<HCALSpecials, TH1F>> efficsmod;
38 std::map<std::string, std::map<HCALSpecials, bool>> efficsmodOK;
45 GetNumDenumerators(ibooker, igetter, dqmFolder_hist +
"/" + label, dqmFolder_hist +
"/" + label, num, den, 0);
56 dqmFolder_hist +
"/" + j.second +
"/" + label,
57 dqmFolder_hist +
"/" + j.second +
"/" + label,
65 efficsmodOK[
flavour][j.first] = isOK;
72 label += flavour +
"_disc_pT";
73 labelEta += flavour +
"_disc_eta";
74 labelPhi += flavour +
"_disc_phi";
76 GetNumDenumerators(ibooker, igetter, dqmFolder_hist +
"/" + label, dqmFolder_hist +
"/" + label, num, den, 1);
82 ibooker, igetter, dqmFolder_hist +
"/" + labelEta, dqmFolder_hist +
"/" + labelEta, num, den, 2);
88 ibooker, igetter, dqmFolder_hist +
"/" + labelPhi, dqmFolder_hist +
"/" + labelPhi, num, den, 2);
96 if (efficsmodOK[flavour][
HEP17] && efficsmodOK[flavour][
HEM17])
99 &efficsmod[flavour][
HEP17],
100 &efficsmod[flavour][HEM17],
101 m_histoName.at(ind) +
"_" + flavour +
"_HEP17_HEM17_effs_vs_disc_rate");
107 if (efficsOK[
"b"] && efficsOK[
"c"])
109 if (efficsOK[
"b"] && efficsOK[
"light"])
110 mistagrate(ibooker, igetter, &effics[
"b"], &effics[
"light"],
m_histoName.at(ind) +
"_b_light_mistagrate");
111 if (efficsOK[
"b"] && efficsOK[
"g"])
117 if (efficsmodOK[
"b"][j.first] && efficsmodOK[
"c"][j.first])
120 &efficsmod[
"b"][j.first],
121 &efficsmod[
"c"][j.first],
123 if (efficsmodOK[
"b"][j.first] && efficsmodOK[
"light"][j.first])
126 &efficsmod[
"b"][j.first],
127 &efficsmod[
"light"][j.first],
129 if (efficsmodOK[
"b"][j.first] && efficsmodOK[
"g"][j.first])
132 &efficsmod[
"b"][j.first],
133 &efficsmod[
"g"][j.first],
142 dqmFolder_hist +
"/HEP17/efficiency/" +
m_histoName.at(ind) +
"_b_c_mistagrate",
143 dqmFolder_hist +
"/HEM17/efficiency/" +
m_histoName.at(ind) +
"_b_c_mistagrate",
148 modulesrate(ibooker, igetter, (TH1F *)num, (TH1F *)den,
m_histoName.at(ind) +
"_HEP17_HEM17_b_c_mistagrate");
151 dqmFolder_hist +
"/HEP17/efficiency/" +
m_histoName.at(ind) +
"_b_light_mistagrate",
152 dqmFolder_hist +
"/HEM17/efficiency/" +
m_histoName.at(ind) +
"_b_light_mistagrate",
157 modulesrate(ibooker, igetter, (TH1F *)num, (TH1F *)den,
m_histoName.at(ind) +
"_HEP17_HEM17_b_light_mistagrate");
160 dqmFolder_hist +
"/HEP17/efficiency/" +
m_histoName.at(ind) +
"_b_g_mistagrate",
161 dqmFolder_hist +
"/HEM17/efficiency/" +
m_histoName.at(ind) +
"_b_g_mistagrate",
166 modulesrate(ibooker, igetter, (TH1F *)num, (TH1F *)den,
m_histoName.at(ind) +
"_HEP17_HEM17_b_g_mistagrate");
187 denME = igetter.
get(den);
188 numME = igetter.
get(num);
191 if (denME ==
nullptr || numME ==
nullptr) {
192 excp <<
"Plots not found:\n";
193 if (denME ==
nullptr)
195 if (numME ==
nullptr)
203 TH1 *numH1 = numME->
getTH1();
204 TH1 *denH1 = denME->
getTH1();
205 ptrden = (TH1 *)denH1->Clone(
"denominator");
206 ptrnum = (TH1 *)numH1->Clone(
"numerator");
208 ptrnum->SetBinContent(1, numH1->Integral());
209 ptrden->SetBinContent(1, numH1->Integral());
210 for (
int j = 2; j <= numH1->GetNbinsX(); j++) {
211 ptrnum->SetBinContent(j, numH1->Integral() - numH1->Integral(1, j - 1));
212 ptrden->SetBinContent(j, numH1->Integral());
220 TH2F *numH2 = numME->
getTH2F();
221 TH2F *denH2 = denME->
getTH2F();
224 TCutG *cutg_num =
new TCutG(
"cutg_num", 4);
226 cutg_num->SetPoint(1,
m_minTag, 9999);
227 cutg_num->SetPoint(2, 1.1, 9999);
228 cutg_num->SetPoint(3, 1.1, 0);
229 ptrnum = numH2->ProjectionY(
"numerator", 0, -1,
"[cutg_num]");
232 TCutG *cutg_den =
new TCutG(
"cutg_den", 4);
233 cutg_den->SetPoint(0, -10.1, 0);
234 cutg_den->SetPoint(1, -10.1, 9999);
235 cutg_den->SetPoint(2, 1.1, 9999);
236 cutg_den->SetPoint(3, 1.1, 0);
237 ptrden = denH2->ProjectionY(
"denumerator", 0, -1,
"[cutg_den]");
246 TH2F *numH2 = numME->
getTH2F();
247 TH2F *denH2 = denME->
getTH2F();
250 TCutG *cutg_num =
new TCutG(
"cutg_num", 4);
251 cutg_num->SetPoint(0,
m_minTag, -10);
252 cutg_num->SetPoint(1,
m_minTag, 10);
253 cutg_num->SetPoint(2, 1.1, 10);
254 cutg_num->SetPoint(3, 1.1, -10);
255 ptrnum = numH2->ProjectionY(
"numerator", 0, -1,
"[cutg_num]");
258 TCutG *cutg_den =
new TCutG(
"cutg_den", 4);
259 cutg_den->SetPoint(0, -10.1, -10);
260 cutg_den->SetPoint(1, -10.1, 10);
261 cutg_den->SetPoint(2, 1.1, 10);
262 cutg_den->SetPoint(3, 1.1, -10);
263 ptrden = denH2->ProjectionY(
"denumerator", 0, -1,
"[cutg_den]");
281 eff =
new TH1F(effName.c_str(), effName.c_str(), 100, 0, 1);
282 eff->SetTitle(effName.c_str());
283 eff->SetXTitle(
"b-effficiency");
284 eff->SetYTitle(
"mistag rate");
286 eff->SetLineColor(2);
287 eff->SetLineWidth(2);
288 eff->SetMarkerStyle(20);
289 eff->SetMarkerSize(0.8);
290 eff->GetYaxis()->SetRangeUser(0.001, 1.001);
291 eff->GetXaxis()->SetRangeUser(-0.001, 1.001);
292 eff->SetStats(kFALSE);
296 for (
int i = 1;
i <= num->GetNbinsX();
i++) {
297 double beff = num->GetBinContent(
i);
298 double miseff = den->GetBinContent(
i);
299 double miseffErr = den->GetBinError(
i);
300 int binX = eff->GetXaxis()->FindBin(beff);
301 if (eff->GetBinContent(binX) != 0)
303 eff->SetBinContent(binX, miseff);
304 eff->SetBinError(binX, miseffErr);
307 me = ibooker.
book1D(effName, eff);
317 TH1F *eff =
new TH1F(*num);
320 eff->SetTitle(effName.c_str());
321 eff->SetXTitle(num->GetXaxis()->GetTitle());
324 eff->SetLineColor(2);
325 eff->SetLineWidth(2);
326 eff->SetMarkerStyle(20);
327 eff->SetMarkerSize(0.8);
328 eff->GetYaxis()->SetRangeUser(0.001, 2.001);
330 eff->SetStats(kFALSE);
333 me = ibooker.
book1D(effName, eff);
344 if (num.GetXaxis()->GetXbins()->GetSize() == 0) {
345 eff = TH1F(effName.c_str(),
347 num.GetXaxis()->GetNbins(),
348 num.GetXaxis()->GetXmin(),
349 num.GetXaxis()->GetXmax());
351 eff = TH1F(effName.c_str(), effName.c_str(), num.GetXaxis()->GetNbins(), num.GetXaxis()->GetXbins()->GetArray());
353 eff.SetTitle(effName.c_str());
354 eff.SetXTitle(num.GetXaxis()->GetTitle());
355 eff.SetYTitle(
"Efficiency");
359 eff.SetMarkerStyle(20);
360 eff.SetMarkerSize(0.8);
361 eff.GetYaxis()->SetRangeUser(-0.001, 1.001);
362 for (
int i = 1;
i <= num.GetNbinsX();
i++) {
364 d = den.GetBinContent(
i);
365 n = num.GetBinContent(
i);
369 err =
std::max(e - TEfficiency::ClopperPearson(d, n, 0.683,
false),
370 TEfficiency::ClopperPearson(d, n, 0.683,
true) - e);
376 eff.SetBinContent(
i, e);
377 eff.SetBinError(
i, err);
381 me = ibooker.
book1D(effName, &eff);
~HLTBTagHarvestingAnalyzer() override
T getParameter(std::string const &) const
void dqmEndJob(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter) override
HLTBTagHarvestingAnalyzer(const edm::ParameterSet &)
std::map< HLTBTagHarvestingAnalyzer::HCALSpecials, std::string > HCALSpecialsNames
void modulesrate(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, TH1F *num, TH1F *den, std::string effName)
std::vector< std::string > m_histoName
TH1F calculateEfficiency1D(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, TH1 &num, TH1 &den, std::string name)
#define DEFINE_FWK_MODULE(type)
void setCurrentFolder(std::string const &fullpath)
std::vector< std::string > m_mcLabels
MonitorElement * book1D(Args &&...args)
MonitorElement * get(std::string const &path)
bool GetNumDenumerators(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, std::string num, std::string den, TH1 *&ptrnum, TH1 *&ptrden, int type)
std::vector< std::string > hltPathNames_
void mistagrate(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, TH1F *num, TH1F *den, std::string effName)