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.4 by mzanetti, Tue Apr 12 07:30:29 2011 UTC

# Line 100 | Line 100 | MetTools::MetTools(const ElectronCol *fE
100    fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
101   }
102  
103 +
104 + //--------------------------------------------------------------------------------------------------
105 + MetTools::MetTools(const MuonCol *fMuons, const PFCandidateCol *fPFCandidates, const PFJetCol *pfJets, const Vertex *fVertex,
106 +                   float deltaZCut, float ptCut, float etaCut) {
107 +
108 +  float trackNumeratorX  =0, trackNumeratorY  =0;
109 +  float neutralNumeratorX=0, neutralNumeratorY=0;
110 +
111 +  // muons Pt
112 +  for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
113 +    trackNumeratorX -= fMuons->At(m)->Px();
114 +    trackNumeratorY -= fMuons->At(m)->Py();
115 +  }
116 +  
117 +  // jets Pt
118 +  for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) {
119 +    trackNumeratorX -= pfJets->At(j)->Px();
120 +    trackNumeratorY -= pfJets->At(j)->Py();
121 +  }
122 +  
123 +  // PF candidates pT
124 +  for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
125 +    
126 +    // jets
127 +    bool inTheJet = false;
128 +    for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) {
129 +      for (UInt_t c=0;c<pfJets->At(j)->NPFCands();c++){
130 +        if (pfJets->At(j)->PFCand(j) == fPFCandidates->At(i)) {
131 +          inTheJet=true;
132 +          break;
133 +        }
134 +      }
135 +      if (inTheJet) break;
136 +    }
137 +    if (inTheJet) continue;
138 +    
139 +    // charged
140 +    if (fPFCandidates->At(i)->HasTrackerTrk()){
141 +
142 +      bool isMuonTrack = false;
143 +      for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
144 +        if (fMuons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) {
145 +          isMuonTrack = true;
146 +          break;
147 +        }
148 +      }      
149 +      if (isMuonTrack) continue;
150 +      
151 +      if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) {
152 +        trackNumeratorX -= fPFCandidates->At(i)->Px();
153 +        trackNumeratorY -= fPFCandidates->At(i)->Py();
154 +      }
155 +    }
156 +
157 +    // neutral    
158 +    if (fPFCandidates->At(i)->PFType()== PFCandidate::eNeutralHadron || fPFCandidates->At(i)->PFType()== PFCandidate::eGamma) {
159 +      if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) {
160 +        neutralNumeratorX -= fPFCandidates->At(i)->Px();
161 +        neutralNumeratorY -= fPFCandidates->At(i)->Py();
162 +      }
163 +    }
164 +  }
165 +
166 +  fCorrectedMet = mithep::Met(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
167 +  fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
168 + }
169 +
170 +
171 + MetTools::MetTools(const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates, const PFJetCol *pfJets, const Vertex *fVertex,
172 +                   float deltaZCut, float ptCut, float etaCut) {
173 +
174 +  float trackNumeratorX  =0, trackNumeratorY  =0;
175 +  float neutralNumeratorX=0, neutralNumeratorY=0;
176 +
177 +  // electrons Pt
178 +  for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
179 +    trackNumeratorX -= fElectrons->At(m)->Px();
180 +    trackNumeratorY -= fElectrons->At(m)->Py();
181 +  }
182 +
183 +  // jets Pt
184 +  for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) {
185 +    trackNumeratorX -= pfJets->At(j)->Px();
186 +    trackNumeratorY -= pfJets->At(j)->Py();
187 +  }
188 +
189 +  // PF candidates pT
190 +  for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
191 +
192 +    // jets
193 +    bool inTheJet = false;
194 +    for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) {
195 +      for (UInt_t c=0;c<pfJets->At(j)->NPFCands();c++){
196 +        if (pfJets->At(j)->PFCand(j) == fPFCandidates->At(i)) {
197 +          inTheJet=true;
198 +          break;
199 +        }
200 +      }
201 +      if (inTheJet) break;
202 +    }
203 +    if (inTheJet) continue;
204 +
205 +    // charged
206 +    if (fPFCandidates->At(i)->HasTrackerTrk()){
207 +      bool isElectronTrack = false;
208 +      for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
209 +        if ( (fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or
210 +             (fElectrons->At(m)->HasGsfTrk() and fElectrons->At(m)->GsfTrk() == fPFCandidates->At(i)->GsfTrk()) ) {
211 +          isElectronTrack = true;
212 +          break;
213 +        }
214 +      }      
215 +      if (isElectronTrack) continue;
216 +
217 +      if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) {
218 +        trackNumeratorX -= fPFCandidates->At(i)->Px();
219 +        trackNumeratorY -= fPFCandidates->At(i)->Py();
220 +      }
221 +    }
222 +
223 +    // neutral    
224 +    if (fPFCandidates->At(i)->PFType()== PFCandidate::eNeutralHadron || fPFCandidates->At(i)->PFType()== PFCandidate::eGamma) {
225 +      if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) {
226 +        neutralNumeratorX -= fPFCandidates->At(i)->Px();
227 +        neutralNumeratorY -= fPFCandidates->At(i)->Py();
228 +      }
229 +    }
230 +  }
231 +
232 +  fCorrectedMet = mithep::Met(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
233 +  fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
234 + }
235 +
236 +
237   MetTools::MetTools(const MuonCol *fMuons, const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates,
238                     const Vertex *fVertex, float deltaZCut, float ptCut, float etaCut) {
239  
# Line 160 | Line 294 | MetTools::MetTools(const MuonCol *fMuons
294    fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
295   }
296  
297 +
298 + MetTools::MetTools(const MuonCol *fMuons, const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates,
299 +                   const PFJetCol *pfJets,
300 +                   const Vertex *fVertex, float deltaZCut, float ptCut, float etaCut) {
301 +
302 +  float trackNumeratorX  =0, trackNumeratorY  =0;
303 +  float neutralNumeratorX=0, neutralNumeratorY=0;
304 +
305 +  // muons Pt
306 +  for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
307 +    trackNumeratorX -= fMuons->At(m)->Px();
308 +    trackNumeratorY -= fMuons->At(m)->Py();
309 +  }
310 +
311 +  // electrons Pt
312 +  for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
313 +    trackNumeratorX -= fElectrons->At(m)->Px();
314 +    trackNumeratorY -= fElectrons->At(m)->Py();
315 +  }
316 +
317 +  // jets Pt
318 +  for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) {
319 +    trackNumeratorX -= pfJets->At(j)->Px();
320 +    trackNumeratorY -= pfJets->At(j)->Py();
321 +  }
322 +
323 +  // PF candidates pT
324 +  for (UInt_t i=0; i<fPFCandidates->GetEntries(); ++i) {
325 +
326 +    // jets
327 +    bool inTheJet = false;
328 +    for (UInt_t j = 0; j < pfJets->GetEntries(); ++j) {
329 +      for (UInt_t c=0;c<pfJets->At(j)->NPFCands();c++){
330 +        if (pfJets->At(j)->PFCand(j) == fPFCandidates->At(i)) {
331 +          inTheJet=true;
332 +          break;
333 +        }
334 +      }
335 +      if (inTheJet) break;
336 +    }
337 +    if (inTheJet) continue;
338 +
339 +
340 +    // charged
341 +    if (fPFCandidates->At(i)->HasTrackerTrk()){
342 +      bool isMuonTrack = false;
343 +      for (UInt_t m = 0; m < fMuons->GetEntries(); ++m) {
344 +        if (fMuons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) {
345 +          isMuonTrack = true;
346 +          break;
347 +        }
348 +      }      
349 +      if (isMuonTrack) continue;
350 +      
351 +      bool isElectronTrack = false;
352 +      for (UInt_t m = 0; m < fElectrons->GetEntries(); ++m) {
353 +        if ( (fElectrons->At(m)->TrackerTrk() == fPFCandidates->At(i)->TrackerTrk()) or
354 +             (fElectrons->At(m)->HasGsfTrk() and fElectrons->At(m)->GsfTrk() == fPFCandidates->At(i)->GsfTrk()) ) {
355 +          isElectronTrack = true;
356 +          break;
357 +        }
358 +      }      
359 +      if (isElectronTrack) continue;
360 +
361 +      if (fabs(fPFCandidates->At(i)->TrackerTrk()->DzCorrected(*fVertex)) < deltaZCut) {
362 +        trackNumeratorX -= fPFCandidates->At(i)->Px();
363 +        trackNumeratorY -= fPFCandidates->At(i)->Py();
364 +      }
365 +    }
366 +
367 +    // neutral    
368 +    if (fPFCandidates->At(i)->PFType()== PFCandidate::eNeutralHadron || fPFCandidates->At(i)->PFType()== PFCandidate::eGamma) {
369 +      if (fPFCandidates->At(i)->Pt() > ptCut and fabs(fPFCandidates->At(i)->Eta()) < etaCut ) {
370 +        neutralNumeratorX -= fPFCandidates->At(i)->Px();
371 +        neutralNumeratorY -= fPFCandidates->At(i)->Py();
372 +      }
373 +    }
374 +  }
375 +  fCorrectedMet = mithep::Met(trackNumeratorX+neutralNumeratorX, trackNumeratorY+neutralNumeratorY);
376 +  fCorrectedTrackMet = mithep::Met(trackNumeratorX, trackNumeratorY);
377 + }
378 +
379 +
380   Met MetTools::GetMinimumMet(const Met *UncorrectedMet) {
381  
382    return (fCorrectedMet.Pt() < UncorrectedMet->Pt()) ?  fCorrectedMet : *UncorrectedMet;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines