CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoTauTag/RecoTau/interface/AntiElectronIDMVA2.h

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------------------------------
00002 // $Id $
00003 //
00004 // AntiElectronIDMVA2
00005 //
00006 // Helper Class for applying MVA anti-electron discrimination
00007 //
00008 // Authors: I.Naranjo
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     // RECOMMENDED:
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     // CV: this function can be called for all categories
00122     double MVAValue(const reco::PFTau& thePFTau, 
00123                     const reco::GsfElectron& theGsfEle);
00124     // CV: this function can be called for category 1 only !!
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