CMS 3D CMS Logo

List of all members | Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
PileupJetIdAlgo Class Reference

#include <PileupJetIdAlgo.h>

Classes

class  AlgoGBRForestsAndConstants
 

Public Types

typedef std::map< std::string, std::pair< float *, float > > variables_list_t
 
enum  version_t { USER = -1, PHILv0 = 0 }
 

Public Member Functions

int computeCutIDflag (float betaStarClassic, float dR2Mean, float nvtx, float jetPt, float jetEta)
 
int computeIDflag (float mva, float jetPt, float jetEta)
 
int computeIDflag (float mva, int ptId, int etaId)
 
PileupJetIdentifier computeIdVariables (const reco::Jet *jet, float jec, const reco::Vertex *, const reco::VertexCollection &, double rho, bool usePuppi)
 
PileupJetIdentifier computeMva ()
 
std::string dumpVariables () const
 
std::pair< int, int > getJetIdKey (float jetPt, float jetEta)
 
float getMVAval (const std::vector< std::string > &, const std::unique_ptr< const GBRForest > &)
 
const variables_list_tgetVariables () const
 const PileupJetIdentifier::variables_list_t & getVariables() const { return variables_; }; More...
 
const std::string method () const
 
 PileupJetIdAlgo (AlgoGBRForestsAndConstants const *cache)
 
void set (const PileupJetIdentifier &)
 
 ~PileupJetIdAlgo ()
 

Protected Member Functions

void initVariables ()
 
void resetVariables ()
 
void runMva ()
 

Protected Attributes

AlgoGBRForestsAndConstants const * cache_
 
PileupJetIdentifier internalId_
 
variables_list_t variables_
 

Detailed Description

Definition at line 22 of file PileupJetIdAlgo.h.

Member Typedef Documentation

◆ variables_list_t

typedef std::map<std::string, std::pair<float*, float> > PileupJetIdAlgo::variables_list_t

Definition at line 41 of file PileupJetIdAlgo.h.

Member Enumeration Documentation

◆ version_t

Enumerator
USER 
PHILv0 

Definition at line 24 of file PileupJetIdAlgo.h.

Constructor & Destructor Documentation

◆ PileupJetIdAlgo()

PileupJetIdAlgo::PileupJetIdAlgo ( AlgoGBRForestsAndConstants const *  cache)

Definition at line 133 of file PileupJetIdAlgo.cc.

References initVariables().

133 : cache_(cache) { initVariables(); }
AlgoGBRForestsAndConstants const * cache_
def cache(function)
Definition: utilities.py:3

◆ ~PileupJetIdAlgo()

PileupJetIdAlgo::~PileupJetIdAlgo ( )

Definition at line 136 of file PileupJetIdAlgo.cc.

136 {}

Member Function Documentation

◆ computeCutIDflag()

int PileupJetIdAlgo::computeCutIDflag ( float  betaStarClassic,
float  dR2Mean,
float  nvtx,
float  jetPt,
float  jetEta 
)

Definition at line 219 of file PileupJetIdAlgo.cc.

References getJetIdKey(), reco::btau::jetEta, reco::btau::jetPt, PileupJetIdentifier::kLoose, PileupJetIdentifier::kMedium, PileupJetIdentifier::kTight, and dqm-mbProfile::log.

Referenced by runMva().

219  {
220  std::pair<int, int> jetIdKey = getJetIdKey(jetPt, jetEta);
221  float betaStarModified = betaStarClassic / log(nvtx - 0.64);
222  int idFlag(0);
223  if (betaStarModified < cache_->betaStarCut()[PileupJetIdentifier::kTight][jetIdKey.first][jetIdKey.second] &&
224  dR2Mean < cache_->rmsCut()[PileupJetIdentifier::kTight][jetIdKey.first][jetIdKey.second])
225  idFlag += 1 << PileupJetIdentifier::kTight;
226 
227  if (betaStarModified < cache_->betaStarCut()[PileupJetIdentifier::kMedium][jetIdKey.first][jetIdKey.second] &&
228  dR2Mean < cache_->rmsCut()[PileupJetIdentifier::kMedium][jetIdKey.first][jetIdKey.second])
229  idFlag += 1 << PileupJetIdentifier::kMedium;
230 
231  if (betaStarModified < cache_->betaStarCut()[PileupJetIdentifier::kLoose][jetIdKey.first][jetIdKey.second] &&
232  dR2Mean < cache_->rmsCut()[PileupJetIdentifier::kLoose][jetIdKey.first][jetIdKey.second])
233  idFlag += 1 << PileupJetIdentifier::kLoose;
234  return idFlag;
235 }
std::pair< int, int > getJetIdKey(float jetPt, float jetEta)

◆ computeIDflag() [1/2]

int PileupJetIdAlgo::computeIDflag ( float  mva,
float  jetPt,
float  jetEta 
)

Definition at line 237 of file PileupJetIdAlgo.cc.

References getJetIdKey(), reco::btau::jetEta, reco::btau::jetPt, and beam_dqm_sourceclient-live_cfg::mva.

Referenced by runMva().

237  {
238  std::pair<int, int> jetIdKey = getJetIdKey(jetPt, jetEta);
239  return computeIDflag(mva, jetIdKey.first, jetIdKey.second);
240 }
std::pair< int, int > getJetIdKey(float jetPt, float jetEta)
int computeIDflag(float mva, float jetPt, float jetEta)

◆ computeIDflag() [2/2]

int PileupJetIdAlgo::computeIDflag ( float  mva,
int  ptId,
int  etaId 
)

◆ computeIdVariables()

PileupJetIdentifier PileupJetIdAlgo::computeIdVariables ( const reco::Jet jet,
float  jec,
const reco::Vertex vtx,
const reco::VertexCollection allvtx,
double  rho,
bool  usePuppi 
)

Definition at line 261 of file PileupJetIdAlgo.cc.

References funct::abs(), cms::cuda::assert(), assign(), reco::Muon::bestTrack(), reco::Candidate::bestTrack(), cache_, reco::Candidate::charge(), reco::PFJet::chargedEmEnergy(), pat::Jet::chargedEmEnergy(), reco::PFJet::chargedHadronEnergy(), pat::Jet::chargedHadronEnergy(), reco::PFJet::chargedMultiplicity(), pat::Jet::chargedMultiplicity(), PileupJetIdentifier::chFrac01_, PileupJetIdentifier::chFrac02_, PileupJetIdentifier::chFrac03_, PileupJetIdentifier::chFrac04_, PileupJetIdentifier::chFrac05_, PileupJetIdentifier::chFrac06_, PileupJetIdentifier::chFrac07_, PileupJetIdentifier::chgEMfrac_, PileupJetIdentifier::chgHadrfrac_, pat::Jet::correctedJet(), PileupJetIdentifier::d0_, reco::deltaPhi(), reco::deltaR(), PileupJetIdentifier::dRLead2nd_, PileupJetIdentifier::dRLeadCent_, PileupJetIdentifier::dRMeanCh_, PileupJetIdentifier::dRMeanEm_, PileupJetIdentifier::dRMeanNeut_, HLT_FULL_cff::dRmin, reco::TrackBase::dxy(), pat::PackedCandidate::dxy(), reco::TrackBase::dz(), pat::PackedCandidate::dz(), PileupJetIdentifier::emFrac01_, PileupJetIdentifier::emFrac02_, PileupJetIdentifier::emFrac03_, PileupJetIdentifier::emFrac04_, PileupJetIdentifier::emFrac05_, PileupJetIdentifier::emFrac06_, PileupJetIdentifier::emFrac07_, reco::Candidate::eta(), PileupJetIdentifier::etaW_, PileupJetIdentifier::fourthChFrac_, PileupJetIdentifier::fourthEmFrac_, PileupJetIdentifier::fourthFrac_, PileupJetIdentifier::fourthNeutFrac_, DivergingColor::frac, pat::PackedCandidate::fromPV(), edm::Ptr< T >::get(), edm::Ref< C, T, F >::get(), reco::PFCandidate::gsfTrackRef(), mps_fire::i, internalId_, edm::Ref< C, T, F >::isNonnull(), gpuVertexFinder::iv, dqmiolumiharvest::j, jetMETDQMOfflineSource_cff::jec, metsig::jet, PileupJetIdentifier::jetM_, PileupJetIdentifier::jetPhi_, reco::btau::jetPt, PileupJetIdentifier::jetW_, PileupJetIdentifier::leadChEta_, PileupJetIdentifier::leadChFrac_, PileupJetIdentifier::leadChPhi_, PileupJetIdentifier::leadChPt_, PileupJetIdentifier::leadEmEta_, PileupJetIdentifier::leadEmFrac_, PileupJetIdentifier::leadEmPhi_, PileupJetIdentifier::leadEmPt_, PileupJetIdentifier::leadEta_, PileupJetIdentifier::leadFrac_, PileupJetIdentifier::leadNeutEta_, PileupJetIdentifier::leadNeutFrac_, PileupJetIdentifier::leadNeutPhi_, PileupJetIdentifier::leadNeutPt_, PileupJetIdentifier::leadPhi_, PileupJetIdentifier::leadPt_, pfDeepBoostedJetPreprocessParams_cfi::lower_bound, SiStripPI::min, reco::PFCandidate::muonRef(), PileupJetIdentifier::neuEMfrac_, PileupJetIdentifier::neuHadrfrac_, PileupJetIdentifier::neutFrac01_, PileupJetIdentifier::neutFrac02_, PileupJetIdentifier::neutFrac03_, PileupJetIdentifier::neutFrac04_, PileupJetIdentifier::neutFrac05_, PileupJetIdentifier::neutFrac06_, PileupJetIdentifier::neutFrac07_, reco::PFJet::neutralEmEnergy(), pat::Jet::neutralEmEnergy(), reco::PFJet::neutralHadronEnergy(), pat::Jet::neutralHadronEnergy(), reco::PFJet::neutralMultiplicity(), pat::Jet::neutralMultiplicity(), reco::Candidate::pdgId(), PileupJetIdentifier::phiW_, DiDispStaMuonMonitor_cfi::pt, reco::Candidate::pt(), reco::LeafCandidate::pt(), PileupJetIdentifier::pt2A_, PileupJetIdentifier::ptDCh_, PileupJetIdentifier::ptDNe_, PileupJetIdentifier::ptMean_, PileupJetIdentifier::ptRMS_, pat::PackedCandidate::puppiWeight(), pat::PackedCandidate::PVUsedInFit, alignCSCRings::r, resetVariables(), rho, runMva(), PileupJetIdAlgo::AlgoGBRForestsAndConstants::runMvas(), PileupJetIdentifier::secondChFrac_, PileupJetIdentifier::secondEmFrac_, PileupJetIdentifier::secondEta_, PileupJetIdentifier::secondFrac_, PileupJetIdentifier::secondNeutFrac_, PileupJetIdentifier::secondPhi_, PileupJetIdentifier::secondPt_, setPtEtaPhi(), jetUpdater_cfi::sort, mathSSE::sqrt(), PileupJetIdentifier::sumChPt_, PileupJetIdentifier::sumNePt_, TtFullHadEvtBuilder_cfi::sumPt, PileupJetIdentifier::sumPt_, std::swap(), PileupJetIdentifier::thirdChFrac_, PileupJetIdentifier::thirdEmFrac_, PileupJetIdentifier::thirdFrac_, PileupJetIdentifier::thirdNeutFrac_, reco::PFCandidate::trackRef(), PileupJetID_cfi::usePuppi, extraflags_cff::vtx, and mps_merge::weight.

Referenced by PileupJetIdProducer::produce().

266  {
267  // initialize all variables to 0
268  resetVariables();
269 
270  // loop over constituents, accumulate sums and find leading candidates
271  const pat::Jet* patjet = dynamic_cast<const pat::Jet*>(jet);
272  const reco::PFJet* pfjet = dynamic_cast<const reco::PFJet*>(jet);
273  assert(patjet != nullptr || pfjet != nullptr);
274  if (patjet != nullptr && jec == 0.) { // if this is a pat jet and no jec has been passed take the jec from the object
275  jec = patjet->pt() / patjet->correctedJet(0).pt();
276  }
277  if (jec <= 0.) {
278  jec = 1.;
279  }
280 
281  const reco::Candidate *lLead = nullptr, *lSecond = nullptr, *lLeadNeut = nullptr, *lLeadEm = nullptr,
282  *lLeadCh = nullptr, *lTrail = nullptr;
283  std::vector<float> frac, fracCh, fracEm, fracNeut;
284  float cones[] = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7};
285  size_t ncones = sizeof(cones) / sizeof(float);
286  float* coneFracs[] = {&internalId_.frac01_,
287  &internalId_.frac02_,
288  &internalId_.frac03_,
289  &internalId_.frac04_,
290  &internalId_.frac05_,
291  &internalId_.frac06_,
292  &internalId_.frac07_};
293  float* coneEmFracs[] = {&internalId_.emFrac01_,
300  float* coneNeutFracs[] = {&internalId_.neutFrac01_,
307  float* coneChFracs[] = {&internalId_.chFrac01_,
314  TMatrixDSym covMatrix(2);
315  covMatrix = 0.;
316  float jetPt = jet->pt() / jec; // use uncorrected pt for shape variables
317  float sumPt = 0., sumPt2 = 0., sumTkPt = 0., sumPtCh = 0, sumPtNe = 0;
318  float multNeut = 0.0;
319  setPtEtaPhi(
320  *jet, internalId_.jetPt_, internalId_.jetEta_, internalId_.jetPhi_); // use corrected pt for jet kinematics
321  internalId_.jetM_ = jet->mass();
322  internalId_.nvtx_ = allvtx.size();
323  internalId_.rho_ = rho;
324 
325  float dRmin(1000);
326 
327  for (unsigned i = 0; i < jet->numberOfSourceCandidatePtrs(); ++i) {
328  reco::CandidatePtr pfJetConstituent = jet->sourceCandidatePtr(i);
329 
330  const reco::Candidate* icand = pfJetConstituent.get();
331  const pat::PackedCandidate* lPack = dynamic_cast<const pat::PackedCandidate*>(icand);
332  const reco::PFCandidate* lPF = dynamic_cast<const reco::PFCandidate*>(icand);
333  bool isPacked = true;
334  if (lPack == nullptr) {
335  isPacked = false;
336  }
337  float candPuppiWeight = 1.0;
338  if (usePuppi && isPacked)
339  candPuppiWeight = lPack->puppiWeight();
340  float candPt = (icand->pt()) * candPuppiWeight;
341  float candPtFrac = candPt / jetPt;
342  float candDr = reco::deltaR(*icand, *jet);
343  float candDeta = icand->eta() - jet->eta();
344  float candDphi = reco::deltaPhi(*icand, *jet);
345  float candPtDr = candPt * candDr;
346  size_t icone = std::lower_bound(&cones[0], &cones[ncones], candDr) - &cones[0];
347 
348  if (candDr < dRmin)
349  dRmin = candDr;
350 
351  // // all particles
352  if (lLead == nullptr || candPt > lLead->pt()) {
353  lSecond = lLead;
354  lLead = icand;
355  } else if ((lSecond == nullptr || candPt > lSecond->pt()) && (candPt < lLead->pt())) {
356  lSecond = icand;
357  }
358 
359  // // average shapes
360  internalId_.dRMean_ += candPtDr;
361  internalId_.dR2Mean_ += candPtDr * candPtDr;
362  covMatrix(0, 0) += candPt * candPt * candDeta * candDeta;
363  covMatrix(0, 1) += candPt * candPt * candDeta * candDphi;
364  covMatrix(1, 1) += candPt * candPt * candDphi * candDphi;
365  internalId_.ptD_ += candPt * candPt;
366  sumPt += candPt;
367  sumPt2 += candPt * candPt;
368 
369  // single most energetic candiates and jet shape profiles
370  frac.push_back(candPtFrac);
371 
372  if (icone < ncones) {
373  *coneFracs[icone] += candPt;
374  }
375 
376  // neutrals
377  if (abs(icand->pdgId()) == 130) {
378  if (lLeadNeut == nullptr || candPt > lLeadNeut->pt()) {
379  lLeadNeut = icand;
380  }
381  internalId_.dRMeanNeut_ += candPtDr;
382  fracNeut.push_back(candPtFrac);
383  if (icone < ncones) {
384  *coneNeutFracs[icone] += candPt;
385  }
386  internalId_.ptDNe_ += candPt * candPt;
387  sumPtNe += candPt;
388  multNeut += candPuppiWeight;
389  }
390  // EM candidated
391  if (icand->pdgId() == 22) {
392  if (lLeadEm == nullptr || candPt > lLeadEm->pt()) {
393  lLeadEm = icand;
394  }
395  internalId_.dRMeanEm_ += candPtDr;
396  fracEm.push_back(candPtFrac);
397  if (icone < ncones) {
398  *coneEmFracs[icone] += candPt;
399  }
400  internalId_.ptDNe_ += candPt * candPt;
401  sumPtNe += candPt;
402  multNeut += candPuppiWeight;
403  }
404  if ((abs(icand->pdgId()) == 1) || (abs(icand->pdgId()) == 2))
405  multNeut += candPuppiWeight;
406 
407  // Charged particles
408  if (icand->charge() != 0) {
409  if (lLeadCh == nullptr || candPt > lLeadCh->pt()) {
410  lLeadCh = icand;
411 
412  const reco::Track* pfTrk = icand->bestTrack();
413  if (lPF && std::abs(icand->pdgId()) == 13 && pfTrk == nullptr) {
414  reco::MuonRef lmuRef = lPF->muonRef();
415  if (lmuRef.isNonnull()) {
416  const reco::Muon& lmu = *lmuRef.get();
417  pfTrk = lmu.bestTrack();
418  edm::LogWarning("BadMuon")
419  << "Found a PFCandidate muon without a trackRef: falling back to Muon::bestTrack ";
420  }
421  }
422  if (pfTrk == nullptr) { //protection against empty pointers for the miniAOD case
423  //To handle the electron case
424  if (isPacked) {
425  internalId_.d0_ = std::abs(lPack->dxy(vtx->position()));
426  internalId_.dZ_ = std::abs(lPack->dz(vtx->position()));
427  } else if (lPF != nullptr) {
428  pfTrk = (lPF->trackRef().get() == nullptr) ? lPF->gsfTrackRef().get() : lPF->trackRef().get();
429  internalId_.d0_ = std::abs(pfTrk->dxy(vtx->position()));
430  internalId_.dZ_ = std::abs(pfTrk->dz(vtx->position()));
431  }
432  } else {
433  internalId_.d0_ = std::abs(pfTrk->dxy(vtx->position()));
434  internalId_.dZ_ = std::abs(pfTrk->dz(vtx->position()));
435  }
436  }
437  internalId_.dRMeanCh_ += candPtDr;
438  internalId_.ptDCh_ += candPt * candPt;
439  fracCh.push_back(candPtFrac);
440  if (icone < ncones) {
441  *coneChFracs[icone] += candPt;
442  }
443  sumPtCh += candPt;
444  }
445  // // beta and betastar
446  if (icand->charge() != 0) {
447  if (!isPacked) {
448  if (lPF->trackRef().isNonnull()) {
449  float tkpt = candPt;
450  sumTkPt += tkpt;
451  // 'classic' beta definition based on track-vertex association
452  bool inVtx0 = vtx->trackWeight(lPF->trackRef()) > 0;
453 
454  bool inAnyOther = false;
455  // alternative beta definition based on track-vertex distance of closest approach
456  double dZ0 = std::abs(lPF->trackRef()->dz(vtx->position()));
457  double dZ = dZ0;
458  for (reco::VertexCollection::const_iterator vi = allvtx.begin(); vi != allvtx.end(); ++vi) {
459  const reco::Vertex& iv = *vi;
460  if (iv.isFake() || iv.ndof() < 4) {
461  continue;
462  }
463  // the primary vertex may have been copied by the user: check identity by position
464  bool isVtx0 = (iv.position() - vtx->position()).r() < 0.02;
465  // 'classic' beta definition: check if the track is associated with
466  // any vertex other than the primary one
467  if (!isVtx0 && !inAnyOther) {
468  inAnyOther = vtx->trackWeight(lPF->trackRef()) <= 0;
469  }
470  // alternative beta: find closest vertex to the track
471  dZ = std::min(dZ, std::abs(lPF->trackRef()->dz(iv.position())));
472  }
473  // classic beta/betaStar
474  if (inVtx0 && !inAnyOther) {
475  internalId_.betaClassic_ += tkpt;
476  } else if (!inVtx0 && inAnyOther) {
477  internalId_.betaStarClassic_ += tkpt;
478  }
479  // alternative beta/betaStar
480  if (dZ0 < 0.2) {
481  internalId_.beta_ += tkpt;
482  } else if (dZ < 0.2) {
483  internalId_.betaStar_ += tkpt;
484  }
485  }
486  } else {
487  float tkpt = candPt;
488  sumTkPt += tkpt;
489  bool inVtx0 = false;
490  bool inVtxOther = false;
491  double dZ0 = 9999.;
492  double dZ_tmp = 9999.;
493  for (unsigned vtx_i = 0; vtx_i < allvtx.size(); vtx_i++) {
494  auto iv = allvtx[vtx_i];
495 
496  if (iv.isFake())
497  continue;
498 
499  // Match to vertex in case of copy as above
500  bool isVtx0 = (iv.position() - vtx->position()).r() < 0.02;
501 
502  if (isVtx0) {
503  if (lPack->fromPV(vtx_i) == pat::PackedCandidate::PVUsedInFit)
504  inVtx0 = true;
505  if (lPack->fromPV(vtx_i) == 0)
506  inVtxOther = true;
507  dZ0 = lPack->dz(iv.position());
508  }
509 
510  if (fabs(lPack->dz(iv.position())) < fabs(dZ_tmp)) {
511  dZ_tmp = lPack->dz(iv.position());
512  }
513  }
514  if (inVtx0) {
515  internalId_.betaClassic_ += tkpt;
516  } else if (inVtxOther) {
517  internalId_.betaStarClassic_ += tkpt;
518  }
519  if (fabs(dZ0) < 0.2) {
520  internalId_.beta_ += tkpt;
521  } else if (fabs(dZ_tmp) < 0.2) {
522  internalId_.betaStar_ += tkpt;
523  }
524  }
525  }
526 
527  // trailing candidate
528  if (lTrail == nullptr || candPt < lTrail->pt()) {
529  lTrail = icand;
530  }
531  }
532 
533  // // Finalize all variables
534  assert(!(lLead == nullptr));
535 
536  if (lSecond == nullptr) {
537  lSecond = lTrail;
538  }
539  if (lLeadNeut == nullptr) {
540  lLeadNeut = lTrail;
541  }
542  if (lLeadEm == nullptr) {
543  lLeadEm = lTrail;
544  }
545  if (lLeadCh == nullptr) {
546  lLeadCh = lTrail;
547  }
548 
549  if (patjet != nullptr) { // to enable running on MiniAOD slimmedJets
550  internalId_.nCharged_ = patjet->chargedMultiplicity();
551  internalId_.nNeutrals_ = patjet->neutralMultiplicity();
552  internalId_.chgEMfrac_ = patjet->chargedEmEnergy() / jet->energy();
553  internalId_.neuEMfrac_ = patjet->neutralEmEnergy() / jet->energy();
554  internalId_.chgHadrfrac_ = patjet->chargedHadronEnergy() / jet->energy();
555  internalId_.neuHadrfrac_ = patjet->neutralHadronEnergy() / jet->energy();
556  if (usePuppi)
557  internalId_.nNeutrals_ = multNeut;
558  } else {
559  internalId_.nCharged_ = pfjet->chargedMultiplicity();
560  internalId_.nNeutrals_ = pfjet->neutralMultiplicity();
561  internalId_.chgEMfrac_ = pfjet->chargedEmEnergy() / jet->energy();
562  internalId_.neuEMfrac_ = pfjet->neutralEmEnergy() / jet->energy();
563  internalId_.chgHadrfrac_ = pfjet->chargedHadronEnergy() / jet->energy();
564  internalId_.neuHadrfrac_ = pfjet->neutralHadronEnergy() / jet->energy();
565  }
566  internalId_.nParticles_ = jet->nConstituents();
567 
569  float sumW2(0.0);
570  float sum_deta(0.0), sum_dphi(0.0);
571  float ave_deta(0.0), ave_dphi(0.0);
572  for (size_t j = 0; j < jet->numberOfDaughters(); j++) {
573  const auto& part = jet->daughterPtr(j);
574  if (!(part.isAvailable() && part.isNonnull())) {
575  continue;
576  }
577 
578  float partPuppiWeight = 1.0;
579  if (usePuppi) {
580  const pat::PackedCandidate* partpack = dynamic_cast<const pat::PackedCandidate*>(part.get());
581  if (partpack != nullptr)
582  partPuppiWeight = partpack->puppiWeight();
583  }
584 
585  float weight = (part->pt()) * partPuppiWeight;
586  float weight2 = weight * weight;
587  sumW2 += weight2;
588  float deta = part->eta() - jet->eta();
589  float dphi = reco::deltaPhi(*part, *jet);
590  sum_deta += deta * weight2;
591  sum_dphi += dphi * weight2;
592  if (sumW2 > 0) {
593  ave_deta = sum_deta / sumW2;
594  ave_dphi = sum_dphi / sumW2;
595  }
596  }
597 
598  float ddetaR_sum(0.0), ddphiR_sum(0.0), pull_tmp(0.0);
599  for (size_t i = 0; i < jet->numberOfDaughters(); i++) {
600  const auto& part = jet->daughterPtr(i);
601  if (!(part.isAvailable() && part.isNonnull())) {
602  continue;
603  }
604 
605  float partPuppiWeight = 1.0;
606  if (usePuppi) {
607  const pat::PackedCandidate* partpack = dynamic_cast<const pat::PackedCandidate*>(part.get());
608  if (partpack != nullptr)
609  partPuppiWeight = partpack->puppiWeight();
610  }
611 
612  float weight = partPuppiWeight * (part->pt()) * partPuppiWeight * (part->pt());
613  float deta = part->eta() - jet->eta();
614  float dphi = reco::deltaPhi(*part, *jet);
615  float ddeta, ddphi, ddR;
616  ddeta = deta - ave_deta;
617  ddphi = dphi - ave_dphi;
618  ddR = sqrt(ddeta * ddeta + ddphi * ddphi);
619  ddetaR_sum += ddR * ddeta * weight;
620  ddphiR_sum += ddR * ddphi * weight;
621  }
622  if (sumW2 > 0) {
623  float ddetaR_ave = ddetaR_sum / sumW2;
624  float ddphiR_ave = ddphiR_sum / sumW2;
625  pull_tmp = sqrt(ddetaR_ave * ddetaR_ave + ddphiR_ave * ddphiR_ave);
626  }
627  internalId_.pull_ = pull_tmp;
629 
635 
636  std::sort(frac.begin(), frac.end(), std::greater<float>());
637  std::sort(fracCh.begin(), fracCh.end(), std::greater<float>());
638  std::sort(fracEm.begin(), fracEm.end(), std::greater<float>());
639  std::sort(fracNeut.begin(), fracNeut.end(), std::greater<float>());
641  assign(
643  assign(
645  assign(fracNeut,
650 
651  covMatrix(0, 0) /= sumPt2;
652  covMatrix(0, 1) /= sumPt2;
653  covMatrix(1, 1) /= sumPt2;
654  covMatrix(1, 0) = covMatrix(0, 1);
655  internalId_.etaW_ = sqrt(covMatrix(0, 0));
656  internalId_.phiW_ = sqrt(covMatrix(1, 1));
658  TVectorD eigVals(2);
659  eigVals = TMatrixDSymEigen(covMatrix).GetEigenValues();
660  internalId_.majW_ = sqrt(std::abs(eigVals(0)));
661  internalId_.minW_ = sqrt(std::abs(eigVals(1)));
662  if (internalId_.majW_ < internalId_.minW_) {
663  std::swap(internalId_.majW_, internalId_.minW_);
664  }
665 
667  if (lSecond != nullptr) {
668  internalId_.dRLead2nd_ = reco::deltaR(*jet, *lSecond);
669  }
670  internalId_.dRMean_ /= jetPt;
674  internalId_.dR2Mean_ /= sumPt2;
675 
676  for (size_t ic = 0; ic < ncones; ++ic) {
677  *coneFracs[ic] /= jetPt;
678  *coneEmFracs[ic] /= jetPt;
679  *coneNeutFracs[ic] /= jetPt;
680  *coneChFracs[ic] /= jetPt;
681  }
682  //http://jets.physics.harvard.edu/qvg/
683  double ptMean = sumPt / internalId_.nParticles_;
684  double ptRMS = 0;
685  for (unsigned int i0 = 0; i0 < frac.size(); i0++) {
686  ptRMS += (frac[i0] - ptMean) * (frac[i0] - ptMean);
687  }
688  ptRMS /= internalId_.nParticles_;
689  ptRMS = sqrt(ptRMS);
690 
691  internalId_.ptMean_ = ptMean;
692  internalId_.ptRMS_ = ptRMS / jetPt;
693  internalId_.pt2A_ = sqrt(internalId_.ptD_ / internalId_.nParticles_) / jetPt;
694  internalId_.ptD_ = sqrt(internalId_.ptD_) / sumPt;
698  internalId_.sumChPt_ = sumPtCh;
699  internalId_.sumNePt_ = sumPtNe;
700 
701  internalId_.jetR_ = lLead->pt() / sumPt;
702  internalId_.jetRchg_ = lLeadCh->pt() / sumPt;
703  internalId_.dRMatch_ = dRmin;
704 
705  if (sumTkPt != 0.) {
706  internalId_.beta_ /= sumTkPt;
707  internalId_.betaStar_ /= sumTkPt;
708  internalId_.betaClassic_ /= sumTkPt;
709  internalId_.betaStarClassic_ /= sumTkPt;
710  } else {
711  assert(internalId_.beta_ == 0. && internalId_.betaStar_ == 0. && internalId_.betaClassic_ == 0. &&
712  internalId_.betaStarClassic_ == 0.);
713  }
714 
715  if (cache_->runMvas()) {
716  runMva();
717  }
718 
720 }
float puppiWeight() const
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
reco::GsfTrackRef gsfTrackRef() const
Definition: PFCandidate.cc:462
AlgoGBRForestsAndConstants const * cache_
int32_t *__restrict__ iv
float neutralHadronEnergy() const
neutralHadronEnergy
Definition: PFJet.h:99
double pt() const final
transverse momentum
int chargedMultiplicity() const
chargedMultiplicity
Definition: PFJet.h:152
int chargedMultiplicity() const
chargedMultiplicity
Definition: Jet.h:746
float chargedEmEnergy() const
chargedEmEnergy
Definition: PFJet.h:139
float neutralEmEnergy() const
neutralEmEnergy
Definition: PFJet.h:147
virtual double pt() const =0
transverse momentum
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
Definition: weight.py:1
const PVAssoc fromPV(size_t ipv=0) const
int neutralMultiplicity() const
neutralMultiplicity
Definition: Jet.h:466
const Track * bestTrack() const override
Definition: Muon.h:58
int neutralMultiplicity() const
neutralMultiplicity
Definition: PFJet.h:154
assert(be >=bs)
Jets made from PFObjects.
Definition: PFJet.h:20
float chargedHadronEnergy() const
chargedHadronEnergy
Definition: Jet.h:696
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:622
PileupJetIdentifier internalId_
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
T sqrt(T t)
Definition: SSEVec.h:19
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
void assign(const std::vector< float > &vec, float &a, float &b, float &c, float &d)
virtual int charge() const =0
electric charge
Jet correctedJet(const std::string &level, const std::string &flavor="none", const std::string &set="") const
float chargedEmEnergy() const
chargedEmEnergy
Definition: Jet.h:716
reco::MuonRef muonRef() const
Definition: PFCandidate.cc:443
T const * get() const
Returns C++ pointer to the item.
Definition: Ptr.h:139
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
virtual int pdgId() const =0
PDG identifier.
float neutralHadronEnergy() const
neutralHadronEnergy
Definition: Jet.h:706
void setPtEtaPhi(const reco::Candidate &p, float &pt, float &eta, float &phi)
part
Definition: HCALResponse.h:20
Analysis-level calorimeter jet class.
Definition: Jet.h:77
float neutralEmEnergy() const
neutralEmEnergy
Definition: Jet.h:726
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:41
float chargedHadronEnergy() const
chargedHadronEnergy
Definition: PFJet.h:95
virtual const Track * bestTrack() const
Definition: Candidate.h:268
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:232
reco::TrackRef trackRef() const
Definition: PFCandidate.cc:430
virtual float dxy() const
dxy with respect to the PV ref
virtual float dz(size_t ipv=0) const
dz with respect to the PV[ipv]
Log< level::Warning, false > LogWarning
virtual double eta() const =0
momentum pseudorapidity
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:608

◆ computeMva()

PileupJetIdentifier PileupJetIdAlgo::computeMva ( )

Definition at line 255 of file PileupJetIdAlgo.cc.

References internalId_, and runMva().

Referenced by PileupJetIdProducer::produce().

255  {
256  runMva();
258 }
PileupJetIdentifier internalId_

◆ dumpVariables()

std::string PileupJetIdAlgo::dumpVariables ( ) const

Definition at line 723 of file PileupJetIdAlgo.cc.

References MillePedeFileConverter_cfg::out, and variables_.

723  {
724  std::stringstream out;
725  for (variables_list_t::const_iterator it = variables_.begin(); it != variables_.end(); ++it) {
726  out << std::setw(15) << it->first << std::setw(3) << "=" << std::setw(5) << *it->second.first << " ("
727  << std::setw(5) << it->second.second << ")" << std::endl;
728  }
729  return out.str();
730 }
variables_list_t variables_

◆ getJetIdKey()

std::pair< int, int > PileupJetIdAlgo::getJetIdKey ( float  jetPt,
float  jetEta 
)

Definition at line 197 of file PileupJetIdAlgo.cc.

References funct::abs(), reco::btau::jetEta, and reco::btau::jetPt.

Referenced by computeCutIDflag(), and computeIDflag().

197  {
198  int ptId = 0;
199  if (jetPt >= 10 && jetPt < 20)
200  ptId = 1;
201  if (jetPt >= 20 && jetPt < 30)
202  ptId = 2;
203  if (jetPt >= 30 && jetPt < 40)
204  ptId = 3;
205  if (jetPt >= 40)
206  ptId = 4;
207 
208  int etaId = 0;
209  if (std::abs(jetEta) >= 2.5 && std::abs(jetEta) < 2.75)
210  etaId = 1;
211  if (std::abs(jetEta) >= 2.75 && std::abs(jetEta) < 3.0)
212  etaId = 2;
213  if (std::abs(jetEta) >= 3.0 && std::abs(jetEta) < 5.0)
214  etaId = 3;
215 
216  return std::pair<int, int>(ptId, etaId);
217 }
Abs< T >::type abs(const T &t)
Definition: Abs.h:22

◆ getMVAval()

float PileupJetIdAlgo::getMVAval ( const std::vector< std::string > &  varList,
const std::unique_ptr< const GBRForest > &  reader 
)

Definition at line 158 of file PileupJetIdAlgo.cc.

References DQM::reader, trigObjTnPSource_cfi::var, and variables_.

Referenced by runMva().

159  {
160  std::vector<float> vars;
161  for (std::vector<std::string>::const_iterator it = varList.begin(); it != varList.end(); ++it) {
162  std::pair<float*, float> var = variables_.at(*it);
163  vars.push_back(*var.first);
164  }
165  return reader->GetClassifier(vars.data());
166 }
reader
Definition: DQM.py:105
variables_list_t variables_
vars
Definition: DeepTauId.cc:30

◆ getVariables()

const variables_list_t& PileupJetIdAlgo::getVariables ( ) const
inline

const PileupJetIdentifier::variables_list_t & getVariables() const { return variables_; };

Definition at line 49 of file PileupJetIdAlgo.h.

References variables_.

49 { return variables_; };
variables_list_t variables_

◆ initVariables()

void PileupJetIdAlgo::initVariables ( )
protected

Definition at line 746 of file PileupJetIdAlgo.cc.

References HLT_2022v11_cff::beta, BeamSpotFakeParameters_cfi::betaStar, d0, METSignificanceParams_cfi::dRMatch, PileupJetIdentifier::idFlag_, INIT_VARIABLE, internalId_, reco::btau::jetEta, reco::btau::jetPhi, reco::btau::jetPt, LHEJetFilter_cfi::jetR, large_val, beam_dqm_sourceclient-live_cfg::mva, HLT_2022v11_cff::nCharged, jetsAK4_CHS_cff::ptD, rho, and TtFullHadEvtBuilder_cfi::sumPt.

Referenced by PileupJetIdAlgo().

746  {
747  internalId_.idFlag_ = 0;
748  INIT_VARIABLE(mva, "", -100.);
749  //INIT_VARIABLE(jetPt , "jspt_1", 0.);
750  //INIT_VARIABLE(jetEta , "jseta_1", large_val);
751  INIT_VARIABLE(jetPt, "", 0.);
753  INIT_VARIABLE(jetPhi, "jsphi_1", large_val);
754  INIT_VARIABLE(jetM, "jm_1", 0.);
755 
756  INIT_VARIABLE(nCharged, "", 0.);
757  INIT_VARIABLE(nNeutrals, "", 0.);
758 
759  INIT_VARIABLE(chgEMfrac, "", 0.);
760  INIT_VARIABLE(neuEMfrac, "", 0.);
761  INIT_VARIABLE(chgHadrfrac, "", 0.);
762  INIT_VARIABLE(neuHadrfrac, "", 0.);
763 
764  INIT_VARIABLE(d0, "jd0_1", -1000.);
765  INIT_VARIABLE(dZ, "jdZ_1", -1000.);
766  //INIT_VARIABLE(nParticles , "npart_1" , 0.);
767  INIT_VARIABLE(nParticles, "", 0.);
768 
769  INIT_VARIABLE(leadPt, "lpt_1", 0.);
770  INIT_VARIABLE(leadEta, "leta_1", large_val);
771  INIT_VARIABLE(leadPhi, "lphi_1", large_val);
772  INIT_VARIABLE(secondPt, "spt_1", 0.);
773  INIT_VARIABLE(secondEta, "seta_1", large_val);
774  INIT_VARIABLE(secondPhi, "sphi_1", large_val);
775  INIT_VARIABLE(leadNeutPt, "lnept_1", 0.);
776  INIT_VARIABLE(leadNeutEta, "lneeta_1", large_val);
777  INIT_VARIABLE(leadNeutPhi, "lnephi_1", large_val);
778  INIT_VARIABLE(leadEmPt, "lempt_1", 0.);
779  INIT_VARIABLE(leadEmEta, "lemeta_1", large_val);
780  INIT_VARIABLE(leadEmPhi, "lemphi_1", large_val);
781  INIT_VARIABLE(leadChPt, "lchpt_1", 0.);
782  INIT_VARIABLE(leadChEta, "lcheta_1", large_val);
783  INIT_VARIABLE(leadChPhi, "lchphi_1", large_val);
784  INIT_VARIABLE(leadFrac, "lLfr_1", 0.);
785 
786  INIT_VARIABLE(dRLeadCent, "drlc_1", 0.);
787  INIT_VARIABLE(dRLead2nd, "drls_1", 0.);
788  INIT_VARIABLE(dRMean, "drm_1", 0.);
789  INIT_VARIABLE(dRMean, "", 0.);
790  INIT_VARIABLE(pull, "", 0.);
791  INIT_VARIABLE(dRMeanNeut, "drmne_1", 0.);
792  INIT_VARIABLE(dRMeanEm, "drem_1", 0.);
793  INIT_VARIABLE(dRMeanCh, "drch_1", 0.);
794  INIT_VARIABLE(dR2Mean, "", 0.);
795 
796  INIT_VARIABLE(ptD, "", 0.);
797  INIT_VARIABLE(ptMean, "", 0.);
798  INIT_VARIABLE(ptRMS, "", 0.);
799  INIT_VARIABLE(pt2A, "", 0.);
800  INIT_VARIABLE(ptDCh, "", 0.);
801  INIT_VARIABLE(ptDNe, "", 0.);
802  INIT_VARIABLE(sumPt, "", 0.);
803  INIT_VARIABLE(sumChPt, "", 0.);
804  INIT_VARIABLE(sumNePt, "", 0.);
805 
806  INIT_VARIABLE(secondFrac, "", 0.);
807  INIT_VARIABLE(thirdFrac, "", 0.);
808  INIT_VARIABLE(fourthFrac, "", 0.);
809 
810  INIT_VARIABLE(leadChFrac, "", 0.);
811  INIT_VARIABLE(secondChFrac, "", 0.);
812  INIT_VARIABLE(thirdChFrac, "", 0.);
813  INIT_VARIABLE(fourthChFrac, "", 0.);
814 
815  INIT_VARIABLE(leadNeutFrac, "", 0.);
816  INIT_VARIABLE(secondNeutFrac, "", 0.);
817  INIT_VARIABLE(thirdNeutFrac, "", 0.);
818  INIT_VARIABLE(fourthNeutFrac, "", 0.);
819 
820  INIT_VARIABLE(leadEmFrac, "", 0.);
821  INIT_VARIABLE(secondEmFrac, "", 0.);
822  INIT_VARIABLE(thirdEmFrac, "", 0.);
823  INIT_VARIABLE(fourthEmFrac, "", 0.);
824 
825  INIT_VARIABLE(jetW, "", 1.);
826  INIT_VARIABLE(etaW, "", 1.);
827  INIT_VARIABLE(phiW, "", 1.);
828 
829  INIT_VARIABLE(majW, "", 1.);
830  INIT_VARIABLE(minW, "", 1.);
831 
832  INIT_VARIABLE(frac01, "", 0.);
833  INIT_VARIABLE(frac02, "", 0.);
834  INIT_VARIABLE(frac03, "", 0.);
835  INIT_VARIABLE(frac04, "", 0.);
836  INIT_VARIABLE(frac05, "", 0.);
837  INIT_VARIABLE(frac06, "", 0.);
838  INIT_VARIABLE(frac07, "", 0.);
839 
840  INIT_VARIABLE(chFrac01, "", 0.);
841  INIT_VARIABLE(chFrac02, "", 0.);
842  INIT_VARIABLE(chFrac03, "", 0.);
843  INIT_VARIABLE(chFrac04, "", 0.);
844  INIT_VARIABLE(chFrac05, "", 0.);
845  INIT_VARIABLE(chFrac06, "", 0.);
846  INIT_VARIABLE(chFrac07, "", 0.);
847 
848  INIT_VARIABLE(neutFrac01, "", 0.);
849  INIT_VARIABLE(neutFrac02, "", 0.);
850  INIT_VARIABLE(neutFrac03, "", 0.);
851  INIT_VARIABLE(neutFrac04, "", 0.);
852  INIT_VARIABLE(neutFrac05, "", 0.);
853  INIT_VARIABLE(neutFrac06, "", 0.);
854  INIT_VARIABLE(neutFrac07, "", 0.);
855 
856  INIT_VARIABLE(emFrac01, "", 0.);
857  INIT_VARIABLE(emFrac02, "", 0.);
858  INIT_VARIABLE(emFrac03, "", 0.);
859  INIT_VARIABLE(emFrac04, "", 0.);
860  INIT_VARIABLE(emFrac05, "", 0.);
861  INIT_VARIABLE(emFrac06, "", 0.);
862  INIT_VARIABLE(emFrac07, "", 0.);
863 
864  INIT_VARIABLE(beta, "", 0.);
865  INIT_VARIABLE(betaStar, "", 0.);
866  INIT_VARIABLE(betaClassic, "", 0.);
867  INIT_VARIABLE(betaStarClassic, "", 0.);
868 
869  INIT_VARIABLE(nvtx, "", 0.);
870  INIT_VARIABLE(rho, "", 0.);
871  INIT_VARIABLE(nTrueInt, "", 0.);
872 
873  INIT_VARIABLE(jetR, "", 0.);
874  INIT_VARIABLE(jetRchg, "", 0.);
875  INIT_VARIABLE(dRMatch, "", 0.);
876 }
const float large_val
#define INIT_VARIABLE(NAME, TMVANAME, VAL)
PileupJetIdentifier internalId_
static constexpr float d0

◆ method()

const std::string PileupJetIdAlgo::method ( ) const
inline

Definition at line 37 of file PileupJetIdAlgo.h.

References cache_, and PileupJetIdAlgo::AlgoGBRForestsAndConstants::tmvaMethod().

37 { return cache_->tmvaMethod(); }
AlgoGBRForestsAndConstants const * cache_
std::string const & tmvaMethod() const

◆ resetVariables()

void PileupJetIdAlgo::resetVariables ( )
protected

Definition at line 733 of file PileupJetIdAlgo.cc.

References PileupJetIdentifier::idFlag_, internalId_, and variables_.

Referenced by computeIdVariables().

733  {
734  internalId_.idFlag_ = 0;
735  for (variables_list_t::iterator it = variables_.begin(); it != variables_.end(); ++it) {
736  *it->second.first = it->second.second;
737  }
738 }
PileupJetIdentifier internalId_
variables_list_t variables_

◆ runMva()

void PileupJetIdAlgo::runMva ( )
protected

Definition at line 168 of file PileupJetIdAlgo.cc.

References funct::abs(), cache_, computeCutIDflag(), computeIDflag(), PileupJetIdAlgo::AlgoGBRForestsAndConstants::cutBased(), PileupJetIdAlgo::AlgoGBRForestsAndConstants::etaBinnedWeights(), PileupJetIdAlgo::AlgoGBRForestsAndConstants::etaReader(), getMVAval(), PileupJetIdentifier::idFlag_, internalId_, PileupJetIdAlgo::AlgoGBRForestsAndConstants::jEtaMax(), PileupJetIdAlgo::AlgoGBRForestsAndConstants::jEtaMin(), PileupJetIdentifier::mva_, PileupJetIdAlgo::AlgoGBRForestsAndConstants::nEtaBins(), PileupJetIdAlgo::AlgoGBRForestsAndConstants::reader(), PileupJetIdAlgo::AlgoGBRForestsAndConstants::tmvaEtaVariables(), PileupJetIdAlgo::AlgoGBRForestsAndConstants::tmvaVariables(), and findQualityFiles::v.

Referenced by computeIdVariables(), and computeMva().

168  {
169  if (cache_->cutBased()) {
171  internalId_.betaStarClassic_, internalId_.dR2Mean_, internalId_.nvtx_, internalId_.jetPt_, internalId_.jetEta_);
172  } else {
173  if (std::abs(internalId_.jetEta_) >= 5.0) {
174  internalId_.mva_ = -2.;
175  } else {
176  if (cache_->etaBinnedWeights()) {
177  if (std::abs(internalId_.jetEta_) > cache_->jEtaMax().at(cache_->nEtaBins() - 1)) {
178  internalId_.mva_ = -2.;
179  } else {
180  for (int v = 0; v < cache_->nEtaBins(); v++) {
181  if (std::abs(internalId_.jetEta_) >= cache_->jEtaMin().at(v) &&
182  std::abs(internalId_.jetEta_) < cache_->jEtaMax().at(v)) {
184  break;
185  }
186  }
187  }
188  } else {
190  }
191  }
193  }
194 }
std::vector< double > const & jEtaMin() const
AlgoGBRForestsAndConstants const * cache_
int computeCutIDflag(float betaStarClassic, float dR2Mean, float nvtx, float jetPt, float jetEta)
std::vector< std::vector< std::string > > const & tmvaEtaVariables() const
PileupJetIdentifier internalId_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< std::string > const & tmvaVariables() const
int computeIDflag(float mva, float jetPt, float jetEta)
std::vector< std::unique_ptr< const GBRForest > > const & etaReader() const
std::unique_ptr< const GBRForest > const & reader() const
std::vector< double > const & jEtaMax() const
float getMVAval(const std::vector< std::string > &, const std::unique_ptr< const GBRForest > &)

◆ set()

void PileupJetIdAlgo::set ( const PileupJetIdentifier id)

Definition at line 154 of file PileupJetIdAlgo.cc.

References triggerObjects_cff::id, and internalId_.

Referenced by PileupJetIdProducer::produce().

154 { internalId_ = id; }
PileupJetIdentifier internalId_

Member Data Documentation

◆ cache_

AlgoGBRForestsAndConstants const* PileupJetIdAlgo::cache_
protected

Definition at line 106 of file PileupJetIdAlgo.h.

Referenced by computeIDflag(), computeIdVariables(), method(), and runMva().

◆ internalId_

PileupJetIdentifier PileupJetIdAlgo::internalId_
protected

◆ variables_

variables_list_t PileupJetIdAlgo::variables_
protected

Definition at line 105 of file PileupJetIdAlgo.h.

Referenced by dumpVariables(), getMVAval(), getVariables(), and resetVariables().