// Efficiency scale factors macro // Date: 11/01/2010 // Author: Olivier Arnaez // Jan Kretzschmar // // Usage: // std::pair sf_error = objsf->scaleFactor(eta(cluster), ET(MeV), set, range, rel, etcorrection) // // Please note: alternative accessors scaleFactorLoose, scaleFactorMedium, ... // have been disabled, as the amount of sets is expanding and this was not maintainable // Read the "set=X" documentation below and use the correct arguments for scaleFactor() function // // The first number (sf_error.first) returns the efficiency scale factor, // the second number is its uncertainty (sf_errror.second) // // The combined (W/Z/jpsi) scale factor and uncertainty vs eta and ET (in MeV) are given // // different "sets" of numbers available (not all with all sets): // * Loose SF (set=0) // * Medium SF (set=1) // * Tight SF (set=2) // * e20_medium trigger SF (set=3) (use set 8 or 10 for release 17 2011 data/MC11a) // * reco+trkqual SF (set=4) // * Loose++ SF (set=5) // * Medium++ SF (set=6) // * Tight++ SF (set=7) // * e20_medium trigger SF w.r.t Medium++ offline (set=8) // * e20_medium MC efficiency w.r.t Medium++ offline (set=9) // * e20_medium trigger SF w.r.t Tight++ offline (set=10) // * e20_medium MC efficiency w.r.t Tight++ offline (set=11) // * e22_medium trigger SF w.r.t Medium++ offline (set=12) // * e22_medium MC efficiency w.r.t Medium++ offline (set=13) // * e22_medium trigger SF w.r.t Tight++ offline (set=14) // * e22_medium MC efficiency w.r.t Tight++ offline (set=15) // * e22vh_medium1 trigger SF (using e22_medium1 on MC11a) w.r.t Medium++ offline (set=16) // * e22_medium1 MC efficiency w.r.t Medium++ offline (set=17) // * e22vh_medium1 trigger SF (using e22_medium1 on MC11a) w.r.t Tight++ offline (set=18) // * e22_medium1 MC efficiency w.r.t Tight++ offline (set=19) // * e20_medium MC efficiency w.r.t Loose++ offline (set=20) // * e22_medium1 MC efficiency w.r.t Loose++ offline (set=21) // * e22vh_medium1 MC efficiency w.r.t Loose++ offline (set=22) // data and MC release selection: // * release 15 2010 data/MC09 (rel=0) // * release 16 2010 data/MC10 (rel=1) // * release 16.6 2011 data/MC10ab (estimated from 2010 data) (rel=2) // * release 16.6 estimated from 2011 data "EPS recommendations" and MC10b (rel=3) // * release 16.6 estimated from 2011 data "EPS recommendations" including Jpsi measurements (rel=4) // * release 17 estimated from 2011 data/MC11a "CERN council recommendations" (rel=5) // measured with probes in the ranges: // * 20-50 GeV range (range=0) // * 30-50 GeV (range=1) // and correcting (etcorrection=1) or not (etcorrection=0) for the ET-dependence // // Eta binning is changing from release to release // // Note that for rel>=4 range should be left at 0 and etcorrection=1 always // // For now separete function for Forward Electrons (|eta|>=2.5) // and ONLY for release 16.6, 2011 data in analogy to function for central electrons // std::pair sf_error = objsf->scaleFactorForward(eta, set) // where eta = electron eta = cluster eta (as no track) // cuts are ForwardLoose (set=0) or ForwardTight (set=2) // #ifndef egammaSFclass_h #define egammaSFclass_h #include #include #include #include //#include using namespace std; class egammaSFclass { public: egammaSFclass(); ~egammaSFclass() {}; std::pair etCorrection(float ET, int set, int rel=5); std::pair scaleFactor(float eta, float ET, int set, int range=0, int rel=5, bool etcorrection=true); /* std::pair scaleFactorLoose(float eta, float ET=20000., int range=0, int rel=5, bool etcorrection=false) { return scaleFactor(eta, ET, 0, range, rel, etcorrection); }; */ /* std::pair scaleFactorMedium(float eta, float ET=20000., int range=0, int rel=5, bool etcorrection=false) { return scaleFactor(eta, ET, 1, range, rel, etcorrection); }; */ /* std::pair scaleFactorTight(float eta, float ET=20000., int range=0, int rel=5, bool etcorrection=false) { return scaleFactor(eta, ET, 2, range, rel, etcorrection); }; */ /* std::pair scaleFactorTrigger(float eta, float ET=20000., int range=0, int rel=5, bool etcorrection=false) { return scaleFactor(eta, ET, 3, range, rel, etcorrection); }; */ /* std::pair scaleFactorRecoTrkQual(float eta, float ET, int range=0, int rel=5, bool etcorrection=false) { return scaleFactor(eta, ET, 4, range, rel, etcorrection); }; */ /* std::pair scaleFactorMediumETcorrected(float eta, float ET, int rel=5) { return scaleFactorMedium(eta, ET, 0, rel, true); }; */ /* std::pair scaleFactorTightETcorrected(float eta, float ET, int rel=5) { return scaleFactorTight(eta, ET, 0, rel, true); }; */ // for now separate "forward electron classes" std::pair scaleFactorForward(float eta, int set); std::pair scaleFactorForwardLoose(float eta) { return scaleFactorForward(eta, 0); }; std::pair scaleFactorForwardTight(float eta) { return scaleFactorForward(eta, 2); }; //For the binning std::vector m_Etabins; std::vector m_FineEtabins; std::vector m_11Etabins; std::vector m_ETbins; std::vector m_ETbinsFullRange; std::vector m_ETbinsTrigger; //For the scale factors of the standard egamma cuts //Release 15 //Probes between 30 and 50 GeV (plateau region) std::vector efficienciesRel15Loose3050; std::vector uncertaintiesRel15Loose3050; std::vector efficienciesRel15Medium3050; std::vector uncertaintiesRel15Medium3050; std::vector efficienciesRel15Tight3050; std::vector uncertaintiesRel15Tight3050; //Probes between 20 and 50 GeV std::vector efficienciesRel15Loose2050; std::vector uncertaintiesRel15Loose2050; std::vector efficienciesRel15Medium2050; std::vector uncertaintiesRel15Medium2050; std::vector efficienciesRel15Tight2050; std::vector uncertaintiesRel15Tight2050; //Release 16 //Probes between 30 and 50 GeV (plateau region) std::vector efficienciesRel16Medium3050; std::vector uncertaintiesRel16Medium3050; std::vector efficienciesRel16Tight3050; std::vector uncertaintiesRel16Tight3050; //Probes between 20 and 50 GeV std::vector efficienciesRel16Medium2050; std::vector uncertaintiesRel16Medium2050; std::vector efficienciesRel16Tight2050; std::vector uncertaintiesRel16Tight2050; //Release 16.6 with 2010 data //Probes between 30 and 50 GeV (plateau region) std::vector efficienciesRel166Data2010Medium3050; std::vector uncertaintiesRel166Data2010Medium3050; std::vector efficienciesRel166Data2010Tight3050; std::vector uncertaintiesRel166Data2010Tight3050; //Probes between 20 and 50 GeV std::vector efficienciesRel166Data2010Medium2050; std::vector uncertaintiesRel166Data2010Medium2050; std::vector efficienciesRel166Data2010Tight2050; std::vector uncertaintiesRel166Data2010Tight2050; //Release 16.6, EPS recommendations //Identification for probes between 20 and 50 GeV std::vector efficienciesRel166EPSMedium2050; std::vector uncertaintiesRel166EPSMedium2050; std::vector efficienciesRel166EPSTight2050; std::vector uncertaintiesRel166EPSTight2050; //Identification for low ET probes std::vector efficienciesRel166EPSMediumLowET; std::vector uncertaintiesRel166EPSMediumLowET; std::vector efficienciesRel166EPSTightLowET; std::vector uncertaintiesRel166EPSTightLowET; //For trigger efficiencies on the plateau std::vector efficienciesRel166EPSTrigger; std::vector uncertaintiesRel166EPSTrigger; //For reco+trkquality efficiencies std::vector efficienciesRel166EPSRecoTrkQual; std::vector uncertaintiesRel166EPSRecoTrkQual; //For the ET-corrections of the scale factors //Release 16 //Medium std::vector ETCorrectionsMediumRel16; std::vector uncertaintiesETCorrectionsMediumRel16; //Tight std::vector ETCorrectionsTightRel16; std::vector uncertaintiesETCorrectionsTightRel16; //Release 16.6 with 2010 data //Medium std::vector ETCorrectionsMediumRel166Data2010; std::vector uncertaintiesETCorrectionsMediumRel166Data2010; //Tight std::vector ETCorrectionsTightRel166Data2010; std::vector uncertaintiesETCorrectionsTightRel166Data2010; //Release 16.6, EPS recommendations //Medium std::vector ETCorrectionsMediumRel166EPS; std::vector uncertaintiesETCorrectionsMediumRel166EPS; //Tight std::vector ETCorrectionsTightRel166EPS; std::vector uncertaintiesETCorrectionsTightRel166EPS; //Release 16.6, EPS recommendations including low ET electrons //Medium std::vector ETCorrectionsMediumRel166EPSFullRange; std::vector uncertaintiesETCorrectionsMediumRel166EPSFullRange; //Tight std::vector ETCorrectionsTightRel166EPSFullRange; std::vector uncertaintiesETCorrectionsTightRel166EPSFullRange; // Release 17, "CERN Council" recommendations // converter void copyToVector(const float *myarray, int n, std::vector &dest, double renorm = 100.); // For reco+trkquality efficiencies std::vector efficienciesRel17CCRecoTrkQual; std::vector uncertaintiesRel17CCRecoTrkQual; // Identification eta for probes between 15 and 50 GeV std::vector efficienciesRel17CCLoosePP1550; std::vector uncertaintiesRel17CCLoosePP1550; std::vector efficienciesRel17CCMediumPP1550; std::vector uncertaintiesRel17CCMediumPP1550; std::vector efficienciesRel17CCTightPP1550; std::vector uncertaintiesRel17CCTightPP1550; //Identification eta for low ET probes std::vector efficienciesRel17CCLoosePP415; std::vector uncertaintiesRel17CCLoosePP415; std::vector efficienciesRel17CCMediumPP415; std::vector uncertaintiesRel17CCMediumPP415; std::vector efficienciesRel17CCTightPP415; std::vector uncertaintiesRel17CCTightPP415; // ET correction std::vector ETCorrectionsRel17CCLoosePP; std::vector uncertaintiesETCorrectionsRel17CCLoosePP; std::vector ETCorrectionsRel17CCMediumPP; std::vector uncertaintiesETCorrectionsRel17CCMediumPP; std::vector ETCorrectionsRel17CCTightPP; std::vector uncertaintiesETCorrectionsRel17CCTightPP; // Trigger efficiencies // e20_medium B-J std::vector MCefficienciesRel17CCe20_mediumLoosePP; std::vector MCefficienciesRel17CCe20_mediumLoosePPET; std::vector efficienciesRel17CCe20_mediumMediumPP; std::vector uncertaintiesRel17CCe20_mediumMediumPP; std::vector efficienciesRel17CCe20_mediumMediumPPET; std::vector uncertaintiesRel17CCe20_mediumMediumPPET; std::vector MCefficienciesRel17CCe20_mediumMediumPP; std::vector MCefficienciesRel17CCe20_mediumMediumPPET; std::vector efficienciesRel17CCe20_mediumTightPP; std::vector uncertaintiesRel17CCe20_mediumTightPP; std::vector efficienciesRel17CCe20_mediumTightPPET; std::vector uncertaintiesRel17CCe20_mediumTightPPET; std::vector MCefficienciesRel17CCe20_mediumTightPP; std::vector MCefficienciesRel17CCe20_mediumTightPPET; // e22_medium K std::vector MCefficienciesRel17CCe22_mediumLoosePP; std::vector MCefficienciesRel17CCe22_mediumLoosePPET; std::vector efficienciesRel17CCe22_mediumMediumPP; std::vector uncertaintiesRel17CCe22_mediumMediumPP; std::vector efficienciesRel17CCe22_mediumMediumPPET; std::vector uncertaintiesRel17CCe22_mediumMediumPPET; std::vector MCefficienciesRel17CCe22_mediumMediumPP; std::vector MCefficienciesRel17CCe22_mediumMediumPPET; std::vector efficienciesRel17CCe22_mediumTightPP; std::vector uncertaintiesRel17CCe22_mediumTightPP; std::vector efficienciesRel17CCe22_mediumTightPPET; std::vector uncertaintiesRel17CCe22_mediumTightPPET; std::vector MCefficienciesRel17CCe22_mediumTightPP; std::vector MCefficienciesRel17CCe22_mediumTightPPET; // e22vh_medium1 L-M std::vector MCefficienciesRel17CCe22vh_medium1LoosePP; std::vector MCefficienciesRel17CCe22vh_medium1LoosePPET; std::vector efficienciesRel17CCe22vh_medium1MediumPP; std::vector uncertaintiesRel17CCe22vh_medium1MediumPP; std::vector efficienciesRel17CCe22vh_medium1MediumPPET; std::vector uncertaintiesRel17CCe22vh_medium1MediumPPET; std::vector MCefficienciesRel17CCe22vh_medium1MediumPP; std::vector MCefficienciesRel17CCe22vh_medium1MediumPPET; std::vector efficienciesRel17CCe22vh_medium1TightPP; std::vector uncertaintiesRel17CCe22vh_medium1TightPP; std::vector efficienciesRel17CCe22vh_medium1TightPPET; std::vector uncertaintiesRel17CCe22vh_medium1TightPPET; std::vector MCefficienciesRel17CCe22vh_medium1TightPP; std::vector MCefficienciesRel17CCe22vh_medium1TightPPET; }; #endif