#ifndef LEPTONTRIGGERSF_H__ #define LEPTONTRIGGERSF_H__ #include #include #include "TString.h" #include "TH1.h" #include "TH2.h" #include "TFile.h" #include "TLorentzVector.h" const double commonSystMTSG = 0.01; namespace TrigMuonEff{ enum SFDataPeriod { perUnDefined=-1, per2011B2_I=0, per2011J_M=1, per2011J=2, per2011K=3, per2011K1=4, per2011K2_K6=5, per2011L=6, per2011L3_L4=7, per2011LwoL3_L4=8, per2011M=9, }; } class LeptonTriggerSF { public: ~LeptonTriggerSF(); LeptonTriggerSF(std::string); void closefile(); void initialize(); TrigMuonEff::SFDataPeriod getDataPeriod(Int_t runNumber); double GetTriggerSF(int runnumber,bool useGeV, std::vector muons,std::vector electrons); double GetTriggerSF(int runnumber,bool useGeV, std::vector muons,std::vector electrons, TString channel, int Zl1, int Zl2, bool useTight); double TriMuSF(TrigMuonEff::SFDataPeriod period,std::vector muons, int zl1, int zl2) const; double TriMuSFTight(TrigMuonEff::SFDataPeriod period,std::vector muons, int zl1, int zl2) const; double TriEmSF(std::vector electrons, int zl1, int zl2) const; double DiEmMuSF(TrigMuonEff::SFDataPeriod period,std::vector electons,TLorentzVector muon, int zl1, int zl2) const; double DiMuEmSF(TrigMuonEff::SFDataPeriod period,std::vector muons,TLorentzVector electron, int zl1, int zl2) const; double DiMuEmSFTight(TrigMuonEff::SFDataPeriod period,std::vector muons,TLorentzVector electron, int zl1, int zl2) const; double MuEff_CB (TrigMuonEff::SFDataPeriod period,bool isData, TLorentzVector muon) const; double MuEff_Tight (TrigMuonEff::SFDataPeriod period,bool isData, TLorentzVector muon) const; double EmEff_MC ( TLorentzVector electron) const; double EmEff_Data (TLorentzVector electron) const; std::pair MuEffErr_CB (TrigMuonEff::SFDataPeriod period,bool isData, TLorentzVector muon) const; void setThresholds(bool useGeV); double check_Phi_range(double phi) const; TFile* file_Muon_Trig_Eff; private: std::string dir; bool inGeV; double muThreshold; double emThreshold; double m_minimum_phi; /// histograms for muons TH2D *_MuonTrigEffB2toI_EtaPhi_Barrel_Data; TH2D *_MuonTrigEffB2toI_EtaPhi_Barrel_MC; TH2D *_MuonTrigEffB2toI_EtaPhi_Endcap_Data; TH2D *_MuonTrigEffB2toI_EtaPhi_Endcap_MC; // medium triggers TH2D *_MuonTrigEffJtoM_EtaPhi_Barrel_Data; TH2D *_MuonTrigEffJtoM_EtaPhi_Barrel_MC; TH2D *_MuonTrigEffJtoM_EtaPhi_Endcap_Data; TH2D *_MuonTrigEffJtoM_EtaPhi_Endcap_MC; // medium triggers for periodJ TH2D *_MuonTrigEffJ_EtaPhi_Barrel_Data; TH2D *_MuonTrigEffJ_EtaPhi_Barrel_MC; TH2D *_MuonTrigEffJ_EtaPhi_Endcap_Data; TH2D *_MuonTrigEffJ_EtaPhi_Endcap_MC; // medium triggers for periodK TH2D *_MuonTrigEffK_EtaPhi_Barrel_Data; TH2D *_MuonTrigEffK_EtaPhi_Barrel_MC; TH2D *_MuonTrigEffK_EtaPhi_Endcap_Data; TH2D *_MuonTrigEffK_EtaPhi_Endcap_MC; // medium triggers for periodK1 TH2D *_MuonTrigEffK1_EtaPhi_Barrel_Data; TH2D *_MuonTrigEffK1_EtaPhi_Barrel_MC; TH2D *_MuonTrigEffK1_EtaPhi_Endcap_Data; TH2D *_MuonTrigEffK1_EtaPhi_Endcap_MC; // medium triggers for periodK2_K6 TH2D *_MuonTrigEffK2_K6_EtaPhi_Barrel_Data; TH2D *_MuonTrigEffK2_K6_EtaPhi_Barrel_MC; TH2D *_MuonTrigEffK2_K6_EtaPhi_Endcap_Data; TH2D *_MuonTrigEffK2_K6_EtaPhi_Endcap_MC; // medium triggers for periodL TH2D *_MuonTrigEffL_EtaPhi_Barrel_Data; TH2D *_MuonTrigEffL_EtaPhi_Barrel_MC; TH2D *_MuonTrigEffL_EtaPhi_Endcap_Data; TH2D *_MuonTrigEffL_EtaPhi_Endcap_MC; // medium triggers for periodL3_L4 TH2D *_MuonTrigEffL3_L4_EtaPhi_Barrel_Data; TH2D *_MuonTrigEffL3_L4_EtaPhi_Barrel_MC; TH2D *_MuonTrigEffL3_L4_EtaPhi_Endcap_Data; TH2D *_MuonTrigEffL3_L4_EtaPhi_Endcap_MC; // medium triggers for periodLwoL3_L4 TH2D *_MuonTrigEffLwoL3_L4_EtaPhi_Barrel_Data; TH2D *_MuonTrigEffLwoL3_L4_EtaPhi_Barrel_MC; TH2D *_MuonTrigEffLwoL3_L4_EtaPhi_Endcap_Data; TH2D *_MuonTrigEffLwoL3_L4_EtaPhi_Endcap_MC; // medium triggers for periodM TH2D *_MuonTrigEffM_EtaPhi_Barrel_Data; TH2D *_MuonTrigEffM_EtaPhi_Barrel_MC; TH2D *_MuonTrigEffM_EtaPhi_Endcap_Data; TH2D *_MuonTrigEffM_EtaPhi_Endcap_MC; }; #endif