8 m_mcLabels = mc.getParameterNamesForType<std::vector<unsigned int> >();
28 dqmFolder_hist = Form(
"HLT/BTag/Discriminator/%s",
hltPathNames_[ind].c_str());
33 std::map<TString,TH1F> effics;
34 std::map<TString,bool> efficsOK;
41 isOK=
GetNumDenumerators(ibooker,igetter,(TString(dqmFolder_hist)+
"/"+label).
Data(),(TString(dqmFolder_hist)+
"/"+label).
Data(),num,den,0);
49 label+=flavour+TString(
"_disc_pT");
50 isOK=
GetNumDenumerators (ibooker,igetter,(TString(dqmFolder_hist)+
"/"+label).
Data(),(TString(dqmFolder_hist)+
"/"+label).
Data(),num,den,1);
59 if (efficsOK[
"b"] && efficsOK[
"c"])
mistagrate(ibooker,igetter,&effics[
"b"], &effics[
"c"],
m_histoName.at(ind)+
"_b_c_mistagrate" );
60 if (efficsOK[
"b"] && efficsOK[
"light"])
mistagrate(ibooker,igetter,&effics[
"b"], &effics[
"light"],
m_histoName.at(ind)+
"_b_light_mistagrate" );
61 if (efficsOK[
"b"] && efficsOK[
"g"])
mistagrate(ibooker,igetter,&effics[
"b"], &effics[
"g"],
m_histoName.at(ind)+
"_b_g_mistagrate" );
75 denME = igetter.
get(den);
76 numME = igetter.
get(num);
79 if ( denME ==
NULL || numME ==
NULL )
81 excp <<
"Plots not found:\n";
82 if(denME ==
NULL) excp << den <<
"\n";
83 if(numME ==
NULL) excp << num <<
"\n";
89 TH1* numH1 = numME->getTH1();
90 TH1* denH1 = denME->getTH1();
91 ptrden=(TH1*)denH1->Clone(
"denominator");
92 ptrnum=(TH1*)numH1->Clone(
"numerator");
94 ptrnum->SetBinContent(1,numH1->Integral());
95 ptrden->SetBinContent(1,numH1->Integral());
96 for (
int j=2;
j<=numH1->GetNbinsX();
j++) {
97 ptrnum->SetBinContent(
j,numH1->Integral()-numH1->Integral(1,
j-1));
98 ptrden->SetBinContent(
j,numH1->Integral());
104 TH2F* numH2 = numME->getTH2F();
105 TH2F* denH2 = denME->getTH2F();
108 TCutG * cutg_num=
new TCutG(
"cutg_num",4);
110 cutg_num->SetPoint(1,
m_minTag,9999);
111 cutg_num->SetPoint(2,1.1,9999);
112 cutg_num->SetPoint(3,1.1,0);
113 ptrnum = numH2->ProjectionY(
"numerator",0,-1,
"[cutg_num]");
116 TCutG * cutg_den=
new TCutG(
"cutg_den",4);
117 cutg_den->SetPoint(0,-10.1,0);
118 cutg_den->SetPoint(1,-10.1,9999);
119 cutg_den->SetPoint(2,1.1,9999);
120 cutg_den->SetPoint(3,1.1,0);
121 ptrden = denH2->ProjectionY(
"denumerator",0,-1,
"[cutg_den]");
132 eff =
new TH1F(effName.c_str(),effName.c_str(),100,0,1);
133 eff->SetTitle(effName.c_str());
134 eff->SetXTitle(
"b-effficiency");
135 eff->SetYTitle(
"mistag rate");
137 eff->SetLineColor(2);
138 eff->SetLineWidth(2);
139 eff->SetMarkerStyle(20);
140 eff->SetMarkerSize(0.8);
141 eff->GetYaxis()->SetRangeUser(0.001,1.001);
142 eff->GetXaxis()->SetRangeUser(-0.001,1.001);
143 eff->SetStats(kFALSE);
146 for(
int i=1;
i<=num->GetNbinsX();
i++){
147 double beff=num->GetBinContent(
i);
148 double miseff=den->GetBinContent(
i);
149 double miseffErr= den->GetBinError(
i);
150 int binX = eff->GetXaxis()->FindBin(beff);
151 if (eff->GetBinContent(binX)!=0)
continue;
152 eff->SetBinContent(binX,miseff);
153 eff->SetBinError(binX,miseffErr);
156 me = ibooker.
book1D(effName.c_str(),eff);
166 if(num.GetXaxis()->GetXbins()->GetSize()==0){
167 eff = TH1F(effName.c_str(),effName.c_str(),num.GetXaxis()->GetNbins(),num.GetXaxis()->GetXmin(),num.GetXaxis()->GetXmax());
169 eff = TH1F(effName.c_str(),effName.c_str(),num.GetXaxis()->GetNbins(),num.GetXaxis()->GetXbins()->GetArray());
171 eff.SetTitle(effName.c_str());
172 eff.SetXTitle( num.GetXaxis()->GetTitle() );
173 eff.SetYTitle(
"Efficiency");
177 eff.SetMarkerStyle(20);
178 eff.SetMarkerSize(0.8);
179 eff.GetYaxis()->SetRangeUser(-0.001,1.001);
180 for(
int i=1;
i<=num.GetNbinsX();
i++){
182 d= den.GetBinContent(
i);
183 n= num.GetBinContent(
i);
187 err =
sqrt(e*(1-e)/d);
193 eff.SetBinContent(
i, e );
194 eff.SetBinError(
i, err );
198 me = ibooker.
book1D(effName,&eff);
T getParameter(std::string const &) const
MonitorElement * get(const std::string &path)
#define DEFINE_FWK_MODULE(type)
HLTBTagHarvestingAnalyzer(const edm::ParameterSet &)
TH1F calculateEfficiency1D(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, TH1 &num, TH1 &den, std::string name)
virtual void dqmEndJob(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
std::vector< std::string > m_mcLabels
MonitorElement * book1D(Args &&...args)
std::vector< std::string > m_histoName
bool GetNumDenumerators(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, std::string num, std::string den, TH1 *&ptrnum, TH1 *&ptrden, int type)
void setCurrentFolder(const std::string &fullpath)
std::vector< std::string > hltPathNames_
void setEfficiencyFlag(void)
int flavour(const Candidate &part)
void mistagrate(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, TH1F *num, TH1F *den, std::string effName)
~HLTBTagHarvestingAnalyzer()