228 |
|
|
229 |
|
char jzbSelStr[256]; sprintf(jzbSelStr,"%f",jzbSel); |
230 |
|
// All acceptance cuts at gen. level |
231 |
< |
TCut kbase("abs(genMll-91.2)<20&&genNjets>2&&genZPt>0&&genJZB"+geq_or_leq()+TString(jzbSelStr)+"&&genId1==-genId2"); |
231 |
> |
//TCut kbase("abs(genMll-91.2)<20&&genNjets>2&&genZPt>0&&genJZB"+geq_or_leq()+TString(jzbSelStr)+"&&genId1==-genId2"); |
232 |
> |
TCut kbase(""); |
233 |
|
if(requireZ) kbase=kbase&&"TMath::Abs(genMID)==23"; |
234 |
|
if(addcut!="") kbase=kbase&&addcut.c_str();//this is mostly for SUSY scans (adding requirements on masses) |
235 |
|
// Corresponding reco. cuts |
236 |
|
TCut ksel("pfJetGoodNum>2&&abs(mll-91.2)<20&&id1==id2&&"+TString(mcjzb)+geq_or_leq()+TString(jzbSelStr)); |
237 |
< |
|
237 |
> |
TCut ksel2("pfJetGoodNum>2&&abs(mll-91.2)<20&&id1==id2&&"+TString(mcjzb)+ngeq_or_leq()+TString(jzbSelStr)); |
238 |
|
events->Draw(mcjzbexpression.c_str(),kbase&&ksel,"goff"); |
239 |
|
Float_t sel = events->GetSelectedRows(); |
240 |
+ |
events->Draw(mcjzbexpression.c_str(),kbase&&ksel2,"goff"); |
241 |
+ |
Float_t nsel = events->GetSelectedRows(); |
242 |
|
// events->Draw(mcjzbexpression.c_str(),kbase,"goff"); |
243 |
|
// Float_t tot = events->GetSelectedRows(); |
244 |
|
Float_t tot = Neventsinfile; |
245 |
|
|
246 |
< |
result=sel/tot; |
246 |
> |
result=(sel-nsel)/tot; |
247 |
|
resulterr=TMath::Sqrt(sel/tot*(1-sel/tot)/tot); |
248 |
|
if(!automatized) dout << " MC efficiency: " << result << "+-" << resulterr << std::endl; |
249 |
|
} |