00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef RECOTAUTAG_RECOTAU_AntiElectronIDMVA3_H
00012 #define RECOTAUTAG_RECOTAU_AntiElectronIDMVA3_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 AntiElectronIDMVA3
00028 {
00029 public:
00030
00031 AntiElectronIDMVA3();
00032 ~AntiElectronIDMVA3();
00033
00034 void Initialize_from_file(const std::string& methodName,
00035 const std::string& oneProngNoEleMatch0Pi0woGSF_BL,
00036 const std::string& oneProngNoEleMatch0Pi0wGSF_BL,
00037 const std::string& oneProngNoEleMatch1Pi0woGSF_BL,
00038 const std::string& oneProngNoEleMatch1Pi0wGSF_BL,
00039 const std::string& oneProng0Pi0woGSF_BL,
00040 const std::string& oneProng0Pi0wGSF_BL,
00041 const std::string& oneProng1Pi0woGSF_BL,
00042 const std::string& oneProng1Pi0wGSF_BL,
00043 const std::string& oneProngNoEleMatch0Pi0woGSF_EC,
00044 const std::string& oneProngNoEleMatch0Pi0wGSF_EC,
00045 const std::string& oneProngNoEleMatch1Pi0woGSF_EC,
00046 const std::string& oneProngNoEleMatch1Pi0wGSF_EC,
00047 const std::string& oneProng0Pi0woGSF_EC,
00048 const std::string& oneProng0Pi0wGSF_EC,
00049 const std::string& oneProng1Pi0woGSF_EC,
00050 const std::string& oneProng1Pi0wGSF_EC);
00051
00052 void Initialize_from_string(const std::string& methodName,
00053 const std::string& oneProngNoEleMatch0Pi0woGSF_BL,
00054 const std::string& oneProngNoEleMatch0Pi0wGSF_BL,
00055 const std::string& oneProngNoEleMatch1Pi0woGSF_BL,
00056 const std::string& oneProngNoEleMatch1Pi0wGSF_BL,
00057 const std::string& oneProng0Pi0woGSF_BL,
00058 const std::string& oneProng0Pi0wGSF_BL,
00059 const std::string& oneProng1Pi0woGSF_BL,
00060 const std::string& oneProng1Pi0wGSF_BL,
00061 const std::string& oneProngNoEleMatch0Pi0woGSF_EC,
00062 const std::string& oneProngNoEleMatch0Pi0wGSF_EC,
00063 const std::string& oneProngNoEleMatch1Pi0woGSF_EC,
00064 const std::string& oneProngNoEleMatch1Pi0wGSF_EC,
00065 const std::string& oneProng0Pi0woGSF_EC,
00066 const std::string& oneProng0Pi0wGSF_EC,
00067 const std::string& oneProng1Pi0woGSF_EC,
00068 const std::string& oneProng1Pi0wGSF_EC);
00069
00070 double MVAValue(Float_t TauEtaAtEcalEntrance,
00071 Float_t TauPt,
00072 Float_t TaudCrackEta,
00073 Float_t TaudCrackPhi,
00074 Float_t TauEmFraction,
00075 Float_t TauSignalPFGammaCands,
00076 Float_t TauLeadPFChargedHadrHoP,
00077 Float_t TauLeadPFChargedHadrEoP,
00078 Float_t TauVisMass,
00079 Float_t TauHadrMva,
00080 const std::vector<Float_t>& GammasdEta,
00081 const std::vector<Float_t>& GammasdPhi,
00082 const std::vector<Float_t>& GammasPt,
00083 Float_t TauKFNumHits,
00084 Float_t TauGSFNumHits,
00085 Float_t TauGSFChi2,
00086 Float_t TauGSFTrackResol,
00087 Float_t TauGSFTracklnPt,
00088 Float_t TauGSFTrackEta,
00089 Float_t TauPhi,
00090 Float_t TauSignalPFChargedCands,
00091 Float_t TauHasGsf,
00092 Float_t ElecEta,
00093 Float_t ElecPhi,
00094 Float_t ElecPt,
00095 Float_t ElecEe,
00096 Float_t ElecEgamma,
00097 Float_t ElecPin,
00098 Float_t ElecPout,
00099 Float_t ElecFbrem,
00100 Float_t ElecChi2GSF,
00101 Float_t ElecGSFNumHits,
00102 Float_t ElecGSFTrackResol,
00103 Float_t ElecGSFTracklnPt,
00104 Float_t ElecGSFTrackEta);
00105
00106 double MVAValue(Float_t TauEtaAtEcalEntrance,
00107 Float_t TauPt,
00108 Float_t TaudCrackEta,
00109 Float_t TaudCrackPhi,
00110 Float_t TauEmFraction,
00111 Float_t TauSignalPFGammaCands,
00112 Float_t TauLeadPFChargedHadrHoP,
00113 Float_t TauLeadPFChargedHadrEoP,
00114 Float_t TauVisMass,
00115 Float_t TauHadrMva,
00116 Float_t TauGammaEtaMom,
00117 Float_t TauGammaPhiMom,
00118 Float_t TauGammaEnFrac,
00119 Float_t TauKFNumHits,
00120 Float_t TauGSFNumHits,
00121 Float_t TauGSFChi2,
00122 Float_t TauGSFTrackResol,
00123 Float_t TauGSFTracklnPt,
00124 Float_t TauGSFTrackEta,
00125 Float_t TauPhi,
00126 Float_t TauSignalPFChargedCands,
00127 Float_t TauHasGsf,
00128 Float_t ElecEta,
00129 Float_t ElecPhi,
00130 Float_t ElecPt,
00131 Float_t ElecEe,
00132 Float_t ElecEgamma,
00133 Float_t ElecPin,
00134 Float_t ElecPout,
00135 Float_t ElecFbrem,
00136 Float_t ElecChi2GSF,
00137 Float_t ElecGSFNumHits,
00138 Float_t ElecGSFTrackResol,
00139 Float_t ElecGSFTracklnPt,
00140 Float_t ElecGSFTrackEta);
00141
00142
00143 double MVAValue(const reco::PFTau& thePFTau,
00144 const reco::GsfElectron& theGsfEle);
00145
00146 double MVAValue(const reco::PFTau& thePFTau);
00147
00148 private:
00149
00150 void bookMVAs();
00151 double dCrackEta(double eta);
00152 double minimum(double a,double b);
00153 double dCrackPhi(double phi, double eta);
00154 Bool_t isInitialized_;
00155 std::string methodName_;
00156 TMVA::Reader* fTMVAReader_[16];
00157
00158 Float_t GammadEta_;
00159 Float_t GammadPhi_;
00160 Float_t GammadPt_;
00161
00162 Float_t Tau_EtaAtEcalEntrance_;
00163 Float_t Tau_Pt_;
00164 Float_t Tau_dCrackEta_;
00165 Float_t Tau_dCrackPhi_;
00166 Float_t Tau_EmFraction_;
00167 Float_t Tau_NumGammaCands_;
00168 Float_t Tau_HadrHoP_;
00169 Float_t Tau_HadrEoP_;
00170 Float_t Tau_VisMass_;
00171 Float_t Tau_HadrMva_;
00172 Float_t Tau_GammaEtaMom_;
00173 Float_t Tau_GammaPhiMom_;
00174 Float_t Tau_GammaEnFrac_;
00175 Float_t Tau_GSFChi2_;
00176 Float_t Tau_NumHitsVariable_;
00177 Float_t Tau_GSFTrackResol_;
00178 Float_t Tau_GSFTracklnPt_;
00179 Float_t Tau_GSFTrackEta_;
00180
00181 Float_t Elec_EtotOverPin_;
00182 Float_t Elec_EgammaOverPdif_;
00183 Float_t Elec_Fbrem_;
00184 Float_t Elec_Chi2GSF_;
00185 Float_t Elec_GSFNumHits_;
00186 Float_t Elec_GSFTrackResol_;
00187 Float_t Elec_GSFTracklnPt_;
00188 Float_t Elec_GSFTrackEta_;
00189
00190 int verbosity_;
00191 };
00192
00193 #endif