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.3 by mzanetti, Tue Mar 15 10:56:35 2011 UTC vs.
Revision 1.7 by ceballos, Fri May 13 08:27:16 2011 UTC

# Line 34 | Line 34 | MetTools::MetTools(const MuonCol *fMuons
34          }
35        }      
36        if (isMuonTrack) continue;
37 <      
37 >
38        if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) {
39          trackNumeratorX -= fPFCandidates->At(i)->Px();
40          trackNumeratorY -= fPFCandidates->At(i)->Py();
# 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)->HasTrackerTrk()){
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
# Line 81 | Line 81 | MetTools::MetTools(const ElectronCol *fE
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 100 | Line 168 | MetTools::MetTools(const ElectronCol *fE
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 122 | 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)->HasTrackerTrk()){
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 142 | Line 278 | MetTools::MetTools(const MuonCol *fMuons
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 >      }
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        }
# Line 160 | Line 380 | MetTools::MetTools(const MuonCol *fMuons
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;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines