ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/src/JetIDMVA.cc
Revision: 1.14
Committed: Tue May 29 17:09:02 2012 UTC (12 years, 11 months ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_028a
Changes since 1.13: +49 -45 lines
Log Message:
fix for cut based jet id

File Contents

# User Rev Content
1 pharris 1.4 #include "FWCore/PythonParameterSet/interface/MakeParameterSets.h"
2     #include "FWCore/ParameterSet/interface/ParameterSet.h"
3 pharris 1.1 #include "MitPhysics/Utils/interface/JetIDMVA.h"
4     #include "MitPhysics/Utils/interface/JetTools.h"
5     #include "MitAna/DataTree/interface/StableData.h"
6     #include <TFile.h>
7     #include <TRandom3.h>
8     #include "TMVA/Tools.h"
9     #include "TMVA/Reader.h"
10    
11    
12     ClassImp(mithep::JetIDMVA)
13    
14     using namespace mithep;
15    
16     //--------------------------------------------------------------------------------------------------
17     JetIDMVA::JetIDMVA() :
18 pharris 1.8 fJetPtMin(0.) , //We need to lower this
19 pharris 1.4 fDZCut (0.2),
20     fLowPtMethodName ("JetIDMVALowPt" ),
21     fHighPtMethodName("JetIDMVAHighPt"),
22 pharris 1.1 fIsInitialized(kFALSE),
23 pharris 1.4 fNVtx (0),
24     fJPt1 (0),
25     fJEta1 (0),
26     fJPhi1 (0),
27     fJD01 (0),
28     fJDZ1 (0),
29     fBeta (0),
30     fBetaStar (0),
31     fNCharged (0),
32     fNNeutrals(0),
33     fDRMean (0),
34     fFrac01 (0),
35     fFrac02 (0),
36     fFrac03 (0),
37     fFrac04 (0),
38 pharris 1.11 fFrac05 (0),
39     fDR2Mean (0)
40 pharris 1.1 {
41     fReader = 0;
42     }
43     //--------------------------------------------------------------------------------------------------
44 pharris 1.4 JetIDMVA::~JetIDMVA() {
45    
46 pharris 1.11 delete fReader;
47     delete fLowPtReader;
48 pharris 1.1 }
49    
50     //--------------------------------------------------------------------------------------------------
51 pharris 1.4 void JetIDMVA::Initialize( JetIDMVA::CutType iCutType,
52     TString iLowPtWeights,
53     TString iHighPtWeights,
54     JetIDMVA::MVAType iType,
55     TString iCutFileName)
56 pharris 1.1 {
57    
58     fIsInitialized = kTRUE;
59     fType = iType;
60 pharris 1.4 fCutType = iCutType;
61 bendavid 1.14
62     std::string lCutId = "JetIdParams";
63     if(fType == k42) lCutId = "PuJetIdOptMVA_wp";
64     if(fType == k52) lCutId = "full_5x_wp";
65     if(fType == kCut) lCutId = "PuJetIdCutBased_wp";
66     //Load Cut Matrix
67     edm::ParameterSet lDefConfig = edm::readPSetsFrom(iCutFileName.Data())->getParameter<edm::ParameterSet>("JetIdParams");
68     edm::ParameterSet lConfig = edm::readPSetsFrom(iCutFileName.Data())->getParameter<edm::ParameterSet>(lCutId);
69     std::string lCutType = "Tight";
70     if(fCutType == kMedium) lCutType = "Medium";
71     if(fCutType == kLoose ) lCutType = "Loose";
72     if(fCutType == kMET ) lCutType = "MET";
73     if(fType != kCut) {
74     std::string lLowPtCut = "MET";
75     std::vector<double> lPt010 = lDefConfig.getParameter<std::vector<double> >(("Pt010_" +lLowPtCut).c_str());
76     std::vector<double> lPt1020 = lConfig.getParameter<std::vector<double> >(("Pt1020_"+lCutType).c_str());
77     std::vector<double> lPt2030 = lConfig.getParameter<std::vector<double> >(("Pt2030_"+lCutType).c_str());
78     std::vector<double> lPt3050 = lConfig.getParameter<std::vector<double> >(("Pt3050_"+lCutType).c_str());
79     for(int i0 = 0; i0 < 4; i0++) fMVACut[0][i0] = lPt010 [i0];
80     for(int i0 = 0; i0 < 4; i0++) fMVACut[1][i0] = lPt1020[i0];
81     for(int i0 = 0; i0 < 4; i0++) fMVACut[2][i0] = lPt2030[i0];
82     for(int i0 = 0; i0 < 4; i0++) fMVACut[3][i0] = lPt3050[i0];
83     }
84     if(fType == kCut) {
85     for(int i0 = 0; i0 < 2; i0++) {
86     std::string lFullCutType = lCutType;
87     if(i0 == 0) lFullCutType = "BetaStar"+ lCutType;
88     if(i0 == 1) lFullCutType = "RMS" + lCutType;
89     std::vector<double> pt010 = lConfig.getParameter<std::vector<double> >(("Pt010_" +lFullCutType).c_str());
90     std::vector<double> pt1020 = lConfig.getParameter<std::vector<double> >(("Pt1020_"+lFullCutType).c_str());
91     std::vector<double> pt2030 = lConfig.getParameter<std::vector<double> >(("Pt2030_"+lFullCutType).c_str());
92     std::vector<double> pt3050 = lConfig.getParameter<std::vector<double> >(("Pt3050_"+lFullCutType).c_str());
93     if(i0 == 0) {
94     for(int i2 = 0; i2 < 4; i2++) fBetaStarCut[0][i2] = pt010 [i2];
95     for(int i2 = 0; i2 < 4; i2++) fBetaStarCut[1][i2] = pt1020[i2];
96     for(int i2 = 0; i2 < 4; i2++) fBetaStarCut[2][i2] = pt2030[i2];
97     for(int i2 = 0; i2 < 4; i2++) fBetaStarCut[3][i2] = pt3050[i2];
98     }
99     if(i0 == 1) {
100     for(int i2 = 0; i2 < 4; i2++) fRMSCut[0][i2] = pt010 [i2];
101     for(int i2 = 0; i2 < 4; i2++) fRMSCut[1][i2] = pt1020[i2];
102     for(int i2 = 0; i2 < 4; i2++) fRMSCut[2][i2] = pt2030[i2];
103     for(int i2 = 0; i2 < 4; i2++) fRMSCut[3][i2] = pt3050[i2];
104     }
105     }
106     return;
107     }
108    
109    
110 pharris 1.11 fLowPtReader = 0;
111     fLowPtReader = new TMVA::Reader( "!Color:!Silent:Error" );
112     fLowPtReader->AddVariable( "nvtx" , &fNVtx );
113     fLowPtReader->AddVariable( "jetPt" , &fJPt1 );
114     fLowPtReader->AddVariable( "jetEta" , &fJEta1 );
115     fLowPtReader->AddVariable( "jetPhi" , &fJPhi1 );
116     fLowPtReader->AddVariable( "dZ" , &fJDZ1 );
117     fLowPtReader->AddVariable( "d0" , &fJD01 );
118     fLowPtReader->AddVariable( "beta" , &fBeta );
119     fLowPtReader->AddVariable( "betaStar" , &fBetaStar );
120     fLowPtReader->AddVariable( "nCharged" , &fNCharged );
121     fLowPtReader->AddVariable( "nNeutrals", &fNNeutrals );
122     fLowPtReader->AddVariable( "dRMean" , &fDRMean );
123     fLowPtReader->AddVariable( "frac01" , &fFrac01 );
124     fLowPtReader->AddVariable( "frac02" , &fFrac02 );
125     fLowPtReader->AddVariable( "frac03" , &fFrac03 );
126     fLowPtReader->AddVariable( "frac04" , &fFrac04 );
127     fLowPtReader->AddVariable( "frac05" , &fFrac05 );
128    
129 pharris 1.1 fReader = 0;
130     fReader = new TMVA::Reader( "!Color:!Silent:Error" );
131     if (fType == kBaseline) {
132 pharris 1.4 fReader->AddVariable( "nvtx" , &fNVtx );
133     fReader->AddVariable( "jetPt" , &fJPt1 );
134     fReader->AddVariable( "jetEta" , &fJEta1 );
135     fReader->AddVariable( "jetPhi" , &fJPhi1 );
136     fReader->AddVariable( "dZ" , &fJDZ1 );
137     fReader->AddVariable( "d0" , &fJD01 );
138     fReader->AddVariable( "beta" , &fBeta );
139     fReader->AddVariable( "betaStar" , &fBetaStar );
140     fReader->AddVariable( "nCharged" , &fNCharged );
141     fReader->AddVariable( "nNeutrals", &fNNeutrals );
142     fReader->AddVariable( "dRMean" , &fDRMean );
143     fReader->AddVariable( "frac01" , &fFrac01 );
144     fReader->AddVariable( "frac02" , &fFrac02 );
145     fReader->AddVariable( "frac03" , &fFrac03 );
146     fReader->AddVariable( "frac04" , &fFrac04 );
147     fReader->AddVariable( "frac05" , &fFrac05 );
148 pharris 1.1 }
149 pharris 1.11 if (fType == k42) {
150     fReader->AddVariable( "frac01" , &fFrac01 );
151     fReader->AddVariable( "frac02" , &fFrac02 );
152     fReader->AddVariable( "frac03" , &fFrac03 );
153     fReader->AddVariable( "frac04" , &fFrac04 );
154     fReader->AddVariable( "frac05" , &fFrac05 );
155     fReader->AddVariable( "nvtx" , &fNVtx );
156     fReader->AddVariable( "nNeutrals", &fNNeutrals );
157     fReader->AddVariable( "beta" , &fBeta );
158     fReader->AddVariable( "betaStar" , &fBetaStar );
159     fReader->AddVariable( "dZ" , &fJDZ1 );
160     fReader->AddVariable( "nCharged" , &fNCharged );
161     fReader->AddSpectator( "jetPt" , &fJPt1 );
162     fReader->AddSpectator( "jetEta" , &fJEta1 );
163     }
164     if (fType == k52) {
165     fReader->AddVariable( "frac01" , &fFrac01 );
166     fReader->AddVariable( "frac02" , &fFrac02 );
167     fReader->AddVariable( "frac03" , &fFrac03 );
168     fReader->AddVariable( "frac04" , &fFrac04 );
169     fReader->AddVariable( "frac05" , &fFrac05 );
170     fReader->AddVariable( "dR2Mean" , &fDR2Mean );
171     fReader->AddVariable( "nvtx" , &fNVtx );
172     fReader->AddVariable( "nNeutrals", &fNNeutrals );
173     fReader->AddVariable( "beta" , &fBeta );
174     fReader->AddVariable( "betaStar" , &fBetaStar );
175     fReader->AddVariable( "dZ" , &fJDZ1 );
176     fReader->AddVariable( "nCharged" , &fNCharged );
177     fReader->AddSpectator( "jetPt" , &fJPt1 );
178     fReader->AddSpectator( "jetEta" , &fJEta1 );
179     }
180    
181     fLowPtReader->BookMVA(fLowPtMethodName , iLowPtWeights );
182 pharris 1.4 fReader->BookMVA(fHighPtMethodName , iHighPtWeights );
183 pharris 1.1 std::cout << "Jet ID MVA Initialization\n";
184 pharris 1.4 std::cout << "MethodName : " << fLowPtMethodName << " , type == " << fType << std::endl;
185    
186 pharris 1.1 }
187    
188     //--------------------------------------------------------------------------------------------------
189     Double_t JetIDMVA::MVAValue(
190     Float_t iNPV ,
191     Float_t iJPt1 ,
192     Float_t iJEta1 ,
193     Float_t iJPhi1 ,
194     Float_t iJD01 ,
195     Float_t iJDZ1 ,
196 pharris 1.4 Float_t iBeta ,
197     Float_t iBetaStar,
198     Float_t iNCharged,
199     Float_t iNNeutrals,
200     Float_t iDRMean ,
201     Float_t iFrac01 ,
202     Float_t iFrac02 ,
203     Float_t iFrac03 ,
204     Float_t iFrac04 ,
205 pharris 1.11 Float_t iFrac05 ,
206     Float_t iDR2Mean
207 pharris 1.1 ){
208    
209 pharris 1.4 if(!fIsInitialized) {
210 pharris 1.1 std::cout << "Error: JetIDMVA not properly initialized.\n";
211     return -9999;
212     }
213    
214 pharris 1.4 fNVtx = iNPV;
215     fJPt1 = iJPt1;
216     fJEta1 = iJEta1;
217     fJPhi1 = fJPhi1;
218     fJD01 = iJD01;
219     fJDZ1 = iJDZ1;
220     fBeta = iBeta;
221     fBetaStar = iBetaStar;
222     fNCharged = iNCharged;
223     fNNeutrals = iNNeutrals;
224     fDRMean = iDRMean;
225     fFrac01 = iFrac01;
226     fFrac02 = iFrac02;
227     fFrac03 = iFrac03;
228     fFrac04 = iFrac04;
229     fFrac05 = iFrac05;
230 pharris 1.11 fDR2Mean = iDR2Mean;
231 pharris 1.1
232     Double_t lMVA = -9999;
233 pharris 1.11 if(iJPt1 < 10) lMVA = fLowPtReader->EvaluateMVA( fLowPtMethodName );
234 pharris 1.4 if(iJPt1 > 10) lMVA = fReader->EvaluateMVA( fHighPtMethodName );
235 pharris 1.1
236     return lMVA;
237     }
238     //--------------------------------------------------------------------------------------------------
239 pharris 1.4 Bool_t JetIDMVA::pass(const PFJet *iJet,const Vertex *iVertex,const VertexCol *iVertices,
240 pharris 1.1 FactorizedJetCorrector *iJetCorrector,
241 ceballos 1.10 const PileupEnergyDensityCol *iPileupEnergyDensity,
242     RhoUtilities::RhoType type) {
243 pharris 1.4
244 pharris 1.1 if(!JetTools::passPFLooseId(iJet)) return false;
245 pharris 1.7 if(fabs(iJet->Eta()) > 4.99) return false;
246 pharris 1.5
247 pharris 1.4 double lMVA = MVAValue (iJet,iVertex,iVertices,iJetCorrector,iPileupEnergyDensity);
248 ceballos 1.10 double lPt = correctedPt(iJet, iJetCorrector,iPileupEnergyDensity,type);
249 pharris 1.8 if(lPt < fJetPtMin) return false;
250 pharris 1.7
251 pharris 1.4 int lPtId = 0;
252 pharris 1.7 if(lPt > 10 && lPt < 20) lPtId = 1;
253     if(lPt > 20 && lPt < 30) lPtId = 2;
254 pharris 1.4 if(lPt > 30 ) lPtId = 3;
255    
256     int lEtaId = 0;
257     if(fabs(iJet->Eta()) > 2.5 && fabs(iJet->Eta()) < 2.75) lEtaId = 1;
258     if(fabs(iJet->Eta()) > 2.75 && fabs(iJet->Eta()) < 3.0 ) lEtaId = 2;
259     if(fabs(iJet->Eta()) > 3.0 && fabs(iJet->Eta()) < 5.0 ) lEtaId = 3;
260    
261     double lMVACut = fMVACut[lPtId][lEtaId];
262     if(lMVA < lMVACut) return false;
263 pharris 1.1 return true;
264     }
265     //--------------------------------------------------------------------------------------------------
266 pharris 1.12 Bool_t JetIDMVA::passCut(const PFJet *iJet,const Vertex *iVertex,const VertexCol *iVertices) {
267     if(!JetTools::passPFLooseId(iJet)) return false;
268     if(iJet->Pt() < fJetPtMin) return false;
269     if(fabs(iJet->Eta()) > 4.99) return false;
270 bendavid 1.13 //if(fType == kCut) passCut(iJet,iVertex,iVertices);
271 pharris 1.12
272     double lPt = iJet->Pt();
273     int lPtId = 0;
274     if(lPt > 10 && lPt < 20) lPtId = 1;
275     if(lPt > 20 && lPt < 30) lPtId = 2;
276     if(lPt > 30 ) lPtId = 3;
277    
278     int lEtaId = 0;
279     if(fabs(iJet->Eta()) > 2.5 && fabs(iJet->Eta()) < 2.75) lEtaId = 1;
280     if(fabs(iJet->Eta()) > 2.75 && fabs(iJet->Eta()) < 3.0 ) lEtaId = 2;
281     if(fabs(iJet->Eta()) > 3.0 && fabs(iJet->Eta()) < 5.0 ) lEtaId = 3;
282     float betaStarModified = JetTools::betaStarClassic(iJet,iVertex,iVertices)/log(iVertices ->GetEntries()-0.64);
283     float dR2Mean = JetTools::dR2Mean(iJet,-1);
284    
285     if(betaStarModified < fBetaStarCut[lPtId][lEtaId] &&
286     dR2Mean < fRMSCut [lPtId][lEtaId]
287     ) return true;
288    
289     return false;
290     }
291     //--------------------------------------------------------------------------------------------------
292 pharris 1.4 Bool_t JetIDMVA::pass(const PFJet *iJet,const Vertex *iVertex,const VertexCol *iVertices) {
293 pharris 1.2 if(!JetTools::passPFLooseId(iJet)) return false;
294 pharris 1.5 if(iJet->Pt() < fJetPtMin) return false;
295 pharris 1.7 if(fabs(iJet->Eta()) > 4.99) return false;
296 bendavid 1.13 if(fType == kCut) return passCut(iJet,iVertex,iVertices);
297 pharris 1.4 double lMVA = MVAValue(iJet,iVertex,iVertices);
298    
299     int lPtId = 0;
300     if(iJet->Pt() > 10 && iJet->Pt() < 20) lPtId = 1;
301     if(iJet->Pt() > 20 && iJet->Pt() < 30) lPtId = 2;
302     if(iJet->Pt() > 30 ) lPtId = 3;
303    
304     int lEtaId = 0;
305     if(fabs(iJet->Eta()) > 2.5 && fabs(iJet->Eta()) < 2.75) lEtaId = 1;
306     if(fabs(iJet->Eta()) > 2.75 && fabs(iJet->Eta()) < 3.0 ) lEtaId = 2;
307     if(fabs(iJet->Eta()) > 3.0 && fabs(iJet->Eta()) < 5.0 ) lEtaId = 3;
308    
309     double lMVACut = fMVACut[lPtId][lEtaId];
310     if(lMVA < lMVACut) return false;
311 pharris 1.2 return true;
312 pharris 1.4 //if(lMVA < -0.8) return false;
313     //if(lMVA < -0.5 && fabs(iJet->Eta()) > 3.0) return false;
314     //if(iJet->Pt() < fJetPtMin && iJet->TrackCountingHighEffBJetTagsDisc() == -100) return false; //This line is a bug in the Met training
315     //if( fabs(JetTools::impactParameter(iJet,iVertex,true)) < 0.2) return true;
316 pharris 1.2 }
317     //--------------------------------------------------------------------------------------------------
318 pharris 1.4 Double_t JetIDMVA::MVAValue(const PFJet *iJet,const Vertex *iVertex,const VertexCol *iVertices, //Vertex here is the PV
319 pharris 1.1 FactorizedJetCorrector *iJetCorrector,
320     const PileupEnergyDensityCol *iPileupEnergyDensity,
321     Bool_t printDebug) {
322    
323     if (!fIsInitialized) {
324     std::cout << "Error: JetIDMVA not properly initialized.\n";
325     return -9999;
326     }
327     if(!JetTools::passPFLooseId(iJet)) return -2.;
328    
329     //set all input variables
330 pharris 1.4 fNVtx = iVertices->GetEntries();
331 pharris 1.1 fJPt1 = correctedPt(iJet,iJetCorrector,iPileupEnergyDensity);
332     fJEta1 = iJet->RawMom().Eta();
333     fJPhi1 = iJet->RawMom().Phi();
334 pharris 1.4 fJD01 = JetTools::impactParameter(iJet,iVertex);
335     fJDZ1 = JetTools::impactParameter(iJet,iVertex,true);
336     fBeta = JetTools::Beta(iJet,iVertex,fDZCut);
337     fBetaStar = JetTools::betaStar(iJet,iVertex,iVertices,fDZCut);
338     fNCharged = iJet->ChargedMultiplicity();
339     fNNeutrals = iJet->NeutralMultiplicity();
340    
341     fDRMean = JetTools::dRMean(iJet,-1);
342 pharris 1.11 fDR2Mean = JetTools::dR2Mean(iJet,-1);
343 pharris 1.4 fFrac01 = JetTools::frac (iJet,0.1,0. ,-1);
344     fFrac02 = JetTools::frac (iJet,0.2,0.1,-1);
345     fFrac03 = JetTools::frac (iJet,0.3,0.2,-1);
346     fFrac04 = JetTools::frac (iJet,0.4,0.3,-1);
347     fFrac05 = JetTools::frac (iJet,0.5,0.4,-1);
348    
349     double lMVA = 0;
350 pharris 1.11 if(fJPt1 < 10) lMVA = fLowPtReader->EvaluateMVA( fLowPtMethodName );
351 pharris 1.4 if(fJPt1 > 10) lMVA = fReader->EvaluateMVA( fHighPtMethodName );
352 pharris 1.1 if (printDebug == kTRUE) {
353     std::cout << "Debug Jet MVA: "
354 pharris 1.4 << fNVtx << " "
355     << fJPt1 << " "
356     << fJEta1 << " "
357     << fJPhi1 << " "
358     << fJD01 << " "
359     << fJDZ1 << " "
360     << fBeta << " "
361     << fBetaStar << " "
362     << fNCharged << " "
363     << fNNeutrals << " "
364     << fDRMean << " "
365     << fFrac01 << " "
366     << fFrac02 << " "
367     << fFrac03 << " "
368     << fFrac04 << " "
369 pharris 1.11 << fFrac05 << " "
370     << fDRMean
371 pharris 1.1 << " === : === "
372     << lMVA << " "
373     << std::endl;
374     }
375    
376     return lMVA;
377     }
378 pharris 1.4 Double_t JetIDMVA::MVAValue(const PFJet *iJet,const Vertex *iVertex, const VertexCol *iVertices,//Vertex here is the PV
379 pharris 1.2 Bool_t printDebug) {
380    
381     if (!fIsInitialized) {
382     std::cout << "Error: JetIDMVA not properly initialized.\n";
383     return -9999;
384     }
385     if(!JetTools::passPFLooseId(iJet)) return -2.;
386    
387     //set all input variables
388 pharris 1.4 fNVtx = iVertices->GetEntries();
389 pharris 1.2 fJPt1 = iJet->Pt();
390     fJEta1 = iJet->RawMom().Eta();
391     fJPhi1 = iJet->RawMom().Phi();
392 pharris 1.4 fJD01 = JetTools::impactParameter(iJet,iVertex);
393     fJDZ1 = JetTools::impactParameter(iJet,iVertex,true);
394     fBeta = JetTools::Beta(iJet,iVertex,fDZCut);
395     fBetaStar = JetTools::betaStar(iJet,iVertex,iVertices,fDZCut);
396     fNCharged = iJet->ChargedMultiplicity();
397     fNNeutrals = iJet->NeutralMultiplicity();
398    
399 pharris 1.11 fDRMean = JetTools::dRMean (iJet,-1);
400     fDR2Mean = JetTools::dR2Mean(iJet,-1);
401     fFrac01 = JetTools::frac (iJet,0.1,0. ,-1);
402     fFrac02 = JetTools::frac (iJet,0.2,0.1,-1);
403     fFrac03 = JetTools::frac (iJet,0.3,0.2,-1);
404     fFrac04 = JetTools::frac (iJet,0.4,0.3,-1);
405     fFrac05 = JetTools::frac (iJet,0.5,0.4,-1);
406 pharris 1.4
407     double lMVA = 0;
408 pharris 1.11 if(fJPt1 < 10) lMVA = fLowPtReader->EvaluateMVA( fLowPtMethodName );
409     if(fJPt1 > 10) lMVA = fReader ->EvaluateMVA( fHighPtMethodName );
410 pharris 1.5
411 pharris 1.2 if (printDebug == kTRUE) {
412     std::cout << "Debug Jet MVA: "
413 pharris 1.4 << fNVtx << " "
414     << fJPt1 << " "
415     << fJEta1 << " "
416     << fJPhi1 << " "
417     << fJD01 << " "
418     << fJDZ1 << " "
419     << fBeta << " "
420     << fBetaStar << " "
421     << fNCharged << " "
422     << fNNeutrals << " "
423     << fDRMean << " "
424     << fFrac01 << " "
425     << fFrac02 << " "
426     << fFrac03 << " "
427     << fFrac04 << " "
428 pharris 1.11 << fFrac05 << " "
429     << fDRMean
430 pharris 1.2 << " === : === "
431     << lMVA << " "
432     << std::endl;
433     }
434    
435     return lMVA;
436     }
437 ceballos 1.10 Double_t JetIDMVA::correctedPt(const PFJet *iJet, FactorizedJetCorrector *iJetCorrector,
438     const PileupEnergyDensityCol *iPUEnergyDensity,
439     RhoUtilities::RhoType type) {
440     Double_t Rho = 0.0;
441     switch(type) {
442     case RhoUtilities::MIT_RHO_VORONOI_HIGH_ETA:
443     Rho = iPUEnergyDensity->At(0)->Rho();
444     break;
445     case RhoUtilities::MIT_RHO_VORONOI_LOW_ETA:
446     Rho = iPUEnergyDensity->At(0)->RhoLowEta();
447     break;
448     case RhoUtilities::MIT_RHO_RANDOM_HIGH_ETA:
449     Rho = iPUEnergyDensity->At(0)->RhoRandom();
450     break;
451     case RhoUtilities::MIT_RHO_RANDOM_LOW_ETA:
452     Rho = iPUEnergyDensity->At(0)->RhoRandomLowEta();
453     break;
454     case RhoUtilities::CMS_RHO_RHOKT6PFJETS:
455     Rho = iPUEnergyDensity->At(0)->RhoKt6PFJets();
456     break;
457     default:
458     // use the old default
459     Rho = iPUEnergyDensity->At(0)->Rho();
460     break;
461     }
462    
463 pharris 1.1 const FourVectorM rawMom = iJet->RawMom();
464     iJetCorrector->setJetEta(rawMom.Eta());
465     iJetCorrector->setJetPt (rawMom.Pt());
466     iJetCorrector->setJetPhi(rawMom.Phi());
467     iJetCorrector->setJetE (rawMom.E());
468 ceballos 1.10 iJetCorrector->setRho (Rho);
469 pharris 1.1 iJetCorrector->setJetA (iJet->JetArea());
470     iJetCorrector->setJetEMF(-99.0);
471     Double_t correction = iJetCorrector->getCorrection();
472     return rawMom.Pt()*correction;
473     }