18 |
|
fIsInitialized(kFALSE), |
19 |
|
fMVAType(ElectronIDMVA::kUninitialized), |
20 |
|
fUseBinnedVersion(kTRUE), |
21 |
< |
fNMVABins(0) |
21 |
> |
fNMVABins(0), |
22 |
> |
fTheRhoType(RhoUtilities::DEFAULT) |
23 |
|
{ |
24 |
|
// Constructor. |
25 |
|
} |
36 |
|
//-------------------------------------------------------------------------------------------------- |
37 |
|
void ElectronIDMVA::Initialize( std::string methodName, |
38 |
|
std::string weightsfile, |
39 |
< |
ElectronIDMVA::MVAType type) |
39 |
> |
ElectronIDMVA::MVAType type, |
40 |
> |
RhoUtilities::RhoType theRhoType) |
41 |
|
{ |
42 |
|
|
43 |
|
std::vector<std::string> tempWeightFileVector; |
44 |
|
tempWeightFileVector.push_back(weightsfile); |
45 |
< |
Initialize(methodName,type,kFALSE,tempWeightFileVector); |
45 |
> |
Initialize(methodName,type,kFALSE,tempWeightFileVector,theRhoType); |
46 |
|
} |
47 |
|
|
48 |
|
//-------------------------------------------------------------------------------------------------- |
53 |
|
TString Subdet0Pt20ToInfWeights, |
54 |
|
TString Subdet1Pt20ToInfWeights, |
55 |
|
TString Subdet2Pt20ToInfWeights, |
56 |
< |
ElectronIDMVA::MVAType type) { |
56 |
> |
ElectronIDMVA::MVAType type, |
57 |
> |
RhoUtilities::RhoType theRhoType) { |
58 |
|
|
59 |
|
std::vector<std::string> tempWeightFileVector; |
60 |
|
tempWeightFileVector.push_back(std::string(Subdet0Pt10To20Weights.Data())); |
63 |
|
tempWeightFileVector.push_back(std::string(Subdet0Pt20ToInfWeights.Data())); |
64 |
|
tempWeightFileVector.push_back(std::string(Subdet1Pt20ToInfWeights.Data())); |
65 |
|
tempWeightFileVector.push_back(std::string(Subdet2Pt20ToInfWeights.Data())); |
66 |
< |
Initialize(std::string(methodName.Data()),type,kTRUE,tempWeightFileVector); |
66 |
> |
Initialize(std::string(methodName.Data()),type,kTRUE,tempWeightFileVector,theRhoType); |
67 |
|
|
68 |
|
} |
69 |
|
|
70 |
|
|
71 |
|
//-------------------------------------------------------------------------------------------------- |
72 |
< |
void ElectronIDMVA::Initialize( std::string methodName, |
73 |
< |
ElectronIDMVA::MVAType type, |
74 |
< |
Bool_t useBinnedVersion, |
75 |
< |
std::vector<std::string> weightsfiles |
72 |
> |
void ElectronIDMVA::Initialize( std::string methodName, |
73 |
> |
ElectronIDMVA::MVAType type, |
74 |
> |
Bool_t useBinnedVersion, |
75 |
> |
std::vector<std::string> weightsfiles, |
76 |
> |
RhoUtilities::RhoType theRhoType |
77 |
|
|
78 |
|
) { |
79 |
|
|
88 |
|
fMethodname = methodName; |
89 |
|
fMVAType = type; |
90 |
|
fUseBinnedVersion = useBinnedVersion; |
91 |
+ |
fTheRhoType = theRhoType; |
92 |
|
|
93 |
|
//Define expected number of bins |
94 |
|
UInt_t ExpectedNBins = 0; |
100 |
|
||type == kIDIsoCombined) { |
101 |
|
ExpectedNBins = 6; |
102 |
|
} else if (type == kIDEGamma2012TrigV0 || |
103 |
< |
type == kIDEGamma2012NonTrigV0) { |
103 |
> |
type == kIDEGamma2012NonTrigV0 || |
104 |
> |
type == kIDEGamma2012NonTrigV1 || |
105 |
> |
type == kIDHWW2012TrigV0 || |
106 |
> |
type == kIDIsoCombinedHWW2012TrigV4 |
107 |
> |
|
108 |
> |
) { |
109 |
|
ExpectedNBins = 6; |
110 |
|
} else if (type == kIsoRingsV0) { |
111 |
|
ExpectedNBins = 4; |
193 |
|
|
194 |
|
} |
195 |
|
|
196 |
< |
if (type == kIDEGamma2012TrigV0 || type == kIDEGamma2012NonTrigV0 ) { |
196 |
> |
if (type == kIDEGamma2012TrigV0 || type == kIDHWW2012TrigV0) { |
197 |
|
// Pure tracking variables |
198 |
|
tmpTMVAReader->AddVariable("fbrem", &fMVAVar_EleFBrem); |
199 |
|
tmpTMVAReader->AddVariable("kfchi2", &fMVAVar_EleKFTrkChiSqr); |
200 |
< |
tmpTMVAReader->AddVariable("kfhits", &fMVAVar_EleKFTrkNHits); //Don't have this in BAMBU |
200 |
> |
tmpTMVAReader->AddVariable("kfhits", &fMVAVar_EleKFTrkNLayers); //Don't have this in (BAMBU <= 025) |
201 |
> |
if(type == kIDEGamma2012TrigV0) |
202 |
> |
tmpTMVAReader->AddVariable("kfhitsall", &fMVAVar_EleKFTrkNHits); |
203 |
> |
tmpTMVAReader->AddVariable("gsfchi2", &fMVAVar_EleGsfTrackChi2OverNdof); |
204 |
> |
tmpTMVAReader->AddVariable("deta", &fMVAVar_EleDEtaIn); |
205 |
> |
tmpTMVAReader->AddVariable("dphi", &fMVAVar_EleDPhiIn); |
206 |
> |
tmpTMVAReader->AddVariable("detacalo", &fMVAVar_EledEtaCalo); |
207 |
> |
tmpTMVAReader->AddVariable("see", &fMVAVar_EleSigmaIEtaIEta); |
208 |
> |
tmpTMVAReader->AddVariable("spp", &fMVAVar_EleSigmaIPhiIPhi); |
209 |
> |
tmpTMVAReader->AddVariable("etawidth", &fMVAVar_EleSCEtaWidth); |
210 |
> |
tmpTMVAReader->AddVariable("phiwidth", &fMVAVar_EleSCPhiWidth); |
211 |
> |
tmpTMVAReader->AddVariable("e1x5e5x5", &fMVAVar_EleE1x5OverE5x5); |
212 |
> |
tmpTMVAReader->AddVariable("R9", &fMVAVar_EleR9); |
213 |
> |
tmpTMVAReader->AddVariable("HoE", &fMVAVar_EleHoverE); |
214 |
> |
tmpTMVAReader->AddVariable("EoP", &fMVAVar_EleEOverP); |
215 |
> |
tmpTMVAReader->AddVariable("IoEmIoP", &fMVAVar_EleOneOverEMinusOneOverP); |
216 |
> |
tmpTMVAReader->AddVariable("eleEoPout", &fMVAVar_EleEEleClusterOverPout); //Don't have this in (BAMBU <= 025) |
217 |
> |
if(type == kIDEGamma2012TrigV0) |
218 |
> |
tmpTMVAReader->AddVariable("EoPout", &fMVAVar_EleESeedClusterOverPout); |
219 |
> |
if (i == 2 || i == 5) { |
220 |
> |
tmpTMVAReader->AddVariable( "PreShowerOverRaw", &fMVAVar_ElePreShowerOverRaw ); |
221 |
> |
} |
222 |
> |
tmpTMVAReader->AddVariable( "d0", &fMVAVar_EleD0); |
223 |
> |
tmpTMVAReader->AddVariable( "ip3d", &fMVAVar_EleIP3d); |
224 |
> |
|
225 |
> |
tmpTMVAReader->AddSpectator("eta", &fMVAVar_EleEta); |
226 |
> |
tmpTMVAReader->AddSpectator("pt", &fMVAVar_ElePt); |
227 |
> |
} |
228 |
> |
|
229 |
> |
if (type == kIDEGamma2012NonTrigV0 ) { |
230 |
> |
// Pure tracking variables |
231 |
> |
tmpTMVAReader->AddVariable("fbrem", &fMVAVar_EleFBrem); |
232 |
> |
tmpTMVAReader->AddVariable("kfchi2", &fMVAVar_EleKFTrkChiSqr); |
233 |
|
tmpTMVAReader->AddVariable("kfhitsall", &fMVAVar_EleKFTrkNHits); |
234 |
|
tmpTMVAReader->AddVariable("gsfchi2", &fMVAVar_EleGsfTrackChi2OverNdof); |
235 |
|
tmpTMVAReader->AddVariable("deta", &fMVAVar_EleDEtaIn); |
244 |
|
tmpTMVAReader->AddVariable("HoE", &fMVAVar_EleHoverE); |
245 |
|
tmpTMVAReader->AddVariable("EoP", &fMVAVar_EleEOverP); |
246 |
|
tmpTMVAReader->AddVariable("IoEmIoP", &fMVAVar_EleOneOverEMinusOneOverP); |
247 |
+ |
tmpTMVAReader->AddVariable("EoPout", &fMVAVar_EleESeedClusterOverPout); |
248 |
+ |
if (i==2 || i==5) { |
249 |
+ |
tmpTMVAReader->AddVariable("PreShowerOverRaw",&fMVAVar_ElePreShowerOverRaw); |
250 |
+ |
} |
251 |
+ |
tmpTMVAReader->AddSpectator("eta", &fMVAVar_EleEta); |
252 |
+ |
tmpTMVAReader->AddSpectator("pt", &fMVAVar_ElePt); |
253 |
+ |
} |
254 |
+ |
|
255 |
+ |
if (type == kIDEGamma2012NonTrigV1 ) { |
256 |
+ |
// Pure tracking variables |
257 |
+ |
tmpTMVAReader->AddVariable("fbrem", &fMVAVar_EleFBrem); |
258 |
+ |
tmpTMVAReader->AddVariable("kfchi2", &fMVAVar_EleKFTrkChiSqr); |
259 |
+ |
tmpTMVAReader->AddVariable("kfhits", &fMVAVar_EleKFTrkNLayers); |
260 |
+ |
tmpTMVAReader->AddVariable("gsfchi2", &fMVAVar_EleGsfTrackChi2OverNdof); |
261 |
+ |
tmpTMVAReader->AddVariable("deta", &fMVAVar_EleDEtaIn); |
262 |
+ |
tmpTMVAReader->AddVariable("dphi", &fMVAVar_EleDPhiIn); |
263 |
+ |
tmpTMVAReader->AddVariable("detacalo", &fMVAVar_EledEtaCalo); |
264 |
+ |
tmpTMVAReader->AddVariable("see", &fMVAVar_EleSigmaIEtaIEta); |
265 |
+ |
tmpTMVAReader->AddVariable("spp", &fMVAVar_EleSigmaIPhiIPhi); |
266 |
+ |
tmpTMVAReader->AddVariable("etawidth", &fMVAVar_EleSCEtaWidth); |
267 |
+ |
tmpTMVAReader->AddVariable("phiwidth", &fMVAVar_EleSCPhiWidth); |
268 |
+ |
tmpTMVAReader->AddVariable("e1x5e5x5", &fMVAVar_EleE1x5OverE5x5); |
269 |
+ |
tmpTMVAReader->AddVariable("R9", &fMVAVar_EleR9); |
270 |
+ |
tmpTMVAReader->AddVariable("HoE", &fMVAVar_EleHoverE); |
271 |
+ |
tmpTMVAReader->AddVariable("EoP", &fMVAVar_EleEOverP); |
272 |
+ |
tmpTMVAReader->AddVariable("IoEmIoP", &fMVAVar_EleOneOverEMinusOneOverP); |
273 |
|
tmpTMVAReader->AddVariable("eleEoPout", &fMVAVar_EleEEleClusterOverPout); |
274 |
< |
tmpTMVAReader->AddVariable("EoPout", &fMVAVar_EleESeedClusterOverPout); //we have this only in BAMBU |
275 |
< |
tmpTMVAReader->AddVariable("PreShowerOverRaw",&fMVAVar_ElePreShowerOverRaw); |
276 |
< |
|
274 |
> |
if (i==2 || i==5) { |
275 |
> |
tmpTMVAReader->AddVariable("PreShowerOverRaw",&fMVAVar_ElePreShowerOverRaw); |
276 |
> |
} |
277 |
|
tmpTMVAReader->AddSpectator("eta", &fMVAVar_EleEta); |
278 |
|
tmpTMVAReader->AddSpectator("pt", &fMVAVar_ElePt); |
279 |
|
} |
280 |
< |
|
280 |
> |
|
281 |
|
if (type == kIsoRingsV0) { |
282 |
|
tmpTMVAReader->AddVariable( "ChargedIso_DR0p0To0p1", &fMVAVar_ChargedIso_DR0p0To0p1 ); |
283 |
|
tmpTMVAReader->AddVariable( "ChargedIso_DR0p1To0p2", &fMVAVar_ChargedIso_DR0p1To0p2 ); |
298 |
|
tmpTMVAReader->AddSpectator( "pt" , &fMVAVar_ElePt ); |
299 |
|
} |
300 |
|
|
301 |
+ |
if (type == kIDIsoCombinedHWW2012TrigV4) { |
302 |
+ |
|
303 |
+ |
// Pure tracking variables |
304 |
+ |
tmpTMVAReader->AddVariable("fbrem", &fMVAVar_EleFBrem); |
305 |
+ |
tmpTMVAReader->AddVariable("kfchi2", &fMVAVar_EleKFTrkChiSqr); |
306 |
+ |
tmpTMVAReader->AddVariable("kflayers", &fMVAVar_EleKFTrkNLayers); |
307 |
+ |
tmpTMVAReader->AddVariable("gsfchi2", &fMVAVar_EleGsfTrackChi2OverNdof); |
308 |
+ |
|
309 |
+ |
// Geometrical matchings |
310 |
+ |
tmpTMVAReader->AddVariable("deta", &fMVAVar_EleDEtaIn); |
311 |
+ |
tmpTMVAReader->AddVariable("dphi", &fMVAVar_EleDPhiIn); |
312 |
+ |
tmpTMVAReader->AddVariable("detacalo", &fMVAVar_EledEtaCalo); |
313 |
+ |
|
314 |
+ |
// Pure ECAL -> shower shapes |
315 |
+ |
tmpTMVAReader->AddVariable("see", &fMVAVar_EleSigmaIEtaIEta); |
316 |
+ |
tmpTMVAReader->AddVariable("spp", &fMVAVar_EleSigmaIPhiIPhi); |
317 |
+ |
tmpTMVAReader->AddVariable("etawidth", &fMVAVar_EleSCEtaWidth); |
318 |
+ |
tmpTMVAReader->AddVariable("phiwidth", &fMVAVar_EleSCPhiWidth); |
319 |
+ |
tmpTMVAReader->AddVariable("OneMinusSeedE1x5OverE5x5", &fMVAVar_EleOneMinusE1x5OverE5x5); |
320 |
+ |
tmpTMVAReader->AddVariable("R9", &fMVAVar_EleR9); |
321 |
+ |
|
322 |
+ |
// Energy matching |
323 |
+ |
tmpTMVAReader->AddVariable("HoE", &fMVAVar_EleHoverE); |
324 |
+ |
tmpTMVAReader->AddVariable("EoP", &fMVAVar_EleEOverP); |
325 |
+ |
tmpTMVAReader->AddVariable("IoEmIoP", &fMVAVar_EleOneOverEMinusOneOverP); |
326 |
+ |
tmpTMVAReader->AddVariable("EEleoPout", &fMVAVar_EleEEleClusterOverPout); |
327 |
+ |
if(i == 2 || i == 5) { |
328 |
+ |
tmpTMVAReader->AddVariable("PreShowerOverRaw",&fMVAVar_ElePreShowerOverRaw); |
329 |
+ |
} |
330 |
+ |
|
331 |
+ |
// IP |
332 |
+ |
tmpTMVAReader->AddVariable("d0", &fMVAVar_EleD0); |
333 |
+ |
tmpTMVAReader->AddVariable("ip3d", &fMVAVar_EleIP3d); |
334 |
+ |
|
335 |
+ |
//isolation variables |
336 |
+ |
tmpTMVAReader->AddVariable( "ChargedIso_DR0p0To0p1", &fMVAVar_ChargedIso_DR0p0To0p1 ); |
337 |
+ |
tmpTMVAReader->AddVariable( "ChargedIso_DR0p1To0p2", &fMVAVar_ChargedIso_DR0p1To0p2 ); |
338 |
+ |
tmpTMVAReader->AddVariable( "ChargedIso_DR0p2To0p3", &fMVAVar_ChargedIso_DR0p2To0p3 ); |
339 |
+ |
tmpTMVAReader->AddVariable( "ChargedIso_DR0p3To0p4", &fMVAVar_ChargedIso_DR0p3To0p4 ); |
340 |
+ |
tmpTMVAReader->AddVariable( "ChargedIso_DR0p4To0p5", &fMVAVar_ChargedIso_DR0p4To0p5 ); |
341 |
+ |
tmpTMVAReader->AddVariable( "GammaIso_DR0p0To0p1", &fMVAVar_GammaIso_DR0p0To0p1 ); |
342 |
+ |
tmpTMVAReader->AddVariable( "GammaIso_DR0p1To0p2", &fMVAVar_GammaIso_DR0p1To0p2 ); |
343 |
+ |
tmpTMVAReader->AddVariable( "GammaIso_DR0p2To0p3", &fMVAVar_GammaIso_DR0p2To0p3 ); |
344 |
+ |
tmpTMVAReader->AddVariable( "GammaIso_DR0p3To0p4", &fMVAVar_GammaIso_DR0p3To0p4 ); |
345 |
+ |
tmpTMVAReader->AddVariable( "GammaIso_DR0p4To0p5", &fMVAVar_GammaIso_DR0p4To0p5 ); |
346 |
+ |
tmpTMVAReader->AddVariable( "NeutralHadronIso_DR0p0To0p1", &fMVAVar_NeutralHadronIso_DR0p0To0p1 ); |
347 |
+ |
tmpTMVAReader->AddVariable( "NeutralHadronIso_DR0p1To0p2", &fMVAVar_NeutralHadronIso_DR0p1To0p2 ); |
348 |
+ |
tmpTMVAReader->AddVariable( "NeutralHadronIso_DR0p2To0p3", &fMVAVar_NeutralHadronIso_DR0p2To0p3 ); |
349 |
+ |
tmpTMVAReader->AddVariable( "NeutralHadronIso_DR0p3To0p4", &fMVAVar_NeutralHadronIso_DR0p3To0p4 ); |
350 |
+ |
tmpTMVAReader->AddVariable( "NeutralHadronIso_DR0p4To0p5", &fMVAVar_NeutralHadronIso_DR0p4To0p5 ); |
351 |
+ |
tmpTMVAReader->AddVariable( "rho", &fMVAVar_Rho ); |
352 |
+ |
|
353 |
+ |
//spectators |
354 |
+ |
tmpTMVAReader->AddSpectator("eta", &fMVAVar_EleEta); |
355 |
+ |
tmpTMVAReader->AddSpectator("pt", &fMVAVar_ElePt); |
356 |
+ |
|
357 |
+ |
} |
358 |
+ |
|
359 |
+ |
|
360 |
|
tmpTMVAReader->BookMVA(fMethodname , weightsfiles[i] ); |
361 |
|
std::cout << "MVABin " << i << " : MethodName = " << fMethodname |
362 |
|
<< " , type == " << type << " , " |
375 |
|
//Default is to return the first bin |
376 |
|
uint bin = 0; |
377 |
|
|
378 |
+ |
//return the first bin if not using binned version |
379 |
+ |
if (!fUseBinnedVersion) return 0; |
380 |
+ |
|
381 |
|
if (fMVAType == ElectronIDMVA::kBaseline |
382 |
|
||fMVAType == ElectronIDMVA::kNoIPInfo |
383 |
|
||fMVAType == ElectronIDMVA::kWithIPInfo |
397 |
|
if (pt >= 10 && fabs(eta) >= 1.479) bin = 3; |
398 |
|
} |
399 |
|
|
400 |
< |
if (fMVAType == ElectronIDMVA::kIDEGamma2012TrigV0 || |
401 |
< |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV0 ) { |
400 |
> |
if (fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV0 || |
401 |
> |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV1) { |
402 |
|
bin = 0; |
403 |
|
if (pt < 10 && fabs(eta) < 0.8) bin = 0; |
404 |
|
if (pt < 10 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 1; |
408 |
|
if (pt >= 10 && fabs(eta) >= 1.479) bin = 5; |
409 |
|
} |
410 |
|
|
411 |
+ |
if (fMVAType == ElectronIDMVA::kIDEGamma2012TrigV0 || |
412 |
+ |
fMVAType == ElectronIDMVA::kIDHWW2012TrigV0 || |
413 |
+ |
fMVAType == ElectronIDMVA::kIDIsoCombinedHWW2012TrigV4 |
414 |
+ |
) { |
415 |
+ |
bin = 0; |
416 |
+ |
if (pt < 20 && fabs(eta) < 0.8) bin = 0; |
417 |
+ |
if (pt < 20 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 1; |
418 |
+ |
if (pt < 20 && fabs(eta) >= 1.479) bin = 2; |
419 |
+ |
if (pt >= 20 && fabs(eta) < 0.8) bin = 3; |
420 |
+ |
if (pt >= 20 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 4; |
421 |
+ |
if (pt >= 20 && fabs(eta) >= 1.479) bin = 5; |
422 |
+ |
} |
423 |
+ |
|
424 |
|
return bin; |
425 |
|
} |
426 |
|
|
450 |
|
return -9999; |
451 |
|
} |
452 |
|
|
310 |
– |
Int_t subdet = 0; |
311 |
– |
if (fabs(EleEta) < 1.0) subdet = 0; |
312 |
– |
else if (fabs(EleEta) < 1.479) subdet = 1; |
313 |
– |
else subdet = 2; |
314 |
– |
Int_t ptBin = 0; |
315 |
– |
if (ElePt > 20.0) ptBin = 1; |
316 |
– |
|
453 |
|
//set all input variables |
454 |
|
fMVAVar_EleSigmaIEtaIEta = EleSigmaIEtaIEta; |
455 |
|
fMVAVar_EleDEtaIn = EleDEtaIn; |
469 |
|
|
470 |
|
Double_t mva = -9999; |
471 |
|
TMVA::Reader *reader = 0; |
472 |
< |
Int_t MVABin = -1; |
337 |
< |
if (subdet == 0 && ptBin == 0) MVABin = 0; |
338 |
< |
if (subdet == 1 && ptBin == 0) MVABin = 1; |
339 |
< |
if (subdet == 2 && ptBin == 0) MVABin = 2; |
340 |
< |
if (subdet == 0 && ptBin == 1) MVABin = 3; |
341 |
< |
if (subdet == 1 && ptBin == 1) MVABin = 4; |
342 |
< |
if (subdet == 2 && ptBin == 1) MVABin = 5; |
343 |
< |
assert(MVABin >= 0 && MVABin <= 5); |
344 |
< |
reader = fTMVAReader[MVABin]; |
472 |
> |
reader = fTMVAReader[GetMVABin( EleEta, ElePt)]; |
473 |
|
|
474 |
|
mva = reader->EvaluateMVA( fMethodname ); |
475 |
|
|
518 |
|
Double_t Rho = 0; |
519 |
|
if (!(TMath::IsNaN(PileupEnergyDensity) || isinf(PileupEnergyDensity))) Rho = PileupEnergyDensity; |
520 |
|
|
393 |
– |
Int_t subdet = 0; |
394 |
– |
if (fabs(EleEta) < 1.0) subdet = 0; |
395 |
– |
else if (fabs(EleEta) < 1.479) subdet = 1; |
396 |
– |
else subdet = 2; |
397 |
– |
Int_t ptBin = 0; |
398 |
– |
if (ElePt > 20.0) ptBin = 1; |
399 |
– |
|
521 |
|
//set all input variables |
522 |
|
fMVAVar_EleSigmaIEtaIEta = EleSigmaIEtaIEta; |
523 |
|
fMVAVar_EleDEtaIn = EleDEtaIn; |
570 |
|
|
571 |
|
Double_t mva = -9999; |
572 |
|
TMVA::Reader *reader = 0; |
573 |
< |
Int_t MVABin = -1; |
453 |
< |
if (subdet == 0 && ptBin == 0) MVABin = 0; |
454 |
< |
if (subdet == 1 && ptBin == 0) MVABin = 1; |
455 |
< |
if (subdet == 2 && ptBin == 0) MVABin = 2; |
456 |
< |
if (subdet == 0 && ptBin == 1) MVABin = 3; |
457 |
< |
if (subdet == 1 && ptBin == 1) MVABin = 4; |
458 |
< |
if (subdet == 2 && ptBin == 1) MVABin = 5; |
459 |
< |
assert(MVABin >= 0 && MVABin <= 5); |
460 |
< |
reader = fTMVAReader[MVABin]; |
461 |
< |
|
573 |
> |
reader = fTMVAReader[GetMVABin( EleEta, ElePt)]; |
574 |
|
mva = reader->EvaluateMVA( fMethodname ); |
575 |
|
|
576 |
|
if (printDebug == kTRUE) { |
577 |
|
std::cout << "Debug Electron MVA: " |
578 |
< |
<< ElePt << " " << EleEta << " " << " --> MVABin " << MVABin << " : " |
578 |
> |
<< ElePt << " " << EleEta << " " << " --> MVABin " << GetMVABin( EleEta, ElePt) << " : " |
579 |
|
<< fMVAVar_EleSigmaIEtaIEta << " " |
580 |
|
<< fMVAVar_EleDEtaIn << " " |
581 |
|
<< fMVAVar_EleDPhiIn << " " |
613 |
|
return mva; |
614 |
|
} |
615 |
|
|
616 |
+ |
Double_t ElectronIDMVA::MVAValue_IsoRings( Double_t ElePt, |
617 |
+ |
Double_t EleSCEta, |
618 |
+ |
Double_t ChargedIso_DR0p0To0p1, |
619 |
+ |
Double_t ChargedIso_DR0p1To0p2, |
620 |
+ |
Double_t ChargedIso_DR0p2To0p3, |
621 |
+ |
Double_t ChargedIso_DR0p3To0p4, |
622 |
+ |
Double_t ChargedIso_DR0p4To0p5, |
623 |
+ |
Double_t GammaIso_DR0p0To0p1, |
624 |
+ |
Double_t GammaIso_DR0p1To0p2, |
625 |
+ |
Double_t GammaIso_DR0p2To0p3, |
626 |
+ |
Double_t GammaIso_DR0p3To0p4, |
627 |
+ |
Double_t GammaIso_DR0p4To0p5, |
628 |
+ |
Double_t NeutralHadronIso_DR0p0To0p1, |
629 |
+ |
Double_t NeutralHadronIso_DR0p1To0p2, |
630 |
+ |
Double_t NeutralHadronIso_DR0p2To0p3, |
631 |
+ |
Double_t NeutralHadronIso_DR0p3To0p4, |
632 |
+ |
Double_t NeutralHadronIso_DR0p4To0p5, |
633 |
+ |
Bool_t printDebug) { |
634 |
+ |
|
635 |
+ |
if (fMVAType != ElectronIDMVA::kIsoRingsV0) { |
636 |
+ |
std::cout << "Error: This function is only supported for MVAType == kIsoRingsV0.\n" << std::endl; |
637 |
+ |
assert(kFALSE); |
638 |
+ |
} |
639 |
+ |
|
640 |
+ |
fMVAVar_ElePt = ElePt; |
641 |
+ |
fMVAVar_EleEta = EleSCEta; |
642 |
+ |
fMVAVar_ChargedIso_DR0p0To0p1 = ChargedIso_DR0p0To0p1; |
643 |
+ |
fMVAVar_ChargedIso_DR0p1To0p2 = ChargedIso_DR0p1To0p2; |
644 |
+ |
fMVAVar_ChargedIso_DR0p2To0p3 = ChargedIso_DR0p2To0p3; |
645 |
+ |
fMVAVar_ChargedIso_DR0p3To0p4 = ChargedIso_DR0p3To0p4; |
646 |
+ |
fMVAVar_ChargedIso_DR0p4To0p5 = ChargedIso_DR0p4To0p5; |
647 |
+ |
fMVAVar_GammaIso_DR0p0To0p1 = GammaIso_DR0p0To0p1; |
648 |
+ |
fMVAVar_GammaIso_DR0p1To0p2 = GammaIso_DR0p1To0p2; |
649 |
+ |
fMVAVar_GammaIso_DR0p2To0p3 = GammaIso_DR0p2To0p3; |
650 |
+ |
fMVAVar_GammaIso_DR0p3To0p4 = GammaIso_DR0p3To0p4; |
651 |
+ |
fMVAVar_GammaIso_DR0p4To0p5 = GammaIso_DR0p4To0p5; |
652 |
+ |
fMVAVar_NeutralHadronIso_DR0p0To0p1 = NeutralHadronIso_DR0p0To0p1; |
653 |
+ |
fMVAVar_NeutralHadronIso_DR0p1To0p2 = NeutralHadronIso_DR0p1To0p2; |
654 |
+ |
fMVAVar_NeutralHadronIso_DR0p2To0p3 = NeutralHadronIso_DR0p2To0p3; |
655 |
+ |
fMVAVar_NeutralHadronIso_DR0p3To0p4 = NeutralHadronIso_DR0p3To0p4; |
656 |
+ |
fMVAVar_NeutralHadronIso_DR0p4To0p5 = NeutralHadronIso_DR0p4To0p5; |
657 |
+ |
|
658 |
+ |
Double_t mva = -9999; |
659 |
+ |
TMVA::Reader *reader = 0; |
660 |
+ |
|
661 |
+ |
if (printDebug == kTRUE) { |
662 |
+ |
std::cout <<" -> BIN: " << fMVAVar_EleEta << " " << fMVAVar_ElePt << " : " << GetMVABin( fMVAVar_EleEta , fMVAVar_ElePt) << std::endl; |
663 |
+ |
} |
664 |
+ |
reader = fTMVAReader[GetMVABin( fMVAVar_EleEta , fMVAVar_ElePt)]; |
665 |
+ |
mva = reader->EvaluateMVA( fMethodname ); |
666 |
+ |
|
667 |
+ |
if (printDebug == kTRUE) { |
668 |
+ |
|
669 |
+ |
std::cout << "Debug Electron MVA-ISO: "; |
670 |
+ |
std::cout << fMVAVar_ChargedIso_DR0p0To0p1 << " " |
671 |
+ |
<< fMVAVar_ChargedIso_DR0p1To0p2 << " " |
672 |
+ |
<< fMVAVar_ChargedIso_DR0p2To0p3 << " " |
673 |
+ |
<< fMVAVar_ChargedIso_DR0p3To0p4 << " " |
674 |
+ |
<< fMVAVar_ChargedIso_DR0p4To0p5 << " " |
675 |
+ |
<< fMVAVar_GammaIso_DR0p0To0p1 << " " |
676 |
+ |
<< fMVAVar_GammaIso_DR0p1To0p2 << " " |
677 |
+ |
<< fMVAVar_GammaIso_DR0p2To0p3 << " " |
678 |
+ |
<< fMVAVar_GammaIso_DR0p3To0p4 << " " |
679 |
+ |
<< fMVAVar_GammaIso_DR0p4To0p5 << " " |
680 |
+ |
<< fMVAVar_NeutralHadronIso_DR0p0To0p1 << " " |
681 |
+ |
<< fMVAVar_NeutralHadronIso_DR0p1To0p2 << " " |
682 |
+ |
<< fMVAVar_NeutralHadronIso_DR0p2To0p3 << " " |
683 |
+ |
<< fMVAVar_NeutralHadronIso_DR0p3To0p4 << " " |
684 |
+ |
<< fMVAVar_NeutralHadronIso_DR0p4To0p5 << " " |
685 |
+ |
<< std::endl; |
686 |
+ |
std::cout << "MVA: " << mva << " " |
687 |
+ |
<< std::endl; |
688 |
+ |
} |
689 |
+ |
return mva; |
690 |
+ |
} |
691 |
+ |
|
692 |
+ |
Double_t ElectronIDMVA::MVAValue_IDNonTrig( Double_t ElePt, |
693 |
+ |
Double_t EleSCEta, |
694 |
+ |
Double_t EleFBrem, |
695 |
+ |
Double_t EleKFTrkChiSqr, |
696 |
+ |
Double_t EleKFTrkNHits, |
697 |
+ |
Double_t EleGsfTrackChi2OverNdof, |
698 |
+ |
Double_t EleDEtaIn, |
699 |
+ |
Double_t EleDPhiIn, |
700 |
+ |
Double_t EledEtaCalo, |
701 |
+ |
Double_t EleSigmaIEtaIEta, |
702 |
+ |
Double_t EleSigmaIPhiIPhi, |
703 |
+ |
Double_t EleSCEtaWidth, |
704 |
+ |
Double_t EleSCPhiWidth, |
705 |
+ |
Double_t EleE1x5OverE5x5, |
706 |
+ |
Double_t EleR9, |
707 |
+ |
Double_t EleHoverE, |
708 |
+ |
Double_t EleEOverP, |
709 |
+ |
Double_t EleOneOverEMinusOneOverP, |
710 |
+ |
Double_t EleESeedClusterOverPout, |
711 |
+ |
Double_t ElePreShowerOverRaw, |
712 |
+ |
Bool_t printDebug) { |
713 |
+ |
|
714 |
+ |
if (fMVAType != ElectronIDMVA::kIDEGamma2012NonTrigV0) { |
715 |
+ |
std::cout << "Error: This function is only supported for MVAType == kIDEGamma2012NonTrigV0.\n" << std::endl; |
716 |
+ |
assert(kFALSE); |
717 |
+ |
} |
718 |
+ |
|
719 |
+ |
fMVAVar_ElePt = ElePt; |
720 |
+ |
fMVAVar_EleEta = EleSCEta; |
721 |
+ |
fMVAVar_EleFBrem = EleFBrem; |
722 |
+ |
fMVAVar_EleKFTrkChiSqr = EleKFTrkChiSqr; |
723 |
+ |
fMVAVar_EleKFTrkNHits = EleKFTrkNHits; |
724 |
+ |
fMVAVar_EleGsfTrackChi2OverNdof = EleGsfTrackChi2OverNdof; |
725 |
+ |
fMVAVar_EleDEtaIn = EleDEtaIn; |
726 |
+ |
fMVAVar_EleDPhiIn = EleDPhiIn; |
727 |
+ |
fMVAVar_EledEtaCalo = EledEtaCalo; |
728 |
+ |
fMVAVar_EleSigmaIEtaIEta = EleSigmaIEtaIEta; |
729 |
+ |
fMVAVar_EleSigmaIPhiIPhi = EleSigmaIPhiIPhi; |
730 |
+ |
fMVAVar_EleSCEtaWidth = EleSCEtaWidth; |
731 |
+ |
fMVAVar_EleSCPhiWidth = EleSCPhiWidth; |
732 |
+ |
fMVAVar_EleE1x5OverE5x5 = EleE1x5OverE5x5; |
733 |
+ |
fMVAVar_EleR9 = EleR9; |
734 |
+ |
fMVAVar_EleHoverE = EleHoverE; |
735 |
+ |
fMVAVar_EleEOverP = EleEOverP; |
736 |
+ |
fMVAVar_EleOneOverEMinusOneOverP = EleOneOverEMinusOneOverP; |
737 |
+ |
fMVAVar_EleESeedClusterOverPout = EleESeedClusterOverPout; |
738 |
+ |
fMVAVar_ElePreShowerOverRaw = ElePreShowerOverRaw; |
739 |
+ |
|
740 |
+ |
Double_t mva = -9999; |
741 |
+ |
TMVA::Reader *reader = 0; |
742 |
+ |
|
743 |
+ |
if (printDebug == kTRUE) { |
744 |
+ |
std::cout <<" -> BIN: " << fMVAVar_EleEta << " " << fMVAVar_ElePt << " : " << GetMVABin( fMVAVar_EleEta , fMVAVar_ElePt) << std::endl; |
745 |
+ |
} |
746 |
+ |
reader = fTMVAReader[GetMVABin( fMVAVar_EleEta , fMVAVar_ElePt)]; |
747 |
+ |
mva = reader->EvaluateMVA( fMethodname ); |
748 |
+ |
|
749 |
+ |
if (printDebug == kTRUE) { |
750 |
+ |
std::cout << "Debug Electron MVA: "; |
751 |
+ |
std::cout << " fbrem " << fMVAVar_EleFBrem |
752 |
+ |
<< " kfchi2 " << fMVAVar_EleKFTrkChiSqr |
753 |
+ |
<< " kfhits " << fMVAVar_EleKFTrkNLayers |
754 |
+ |
<< " kfhitsall " << fMVAVar_EleKFTrkNHits |
755 |
+ |
<< " gsfchi2 " << fMVAVar_EleGsfTrackChi2OverNdof |
756 |
+ |
<< " deta " << fMVAVar_EleDEtaIn |
757 |
+ |
<< " dphi " << fMVAVar_EleDPhiIn |
758 |
+ |
<< " detacalo " << fMVAVar_EledEtaCalo |
759 |
+ |
<< " see " << fMVAVar_EleSigmaIEtaIEta |
760 |
+ |
<< " spp " << fMVAVar_EleSigmaIPhiIPhi |
761 |
+ |
<< " etawidth " << fMVAVar_EleSCEtaWidth |
762 |
+ |
<< " phiwidth " << fMVAVar_EleSCPhiWidth |
763 |
+ |
<< " e1x5e5x5 " << fMVAVar_EleE1x5OverE5x5 |
764 |
+ |
<< " R9 " << fMVAVar_EleR9 |
765 |
+ |
<< " HoE " << fMVAVar_EleHoverE |
766 |
+ |
<< " EoP " << fMVAVar_EleEOverP |
767 |
+ |
<< " IoEmIoP " << fMVAVar_EleOneOverEMinusOneOverP |
768 |
+ |
<< " eleEoPout " << fMVAVar_EleESeedClusterOverPout |
769 |
+ |
<< " EoPout " << fMVAVar_EleESeedClusterOverPout |
770 |
+ |
<< " d0 " << fMVAVar_EleD0 |
771 |
+ |
<< " ip3d " << fMVAVar_EleIP3d |
772 |
+ |
<< " eta " << fMVAVar_EleEta |
773 |
+ |
<< " pt " << fMVAVar_ElePt << std::endl; |
774 |
+ |
std::cout << "MVA: " << mva << " " |
775 |
+ |
<< std::endl; |
776 |
+ |
} |
777 |
+ |
return mva; |
778 |
+ |
} |
779 |
|
|
780 |
|
//-------------------------------------------------------------------------------------------------- |
781 |
|
Double_t ElectronIDMVA::MVAValue(const Electron *ele, const Vertex *vertex, |
789 |
|
return -9999; |
790 |
|
} |
791 |
|
|
517 |
– |
Int_t subdet = 0; |
518 |
– |
if (ele->SCluster()->AbsEta() < 1.0) subdet = 0; |
519 |
– |
else if (ele->SCluster()->AbsEta() < 1.479) subdet = 1; |
520 |
– |
else subdet = 2; |
521 |
– |
Int_t ptBin = 0; |
522 |
– |
if (ele->Pt() > 20.0) ptBin = 1; |
523 |
– |
|
792 |
|
Double_t Rho = 0; |
793 |
< |
if (!(TMath::IsNaN(PileupEnergyDensity->At(0)->Rho()) || isinf(PileupEnergyDensity->At(0)->Rho()))) Rho = PileupEnergyDensity->At(0)->Rho(); |
793 |
> |
switch(fTheRhoType) { |
794 |
> |
case RhoUtilities::MIT_RHO_VORONOI_HIGH_ETA: |
795 |
> |
Rho = PileupEnergyDensity->At(0)->Rho(); |
796 |
> |
break; |
797 |
> |
case RhoUtilities::MIT_RHO_VORONOI_LOW_ETA: |
798 |
> |
Rho = PileupEnergyDensity->At(0)->RhoLowEta(); |
799 |
> |
break; |
800 |
> |
case RhoUtilities::MIT_RHO_RANDOM_HIGH_ETA: |
801 |
> |
Rho = PileupEnergyDensity->At(0)->RhoRandom(); |
802 |
> |
break; |
803 |
> |
case RhoUtilities::MIT_RHO_RANDOM_LOW_ETA: |
804 |
> |
Rho = PileupEnergyDensity->At(0)->RhoRandomLowEta(); |
805 |
> |
break; |
806 |
> |
case RhoUtilities::CMS_RHO_RHOKT6PFJETS: |
807 |
> |
Rho = PileupEnergyDensity->At(0)->RhoKt6PFJets(); |
808 |
> |
break; |
809 |
> |
default: |
810 |
> |
// use the old default |
811 |
> |
Rho = PileupEnergyDensity->At(0)->Rho(); |
812 |
> |
break; |
813 |
> |
} |
814 |
|
|
815 |
|
//set all input variables |
816 |
|
fMVAVar_EleSigmaIEtaIEta = ele->CoviEtaiEta() ; |
825 |
|
if (!TMath::IsNaN(ele->SCluster()->Seed()->CoviPhiiPhi())) fMVAVar_EleSigmaIPhiIPhi = TMath::Sqrt(ele->SCluster()->Seed()->CoviPhiiPhi()); |
826 |
|
else fMVAVar_EleSigmaIPhiIPhi = ele->CoviEtaiEta(); |
827 |
|
fMVAVar_EleNBrem = ele->NumberOfClusters() - 1; |
828 |
< |
fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->SCluster()->Energy())) - 1.0 / ele->BestTrk()->P(); |
828 |
> |
fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->EcalEnergy())) - 1.0 / ele->BestTrk()->P(); |
829 |
|
fMVAVar_EleESeedClusterOverPIn = ele->ESeedClusterOverPIn(); |
830 |
|
fMVAVar_EleIP3d = ele->Ip3dPV(); |
831 |
|
fMVAVar_EleIP3dSig = ele->Ip3dPVSignificance(); |
861 |
|
+ Rho * ElectronTools::ElectronEffectiveArea(ElectronTools::kEleGammaIsoVetoEtaStrip04,ele->SCluster()->Eta())) / ele->Pt(); |
862 |
|
|
863 |
|
//Additional vars |
864 |
< |
fMVAVar_EleEEleClusterOverPout = 0; |
865 |
< |
fMVAVar_EleKFTrkChiSqr = ele->TrackerTrk()->RChi2(); |
866 |
< |
fMVAVar_EleKFTrkNHits = ele->TrackerTrk()->NHits(); |
864 |
> |
fMVAVar_EleEEleClusterOverPout = ele->EEleClusterOverPout(); |
865 |
> |
if (ele->TrackerTrk()) { |
866 |
> |
fMVAVar_EleKFTrkChiSqr = ele->TrackerTrk()->RChi2(); |
867 |
> |
fMVAVar_EleKFTrkNHits = ele->TrackerTrk()->NHits(); |
868 |
> |
} else { |
869 |
> |
fMVAVar_EleKFTrkChiSqr = -1; |
870 |
> |
fMVAVar_EleKFTrkNHits = 0; |
871 |
> |
} |
872 |
|
fMVAVar_EleE1x5OverE5x5 = ele->SCluster()->Seed()->E1x5() / ele->SCluster()->Seed()->E5x5(); |
873 |
|
|
874 |
|
|
582 |
– |
|
583 |
– |
|
875 |
|
Double_t mva = -9999; |
876 |
|
TMVA::Reader *reader = 0; |
877 |
< |
Int_t MVABin = -1; |
587 |
< |
if (subdet == 0 && ptBin == 0) MVABin = 0; |
588 |
< |
if (subdet == 1 && ptBin == 0) MVABin = 1; |
589 |
< |
if (subdet == 2 && ptBin == 0) MVABin = 2; |
590 |
< |
if (subdet == 0 && ptBin == 1) MVABin = 3; |
591 |
< |
if (subdet == 1 && ptBin == 1) MVABin = 4; |
592 |
< |
if (subdet == 2 && ptBin == 1) MVABin = 5; |
593 |
< |
assert(MVABin >= 0 && MVABin <= 5); |
594 |
< |
reader = fTMVAReader[MVABin]; |
595 |
< |
|
877 |
> |
reader = fTMVAReader[GetMVABin( ele->SCluster()->Eta(), ele->Pt())]; |
878 |
|
mva = reader->EvaluateMVA( fMethodname ); |
879 |
|
|
880 |
|
if (printDebug == kTRUE) { |
599 |
– |
// std::cout << "Debug Electron MVA: " |
600 |
– |
// << ele->Pt() << " " << ele->Eta() << " " << ele->Phi() << " : " |
601 |
– |
// << ele->Pt() << " " << ele->SCluster()->AbsEta() << " --> MVABin " << MVABin << " : " |
602 |
– |
// << fMVAVar_EleSigmaIEtaIEta << " " |
603 |
– |
// << fMVAVar_EleDEtaIn << " " |
604 |
– |
// << fMVAVar_EleDPhiIn << " " |
605 |
– |
// << fMVAVar_EleHoverE << " " |
606 |
– |
// << fMVAVar_EleD0 << " " |
607 |
– |
// << fMVAVar_EleDZ << " " |
608 |
– |
// << fMVAVar_EleFBrem << " " |
609 |
– |
// << fMVAVar_EleEOverP << " " |
610 |
– |
// << fMVAVar_EleESeedClusterOverPout << " " |
611 |
– |
// << fMVAVar_EleSigmaIPhiIPhi << " " |
612 |
– |
// << fMVAVar_EleNBrem << " " |
613 |
– |
// << fMVAVar_EleOneOverEMinusOneOverP << " " |
614 |
– |
// << fMVAVar_EleESeedClusterOverPIn << " " |
615 |
– |
// << fMVAVar_EleIP3d << " " |
616 |
– |
// << fMVAVar_EleIP3dSig << " " |
617 |
– |
// << fMVAVar_EleGsfTrackChi2OverNdof << " " |
618 |
– |
// << fMVAVar_EledEtaCalo << " " |
619 |
– |
// << fMVAVar_EledPhiCalo << " " |
620 |
– |
// << fMVAVar_EleR9 << " " |
621 |
– |
// << fMVAVar_EleSCEtaWidth << " " |
622 |
– |
// << fMVAVar_EleSCPhiWidth << " " |
623 |
– |
// << fMVAVar_EleCovIEtaIPhi << " " |
624 |
– |
// << fMVAVar_ElePreShowerOverRaw << " " |
625 |
– |
// << fMVAVar_EleChargedIso03OverPt << " " |
626 |
– |
// << fMVAVar_EleNeutralHadronIso03OverPt << " " |
627 |
– |
// << fMVAVar_EleGammaIso03OverPt << " " |
628 |
– |
// << fMVAVar_EleChargedIso04OverPt << " " |
629 |
– |
// << fMVAVar_EleNeutralHadronIso04OverPt << " " |
630 |
– |
// << fMVAVar_EleGammaIso04OverPt << " " |
631 |
– |
// << " === : === " |
632 |
– |
// << mva << " " |
633 |
– |
// << std::endl; |
881 |
|
std::cout << "Debug Electron MVA: " |
882 |
|
<< ele->Pt() << " " << ele->Eta() << " " << ele->Phi() << " : " |
883 |
< |
<< ele->Pt() << " " << ele->SCluster()->AbsEta() << " --> MVABin " << MVABin << " : " |
883 |
> |
<< ele->Pt() << " " << ele->SCluster()->AbsEta() << " --> MVABin " << GetMVABin( ele->SCluster()->Eta(), ele->Pt()) << " : " |
884 |
|
<< fMVAVar_EleSigmaIEtaIEta << " " |
885 |
|
<< fMVAVar_EleDEtaIn << " " |
886 |
|
<< fMVAVar_EleDPhiIn << " " |
927 |
|
return -9999; |
928 |
|
} |
929 |
|
|
683 |
– |
Int_t subdet = 0; |
684 |
– |
if (ele->SCluster()->AbsEta() < 1.0) subdet = 0; |
685 |
– |
else if (ele->SCluster()->AbsEta() < 1.479) subdet = 1; |
686 |
– |
else subdet = 2; |
687 |
– |
Int_t ptBin = 0; |
688 |
– |
if (ele->Pt() > 20.0) ptBin = 1; |
689 |
– |
|
930 |
|
fMVAVar_ElePt = ele->Pt(); |
931 |
|
fMVAVar_EleEta = ele->Eta(); |
932 |
|
|
941 |
|
fMVAVar_EleEOverP = ele->ESuperClusterOverP(); |
942 |
|
fMVAVar_EleESeedClusterOverPout = ele->ESeedClusterOverPout(); |
943 |
|
if (!TMath::IsNaN(ele->SCluster()->Seed()->CoviPhiiPhi())) fMVAVar_EleSigmaIPhiIPhi = TMath::Sqrt(ele->SCluster()->Seed()->CoviPhiiPhi()); |
944 |
< |
else fMVAVar_EleSigmaIPhiIPhi = ele->CoviEtaiEta(); |
944 |
> |
else fMVAVar_EleSigmaIPhiIPhi = 0; |
945 |
|
fMVAVar_EleNBrem = ele->NumberOfClusters() - 1; |
946 |
< |
fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->SCluster()->Energy())) - 1.0 / ele->BestTrk()->P(); |
946 |
> |
fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->EcalEnergy())) - 1.0 / ele->BestTrk()->P(); |
947 |
|
fMVAVar_EleESeedClusterOverPIn = ele->ESeedClusterOverPIn(); |
948 |
|
fMVAVar_EleIP3d = ele->Ip3dPV(); |
949 |
|
fMVAVar_EleIP3dSig = ele->Ip3dPVSignificance(); |
950 |
|
|
951 |
|
|
952 |
< |
fMVAVar_EleEEleClusterOverPout = 0; |
953 |
< |
fMVAVar_EleKFTrkChiSqr = ele->TrackerTrk()->RChi2(); |
954 |
< |
fMVAVar_EleKFTrkNHits = ele->TrackerTrk()->NHits(); |
952 |
> |
fMVAVar_EleEEleClusterOverPout = ele->EEleClusterOverPout(); |
953 |
> |
if (ele->TrackerTrk()) { |
954 |
> |
fMVAVar_EleKFTrkChiSqr = ele->TrackerTrk()->RChi2(); |
955 |
> |
fMVAVar_EleKFTrkNHits = ele->TrackerTrk()->NHits(); |
956 |
> |
fMVAVar_EleKFTrkNLayers = ele->CTFTrkNLayersWithMeasurement(); |
957 |
> |
} else { |
958 |
> |
fMVAVar_EleKFTrkChiSqr = -1; |
959 |
> |
fMVAVar_EleKFTrkNHits = 0; |
960 |
> |
fMVAVar_EleKFTrkNLayers = 0; |
961 |
> |
} |
962 |
|
fMVAVar_EleGsfTrackChi2OverNdof = ele->BestTrk()->Chi2() / ele->BestTrk()->Ndof(); |
963 |
|
fMVAVar_EledEtaCalo = ele->DeltaEtaSeedClusterTrackAtCalo(); |
964 |
|
fMVAVar_EleSCEtaWidth = ele->SCluster()->EtaWidth(); |
967 |
|
fMVAVar_EleR9 = ele->SCluster()->R9(); |
968 |
|
fMVAVar_EleHoverE = ele->HadronicOverEm(); |
969 |
|
fMVAVar_EleEOverP = ele->ESuperClusterOverP(); |
970 |
< |
fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->SCluster()->Energy())) - 1.0 / ele->BestTrk()->P(); |
970 |
> |
fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->EcalEnergy())) - 1.0 / ele->BestTrk()->P(); |
971 |
|
fMVAVar_EleR9 = ele->SCluster()->R9(); |
972 |
|
fMVAVar_ElePreShowerOverRaw = ele->SCluster()->PreshowerEnergy() / ele->SCluster()->RawEnergy(); |
973 |
|
|
974 |
|
|
975 |
|
Double_t mva = -9999; |
976 |
|
TMVA::Reader *reader = 0; |
977 |
< |
Int_t MVABin = -1; |
731 |
< |
if (subdet == 0 && ptBin == 0) MVABin = 0; |
732 |
< |
if (subdet == 1 && ptBin == 0) MVABin = 1; |
733 |
< |
if (subdet == 2 && ptBin == 0) MVABin = 2; |
734 |
< |
if (subdet == 0 && ptBin == 1) MVABin = 3; |
735 |
< |
if (subdet == 1 && ptBin == 1) MVABin = 4; |
736 |
< |
if (subdet == 2 && ptBin == 1) MVABin = 5; |
737 |
< |
assert(MVABin >= 0 && MVABin <= 5); |
738 |
< |
reader = fTMVAReader[MVABin]; |
739 |
< |
|
977 |
> |
reader = fTMVAReader[GetMVABin( ele->SCluster()->Eta(), ele->Pt())]; |
978 |
|
mva = reader->EvaluateMVA( fMethodname ); |
979 |
|
|
980 |
|
if (printDebug == kTRUE) { |
981 |
|
std::cout << "Debug Electron MVA: " |
982 |
|
<< ele->Pt() << " " << ele->Eta() << " " << ele->Phi() << " : " |
983 |
< |
<< ele->Pt() << " " << ele->SCluster()->AbsEta() << " --> MVABin " << MVABin << " : " |
983 |
> |
<< ele->Pt() << " " << ele->SCluster()->AbsEta() << " --> MVABin " << GetMVABin( ele->SCluster()->Eta(), ele->Pt()) << " : " |
984 |
|
<< fMVAVar_EleSigmaIEtaIEta << " " |
985 |
|
<< fMVAVar_EleDEtaIn << " " |
986 |
|
<< fMVAVar_EleDPhiIn << " " |
1019 |
|
} |
1020 |
|
|
1021 |
|
|
784 |
– |
|
785 |
– |
|
1022 |
|
//-------------------------------------------------------------------------------------------------- |
1023 |
|
//MVA Includes Isolation with removal of other leptons |
1024 |
|
// |
1036 |
|
} |
1037 |
|
|
1038 |
|
Double_t Rho = 0; |
1039 |
< |
if (!(TMath::IsNaN(PileupEnergyDensity->At(0)->Rho()) || isinf(PileupEnergyDensity->At(0)->Rho()))) Rho = PileupEnergyDensity->At(0)->Rho(); |
1039 |
> |
switch(fTheRhoType) { |
1040 |
> |
case RhoUtilities::MIT_RHO_VORONOI_HIGH_ETA: |
1041 |
> |
Rho = PileupEnergyDensity->At(0)->Rho(); |
1042 |
> |
break; |
1043 |
> |
case RhoUtilities::MIT_RHO_VORONOI_LOW_ETA: |
1044 |
> |
Rho = PileupEnergyDensity->At(0)->RhoLowEta(); |
1045 |
> |
break; |
1046 |
> |
case RhoUtilities::MIT_RHO_RANDOM_HIGH_ETA: |
1047 |
> |
Rho = PileupEnergyDensity->At(0)->RhoRandom(); |
1048 |
> |
break; |
1049 |
> |
case RhoUtilities::MIT_RHO_RANDOM_LOW_ETA: |
1050 |
> |
Rho = PileupEnergyDensity->At(0)->RhoRandomLowEta(); |
1051 |
> |
break; |
1052 |
> |
case RhoUtilities::CMS_RHO_RHOKT6PFJETS: |
1053 |
> |
Rho = PileupEnergyDensity->At(0)->RhoKt6PFJets(); |
1054 |
> |
break; |
1055 |
> |
default: |
1056 |
> |
// use the old default |
1057 |
> |
Rho = PileupEnergyDensity->At(0)->Rho(); |
1058 |
> |
break; |
1059 |
> |
} |
1060 |
|
|
1061 |
|
//set all input variables |
1062 |
|
fMVAVar_ElePt = ele->Pt(); |
1063 |
|
fMVAVar_EleEta = ele->SCluster()->Eta(); |
1064 |
< |
fMVAVar_EleSigmaIEtaIEta = ele->CoviEtaiEta() ; |
1065 |
< |
fMVAVar_EleDEtaIn = ele->DeltaEtaSuperClusterTrackAtVtx(); |
1066 |
< |
fMVAVar_EleDPhiIn = ele->DeltaPhiSuperClusterTrackAtVtx(); |
1064 |
> |
fMVAVar_EleSigmaIEtaIEta = ele->CoviEtaiEta() ; |
1065 |
> |
|
1066 |
> |
if (fMVAType == ElectronIDMVA::kIDEGamma2012TrigV0 || |
1067 |
> |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV0 || |
1068 |
> |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV1 || |
1069 |
> |
fMVAType == ElectronIDMVA::kIDHWW2012TrigV0) { |
1070 |
> |
fMVAVar_EleDEtaIn = TMath::Min(fabs(double(ele->DeltaEtaSuperClusterTrackAtVtx())),0.06); ; |
1071 |
> |
fMVAVar_EleDPhiIn = TMath::Min(fabs(double(ele->DeltaPhiSuperClusterTrackAtVtx())),0.6); |
1072 |
> |
fMVAVar_EleFBrem = TMath::Max(double(ele->FBrem()),-1.0); |
1073 |
> |
fMVAVar_EleEOverP = TMath::Min(double(ele->ESuperClusterOverP()), 20.0); |
1074 |
> |
fMVAVar_EleESeedClusterOverPout = TMath::Min(double(ele->ESeedClusterOverPout()),20.0); |
1075 |
> |
fMVAVar_EleEEleClusterOverPout = TMath::Min(double(ele->EEleClusterOverPout()),20.0); |
1076 |
> |
fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->EcalEnergy())) - 1.0 / ele->P(); |
1077 |
> |
fMVAVar_EleGsfTrackChi2OverNdof = TMath::Min(double( ele->BestTrk()->Chi2() / ele->BestTrk()->Ndof()),200.0); |
1078 |
> |
fMVAVar_EledEtaCalo = TMath::Min(fabs(double(ele->DeltaEtaSeedClusterTrackAtCalo())),0.2); |
1079 |
> |
fMVAVar_EleR9 = TMath::Min(double(ele->SCluster()->R9()), 5.0); |
1080 |
> |
} else { |
1081 |
> |
fMVAVar_EleDEtaIn = ele->DeltaEtaSuperClusterTrackAtVtx(); |
1082 |
> |
fMVAVar_EleDPhiIn = ele->DeltaPhiSuperClusterTrackAtVtx(); |
1083 |
> |
fMVAVar_EleFBrem = ele->FBrem(); |
1084 |
> |
fMVAVar_EleEOverP = ele->ESuperClusterOverP(); |
1085 |
> |
fMVAVar_EleESeedClusterOverPout = ele->ESeedClusterOverPout(); |
1086 |
> |
fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->EcalEnergy())) - 1.0 / ele->BestTrk()->P(); |
1087 |
> |
fMVAVar_EleGsfTrackChi2OverNdof = ele->BestTrk()->Chi2() / ele->BestTrk()->Ndof(); |
1088 |
> |
fMVAVar_EledEtaCalo = ele->DeltaEtaSeedClusterTrackAtCalo(); |
1089 |
> |
fMVAVar_EleR9 = ele->SCluster()->R9(); |
1090 |
> |
} |
1091 |
> |
|
1092 |
|
fMVAVar_EleHoverE = ele->HadronicOverEm(); |
1093 |
|
fMVAVar_EleD0 = ele->BestTrk()->D0Corrected(*vertex); |
1094 |
|
fMVAVar_EleDZ = ele->BestTrk()->DzCorrected(*vertex); |
814 |
– |
fMVAVar_EleFBrem = ele->FBrem(); |
815 |
– |
fMVAVar_EleEOverP = ele->ESuperClusterOverP(); |
816 |
– |
fMVAVar_EleESeedClusterOverPout = ele->ESeedClusterOverPout(); |
1095 |
|
if (!TMath::IsNaN(ele->SCluster()->Seed()->CoviPhiiPhi())) fMVAVar_EleSigmaIPhiIPhi = TMath::Sqrt(ele->SCluster()->Seed()->CoviPhiiPhi()); |
1096 |
< |
else fMVAVar_EleSigmaIPhiIPhi = ele->CoviEtaiEta(); |
1097 |
< |
fMVAVar_EleNBrem = ele->NumberOfClusters() - 1; |
1098 |
< |
|
1099 |
< |
if (fMVAType == ElectronIDMVA::kIDEGamma2012TrigV0 |
1100 |
< |
|| fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV0 |
1101 |
< |
|| fMVAType == ElectronIDMVA::kIsoRingsV0) { |
824 |
< |
fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->SCluster()->Energy())) - 1.0 / ele->P(); |
825 |
< |
} else { |
826 |
< |
fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->SCluster()->Energy())) - 1.0 / ele->BestTrk()->P(); |
1096 |
> |
else { |
1097 |
> |
if (fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV1) { |
1098 |
> |
fMVAVar_EleSigmaIPhiIPhi = 0; |
1099 |
> |
} else { |
1100 |
> |
fMVAVar_EleSigmaIPhiIPhi = ele->CoviEtaiEta(); |
1101 |
> |
} |
1102 |
|
} |
1103 |
|
|
1104 |
+ |
fMVAVar_EleNBrem = ele->NumberOfClusters() - 1; |
1105 |
|
fMVAVar_EleESeedClusterOverPIn = ele->ESeedClusterOverPIn(); |
1106 |
|
fMVAVar_EleIP3d = ele->Ip3dPV(); |
1107 |
|
fMVAVar_EleIP3dSig = ele->Ip3dPVSignificance(); |
832 |
– |
fMVAVar_EleGsfTrackChi2OverNdof = ele->BestTrk()->Chi2() / ele->BestTrk()->Ndof(); |
833 |
– |
fMVAVar_EledEtaCalo = ele->DeltaEtaSeedClusterTrackAtCalo(); |
1108 |
|
fMVAVar_EledPhiCalo = ele->DeltaPhiSeedClusterTrackAtCalo(); |
835 |
– |
fMVAVar_EleR9 = ele->SCluster()->R9(); |
1109 |
|
fMVAVar_EleSCEtaWidth = ele->SCluster()->EtaWidth(); |
1110 |
|
fMVAVar_EleSCPhiWidth = ele->SCluster()->PhiWidth(); |
1111 |
|
fMVAVar_EleCovIEtaIPhi = ele->SCluster()->Seed()->CoviEtaiPhi(); |
1112 |
|
fMVAVar_ElePreShowerOverRaw = ele->SCluster()->PreshowerEnergy() / ele->SCluster()->RawEnergy(); |
1113 |
|
|
1114 |
|
//Additional vars |
842 |
– |
fMVAVar_EleEEleClusterOverPout = 0; |
1115 |
|
if (ele->TrackerTrk()) { |
1116 |
< |
fMVAVar_EleKFTrkChiSqr = ele->TrackerTrk()->RChi2(); |
1116 |
> |
if (fMVAType == ElectronIDMVA::kIDEGamma2012TrigV0 || |
1117 |
> |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV0 || |
1118 |
> |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV1 || |
1119 |
> |
fMVAType == ElectronIDMVA::kIDHWW2012TrigV0 ) { |
1120 |
> |
fMVAVar_EleKFTrkChiSqr = TMath::Min(double(ele->TrackerTrk()->RChi2()),10.0); |
1121 |
> |
} else { |
1122 |
> |
fMVAVar_EleKFTrkChiSqr = ele->TrackerTrk()->RChi2(); |
1123 |
> |
} |
1124 |
|
fMVAVar_EleKFTrkNHits = ele->TrackerTrk()->NHits(); |
1125 |
+ |
fMVAVar_EleKFTrkNLayers = ele->CTFTrkNLayersWithMeasurement(); |
1126 |
|
} else { |
1127 |
|
fMVAVar_EleKFTrkChiSqr = 0; |
1128 |
|
fMVAVar_EleKFTrkNHits = -1; |
1129 |
+ |
fMVAVar_EleKFTrkNLayers = -1; |
1130 |
|
} |
1131 |
|
|
1132 |
< |
fMVAVar_EleE1x5OverE5x5 = (ele->SCluster()->Seed()->E5x5() > 0.0) ? 1.0-ele->SCluster()->Seed()->E1x5() / ele->SCluster()->Seed()->E5x5() : -1. ; |
1132 |
> |
if( ele->SCluster()->Seed()->E5x5() > 0.0 ) { |
1133 |
> |
if (fMVAType == ElectronIDMVA::kIDEGamma2012TrigV0 || |
1134 |
> |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV0 || |
1135 |
> |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV1 || |
1136 |
> |
fMVAType == ElectronIDMVA::kIDHWW2012TrigV0 ) { |
1137 |
> |
fMVAVar_EleE1x5OverE5x5 = TMath::Min(TMath::Max(1 - double(ele->SCluster()->Seed()->E1x5()/ele->SCluster()->Seed()->E5x5()) , -1.0),2.0); |
1138 |
> |
} else { |
1139 |
> |
fMVAVar_EleE1x5OverE5x5 = ele->SCluster()->Seed()->E1x5()/ele->SCluster()->Seed()->E5x5(); |
1140 |
> |
} |
1141 |
> |
} else { |
1142 |
> |
fMVAVar_EleE1x5OverE5x5 = -1.0; |
1143 |
> |
} |
1144 |
> |
|
1145 |
|
|
1146 |
|
Double_t tmpChargedIso_DR0p0To0p1 = 0; |
1147 |
|
Double_t tmpChargedIso_DR0p1To0p2 = 0; |
1178 |
|
//************************************************************ |
1179 |
|
// Lepton Footprint Removal |
1180 |
|
//************************************************************ |
1181 |
< |
for (UInt_t q=0; q < goodElectrons->GetEntries() ; ++q) { |
1182 |
< |
//if pf candidate matches an electron passing ID cuts, then veto it |
1183 |
< |
if(pf->GsfTrk() && goodElectrons->At(q)->GsfTrk() && |
1184 |
< |
pf->GsfTrk() == goodElectrons->At(q)->GsfTrk()) IsLeptonFootprint = kTRUE; |
1185 |
< |
if(pf->TrackerTrk() && goodElectrons->At(q)->TrackerTrk() && |
1186 |
< |
pf->TrackerTrk() == goodElectrons->At(q)->TrackerTrk()) IsLeptonFootprint = kTRUE; |
1187 |
< |
//if pf candidate lies in veto regions of electron passing ID cuts, then veto it |
1188 |
< |
if(pf->BestTrk() && fabs(goodElectrons->At(q)->SCluster()->Eta()) >= 1.479 |
1189 |
< |
&& MathUtils::DeltaR(goodElectrons->At(q)->Mom(), pf->Mom()) < 0.015) IsLeptonFootprint = kTRUE; |
1190 |
< |
if(pf->PFType() == PFCandidate::eGamma && fabs(goodElectrons->At(q)->SCluster()->Eta()) >= 1.479 && |
1191 |
< |
MathUtils::DeltaR(goodElectrons->At(q)->Mom(), pf->Mom()) < 0.08) IsLeptonFootprint = kTRUE; |
1181 |
> |
if(goodElectrons) { |
1182 |
> |
for (UInt_t q=0; q < goodElectrons->GetEntries() ; ++q) { |
1183 |
> |
//if pf candidate matches an electron passing ID cuts, then veto it |
1184 |
> |
if(pf->GsfTrk() && goodElectrons->At(q)->GsfTrk() && |
1185 |
> |
pf->GsfTrk() == goodElectrons->At(q)->GsfTrk()) IsLeptonFootprint = kTRUE; |
1186 |
> |
if(pf->TrackerTrk() && goodElectrons->At(q)->TrackerTrk() && |
1187 |
> |
pf->TrackerTrk() == goodElectrons->At(q)->TrackerTrk()) IsLeptonFootprint = kTRUE; |
1188 |
> |
//if pf candidate lies in veto regions of electron passing ID cuts, then veto it |
1189 |
> |
if(pf->BestTrk() && fabs(goodElectrons->At(q)->SCluster()->Eta()) >= 1.479 |
1190 |
> |
&& MathUtils::DeltaR(goodElectrons->At(q)->Mom(), pf->Mom()) < 0.015) IsLeptonFootprint = kTRUE; |
1191 |
> |
if(pf->PFType() == PFCandidate::eGamma && fabs(goodElectrons->At(q)->SCluster()->Eta()) >= 1.479 && |
1192 |
> |
MathUtils::DeltaR(goodElectrons->At(q)->Mom(), pf->Mom()) < 0.08) IsLeptonFootprint = kTRUE; |
1193 |
> |
} |
1194 |
|
} |
1195 |
< |
for (UInt_t q=0; q < goodMuons->GetEntries() ; ++q) { |
1196 |
< |
//if pf candidate matches an muon passing ID cuts, then veto it |
1197 |
< |
if(pf->TrackerTrk() && goodMuons->At(q)->TrackerTrk() && |
1198 |
< |
pf->TrackerTrk() == goodMuons->At(q)->TrackerTrk()) IsLeptonFootprint = kTRUE; |
1199 |
< |
//if pf candidate lies in veto regions of muon passing ID cuts, then veto it |
1200 |
< |
if(pf->BestTrk() && MathUtils::DeltaR(goodMuons->At(q)->Mom(), pf->Mom()) < 0.01) IsLeptonFootprint = kTRUE; |
1195 |
> |
if(goodMuons) { |
1196 |
> |
for (UInt_t q=0; q < goodMuons->GetEntries() ; ++q) { |
1197 |
> |
//if pf candidate matches an muon passing ID cuts, then veto it |
1198 |
> |
if(pf->TrackerTrk() && goodMuons->At(q)->TrackerTrk() && |
1199 |
> |
pf->TrackerTrk() == goodMuons->At(q)->TrackerTrk()) IsLeptonFootprint = kTRUE; |
1200 |
> |
//if pf candidate lies in veto regions of muon passing ID cuts, then veto it |
1201 |
> |
if(pf->BestTrk() && MathUtils::DeltaR(goodMuons->At(q)->Mom(), pf->Mom()) < 0.01) IsLeptonFootprint = kTRUE; |
1202 |
> |
} |
1203 |
|
} |
1204 |
|
|
1205 |
|
if (!IsLeptonFootprint) { |
1253 |
|
} //in 1.0 dr cone |
1254 |
|
} //loop over PF candidates |
1255 |
|
|
959 |
– |
Double_t fMVAVar_ChargedIso_DR0p0To0p1 = 0; |
960 |
– |
Double_t fMVAVar_ChargedIso_DR0p1To0p2 = 0; |
961 |
– |
Double_t fMVAVar_ChargedIso_DR0p2To0p3 = 0; |
962 |
– |
Double_t fMVAVar_ChargedIso_DR0p3To0p4 = 0; |
963 |
– |
Double_t fMVAVar_ChargedIso_DR0p4To0p5 = 0; |
964 |
– |
Double_t fMVAVar_GammaIso_DR0p0To0p1 = 0; |
965 |
– |
Double_t fMVAVar_GammaIso_DR0p1To0p2 = 0; |
966 |
– |
Double_t fMVAVar_GammaIso_DR0p2To0p3 = 0; |
967 |
– |
Double_t fMVAVar_GammaIso_DR0p3To0p4 = 0; |
968 |
– |
Double_t fMVAVar_GammaIso_DR0p4To0p5 = 0; |
969 |
– |
Double_t fMVAVar_NeutralHadronIso_DR0p0To0p1 = 0; |
970 |
– |
Double_t fMVAVar_NeutralHadronIso_DR0p1To0p2 = 0; |
971 |
– |
Double_t fMVAVar_NeutralHadronIso_DR0p2To0p3 = 0; |
972 |
– |
Double_t fMVAVar_NeutralHadronIso_DR0p3To0p4 = 0; |
973 |
– |
Double_t fMVAVar_NeutralHadronIso_DR0p4To0p5 = 0; |
974 |
– |
|
1256 |
|
fMVAVar_ChargedIso_DR0p0To0p1 = TMath::Min((tmpChargedIso_DR0p0To0p1)/ele->Pt(), 2.5); |
1257 |
|
fMVAVar_ChargedIso_DR0p1To0p2 = TMath::Min((tmpChargedIso_DR0p1To0p2)/ele->Pt(), 2.5); |
1258 |
|
fMVAVar_ChargedIso_DR0p2To0p3 = TMath::Min((tmpChargedIso_DR0p2To0p3)/ele->Pt(), 2.5); |
1267 |
|
fMVAVar_NeutralHadronIso_DR0p1To0p2 = TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p1To0p2 - Rho*ElectronTools::ElectronEffectiveArea(ElectronTools::kEleNeutralHadronIsoDR0p1To0p2, ele->SCluster()->Eta(), EffectiveAreaTarget))/ele->Pt(), 2.5), 0.0); |
1268 |
|
fMVAVar_NeutralHadronIso_DR0p2To0p3 = TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p2To0p3 - Rho*ElectronTools::ElectronEffectiveArea(ElectronTools::kEleNeutralHadronIsoDR0p2To0p3, ele->SCluster()->Eta(), EffectiveAreaTarget))/ele->Pt(), 2.5), 0.0); |
1269 |
|
fMVAVar_NeutralHadronIso_DR0p3To0p4 = TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p3To0p4 - Rho*ElectronTools::ElectronEffectiveArea(ElectronTools::kEleNeutralHadronIsoDR0p3To0p4, ele->SCluster()->Eta(), EffectiveAreaTarget))/ele->Pt(), 2.5), 0.0); |
1270 |
< |
fMVAVar_NeutralHadronIso_DR0p4To0p5 = TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p4To0p5 - Rho*ElectronTools::ElectronEffectiveArea(ElectronTools::kEleNeutralHadronIsoDR0p4To0p5, ele->SCluster()->Eta(), EffectiveAreaTarget))/ele->Pt(), 2.5), 0.0); |
990 |
< |
|
991 |
< |
// cout << "gg: " << tmpGammaIso_DR0p4To0p5 << " : " << ElectronTools::ElectronEffectiveArea(ElectronTools::kEleGammaIsoDR0p4To0p5, ele->SCluster()->Eta(), EffectiveAreaTarget) << " " << EffectiveAreaTarget << endl; |
1270 |
> |
fMVAVar_NeutralHadronIso_DR0p4To0p5 = TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p4To0p5 - Rho*ElectronTools::ElectronEffectiveArea(ElectronTools::kEleNeutralHadronIsoDR0p4To0p5, ele->SCluster()->Eta(), EffectiveAreaTarget))/ele->Pt(), 2.5), 0.0); |
1271 |
|
|
1272 |
|
//Do Binding of MVA input variables |
1273 |
< |
if (fMVAType == ElectronIDMVA::kIDEGamma2012TrigV0 |
1273 |
> |
if ( fMVAType == ElectronIDMVA::kIDEGamma2012TrigV0 |
1274 |
|
|| fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV0 |
1275 |
< |
|| fMVAType == ElectronIDMVA::kIsoRingsV0) { |
1275 |
> |
|| fMVAType == ElectronIDMVA::kIsoRingsV0 |
1276 |
> |
|| fMVAType == ElectronIDMVA::kIDHWW2012TrigV0) { |
1277 |
|
bindVariables(); |
1278 |
|
} |
1279 |
|
|
1280 |
|
Double_t mva = -9999; |
1281 |
|
TMVA::Reader *reader = 0; |
1002 |
– |
Int_t MVABin = -1; |
1003 |
– |
|
1004 |
– |
if (fMVAVar_ElePt < 10 && fabs(fMVAVar_EleEta) < 1.479) MVABin = 0; |
1005 |
– |
if (fMVAVar_ElePt < 10 && fabs(fMVAVar_EleEta) >= 1.479) MVABin = 1; |
1006 |
– |
if (fMVAVar_ElePt > 10 && fabs(fMVAVar_EleEta) < 1.479) MVABin = 2; |
1007 |
– |
if (fMVAVar_ElePt > 10 && fabs(fMVAVar_EleEta) >= 1.479) MVABin = 3; |
1282 |
|
|
1283 |
< |
std::cout <<" -> BIN: " << fMVAVar_EleEta << " " << fMVAVar_ElePt << " : " << MVABin << std::endl; |
1283 |
> |
reader = fTMVAReader[GetMVABin( fMVAVar_EleEta , fMVAVar_ElePt)]; |
1284 |
> |
mva = reader->EvaluateMVA( fMethodname ); |
1285 |
|
|
1286 |
< |
if (!fUseBinnedVersion) { |
1287 |
< |
reader = fTMVAReader[0]; |
1286 |
> |
if (printDebug == kTRUE) { |
1287 |
> |
|
1288 |
> |
std::cout << "Debug Electron MVA-ID: " |
1289 |
> |
<< fMVAVar_ElePt<< " " << fMVAVar_EleEta << " " |
1290 |
> |
<< " --> MVABin " << GetMVABin( fMVAVar_EleEta , fMVAVar_ElePt) << " : " |
1291 |
> |
<< " fbrem " << fMVAVar_EleFBrem |
1292 |
> |
<< " kfchi2 " << fMVAVar_EleKFTrkChiSqr |
1293 |
> |
<< " kfhits " << fMVAVar_EleKFTrkNLayers |
1294 |
> |
<< " kfhitsall " << fMVAVar_EleKFTrkNHits |
1295 |
> |
<< " gsfchi2 " << fMVAVar_EleGsfTrackChi2OverNdof |
1296 |
> |
<< " deta " << fMVAVar_EleDEtaIn |
1297 |
> |
<< " dphi " << fMVAVar_EleDPhiIn |
1298 |
> |
<< " detacalo " << fMVAVar_EledEtaCalo |
1299 |
> |
<< " see " << fMVAVar_EleSigmaIEtaIEta |
1300 |
> |
<< " spp " << fMVAVar_EleSigmaIPhiIPhi |
1301 |
> |
<< " etawidth " << fMVAVar_EleSCEtaWidth |
1302 |
> |
<< " phiwidth " << fMVAVar_EleSCPhiWidth |
1303 |
> |
<< " e1x5e5x5 " << fMVAVar_EleE1x5OverE5x5 |
1304 |
> |
<< " R9 " << fMVAVar_EleR9 |
1305 |
> |
<< " HoE " << fMVAVar_EleHoverE |
1306 |
> |
<< " EoP " << fMVAVar_EleEOverP |
1307 |
> |
<< " IoEmIoP " << fMVAVar_EleOneOverEMinusOneOverP |
1308 |
> |
<< " eleEoPout " << fMVAVar_EleEEleClusterOverPout |
1309 |
> |
<< " EoPout " << fMVAVar_EleESeedClusterOverPout |
1310 |
> |
<< " PreShowerOverRaw" << fMVAVar_ElePreShowerOverRaw |
1311 |
> |
<< " d0 " << fMVAVar_EleD0 |
1312 |
> |
<< " ip3d " << fMVAVar_EleIP3d |
1313 |
> |
<< " eta " << fMVAVar_EleEta |
1314 |
> |
<< " pt " << fMVAVar_ElePt |
1315 |
> |
<< " === : === " |
1316 |
> |
<< mva << " " |
1317 |
> |
<< std::endl; |
1318 |
> |
std::cout << "Debug Electron MVA-ISO: " |
1319 |
> |
<< fMVAVar_ChargedIso_DR0p0To0p1 << " " |
1320 |
> |
<< fMVAVar_ChargedIso_DR0p1To0p2 << " " |
1321 |
> |
<< fMVAVar_ChargedIso_DR0p2To0p3 << " " |
1322 |
> |
<< fMVAVar_ChargedIso_DR0p3To0p4 << " " |
1323 |
> |
<< fMVAVar_ChargedIso_DR0p4To0p5 << " " |
1324 |
> |
<< fMVAVar_GammaIso_DR0p0To0p1 << " " |
1325 |
> |
<< fMVAVar_GammaIso_DR0p1To0p2 << " " |
1326 |
> |
<< fMVAVar_GammaIso_DR0p2To0p3 << " " |
1327 |
> |
<< fMVAVar_GammaIso_DR0p3To0p4 << " " |
1328 |
> |
<< fMVAVar_GammaIso_DR0p4To0p5 << " " |
1329 |
> |
<< fMVAVar_NeutralHadronIso_DR0p0To0p1 << " " |
1330 |
> |
<< fMVAVar_NeutralHadronIso_DR0p1To0p2 << " " |
1331 |
> |
<< fMVAVar_NeutralHadronIso_DR0p2To0p3 << " " |
1332 |
> |
<< fMVAVar_NeutralHadronIso_DR0p3To0p4 << " " |
1333 |
> |
<< fMVAVar_NeutralHadronIso_DR0p4To0p5 << " " |
1334 |
> |
<< std::endl; |
1335 |
> |
} |
1336 |
> |
|
1337 |
> |
return mva; |
1338 |
> |
} |
1339 |
> |
|
1340 |
> |
|
1341 |
> |
//-------------------------------------------------------------------------------------------------- |
1342 |
> |
//MVA Includes Isolation |
1343 |
> |
// |
1344 |
> |
Double_t ElectronIDMVA::MVAValue(const Electron *ele, const Vertex *vertex, |
1345 |
> |
const VertexCol *primaryVertices, |
1346 |
> |
const PFCandidateCol *PFCands, |
1347 |
> |
const PileupEnergyDensityCol *PileupEnergyDensity, |
1348 |
> |
ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaTarget, |
1349 |
> |
Bool_t printDebug) { |
1350 |
> |
|
1351 |
> |
if (!fIsInitialized) { |
1352 |
> |
std::cout << "Error: ElectronIDMVA not properly initialized.\n"; |
1353 |
> |
return -9999; |
1354 |
> |
} |
1355 |
> |
|
1356 |
> |
Double_t Rho = 0; |
1357 |
> |
switch(fTheRhoType) { |
1358 |
> |
case RhoUtilities::MIT_RHO_VORONOI_HIGH_ETA: |
1359 |
> |
Rho = PileupEnergyDensity->At(0)->Rho(); |
1360 |
> |
break; |
1361 |
> |
case RhoUtilities::MIT_RHO_VORONOI_LOW_ETA: |
1362 |
> |
Rho = PileupEnergyDensity->At(0)->RhoLowEta(); |
1363 |
> |
break; |
1364 |
> |
case RhoUtilities::MIT_RHO_RANDOM_HIGH_ETA: |
1365 |
> |
Rho = PileupEnergyDensity->At(0)->RhoRandom(); |
1366 |
> |
break; |
1367 |
> |
case RhoUtilities::MIT_RHO_RANDOM_LOW_ETA: |
1368 |
> |
Rho = PileupEnergyDensity->At(0)->RhoRandomLowEta(); |
1369 |
> |
break; |
1370 |
> |
case RhoUtilities::CMS_RHO_RHOKT6PFJETS: |
1371 |
> |
Rho = PileupEnergyDensity->At(0)->RhoKt6PFJets(); |
1372 |
> |
break; |
1373 |
> |
default: |
1374 |
> |
// use the old default |
1375 |
> |
Rho = PileupEnergyDensity->At(0)->Rho(); |
1376 |
> |
break; |
1377 |
> |
} |
1378 |
> |
|
1379 |
> |
//set all input variables |
1380 |
> |
fMVAVar_ElePt = ele->Pt(); |
1381 |
> |
fMVAVar_EleEta = ele->SCluster()->Eta(); |
1382 |
> |
fMVAVar_EleSigmaIEtaIEta = ele->CoviEtaiEta() ; |
1383 |
> |
|
1384 |
> |
if (fMVAType == ElectronIDMVA::kIDEGamma2012TrigV0 || |
1385 |
> |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV0 || |
1386 |
> |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV1 || |
1387 |
> |
fMVAType == ElectronIDMVA::kIDHWW2012TrigV0 |
1388 |
> |
) { |
1389 |
> |
fMVAVar_EleDEtaIn = TMath::Min(fabs(double(ele->DeltaEtaSuperClusterTrackAtVtx())),0.06); ; |
1390 |
> |
fMVAVar_EleDPhiIn = TMath::Min(fabs(double(ele->DeltaPhiSuperClusterTrackAtVtx())),0.6); |
1391 |
> |
fMVAVar_EleFBrem = TMath::Max(double(ele->FBrem()),-1.0); |
1392 |
> |
fMVAVar_EleEOverP = TMath::Min(double(ele->ESuperClusterOverP()), 20.0); |
1393 |
> |
fMVAVar_EleESeedClusterOverPout = TMath::Min(double(ele->ESeedClusterOverPout()),20.0); |
1394 |
> |
fMVAVar_EleEEleClusterOverPout = TMath::Min(double(ele->EEleClusterOverPout()),20.0); |
1395 |
> |
fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->EcalEnergy())) - 1.0 / ele->P(); |
1396 |
> |
fMVAVar_EleGsfTrackChi2OverNdof = TMath::Min(double( ele->BestTrk()->Chi2() / ele->BestTrk()->Ndof()),200.0); |
1397 |
> |
fMVAVar_EledEtaCalo = TMath::Min(fabs(double(ele->DeltaEtaSeedClusterTrackAtCalo())),0.2); |
1398 |
> |
fMVAVar_EleR9 = TMath::Min(double(ele->SCluster()->R9()), 5.0); |
1399 |
> |
} |
1400 |
> |
else if (fMVAType == ElectronIDMVA::kIDIsoCombinedHWW2012TrigV4) { |
1401 |
> |
fMVAVar_EleDEtaIn = TMath::Min(fabs(double(ele->DeltaEtaSuperClusterTrackAtVtx())),0.06); ; |
1402 |
> |
fMVAVar_EleDPhiIn = ele->DeltaPhiSuperClusterTrackAtVtx(); |
1403 |
> |
fMVAVar_EleFBrem = TMath::Max(double(ele->FBrem()),-1.0); |
1404 |
> |
fMVAVar_EleEOverP = TMath::Min(double(ele->ESuperClusterOverP()), 20.0); |
1405 |
> |
fMVAVar_EleESeedClusterOverPout = TMath::Min(double(ele->ESeedClusterOverPout()),20.0); |
1406 |
> |
fMVAVar_EleEEleClusterOverPout = TMath::Min(double(ele->EEleClusterOverPout()),20.0); |
1407 |
> |
fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->EcalEnergy())) - 1.0 / ele->PIn(); |
1408 |
> |
fMVAVar_EleGsfTrackChi2OverNdof = TMath::Min(double( ele->BestTrk()->Chi2() / ele->BestTrk()->Ndof()),200.0); |
1409 |
> |
fMVAVar_EledEtaCalo = ele->DeltaEtaSeedClusterTrackAtCalo(); |
1410 |
> |
fMVAVar_EleR9 = TMath::Min(double(ele->SCluster()->R9()), 5.0); |
1411 |
> |
} |
1412 |
> |
else { |
1413 |
> |
fMVAVar_EleDEtaIn = ele->DeltaEtaSuperClusterTrackAtVtx(); |
1414 |
> |
fMVAVar_EleDPhiIn = ele->DeltaPhiSuperClusterTrackAtVtx(); |
1415 |
> |
fMVAVar_EleFBrem = ele->FBrem(); |
1416 |
> |
fMVAVar_EleEOverP = ele->ESuperClusterOverP(); |
1417 |
> |
fMVAVar_EleESeedClusterOverPout = ele->ESeedClusterOverPout(); |
1418 |
> |
fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->EcalEnergy())) - 1.0 / ele->BestTrk()->P(); |
1419 |
> |
fMVAVar_EleGsfTrackChi2OverNdof = ele->BestTrk()->Chi2() / ele->BestTrk()->Ndof(); |
1420 |
> |
fMVAVar_EledEtaCalo = ele->DeltaEtaSeedClusterTrackAtCalo(); |
1421 |
> |
fMVAVar_EleR9 = ele->SCluster()->R9(); |
1422 |
> |
} |
1423 |
> |
|
1424 |
> |
fMVAVar_EleHoverE = ele->HadronicOverEm(); |
1425 |
> |
fMVAVar_EleD0 = ele->BestTrk()->D0Corrected(*vertex); |
1426 |
> |
fMVAVar_EleDZ = ele->BestTrk()->DzCorrected(*vertex); |
1427 |
> |
if (!TMath::IsNaN(ele->SCluster()->Seed()->CoviPhiiPhi())) fMVAVar_EleSigmaIPhiIPhi = TMath::Sqrt(ele->SCluster()->Seed()->CoviPhiiPhi()); |
1428 |
> |
else { |
1429 |
> |
if (fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV1 ) { |
1430 |
> |
fMVAVar_EleSigmaIPhiIPhi = 0; |
1431 |
> |
} else { |
1432 |
> |
fMVAVar_EleSigmaIPhiIPhi = ele->CoviEtaiEta(); |
1433 |
> |
} |
1434 |
> |
} |
1435 |
> |
|
1436 |
> |
fMVAVar_EleNBrem = ele->NumberOfClusters() - 1; |
1437 |
> |
fMVAVar_EleESeedClusterOverPIn = ele->ESeedClusterOverPIn(); |
1438 |
> |
fMVAVar_EleIP3d = ele->Ip3dPV(); |
1439 |
> |
fMVAVar_EleIP3dSig = ele->Ip3dPVSignificance(); |
1440 |
> |
fMVAVar_EledPhiCalo = ele->DeltaPhiSeedClusterTrackAtCalo(); |
1441 |
> |
fMVAVar_EleSCEtaWidth = ele->SCluster()->EtaWidth(); |
1442 |
> |
fMVAVar_EleSCPhiWidth = ele->SCluster()->PhiWidth(); |
1443 |
> |
fMVAVar_EleCovIEtaIPhi = ele->SCluster()->Seed()->CoviEtaiPhi(); |
1444 |
> |
fMVAVar_ElePreShowerOverRaw = ele->SCluster()->PreshowerEnergy() / ele->SCluster()->RawEnergy(); |
1445 |
> |
|
1446 |
> |
//Additional vars |
1447 |
> |
if (ele->TrackerTrk()) { |
1448 |
> |
if (fMVAType == ElectronIDMVA::kIDEGamma2012TrigV0 || |
1449 |
> |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV0 || |
1450 |
> |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV1 || |
1451 |
> |
fMVAType == ElectronIDMVA::kIDHWW2012TrigV0 || |
1452 |
> |
fMVAType == ElectronIDMVA::kIDIsoCombinedHWW2012TrigV4 |
1453 |
> |
) { |
1454 |
> |
fMVAVar_EleKFTrkChiSqr = TMath::Min(double(ele->TrackerTrk()->RChi2()),10.0); |
1455 |
> |
} else { |
1456 |
> |
fMVAVar_EleKFTrkChiSqr = ele->TrackerTrk()->RChi2(); |
1457 |
> |
} |
1458 |
> |
fMVAVar_EleKFTrkNHits = ele->TrackerTrk()->NHits(); |
1459 |
> |
fMVAVar_EleKFTrkNLayers = ele->CTFTrkNLayersWithMeasurement(); |
1460 |
> |
} else { |
1461 |
> |
fMVAVar_EleKFTrkChiSqr = 0; |
1462 |
> |
fMVAVar_EleKFTrkNHits = -1; |
1463 |
> |
fMVAVar_EleKFTrkNLayers = -1; |
1464 |
> |
} |
1465 |
> |
|
1466 |
> |
if( ele->SCluster()->Seed()->E5x5() > 0.0 ) { |
1467 |
> |
if (fMVAType == ElectronIDMVA::kIDEGamma2012TrigV0 || |
1468 |
> |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV0 || |
1469 |
> |
fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV1 || |
1470 |
> |
fMVAType == ElectronIDMVA::kIDHWW2012TrigV0 || |
1471 |
> |
fMVAType == ElectronIDMVA::kIDIsoCombinedHWW2012TrigV4 |
1472 |
> |
) { |
1473 |
> |
fMVAVar_EleE1x5OverE5x5 = TMath::Min(TMath::Max(1 - double(ele->SCluster()->Seed()->E1x5()/ele->SCluster()->Seed()->E5x5()) , -1.0),2.0); |
1474 |
> |
fMVAVar_EleOneMinusE1x5OverE5x5 = TMath::Min(TMath::Max(1 - double(ele->SCluster()->Seed()->E1x5()/ele->SCluster()->Seed()->E5x5()) , -1.0),2.0); |
1475 |
> |
} else { |
1476 |
> |
fMVAVar_EleE1x5OverE5x5 = ele->SCluster()->Seed()->E1x5()/ele->SCluster()->Seed()->E5x5(); |
1477 |
> |
} |
1478 |
|
} else { |
1479 |
< |
reader = fTMVAReader[MVABin]; |
1479 |
> |
fMVAVar_EleE1x5OverE5x5 = -1.0; |
1480 |
> |
} |
1481 |
> |
|
1482 |
> |
|
1483 |
> |
Double_t tmpChargedIso_DR0p0To0p1 = 0; |
1484 |
> |
Double_t tmpChargedIso_DR0p1To0p2 = 0; |
1485 |
> |
Double_t tmpChargedIso_DR0p2To0p3 = 0; |
1486 |
> |
Double_t tmpChargedIso_DR0p3To0p4 = 0; |
1487 |
> |
Double_t tmpChargedIso_DR0p4To0p5 = 0; |
1488 |
> |
Double_t tmpGammaIso_DR0p0To0p1 = 0; |
1489 |
> |
Double_t tmpGammaIso_DR0p1To0p2 = 0; |
1490 |
> |
Double_t tmpGammaIso_DR0p2To0p3 = 0; |
1491 |
> |
Double_t tmpGammaIso_DR0p3To0p4 = 0; |
1492 |
> |
Double_t tmpGammaIso_DR0p4To0p5 = 0; |
1493 |
> |
Double_t tmpNeutralHadronIso_DR0p0To0p1 = 0; |
1494 |
> |
Double_t tmpNeutralHadronIso_DR0p1To0p2 = 0; |
1495 |
> |
Double_t tmpNeutralHadronIso_DR0p2To0p3 = 0; |
1496 |
> |
Double_t tmpNeutralHadronIso_DR0p3To0p4 = 0; |
1497 |
> |
Double_t tmpNeutralHadronIso_DR0p4To0p5 = 0; |
1498 |
> |
|
1499 |
> |
for (UInt_t p=0; p<PFCands->GetEntries();p++) { |
1500 |
> |
const PFCandidate *pf = PFCands->At(p); |
1501 |
> |
|
1502 |
> |
//************************************************************ |
1503 |
> |
// New Isolation Calculations |
1504 |
> |
//************************************************************ |
1505 |
> |
Double_t dr = MathUtils::DeltaR(ele->Mom(), pf->Mom()); |
1506 |
> |
|
1507 |
> |
if (dr < 0.5) { |
1508 |
> |
|
1509 |
> |
Bool_t passVeto = kTRUE; |
1510 |
> |
//Charged |
1511 |
> |
if(pf->BestTrk()) { |
1512 |
> |
|
1513 |
> |
//************************************************* |
1514 |
> |
//Use only PFNoPU |
1515 |
> |
//************************************************* |
1516 |
> |
Bool_t isPFNoPU = kFALSE; |
1517 |
> |
if(pf->PFType() == PFCandidate::eHadron) { |
1518 |
> |
if(pf->HasTrackerTrk() && |
1519 |
> |
primaryVertices->At(0)->HasTrack(pf->TrackerTrk()) && |
1520 |
> |
primaryVertices->At(0)->TrackWeight(pf->TrackerTrk()) > 0) { |
1521 |
> |
isPFNoPU = kTRUE; |
1522 |
> |
} else { |
1523 |
> |
|
1524 |
> |
Bool_t vertexFound = kFALSE; |
1525 |
> |
const Vertex *closestVtx = 0; |
1526 |
> |
Double_t dzmin = 10000; |
1527 |
> |
|
1528 |
> |
// loop over vertices |
1529 |
> |
for(UInt_t j = 0; j < primaryVertices->GetEntries(); j++) { |
1530 |
> |
const Vertex *vtx = primaryVertices->At(j); |
1531 |
> |
assert(vtx); |
1532 |
> |
|
1533 |
> |
if(pf->HasTrackerTrk() && |
1534 |
> |
vtx->HasTrack(pf->TrackerTrk()) && |
1535 |
> |
vtx->TrackWeight(pf->TrackerTrk()) > 0) { |
1536 |
> |
vertexFound = kTRUE; |
1537 |
> |
closestVtx = vtx; |
1538 |
> |
break; |
1539 |
> |
} |
1540 |
> |
Double_t dz = fabs(pf->SourceVertex().Z() - vtx->Z()); |
1541 |
> |
if(dz < dzmin) { |
1542 |
> |
closestVtx = vtx; |
1543 |
> |
dzmin = dz; |
1544 |
> |
} |
1545 |
> |
} |
1546 |
> |
|
1547 |
> |
Bool_t fCheckClosestZVertex = kTRUE; //we use option 1 |
1548 |
> |
if(fCheckClosestZVertex) { |
1549 |
> |
// Fallback: if track is not associated with any vertex, |
1550 |
> |
// associate it with the vertex closest in z |
1551 |
> |
if(vertexFound || closestVtx != vertex) { |
1552 |
> |
isPFNoPU = kFALSE; |
1553 |
> |
} else { |
1554 |
> |
isPFNoPU = kTRUE; |
1555 |
> |
} |
1556 |
> |
} else { |
1557 |
> |
if(vertexFound && closestVtx != vertex) { |
1558 |
> |
isPFNoPU = kFALSE; |
1559 |
> |
} else { |
1560 |
> |
isPFNoPU = kTRUE; |
1561 |
> |
} |
1562 |
> |
} |
1563 |
> |
} //hadron & trk stuff |
1564 |
> |
} else { // hadron |
1565 |
> |
// |
1566 |
> |
isPFNoPU = kTRUE; |
1567 |
> |
} |
1568 |
> |
if (!isPFNoPU) continue; |
1569 |
> |
|
1570 |
> |
//************************************************************ |
1571 |
> |
// Veto any PFmuon, or PFEle |
1572 |
> |
if (pf->PFType() == PFCandidate::eElectron || pf->PFType() == PFCandidate::eMuon) passVeto = kFALSE; |
1573 |
> |
//************************************************************ |
1574 |
> |
//************************************************************ |
1575 |
> |
// Footprint Veto |
1576 |
> |
if (fabs(ele->SCluster()->Eta()) >= 1.479 && dr < 0.015) passVeto = kFALSE; |
1577 |
> |
//************************************************************ |
1578 |
> |
if (passVeto) { |
1579 |
> |
if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += pf->Pt(); |
1580 |
> |
if (dr >= 0.1 && dr < 0.2) tmpChargedIso_DR0p1To0p2 += pf->Pt(); |
1581 |
> |
if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += pf->Pt(); |
1582 |
> |
if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += pf->Pt(); |
1583 |
> |
if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += pf->Pt(); |
1584 |
> |
} //pass veto |
1585 |
> |
|
1586 |
> |
} |
1587 |
> |
//Gamma |
1588 |
> |
else if (pf->PFType() == PFCandidate::eGamma) { |
1589 |
> |
//************************************************************ |
1590 |
> |
// Footprint Veto |
1591 |
> |
if (fabs(ele->SCluster()->Eta()) > 1.479) { |
1592 |
> |
if (dr < 0.08) passVeto = kFALSE; |
1593 |
> |
} |
1594 |
> |
//************************************************************ |
1595 |
> |
|
1596 |
> |
if (passVeto) { |
1597 |
> |
if (dr < 0.1) tmpGammaIso_DR0p0To0p1 += pf->Pt(); |
1598 |
> |
if (dr >= 0.1 && dr < 0.2) tmpGammaIso_DR0p1To0p2 += pf->Pt(); |
1599 |
> |
if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += pf->Pt(); |
1600 |
> |
if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += pf->Pt(); |
1601 |
> |
if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += pf->Pt(); |
1602 |
> |
} |
1603 |
> |
} |
1604 |
> |
//NeutralHadron |
1605 |
> |
else { |
1606 |
> |
if (dr < 0.1) tmpNeutralHadronIso_DR0p0To0p1 += pf->Pt(); |
1607 |
> |
if (dr >= 0.1 && dr < 0.2) tmpNeutralHadronIso_DR0p1To0p2 += pf->Pt(); |
1608 |
> |
if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += pf->Pt(); |
1609 |
> |
if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += pf->Pt(); |
1610 |
> |
if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += pf->Pt(); |
1611 |
> |
} |
1612 |
> |
} //in 1.0 dr cone |
1613 |
> |
} //loop over PF candidates |
1614 |
> |
|
1615 |
> |
fMVAVar_ChargedIso_DR0p0To0p1 = tmpChargedIso_DR0p0To0p1/ele->Pt(); |
1616 |
> |
fMVAVar_ChargedIso_DR0p1To0p2 = tmpChargedIso_DR0p1To0p2/ele->Pt(); |
1617 |
> |
fMVAVar_ChargedIso_DR0p2To0p3 = tmpChargedIso_DR0p2To0p3/ele->Pt(); |
1618 |
> |
fMVAVar_ChargedIso_DR0p3To0p4 = tmpChargedIso_DR0p3To0p4/ele->Pt(); |
1619 |
> |
fMVAVar_ChargedIso_DR0p4To0p5 = tmpChargedIso_DR0p4To0p5/ele->Pt(); |
1620 |
> |
fMVAVar_GammaIso_DR0p0To0p1 = tmpGammaIso_DR0p0To0p1/ele->Pt(); |
1621 |
> |
fMVAVar_GammaIso_DR0p1To0p2 = tmpGammaIso_DR0p1To0p2/ele->Pt(); |
1622 |
> |
fMVAVar_GammaIso_DR0p2To0p3 = tmpGammaIso_DR0p2To0p3/ele->Pt(); |
1623 |
> |
fMVAVar_GammaIso_DR0p3To0p4 = tmpGammaIso_DR0p3To0p4/ele->Pt(); |
1624 |
> |
fMVAVar_GammaIso_DR0p4To0p5 = tmpGammaIso_DR0p4To0p5/ele->Pt(); |
1625 |
> |
fMVAVar_NeutralHadronIso_DR0p0To0p1 = tmpNeutralHadronIso_DR0p0To0p1/ele->Pt(); |
1626 |
> |
fMVAVar_NeutralHadronIso_DR0p1To0p2 = tmpNeutralHadronIso_DR0p1To0p2/ele->Pt(); |
1627 |
> |
fMVAVar_NeutralHadronIso_DR0p2To0p3 = tmpNeutralHadronIso_DR0p2To0p3/ele->Pt(); |
1628 |
> |
fMVAVar_NeutralHadronIso_DR0p3To0p4 = tmpNeutralHadronIso_DR0p3To0p4/ele->Pt(); |
1629 |
> |
fMVAVar_NeutralHadronIso_DR0p4To0p5 = tmpNeutralHadronIso_DR0p4To0p5/ele->Pt(); |
1630 |
> |
fMVAVar_Rho = Rho; |
1631 |
> |
|
1632 |
> |
//Do Binding of MVA input variables |
1633 |
> |
if ( fMVAType == ElectronIDMVA::kIDEGamma2012TrigV0 |
1634 |
> |
|| fMVAType == ElectronIDMVA::kIDEGamma2012NonTrigV0 |
1635 |
> |
|| fMVAType == ElectronIDMVA::kIsoRingsV0 |
1636 |
> |
|| fMVAType == ElectronIDMVA::kIDHWW2012TrigV0 |
1637 |
> |
) { |
1638 |
> |
bindVariables(); |
1639 |
|
} |
1640 |
|
|
1641 |
< |
|
1641 |
> |
Double_t mva = -9999; |
1642 |
> |
TMVA::Reader *reader = 0; |
1643 |
> |
|
1644 |
> |
reader = fTMVAReader[GetMVABin( fMVAVar_EleEta , fMVAVar_ElePt)]; |
1645 |
|
mva = reader->EvaluateMVA( fMethodname ); |
1646 |
|
|
1647 |
|
if (printDebug == kTRUE) { |
1648 |
|
|
1649 |
< |
std::cout << "Debug Electron MVA: \n"; |
1650 |
< |
std::cout << " fbrem " << fMVAVar_EleFBrem |
1649 |
> |
std::cout << "Debug Electron MVA-ID: " |
1650 |
> |
<< fMVAVar_ElePt<< " " << fMVAVar_EleEta << " " |
1651 |
> |
<< " --> MVABin " << GetMVABin( fMVAVar_EleEta , fMVAVar_ElePt) << " : " |
1652 |
> |
<< " fbrem " << fMVAVar_EleFBrem |
1653 |
|
<< " kfchi2 " << fMVAVar_EleKFTrkChiSqr |
1654 |
< |
<< " kfhits " << fMVAVar_EleKFTrkNHits |
1655 |
< |
<< " kfhitsall " << fMVAVar_EleKFTrkNHits |
1654 |
> |
<< " kfhits " << fMVAVar_EleKFTrkNLayers |
1655 |
> |
<< " kfhitsall " << fMVAVar_EleKFTrkNHits |
1656 |
|
<< " gsfchi2 " << fMVAVar_EleGsfTrackChi2OverNdof |
1657 |
|
<< " deta " << fMVAVar_EleDEtaIn |
1658 |
|
<< " dphi " << fMVAVar_EleDPhiIn |
1661 |
|
<< " spp " << fMVAVar_EleSigmaIPhiIPhi |
1662 |
|
<< " etawidth " << fMVAVar_EleSCEtaWidth |
1663 |
|
<< " phiwidth " << fMVAVar_EleSCPhiWidth |
1664 |
< |
<< " e1x5e5x5 " << fMVAVar_EleE1x5OverE5x5 |
1664 |
> |
<< " e1x5e5x5 " << fMVAVar_EleOneMinusE1x5OverE5x5 |
1665 |
|
<< " R9 " << fMVAVar_EleR9 |
1666 |
|
<< " HoE " << fMVAVar_EleHoverE |
1667 |
|
<< " EoP " << fMVAVar_EleEOverP |
1668 |
|
<< " IoEmIoP " << fMVAVar_EleOneOverEMinusOneOverP |
1669 |
< |
<< " eleEoPout " << fMVAVar_EleESeedClusterOverPout |
1669 |
> |
<< " eleEoPout " << fMVAVar_EleEEleClusterOverPout |
1670 |
|
<< " EoPout " << fMVAVar_EleESeedClusterOverPout |
1671 |
+ |
<< " PreShowerOverRaw" << fMVAVar_ElePreShowerOverRaw |
1672 |
|
<< " d0 " << fMVAVar_EleD0 |
1673 |
|
<< " ip3d " << fMVAVar_EleIP3d |
1674 |
|
<< " eta " << fMVAVar_EleEta |
1675 |
< |
<< " pt " << fMVAVar_ElePt << std::endl; |
1676 |
< |
|
1677 |
< |
std::cout << fMVAVar_ChargedIso_DR0p0To0p1 << " " |
1675 |
> |
<< " pt " << fMVAVar_ElePt |
1676 |
> |
<< " === : === " |
1677 |
> |
<< mva << " " |
1678 |
> |
<< std::endl; |
1679 |
> |
std::cout << "Debug Electron MVA-ISO: " |
1680 |
> |
<< fMVAVar_ChargedIso_DR0p0To0p1 << " " |
1681 |
|
<< fMVAVar_ChargedIso_DR0p1To0p2 << " " |
1682 |
|
<< fMVAVar_ChargedIso_DR0p2To0p3 << " " |
1683 |
|
<< fMVAVar_ChargedIso_DR0p3To0p4 << " " |
1692 |
|
<< fMVAVar_NeutralHadronIso_DR0p2To0p3 << " " |
1693 |
|
<< fMVAVar_NeutralHadronIso_DR0p3To0p4 << " " |
1694 |
|
<< fMVAVar_NeutralHadronIso_DR0p4To0p5 << " " |
1695 |
+ |
<< fMVAVar_Rho << " " |
1696 |
|
<< std::endl; |
1063 |
– |
std::cout << "MVA: " << mva << " " |
1064 |
– |
<< std::endl; |
1697 |
|
} |
1698 |
|
|
1699 |
|
return mva; |