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/ElectronLikelihood/interface/ElectronLikelihood.h" |
21 |
< |
#include "MitPhysics/ElectronLikelihood/interface/LikelihoodSwitches.h" |
22 |
< |
#include "MitPhysics/ElectronLikelihood/interface/LikelihoodMeasurements.h" |
23 |
< |
|
23 |
> |
#include "MitPhysics/Utils/interface/ElectronTools.h" |
24 |
|
|
25 |
|
class TRandom3; |
26 |
|
namespace TMVA { |
33 |
|
ElectronIDMVA(); |
34 |
|
~ElectronIDMVA(); |
35 |
|
|
36 |
+ |
enum MVAType { |
37 |
+ |
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 |
+ |
kIDHWW2012TrigV0 // HWW certified (Spring 2012) ID-only MVA |
46 |
+ |
}; |
47 |
+ |
|
48 |
+ |
|
49 |
+ |
void Initialize( std::string methodName, |
50 |
+ |
std::string weightsfile, |
51 |
+ |
ElectronIDMVA::MVAType type); |
52 |
+ |
void Initialize( std::string methodName, |
53 |
+ |
ElectronIDMVA::MVAType type, |
54 |
+ |
Bool_t useBinnedVersion, |
55 |
+ |
std::vector<std::string> weightsfiles ); |
56 |
|
void Initialize(TString methodName, |
57 |
|
TString Subdet0Pt10To20Weights , |
58 |
|
TString Subdet1Pt10To20Weights , |
60 |
|
TString Subdet0Pt20ToInfWeights, |
61 |
|
TString Subdet1Pt20ToInfWeights, |
62 |
|
TString Subdet2Pt20ToInfWeights, |
63 |
< |
ElectronLikelihood *LH ); |
63 |
> |
ElectronIDMVA::MVAType type ); |
64 |
|
|
65 |
|
Bool_t IsInitialized() const { return fIsInitialized; } |
66 |
< |
Double_t MVAValue(const Electron *ele, const Vertex *vertex); |
67 |
< |
Double_t MVAValue(Double_t ElePt , Double_t EleSCEta, |
66 |
> |
void bindVariables(); |
67 |
> |
UInt_t GetMVABin(double eta,double pt ) const; |
68 |
> |
|
69 |
> |
Double_t MVAValue(const Electron *ele, const Vertex *vertex, Bool_t printDebug = kFALSE); |
70 |
> |
Double_t MVAValue(const Electron *ele, const Vertex *vertex, |
71 |
> |
const PFCandidateCol *PFCands, |
72 |
> |
const PileupEnergyDensityCol *PileupEnergyDensity, |
73 |
> |
Double_t intRadius, |
74 |
> |
Bool_t printDebug = kFALSE); |
75 |
> |
Double_t MVAValue(const Electron *ele, const Vertex *vertex, |
76 |
> |
const PFCandidateCol *PFCands, |
77 |
> |
const PileupEnergyDensityCol *PileupEnergyDensity, |
78 |
> |
ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaTarget, |
79 |
> |
const ElectronCol *goodElectrons, |
80 |
> |
const MuonCol *goodMuons, |
81 |
> |
Bool_t printDebug = kFALSE); |
82 |
> |
Double_t MVAValue(Double_t ElePt , Double_t EleEta, |
83 |
> |
Double_t EleSigmaIEtaIEta, |
84 |
> |
Double_t EleDEtaIn, |
85 |
> |
Double_t EleDPhiIn, |
86 |
> |
Double_t EleHoverE, |
87 |
> |
Double_t EleD0, |
88 |
> |
Double_t EleDZ, |
89 |
> |
Double_t EleFBrem, |
90 |
> |
Double_t EleEOverP, |
91 |
> |
Double_t EleESeedClusterOverPout, |
92 |
> |
Double_t EleSigmaIPhiIPhi, |
93 |
> |
Double_t EleNBrem, |
94 |
> |
Double_t EleOneOverEMinusOneOverP, |
95 |
> |
Double_t EleESeedClusterOverPIn, |
96 |
> |
Double_t EleIP3d, |
97 |
> |
Double_t EleIP3dSig); |
98 |
> |
Double_t MVAValue(Double_t ElePt , Double_t EleEta, |
99 |
> |
Double_t PileupEnergyDensity, |
100 |
|
Double_t EleSigmaIEtaIEta, |
101 |
|
Double_t EleDEtaIn, |
102 |
|
Double_t EleDPhiIn, |
112 |
|
Double_t EleESeedClusterOverPIn, |
113 |
|
Double_t EleIP3d, |
114 |
|
Double_t EleIP3dSig, |
115 |
< |
Double_t EleStandardLikelihood ); |
116 |
< |
|
115 |
> |
Double_t EleGsfTrackChi2OverNdof, |
116 |
> |
Double_t EledEtaCalo, |
117 |
> |
Double_t EledPhiCalo, |
118 |
> |
Double_t EleR9, |
119 |
> |
Double_t EleSCEtaWidth, |
120 |
> |
Double_t EleSCPhiWidth, |
121 |
> |
Double_t EleCovIEtaIPhi, |
122 |
> |
Double_t ElePreShowerOverRaw, |
123 |
> |
Double_t EleChargedIso03, |
124 |
> |
Double_t EleNeutralHadronIso03, |
125 |
> |
Double_t EleGammaIso03, |
126 |
> |
Double_t EleChargedIso04, |
127 |
> |
Double_t EleNeutralHadronIso04, |
128 |
> |
Double_t EleGammaIso04, |
129 |
> |
Bool_t printDebug = kFALSE ); |
130 |
> |
Double_t MVAValue_IsoRings( Double_t ElePt, |
131 |
> |
Double_t EleSCEta, |
132 |
> |
Double_t ChargedIso_DR0p0To0p1, |
133 |
> |
Double_t ChargedIso_DR0p1To0p2, |
134 |
> |
Double_t ChargedIso_DR0p2To0p3, |
135 |
> |
Double_t ChargedIso_DR0p3To0p4, |
136 |
> |
Double_t ChargedIso_DR0p4To0p5, |
137 |
> |
Double_t GammaIso_DR0p0To0p1, |
138 |
> |
Double_t GammaIso_DR0p1To0p2, |
139 |
> |
Double_t GammaIso_DR0p2To0p3, |
140 |
> |
Double_t GammaIso_DR0p3To0p4, |
141 |
> |
Double_t GammaIso_DR0p4To0p5, |
142 |
> |
Double_t NeutralHadronIso_DR0p0To0p1, |
143 |
> |
Double_t NeutralHadronIso_DR0p1To0p2, |
144 |
> |
Double_t NeutralHadronIso_DR0p2To0p3, |
145 |
> |
Double_t NeutralHadronIso_DR0p3To0p4, |
146 |
> |
Double_t NeutralHadronIso_DR0p4To0p5, |
147 |
> |
Bool_t printDebug = kFALSE); |
148 |
> |
Double_t MVAValue_IDNonTrig( Double_t ElePt, |
149 |
> |
Double_t EleSCEta, |
150 |
> |
Double_t EleFBrem, |
151 |
> |
Double_t EleKFTrkChiSqr, |
152 |
> |
Double_t EleKFTrkNHits, |
153 |
> |
Double_t EleGsfTrackChi2OverNdof, |
154 |
> |
Double_t EleDEtaIn, |
155 |
> |
Double_t EleDPhiIn, |
156 |
> |
Double_t EledEtaCalo, |
157 |
> |
Double_t EleSigmaIEtaIEta, |
158 |
> |
Double_t EleSigmaIPhiIPhi, |
159 |
> |
Double_t EleSCEtaWidth, |
160 |
> |
Double_t EleSCPhiWidth, |
161 |
> |
Double_t EleE1x5OverE5x5, |
162 |
> |
Double_t EleR9, |
163 |
> |
Double_t EleHoverE, |
164 |
> |
Double_t EleEOverP, |
165 |
> |
Double_t EleOneOverEMinusOneOverP, |
166 |
> |
Double_t EleESeedClusterOverPout, |
167 |
> |
Double_t ElePreShowerOverRaw, |
168 |
> |
Bool_t printDebug = kFALSE); |
169 |
|
|
170 |
|
protected: |
171 |
< |
TMVA::Reader *fTMVAReader[6]; |
172 |
< |
TString fMethodname; |
69 |
< |
|
70 |
< |
ElectronLikelihood *fLH; //Likelihood |
171 |
> |
std::vector<TMVA::Reader*> fTMVAReader; |
172 |
> |
TString fMethodname; |
173 |
|
Bool_t fIsInitialized; |
174 |
< |
|
174 |
> |
MVAType fMVAType; |
175 |
> |
Bool_t fUseBinnedVersion; |
176 |
> |
UInt_t fNMVABins; |
177 |
> |
|
178 |
> |
Float_t fMVAVar_ElePt; |
179 |
> |
Float_t fMVAVar_EleEta; |
180 |
|
Float_t fMVAVar_EleSigmaIEtaIEta; |
181 |
|
Float_t fMVAVar_EleDEtaIn; |
182 |
|
Float_t fMVAVar_EleDPhiIn; |
192 |
|
Float_t fMVAVar_EleESeedClusterOverPIn; |
193 |
|
Float_t fMVAVar_EleIP3d; |
194 |
|
Float_t fMVAVar_EleIP3dSig; |
195 |
< |
Float_t fMVAVar_EleStandardLikelihood; |
196 |
< |
|
197 |
< |
|
195 |
> |
Float_t fMVAVar_EleGsfTrackChi2OverNdof; |
196 |
> |
Float_t fMVAVar_EledEtaCalo; |
197 |
> |
Float_t fMVAVar_EledPhiCalo; |
198 |
> |
Float_t fMVAVar_EleR9; |
199 |
> |
Float_t fMVAVar_EleSCEtaWidth; |
200 |
> |
Float_t fMVAVar_EleSCPhiWidth; |
201 |
> |
Float_t fMVAVar_EleCovIEtaIPhi; |
202 |
> |
Float_t fMVAVar_ElePreShowerOverRaw; |
203 |
> |
Float_t fMVAVar_EleChargedIso03OverPt; |
204 |
> |
Float_t fMVAVar_EleNeutralHadronIso03OverPt; |
205 |
> |
Float_t fMVAVar_EleGammaIso03OverPt; |
206 |
> |
Float_t fMVAVar_EleChargedIso04OverPt; |
207 |
> |
Float_t fMVAVar_EleNeutralHadronIso04OverPt; |
208 |
> |
Float_t fMVAVar_EleGammaIso04OverPt; |
209 |
> |
|
210 |
> |
Float_t fMVAVar_EleEEleClusterOverPout; |
211 |
> |
Float_t fMVAVar_EleKFTrkChiSqr; |
212 |
> |
Float_t fMVAVar_EleKFTrkNHits; |
213 |
> |
Float_t fMVAVar_EleKFTrkNLayers; |
214 |
> |
Float_t fMVAVar_EleE1x5OverE5x5; |
215 |
> |
|
216 |
> |
Float_t fMVAVar_ChargedIso_DR0p0To0p1; |
217 |
> |
Float_t fMVAVar_ChargedIso_DR0p1To0p2; |
218 |
> |
Float_t fMVAVar_ChargedIso_DR0p2To0p3; |
219 |
> |
Float_t fMVAVar_ChargedIso_DR0p3To0p4; |
220 |
> |
Float_t fMVAVar_ChargedIso_DR0p4To0p5; |
221 |
> |
Float_t fMVAVar_GammaIso_DR0p0To0p1; |
222 |
> |
Float_t fMVAVar_GammaIso_DR0p1To0p2; |
223 |
> |
Float_t fMVAVar_GammaIso_DR0p2To0p3; |
224 |
> |
Float_t fMVAVar_GammaIso_DR0p3To0p4; |
225 |
> |
Float_t fMVAVar_GammaIso_DR0p4To0p5; |
226 |
> |
Float_t fMVAVar_NeutralHadronIso_DR0p0To0p1; |
227 |
> |
Float_t fMVAVar_NeutralHadronIso_DR0p1To0p2; |
228 |
> |
Float_t fMVAVar_NeutralHadronIso_DR0p2To0p3; |
229 |
> |
Float_t fMVAVar_NeutralHadronIso_DR0p3To0p4; |
230 |
> |
Float_t fMVAVar_NeutralHadronIso_DR0p4To0p5; |
231 |
> |
|
232 |
> |
|
233 |
|
ClassDef(ElectronIDMVA, 0) // Muon tools |
234 |
|
}; |
235 |
|
} |