ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitHzz4l/Util/src/EfficiencyWeights.cc
(Generate patch)

Comparing UserCode/MitHzz4l/Util/src/EfficiencyWeights.cc (file contents):
Revision 1.12 by anlevin, Fri Nov 2 08:42:57 2012 UTC vs.
Revision 1.13 by anlevin, Fri Nov 2 12:44:20 2012 UTC

# Line 19 | Line 19 | void initEfficiencyWeights(void) {
19    //
20    string effPath2012(CMSSW_BASE);
21    string path_mu_idiso_s12_pu2012 = (effPath2012+string("/src/MitHzz4l/data/muon_scale_factors/muonid_hcp-05.10.2012-with-tk-v2.root"));
22 <  string path_ele_idiso_s12_pu2012ab =
23 <    (effPath2012+string("/src/MitHzz4l/data/electron_eff_scale_factors.2012.Z.root"));
22 >  string path_ele_recoidisosip_2012 =
23 >    (effPath2012+string("/src/MitHzz4l/data/electron_scale_factors/Electron_scale_factors_IDISOSIP_combined.root"));
24  
25    //  HLT_Ele17_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL_Ele8_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL
26    string path_ele_trigger_17GeV_pu2012ab =  
# Line 91 | Line 91 | void initEfficiencyWeights(void) {
91      (effPath+string("/HiggsAna/HZZ4l/Efficiency/Run2011B_HLT_DoubleMu_trailing/default/eff.root"));
92  
93   // electrons
94 <  string path_ele_idiso_medium_s11_pu2011a =
95 <    (effPath+string("/HiggsAna/HZZ4l/Efficiency/old2/Summer11_Zjets_EleWPEffTP-medium_PU2011A/default/eff.root"));
96 <  string path_ele_idiso_loose_s11_pu2011a =
97 <    (effPath+string("/HiggsAna/HZZ4l/Efficiency/old2/Summer11_Zjets_EleWPEffTP-loose_PU2011A/default/eff.root"));
98 <  string path_ele_idiso_medium_s11_pu2011b =
99 <    (effPath+string("/HiggsAna/HZZ4l/Efficiency/old2/Summer11_Zjets_EleWPEffTP-medium_PU2011B/default/eff.root"));
100 <  string path_ele_idiso_loose_s11_pu2011b =
101 <  (effPath+string("/HiggsAna/HZZ4l/Efficiency/old2/Summer11_Zjets_EleWPEffTP-loose_PU2011B/default/eff.root"));
102 <  string path_ele_idiso_medium_2011a =
103 <    (effPath+string("/HiggsAna/HZZ4l/Efficiency/old2/Run2011A_EleWPEffTP-medium/default/eff.root"));
104 <  string path_ele_idiso_loose_2011a =
105 <    (effPath+string("/HiggsAna/HZZ4l/Efficiency/old2/Run2011A_EleWPEffTP-loose/default/eff.root"));
94 >  string path_ele_recoidisoip_2011 =
95 >    (CMSSW_BASE+string("/src/MitHzz4l/data/electron_scale_factors/scale_factors_ele2011.root"));
96    string path_ele_trigger_doubleele_leading_wrt_medium_2011a =
97      (effPath+string("/HiggsAna/HZZ4l/Efficiency/old2/Run2011A_HLT_DoubleEle_leading-medium/default/eff.root"));
98    string path_ele_trigger_doubleele_leading_wrt_loose_2011a =
# Line 126 | Line 116 | void initEfficiencyWeights(void) {
116  
117  
118    // electrons
129  string path_ele_idiso_medium_2011 =
130    (effPath+string("/HiggsAna/HZZ4l/Efficiency/old2/Data_EleWPEffTP-medium/default/eff.root"));
131  string path_ele_idiso_loose_2011 =
132    (effPath+string("/HiggsAna/HZZ4l/Efficiency/old2/Data_EleWPEffTP-loose/default/eff.root"));
133  string path_ele_idiso_medium_s11 =
134    (effPath+string("/HiggsAna/HZZ4l/Efficiency/old2/Summer11_Zjets_EleWPEffTP-medium_PU2011A/default/eff.root"));
135  string path_ele_idiso_loose_s11 =
136    (effPath+string("/HiggsAna/HZZ4l/Efficiency/old2/Summer11_Zjets_EleWPEffTP-loose_PU2011A/default/eff.root"));
119    string path_ele_trigger_doubleele_leading_wrt_medium_2011 =
120      (effPath+string("/HiggsAna/HZZ4l/Efficiency/old2/Data_HLT_DoubleEle_leading-medium/default/eff.root"));
121    string path_ele_trigger_doubleele_leading_wrt_loose_2011 =
# Line 203 | Line 185 | void initEfficiencyWeights(void) {
185    // electrons
186  
187  
188 <  f = new TFile(path_ele_idiso_medium_2011a.c_str());
189 <  h_ele_eff_idiso_medium_2011a = (TH2D*)(f->Get("hEffEtaPt")) ;
190 <  h_ele_eff_idiso_medium_2011a_errlo = (TH2D*)(f->Get("hErrlEtaPt")) ;
209 <  h_ele_eff_idiso_medium_2011a_errhi = (TH2D*)(f->Get("hErrhEtaPt")) ;
210 <  h_ele_eff_idiso_medium_2011a->SetDirectory(0);
211 <  h_ele_eff_idiso_medium_2011a_errlo->SetDirectory(0);
212 <  h_ele_eff_idiso_medium_2011a_errhi->SetDirectory(0);
213 <  f->Close();
214 <
215 <  f = new TFile(path_ele_idiso_loose_2011a.c_str());
216 <  h_ele_eff_idiso_loose_2011a = (TH2D*)(f->Get("hEffEtaPt")) ;
217 <  h_ele_eff_idiso_loose_2011a_errlo = (TH2D*)(f->Get("hErrlEtaPt")) ;
218 <  h_ele_eff_idiso_loose_2011a_errhi = (TH2D*)(f->Get("hErrhEtaPt")) ;
219 <  h_ele_eff_idiso_loose_2011a->SetDirectory(0);
220 <  h_ele_eff_idiso_loose_2011a_errlo->SetDirectory(0);
221 <  h_ele_eff_idiso_loose_2011a_errhi->SetDirectory(0);
222 <  f->Close();
223 <
224 <
225 <  f = new TFile(path_ele_idiso_medium_2011b.c_str());
226 <  h_ele_eff_idiso_medium_2011b = (TH2D*)(f->Get("hEffEtaPt")) ;
227 <  h_ele_eff_idiso_medium_2011b_errlo = (TH2D*)(f->Get("hErrlEtaPt")) ;
228 <  h_ele_eff_idiso_medium_2011b_errhi = (TH2D*)(f->Get("hErrhEtaPt")) ;
229 <  h_ele_eff_idiso_medium_2011b->SetDirectory(0);
230 <  h_ele_eff_idiso_medium_2011b_errlo->SetDirectory(0);
231 <  h_ele_eff_idiso_medium_2011b_errhi->SetDirectory(0);
232 <  f->Close();
233 <
234 <  f = new TFile(path_ele_idiso_loose_2011b.c_str());
235 <  h_ele_eff_idiso_loose_2011b = (TH2D*)(f->Get("hEffEtaPt")) ;
236 <  h_ele_eff_idiso_loose_2011b_errlo = (TH2D*)(f->Get("hErrlEtaPt")) ;
237 <  h_ele_eff_idiso_loose_2011b_errhi = (TH2D*)(f->Get("hErrhEtaPt")) ;
238 <  h_ele_eff_idiso_loose_2011b->SetDirectory(0);
239 <  h_ele_eff_idiso_loose_2011b_errlo->SetDirectory(0);
240 <  h_ele_eff_idiso_loose_2011b_errhi->SetDirectory(0);
241 <  f->Close();
242 <
243 <
244 <  f = new TFile(path_ele_idiso_medium_s11_pu2011a.c_str());
245 <  h_ele_eff_idiso_medium_s11_pu2011a = (TH2D*)(f->Get("hEffEtaPt")->Clone());
246 <  h_ele_eff_idiso_medium_s11_pu2011a_errlo = (TH2D*)(f->Get("hErrlEtaPt")->Clone());
247 <  h_ele_eff_idiso_medium_s11_pu2011a_errhi = (TH2D*)(f->Get("hErrhEtaPt")->Clone());
248 <  h_ele_eff_idiso_medium_s11_pu2011a->SetDirectory(0);
249 <  h_ele_eff_idiso_medium_s11_pu2011a_errlo->SetDirectory(0);
250 <  h_ele_eff_idiso_medium_s11_pu2011a_errhi->SetDirectory(0);
251 <  f->Close();
252 <
253 <  f = new TFile(path_ele_idiso_loose_s11_pu2011a.c_str());
254 <  h_ele_eff_idiso_loose_s11_pu2011a = (TH2D*)(f->Get("hEffEtaPt")->Clone());
255 <  h_ele_eff_idiso_loose_s11_pu2011a_errlo = (TH2D*)(f->Get("hErrlEtaPt")->Clone());
256 <  h_ele_eff_idiso_loose_s11_pu2011a_errhi = (TH2D*)(f->Get("hErrhEtaPt")->Clone());
257 <  h_ele_eff_idiso_loose_s11_pu2011a->SetDirectory(0);
258 <  h_ele_eff_idiso_loose_s11_pu2011a_errlo->SetDirectory(0);
259 <  h_ele_eff_idiso_loose_s11_pu2011a_errhi->SetDirectory(0);
260 <  f->Close();
261 <
262 <
263 <
264 <  f = new TFile(path_ele_idiso_medium_s11_pu2011b.c_str());
265 <  h_ele_eff_idiso_medium_s11_pu2011b = (TH2D*)(f->Get("hEffEtaPt")->Clone());
266 <  h_ele_eff_idiso_medium_s11_pu2011b_errlo = (TH2D*)(f->Get("hErrlEtaPt")->Clone());
267 <  h_ele_eff_idiso_medium_s11_pu2011b_errhi = (TH2D*)(f->Get("hErrhEtaPt")->Clone());
268 <  h_ele_eff_idiso_medium_s11_pu2011b->SetDirectory(0);
269 <  h_ele_eff_idiso_medium_s11_pu2011b_errlo->SetDirectory(0);
270 <  h_ele_eff_idiso_medium_s11_pu2011b_errhi->SetDirectory(0);
271 <  f->Close();
272 <
273 <  f = new TFile(path_ele_idiso_loose_s11_pu2011b.c_str());
274 <  h_ele_eff_idiso_loose_s11_pu2011b = (TH2D*)(f->Get("hEffEtaPt")->Clone());
275 <  h_ele_eff_idiso_loose_s11_pu2011b_errlo = (TH2D*)(f->Get("hErrlEtaPt")->Clone());
276 <  h_ele_eff_idiso_loose_s11_pu2011b_errhi = (TH2D*)(f->Get("hErrhEtaPt")->Clone());
277 <  h_ele_eff_idiso_loose_s11_pu2011b->SetDirectory(0);
278 <  h_ele_eff_idiso_loose_s11_pu2011b_errlo->SetDirectory(0);
279 <  h_ele_eff_idiso_loose_s11_pu2011b_errhi->SetDirectory(0);
188 >  f = new TFile(path_ele_recoidisoip_2011.c_str());
189 >  h_ele_effsf_recoidisosip_2011 = (TH2D*)(f->Get("h_electron_scale_factor_RECO_ID_ISO_SIP")) ;
190 >  h_ele_effsf_recoidisosip_2011->SetDirectory(0);
191    f->Close();
192  
193 +
194    //
195    // 2012
196    //
197 <  std::cout << "    going to open " << path_ele_idiso_s12_pu2012ab << " ..." << std::endl;
198 <  f = new TFile(path_ele_idiso_s12_pu2012ab.c_str());
199 <  h_ele_effsf_idiso_s12_pu2012ab = (TH2D*)(f->Get("efficiency_scale_factors")->Clone());
200 <  h_ele_effsf_idiso_s12_pu2012ab->SetDirectory(0);
197 >  std::cout << "    going to open " << path_ele_recoidisosip_2012 << " ..." << std::endl;
198 >  f = new TFile(path_ele_recoidisosip_2012.c_str());
199 >  h_ele_effsf_recoidisosip_2012 = (TH2D*)(f->Get("h_electron_scale_factor_RECO_ID_ISO_SIP")->Clone());
200 >  h_ele_effsf_recoidisosip_2012->SetDirectory(0);
201    f->Close();
202  
291
203    f = new TFile(path_ele_trigger_doubleele_leading_wrt_medium_2011a.c_str());
204    h_ele_effdata_trigger_doubleele_leading_wrt_medium_2011a = (TH2D*)(f->Get("hEffEtaPt")->Clone());
205    h_ele_effdata_trigger_doubleele_leading_wrt_medium_2011a_errlo = (TH2D*)(f->Get("hErrlEtaPt")->Clone());
# Line 373 | Line 284 | void initEfficiencyWeights(void) {
284   std::pair<double,double> muonPerLegOfflineEfficiencyWeight( ControlFlags &ctrl, unsigned era, float eta, float pt ) {
285    
286    double w, werr;
376  double eff_data, eff_data_2011a, eff_data_2011b;
377  double eff_err_data, eff_err_data_2011a, eff_err_data_2011b;
378  double eff_mc, eff_err_mc;
379  double eff_mc_2011a, eff_err_mc_2011a;
380  double eff_mc_2011b, eff_err_mc_2011b;
381  double errlo, errhi;
382  double errlo_2011a, errhi_2011a;
383  double errlo_2011b, errhi_2011b;
287  
288    if( era == 2011 ) {
289  
# Line 412 | Line 315 | std::pair<double,double> muonPerLegOffli
315   std::pair<double,double> elePerLegOfflineEfficiencyWeight( ControlFlags &ctrl, unsigned era, float eta, float pt, bool isMedium  ) {
316    
317    double w, werr;
415  double eff_data, eff_err_data;
416  double eff_data_2011a, eff_err_data_2011a;
417  double eff_data_2011b, eff_err_data_2011b;
418  double eff_mc, eff_err_mc;
419  double eff_mc_2011a, eff_err_m_2011a;
420  double eff_mc_2011b, eff_err_mc_2011b;
421  double errlo, errhi;
422  double errlo_2011a, errhi_2011a;
423  double errlo_2011b, errhi_2011b;
318    
319    if( era == 2011 ) {
320      
321 <    if( isMedium ) {
322 <      eff_data_2011a = h_ele_eff_idiso_medium_2011a->GetBinContent( h_ele_eff_idiso_medium_2011a->FindBin(eta, pt) );
323 <      errlo_2011a = h_ele_eff_idiso_medium_2011a_errlo->GetBinContent( h_ele_eff_idiso_medium_2011a_errlo->FindBin(eta, pt) );
430 <      errhi_2011a = h_ele_eff_idiso_medium_2011a_errhi->GetBinContent( h_ele_eff_idiso_medium_2011a_errhi->FindBin(eta, pt) );
431 <      eff_err_data_2011a = std::max(errlo_2011a,errhi_2011a);
432 <      eff_data_2011b = h_ele_eff_idiso_medium_2011b->GetBinContent( h_ele_eff_idiso_medium_2011b->FindBin(eta, pt) );
433 <      errlo_2011b = h_ele_eff_idiso_medium_2011b_errlo->GetBinContent( h_ele_eff_idiso_medium_2011b_errlo->FindBin(eta, pt) );
434 <      errhi_2011b = h_ele_eff_idiso_medium_2011b_errhi->GetBinContent( h_ele_eff_idiso_medium_2011b_errhi->FindBin(eta, pt) );
435 <      eff_err_data_2011b = std::max(errlo_2011b,errhi_2011b);
436 <      eff_data = f_ele2011a*eff_data_2011a + f_ele2011b*eff_data_2011b;
437 <      errlo = f_ele2011a*errlo_2011a + f_ele2011b*errlo_2011b;
438 <      errhi = f_ele2011a*errhi_2011a + f_ele2011b*errhi_2011b;
439 <      eff_err_data = std::max(errlo,errhi);
440 <      
441 <      eff_mc_2011a = h_ele_eff_idiso_medium_s11_pu2011a->GetBinContent( h_ele_eff_idiso_medium_s11_pu2011a->FindBin(eta, pt) );
442 <      errlo_2011a = h_ele_eff_idiso_medium_s11_pu2011a_errlo->GetBinContent( h_ele_eff_idiso_medium_s11_pu2011a_errlo->FindBin(eta, pt) );
443 <      errhi_2011a = h_ele_eff_idiso_medium_s11_pu2011a_errhi->GetBinContent( h_ele_eff_idiso_medium_s11_pu2011a_errhi->FindBin(eta, pt) );
444 <      
445 <      eff_mc_2011b = h_ele_eff_idiso_medium_s11_pu2011b->GetBinContent( h_ele_eff_idiso_medium_s11_pu2011b->FindBin(eta, pt) );
446 <      errlo_2011b = h_ele_eff_idiso_medium_s11_pu2011b_errlo->GetBinContent( h_ele_eff_idiso_medium_s11_pu2011b_errlo->FindBin(eta, pt) );
447 <      errhi_2011b = h_ele_eff_idiso_medium_s11_pu2011b_errhi->GetBinContent( h_ele_eff_idiso_medium_s11_pu2011b_errhi->FindBin(eta, pt) );
448 <      
449 <      eff_mc = f_ele2011a*eff_mc_2011a + f_ele2011b*eff_mc_2011b;
450 <      errlo = f_ele2011a*errlo_2011a + f_ele2011b*errlo_2011b;
451 <      errhi = f_ele2011a*errhi_2011a + f_ele2011b*errhi_2011b;
452 <      eff_err_mc = std::max(errlo, errhi );
453 <    } else {
454 <      eff_data_2011a = h_ele_eff_idiso_loose_2011a->GetBinContent( h_ele_eff_idiso_loose_2011a->FindBin(eta, pt) );
455 <      errlo_2011a = h_ele_eff_idiso_loose_2011a_errlo->GetBinContent( h_ele_eff_idiso_loose_2011a_errlo->FindBin(eta, pt) );
456 <      errhi_2011a = h_ele_eff_idiso_loose_2011a_errhi->GetBinContent( h_ele_eff_idiso_loose_2011a_errhi->FindBin(eta, pt) );
457 <      eff_err_data_2011a = std::max(errlo_2011a,errhi_2011a);
458 <      eff_data_2011b = h_ele_eff_idiso_loose_2011b->GetBinContent( h_ele_eff_idiso_loose_2011b->FindBin(eta, pt) );
459 <      errlo_2011b = h_ele_eff_idiso_loose_2011b_errlo->GetBinContent( h_ele_eff_idiso_loose_2011b_errlo->FindBin(eta, pt) );
460 <      errhi_2011b = h_ele_eff_idiso_loose_2011b_errhi->GetBinContent( h_ele_eff_idiso_loose_2011b_errhi->FindBin(eta, pt) );
461 <      eff_err_data_2011b = std::max(errlo_2011b,errhi_2011b);
462 <      
463 <      eff_data = f_ele2011a*eff_data_2011a + f_ele2011b*eff_data_2011b;
464 <      errlo = f_ele2011a*errlo_2011a + f_ele2011b*errlo_2011b;
465 <      errhi = f_ele2011a*errhi_2011a + f_ele2011b*errhi_2011b;
466 <      eff_err_data = std::max(errlo,errhi);
467 <      
468 <      eff_mc_2011a = h_ele_eff_idiso_loose_s11_pu2011a->GetBinContent( h_ele_eff_idiso_loose_s11_pu2011a->FindBin(eta, pt) );
469 <      errlo_2011a = h_ele_eff_idiso_loose_s11_pu2011a_errlo->GetBinContent( h_ele_eff_idiso_loose_s11_pu2011a_errlo->FindBin(eta, pt) );
470 <      errhi_2011a = h_ele_eff_idiso_loose_s11_pu2011a_errhi->GetBinContent( h_ele_eff_idiso_loose_s11_pu2011a_errhi->FindBin(eta, pt) );
471 <      
472 <      eff_mc_2011b = h_ele_eff_idiso_loose_s11_pu2011b->GetBinContent( h_ele_eff_idiso_loose_s11_pu2011b->FindBin(eta, pt) );
473 <      errlo_2011b = h_ele_eff_idiso_loose_s11_pu2011b_errlo->GetBinContent( h_ele_eff_idiso_loose_s11_pu2011b_errlo->FindBin(eta, pt) );
474 <      errhi_2011b = h_ele_eff_idiso_loose_s11_pu2011b_errhi->GetBinContent( h_ele_eff_idiso_loose_s11_pu2011b_errhi->FindBin(eta, pt) );
475 <      
476 <      eff_mc = f_ele2011a*eff_mc_2011a + f_ele2011b*eff_mc_2011b;
477 <      errlo = f_ele2011a*errlo_2011a + f_ele2011b*errlo_2011b;
478 <      errhi = f_ele2011a*errhi_2011a + f_ele2011b*errhi_2011b;
479 <      eff_err_mc = std::max(errlo, errhi );
480 <    }
481 <    
482 <    w = eff_data/eff_mc;
483 <    double relerr_data = (eff_err_data/eff_data);
484 <    double relerr_mc = (eff_err_mc/eff_mc);
485 <    werr = w*sqrt( relerr_data*relerr_data  + relerr_mc*relerr_mc );
486 <
321 >    w = h_ele_effsf_recoidisosip_2011->GetBinContent( h_ele_effsf_recoidisosip_2011->FindBin( pt, fabs(eta)) );
322 >    werr = h_ele_effsf_recoidisosip_2011->GetBinError( h_ele_effsf_recoidisosip_2011->FindBin( pt, fabs(eta)) );
323 >    if(ctrl.debug) std::cout << "    electron per leg :: pt: "<< pt << "\teta: " << eta << "\tw:" << w << std::endl;
324    } else if( era == 2012 ) {
325 <    w = h_ele_effsf_idiso_s12_pu2012ab->GetBinContent( h_ele_effsf_idiso_s12_pu2012ab->FindBin( pt, fabs(eta)) );
326 <    werr = h_ele_effsf_idiso_s12_pu2012ab->GetBinError( h_ele_effsf_idiso_s12_pu2012ab->FindBin( pt, fabs(eta)) );
325 >    w = h_ele_effsf_recoidisosip_2012->GetBinContent( h_ele_effsf_recoidisosip_2012->FindBin( pt, fabs(eta)) );
326 >    werr = h_ele_effsf_recoidisosip_2012->GetBinError( h_ele_effsf_recoidisosip_2012->FindBin( pt, fabs(eta)) );
327      if(ctrl.debug) std::cout << "    electron per leg :: pt: "<< pt << "\teta: " << eta << "\tw:" << w << std::endl;
328 +    cout << "w = " << w << endl;
329 +    cout << "werr = " << werr << endl;
330 +
331    }
332  
333    if( isnan(w) ) {
334      if(ctrl.debug)
335        std::cout << "w is nan for ele!!! pt: " << pt << "\teta: " << eta << std::endl
496                << "eff_data: " << eff_data   << "\teff_mc: " << eff_mc << std::endl
336                  << "returning zero ..." << std::endl;
337      return std::pair<double,double> (0,0);
338    }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines