ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/src/MetTools.cc
Revision: 1.3
Committed: Tue Mar 15 10:56:35 2011 UTC (14 years, 1 month ago) by mzanetti
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_020a, Mit_020
Changes since 1.2: +17 -16 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 mzanetti 1.3 // $Id: MetTools.cc,v 1.2 2011/03/15 08:35:01 ceballos Exp $
2 mzanetti 1.1
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 mzanetti 1.3 if (fPFCandidates->At(i)->HasTrackerTrk()){
28 mzanetti 1.1
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 mzanetti 1.3 fCorrectedMet = mithep::Met(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
54     fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
55 mzanetti 1.1 }
56    
57     MetTools::MetTools(const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates, const Vertex *fVertex,
58     float deltaZCut, float ptCut, float etaCut) {
59    
60     float trackNumeratorX =0, trackNumeratorY =0;
61     float neutralNumeratorX=0, neutralNumeratorY=0;
62    
63     // electrons Pt
64     for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
65     trackNumeratorX -= fElectrons->At(m)->Px();
66     trackNumeratorY -= fElectrons->At(m)->Py();
67     }
68    
69     // PF candidates pT
70     for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
71    
72     // charged
73 mzanetti 1.3 if (fPFCandidates->At(i)->HasTrackerTrk()){
74 mzanetti 1.1 bool isElectronTrack = false;
75     for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
76 mzanetti 1.3 if ( (fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or
77     (fElectrons->At(m)->HasGsfTrk() and fElectrons->At(m)->GsfTrk() == fPFCandidates->At(i)->GsfTrk()) ) {
78 mzanetti 1.1 isElectronTrack = true;
79     break;
80     }
81     }
82     if (isElectronTrack) continue;
83    
84     if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) {
85     trackNumeratorX -= fPFCandidates->At(i)->Px();
86     trackNumeratorY -= fPFCandidates->At(i)->Py();
87     }
88     }
89    
90     // neutral
91     if (fPFCandidates->At(i)->PFType()== PFCandidate::eNeutralHadron || fPFCandidates->At(i)->PFType()== PFCandidate::eGamma) {
92     if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) {
93     neutralNumeratorX -= fPFCandidates->At(i)->Px();
94     neutralNumeratorY -= fPFCandidates->At(i)->Py();
95     }
96     }
97     }
98 mzanetti 1.3
99     fCorrectedMet = mithep::Met(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
100     fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
101 ceballos 1.2 }
102    
103     MetTools::MetTools(const MuonCol *fMuons, const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates,
104     const Vertex *fVertex, float deltaZCut, float ptCut, float etaCut) {
105 mzanetti 1.1
106 ceballos 1.2 float trackNumeratorX =0, trackNumeratorY =0;
107     float neutralNumeratorX=0, neutralNumeratorY=0;
108    
109     // muons Pt
110     for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
111     trackNumeratorX -= fMuons->At(m)->Px();
112     trackNumeratorY -= fMuons->At(m)->Py();
113     }
114    
115     // electrons Pt
116     for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
117     trackNumeratorX -= fElectrons->At(m)->Px();
118     trackNumeratorY -= fElectrons->At(m)->Py();
119     }
120    
121     // PF candidates pT
122     for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
123    
124     // charged
125 mzanetti 1.3 if (fPFCandidates->At(i)->HasTrackerTrk()){
126 ceballos 1.2 bool isMuonTrack = false;
127     for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
128     if (fMuons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) {
129     isMuonTrack = true;
130     break;
131     }
132     }
133     if (isMuonTrack) continue;
134    
135     bool isElectronTrack = false;
136     for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
137 mzanetti 1.3 if ( (fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or
138     (fElectrons->At(m)->HasGsfTrk() and fElectrons->At(m)->GsfTrk() == fPFCandidates->At(i)->GsfTrk()) ) {
139 ceballos 1.2 isElectronTrack = true;
140     break;
141     }
142     }
143     if (isElectronTrack) continue;
144 mzanetti 1.1
145 ceballos 1.2 if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) {
146     trackNumeratorX -= fPFCandidates->At(i)->Px();
147     trackNumeratorY -= fPFCandidates->At(i)->Py();
148     }
149     }
150 mzanetti 1.1
151 ceballos 1.2 // neutral
152     if (fPFCandidates->At(i)->PFType()== PFCandidate::eNeutralHadron || fPFCandidates->At(i)->PFType()== PFCandidate::eGamma) {
153     if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) {
154     neutralNumeratorX -= fPFCandidates->At(i)->Px();
155     neutralNumeratorY -= fPFCandidates->At(i)->Py();
156     }
157     }
158     }
159 mzanetti 1.3 fCorrectedMet = mithep::Met(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
160     fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
161 ceballos 1.2 }
162 mzanetti 1.1
163 mzanetti 1.3 Met MetTools::GetMinimumMet(const Met *UncorrectedMet) {
164 mzanetti 1.1
165     return (fCorrectedMet.Pt() < UncorrectedMet->Pt()) ? fCorrectedMet : *UncorrectedMet;
166     }
167    
168 mzanetti 1.3 Met MetTools::GetMinimumTrackMet(const Met *UncorrectedMet) {
169 ceballos 1.2
170     return (fCorrectedTrackMet.Pt() < UncorrectedMet->Pt()) ? fCorrectedTrackMet : *UncorrectedMet;
171     }
172 mzanetti 1.1