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

# Content
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 #include "MitAna/DataTree/interface/MuonCol.h"
20 #include "MitAna/DataTree/interface/PFCandidateCol.h"
21 #include "MitAna/DataTree/interface/PileupEnergyDensityCol.h"
22 #include "MitCommon/MathTools/interface/MathUtils.h"
23 #include "MitPhysics/Utils/interface/ElectronTools.h"
24
25 // for Rho definitons
26 #include "MitPhysics/Utils/interface/RhoUtilities.h"
27
28 class TRandom3;
29 namespace TMVA {
30 class Reader;
31 }
32
33 namespace mithep {
34 class ElectronIDMVA {
35 public:
36 ElectronIDMVA();
37 ~ElectronIDMVA();
38
39 enum MVAType {
40 kUninitialized = 0,
41 kBaseline, // SigmaIEtaIEta, DEtaIn, DPhiIn, FBrem, SigmaIPhiIPhi, NBrem, OneOverEMinusOneOverP
42 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 };
52
53
54 void Initialize( std::string methodName,
55 std::string weightsfile,
56 ElectronIDMVA::MVAType type,
57 RhoUtilities::RhoType theRhoType = RhoUtilities::DEFAULT);
58 void Initialize( std::string methodName,
59 ElectronIDMVA::MVAType type,
60 Bool_t useBinnedVersion,
61 std::vector<std::string> weightsfiles,
62 RhoUtilities::RhoType theRhoType = RhoUtilities::DEFAULT);
63 void Initialize(TString methodName,
64 TString Subdet0Pt10To20Weights ,
65 TString Subdet1Pt10To20Weights ,
66 TString Subdet2Pt10To20Weights,
67 TString Subdet0Pt20ToInfWeights,
68 TString Subdet1Pt20ToInfWeights,
69 TString Subdet2Pt20ToInfWeights,
70 ElectronIDMVA::MVAType type,
71 RhoUtilities::RhoType theRhoType = RhoUtilities::DEFAULT);
72
73 Bool_t IsInitialized() const { return fIsInitialized; }
74 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 Double_t MVAValue(const Electron *ele, const Vertex *vertex,
79 const PFCandidateCol *PFCands,
80 const PileupEnergyDensityCol *PileupEnergyDensity,
81 Double_t intRadius,
82 Bool_t printDebug = kFALSE);
83 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 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 Double_t MVAValue(Double_t ElePt , Double_t EleEta,
97 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 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 Double_t EleGammaIso04,
143 Bool_t printDebug = kFALSE );
144 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
184 protected:
185 std::vector<TMVA::Reader*> fTMVAReader;
186 TString fMethodname;
187 Bool_t fIsInitialized;
188 MVAType fMVAType;
189 Bool_t fUseBinnedVersion;
190 UInt_t fNMVABins;
191 RhoUtilities::RhoType fTheRhoType;
192
193 Float_t fMVAVar_ElePt;
194 Float_t fMVAVar_EleEta;
195 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 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
225 Float_t fMVAVar_EleEEleClusterOverPout;
226 Float_t fMVAVar_EleKFTrkChiSqr;
227 Float_t fMVAVar_EleKFTrkNHits;
228 Float_t fMVAVar_EleKFTrkNLayers;
229 Float_t fMVAVar_EleE1x5OverE5x5;
230 Float_t fMVAVar_EleOneMinusE1x5OverE5x5;
231
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 Float_t fMVAVar_Rho;
249
250 ClassDef(ElectronIDMVA, 0) // Muon tools
251 };
252 }
253
254 #endif