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.12 by pharris, Tue May 1 17:38:21 2012 UTC

# Line 6 | Line 6 | ClassImp(mithep::RecoilTools)
6  
7   using namespace mithep;
8  
9 < RecoilTools::RecoilTools(TString iJetMVAFile) {
9 > RecoilTools::RecoilTools(TString iJetLowPtMVAFile,TString iJetHighPtMVAFile,TString iCutFile) {
10    fJetIDMVA = new JetIDMVA();
11 <  fJetIDMVA->Initialize( "JetIDMVA",iJetMVAFile,JetIDMVA::kBaseline);
11 >  fJetIDMVA->Initialize( JetIDMVA::kMET,iJetLowPtMVAFile,iJetHighPtMVAFile,JetIDMVA::kBaseline,iCutFile);
12   }
13   //--------------------------------------------------------------------------------------------------
14   RecoilTools::~RecoilTools() {
# Line 29 | Line 29 | bool RecoilTools::filter(const PFJet *iJ
29  
30   //--------------------------------------------------------------------------------------------------
31   Met RecoilTools::pfRecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
32 <                          const PFMet *iMet) {
33 <  Met lPFMet(iMet->Px(),iMet->Py());
34 <  lPFMet.SetSumEt(iMet->SumEt());
32 >                          const PFCandidateCol *iCands) {
33 >  double lSumEt = 0;
34 >  FourVectorM lVec(0,0,0,0);
35 >  for(UInt_t i0 = 0; i0 < iCands->GetEntries(); i0++) { lVec -= iCands->At(i0)->Mom(); lSumEt += iCands->At(i0)->Et();}
36 >  Met lPFMet(lVec.Px(),lVec.Py());
37 >  lPFMet.SetSumEt(lSumEt);
38    lPFMet.SetMex  (lPFMet.Mex()+iVisPt*cos(iVisPhi));  
39    lPFMet.SetMey  (lPFMet.Mey()+iVisPt*sin(iVisPhi));
40    lPFMet.SetSumEt(lPFMet.SumEt()-iVisSumEt);
# Line 42 | Line 45 | Met RecoilTools::trackMet(const PFCandid
45    double trkMetx  = 0;
46    double trkMety  = 0;
47    double trkSumEt = 0;
48 <  for(UInt_t i=0; i<iCands->GetEntries(); ++i) {
49 <    const PFCandidate *pfcand = iCands->At(i);
48 >  for(UInt_t i0=0; i0<iCands->GetEntries(); i0++) {
49 >    const PFCandidate *pfcand = iCands->At(i0);
50      if( (pfcand->HasTrackerTrk() && (fabs(pfcand->TrackerTrk()->DzCorrected(*iVertex))< iDZCut)) ||
51 <        (pfcand->HasGsfTrk()     && (fabs(pfcand->GsfTrk()->DzCorrected(*iVertex))    < iDZCut)) ) {
51 >        (pfcand->HasGsfTrk()     && (fabs(pfcand->GsfTrk()->DzCorrected(*iVertex))    < iDZCut)) ) {
52        trkMetx  -= pfcand->Px();
53        trkMety  -= pfcand->Py();
54        trkSumEt += pfcand->Pt();
# Line 75 | Line 78 | void RecoilTools::addNeut(const PFJet *i
78                            int iSign) {
79    FourVectorM lVec(0,0,0,0);
80    double lPt = fJetIDMVA->correctedPt(iJet,iJetCorrector,iPUEnergyDensity);
81 <  lPt *= (iJet->NeutralEmEnergy()/iJet->E() + iJet->NeutralHadronEnergy()/iJet->E());
81 >  if(iJet->RawMom().Pt() < 10) lPt = TMath::Max(iJet->RawMom().Pt()-iJet->JetArea()*iPUEnergyDensity->At(0)->Rho(),0.);
82 >  lPt *= (iJet->NeutralEmEnergy()/iJet->RawMom().E() + iJet->NeutralHadronEnergy()/iJet->RawMom().E());
83    lVec.SetPt(lPt); lVec.SetEta(iJet->Eta()); lVec.SetPhi(iJet->Phi()); lVec.SetM(iJet->Mass());
84    if(iSign > 0) iVec -= lVec;
85    if(iSign < 0) iVec += lVec;
86    iSumEt += lPt;
87 +  //=== Above was a bug in the training
88 +  //if(iSign > 0) iSumEt += lPt;
89 +  //if(iSign < 0) iSumEt -= lPt;
90 + }
91 +
92 + //--------------------------------------------------------------------------------------------------
93 + //Corrected Jets
94 + void RecoilTools::addNeut(const PFJet *iJet,FourVectorM &iVec,Double_t &iSumEt,double iRho,int iSign) {
95 +  FourVectorM lVec(0,0,0,0);
96 +  double lPt = iJet->Pt();
97 +  if(iJet->RawMom().Pt() < 10) lPt = TMath::Max(iJet->RawMom().Pt()-iJet->JetArea()*iRho,0.);//to be fixed
98 +  //if(iJet->RawMom().Pt() < 10) lPt = iJet->RawMom().Pt()*iJet->L1OffsetCorrectionScale();
99 +  lPt *= (iJet->NeutralEmEnergy()/iJet->RawMom().E() + iJet->NeutralHadronEnergy()/iJet->RawMom().E());
100 +  lVec.SetPt(lPt); lVec.SetEta(iJet->Eta()); lVec.SetPhi(iJet->Phi()); lVec.SetM(iJet->Mass());
101 +  if(iSign > 0) iVec   -= lVec;
102 +  if(iSign < 0) iVec   += lVec;
103 +  iSumEt += lPt;
104 +  //=== Above was a bug in the training
105 +  //if(iSign > 0) iSumEt += lPt;
106 +  //if(iSign < 0) iSumEt -= lPt;
107   }
108 +
109   //--------------------------------------------------------------------------------------------------
110   Met RecoilTools::NoPUMet( const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
111                            const PileupEnergyDensityCol *iPileupEnergyDensity,
112 <                          const PFCandidateCol *iCands,const Vertex *iVertex,
112 >                          const PFCandidateCol *iCands,const Vertex *iVertex,const VertexCol *iVertices,
113 >                          Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,Double_t iDZCut) {
114 >
115 >  FourVectorM lVec        (0,0,0,0); double lSumEt          = 0;
116 >  for(UInt_t i0 = 0; i0 < iCands->GetEntries(); i0++) {
117 >    const PFCandidate *pPF = iCands->At(i0);
118 >    const Track* pTrack = pPF->TrackerTrk();
119 >    if(pPF->GsfTrk()) pTrack = pPF->GsfTrk();
120 >    if(pTrack        ==  0                           ) continue;
121 >     lSumEt   += pPF->Pt();  //=> another bug
122 >     if(         !((pPF->HasTrackerTrk() && (fabs(pPF->TrackerTrk()->DzCorrected(*iVertex))<iDZCut)) ||
123 >           (pPF->HasGsfTrk()     && (fabs(pPF->GsfTrk()->DzCorrected(*iVertex))    <iDZCut)))) continue;
124 >    lVec     -= pPF->Mom();
125 >  }
126 >  int lNPass = 0;
127 >  for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
128 >    const PFJet *pJet = iJets->At(i0);
129 >    if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                                       continue; //Quick cleaning==> if not done already
130 >    if(fJetIDMVA->pass(pJet,iVertex,iVertices,iJetCorrector,iPileupEnergyDensity))
131 >      std::cout << " =====> Jet Passes Id : " << pJet->Pt() << " -- " << pJet->Eta() << " --- " << fJetIDMVA->pass(pJet,iVertex,iVertices,iJetCorrector,iPileupEnergyDensity) << std::endl;
132 >    if(!fJetIDMVA->pass(pJet,iVertex,iVertices,iJetCorrector,iPileupEnergyDensity))
133 >      std::cout << " =====> Jet Fails  Id :  " << pJet->Pt() << " -- " << pJet->Eta() << " --- " << fJetIDMVA->pass(pJet,iVertex,iVertices,iJetCorrector,iPileupEnergyDensity) << std::endl;
134 >    
135 >    if(!fJetIDMVA->pass(pJet,iVertex,iVertices,iJetCorrector,iPileupEnergyDensity)) continue;
136 >    addNeut(pJet,lVec,lSumEt,iJetCorrector,iPileupEnergyDensity);
137 >    lNPass++;
138 >  }
139 >  Met lMet(lVec.Px(),lVec.Py());
140 >  lMet.SetSumEt( lSumEt);
141 >  return lMet;
142 > }
143 > //--------------------------------------------------------------------------------------------------
144 > //Corrected Jets
145 > Met RecoilTools::NoPUMet( const PFJetCol       *iJets,
146 >                          const PFCandidateCol *iCands,const Vertex *iVertex,const VertexCol *iVertices,Double_t iRho,
147                            Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,Double_t iDZCut) {
148  
149    FourVectorM lVec        (0,0,0,0); double lSumEt          = 0;
# Line 93 | Line 152 | Met RecoilTools::NoPUMet( const PFJetCol
152      const Track* pTrack = pPF->TrackerTrk();
153      if(pPF->GsfTrk()) pTrack = pPF->GsfTrk();
154      if(pTrack        ==  0                           ) continue;
155 +    lSumEt   += pPF->Pt();  //=> another bug
156      if(  !((pPF->HasTrackerTrk() && (fabs(pPF->TrackerTrk()->DzCorrected(*iVertex))<iDZCut)) ||
157             (pPF->HasGsfTrk()     && (fabs(pPF->GsfTrk()->DzCorrected(*iVertex))    <iDZCut)))) continue;
158      lVec     -= pPF->Mom();
99    lSumEt   += pPF->Pt();
159    }
160    for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
161      const PFJet *pJet = iJets->At(i0);
103    if(!fJetIDMVA->pass(pJet,iVertex,iJetCorrector,iPileupEnergyDensity)) continue;
162      if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                             continue; //Quick cleaning==> if not done already
163 <    addNeut(pJet,lVec,lSumEt,iJetCorrector,iPileupEnergyDensity);
163 >    if(fJetIDMVA->pass(pJet,iVertex,iVertices))
164 >      std::cout << " =====> Jet Passes Id : " << pJet->Pt() << " -- " << pJet->Eta() << " --- " << fJetIDMVA->pass(pJet,iVertex,iVertices) << std::endl;
165 >    if(!fJetIDMVA->pass(pJet,iVertex,iVertices))
166 >      std::cout << " =====> Jet Fails  Id :  " << pJet->Pt() << " -- " << pJet->Eta() << " --- " << fJetIDMVA->pass(pJet,iVertex,iVertices) << std::endl;
167 >    if(!fJetIDMVA->pass(pJet,iVertex,iVertices))                          continue;
168 >    addNeut(pJet,lVec,lSumEt,iRho);
169    }
170    Met lMet(lVec.Px(),lVec.Py());
171    lMet.SetSumEt(lSumEt);
# Line 110 | Line 173 | Met RecoilTools::NoPUMet( const PFJetCol
173   }
174   //--------------------------------------------------------------------------------------------------
175   Met RecoilTools::NoPURecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
176 <                            const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
176 >                            const PFJetCol            *iJets,FactorizedJetCorrector *iJetCorrector,
177                              const PileupEnergyDensityCol *iPileupEnergyDensity,
178 <                            const PFCandidateCol *iCands,const Vertex *iVertex,
178 >                            const PFCandidateCol   *iCands   ,const Vertex *iVertex,
179 >                            const VertexCol *iVertices,
180 >                            Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
181 >                            Double_t iDZCut) {
182 >  
183 >  Met lNoPUMet = NoPUMet(iJets,iJetCorrector,iPileupEnergyDensity,iCands,iVertex,iVertices,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
184 >  lNoPUMet.SetMex  (lNoPUMet.Mex()+iVisPt*cos(iVisPhi));  
185 >  lNoPUMet.SetMey  (lNoPUMet.Mey()+iVisPt*sin(iVisPhi));
186 >  lNoPUMet.SetSumEt(lNoPUMet.SumEt()-iVisSumEt);
187 >  return lNoPUMet;
188 > }
189 > //--------------------------------------------------------------------------------------------------
190 > //Corrected Jets
191 > Met RecoilTools::NoPURecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
192 >                            const PFJetCol       *iJets,const PFCandidateCol *iCands,
193 >                            const Vertex *iVertex,const VertexCol            *iVertices,Double_t iRho,
194                              Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
195                              Double_t iDZCut) {
196    
197 <  Met lNoPUMet = NoPUMet(iJets,iJetCorrector,iPileupEnergyDensity,iCands,iVertex,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
197 >  Met lNoPUMet = NoPUMet(iJets,iCands,iVertex,iVertices,iRho,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
198    lNoPUMet.SetMex  (lNoPUMet.Mex()+iVisPt*cos(iVisPhi));  
199    lNoPUMet.SetMey  (lNoPUMet.Mey()+iVisPt*sin(iVisPhi));
200    lNoPUMet.SetSumEt(lNoPUMet.SumEt()-iVisSumEt);
# Line 125 | Line 203 | Met RecoilTools::NoPURecoil(Double_t iVi
203   //--------------------------------------------------------------------------------------------------
204   Met RecoilTools::PUCMet( const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
205                           const PileupEnergyDensityCol *iPileupEnergyDensity,
206 <                         const PFCandidateCol *iCands,const Vertex *iVertex,
206 >                         const PFCandidateCol *iCands,
207 >                         const Vertex *iVertex,const VertexCol *iVertices,
208 >                         Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
209 >                         Double_t iDZCut) {
210 >
211 >  FourVectorM lVec        (0,0,0,0); double lSumEt          = 0;
212 >  for(UInt_t i0 = 0; i0 < iCands->GetEntries(); i0++) {
213 >    const PFCandidate *pPF = iCands->At(i0);
214 >    const Track* pTrack = pPF->TrackerTrk();
215 >    if(pPF->GsfTrk()) pTrack = pPF->GsfTrk();
216 >    if(pTrack == 0                                   &&
217 >       (pPF->PFType() == PFCandidate::eGamma         ||
218 >        pPF->PFType() == PFCandidate::eEGammaHF      ||
219 >        pPF->PFType() == PFCandidate::eNeutralHadron ||
220 >        pPF->PFType() == PFCandidate::eHadronHF      ))
221 >      {lVec -= pPF->Mom(); lSumEt += pPF->Pt();}
222 >    if(pTrack        ==  0                           ) continue;
223 >    if(  !((pPF->HasTrackerTrk() && (fabs(pPF->TrackerTrk()->DzCorrected(*iVertex))<iDZCut)) ||
224 >           (pPF->HasGsfTrk()     && (fabs(pPF->GsfTrk()->DzCorrected(*iVertex))    <iDZCut)))) continue;
225 >    lVec     -= pPF->Mom();
226 >    lSumEt   += pPF->Pt();
227 >  }
228 >  for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
229 >    const PFJet *pJet = iJets->At(i0);
230 >    if(!JetTools::passPFLooseId(pJet))                                             continue;
231 >    if(fJetIDMVA->pass(pJet,iVertex,iVertices,iJetCorrector,iPileupEnergyDensity)) continue;
232 >    if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                                      continue; //Quick cleaning==> if not done already
233 >    addNeut(pJet,lVec,lSumEt,iJetCorrector,iPileupEnergyDensity,-1);
234 >  }
235 >  Met lMet(lVec.Px(),lVec.Py());
236 >  lMet.SetSumEt(lSumEt);
237 >  return lMet;
238 > }
239 > //--------------------------------------------------------------------------------------------------
240 > //Corrected jets
241 > Met RecoilTools::PUCMet( const PFJetCol       *iJets,const PFCandidateCol *iCands,
242 >                         const Vertex *iVertex,const VertexCol *iVertices,Double_t iRho,
243                           Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
244                           Double_t iDZCut) {
245  
# Line 148 | Line 262 | Met RecoilTools::PUCMet( const PFJetCol
262    }
263    for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
264      const PFJet *pJet = iJets->At(i0);
151    if(fJetIDMVA->correctedPt(pJet,iJetCorrector,iPileupEnergyDensity) < fJetIDMVA->fJetPtMin
152       && pJet->TrackCountingHighEffBJetTagsDisc() == -100)              continue; //This line is a bug in the Met training//
265      if(!JetTools::passPFLooseId(pJet))                                   continue;
266 <    if(fJetIDMVA->pass(pJet,iVertex,iJetCorrector,iPileupEnergyDensity)) continue;
266 >    if(fJetIDMVA->pass(pJet,iVertex,iVertices))                          continue;
267      if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                            continue; //Quick cleaning==> if not done already
268 <    addNeut(pJet,lVec,lSumEt,iJetCorrector,iPileupEnergyDensity,-1);
268 >    addNeut(pJet,lVec,lSumEt,iRho,-1);
269    }
270    Met lMet(lVec.Px(),lVec.Py());
271    lMet.SetSumEt(lSumEt);
# Line 165 | Line 277 | Met RecoilTools::PUCRecoil(Double_t iVis
277                             const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
278                             const PileupEnergyDensityCol *iPileupEnergyDensity,
279                             const PFCandidateCol *iCands,const Vertex *iVertex,
280 +                           const VertexCol *iVertices,
281                             Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
282                             Double_t iDZCut) {
283 <  Met lPUCMet = PUCMet(iJets,iJetCorrector,iPileupEnergyDensity,iCands,iVertex,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
283 >  Met lPUCMet = PUCMet(iJets,iJetCorrector,iPileupEnergyDensity,iCands,iVertex,iVertices,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
284 >  lPUCMet.SetMex  (lPUCMet.Mex()+iVisPt*cos(iVisPhi));  
285 >  lPUCMet.SetMey  (lPUCMet.Mey()+iVisPt*sin(iVisPhi));
286 >  lPUCMet.SetSumEt(lPUCMet.SumEt()-iVisSumEt);
287 >  return lPUCMet;
288 > }
289 > //--------------------------------------------------------------------------------------------------
290 > //Corrected Jets
291 > Met RecoilTools::PUCRecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
292 >                           const PFJetCol       *iJets,
293 >                           const PFCandidateCol *iCands,const Vertex *iVertex,
294 >                           const VertexCol *iVertices,Double_t iRho,
295 >                           Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
296 >                           Double_t iDZCut) {
297 >  Met lPUCMet = PUCMet(iJets,iCands,iVertex,iVertices,iRho,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
298    lPUCMet.SetMex  (lPUCMet.Mex()+iVisPt*cos(iVisPhi));  
299    lPUCMet.SetMey  (lPUCMet.Mey()+iVisPt*sin(iVisPhi));
300    lPUCMet.SetSumEt(lPUCMet.SumEt()-iVisSumEt);
# Line 177 | Line 304 | Met RecoilTools::PUCRecoil(Double_t iVis
304   Met RecoilTools::PUMet( const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
305                          const PileupEnergyDensityCol *iPileupEnergyDensity,
306                          const PFCandidateCol *iCands,const Vertex *iVertex,
307 +                        const VertexCol      *iVertices,
308 +                        Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
309 +                        Double_t iDZCut) {
310 +
311 +  FourVectorM lVec        (0,0,0,0); double lSumEt          = 0;
312 +  for(UInt_t i0 = 0; i0 < iCands->GetEntries(); i0++) {
313 +    const PFCandidate *pPF = iCands->At(i0);
314 +    const Track* pTrack = pPF->TrackerTrk();
315 +    if(pPF->GsfTrk()) pTrack = pPF->GsfTrk();
316 +    if(pTrack        ==  0                           ) continue;
317 +    if(   ((pPF->HasTrackerTrk() && (fabs(pPF->TrackerTrk()->DzCorrected(*iVertex))<iDZCut)) ||
318 +           (pPF->HasGsfTrk()     && (fabs(pPF->GsfTrk()->DzCorrected(*iVertex))    <iDZCut)))) continue;
319 +    lVec     -= pPF->Mom();
320 +    lSumEt   += pPF->Pt();
321 +  }
322 +  for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
323 +    const PFJet *pJet = iJets->At(i0);
324 +    if(!JetTools::passPFLooseId(pJet))                                             continue;
325 +    if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                                      continue; //Quick cleaning
326 +    if(fJetIDMVA->pass(pJet,iVertex,iVertices,iJetCorrector,iPileupEnergyDensity)) continue;
327 +    addNeut(pJet,lVec,lSumEt,iJetCorrector,iPileupEnergyDensity);
328 +  }
329 +  Met lMet(lVec.Px(),lVec.Py());
330 +  lMet.SetSumEt(lSumEt);
331 +  return lMet;
332 + }
333 + //--------------------------------------------------------------------------------------------------
334 + //Corrected Jets
335 + Met RecoilTools::PUMet( const PFJetCol       *iJets,
336 +                        const PFCandidateCol *iCands,const Vertex *iVertex,const VertexCol *iVertices,Double_t iRho,
337                          Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
338                          Double_t iDZCut) {
339  
# Line 193 | Line 350 | Met RecoilTools::PUMet( const PFJetCol
350    }
351    for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
352      const PFJet *pJet = iJets->At(i0);
196    if(fJetIDMVA->correctedPt(pJet,iJetCorrector,iPileupEnergyDensity) < fJetIDMVA->fJetPtMin
197       && pJet->TrackCountingHighEffBJetTagsDisc() == -100)              continue; //This line is a bug in the Met training//
353      if(!JetTools::passPFLooseId(pJet))                                   continue;
354      if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                            continue; //Quick cleaning
355 <    if(fJetIDMVA->pass(pJet,iVertex,iJetCorrector,iPileupEnergyDensity)) continue;
356 <    addNeut(pJet,lVec,lSumEt,iJetCorrector,iPileupEnergyDensity);
355 >    if(fJetIDMVA->pass(pJet,iVertex,iVertices))                          continue;
356 >    addNeut(pJet,lVec,lSumEt,iRho);
357    }
358    Met lMet(lVec.Px(),lVec.Py());
359    lMet.SetSumEt(lSumEt);
# Line 209 | Line 364 | Met RecoilTools::PURecoil(Double_t iVisP
364                            const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
365                            const PileupEnergyDensityCol *iPileupEnergyDensity,
366                            const PFCandidateCol *iCands,const Vertex *iVertex,
367 +                          const VertexCol      *iVertices,
368 +                          Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
369 +                          Double_t iDZCut) {
370 +  Met lPUMet = PUMet(iJets,iJetCorrector,iPileupEnergyDensity,iCands,iVertex,iVertices,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
371 +  lPUMet.SetMex  (lPUMet.Mex()+iVisPt*cos(iVisPhi));  
372 +  lPUMet.SetMey  (lPUMet.Mey()+iVisPt*sin(iVisPhi));
373 +  lPUMet.SetSumEt(lPUMet.SumEt()-iVisSumEt);
374 +  return lPUMet;
375 + }
376 + //--------------------------------------------------------------------------------------------------
377 + //Corrected Jets
378 + Met RecoilTools::PURecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
379 +                          const PFJetCol       *iJets,
380 +                          const PFCandidateCol *iCands,const Vertex *iVertex,const VertexCol *iVertices,Double_t iRho,
381                            Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
382                            Double_t iDZCut) {
383 <  Met lPUMet = PUMet(iJets,iJetCorrector,iPileupEnergyDensity,iCands,iVertex,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
383 >  Met lPUMet = PUMet(iJets,iCands,iVertex,iVertices,iRho,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
384    lPUMet.SetMex  (lPUMet.Mex()+iVisPt*cos(iVisPhi));  
385    lPUMet.SetMey  (lPUMet.Mey()+iVisPt*sin(iVisPhi));
386    lPUMet.SetSumEt(lPUMet.SumEt()-iVisSumEt);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines