CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC4_patch1/src/RecoTauTag/RecoTau/interface/AntiElectronIDMVA3.h

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