ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/src/MetTools.cc
Revision: 1.7
Committed: Fri May 13 08:27:16 2011 UTC (13 years, 11 months ago) by ceballos
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_023, Mit_022a, Mit_022, Mit_021, Mit_021pre2
Changes since 1.6: +2 -2 lines
Log Message:
fixed in isolation

File Contents

# Content
1 // $Id: MetTools.cc,v 1.6 2011/04/25 21:24:53 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)->HasTrackerTrk()){
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 fCorrectedMet = mithep::Met(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
54 fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
55 }
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 if (fPFCandidates->At(i)->HasTrackerTrk() || fPFCandidates->At(i)->HasGsfTrk()){
74 bool isElectronTrack = false;
75 for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
76 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 isElectronTrack = true;
79 break;
80 }
81 }
82 if (isElectronTrack) continue;
83
84 if ((fPFCandidates->At(i)->HasTrackerTrk() && fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) ||
85 (fPFCandidates->At(i)->HasGsfTrk() && fabs(fPFCandidates->At(i)->GsfTrk()->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
100 fCorrectedMet = mithep::Met(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
101 fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
102 }
103
104
105 //--------------------------------------------------------------------------------------------------
106 MetTools::MetTools(const MuonCol *fMuons, const PFCandidateCol *fPFCandidates, const PFJetCol *pfJets, const Vertex *fVertex,
107 float deltaZCut, float ptCut, float etaCut) {
108
109 float trackNumeratorX =0, trackNumeratorY =0;
110 float neutralNumeratorX=0, neutralNumeratorY=0;
111
112 // muons Pt
113 for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
114 trackNumeratorX -= fMuons->At(m)->Px();
115 trackNumeratorY -= fMuons->At(m)->Py();
116 }
117
118 // jets Pt
119 for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) {
120 trackNumeratorX -= pfJets->At(j)->Px();
121 trackNumeratorY -= pfJets->At(j)->Py();
122 }
123
124 // PF candidates pT
125 for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
126
127 // jets
128 bool inTheJet = false;
129 for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) {
130 for (UInt_t c=0;c<pfJets->At(j)->NPFCands();++c){
131 if (pfJets->At(j)->PFCand(c) == fPFCandidates->At(i)) {
132 inTheJet=true;
133 break;
134 }
135 }
136 if (inTheJet) break;
137 }
138 if (inTheJet) continue;
139
140 // charged
141 if (fPFCandidates->At(i)->HasTrackerTrk()){
142
143 bool isMuonTrack = false;
144 for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
145 if (fMuons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) {
146 isMuonTrack = true;
147 break;
148 }
149 }
150 if (isMuonTrack) continue;
151
152 if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) {
153 trackNumeratorX -= fPFCandidates->At(i)->Px();
154 trackNumeratorY -= fPFCandidates->At(i)->Py();
155 }
156 }
157
158 // neutral
159 if (fPFCandidates->At(i)->PFType()== PFCandidate::eNeutralHadron || fPFCandidates->At(i)->PFType()== PFCandidate::eGamma) {
160 if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) {
161 neutralNumeratorX -= fPFCandidates->At(i)->Px();
162 neutralNumeratorY -= fPFCandidates->At(i)->Py();
163 }
164 }
165 }
166
167 fCorrectedMet = mithep::Met(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
168 fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
169 }
170
171
172 MetTools::MetTools(const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates, const PFJetCol *pfJets, const Vertex *fVertex,
173 float deltaZCut, float ptCut, float etaCut) {
174
175 float trackNumeratorX =0, trackNumeratorY =0;
176 float neutralNumeratorX=0, neutralNumeratorY=0;
177
178 // electrons Pt
179 for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
180 trackNumeratorX -= fElectrons->At(m)->Px();
181 trackNumeratorY -= fElectrons->At(m)->Py();
182 }
183
184 // jets Pt
185 for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) {
186 trackNumeratorX -= pfJets->At(j)->Px();
187 trackNumeratorY -= pfJets->At(j)->Py();
188 }
189
190 // PF candidates pT
191 for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
192
193 // jets
194 bool inTheJet = false;
195 for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) {
196 for (UInt_t c=0;c<pfJets->At(j)->NPFCands();++c){
197 if (pfJets->At(j)->PFCand(c) == fPFCandidates->At(i)) {
198 inTheJet=true;
199 break;
200 }
201 }
202 if (inTheJet) break;
203 }
204 if (inTheJet) continue;
205
206 // charged
207 if (fPFCandidates->At(i)->HasTrackerTrk() || fPFCandidates->At(i)->HasGsfTrk()){
208 bool isElectronTrack = false;
209 for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
210 if ( (fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or
211 (fElectrons->At(m)->HasGsfTrk() and fElectrons->At(m)->GsfTrk() == fPFCandidates->At(i)->GsfTrk()) ) {
212 isElectronTrack = true;
213 break;
214 }
215 }
216 if (isElectronTrack) continue;
217
218 if ((fPFCandidates->At(i)->HasTrackerTrk() && fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) ||
219 (fPFCandidates->At(i)->HasGsfTrk() && fabs(fPFCandidates->At(i)->GsfTrk()->DzCorrected(*fVertex) ) < deltaZCut)) {
220 trackNumeratorX -= fPFCandidates->At(i)->Px();
221 trackNumeratorY -= fPFCandidates->At(i)->Py();
222 }
223 }
224
225 // neutral
226 if (fPFCandidates->At(i)->PFType()== PFCandidate::eNeutralHadron || fPFCandidates->At(i)->PFType()== PFCandidate::eGamma) {
227 if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) {
228 neutralNumeratorX -= fPFCandidates->At(i)->Px();
229 neutralNumeratorY -= fPFCandidates->At(i)->Py();
230 }
231 }
232 }
233
234 fCorrectedMet = mithep::Met(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
235 fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
236 }
237
238
239 MetTools::MetTools(const MuonCol *fMuons, const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates,
240 const Vertex *fVertex, float deltaZCut, float ptCut, float etaCut) {
241
242 float trackNumeratorX =0, trackNumeratorY =0;
243 float neutralNumeratorX=0, neutralNumeratorY=0;
244
245 // muons Pt
246 for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
247 trackNumeratorX -= fMuons->At(m)->Px();
248 trackNumeratorY -= fMuons->At(m)->Py();
249 }
250
251 // electrons Pt
252 for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
253 trackNumeratorX -= fElectrons->At(m)->Px();
254 trackNumeratorY -= fElectrons->At(m)->Py();
255 }
256
257 // PF candidates pT
258 for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
259
260 // charged
261 if (fPFCandidates->At(i)->HasTrackerTrk() || fPFCandidates->At(i)->HasGsfTrk()){
262 bool isMuonTrack = false;
263 for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
264 if (fMuons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) {
265 isMuonTrack = true;
266 break;
267 }
268 }
269 if (isMuonTrack) continue;
270
271 bool isElectronTrack = false;
272 for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
273 if ( (fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or
274 (fElectrons->At(m)->HasGsfTrk() and fElectrons->At(m)->GsfTrk() == fPFCandidates->At(i)->GsfTrk()) ) {
275 isElectronTrack = true;
276 break;
277 }
278 }
279 if (isElectronTrack) continue;
280
281 if ((fPFCandidates->At(i)->HasTrackerTrk() && fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) ||
282 (fPFCandidates->At(i)->HasGsfTrk() && fabs(fPFCandidates->At(i)->GsfTrk()->DzCorrected(*fVertex) ) < deltaZCut)) {
283 trackNumeratorX -= fPFCandidates->At(i)->Px();
284 trackNumeratorY -= fPFCandidates->At(i)->Py();
285 }
286 }
287
288 // neutral
289 if (fPFCandidates->At(i)->PFType()== PFCandidate::eNeutralHadron || fPFCandidates->At(i)->PFType()== PFCandidate::eGamma) {
290 if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) {
291 neutralNumeratorX -= fPFCandidates->At(i)->Px();
292 neutralNumeratorY -= fPFCandidates->At(i)->Py();
293 }
294 }
295 }
296 fCorrectedMet = mithep::Met(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
297 fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
298 }
299
300
301 MetTools::MetTools(const MuonCol *fMuons, const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates,
302 const PFJetCol *pfJets,
303 const Vertex *fVertex, float deltaZCut, float ptCut, float etaCut) {
304
305 float trackNumeratorX =0, trackNumeratorY =0;
306 float neutralNumeratorX=0, neutralNumeratorY=0;
307
308 // muons Pt
309 for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
310 trackNumeratorX -= fMuons->At(m)->Px();
311 trackNumeratorY -= fMuons->At(m)->Py();
312 }
313
314 // electrons Pt
315 for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
316 trackNumeratorX -= fElectrons->At(m)->Px();
317 trackNumeratorY -= fElectrons->At(m)->Py();
318 }
319
320 // jets Pt
321 for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) {
322 trackNumeratorX -= pfJets->At(j)->Px();
323 trackNumeratorY -= pfJets->At(j)->Py();
324 }
325
326 // PF candidates pT
327 for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
328
329 // jets
330 bool inTheJet = false;
331 for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) {
332 for (UInt_t c=0;c<pfJets->At(j)->NPFCands();++c){
333 if (pfJets->At(j)->PFCand(c) == fPFCandidates->At(i)) {
334 inTheJet=true;
335 break;
336 }
337 }
338 if (inTheJet) break;
339 }
340 if (inTheJet) continue;
341
342
343 // charged
344 if (fPFCandidates->At(i)->HasTrackerTrk() || fPFCandidates->At(i)->HasGsfTrk()){
345 bool isMuonTrack = false;
346 for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
347 if (fMuons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) {
348 isMuonTrack = true;
349 break;
350 }
351 }
352 if (isMuonTrack) continue;
353
354 bool isElectronTrack = false;
355 for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
356 if ( (fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or
357 (fElectrons->At(m)->HasGsfTrk() and fElectrons->At(m)->GsfTrk() == fPFCandidates->At(i)->GsfTrk()) ) {
358 isElectronTrack = true;
359 break;
360 }
361 }
362 if (isElectronTrack) continue;
363
364 if ((fPFCandidates->At(i)->HasTrackerTrk() && fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) ||
365 (fPFCandidates->At(i)->HasGsfTrk() && fabs(fPFCandidates->At(i)->GsfTrk()->DzCorrected(*fVertex) ) < deltaZCut)) {
366 trackNumeratorX -= fPFCandidates->At(i)->Px();
367 trackNumeratorY -= fPFCandidates->At(i)->Py();
368 }
369 }
370
371 // neutral
372 if (fPFCandidates->At(i)->PFType()== PFCandidate::eNeutralHadron || fPFCandidates->At(i)->PFType()== PFCandidate::eGamma) {
373 if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) {
374 neutralNumeratorX -= fPFCandidates->At(i)->Px();
375 neutralNumeratorY -= fPFCandidates->At(i)->Py();
376 }
377 }
378 }
379 fCorrectedMet = mithep::Met(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
380 fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
381 }
382
383
384 Met MetTools::GetMinimumMet(const Met *UncorrectedMet) {
385
386 return (fCorrectedMet.Pt() < UncorrectedMet->Pt()) ? fCorrectedMet : *UncorrectedMet;
387 }
388
389 Met MetTools::GetMinimumTrackMet(const Met *UncorrectedMet) {
390
391 return (fCorrectedTrackMet.Pt() < UncorrectedMet->Pt()) ? fCorrectedTrackMet : *UncorrectedMet;
392 }
393