34 |
|
} |
35 |
|
} |
36 |
|
if (isMuonTrack) continue; |
37 |
< |
|
37 |
> |
|
38 |
|
if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) { |
39 |
|
trackNumeratorX -= fPFCandidates->At(i)->Px(); |
40 |
|
trackNumeratorY -= fPFCandidates->At(i)->Py(); |
41 |
+ |
fRecoil += fPFCandidates->At(i)->Mom(); |
42 |
+ |
fChargedRecoil += fPFCandidates->At(i)->Mom(); |
43 |
|
} |
44 |
|
} |
45 |
|
|
48 |
|
if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) { |
49 |
|
neutralNumeratorX -= fPFCandidates->At(i)->Px(); |
50 |
|
neutralNumeratorY -= fPFCandidates->At(i)->Py(); |
51 |
+ |
fRecoil += fPFCandidates->At(i)->Mom(); |
52 |
|
} |
53 |
|
} |
54 |
|
} |
73 |
|
for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) { |
74 |
|
|
75 |
|
// charged |
76 |
< |
if (fPFCandidates->At(i)->HasTrackerTrk()){ |
76 |
> |
if (fPFCandidates->At(i)->HasTrackerTrk() || fPFCandidates->At(i)->HasGsfTrk()){ |
77 |
|
bool isElectronTrack = false; |
78 |
|
for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) { |
79 |
|
if ( (fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or |
84 |
|
} |
85 |
|
if (isElectronTrack) continue; |
86 |
|
|
87 |
< |
if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) { |
87 |
> |
if ((fPFCandidates->At(i)->HasTrackerTrk() && fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) || |
88 |
> |
(fPFCandidates->At(i)->HasGsfTrk() && fabs(fPFCandidates->At(i)->GsfTrk()->DzCorrected(*fVertex) ) < deltaZCut)) { |
89 |
|
trackNumeratorX -= fPFCandidates->At(i)->Px(); |
90 |
|
trackNumeratorY -= fPFCandidates->At(i)->Py(); |
91 |
+ |
fRecoil += fPFCandidates->At(i)->Mom(); |
92 |
+ |
fChargedRecoil += fPFCandidates->At(i)->Mom(); |
93 |
|
} |
94 |
|
} |
95 |
|
|
98 |
|
if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) { |
99 |
|
neutralNumeratorX -= fPFCandidates->At(i)->Px(); |
100 |
|
neutralNumeratorY -= fPFCandidates->At(i)->Py(); |
101 |
+ |
fRecoil += fPFCandidates->At(i)->Mom(); |
102 |
|
} |
103 |
|
} |
104 |
|
} |
133 |
|
// jets |
134 |
|
bool inTheJet = false; |
135 |
|
for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) { |
136 |
< |
for (UInt_t c=0;c<pfJets->At(j)->NPFCands();c++){ |
137 |
< |
if (pfJets->At(j)->PFCand(j) == fPFCandidates->At(i)) { |
136 |
> |
for (UInt_t c=0;c<pfJets->At(j)->NPFCands();++c){ |
137 |
> |
if (pfJets->At(j)->PFCand(c) == fPFCandidates->At(i)) { |
138 |
|
inTheJet=true; |
139 |
|
break; |
140 |
|
} |
158 |
|
if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) { |
159 |
|
trackNumeratorX -= fPFCandidates->At(i)->Px(); |
160 |
|
trackNumeratorY -= fPFCandidates->At(i)->Py(); |
161 |
+ |
fRecoil += fPFCandidates->At(i)->Mom(); |
162 |
+ |
fChargedRecoil += fPFCandidates->At(i)->Mom(); |
163 |
|
} |
164 |
|
} |
165 |
|
|
168 |
|
if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) { |
169 |
|
neutralNumeratorX -= fPFCandidates->At(i)->Px(); |
170 |
|
neutralNumeratorY -= fPFCandidates->At(i)->Py(); |
171 |
+ |
fRecoil += fPFCandidates->At(i)->Mom(); |
172 |
|
} |
173 |
|
} |
174 |
|
} |
202 |
|
// jets |
203 |
|
bool inTheJet = false; |
204 |
|
for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) { |
205 |
< |
for (UInt_t c=0;c<pfJets->At(j)->NPFCands();c++){ |
206 |
< |
if (pfJets->At(j)->PFCand(j) == fPFCandidates->At(i)) { |
205 |
> |
for (UInt_t c=0;c<pfJets->At(j)->NPFCands();++c){ |
206 |
> |
if (pfJets->At(j)->PFCand(c) == fPFCandidates->At(i)) { |
207 |
|
inTheJet=true; |
208 |
|
break; |
209 |
|
} |
213 |
|
if (inTheJet) continue; |
214 |
|
|
215 |
|
// charged |
216 |
< |
if (fPFCandidates->At(i)->HasTrackerTrk()){ |
216 |
> |
if (fPFCandidates->At(i)->HasTrackerTrk() || fPFCandidates->At(i)->HasGsfTrk()){ |
217 |
|
bool isElectronTrack = false; |
218 |
|
for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) { |
219 |
< |
if ( (fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or |
219 |
> |
if ( (fElectrons->At(m)->HasTrackerTrk() and fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or |
220 |
|
(fElectrons->At(m)->HasGsfTrk() and fElectrons->At(m)->GsfTrk() == fPFCandidates->At(i)->GsfTrk()) ) { |
221 |
|
isElectronTrack = true; |
222 |
|
break; |
224 |
|
} |
225 |
|
if (isElectronTrack) continue; |
226 |
|
|
227 |
< |
if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) { |
227 |
> |
if ((fPFCandidates->At(i)->HasTrackerTrk() && fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) || |
228 |
> |
(fPFCandidates->At(i)->HasGsfTrk() && fabs(fPFCandidates->At(i)->GsfTrk()->DzCorrected(*fVertex) ) < deltaZCut)) { |
229 |
|
trackNumeratorX -= fPFCandidates->At(i)->Px(); |
230 |
|
trackNumeratorY -= fPFCandidates->At(i)->Py(); |
231 |
+ |
fRecoil += fPFCandidates->At(i)->Mom(); |
232 |
+ |
fChargedRecoil += fPFCandidates->At(i)->Mom(); |
233 |
|
} |
234 |
|
} |
235 |
|
|
238 |
|
if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) { |
239 |
|
neutralNumeratorX -= fPFCandidates->At(i)->Px(); |
240 |
|
neutralNumeratorY -= fPFCandidates->At(i)->Py(); |
241 |
+ |
fRecoil += fPFCandidates->At(i)->Mom(); |
242 |
|
} |
243 |
|
} |
244 |
|
} |
248 |
|
} |
249 |
|
|
250 |
|
|
251 |
+ |
void MetTools::AddToCorrectedTrackMet( const Particle *p, bool debug ) { |
252 |
+ |
float MetX = fCorrectedTrackMet.Mex(); |
253 |
+ |
float MetY = fCorrectedTrackMet.Mey(); |
254 |
+ |
|
255 |
+ |
if (debug) std::cout << "AddToCorrectedTrackMet:\n"; |
256 |
+ |
if (debug) std::cout << "Before: " << MetX << " " << MetY << std::endl; |
257 |
+ |
|
258 |
+ |
MetX -= p->Px(); |
259 |
+ |
MetY -= p->Py(); |
260 |
+ |
|
261 |
+ |
if (debug) std::cout << "Add : " << p->Px() << " " << p->Py() << std::endl; |
262 |
+ |
if (debug) std::cout << "After : " << MetX << " " << MetY << std::endl; |
263 |
+ |
|
264 |
+ |
fCorrectedTrackMet.SetMex(MetX); |
265 |
+ |
fCorrectedTrackMet.SetMey(MetY); |
266 |
+ |
|
267 |
+ |
return; |
268 |
+ |
} |
269 |
+ |
|
270 |
+ |
void MetTools::AddToCorrectedMet( const Particle *p) { |
271 |
+ |
float MetX=fCorrectedMet.Mex(); |
272 |
+ |
float MetY=fCorrectedMet.Mey(); |
273 |
+ |
|
274 |
+ |
MetX -= p->Px(); |
275 |
+ |
MetY -= p->Py(); |
276 |
+ |
|
277 |
+ |
fCorrectedMet.SetMex(MetX); |
278 |
+ |
fCorrectedMet.SetMey(MetY); |
279 |
+ |
|
280 |
+ |
return; |
281 |
+ |
} |
282 |
+ |
|
283 |
+ |
void MetTools::AddToRecoil( const Particle *p) { |
284 |
+ |
|
285 |
+ |
if (p->Charge() != 0) { |
286 |
+ |
fChargedRecoil += p->Mom(); |
287 |
+ |
} |
288 |
+ |
fRecoil += p->Mom(); |
289 |
+ |
|
290 |
+ |
return; |
291 |
+ |
} |
292 |
+ |
|
293 |
+ |
|
294 |
+ |
|
295 |
+ |
void MetTools::RemoveParticleInIsoConeFromTrackMet( const Particle *p, const PFCandidateCol *fPFCandidates, const Vertex *fVertex, float deltaZCut , float deltaR, bool debug ) { |
296 |
+ |
float MetX = fCorrectedTrackMet.Mex(); |
297 |
+ |
float MetY = fCorrectedTrackMet.Mey(); |
298 |
+ |
|
299 |
+ |
if (debug) std::cout << "RemoveParticleInIsoConeFromTrackMet:\n"; |
300 |
+ |
if (debug) std::cout << "Before: " << MetX << " " << MetY << std::endl; |
301 |
+ |
|
302 |
+ |
for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) { |
303 |
+ |
//charged |
304 |
+ |
if (fPFCandidates->At(i)->HasTrackerTrk() || fPFCandidates->At(i)->HasGsfTrk()) { |
305 |
+ |
//passes dZ cut |
306 |
+ |
if ((fPFCandidates->At(i)->HasTrackerTrk() && fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) || |
307 |
+ |
(fPFCandidates->At(i)->HasGsfTrk() && fabs(fPFCandidates->At(i)->GsfTrk()->DzCorrected(*fVertex) ) < deltaZCut)) { |
308 |
+ |
//inside cone |
309 |
+ |
if (MathUtils::DeltaR(fPFCandidates->At(i)->Mom(), p->Mom()) < deltaR ) { |
310 |
+ |
MetX += fPFCandidates->At(i)->Px(); |
311 |
+ |
MetY += fPFCandidates->At(i)->Py(); |
312 |
+ |
if (debug) std::cout << "Subtract : " << fPFCandidates->At(i)->Px() << " " << fPFCandidates->At(i)->Py() << " : " << std::endl; |
313 |
+ |
} |
314 |
+ |
} |
315 |
+ |
} |
316 |
+ |
} |
317 |
+ |
|
318 |
+ |
if (debug) std::cout << "After : " << MetX << " " << MetY << std::endl; |
319 |
+ |
|
320 |
+ |
fCorrectedTrackMet.SetMex(MetX); |
321 |
+ |
fCorrectedTrackMet.SetMey(MetY); |
322 |
+ |
|
323 |
+ |
return; |
324 |
+ |
} |
325 |
+ |
|
326 |
+ |
|
327 |
+ |
void MetTools::RemoveParticleInIsoConeFromCorrectedMet( const Particle *p, const PFCandidateCol *fPFCandidates, const Vertex *fVertex, float deltaZCut, float ptCut, float etaCut , float deltaR) { |
328 |
+ |
float MetX = fCorrectedMet.Mex(); |
329 |
+ |
float MetY = fCorrectedMet.Mey(); |
330 |
+ |
|
331 |
+ |
for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) { |
332 |
+ |
|
333 |
+ |
//inside cone |
334 |
+ |
if (MathUtils::DeltaR(fPFCandidates->At(i)->Mom(), p->Mom()) < deltaR ) { |
335 |
+ |
|
336 |
+ |
//charged |
337 |
+ |
if (fPFCandidates->At(i)->HasTrackerTrk() || fPFCandidates->At(i)->HasGsfTrk()) { |
338 |
+ |
//passes dZ cut |
339 |
+ |
if ((fPFCandidates->At(i)->HasTrackerTrk() && fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) || |
340 |
+ |
(fPFCandidates->At(i)->HasGsfTrk() && fabs(fPFCandidates->At(i)->GsfTrk()->DzCorrected(*fVertex) ) < deltaZCut)) { |
341 |
+ |
MetX += p->Px(); |
342 |
+ |
MetY += p->Py(); |
343 |
+ |
} |
344 |
+ |
} |
345 |
+ |
|
346 |
+ |
//neutrals |
347 |
+ |
if (fPFCandidates->At(i)->PFType()== PFCandidate::eNeutralHadron || fPFCandidates->At(i)->PFType()== PFCandidate::eGamma) { |
348 |
+ |
if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) { |
349 |
+ |
MetX += fPFCandidates->At(i)->Px(); |
350 |
+ |
MetY += fPFCandidates->At(i)->Py(); |
351 |
+ |
} |
352 |
+ |
} |
353 |
+ |
} |
354 |
+ |
|
355 |
+ |
} |
356 |
+ |
|
357 |
+ |
fCorrectedMet.SetMex(MetX); |
358 |
+ |
fCorrectedMet.SetMey(MetY); |
359 |
+ |
|
360 |
+ |
return; |
361 |
+ |
} |
362 |
+ |
|
363 |
+ |
|
364 |
+ |
void MetTools::RemoveParticleInIsoConeFromRecoil( const Particle *p, const PFCandidateCol *fPFCandidates, const Vertex *fVertex, float deltaZCut, float ptCut, float etaCut , float deltaR) { |
365 |
+ |
|
366 |
+ |
for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) { |
367 |
+ |
|
368 |
+ |
//inside cone |
369 |
+ |
if (MathUtils::DeltaR(fPFCandidates->At(i)->Mom(), p->Mom()) < deltaR ) { |
370 |
+ |
|
371 |
+ |
//charged |
372 |
+ |
if (fPFCandidates->At(i)->HasTrackerTrk() || fPFCandidates->At(i)->HasGsfTrk()) { |
373 |
+ |
//passes dZ cut |
374 |
+ |
if ((fPFCandidates->At(i)->HasTrackerTrk() && fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) || |
375 |
+ |
(fPFCandidates->At(i)->HasGsfTrk() && fabs(fPFCandidates->At(i)->GsfTrk()->DzCorrected(*fVertex) ) < deltaZCut)) { |
376 |
+ |
fChargedRecoil -= fPFCandidates->At(i)->Mom(); |
377 |
+ |
fRecoil -= fPFCandidates->At(i)->Mom(); |
378 |
+ |
} |
379 |
+ |
} |
380 |
+ |
|
381 |
+ |
//neutrals |
382 |
+ |
if (fPFCandidates->At(i)->PFType()== PFCandidate::eNeutralHadron || fPFCandidates->At(i)->PFType()== PFCandidate::eGamma) { |
383 |
+ |
if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) { |
384 |
+ |
fRecoil -= fPFCandidates->At(i)->Mom(); |
385 |
+ |
} |
386 |
+ |
} |
387 |
+ |
} |
388 |
+ |
} |
389 |
+ |
|
390 |
+ |
return; |
391 |
+ |
} |
392 |
+ |
|
393 |
+ |
|
394 |
|
MetTools::MetTools(const MuonCol *fMuons, const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates, |
395 |
< |
const Vertex *fVertex, float deltaZCut, float ptCut, float etaCut) { |
395 |
> |
const Vertex *fVertex, float deltaZCut, float ptCut, float etaCut, float intRadius) { |
396 |
|
|
397 |
|
float trackNumeratorX =0, trackNumeratorY =0; |
398 |
|
float neutralNumeratorX=0, neutralNumeratorY=0; |
413 |
|
for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) { |
414 |
|
|
415 |
|
// charged |
416 |
< |
if (fPFCandidates->At(i)->HasTrackerTrk()){ |
416 |
> |
if (fPFCandidates->At(i)->HasTrackerTrk() || fPFCandidates->At(i)->HasGsfTrk()){ |
417 |
|
bool isMuonTrack = false; |
418 |
|
for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) { |
419 |
|
if (fMuons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) { |
420 |
|
isMuonTrack = true; |
421 |
|
break; |
422 |
|
} |
423 |
< |
} |
423 |
> |
if (intRadius > 0.0 && MathUtils::DeltaR(fPFCandidates->At(i)->Mom(), fMuons->At(m)->Mom()) < intRadius) { |
424 |
> |
isMuonTrack = true; |
425 |
> |
break; |
426 |
> |
} |
427 |
> |
} |
428 |
|
if (isMuonTrack) continue; |
429 |
|
|
430 |
|
bool isElectronTrack = false; |
431 |
|
for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) { |
432 |
< |
if ( (fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or |
432 |
> |
if ( (fElectrons->At(m)->HasTrackerTrk() and fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or |
433 |
|
(fElectrons->At(m)->HasGsfTrk() and fElectrons->At(m)->GsfTrk() == fPFCandidates->At(i)->GsfTrk()) ) { |
434 |
|
isElectronTrack = true; |
435 |
|
break; |
436 |
|
} |
437 |
< |
} |
437 |
> |
if (intRadius > 0.0 && MathUtils::DeltaR(fPFCandidates->At(i)->Mom(), fElectrons->At(m)->Mom()) < intRadius) { |
438 |
> |
isElectronTrack = true; |
439 |
> |
break; |
440 |
> |
} |
441 |
> |
} |
442 |
|
if (isElectronTrack) continue; |
443 |
|
|
444 |
< |
if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) { |
444 |
> |
if ((fPFCandidates->At(i)->HasTrackerTrk() && fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) || |
445 |
> |
(fPFCandidates->At(i)->HasGsfTrk() && fabs(fPFCandidates->At(i)->GsfTrk()->DzCorrected(*fVertex) ) < deltaZCut)) { |
446 |
|
trackNumeratorX -= fPFCandidates->At(i)->Px(); |
447 |
|
trackNumeratorY -= fPFCandidates->At(i)->Py(); |
448 |
+ |
fRecoil += fPFCandidates->At(i)->Mom(); |
449 |
+ |
fChargedRecoil += fPFCandidates->At(i)->Mom(); |
450 |
|
} |
451 |
|
} |
452 |
|
|
455 |
|
if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) { |
456 |
|
neutralNumeratorX -= fPFCandidates->At(i)->Px(); |
457 |
|
neutralNumeratorY -= fPFCandidates->At(i)->Py(); |
458 |
+ |
fRecoil += fPFCandidates->At(i)->Mom(); |
459 |
|
} |
460 |
|
} |
461 |
|
} |
466 |
|
|
467 |
|
MetTools::MetTools(const MuonCol *fMuons, const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates, |
468 |
|
const PFJetCol *pfJets, |
469 |
< |
const Vertex *fVertex, float deltaZCut, float ptCut, float etaCut) { |
469 |
> |
const Vertex *fVertex, float deltaZCut, float ptCut, float etaCut, float intRadius) { |
470 |
|
|
471 |
|
float trackNumeratorX =0, trackNumeratorY =0; |
472 |
|
float neutralNumeratorX=0, neutralNumeratorY=0; |
495 |
|
// jets |
496 |
|
bool inTheJet = false; |
497 |
|
for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) { |
498 |
< |
for (UInt_t c=0;c<pfJets->At(j)->NPFCands();c++){ |
499 |
< |
if (pfJets->At(j)->PFCand(j) == fPFCandidates->At(i)) { |
498 |
> |
for (UInt_t c=0;c<pfJets->At(j)->NPFCands();++c){ |
499 |
> |
if (pfJets->At(j)->PFCand(c) == fPFCandidates->At(i)) { |
500 |
|
inTheJet=true; |
501 |
|
break; |
502 |
|
} |
507 |
|
|
508 |
|
|
509 |
|
// charged |
510 |
< |
if (fPFCandidates->At(i)->HasTrackerTrk()){ |
510 |
> |
if (fPFCandidates->At(i)->HasTrackerTrk() || fPFCandidates->At(i)->HasGsfTrk()){ |
511 |
|
bool isMuonTrack = false; |
512 |
|
for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) { |
513 |
|
if (fMuons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) { |
514 |
|
isMuonTrack = true; |
515 |
|
break; |
516 |
|
} |
517 |
+ |
if (intRadius > 0.0 && MathUtils::DeltaR(fPFCandidates->At(i)->Mom(), fMuons->At(m)->Mom()) < intRadius) { |
518 |
+ |
isMuonTrack = true; |
519 |
+ |
break; |
520 |
+ |
} |
521 |
|
} |
522 |
|
if (isMuonTrack) continue; |
523 |
|
|
524 |
|
bool isElectronTrack = false; |
525 |
|
for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) { |
526 |
< |
if ( (fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or |
526 |
> |
if ( (fElectrons->At(m)->HasTrackerTrk() and fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or |
527 |
|
(fElectrons->At(m)->HasGsfTrk() and fElectrons->At(m)->GsfTrk() == fPFCandidates->At(i)->GsfTrk()) ) { |
528 |
|
isElectronTrack = true; |
529 |
|
break; |
530 |
|
} |
531 |
+ |
if (intRadius > 0.0 && MathUtils::DeltaR(fPFCandidates->At(i)->Mom(), fElectrons->At(m)->Mom()) < intRadius) { |
532 |
+ |
isElectronTrack = true; |
533 |
+ |
break; |
534 |
+ |
} |
535 |
|
} |
536 |
|
if (isElectronTrack) continue; |
537 |
|
|
538 |
< |
if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) { |
538 |
> |
if ((fPFCandidates->At(i)->HasTrackerTrk() && fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) || |
539 |
> |
(fPFCandidates->At(i)->HasGsfTrk() && fabs(fPFCandidates->At(i)->GsfTrk()->DzCorrected(*fVertex) ) < deltaZCut)) { |
540 |
|
trackNumeratorX -= fPFCandidates->At(i)->Px(); |
541 |
|
trackNumeratorY -= fPFCandidates->At(i)->Py(); |
542 |
+ |
fRecoil += fPFCandidates->At(i)->Mom(); |
543 |
+ |
fChargedRecoil += fPFCandidates->At(i)->Mom(); |
544 |
|
} |
545 |
|
} |
546 |
|
|
549 |
|
if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) { |
550 |
|
neutralNumeratorX -= fPFCandidates->At(i)->Px(); |
551 |
|
neutralNumeratorY -= fPFCandidates->At(i)->Py(); |
552 |
+ |
fRecoil += fPFCandidates->At(i)->Mom(); |
553 |
|
} |
554 |
|
} |
555 |
|
} |