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.2 by ceballos, Tue Mar 15 08:35:01 2011 UTC vs.
Revision 1.6 by ceballos, Mon Apr 25 21:24:53 2011 UTC

# Line 24 | Line 24 | MetTools::MetTools(const MuonCol *fMuons
24    for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
25  
26      // charged
27 <    if (fPFCandidates->At(i)->TrackerTrk()){
27 >    if (fPFCandidates->At(i)->HasTrackerTrk()){
28  
29        bool isMuonTrack = false;
30        for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
# Line 50 | Line 50 | MetTools::MetTools(const MuonCol *fMuons
50      }
51    }
52  
53 <  mithep::Met fCorrectedMet(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
54 <  mithep::Met fCorrectedTrackMet(trackNumeratorX, trackNumeratorY);
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,
# Line 70 | Line 70 | MetTools::MetTools(const ElectronCol *fE
70    for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
71  
72      // charged
73 <    if (fPFCandidates->At(i)->TrackerTrk()){
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() && fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or
77 <            (fElectrons->At(m)->GsfTrk()     && fPFCandidates->At(i)->GsfTrk()     && fElectrons->At(m)->GsfTrk()     == fPFCandidates->At(i)->GsfTrk())) {
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();
# Line 95 | Line 163 | MetTools::MetTools(const ElectronCol *fE
163        }
164      }
165    }
166 <  mithep::Met fCorrectedMet(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
167 <  mithep::Met fCorrectedTrackMet(trackNumeratorX, trackNumeratorY);
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  
# Line 121 | Line 258 | MetTools::MetTools(const MuonCol *fMuons
258    for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
259  
260      // charged
261 <    if (fPFCandidates->At(i)->TrackerTrk()){
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()) {
# Line 133 | Line 270 | MetTools::MetTools(const MuonCol *fMuons
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() && fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or
274 <            (fElectrons->At(m)->GsfTrk()     && fPFCandidates->At(i)->GsfTrk()     && fElectrons->At(m)->GsfTrk()     == fPFCandidates->At(i)->GsfTrk())) {
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 (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) {
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        }
# Line 155 | Line 293 | MetTools::MetTools(const MuonCol *fMuons
293        }
294      }
295    }
296 <  mithep::Met fCorrectedMet(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
297 <  mithep::Met fCorrectedTrackMet(trackNumeratorX, trackNumeratorY);
296 >  fCorrectedMet = mithep::Met(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
297 >  fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
298   }
299  
300 < Met MetTools::GetMimumMet(const Met *UncorrectedMet) {
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::GetMimumTrackMet(const Met *UncorrectedMet) {
389 > Met MetTools::GetMinimumTrackMet(const Met *UncorrectedMet) {
390  
391    return (fCorrectedTrackMet.Pt() < UncorrectedMet->Pt()) ?  fCorrectedTrackMet : *UncorrectedMet;
392   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines