ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/src/MetTools.cc
Revision: 1.1
Committed: Mon Mar 14 18:05:56 2011 UTC (14 years, 1 month ago) by mzanetti
Content type: text/plain
Branch: MAIN
Log Message:
Met for PU scenario

File Contents

# User Rev Content
1 mzanetti 1.1 // $Id: MetTools.cc,v 1.14 2011/01/21 11:25:29 ceballos Exp $
2    
3     #include "MitPhysics/Utils/interface/MetTools.h"
4     #include <TFile.h>
5    
6     ClassImp(mithep::MetTools)
7    
8     using namespace mithep;
9    
10     //--------------------------------------------------------------------------------------------------
11     MetTools::MetTools(const MuonCol *fMuons, const PFCandidateCol *fPFCandidates, const Vertex *fVertex,
12     float deltaZCut, float ptCut, float etaCut) {
13    
14     float trackNumeratorX =0, trackNumeratorY =0;
15     float neutralNumeratorX=0, neutralNumeratorY=0;
16    
17     // muons Pt
18     for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
19     trackNumeratorX -= fMuons->At(m)->Px();
20     trackNumeratorY -= fMuons->At(m)->Py();
21     }
22    
23     // PF candidates pT
24     for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
25    
26     // charged
27     if (fPFCandidates->At(i)->TrackerTrk()){
28    
29     bool isMuonTrack = false;
30     for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
31     if (fMuons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) {
32     isMuonTrack = true;
33     break;
34     }
35     }
36     if (isMuonTrack) continue;
37    
38     if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) {
39     trackNumeratorX -= fPFCandidates->At(i)->Px();
40     trackNumeratorY -= fPFCandidates->At(i)->Py();
41     }
42     }
43    
44     // neutral
45     if (fPFCandidates->At(i)->PFType()== PFCandidate::eNeutralHadron || fPFCandidates->At(i)->PFType()== PFCandidate::eGamma) {
46     if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) {
47     neutralNumeratorX -= fPFCandidates->At(i)->Px();
48     neutralNumeratorY -= fPFCandidates->At(i)->Py();
49     }
50     }
51     }
52    
53     mithep::Met fCorrectedMet(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
54    
55     }
56    
57    
58     MetTools::MetTools(const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates, const Vertex *fVertex,
59     float deltaZCut, float ptCut, float etaCut) {
60    
61     float trackNumeratorX =0, trackNumeratorY =0;
62     float neutralNumeratorX=0, neutralNumeratorY=0;
63    
64     // electrons Pt
65     for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
66     trackNumeratorX -= fElectrons->At(m)->Px();
67     trackNumeratorY -= fElectrons->At(m)->Py();
68     }
69    
70     // PF candidates pT
71     for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
72    
73     // charged
74     if (fPFCandidates->At(i)->TrackerTrk()){
75     bool isElectronTrack = false;
76     for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
77     if (fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk() or
78     fElectrons->At(m)->GsfTrk() == fPFCandidates->At(i)->GsfTrk() ) {
79     isElectronTrack = true;
80     break;
81     }
82     }
83     if (isElectronTrack) continue;
84    
85     if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) {
86     trackNumeratorX -= fPFCandidates->At(i)->Px();
87     trackNumeratorY -= fPFCandidates->At(i)->Py();
88     }
89     }
90    
91     // neutral
92     if (fPFCandidates->At(i)->PFType()== PFCandidate::eNeutralHadron || fPFCandidates->At(i)->PFType()== PFCandidate::eGamma) {
93     if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) {
94     neutralNumeratorX -= fPFCandidates->At(i)->Px();
95     neutralNumeratorY -= fPFCandidates->At(i)->Py();
96     }
97     }
98     }
99     mithep::Met fCorrectedMet(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
100    
101     }
102    
103    
104    
105     Met MetTools::GetMimumMet(const Met *UncorrectedMet) {
106    
107     return (fCorrectedMet.Pt() < UncorrectedMet->Pt()) ? fCorrectedMet : *UncorrectedMet;
108     }
109    
110