ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/src/MetTools.cc
(Generate patch)

Comparing UserCode/MitPhysics/Utils/src/MetTools.cc (file contents):
Revision 1.7 by ceballos, Fri May 13 08:27:16 2011 UTC vs.
Revision 1.11 by ceballos, Sat Sep 17 13:55:23 2011 UTC

# Line 38 | Line 38 | MetTools::MetTools(const MuonCol *fMuons
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  
# Line 46 | Line 48 | MetTools::MetTools(const MuonCol *fMuons
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    }
# Line 85 | Line 88 | MetTools::MetTools(const ElectronCol *fE
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  
# Line 93 | Line 98 | MetTools::MetTools(const ElectronCol *fE
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    }
# Line 152 | Line 158 | MetTools::MetTools(const MuonCol *fMuons
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  
# Line 160 | Line 168 | MetTools::MetTools(const MuonCol *fMuons
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    }
# Line 207 | Line 216 | MetTools::MetTools(const ElectronCol *fE
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;
# Line 219 | Line 228 | MetTools::MetTools(const ElectronCol *fE
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  
# Line 227 | Line 238 | MetTools::MetTools(const ElectronCol *fE
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    }
# Line 236 | Line 248 | MetTools::MetTools(const ElectronCol *fE
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;
# Line 265 | Line 420 | MetTools::MetTools(const MuonCol *fMuons
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  
# Line 290 | Line 455 | MetTools::MetTools(const MuonCol *fMuons
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    }
# Line 300 | Line 466 | MetTools::MetTools(const MuonCol *fMuons
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;
# Line 348 | Line 514 | MetTools::MetTools(const MuonCol *fMuons
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  
# Line 365 | Line 539 | MetTools::MetTools(const MuonCol *fMuons
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  
# Line 373 | Line 549 | MetTools::MetTools(const MuonCol *fMuons
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    }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines