187 |
|
return true; |
188 |
|
} |
189 |
|
//-------------------------------------------------------------------------------------------------- |
190 |
+ |
Bool_t JetIDMVA::pass(const PFJet *iJet,const Vertex *iVertex) { |
191 |
+ |
if(!JetTools::passPFLooseId(iJet)) return false; |
192 |
+ |
if(iJet->Pt() < fJetPtMin && iJet->TrackCountingHighEffBJetTagsDisc() == -100) return false; //This line is a bug in the Met training |
193 |
+ |
if( fabs(JetTools::impactParameter(iJet,iVertex,true)) < 0.2) return true; |
194 |
+ |
double lMVA = MVAValue(iJet,iVertex); |
195 |
+ |
if(lMVA < -0.8) return false; |
196 |
+ |
if(lMVA < -0.5 && fabs(iJet->Eta()) > 3.0) return false; |
197 |
+ |
return true; |
198 |
+ |
} |
199 |
+ |
//-------------------------------------------------------------------------------------------------- |
200 |
|
Double_t JetIDMVA::MVAValue(const PFJet *iJet,const Vertex *iVertex, //Vertex here is the PV |
201 |
|
FactorizedJetCorrector *iJetCorrector, |
202 |
|
const PileupEnergyDensityCol *iPileupEnergyDensity, |
242 |
|
|
243 |
|
fDRLC1 = MathUtils::DeltaR(iJet->Mom(),lLead ->Mom()); |
244 |
|
fDRLS1 = MathUtils::DeltaR(iJet->Mom(),lSecond->Mom()); |
245 |
+ |
fDRM1 = JetTools::dRMean (iJet,-1); |
246 |
+ |
fDRNE1 = JetTools::dRMean (iJet, 5); |
247 |
+ |
fDREM1 = JetTools::dRMean (iJet, 4); |
248 |
+ |
fDRCH1 = JetTools::dRMean (iJet, 1); |
249 |
+ |
|
250 |
+ |
double lMVA = fReader->EvaluateMVA( fMethodName ); |
251 |
+ |
|
252 |
+ |
if (printDebug == kTRUE) { |
253 |
+ |
std::cout << "Debug Jet MVA: " |
254 |
+ |
<< fNPV << " " |
255 |
+ |
<< fJPt1 << " " |
256 |
+ |
<< fJEta1 << " " |
257 |
+ |
<< fJPhi1 << " " |
258 |
+ |
<< fJD01 << " " |
259 |
+ |
<< fJDZ1 << " " |
260 |
+ |
<< fJM1 << " " |
261 |
+ |
<< fNPart1 << " " |
262 |
+ |
<< fLPt1 << " " |
263 |
+ |
<< fLEta1 << " " |
264 |
+ |
<< fLPhi1 << " " |
265 |
+ |
<< fSPt1 << " " |
266 |
+ |
<< fSEta1 << " " |
267 |
+ |
<< fSPhi1 << " " |
268 |
+ |
<< fNEPt1 << " " |
269 |
+ |
<< fNEEta1 << " " |
270 |
+ |
<< fNEPhi1 << " " |
271 |
+ |
<< fEMPt1 << " " |
272 |
+ |
<< fEMEta1 << " " |
273 |
+ |
<< fEMPhi1 << " " |
274 |
+ |
<< fChPt1 << " " |
275 |
+ |
<< fChPhi1 << " " |
276 |
+ |
<< fLFr1 << " " |
277 |
+ |
<< fDRLC1 << " " |
278 |
+ |
<< fDRLS1 << " " |
279 |
+ |
<< fDRM1 << " " |
280 |
+ |
<< fDRNE1 << " " |
281 |
+ |
<< fDREM1 << " " |
282 |
+ |
<< fDRCH1 << " " |
283 |
+ |
<< " === : === " |
284 |
+ |
<< lMVA << " " |
285 |
+ |
<< std::endl; |
286 |
+ |
} |
287 |
+ |
|
288 |
+ |
return lMVA; |
289 |
+ |
} |
290 |
+ |
Double_t JetIDMVA::MVAValue(const PFJet *iJet,const Vertex *iVertex, //Vertex here is the PV |
291 |
+ |
Bool_t printDebug) { |
292 |
+ |
|
293 |
+ |
if (!fIsInitialized) { |
294 |
+ |
std::cout << "Error: JetIDMVA not properly initialized.\n"; |
295 |
+ |
return -9999; |
296 |
+ |
} |
297 |
+ |
if(!JetTools::passPFLooseId(iJet)) return -2.; |
298 |
+ |
|
299 |
+ |
//set all input variables |
300 |
+ |
fJPt1 = iJet->Pt(); |
301 |
+ |
fJEta1 = iJet->RawMom().Eta(); |
302 |
+ |
fJPhi1 = iJet->RawMom().Phi(); |
303 |
+ |
fJM1 = iJet->Mass(); |
304 |
+ |
|
305 |
+ |
const mithep::PFCandidate *lLead = JetTools::leadCand(iJet,-1); |
306 |
+ |
const mithep::PFCandidate *lSecond = JetTools::leadCand(iJet,-1,true); |
307 |
+ |
const mithep::PFCandidate *lLeadNeut = JetTools::leadCand(iJet ,5); |
308 |
+ |
const mithep::PFCandidate *lLeadEm = JetTools::leadCand(iJet ,4); |
309 |
+ |
const mithep::PFCandidate *lLeadCh = JetTools::leadCand(iJet ,1); |
310 |
+ |
|
311 |
+ |
fJD01 = JetTools::impactParameter(iJet,iVertex); |
312 |
+ |
fJDZ1 = JetTools::impactParameter(iJet,iVertex,true); |
313 |
+ |
fNPart1 = iJet->NPFCands(); |
314 |
+ |
fLPt1 = lLead ->Pt(); |
315 |
+ |
fLEta1 = lLead ->Eta(); |
316 |
+ |
fLPhi1 = lLead ->Phi(); |
317 |
+ |
fSPt1 = lSecond ->Pt(); |
318 |
+ |
fSEta1 = lSecond ->Eta(); |
319 |
+ |
fSPhi1 = lSecond ->Phi(); |
320 |
+ |
fNEPt1 = lLeadNeut->Pt(); |
321 |
+ |
fNEEta1 = lLeadNeut->Eta(); |
322 |
+ |
fNEPhi1 = lLeadNeut->Phi(); |
323 |
+ |
fEMPt1 = lLeadEm ->Pt(); |
324 |
+ |
fEMEta1 = lLeadEm ->Eta(); |
325 |
+ |
fEMPhi1 = lLeadEm ->Phi(); |
326 |
+ |
fChPt1 = lLeadCh ->Pt(); |
327 |
+ |
//fChEta1 = lLeadCh ->Eta(); |
328 |
+ |
fChPhi1 = lLeadCh ->Phi(); |
329 |
+ |
fLFr1 = lLead->Pt()/iJet->RawMom().Pt(); |
330 |
+ |
|
331 |
+ |
fDRLC1 = MathUtils::DeltaR(iJet->Mom(),lLead ->Mom()); |
332 |
+ |
fDRLS1 = MathUtils::DeltaR(iJet->Mom(),lSecond->Mom()); |
333 |
|
fDRM1 = JetTools::dRMean (iJet,-1); |
334 |
|
fDRNE1 = JetTools::dRMean (iJet, 5); |
335 |
|
fDREM1 = JetTools::dRMean (iJet, 4); |