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.2 by pharris, Wed Apr 4 09:51:31 2012 UTC vs.
Revision 1.10 by pharris, Tue May 1 16:53:38 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 +  if(iJet->RawMom().Pt() < 10) lPt = TMath::Max(iJet->RawMom().Pt()-iJet->JetArea()*iPUEnergyDensity->At(0)->Rho(),0.);
82    lPt *= (iJet->NeutralEmEnergy()/iJet->E() + iJet->NeutralHadronEnergy()/iJet->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,int iSign) {
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 <  lPt *= (iJet->NeutralEmEnergy()/iJet->E() + iJet->NeutralHadronEnergy()/iJet->E());
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;
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;
# Line 106 | Line 118 | Met RecoilTools::NoPUMet( const PFJetCol
118      const Track* pTrack = pPF->TrackerTrk();
119      if(pPF->GsfTrk()) pTrack = pPF->GsfTrk();
120      if(pTrack        ==  0                           ) continue;
121 <    if(  !((pPF->HasTrackerTrk() && (fabs(pPF->TrackerTrk()->DzCorrected(*iVertex))<iDZCut)) ||
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();
112    lSumEt   += pPF->Pt();
125    }
126 +  int lNPass = 0;
127    for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
128      const PFJet *pJet = iJets->At(i0);
129 <    if(!fJetIDMVA->pass(pJet,iVertex,iJetCorrector,iPileupEnergyDensity)) continue;
130 <    if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                             continue; //Quick cleaning==> if not done already
129 >    if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                                       continue; //Quick cleaning==> if not done already
130 >    if(!fJetIDMVA->pass(pJet,iVertex,iVertices,iJetCorrector,iPileupEnergyDensity)) continue;
131      addNeut(pJet,lVec,lSumEt,iJetCorrector,iPileupEnergyDensity);
132 +    lNPass++;
133    }
134    Met lMet(lVec.Px(),lVec.Py());
135 <  lMet.SetSumEt(lSumEt);
135 >  lMet.SetSumEt( lSumEt);
136    return lMet;
137   }
138   //--------------------------------------------------------------------------------------------------
139   //Corrected Jets
140 < Met RecoilTools::NoPUMet( const PFJetCol       *iJets,const PFCandidateCol *iCands,const Vertex *iVertex,
140 > Met RecoilTools::NoPUMet( const PFJetCol       *iJets,
141 >                          const PFCandidateCol *iCands,const Vertex *iVertex,const VertexCol *iVertices,Double_t iRho,
142                            Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,Double_t iDZCut) {
143  
144    FourVectorM lVec        (0,0,0,0); double lSumEt          = 0;
# Line 132 | Line 147 | Met RecoilTools::NoPUMet( const PFJetCol
147      const Track* pTrack = pPF->TrackerTrk();
148      if(pPF->GsfTrk()) pTrack = pPF->GsfTrk();
149      if(pTrack        ==  0                           ) continue;
150 +    lSumEt   += pPF->Pt();  //=> another bug
151      if(  !((pPF->HasTrackerTrk() && (fabs(pPF->TrackerTrk()->DzCorrected(*iVertex))<iDZCut)) ||
152             (pPF->HasGsfTrk()     && (fabs(pPF->GsfTrk()->DzCorrected(*iVertex))    <iDZCut)))) continue;
153      lVec     -= pPF->Mom();
138    lSumEt   += pPF->Pt();
154    }
155    for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
156      const PFJet *pJet = iJets->At(i0);
157 <    if(!fJetIDMVA->pass(pJet,iVertex))                                    continue;
157 >    if(!fJetIDMVA->pass(pJet,iVertex,iVertices))                          continue;
158      if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                             continue; //Quick cleaning==> if not done already
159 <    addNeut(pJet,lVec,lSumEt);
159 >    addNeut(pJet,lVec,lSumEt,iRho);
160    }
161    Met lMet(lVec.Px(),lVec.Py());
162    lMet.SetSumEt(lSumEt);
# Line 149 | Line 164 | Met RecoilTools::NoPUMet( const PFJetCol
164   }
165   //--------------------------------------------------------------------------------------------------
166   Met RecoilTools::NoPURecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
167 <                            const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
167 >                            const PFJetCol            *iJets,FactorizedJetCorrector *iJetCorrector,
168                              const PileupEnergyDensityCol *iPileupEnergyDensity,
169 <                            const PFCandidateCol *iCands,const Vertex *iVertex,
169 >                            const PFCandidateCol   *iCands   ,const Vertex *iVertex,
170 >                            const VertexCol *iVertices,
171                              Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
172                              Double_t iDZCut) {
173    
174 <  Met lNoPUMet = NoPUMet(iJets,iJetCorrector,iPileupEnergyDensity,iCands,iVertex,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
174 >  Met lNoPUMet = NoPUMet(iJets,iJetCorrector,iPileupEnergyDensity,iCands,iVertex,iVertices,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
175    lNoPUMet.SetMex  (lNoPUMet.Mex()+iVisPt*cos(iVisPhi));  
176    lNoPUMet.SetMey  (lNoPUMet.Mey()+iVisPt*sin(iVisPhi));
177    lNoPUMet.SetSumEt(lNoPUMet.SumEt()-iVisSumEt);
# Line 164 | Line 180 | Met RecoilTools::NoPURecoil(Double_t iVi
180   //--------------------------------------------------------------------------------------------------
181   //Corrected Jets
182   Met RecoilTools::NoPURecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
183 <                            const PFJetCol       *iJets,const PFCandidateCol *iCands,const Vertex *iVertex,
183 >                            const PFJetCol       *iJets,const PFCandidateCol *iCands,
184 >                            const Vertex *iVertex,const VertexCol            *iVertices,Double_t iRho,
185                              Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
186                              Double_t iDZCut) {
187    
188 <  Met lNoPUMet = NoPUMet(iJets,iCands,iVertex,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
188 >  Met lNoPUMet = NoPUMet(iJets,iCands,iVertex,iVertices,iRho,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
189    lNoPUMet.SetMex  (lNoPUMet.Mex()+iVisPt*cos(iVisPhi));  
190    lNoPUMet.SetMey  (lNoPUMet.Mey()+iVisPt*sin(iVisPhi));
191    lNoPUMet.SetSumEt(lNoPUMet.SumEt()-iVisSumEt);
# Line 177 | Line 194 | Met RecoilTools::NoPURecoil(Double_t iVi
194   //--------------------------------------------------------------------------------------------------
195   Met RecoilTools::PUCMet( const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
196                           const PileupEnergyDensityCol *iPileupEnergyDensity,
197 <                         const PFCandidateCol *iCands,const Vertex *iVertex,
197 >                         const PFCandidateCol *iCands,
198 >                         const Vertex *iVertex,const VertexCol *iVertices,
199                           Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
200                           Double_t iDZCut) {
201  
# Line 200 | Line 218 | Met RecoilTools::PUCMet( const PFJetCol
218    }
219    for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
220      const PFJet *pJet = iJets->At(i0);
221 <    if(fJetIDMVA->correctedPt(pJet,iJetCorrector,iPileupEnergyDensity) < fJetIDMVA->fJetPtMin
222 <       && pJet->TrackCountingHighEffBJetTagsDisc() == -100)              continue; //This line is a bug in the Met training//
223 <    if(!JetTools::passPFLooseId(pJet))                                   continue;
206 <    if(fJetIDMVA->pass(pJet,iVertex,iJetCorrector,iPileupEnergyDensity)) continue;
207 <    if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                            continue; //Quick cleaning==> if not done already
221 >    if(!JetTools::passPFLooseId(pJet))                                             continue;
222 >    if(fJetIDMVA->pass(pJet,iVertex,iVertices,iJetCorrector,iPileupEnergyDensity)) continue;
223 >    if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                                      continue; //Quick cleaning==> if not done already
224      addNeut(pJet,lVec,lSumEt,iJetCorrector,iPileupEnergyDensity,-1);
225    }
226    Met lMet(lVec.Px(),lVec.Py());
# Line 213 | Line 229 | Met RecoilTools::PUCMet( const PFJetCol
229   }
230   //--------------------------------------------------------------------------------------------------
231   //Corrected jets
232 < Met RecoilTools::PUCMet( const PFJetCol       *iJets,const PFCandidateCol *iCands,const Vertex *iVertex,
232 > Met RecoilTools::PUCMet( const PFJetCol       *iJets,const PFCandidateCol *iCands,
233 >                         const Vertex *iVertex,const VertexCol *iVertices,Double_t iRho,
234                           Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
235                           Double_t iDZCut) {
236  
# Line 236 | Line 253 | Met RecoilTools::PUCMet( const PFJetCol
253    }
254    for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
255      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//
256      if(!JetTools::passPFLooseId(pJet))                                   continue;
257 <    if(fJetIDMVA->pass(pJet,iVertex))                                    continue;
257 >    if(fJetIDMVA->pass(pJet,iVertex,iVertices))                          continue;
258      if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                            continue; //Quick cleaning==> if not done already
259 <    addNeut(pJet,lVec,lSumEt,-1);
259 >    addNeut(pJet,lVec,lSumEt,iRho,-1);
260    }
261    Met lMet(lVec.Px(),lVec.Py());
262    lMet.SetSumEt(lSumEt);
# Line 253 | Line 268 | Met RecoilTools::PUCRecoil(Double_t iVis
268                             const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
269                             const PileupEnergyDensityCol *iPileupEnergyDensity,
270                             const PFCandidateCol *iCands,const Vertex *iVertex,
271 +                           const VertexCol *iVertices,
272                             Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
273                             Double_t iDZCut) {
274 <  Met lPUCMet = PUCMet(iJets,iJetCorrector,iPileupEnergyDensity,iCands,iVertex,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
274 >  Met lPUCMet = PUCMet(iJets,iJetCorrector,iPileupEnergyDensity,iCands,iVertex,iVertices,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
275    lPUCMet.SetMex  (lPUCMet.Mex()+iVisPt*cos(iVisPhi));  
276    lPUCMet.SetMey  (lPUCMet.Mey()+iVisPt*sin(iVisPhi));
277    lPUCMet.SetSumEt(lPUCMet.SumEt()-iVisSumEt);
# Line 266 | Line 282 | Met RecoilTools::PUCRecoil(Double_t iVis
282   Met RecoilTools::PUCRecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
283                             const PFJetCol       *iJets,
284                             const PFCandidateCol *iCands,const Vertex *iVertex,
285 +                           const VertexCol *iVertices,Double_t iRho,
286                             Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
287                             Double_t iDZCut) {
288 <  Met lPUCMet = PUCMet(iJets,iCands,iVertex,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
288 >  Met lPUCMet = PUCMet(iJets,iCands,iVertex,iVertices,iRho,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
289    lPUCMet.SetMex  (lPUCMet.Mex()+iVisPt*cos(iVisPhi));  
290    lPUCMet.SetMey  (lPUCMet.Mey()+iVisPt*sin(iVisPhi));
291    lPUCMet.SetSumEt(lPUCMet.SumEt()-iVisSumEt);
# Line 278 | Line 295 | Met RecoilTools::PUCRecoil(Double_t iVis
295   Met RecoilTools::PUMet( const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
296                          const PileupEnergyDensityCol *iPileupEnergyDensity,
297                          const PFCandidateCol *iCands,const Vertex *iVertex,
298 +                        const VertexCol      *iVertices,
299                          Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
300                          Double_t iDZCut) {
301  
# Line 294 | Line 312 | Met RecoilTools::PUMet( const PFJetCol
312    }
313    for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
314      const PFJet *pJet = iJets->At(i0);
315 <    if(fJetIDMVA->correctedPt(pJet,iJetCorrector,iPileupEnergyDensity) < fJetIDMVA->fJetPtMin
316 <       && pJet->TrackCountingHighEffBJetTagsDisc() == -100)              continue; //This line is a bug in the Met training//
317 <    if(!JetTools::passPFLooseId(pJet))                                   continue;
300 <    if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                            continue; //Quick cleaning
301 <    if(fJetIDMVA->pass(pJet,iVertex,iJetCorrector,iPileupEnergyDensity)) continue;
315 >    if(!JetTools::passPFLooseId(pJet))                                             continue;
316 >    if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                                      continue; //Quick cleaning
317 >    if(fJetIDMVA->pass(pJet,iVertex,iVertices,iJetCorrector,iPileupEnergyDensity)) continue;
318      addNeut(pJet,lVec,lSumEt,iJetCorrector,iPileupEnergyDensity);
319    }
320    Met lMet(lVec.Px(),lVec.Py());
# Line 308 | Line 324 | Met RecoilTools::PUMet( const PFJetCol
324   //--------------------------------------------------------------------------------------------------
325   //Corrected Jets
326   Met RecoilTools::PUMet( const PFJetCol       *iJets,
327 <                        const PFCandidateCol *iCands,const Vertex *iVertex,
327 >                        const PFCandidateCol *iCands,const Vertex *iVertex,const VertexCol *iVertices,Double_t iRho,
328                          Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
329                          Double_t iDZCut) {
330  
# Line 325 | Line 341 | Met RecoilTools::PUMet( const PFJetCol
341    }
342    for(UInt_t i0 = 0; i0 < iJets->GetEntries(); i0++) {
343      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//
344      if(!JetTools::passPFLooseId(pJet))                                   continue;
345      if(!filter(pJet,iPhi1,iEta1,iPhi2,iEta2))                            continue; //Quick cleaning
346 <    if(fJetIDMVA->pass(pJet,iVertex))                                    continue;
347 <    addNeut(pJet,lVec,lSumEt);
346 >    if(fJetIDMVA->pass(pJet,iVertex,iVertices))                          continue;
347 >    addNeut(pJet,lVec,lSumEt,iRho);
348    }
349    Met lMet(lVec.Px(),lVec.Py());
350    lMet.SetSumEt(lSumEt);
# Line 341 | Line 355 | Met RecoilTools::PURecoil(Double_t iVisP
355                            const PFJetCol       *iJets,FactorizedJetCorrector *iJetCorrector,
356                            const PileupEnergyDensityCol *iPileupEnergyDensity,
357                            const PFCandidateCol *iCands,const Vertex *iVertex,
358 +                          const VertexCol      *iVertices,
359                            Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
360                            Double_t iDZCut) {
361 <  Met lPUMet = PUMet(iJets,iJetCorrector,iPileupEnergyDensity,iCands,iVertex,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
361 >  Met lPUMet = PUMet(iJets,iJetCorrector,iPileupEnergyDensity,iCands,iVertex,iVertices,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
362    lPUMet.SetMex  (lPUMet.Mex()+iVisPt*cos(iVisPhi));  
363    lPUMet.SetMey  (lPUMet.Mey()+iVisPt*sin(iVisPhi));
364    lPUMet.SetSumEt(lPUMet.SumEt()-iVisSumEt);
# Line 353 | Line 368 | Met RecoilTools::PURecoil(Double_t iVisP
368   //Corrected Jets
369   Met RecoilTools::PURecoil(Double_t iVisPt,Double_t iVisPhi,Double_t iVisSumEt,
370                            const PFJetCol       *iJets,
371 <                          const PFCandidateCol *iCands,const Vertex *iVertex,
371 >                          const PFCandidateCol *iCands,const Vertex *iVertex,const VertexCol *iVertices,Double_t iRho,
372                            Double_t iPhi1,Double_t iEta1,Double_t iPhi2,Double_t iEta2,
373                            Double_t iDZCut) {
374 <  Met lPUMet = PUMet(iJets,iCands,iVertex,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
374 >  Met lPUMet = PUMet(iJets,iCands,iVertex,iVertices,iRho,iPhi1,iEta1,iPhi2,iEta2,iDZCut);
375    lPUMet.SetMex  (lPUMet.Mex()+iVisPt*cos(iVisPhi));  
376    lPUMet.SetMey  (lPUMet.Mey()+iVisPt*sin(iVisPhi));
377    lPUMet.SetSumEt(lPUMet.SumEt()-iVisSumEt);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines