00001 #ifndef RecoTauTag_RecoTau_PFRecoTauDiscriminationAgainstElectron_H_ 00002 #define RecoTauTag_RecoTau_PFRecoTauDiscriminationAgainstElectron_H_ 00003 00004 /* class PFRecoTauDiscriminationAgainstElectron 00005 * created : May 02 2008, 00006 * revised : , 00007 * Authorss : Chi Nhan Nguyen (Texas A&M) 00008 */ 00009 00010 #include "FWCore/Framework/interface/EDProducer.h" 00011 #include "FWCore/Framework/interface/ESHandle.h" 00012 #include "FWCore/Framework/interface/Event.h" 00013 #include "FWCore/Framework/interface/EventSetup.h" 00014 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00015 00016 #include "DataFormats/TauReco/interface/PFTau.h" 00017 #include "DataFormats/TauReco/interface/PFTauDiscriminator.h" 00018 #include "DataFormats/TrackReco/interface/Track.h" 00019 00020 #include "RecoTauTag/TauTagTools/interface/TauTagTools.h" 00021 00022 using namespace std; 00023 using namespace edm; 00024 using namespace edm::eventsetup; 00025 using namespace reco; 00026 00027 class PFRecoTauDiscriminationAgainstElectron : public EDProducer { 00028 public: 00029 explicit PFRecoTauDiscriminationAgainstElectron(const ParameterSet& iConfig){ 00030 PFTauProducer_ = iConfig.getParameter<InputTag>("PFTauProducer"); 00031 emFraction_maxValue_ = iConfig.getParameter<double>("EmFraction_maxValue"); 00032 applyCut_emFraction_ = iConfig.getParameter<bool>("ApplyCut_EmFraction"); 00033 hcalTotOverPLead_minValue_ = iConfig.getParameter<double>("HcalTotOverPLead_minValue"); 00034 applyCut_hcalTotOverPLead_ = iConfig.getParameter<bool>("ApplyCut_HcalTotOverPLead"); 00035 hcalMaxOverPLead_minValue_ = iConfig.getParameter<double>("HcalMaxOverPLead_minValue"); 00036 applyCut_hcalMaxOverPLead_ = iConfig.getParameter<bool>("ApplyCut_HcalMaxOverPLead"); 00037 hcal3x3OverPLead_minValue_ = iConfig.getParameter<double>("Hcal3x3OverPLead_minValue"); 00038 00039 applyCut_hcal3x3OverPLead_ = iConfig.getParameter<bool>("ApplyCut_Hcal3x3OverPLead"); 00040 EOverPLead_minValue_ = iConfig.getParameter<double>("EOverPLead_minValue"); 00041 EOverPLead_maxValue_ = iConfig.getParameter<double>("EOverPLead_maxValue"); 00042 applyCut_EOverPLead_ = iConfig.getParameter<bool>("ApplyCut_EOverPLead"); 00043 bremsRecoveryEOverPLead_minValue_ = iConfig.getParameter<double>("BremsRecoveryEOverPLead_minValue"); 00044 bremsRecoveryEOverPLead_maxValue_ = iConfig.getParameter<double>("BremsRecoveryEOverPLead_maxValue"); 00045 00046 applyCut_bremsRecoveryEOverPLead_ = iConfig.getParameter<bool>("ApplyCut_BremsRecoveryEOverPLead"); 00047 00048 applyCut_electronPreID_ = iConfig.getParameter<bool>("ApplyCut_ElectronPreID"); 00049 00050 applyCut_electronPreID_2D_ = iConfig.getParameter<bool>("ApplyCut_ElectronPreID_2D"); 00051 00052 elecPreID0_EOverPLead_maxValue = iConfig.getParameter<double>("ElecPreID0_EOverPLead_maxValue"); 00053 elecPreID0_HOverPLead_minValue = iConfig.getParameter<double>("ElecPreID0_HOverPLead_minValue"); 00054 elecPreID1_EOverPLead_maxValue = iConfig.getParameter<double>("ElecPreID1_EOverPLead_maxValue"); 00055 elecPreID1_HOverPLead_minValue = iConfig.getParameter<double>("ElecPreID1_HOverPLead_minValue"); 00056 00057 applyCut_ecalCrack_ = iConfig.getParameter<bool>("ApplyCut_EcalCrackCut"); 00058 00059 produces<PFTauDiscriminator>(); 00060 } 00061 ~PFRecoTauDiscriminationAgainstElectron(){} 00062 virtual void produce(Event&, const EventSetup&); 00063 private: 00064 bool isInEcalCrack(double) const; 00065 InputTag PFTauProducer_; 00066 bool applyCut_emFraction_; 00067 double emFraction_maxValue_; 00068 bool applyCut_hcalTotOverPLead_; 00069 double hcalTotOverPLead_minValue_; 00070 bool applyCut_hcalMaxOverPLead_; 00071 double hcalMaxOverPLead_minValue_; 00072 bool applyCut_hcal3x3OverPLead_; 00073 double hcal3x3OverPLead_minValue_; 00074 00075 bool applyCut_EOverPLead_; 00076 double EOverPLead_minValue_; 00077 double EOverPLead_maxValue_; 00078 bool applyCut_bremsRecoveryEOverPLead_; 00079 double bremsRecoveryEOverPLead_minValue_; 00080 double bremsRecoveryEOverPLead_maxValue_; 00081 00082 bool applyCut_electronPreID_; 00083 00084 bool applyCut_electronPreID_2D_; 00085 double elecPreID0_EOverPLead_maxValue; 00086 double elecPreID0_HOverPLead_minValue; 00087 double elecPreID1_EOverPLead_maxValue; 00088 double elecPreID1_HOverPLead_minValue; 00089 00090 bool applyCut_ecalCrack_; 00091 00092 00093 }; 00094 #endif