// copied from PhysicsAnalysis/TopPhys/TopPhysUtils/TopElectronSFUtils/trunk/electron_SF_EPS.h on 21 June 2011 at 3pm UK time #ifndef electron_SF_VV_h #define electron_SF_VV_h /**************************************************************************** * electron_SF_EPS.h * * * * Simple functions which return data/MC scale factors * * given a electron's eta * * Also functions for corresponding uncertainties. * * * * double ele_ID_SF(double et, double ET) * * double ele_ID_SF_err(double eta, double ET) * * double ele_reco_SF(); * * double ele_reco_SF_err(); * * double ele_recoID_SF(double eta, double ET); * * double ele_recoID_SF_err(double eta, double ET); * * double ele_trigger_SF(); * * double ele_trigger_SF_err(); * * * * History * * 26 Jan 2011 -- created by S. Caughron * * 05 May 2011 -- updated for pLHC * * 14 May 2011 -- more pLHC updates * * 20 Jun 2011 -- updated for EPS * ***************************************************************************/ #include #include // forward declaration of functions double ele_WZ_trigger_SF(double eta); double ele_WZ_trigger_SF_err(double eta); double ele_WZ_trigger_Eff_MC(double eta); double ele_WZ_trigger_Eff_data(double eta); double ele_WZ_trigger_Eff_MC(double eta) // for now just assuming 99.5% efficiency for MC until new numbers { double ele_eta = eta; int etaI=-1; const double etabins[18] = {-2.47,-2.37,-2.01,-1.81,-1.37,-1.15,-0.8,-0.6,-0.1,0,0.1,0.6,0.8,1.15,1.52,1.81,2.01,2.37}; const double Eff_MC_matrix[18] = {0.995, 0.995, 0.995, 0.995, 0.995, 0.995, 0.995, 0.995, 0.995, 0.995, 0.995, 0.995, 0.995, 0.995, 0.995, 0.995, 0.995, 0.995}; const double etamax = 2.47; const double etacrack[2] = {1.37,1.52}; if ( fabs(ele_eta) > etamax || (fabs(ele_eta) > etacrack[0] && fabs(ele_eta) < etacrack[1]) ) // check forward, crack regions return 1.0; else { for (int i=17; i>=0; i--){ // find eta index if ( ele_eta > etabins[i] ) { etaI = i; break; } } return Eff_MC_matrix[etaI]; } //else return 0; } double ele_WZ_trigger_Eff_data(double eta) { double ele_eta = eta; int etaI=-1; const double etabins[18] = {-2.47,-2.37,-2.01,-1.81,-1.37,-1.15,-0.8,-0.6,-0.1,0,0.1,0.6,0.8,1.15,1.52,1.81,2.01,2.37}; const double Eff_data_matrix[18] = {0.9607, 0.9690, 0.9793, 0.9818, 0.9920, 0.9847, 0.9798, 0.9880, 0.9862, 0.9878, 0.9873, 0.9921, 0.9865, 0.9907, 0.9932, 0.9733, 0.9737, 0.9741}; const double etamax = 2.47; const double etacrack[2] = {1.37,1.52}; if ( fabs(ele_eta) > etamax || (fabs(ele_eta) > etacrack[0] && fabs(ele_eta) < etacrack[1]) ) // check forward, crack regions return 1.0; else { for (int i=17; i>=0; i--){ // find eta index if ( ele_eta > etabins[i] ) { etaI = i; break; } } return Eff_data_matrix[etaI]; } //else return 0; } // For trigger SFs double ele_WZ_trigger_SF(double eta) { double ele_eta = eta; int etaI=-1; const double etabins[18] = {-2.47,-2.37,-2.01,-1.81,-1.37,-1.15,-0.8,-0.6,-0.1,0,0.1,0.6,0.8,1.15,1.52,1.81,2.01,2.37}; const double SFmatrix[18] = {0.9655, 0.9739, 0.9842, 0.9867, 0.9970, 0.9896, 0.9847, 0.9930, 0.9912, 0.9928, 0.9923, 0.9971, 0.9915, 0.9957, 0.9982, 0.9782, 0.9786, 0.9790}; const double etamax = 2.47; const double etacrack[2] = {1.37,1.52}; if ( fabs(ele_eta) > etamax || (fabs(ele_eta) > etacrack[0] && fabs(ele_eta) < etacrack[1]) ) // check forward, crack regions return 1.0; else { for (int i=17; i>=0; i--){ // find eta index if ( ele_eta > etabins[i] ) { etaI = i; break; } } return SFmatrix[etaI]; } //else return 0; } // For trigger SF uncertainties (symmetric) double ele_WZ_trigger_SF_err(double eta) { double ele_eta = eta; int etaI=-1; const double etabins[18] = {-2.47,-2.37,-2.01,-1.81,-1.37, -1.15,-0.8,-0.6,-0.1,0,0.1,0.6,0.8,1.15, 1.52,1.81,2.01,2.37}; const double errmatrix[18] = {0.0065, 0.0059, 0.0043, 0.0043, 0.0058, 0.0046, 0.0052, 0.0040, 0.0042, 0.0041, 0.0040, 0.0041, 0.0046, 0.0041, 0.0043, 0.0067, 0.0043, 0.0098}; const double etamax = 2.47; const double etacrack[2] = {1.37,1.52}; if ( fabs(ele_eta) > etamax || (fabs(ele_eta) > etacrack[0] && fabs(ele_eta) < etacrack[1]) ) // check forward, crack regions return 1.0; else { for (int i=17; i>=0; i--){ // find eta index if ( ele_eta > etabins[i] ) { etaI = i; break; } } return errmatrix[etaI]; } //else return 0; } #endif