00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef RECOTAUTAG_RECOTAU_AntiElectronIDMVA2_H
00012 #define RECOTAUTAG_RECOTAU_AntiElectronIDMVA2_H
00013
00014 #include "DataFormats/TauReco/interface/PFTau.h"
00015 #include "DataFormats/TrackReco/interface/Track.h"
00016 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00017 #include "DataFormats/GsfTrackReco/interface/GsfTrack.h"
00018 #include "DataFormats/GsfTrackReco/interface/GsfTrackFwd.h"
00019
00020 #include "TMVA/Tools.h"
00021 #include "TMVA/Reader.h"
00022
00023 #include "DataFormats/Math/interface/deltaR.h"
00024
00025 #include <vector>
00026
00027 class AntiElectronIDMVA2
00028 {
00029 public:
00030
00031 AntiElectronIDMVA2();
00032 ~AntiElectronIDMVA2();
00033
00034 void Initialize_from_file(const std::string& methodName,
00035 const std::string& oneProngNoEleMatch_BL,
00036 const std::string& oneProng0Pi0_BL,
00037 const std::string& oneProng1pi0woGSF_BL,
00038 const std::string& oneProng1pi0wGSFwoPfEleMva_BL,
00039 const std::string& oneProng1pi0wGSFwPfEleMva_BL,
00040 const std::string& oneProngNoEleMatch_EC,
00041 const std::string& oneProng0Pi0_EC,
00042 const std::string& oneProng1pi0woGSF_EC,
00043 const std::string& oneProng1pi0wGSFwoPfEleMva_EC,
00044 const std::string& oneProng1pi0wGSFwPfEleMva_EC);
00045
00046 void Initialize_from_string(const std::string& methodName,
00047 const std::string& oneProngNoEleMatch_BL,
00048 const std::string& oneProng0Pi0_BL,
00049 const std::string& oneProng1pi0woGSF_BL,
00050 const std::string& oneProng1pi0wGSFwoPfEleMva_BL,
00051 const std::string& oneProng1pi0wGSFwPfEleMva_BL,
00052 const std::string& oneProngNoEleMatch_EC,
00053 const std::string& oneProng0Pi0_EC,
00054 const std::string& oneProng1pi0woGSF_EC,
00055 const std::string& oneProng1pi0wGSFwoPfEleMva_EC,
00056 const std::string& oneProng1pi0wGSFwPfEleMva_EC);
00057
00058
00059 double MVAValue(Float_t TauEtaAtEcalEntrance,
00060 Float_t TauPhi,
00061 Float_t TauPt,
00062 Float_t TauSignalPFChargedCands,
00063 Float_t TauSignalPFGammaCands,
00064 Float_t TauLeadPFChargedHadrHoP,
00065 Float_t TauLeadPFChargedHadrEoP,
00066 Float_t TauHasGsf,
00067 Float_t TauVisMass,
00068 Float_t TauEmFraction,
00069 const std::vector<Float_t>& GammasdEta,
00070 const std::vector<Float_t>& GammasdPhi,
00071 const std::vector<Float_t>& GammasPt,
00072 Float_t ElecEta,
00073 Float_t ElecPhi,
00074 Float_t ElecPt,
00075 Float_t ElecPFMvaOutput,
00076 Float_t ElecEe,
00077 Float_t ElecEgamma,
00078 Float_t ElecPin,
00079 Float_t ElecPout,
00080 Float_t ElecEarlyBrem,
00081 Float_t ElecLateBrem,
00082 Float_t ElecFbrem,
00083 Float_t ElecChi2KF,
00084 Float_t ElecChi2GSF,
00085 Float_t ElecNumHits,
00086 Float_t ElecGSFTrackResol,
00087 Float_t ElecGSFTracklnPt,
00088 Float_t ElecGSFTrackEta);
00089
00090 double MVAValue(Float_t TauEtaAtEcalEntrance,
00091 Float_t TauPhi,
00092 Float_t TauPt,
00093 Float_t TauSignalPFChargedCands,
00094 Float_t TauSignalPFGammaCands,
00095 Float_t TauLeadPFChargedHadrHoP,
00096 Float_t TauLeadPFChargedHadrEoP,
00097 Float_t TauHasGsf,
00098 Float_t TauVisMass,
00099 Float_t TauEmFraction,
00100 Float_t GammaEtaMom,
00101 Float_t GammaPhiMom,
00102 Float_t GammaEnFrac,
00103 Float_t ElecEta,
00104 Float_t ElecPhi,
00105 Float_t ElecPt,
00106 Float_t ElecPFMvaOutput,
00107 Float_t ElecEe,
00108 Float_t ElecEgamma,
00109 Float_t ElecPin,
00110 Float_t ElecPout,
00111 Float_t ElecEarlyBrem,
00112 Float_t ElecLateBrem,
00113 Float_t ElecFbrem,
00114 Float_t ElecChi2KF,
00115 Float_t ElecChi2GSF,
00116 Float_t ElecNumHits,
00117 Float_t ElecGSFTrackResol,
00118 Float_t ElecGSFTracklnPt,
00119 Float_t ElecGSFTrackEta);
00120
00121
00122 double MVAValue(const reco::PFTau& thePFTau,
00123 const reco::GsfElectron& theGsfEle);
00124
00125 double MVAValue(const reco::PFTau& thePFTau);
00126
00127 private:
00128
00129 void bookMVAs();
00130
00131 Bool_t isInitialized_;
00132 std::string methodName_;
00133 TMVA::Reader* fTMVAReader_[10];
00134
00135 Float_t GammadEta_;
00136 Float_t GammadPhi_;
00137 Float_t GammadPt_;
00138
00139 Float_t Tau_EtaAtEcalEntrance_;
00140 Float_t Tau_Pt_;
00141 Float_t Tau_HasGsf_;
00142 Float_t Tau_EmFraction_;
00143 Float_t Tau_NumChargedCands_;
00144 Float_t Tau_NumGammaCands_;
00145 Float_t Tau_HadrHoP_;
00146 Float_t Tau_HadrEoP_;
00147 Float_t Tau_VisMass_;
00148 Float_t Tau_GammaEtaMom_;
00149 Float_t Tau_GammaPhiMom_;
00150 Float_t Tau_GammaEnFrac_;
00151 Float_t Tau_HadrMva_;
00152
00153 Float_t Elec_Eta_;
00154 Float_t Elec_Pt_;
00155 Float_t Elec_PFMvaOutput_;
00156 Float_t Elec_Ee_;
00157 Float_t Elec_Egamma_;
00158 Float_t Elec_Pin_;
00159 Float_t Elec_Pout_;
00160 Float_t Elec_EtotOverPin_;
00161 Float_t Elec_EeOverPout_;
00162 Float_t Elec_EgammaOverPdif_;
00163 Float_t Elec_EarlyBrem_;
00164 Float_t Elec_LateBrem_;
00165 Float_t Elec_Fbrem_;
00166 Float_t Elec_Chi2KF_;
00167 Float_t Elec_Chi2GSF_;
00168 Float_t Elec_NumHits_;
00169 Float_t Elec_GSFTrackResol_;
00170 Float_t Elec_GSFTracklnPt_;
00171 Float_t Elec_GSFTrackEta_;
00172
00173 int verbosity_;
00174 };
00175
00176 #endif