ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/src/RecoilTools.cc
(Generate patch)

Comparing UserCode/MitPhysics/Utils/src/RecoilTools.cc (file contents):
Revision 1.1 by pharris, Wed Mar 21 18:56:26 2012 UTC vs.
Revision 1.2 by pharris, Wed Apr 4 09:51:31 2012 UTC

# Line 81 | Line 81 | void RecoilTools::addNeut(const PFJet *i
81    if(iSign < 0) iVec += lVec;
82    iSumEt += lPt;
83   }
84 +
85 + //--------------------------------------------------------------------------------------------------
86 + //Corrected Jets
87 + void RecoilTools::addNeut(const PFJet *iJet,FourVectorM &iVec,Double_t &iSumEt,int iSign) {
88 +  FourVectorM lVec(0,0,0,0);
89 +  double lPt = iJet->Pt();
90 +  lPt *= (iJet->NeutralEmEnergy()/iJet->E() + iJet->NeutralHadronEnergy()/iJet->E());
91 +  lVec.SetPt(lPt); lVec.SetEta(iJet->Eta()); lVec.SetPhi(iJet->Phi()); lVec.SetM(iJet->Mass());
92 +  if(iSign > 0) iVec -= lVec;
93 +  if(iSign < 0) iVec += lVec;
94 +  iSumEt += lPt;
95 + }
96 +
97   //--------------------------------------------------------------------------------------------------
98   Met RecoilTools::NoPUMet( const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
99                            const PileupEnergyDensityCol *iPileupEnergyDensity,
# Line 109 | Line 122 | Met RecoilTools::NoPUMet( const PFJetCol
122    return lMet;
123   }
124   //--------------------------------------------------------------------------------------------------
125 + //Corrected Jets
126 + Met RecoilTools::NoPUMet( const PFJetCol       *iJets,const PFCandidateCol *iCands,const Vertex *iVertex,
127 +                          Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,Double_t iDZCut) {
128 +
129 +  FourVectorM lVec        (0,0,0,0); double lSumEt          = 0;
130 +  for(UInt_t i0 = 0; i0 < iCands->GetEntries(); i0++) {
131 +    const PFCandidate *pPF = iCands->At(i0);
132 +    const Track* pTrack = pPF->TrackerTrk();
133 +    if(pPF->GsfTrk()) pTrack = pPF->GsfTrk();
134 +    if(pTrack        ==  0                           ) continue;
135 +    if(  !((pPF->HasTrackerTrk() && (fabs(pPF->TrackerTrk()->DzCorrected(*iVertex))<iDZCut)) ||
136 +           (pPF->HasGsfTrk()     && (fabs(pPF->GsfTrk()->DzCorrected(*iVertex))    <iDZCut)))) continue;
137 +    lVec     -= pPF->Mom();
138 +    lSumEt   += pPF->Pt();
139 +  }
140 +  for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
141 +    const PFJet *pJet = iJets->At(i0);
142 +    if(!fJetIDMVA->pass(pJet,iVertex))                                    continue;
143 +    if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                             continue; //Quick cleaning==> if not done already
144 +    addNeut(pJet,lVec,lSumEt);
145 +  }
146 +  Met lMet(lVec.Px(),lVec.Py());
147 +  lMet.SetSumEt(lSumEt);
148 +  return lMet;
149 + }
150 + //--------------------------------------------------------------------------------------------------
151   Met RecoilTools::NoPURecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
152                              const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
153                              const PileupEnergyDensityCol *iPileupEnergyDensity,
# Line 123 | Line 162 | Met RecoilTools::NoPURecoil(Double_t iVi
162    return lNoPUMet;
163   }
164   //--------------------------------------------------------------------------------------------------
165 + //Corrected Jets
166 + Met RecoilTools::NoPURecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
167 +                            const PFJetCol       *iJets,const PFCandidateCol *iCands,const Vertex *iVertex,
168 +                            Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
169 +                            Double_t iDZCut) {
170 +  
171 +  Met lNoPUMet = NoPUMet(iJets,iCands,iVertex,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
172 +  lNoPUMet.SetMex  (lNoPUMet.Mex()+iVisPt*cos(iVisPhi));  
173 +  lNoPUMet.SetMey  (lNoPUMet.Mey()+iVisPt*sin(iVisPhi));
174 +  lNoPUMet.SetSumEt(lNoPUMet.SumEt()-iVisSumEt);
175 +  return lNoPUMet;
176 + }
177 + //--------------------------------------------------------------------------------------------------
178   Met RecoilTools::PUCMet( const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
179                           const PileupEnergyDensityCol *iPileupEnergyDensity,
180                           const PFCandidateCol *iCands,const Vertex *iVertex,
# Line 159 | Line 211 | Met RecoilTools::PUCMet( const PFJetCol
211    lMet.SetSumEt(lSumEt);
212    return lMet;
213   }
214 + //--------------------------------------------------------------------------------------------------
215 + //Corrected jets
216 + Met RecoilTools::PUCMet( const PFJetCol       *iJets,const PFCandidateCol *iCands,const Vertex *iVertex,
217 +                         Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
218 +                         Double_t iDZCut) {
219 +
220 +  FourVectorM lVec        (0,0,0,0); double lSumEt          = 0;
221 +  for(UInt_t i0 = 0; i0 < iCands->GetEntries(); i0++) {
222 +    const PFCandidate *pPF = iCands->At(i0);
223 +    const Track* pTrack = pPF->TrackerTrk();
224 +    if(pPF->GsfTrk()) pTrack = pPF->GsfTrk();
225 +    if(pTrack == 0                                   &&
226 +       (pPF->PFType() == PFCandidate::eGamma         ||
227 +        pPF->PFType() == PFCandidate::eEGammaHF      ||
228 +        pPF->PFType() == PFCandidate::eNeutralHadron ||
229 +        pPF->PFType() == PFCandidate::eHadronHF      ))
230 +      {lVec -= pPF->Mom(); lSumEt += pPF->Pt();}
231 +    if(pTrack        ==  0                           ) continue;
232 +    if(  !((pPF->HasTrackerTrk() && (fabs(pPF->TrackerTrk()->DzCorrected(*iVertex))<iDZCut)) ||
233 +           (pPF->HasGsfTrk()     && (fabs(pPF->GsfTrk()->DzCorrected(*iVertex))    <iDZCut)))) continue;
234 +    lVec     -= pPF->Mom();
235 +    lSumEt   += pPF->Pt();
236 +  }
237 +  for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
238 +    const PFJet *pJet = iJets->At(i0);
239 +    if(pJet->Pt() < fJetIDMVA->fJetPtMin
240 +       && pJet->TrackCountingHighEffBJetTagsDisc() == -100)              continue; //This line is a bug in the Met training//
241 +    if(!JetTools::passPFLooseId(pJet))                                   continue;
242 +    if(fJetIDMVA->pass(pJet,iVertex))                                    continue;
243 +    if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                            continue; //Quick cleaning==> if not done already
244 +    addNeut(pJet,lVec,lSumEt,-1);
245 +  }
246 +  Met lMet(lVec.Px(),lVec.Py());
247 +  lMet.SetSumEt(lSumEt);
248 +  return lMet;
249 + }
250   //----> This MET is a bug need to fix it
251   //--------------------------------------------------------------------------------------------------
252   Met RecoilTools::PUCRecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
# Line 174 | Line 262 | Met RecoilTools::PUCRecoil(Double_t iVis
262    return lPUCMet;
263   }
264   //--------------------------------------------------------------------------------------------------
265 + //Corrected Jets
266 + Met RecoilTools::PUCRecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
267 +                           const PFJetCol       *iJets,
268 +                           const PFCandidateCol *iCands,const Vertex *iVertex,
269 +                           Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
270 +                           Double_t iDZCut) {
271 +  Met lPUCMet = PUCMet(iJets,iCands,iVertex,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
272 +  lPUCMet.SetMex  (lPUCMet.Mex()+iVisPt*cos(iVisPhi));  
273 +  lPUCMet.SetMey  (lPUCMet.Mey()+iVisPt*sin(iVisPhi));
274 +  lPUCMet.SetSumEt(lPUCMet.SumEt()-iVisSumEt);
275 +  return lPUCMet;
276 + }
277 + //--------------------------------------------------------------------------------------------------
278   Met RecoilTools::PUMet( const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
279                          const PileupEnergyDensityCol *iPileupEnergyDensity,
280                          const PFCandidateCol *iCands,const Vertex *iVertex,
# Line 205 | Line 306 | Met RecoilTools::PUMet( const PFJetCol
306    return lMet;
307   }
308   //--------------------------------------------------------------------------------------------------
309 + //Corrected Jets
310 + Met RecoilTools::PUMet( const PFJetCol       *iJets,
311 +                        const PFCandidateCol *iCands,const Vertex *iVertex,
312 +                        Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
313 +                        Double_t iDZCut) {
314 +
315 +  FourVectorM lVec        (0,0,0,0); double lSumEt          = 0;
316 +  for(UInt_t i0 = 0; i0 < iCands->GetEntries(); i0++) {
317 +    const PFCandidate *pPF = iCands->At(i0);
318 +    const Track* pTrack = pPF->TrackerTrk();
319 +    if(pPF->GsfTrk()) pTrack = pPF->GsfTrk();
320 +    if(pTrack        ==  0                           ) continue;
321 +    if(   ((pPF->HasTrackerTrk() && (fabs(pPF->TrackerTrk()->DzCorrected(*iVertex))<iDZCut)) ||
322 +           (pPF->HasGsfTrk()     && (fabs(pPF->GsfTrk()->DzCorrected(*iVertex))    <iDZCut)))) continue;
323 +    lVec     -= pPF->Mom();
324 +    lSumEt   += pPF->Pt();
325 +  }
326 +  for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
327 +    const PFJet *pJet = iJets->At(i0);
328 +    if(pJet->Pt() < fJetIDMVA->fJetPtMin
329 +       && pJet->TrackCountingHighEffBJetTagsDisc() == -100)              continue; //This line is a bug in the Met training//
330 +    if(!JetTools::passPFLooseId(pJet))                                   continue;
331 +    if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                            continue; //Quick cleaning
332 +    if(fJetIDMVA->pass(pJet,iVertex))                                    continue;
333 +    addNeut(pJet,lVec,lSumEt);
334 +  }
335 +  Met lMet(lVec.Px(),lVec.Py());
336 +  lMet.SetSumEt(lSumEt);
337 +  return lMet;
338 + }
339 + //--------------------------------------------------------------------------------------------------
340   Met RecoilTools::PURecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
341                            const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
342                            const PileupEnergyDensityCol *iPileupEnergyDensity,
# Line 215 | Line 347 | Met RecoilTools::PURecoil(Double_t iVisP
347    lPUMet.SetMex  (lPUMet.Mex()+iVisPt*cos(iVisPhi));  
348    lPUMet.SetMey  (lPUMet.Mey()+iVisPt*sin(iVisPhi));
349    lPUMet.SetSumEt(lPUMet.SumEt()-iVisSumEt);
350 +  return lPUMet;
351 + }
352 + //--------------------------------------------------------------------------------------------------
353 + //Corrected Jets
354 + Met RecoilTools::PURecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
355 +                          const PFJetCol       *iJets,
356 +                          const PFCandidateCol *iCands,const Vertex *iVertex,
357 +                          Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
358 +                          Double_t iDZCut) {
359 +  Met lPUMet = PUMet(iJets,iCands,iVertex,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
360 +  lPUMet.SetMex  (lPUMet.Mex()+iVisPt*cos(iVisPhi));  
361 +  lPUMet.SetMey  (lPUMet.Mey()+iVisPt*sin(iVisPhi));
362 +  lPUMet.SetSumEt(lPUMet.SumEt()-iVisSumEt);
363    return lPUMet;
364   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines