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 |
|
} |
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 |
|
} |
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 |
|
} |
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; |
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; |
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 ((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; |
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 |
|
|
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 |
|
} |