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