15 |
|
|
16 |
|
//-------------------------------------------------------------------------------------------------- |
17 |
|
JetIDMVA::JetIDMVA() : |
18 |
< |
fJetPtMin(0) , //We need to lower this |
18 |
> |
fJetPtMin(0.) , //We need to lower this |
19 |
|
fDZCut (0.2), |
20 |
|
fLowPtMethodName ("JetIDMVALowPt" ), |
21 |
|
fHighPtMethodName("JetIDMVAHighPt"), |
86 |
|
std::string lCutType = "Tight"; |
87 |
|
if(fCutType == kMedium) lCutType = "Medium"; |
88 |
|
if(fCutType == kLoose ) lCutType = "Loose"; |
89 |
+ |
if(fCutType == kMET ) lCutType = "MET"; |
90 |
|
std::vector<double> lPt010 = lConfig.getParameter<std::vector<double> >(("Pt010_" +lCutType).c_str()); |
91 |
|
std::vector<double> lPt1020 = lConfig.getParameter<std::vector<double> >(("Pt1020_"+lCutType).c_str()); |
92 |
|
std::vector<double> lPt2030 = lConfig.getParameter<std::vector<double> >(("Pt2030_"+lCutType).c_str()); |
151 |
|
//-------------------------------------------------------------------------------------------------- |
152 |
|
Bool_t JetIDMVA::pass(const PFJet *iJet,const Vertex *iVertex,const VertexCol *iVertices, |
153 |
|
FactorizedJetCorrector *iJetCorrector, |
154 |
< |
const PileupEnergyDensityCol *iPileupEnergyDensity) { |
154 |
> |
const PileupEnergyDensityCol *iPileupEnergyDensity, |
155 |
> |
RhoUtilities::RhoType type) { |
156 |
|
|
157 |
|
if(!JetTools::passPFLooseId(iJet)) return false; |
158 |
< |
if(iJet->Pt() < fJetPtMin) return false; |
157 |
< |
if(fabs(iJet->Eta()) > 4.99) return true; //==> Castor |
158 |
< |
//if(iJet->Pt() > 50) return true; //==> we can raise this |
158 |
> |
if(fabs(iJet->Eta()) > 4.99) return false; |
159 |
|
|
160 |
|
double lMVA = MVAValue (iJet,iVertex,iVertices,iJetCorrector,iPileupEnergyDensity); |
161 |
< |
double lPt = correctedPt(iJet, iJetCorrector,iPileupEnergyDensity); |
162 |
< |
|
161 |
> |
double lPt = correctedPt(iJet, iJetCorrector,iPileupEnergyDensity,type); |
162 |
> |
if(lPt < fJetPtMin) return false; |
163 |
> |
|
164 |
|
int lPtId = 0; |
165 |
< |
if(lPt > 10 && iJet->Pt() < 20) lPtId = 1; |
166 |
< |
if(lPt > 20 && iJet->Pt() < 30) lPtId = 2; |
165 |
> |
if(lPt > 10 && lPt < 20) lPtId = 1; |
166 |
> |
if(lPt > 20 && lPt < 30) lPtId = 2; |
167 |
|
if(lPt > 30 ) lPtId = 3; |
168 |
|
|
169 |
|
int lEtaId = 0; |
174 |
|
double lMVACut = fMVACut[lPtId][lEtaId]; |
175 |
|
if(lMVA < lMVACut) return false; |
176 |
|
return true; |
176 |
– |
//if( fabs(JetTools::impactParameter(iJet,iVertex,true)) < 0.2) return true; |
177 |
– |
//if(correctedPt(iJet,iJetCorrector,iPileupEnergyDensity) < fJetPtMin && iJet->TrackCountingHighEffBJetTagsDisc() == -100) return false; |
178 |
– |
//This line is a bug in the Met training |
179 |
– |
//if(lMVA < -0.8) return false; |
180 |
– |
//if(lMVA < -0.5 && fabs(iJet->Eta()) > 3.0) return false; |
177 |
|
} |
178 |
|
//-------------------------------------------------------------------------------------------------- |
179 |
|
Bool_t JetIDMVA::pass(const PFJet *iJet,const Vertex *iVertex,const VertexCol *iVertices) { |
180 |
|
if(!JetTools::passPFLooseId(iJet)) return false; |
181 |
|
if(iJet->Pt() < fJetPtMin) return false; |
182 |
< |
//if(iJet->Pt() > 50) return true; //==> we can raise this |
187 |
< |
if(fabs(iJet->Eta()) > 4.99) return true; //==> Castor |
182 |
> |
if(fabs(iJet->Eta()) > 4.99) return false; |
183 |
|
double lMVA = MVAValue(iJet,iVertex,iVertices); |
184 |
|
|
185 |
|
int lPtId = 0; |
316 |
|
|
317 |
|
return lMVA; |
318 |
|
} |
319 |
< |
Double_t JetIDMVA::correctedPt(const PFJet *iJet, FactorizedJetCorrector *iJetCorrector,const PileupEnergyDensityCol *iPUEnergyDensity) { |
319 |
> |
Double_t JetIDMVA::correctedPt(const PFJet *iJet, FactorizedJetCorrector *iJetCorrector, |
320 |
> |
const PileupEnergyDensityCol *iPUEnergyDensity, |
321 |
> |
RhoUtilities::RhoType type) { |
322 |
> |
Double_t Rho = 0.0; |
323 |
> |
switch(type) { |
324 |
> |
case RhoUtilities::MIT_RHO_VORONOI_HIGH_ETA: |
325 |
> |
Rho = iPUEnergyDensity->At(0)->Rho(); |
326 |
> |
break; |
327 |
> |
case RhoUtilities::MIT_RHO_VORONOI_LOW_ETA: |
328 |
> |
Rho = iPUEnergyDensity->At(0)->RhoLowEta(); |
329 |
> |
break; |
330 |
> |
case RhoUtilities::MIT_RHO_RANDOM_HIGH_ETA: |
331 |
> |
Rho = iPUEnergyDensity->At(0)->RhoRandom(); |
332 |
> |
break; |
333 |
> |
case RhoUtilities::MIT_RHO_RANDOM_LOW_ETA: |
334 |
> |
Rho = iPUEnergyDensity->At(0)->RhoRandomLowEta(); |
335 |
> |
break; |
336 |
> |
case RhoUtilities::CMS_RHO_RHOKT6PFJETS: |
337 |
> |
Rho = iPUEnergyDensity->At(0)->RhoKt6PFJets(); |
338 |
> |
break; |
339 |
> |
default: |
340 |
> |
// use the old default |
341 |
> |
Rho = iPUEnergyDensity->At(0)->Rho(); |
342 |
> |
break; |
343 |
> |
} |
344 |
> |
|
345 |
|
const FourVectorM rawMom = iJet->RawMom(); |
346 |
|
iJetCorrector->setJetEta(rawMom.Eta()); |
347 |
|
iJetCorrector->setJetPt (rawMom.Pt()); |
348 |
|
iJetCorrector->setJetPhi(rawMom.Phi()); |
349 |
|
iJetCorrector->setJetE (rawMom.E()); |
350 |
< |
iJetCorrector->setRho (iPUEnergyDensity->At(0)->RhoHighEta()); |
350 |
> |
iJetCorrector->setRho (Rho); |
351 |
|
iJetCorrector->setJetA (iJet->JetArea()); |
352 |
|
iJetCorrector->setJetEMF(-99.0); |
353 |
|
Double_t correction = iJetCorrector->getCorrection(); |