ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/interface/ElectronIDMVA.h
Revision: 1.14
Committed: Sun Jul 22 20:33:27 2012 UTC (12 years, 9 months ago) by sixie
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_029c, Mit_029b, Mit_029a, HEAD
Changes since 1.13: +17 -8 lines
Log Message:
add Post-ICHEP2012 ID+Iso Combined 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 ceballos 1.12 // for Rho definitons
26     #include "MitPhysics/Utils/interface/RhoUtilities.h"
27    
28 sixie 1.1 class TRandom3;
29     namespace TMVA {
30     class Reader;
31     }
32    
33     namespace mithep {
34     class ElectronIDMVA {
35     public:
36     ElectronIDMVA();
37     ~ElectronIDMVA();
38    
39 sixie 1.3 enum MVAType {
40 sixie 1.8 kUninitialized = 0,
41     kBaseline, // SigmaIEtaIEta, DEtaIn, DPhiIn, FBrem, SigmaIPhiIPhi, NBrem, OneOverEMinusOneOverP
42 sixie 1.14 kNoIPInfo, // kBaseline + EOverP, ESeedClusterOverPout, ESeedClusterOverPIn
43     kWithIPInfo, // kBaseline + d0 , IP3d, IP3dSig
44     kIDIsoCombined, // ID variables , PFIso03 , PFIso04
45     kIDEGamma2012TrigV0, // EGamma certified (Spring 2012) ID-only MVA
46     kIDEGamma2012NonTrigV0, // EGamma certified (Spring 2012) ID-only MVA
47     kIDEGamma2012NonTrigV1, // EGamma certified (Spring 2012) ID-only MVA, "official" version
48     kIsoRingsV0, // Isolation MVA with IsoRings as input
49     kIDHWW2012TrigV0, // HWW certified (Spring 2012) ID-only MVA
50     kIDIsoCombinedHWW2012TrigV4 // HWW ID+Iso Combined for trig ele
51 sixie 1.3 };
52    
53    
54 sixie 1.8 void Initialize( std::string methodName,
55     std::string weightsfile,
56 ceballos 1.12 ElectronIDMVA::MVAType type,
57     RhoUtilities::RhoType theRhoType = RhoUtilities::DEFAULT);
58 sixie 1.8 void Initialize( std::string methodName,
59     ElectronIDMVA::MVAType type,
60     Bool_t useBinnedVersion,
61 ceballos 1.12 std::vector<std::string> weightsfiles,
62     RhoUtilities::RhoType theRhoType = RhoUtilities::DEFAULT);
63 sixie 1.1 void Initialize(TString methodName,
64     TString Subdet0Pt10To20Weights ,
65     TString Subdet1Pt10To20Weights ,
66     TString Subdet2Pt10To20Weights,
67     TString Subdet0Pt20ToInfWeights,
68     TString Subdet1Pt20ToInfWeights,
69     TString Subdet2Pt20ToInfWeights,
70 ceballos 1.12 ElectronIDMVA::MVAType type,
71     RhoUtilities::RhoType theRhoType = RhoUtilities::DEFAULT);
72 sixie 1.1
73     Bool_t IsInitialized() const { return fIsInitialized; }
74 sixie 1.8 void bindVariables();
75     UInt_t GetMVABin(double eta,double pt ) const;
76    
77     Double_t MVAValue(const Electron *ele, const Vertex *vertex, Bool_t printDebug = kFALSE);
78 sixie 1.5 Double_t MVAValue(const Electron *ele, const Vertex *vertex,
79 sixie 1.6 const PFCandidateCol *PFCands,
80     const PileupEnergyDensityCol *PileupEnergyDensity,
81 sixie 1.7 Double_t intRadius,
82 sixie 1.6 Bool_t printDebug = kFALSE);
83 sixie 1.8 Double_t MVAValue(const Electron *ele, const Vertex *vertex,
84     const PFCandidateCol *PFCands,
85     const PileupEnergyDensityCol *PileupEnergyDensity,
86     ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaTarget,
87     const ElectronCol *goodElectrons,
88     const MuonCol *goodMuons,
89     Bool_t printDebug = kFALSE);
90 sixie 1.14 Double_t MVAValue(const Electron *ele, const Vertex *vertex,
91     const VertexCol *primaryVertices,
92     const PFCandidateCol *PFCands,
93     const PileupEnergyDensityCol *PileupEnergyDensity,
94     ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaTarget,
95     Bool_t printDebug = kFALSE);
96 sixie 1.5 Double_t MVAValue(Double_t ElePt , Double_t EleEta,
97 sixie 1.2 Double_t EleSigmaIEtaIEta,
98     Double_t EleDEtaIn,
99     Double_t EleDPhiIn,
100     Double_t EleHoverE,
101     Double_t EleD0,
102     Double_t EleDZ,
103     Double_t EleFBrem,
104     Double_t EleEOverP,
105     Double_t EleESeedClusterOverPout,
106     Double_t EleSigmaIPhiIPhi,
107     Double_t EleNBrem,
108     Double_t EleOneOverEMinusOneOverP,
109     Double_t EleESeedClusterOverPIn,
110     Double_t EleIP3d,
111 sixie 1.5 Double_t EleIP3dSig);
112     Double_t MVAValue(Double_t ElePt , Double_t EleEta,
113     Double_t PileupEnergyDensity,
114     Double_t EleSigmaIEtaIEta,
115     Double_t EleDEtaIn,
116     Double_t EleDPhiIn,
117     Double_t EleHoverE,
118     Double_t EleD0,
119     Double_t EleDZ,
120     Double_t EleFBrem,
121     Double_t EleEOverP,
122     Double_t EleESeedClusterOverPout,
123     Double_t EleSigmaIPhiIPhi,
124     Double_t EleNBrem,
125     Double_t EleOneOverEMinusOneOverP,
126     Double_t EleESeedClusterOverPIn,
127     Double_t EleIP3d,
128     Double_t EleIP3dSig,
129     Double_t EleGsfTrackChi2OverNdof,
130     Double_t EledEtaCalo,
131     Double_t EledPhiCalo,
132     Double_t EleR9,
133     Double_t EleSCEtaWidth,
134     Double_t EleSCPhiWidth,
135     Double_t EleCovIEtaIPhi,
136     Double_t ElePreShowerOverRaw,
137     Double_t EleChargedIso03,
138     Double_t EleNeutralHadronIso03,
139     Double_t EleGammaIso03,
140     Double_t EleChargedIso04,
141     Double_t EleNeutralHadronIso04,
142 sixie 1.6 Double_t EleGammaIso04,
143     Bool_t printDebug = kFALSE );
144 sixie 1.10 Double_t MVAValue_IsoRings( Double_t ElePt,
145     Double_t EleSCEta,
146     Double_t ChargedIso_DR0p0To0p1,
147     Double_t ChargedIso_DR0p1To0p2,
148     Double_t ChargedIso_DR0p2To0p3,
149     Double_t ChargedIso_DR0p3To0p4,
150     Double_t ChargedIso_DR0p4To0p5,
151     Double_t GammaIso_DR0p0To0p1,
152     Double_t GammaIso_DR0p1To0p2,
153     Double_t GammaIso_DR0p2To0p3,
154     Double_t GammaIso_DR0p3To0p4,
155     Double_t GammaIso_DR0p4To0p5,
156     Double_t NeutralHadronIso_DR0p0To0p1,
157     Double_t NeutralHadronIso_DR0p1To0p2,
158     Double_t NeutralHadronIso_DR0p2To0p3,
159     Double_t NeutralHadronIso_DR0p3To0p4,
160     Double_t NeutralHadronIso_DR0p4To0p5,
161     Bool_t printDebug = kFALSE);
162     Double_t MVAValue_IDNonTrig( Double_t ElePt,
163     Double_t EleSCEta,
164     Double_t EleFBrem,
165     Double_t EleKFTrkChiSqr,
166     Double_t EleKFTrkNHits,
167     Double_t EleGsfTrackChi2OverNdof,
168     Double_t EleDEtaIn,
169     Double_t EleDPhiIn,
170     Double_t EledEtaCalo,
171     Double_t EleSigmaIEtaIEta,
172     Double_t EleSigmaIPhiIPhi,
173     Double_t EleSCEtaWidth,
174     Double_t EleSCPhiWidth,
175     Double_t EleE1x5OverE5x5,
176     Double_t EleR9,
177     Double_t EleHoverE,
178     Double_t EleEOverP,
179     Double_t EleOneOverEMinusOneOverP,
180     Double_t EleESeedClusterOverPout,
181     Double_t ElePreShowerOverRaw,
182     Bool_t printDebug = kFALSE);
183 sixie 1.2
184 sixie 1.1 protected:
185 sixie 1.8 std::vector<TMVA::Reader*> fTMVAReader;
186     TString fMethodname;
187 sixie 1.1 Bool_t fIsInitialized;
188 sixie 1.8 MVAType fMVAType;
189     Bool_t fUseBinnedVersion;
190     UInt_t fNMVABins;
191 ceballos 1.12 RhoUtilities::RhoType fTheRhoType;
192 sixie 1.8
193     Float_t fMVAVar_ElePt;
194     Float_t fMVAVar_EleEta;
195 sixie 1.1 Float_t fMVAVar_EleSigmaIEtaIEta;
196     Float_t fMVAVar_EleDEtaIn;
197     Float_t fMVAVar_EleDPhiIn;
198     Float_t fMVAVar_EleHoverE;
199     Float_t fMVAVar_EleD0;
200     Float_t fMVAVar_EleDZ;
201     Float_t fMVAVar_EleFBrem;
202     Float_t fMVAVar_EleEOverP;
203     Float_t fMVAVar_EleESeedClusterOverPout;
204     Float_t fMVAVar_EleSigmaIPhiIPhi;
205     Float_t fMVAVar_EleNBrem;
206     Float_t fMVAVar_EleOneOverEMinusOneOverP;
207     Float_t fMVAVar_EleESeedClusterOverPIn;
208     Float_t fMVAVar_EleIP3d;
209     Float_t fMVAVar_EleIP3dSig;
210 sixie 1.5 Float_t fMVAVar_EleGsfTrackChi2OverNdof;
211     Float_t fMVAVar_EledEtaCalo;
212     Float_t fMVAVar_EledPhiCalo;
213     Float_t fMVAVar_EleR9;
214     Float_t fMVAVar_EleSCEtaWidth;
215     Float_t fMVAVar_EleSCPhiWidth;
216     Float_t fMVAVar_EleCovIEtaIPhi;
217     Float_t fMVAVar_ElePreShowerOverRaw;
218     Float_t fMVAVar_EleChargedIso03OverPt;
219     Float_t fMVAVar_EleNeutralHadronIso03OverPt;
220     Float_t fMVAVar_EleGammaIso03OverPt;
221     Float_t fMVAVar_EleChargedIso04OverPt;
222     Float_t fMVAVar_EleNeutralHadronIso04OverPt;
223     Float_t fMVAVar_EleGammaIso04OverPt;
224 sixie 1.8
225     Float_t fMVAVar_EleEEleClusterOverPout;
226     Float_t fMVAVar_EleKFTrkChiSqr;
227     Float_t fMVAVar_EleKFTrkNHits;
228 sixie 1.9 Float_t fMVAVar_EleKFTrkNLayers;
229 sixie 1.8 Float_t fMVAVar_EleE1x5OverE5x5;
230 sixie 1.14 Float_t fMVAVar_EleOneMinusE1x5OverE5x5;
231 sixie 1.8
232     Float_t fMVAVar_ChargedIso_DR0p0To0p1;
233     Float_t fMVAVar_ChargedIso_DR0p1To0p2;
234     Float_t fMVAVar_ChargedIso_DR0p2To0p3;
235     Float_t fMVAVar_ChargedIso_DR0p3To0p4;
236     Float_t fMVAVar_ChargedIso_DR0p4To0p5;
237     Float_t fMVAVar_GammaIso_DR0p0To0p1;
238     Float_t fMVAVar_GammaIso_DR0p1To0p2;
239     Float_t fMVAVar_GammaIso_DR0p2To0p3;
240     Float_t fMVAVar_GammaIso_DR0p3To0p4;
241     Float_t fMVAVar_GammaIso_DR0p4To0p5;
242     Float_t fMVAVar_NeutralHadronIso_DR0p0To0p1;
243     Float_t fMVAVar_NeutralHadronIso_DR0p1To0p2;
244     Float_t fMVAVar_NeutralHadronIso_DR0p2To0p3;
245     Float_t fMVAVar_NeutralHadronIso_DR0p3To0p4;
246     Float_t fMVAVar_NeutralHadronIso_DR0p4To0p5;
247    
248 sixie 1.14 Float_t fMVAVar_Rho;
249 sixie 1.8
250 sixie 1.1 ClassDef(ElectronIDMVA, 0) // Muon tools
251     };
252     }
253    
254     #endif