ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/interface/ElectronIDMVA.h
Revision: 1.8
Committed: Sun Apr 15 12:08:19 2012 UTC (13 years ago) by sixie
Content type: text/plain
Branch: MAIN
Changes since 1.7: +59 -10 lines
Log Message:
add interface to new electron ID mva. add functionality to allow custom defined binning. add interface to isolation mva

File Contents

# User Rev Content
1 sixie 1.1 //--------------------------------------------------------------------------------------------------
2     // $Id $
3     //
4     // ElectronIDMVA
5     //
6     // Helper Class for Electron Identification MVA
7     //
8     // Authors: S.Xie
9     //--------------------------------------------------------------------------------------------------
10    
11     #ifndef MITPHYSICS_UTILS_ElectronIDMVA_H
12     #define MITPHYSICS_UTILS_ElectronIDMVA_H
13    
14     #include "MitAna/DataTree/interface/ElectronFwd.h"
15     #include "MitAna/DataTree/interface/VertexFwd.h"
16     #include "MitAna/DataTree/interface/TrackFwd.h"
17     #include "MitAna/DataTree/interface/Electron.h"
18     #include "MitAna/DataTree/interface/ElectronCol.h"
19 sixie 1.8 #include "MitAna/DataTree/interface/MuonCol.h"
20 sixie 1.5 #include "MitAna/DataTree/interface/PFCandidateCol.h"
21     #include "MitAna/DataTree/interface/PileupEnergyDensityCol.h"
22 sixie 1.1 #include "MitCommon/MathTools/interface/MathUtils.h"
23 sixie 1.8 #include "MitPhysics/Utils/interface/ElectronTools.h"
24 sixie 1.1
25     class TRandom3;
26     namespace TMVA {
27     class Reader;
28     }
29    
30     namespace mithep {
31     class ElectronIDMVA {
32     public:
33     ElectronIDMVA();
34     ~ElectronIDMVA();
35    
36 sixie 1.3 enum MVAType {
37 sixie 1.8 kUninitialized = 0,
38     kBaseline, // SigmaIEtaIEta, DEtaIn, DPhiIn, FBrem, SigmaIPhiIPhi, NBrem, OneOverEMinusOneOverP
39     kNoIPInfo, // kBaseline + EOverP, ESeedClusterOverPout, ESeedClusterOverPIn
40     kWithIPInfo, // kBaseline + d0 , IP3d, IP3dSig
41     kIDIsoCombined, // ID variables , PFIso03 , PFIso04
42     kIDEGamma2012TrigV0, // EGamma certified (Spring 2012) ID-only MVA
43     kIDEGamma2012NonTrigV0, // EGamma certified (Spring 2012) ID-only MVA
44     kIsoRingsV0 // Isolation MVA with IsoRings as input
45 sixie 1.3 };
46    
47    
48 sixie 1.8 void Initialize( std::string methodName,
49     std::string weightsfile,
50     ElectronIDMVA::MVAType type);
51     void Initialize( std::string methodName,
52     ElectronIDMVA::MVAType type,
53     Bool_t useBinnedVersion,
54     std::vector<std::string> weightsfiles );
55 sixie 1.1 void Initialize(TString methodName,
56     TString Subdet0Pt10To20Weights ,
57     TString Subdet1Pt10To20Weights ,
58     TString Subdet2Pt10To20Weights,
59     TString Subdet0Pt20ToInfWeights,
60     TString Subdet1Pt20ToInfWeights,
61     TString Subdet2Pt20ToInfWeights,
62 sixie 1.3 ElectronIDMVA::MVAType type );
63 sixie 1.1
64     Bool_t IsInitialized() const { return fIsInitialized; }
65 sixie 1.8 void bindVariables();
66     UInt_t GetMVABin(double eta,double pt ) const;
67    
68     Double_t MVAValue(const Electron *ele, const Vertex *vertex, Bool_t printDebug = kFALSE);
69 sixie 1.5 Double_t MVAValue(const Electron *ele, const Vertex *vertex,
70 sixie 1.6 const PFCandidateCol *PFCands,
71     const PileupEnergyDensityCol *PileupEnergyDensity,
72 sixie 1.7 Double_t intRadius,
73 sixie 1.6 Bool_t printDebug = kFALSE);
74 sixie 1.8 Double_t MVAValue(const Electron *ele, const Vertex *vertex,
75     const PFCandidateCol *PFCands,
76     const PileupEnergyDensityCol *PileupEnergyDensity,
77     ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaTarget,
78     const ElectronCol *goodElectrons,
79     const MuonCol *goodMuons,
80     Bool_t printDebug = kFALSE);
81 sixie 1.5 Double_t MVAValue(Double_t ElePt , Double_t EleEta,
82 sixie 1.2 Double_t EleSigmaIEtaIEta,
83     Double_t EleDEtaIn,
84     Double_t EleDPhiIn,
85     Double_t EleHoverE,
86     Double_t EleD0,
87     Double_t EleDZ,
88     Double_t EleFBrem,
89     Double_t EleEOverP,
90     Double_t EleESeedClusterOverPout,
91     Double_t EleSigmaIPhiIPhi,
92     Double_t EleNBrem,
93     Double_t EleOneOverEMinusOneOverP,
94     Double_t EleESeedClusterOverPIn,
95     Double_t EleIP3d,
96 sixie 1.5 Double_t EleIP3dSig);
97     Double_t MVAValue(Double_t ElePt , Double_t EleEta,
98     Double_t PileupEnergyDensity,
99     Double_t EleSigmaIEtaIEta,
100     Double_t EleDEtaIn,
101     Double_t EleDPhiIn,
102     Double_t EleHoverE,
103     Double_t EleD0,
104     Double_t EleDZ,
105     Double_t EleFBrem,
106     Double_t EleEOverP,
107     Double_t EleESeedClusterOverPout,
108     Double_t EleSigmaIPhiIPhi,
109     Double_t EleNBrem,
110     Double_t EleOneOverEMinusOneOverP,
111     Double_t EleESeedClusterOverPIn,
112     Double_t EleIP3d,
113     Double_t EleIP3dSig,
114     Double_t EleGsfTrackChi2OverNdof,
115     Double_t EledEtaCalo,
116     Double_t EledPhiCalo,
117     Double_t EleR9,
118     Double_t EleSCEtaWidth,
119     Double_t EleSCPhiWidth,
120     Double_t EleCovIEtaIPhi,
121     Double_t ElePreShowerOverRaw,
122     Double_t EleChargedIso03,
123     Double_t EleNeutralHadronIso03,
124     Double_t EleGammaIso03,
125     Double_t EleChargedIso04,
126     Double_t EleNeutralHadronIso04,
127 sixie 1.6 Double_t EleGammaIso04,
128     Bool_t printDebug = kFALSE );
129 sixie 1.2
130    
131 sixie 1.1 protected:
132 sixie 1.8 std::vector<TMVA::Reader*> fTMVAReader;
133     TString fMethodname;
134 sixie 1.1 Bool_t fIsInitialized;
135 sixie 1.8 MVAType fMVAType;
136     Bool_t fUseBinnedVersion;
137     UInt_t fNMVABins;
138    
139     Float_t fMVAVar_ElePt;
140     Float_t fMVAVar_EleEta;
141 sixie 1.1 Float_t fMVAVar_EleSigmaIEtaIEta;
142     Float_t fMVAVar_EleDEtaIn;
143     Float_t fMVAVar_EleDPhiIn;
144     Float_t fMVAVar_EleHoverE;
145     Float_t fMVAVar_EleD0;
146     Float_t fMVAVar_EleDZ;
147     Float_t fMVAVar_EleFBrem;
148     Float_t fMVAVar_EleEOverP;
149     Float_t fMVAVar_EleESeedClusterOverPout;
150     Float_t fMVAVar_EleSigmaIPhiIPhi;
151     Float_t fMVAVar_EleNBrem;
152     Float_t fMVAVar_EleOneOverEMinusOneOverP;
153     Float_t fMVAVar_EleESeedClusterOverPIn;
154     Float_t fMVAVar_EleIP3d;
155     Float_t fMVAVar_EleIP3dSig;
156 sixie 1.5 Float_t fMVAVar_EleGsfTrackChi2OverNdof;
157     Float_t fMVAVar_EledEtaCalo;
158     Float_t fMVAVar_EledPhiCalo;
159     Float_t fMVAVar_EleR9;
160     Float_t fMVAVar_EleSCEtaWidth;
161     Float_t fMVAVar_EleSCPhiWidth;
162     Float_t fMVAVar_EleCovIEtaIPhi;
163     Float_t fMVAVar_ElePreShowerOverRaw;
164     Float_t fMVAVar_EleChargedIso03OverPt;
165     Float_t fMVAVar_EleNeutralHadronIso03OverPt;
166     Float_t fMVAVar_EleGammaIso03OverPt;
167     Float_t fMVAVar_EleChargedIso04OverPt;
168     Float_t fMVAVar_EleNeutralHadronIso04OverPt;
169     Float_t fMVAVar_EleGammaIso04OverPt;
170 sixie 1.8
171     Float_t fMVAVar_EleEEleClusterOverPout;
172     Float_t fMVAVar_EleKFTrkChiSqr;
173     Float_t fMVAVar_EleKFTrkNHits;
174     Float_t fMVAVar_EleE1x5OverE5x5;
175    
176     Float_t fMVAVar_ChargedIso_DR0p0To0p1;
177     Float_t fMVAVar_ChargedIso_DR0p1To0p2;
178     Float_t fMVAVar_ChargedIso_DR0p2To0p3;
179     Float_t fMVAVar_ChargedIso_DR0p3To0p4;
180     Float_t fMVAVar_ChargedIso_DR0p4To0p5;
181     Float_t fMVAVar_GammaIso_DR0p0To0p1;
182     Float_t fMVAVar_GammaIso_DR0p1To0p2;
183     Float_t fMVAVar_GammaIso_DR0p2To0p3;
184     Float_t fMVAVar_GammaIso_DR0p3To0p4;
185     Float_t fMVAVar_GammaIso_DR0p4To0p5;
186     Float_t fMVAVar_NeutralHadronIso_DR0p0To0p1;
187     Float_t fMVAVar_NeutralHadronIso_DR0p1To0p2;
188     Float_t fMVAVar_NeutralHadronIso_DR0p2To0p3;
189     Float_t fMVAVar_NeutralHadronIso_DR0p3To0p4;
190     Float_t fMVAVar_NeutralHadronIso_DR0p4To0p5;
191    
192    
193 sixie 1.1 ClassDef(ElectronIDMVA, 0) // Muon tools
194     };
195     }
196    
197     #endif