CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Attributes
pat::PATIsolatedTrackProducer Class Reference
Inheritance diagram for pat::PATIsolatedTrackProducer:
edm::stream::EDProducer<>

Public Types

typedef pat::IsolatedTrack::LorentzVector LorentzVector
 
- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Public Member Functions

void getCaloJetEnergy (const LorentzVector &, const reco::CaloJetCollection *, float &, float &) const
 
float getDeDx (const reco::DeDxHitInfo *hitInfo, bool doPixel, bool doStrip) const
 
void getIsolation (const LorentzVector &p4, const pat::PackedCandidateCollection *pc, int pc_idx, pat::PFIsolation &iso, pat::PFIsolation &miniiso) const
 
void getNearestPCRef (const LorentzVector &p4, const pat::PackedCandidateCollection *pc, int pc_idx, int &pc_ref_idx) const
 
bool getPFLeptonOverlap (const LorentzVector &p4, const pat::PackedCandidateCollection *pc) const
 
float getPFNeutralSum (const LorentzVector &p4, const pat::PackedCandidateCollection *pc, int pc_idx) const
 
TrackDetMatchInfo getTrackDetMatchInfo (const edm::Event &, const edm::EventSetup &, const reco::Track &)
 
 PATIsolatedTrackProducer (const edm::ParameterSet &)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
 ~PATIsolatedTrackProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Private Attributes

const float absIso_cut_
 
const bool addPrescaledDeDxTracks_
 
const float caloJet_DR_
 
const edm::EDGetTokenT< reco::CaloJetCollectioncaloJets_
 
const edm::EDGetTokenT< reco::DeDxHitInfoAssgt2dedxHitInfo_
 
const edm::EDGetTokenT< edm::ValueMap< int > > gt2dedxHitInfoPrescale_
 
const edm::EDGetTokenT< edm::ValueMap< reco::DeDxData > > gt2dedxPixel_
 
const edm::EDGetTokenT< edm::ValueMap< reco::DeDxData > > gt2dedxStrip_
 
const edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > gt2lt_
 
const edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > gt2pc_
 
const edm::EDGetTokenT< reco::TrackCollectiongt_
 
const edm::EDGetTokenT< pat::PackedCandidateCollectionlt_
 
std::vector< double > miniIsoParams_
 
const float miniRelIso_cut_
 
const edm::EDGetTokenT< edm::Association< reco::PFCandidateCollection > > pc2pf_
 
const edm::EDGetTokenT< pat::PackedCandidateCollectionpc_
 
const float pcRefNearest_DR_
 
const float pcRefNearest_pTmin_
 
const float pfIsolation_DR_
 
const float pfIsolation_DZ_
 
const float pflepoverlap_DR_
 
const float pflepoverlap_pTmin_
 
const float pfneutralsum_DR_
 
const float pT_cut_
 
const float pT_cut_noIso_
 
const edm::EDGetTokenT< reco::VertexCollectionpv_
 
const float relIso_cut_
 
const bool saveDeDxHitInfo_
 
StringCutObjectSelector< pat::IsolatedTracksaveDeDxHitInfoCut_
 
TrackDetectorAssociator trackAssociator_
 
TrackAssociatorParameters trackAssocParameters_
 
const bool usePrecomputedDeDxPixel_
 
const bool usePrecomputedDeDxStrip_
 

Detailed Description

Definition at line 44 of file PATIsolatedTrackProducer.cc.

Member Typedef Documentation

Definition at line 46 of file PATIsolatedTrackProducer.cc.

Constructor & Destructor Documentation

pat::PATIsolatedTrackProducer::PATIsolatedTrackProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 114 of file PATIsolatedTrackProducer.cc.

References edm::ParameterSet::getParameter(), TrackAssociatorParameters::loadParameters(), miniIsoParams_, saveDeDxHitInfo_, trackAssociator_, trackAssocParameters_, and TrackDetectorAssociator::useDefaultPropagator().

115  : pc_(consumes<pat::PackedCandidateCollection>(iConfig.getParameter<edm::InputTag>("packedPFCandidates"))),
116  lt_(consumes<pat::PackedCandidateCollection>(iConfig.getParameter<edm::InputTag>("lostTracks"))),
117  gt_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("generalTracks"))),
118  pv_(consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("primaryVertices"))),
120  iConfig.getParameter<edm::InputTag>("packedPFCandidates"))),
122  iConfig.getParameter<edm::InputTag>("lostTracks"))),
124  iConfig.getParameter<edm::InputTag>("packedPFCandidates"))),
125  caloJets_(consumes<reco::CaloJetCollection>(iConfig.getParameter<edm::InputTag>("caloJets"))),
126  gt2dedxStrip_(consumes<edm::ValueMap<reco::DeDxData>>(iConfig.getParameter<edm::InputTag>("dEdxDataStrip"))),
127  gt2dedxPixel_(consumes<edm::ValueMap<reco::DeDxData>>(iConfig.getParameter<edm::InputTag>("dEdxDataPixel"))),
128  gt2dedxHitInfo_(consumes<reco::DeDxHitInfoAss>(iConfig.getParameter<edm::InputTag>("dEdxHitInfo"))),
129  addPrescaledDeDxTracks_(iConfig.getParameter<bool>("addPrescaledDeDxTracks")),
131  iConfig.getParameter<edm::InputTag>("dEdxHitInfoPrescale"))
133  usePrecomputedDeDxStrip_(iConfig.getParameter<bool>("usePrecomputedDeDxStrip")),
134  usePrecomputedDeDxPixel_(iConfig.getParameter<bool>("usePrecomputedDeDxPixel")),
135  pT_cut_(iConfig.getParameter<double>("pT_cut")),
136  pT_cut_noIso_(iConfig.getParameter<double>("pT_cut_noIso")),
137  pfIsolation_DR_(iConfig.getParameter<double>("pfIsolation_DR")),
138  pfIsolation_DZ_(iConfig.getParameter<double>("pfIsolation_DZ")),
139  absIso_cut_(iConfig.getParameter<double>("absIso_cut")),
140  relIso_cut_(iConfig.getParameter<double>("relIso_cut")),
141  miniRelIso_cut_(iConfig.getParameter<double>("miniRelIso_cut")),
142  caloJet_DR_(iConfig.getParameter<double>("caloJet_DR")),
143  pflepoverlap_DR_(iConfig.getParameter<double>("pflepoverlap_DR")),
144  pflepoverlap_pTmin_(iConfig.getParameter<double>("pflepoverlap_pTmin")),
145  pcRefNearest_DR_(iConfig.getParameter<double>("pcRefNearest_DR")),
146  pcRefNearest_pTmin_(iConfig.getParameter<double>("pcRefNearest_pTmin")),
147  pfneutralsum_DR_(iConfig.getParameter<double>("pfneutralsum_DR")),
148  saveDeDxHitInfo_(iConfig.getParameter<bool>("saveDeDxHitInfo")),
149  saveDeDxHitInfoCut_(iConfig.getParameter<std::string>("saveDeDxHitInfoCut")) {
150  // TrackAssociator parameters
151  edm::ParameterSet parameters = iConfig.getParameter<edm::ParameterSet>("TrackAssociatorParameters");
152  edm::ConsumesCollector iC = consumesCollector();
153  trackAssocParameters_.loadParameters(parameters, iC);
154 
156 
157  miniIsoParams_ = iConfig.getParameter<std::vector<double>>("miniIsoParams");
158  if (miniIsoParams_.size() != 3)
159  throw cms::Exception("ParameterError") << "miniIsoParams must have exactly 3 elements.\n";
160 
161  produces<pat::IsolatedTrackCollection>();
162 
163  if (saveDeDxHitInfo_) {
164  produces<reco::DeDxHitInfoCollection>();
165  produces<reco::DeDxHitInfoAss>();
166  }
167 }
T getParameter(std::string const &) const
const edm::EDGetTokenT< reco::TrackCollection > gt_
const edm::EDGetTokenT< edm::ValueMap< reco::DeDxData > > gt2dedxStrip_
const edm::EDGetTokenT< edm::ValueMap< int > > gt2dedxHitInfoPrescale_
TrackDetectorAssociator trackAssociator_
void useDefaultPropagator()
use the default propagator
void loadParameters(const edm::ParameterSet &, edm::ConsumesCollector &)
const edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > gt2pc_
const edm::EDGetTokenT< reco::DeDxHitInfoAss > gt2dedxHitInfo_
TrackAssociatorParameters trackAssocParameters_
const edm::EDGetTokenT< pat::PackedCandidateCollection > pc_
StringCutObjectSelector< pat::IsolatedTrack > saveDeDxHitInfoCut_
const edm::EDGetTokenT< edm::Association< reco::PFCandidateCollection > > pc2pf_
const edm::EDGetTokenT< pat::PackedCandidateCollection > lt_
const edm::EDGetTokenT< reco::VertexCollection > pv_
const edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > gt2lt_
const edm::EDGetTokenT< reco::CaloJetCollection > caloJets_
const edm::EDGetTokenT< edm::ValueMap< reco::DeDxData > > gt2dedxPixel_
pat::PATIsolatedTrackProducer::~PATIsolatedTrackProducer ( )
override

Definition at line 169 of file PATIsolatedTrackProducer.cc.

169 {}

Member Function Documentation

void pat::PATIsolatedTrackProducer::getCaloJetEnergy ( const LorentzVector p4,
const reco::CaloJetCollection cJets,
float &  caloJetEm,
float &  caloJetHad 
) const

Definition at line 750 of file PATIsolatedTrackProducer.cc.

References caloJet_DR_, DEFINE_FWK_MODULE, PbPb_ZMuSkimMuonDPG_cff::deltaR, HGC3DClusterGenMatchSelector_cfi::dR, reco::CaloJet::emEnergyInEB(), reco::CaloJet::emEnergyInEE(), reco::CaloJet::emEnergyInHF(), reco::CaloJet::hadEnergyInHB(), reco::CaloJet::hadEnergyInHE(), reco::CaloJet::hadEnergyInHF(), mps_fire::i, and p4.

Referenced by produce().

753  {
754  float nearestDR = 999;
755  int ind = -1;
756  for (unsigned int i = 0; i < cJets->size(); i++) {
757  float dR = deltaR(cJets->at(i).p4(), p4);
758  if (dR < caloJet_DR_ && dR < nearestDR) {
759  nearestDR = dR;
760  ind = i;
761  }
762  }
763 
764  if (ind == -1) {
765  caloJetEm = 0;
766  caloJetHad = 0;
767  } else {
768  const reco::CaloJet& cJet = cJets->at(ind);
769  caloJetEm = cJet.emEnergyInEB() + cJet.emEnergyInEE() + cJet.emEnergyInHF();
770  caloJetHad = cJet.hadEnergyInHB() + cJet.hadEnergyInHE() + cJet.hadEnergyInHF();
771  }
772 }
float hadEnergyInHE() const
Definition: CaloJet.h:103
float emEnergyInEE() const
Definition: CaloJet.h:109
Jets made from CaloTowers.
Definition: CaloJet.h:27
float emEnergyInHF() const
Definition: CaloJet.h:111
double p4[4]
Definition: TauolaWrapper.h:92
float emEnergyInEB() const
Definition: CaloJet.h:107
float hadEnergyInHB() const
Definition: CaloJet.h:99
float hadEnergyInHF() const
Definition: CaloJet.h:105
float pat::PATIsolatedTrackProducer::getDeDx ( const reco::DeDxHitInfo hitInfo,
bool  doPixel,
bool  doStrip 
) const

Definition at line 692 of file PATIsolatedTrackProducer.cc.

References reco::DeDxHitInfo::charge(), mps_fire::i, fastTrackerRecHitType::isPixel(), reco::DeDxHitInfo::pathlength(), reco::DeDxHitInfo::pixelCluster(), funct::pow(), mps_fire::result, DeDxTools::shapeSelection(), reco::DeDxHitInfo::size(), findQualityFiles::size, and reco::DeDxHitInfo::stripCluster().

Referenced by produce().

692  {
693  if (hitInfo == nullptr) {
694  return -1;
695  }
696 
697  std::vector<float> charge_vec;
698  for (unsigned int ih = 0; ih < hitInfo->size(); ih++) {
699  bool isPixel = (hitInfo->pixelCluster(ih) != nullptr);
700  bool isStrip = (hitInfo->stripCluster(ih) != nullptr);
701 
702  if (isPixel && !doPixel)
703  continue;
704  if (isStrip && !doStrip)
705  continue;
706 
707  // probably shouldn't happen
708  if (!isPixel && !isStrip)
709  continue;
710 
711  // shape selection for strips
712  if (isStrip && !DeDxTools::shapeSelection(*(hitInfo->stripCluster(ih))))
713  continue;
714 
715  float Norm = 0;
716  if (isPixel)
717  Norm = 3.61e-06; //compute the normalization factor to get the energy in MeV/mm
718  if (isStrip)
719  Norm = 3.61e-06 * 265;
720 
721  //save the dE/dx in MeV/mm to a vector.
722  charge_vec.push_back(Norm * hitInfo->charge(ih) / hitInfo->pathlength(ih));
723  }
724 
725  int size = charge_vec.size();
726  float result = 0.0;
727 
728  //build the harmonic 2 dE/dx estimator
729  float expo = -2;
730  for (int i = 0; i < size; i++) {
731  result += pow(charge_vec[i], expo);
732  }
733  result = (size > 0) ? pow(result / size, 1. / expo) : 0.0;
734 
735  return result;
736 }
size
Write out results.
float charge(size_t i) const
Definition: DeDxHitInfo.h:42
bool shapeSelection(const SiStripCluster &ampls)
Definition: DeDxTools.cc:9
const SiPixelCluster * pixelCluster(size_t i) const
Definition: DeDxHitInfo.h:46
size_t size() const
Definition: DeDxHitInfo.h:41
float pathlength(size_t i) const
Definition: DeDxHitInfo.h:43
bool isPixel(HitType hitType)
const SiStripCluster * stripCluster(size_t i) const
Definition: DeDxHitInfo.h:66
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:30
void pat::PATIsolatedTrackProducer::getIsolation ( const LorentzVector p4,
const pat::PackedCandidateCollection pc,
int  pc_idx,
pat::PFIsolation iso,
pat::PFIsolation miniiso 
) const

Definition at line 542 of file PATIsolatedTrackProducer.cc.

References funct::abs(), PbPb_ZMuSkimMuonDPG_cff::deltaR, flavorHistoryFilter_cfi::dr, isotracks_cff::fromPV, SiStripPI::max, min(), miniIsoParams_, muons2muons_cfi::PFIsolation, pfIsolation_DR_, pfIsolation_DZ_, and DiDispStaMuonMonitor_cfi::pt.

Referenced by produce().

546  {
547  float chiso = 0, nhiso = 0, phiso = 0, puiso = 0; // standard isolation
548  float chmiso = 0, nhmiso = 0, phmiso = 0, pumiso = 0; // mini isolation
549  float miniDR = std::max(miniIsoParams_[0], std::min(miniIsoParams_[1], miniIsoParams_[2] / p4.pt()));
550  for (pat::PackedCandidateCollection::const_iterator pf_it = pc->begin(); pf_it != pc->end(); pf_it++) {
551  if (int(pf_it - pc->begin()) == pc_idx) //don't count itself
552  continue;
553  int id = std::abs(pf_it->pdgId());
554  bool fromPV = (pf_it->fromPV() > 1 || fabs(pf_it->dz()) < pfIsolation_DZ_);
555  float pt = pf_it->p4().pt();
556  float dr = deltaR(p4, pf_it->p4());
557 
558  if (dr < pfIsolation_DR_) {
559  // charged cands from PV get added to trackIso
560  if (id == 211 && fromPV)
561  chiso += pt;
562  // charged cands not from PV get added to pileup iso
563  else if (id == 211)
564  puiso += pt;
565  // neutral hadron iso
566  if (id == 130)
567  nhiso += pt;
568  // photon iso
569  if (id == 22)
570  phiso += pt;
571  }
572  // same for mini isolation
573  if (dr < miniDR) {
574  if (id == 211 && fromPV)
575  chmiso += pt;
576  else if (id == 211)
577  pumiso += pt;
578  if (id == 130)
579  nhmiso += pt;
580  if (id == 22)
581  phmiso += pt;
582  }
583  }
584 
585  iso = pat::PFIsolation(chiso, nhiso, phiso, puiso);
586  miniiso = pat::PFIsolation(chmiso, nhmiso, phmiso, pumiso);
587 }
double p4[4]
Definition: TauolaWrapper.h:92
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
T min(T a, T b)
Definition: MathUtil.h:58
void pat::PATIsolatedTrackProducer::getNearestPCRef ( const LorentzVector p4,
const pat::PackedCandidateCollection pc,
int  pc_idx,
int &  pc_ref_idx 
) const

Definition at line 624 of file PATIsolatedTrackProducer.cc.

References funct::abs(), ALCARECOTkAlJpsiMuMu_cff::charge, PbPb_ZMuSkimMuonDPG_cff::deltaR, flavorHistoryFilter_cfi::dr, isotracks_cff::fromPV, createfilelist::int, pcRefNearest_DR_, pcRefNearest_pTmin_, pfIsolation_DZ_, and DiDispStaMuonMonitor_cfi::pt.

Referenced by produce().

627  {
628  float dr_min = pcRefNearest_DR_;
629  float dr_min_pu = pcRefNearest_DR_;
630  int pc_ref_idx_pu = -1;
631  for (pat::PackedCandidateCollection::const_iterator pf_it = pc->begin(); pf_it != pc->end(); pf_it++) {
632  if (int(pf_it - pc->begin()) == pc_idx) //don't count itself
633  continue;
634  int charge = std::abs(pf_it->charge());
635  bool fromPV = (pf_it->fromPV() > 1 || fabs(pf_it->dz()) < pfIsolation_DZ_);
636  float pt = pf_it->p4().pt();
637  float dr = deltaR(p4, pf_it->p4());
638  if (charge == 0) // exclude neutral candidates
639  continue;
640  if (pt < pcRefNearest_pTmin_) // exclude candidates w/ pT below threshold
641  continue;
642  if (dr > dr_min && dr > dr_min_pu) // exclude too far candidates
643  continue;
644 
645  if (fromPV) { // Priority to candidates from PV
646  if (dr < dr_min) {
647  dr_min = dr;
648  pc_ref_idx = int(pf_it - pc->begin());
649  }
650  } else { // Otherwise, store candidate from non-PV if no candidate from PV found
651  if (dr < dr_min_pu) {
652  dr_min_pu = dr;
653  pc_ref_idx_pu = int(pf_it - pc->begin());
654  }
655  }
656  }
657 
658  if (pc_ref_idx == -1 &&
659  pc_ref_idx_pu != -1) // If no candidate from PV was found, store candidate from non-PV (if found)
660  pc_ref_idx = pc_ref_idx_pu;
661 }
double p4[4]
Definition: TauolaWrapper.h:92
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool pat::PATIsolatedTrackProducer::getPFLeptonOverlap ( const LorentzVector p4,
const pat::PackedCandidateCollection pc 
) const

Definition at line 590 of file PATIsolatedTrackProducer.cc.

References funct::abs(), ALCARECOTkAlJpsiMuMu_cff::charge, PbPb_ZMuSkimMuonDPG_cff::deltaR, flavorHistoryFilter_cfi::dr, isotracks_cff::fromPV, triggerObjects_cff::id, packedPFCandidateRefMixer_cfi::pf, pfIsolation_DZ_, pflepoverlap_DR_, pflepoverlap_pTmin_, and DiDispStaMuonMonitor_cfi::pt.

Referenced by produce().

591  {
592  bool isOverlap = false;
593  float dr_min = pflepoverlap_DR_;
594  int id_drmin = 0;
595  for (const auto& pf : *pc) {
596  int id = std::abs(pf.pdgId());
597  int charge = std::abs(pf.charge());
598  bool fromPV = (pf.fromPV() > 1 || std::abs(pf.dz()) < pfIsolation_DZ_);
599  float pt = pf.pt();
600  if (charge == 0) // exclude neutral candidates
601  continue;
602  if (!(fromPV)) // exclude candidates not from PV
603  continue;
604  if (pt < pflepoverlap_pTmin_) // exclude pf candidates w/ pT below threshold
605  continue;
606 
607  float dr = deltaR(p4, pf.p4());
608  if (dr > pflepoverlap_DR_) // exclude pf candidates far from isolated track
609  continue;
610 
611  if (dr < dr_min) {
612  dr_min = dr;
613  id_drmin = id;
614  }
615  }
616 
617  if (dr_min < pflepoverlap_DR_ && (id_drmin == 11 || id_drmin == 13))
618  isOverlap = true;
619 
620  return isOverlap;
621 }
double p4[4]
Definition: TauolaWrapper.h:92
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
float pat::PATIsolatedTrackProducer::getPFNeutralSum ( const LorentzVector p4,
const pat::PackedCandidateCollection pc,
int  pc_idx 
) const

Definition at line 664 of file PATIsolatedTrackProducer.cc.

References funct::abs(), PbPb_ZMuSkimMuonDPG_cff::deltaR, flavorHistoryFilter_cfi::dr, pfneutralsum_DR_, and DiDispStaMuonMonitor_cfi::pt.

Referenced by produce().

666  {
667  float nsum = 0;
668  float nhsum = 0, phsum = 0;
669  for (pat::PackedCandidateCollection::const_iterator pf_it = pc->begin(); pf_it != pc->end(); pf_it++) {
670  if (int(pf_it - pc->begin()) == pc_idx) //don't count itself
671  continue;
672  int id = std::abs(pf_it->pdgId());
673  float pt = pf_it->p4().pt();
674  float dr = deltaR(p4, pf_it->p4());
675 
676  if (dr < pfneutralsum_DR_) {
677  // neutral hadron sum
678  if (id == 130)
679  nhsum += pt;
680  // photon iso
681  if (id == 22)
682  phsum += pt;
683  }
684  }
685 
686  nsum = nhsum + phsum;
687 
688  return nsum;
689 }
double p4[4]
Definition: TauolaWrapper.h:92
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
TrackDetMatchInfo pat::PATIsolatedTrackProducer::getTrackDetMatchInfo ( const edm::Event iEvent,
const edm::EventSetup iSetup,
const reco::Track track 
)

Definition at line 738 of file PATIsolatedTrackProducer.cc.

References TrackDetectorAssociator::associate(), Calorimetry_cff::bField, edm::EventSetup::get(), trajectoryStateTransform::initialFreeState(), trackAssociator_, and trackAssocParameters_.

Referenced by produce().

740  {
742  iSetup.get<IdealMagneticFieldRecord>().get(bField);
743  FreeTrajectoryState initialState = trajectoryStateTransform::initialFreeState(track, &*bField);
744 
745  // can't use the associate() using reco::Track directly, since
746  // track->extra() is non-null but segfaults when trying to use it
747  return trackAssociator_.associate(iEvent, iSetup, trackAssocParameters_, &initialState);
748 }
TrackDetectorAssociator trackAssociator_
TrackAssociatorParameters trackAssocParameters_
T get() const
Definition: EventSetup.h:73
TrackDetMatchInfo associate(const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const AssociatorParameters &)
FreeTrajectoryState initialFreeState(const reco::Track &tk, const MagneticField *field, bool withErr=true)
void pat::PATIsolatedTrackProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 171 of file PATIsolatedTrackProducer.cc.

References absIso_cut_, addPrescaledDeDxTracks_, isolatedTracks_cfi::caloJets, caloJets_, ALCARECOTkAlJpsiMuMu_cff::charge, reco::TrackBase::charge(), pat::PackedCandidate::charge(), pat::PFIsolation::chargedHadronIso(), edm::Association< C >::contains(), TrackDetMatchInfo::crossedEcalIds, TrackDetMatchInfo::crossedHcalIds, spr::deltaEta, SiPixelRawToDigiRegional_cfi::deltaPhi, PVValHelper::dxy, reco::TrackBase::dxy(), pat::PackedCandidate::dxy(), reco::TrackBase::dxyError(), pat::PackedCandidate::dxyError(), PVValHelper::dz, reco::TrackBase::dz(), pat::PackedCandidate::dz(), reco::TrackBase::dzError(), pat::PackedCandidate::dzError(), reco::TrackBase::eta(), trigObjTnPSource_cfi::filler, EcalCondObjectContainer< T >::find(), isotracks_cff::fromPV, pat::PackedCandidate::fromPV(), isolatedTracks_cfi::generalTracks, edm::EventSetup::get(), edm::Ref< C, T, F >::get(), edm::Event::getByToken(), getCaloJetEnergy(), getDeDx(), getIsolation(), getNearestPCRef(), getPFLeptonOverlap(), getPFNeutralSum(), getTrackDetMatchInfo(), reco::JetExtendedAssociation::getValue(), HcalCondObjectContainer< Item >::getValues(), gt2dedxHitInfo_, gt2dedxHitInfoPrescale_, gt2dedxPixel_, gt2dedxStrip_, gt2lt_, gt2pc_, gt_, pat::PackedCandidate::hasTrackDetails(), reco::TrackBase::hitPattern(), AnalysisDataFormats_SUSYBSMObjects::hp, edm::HandleBase::id(), edm::Ref< C, T, F >::id(), createfilelist::int, edm::Ref< C, T, F >::isNonnull(), edm::HandleBase::isValid(), edm::Ref< C, T, F >::key(), lt_, visualization-live-secondInstance_cfg::m, miniRelIso_cut_, eostools::move(), reco::TrackBase::p(), p4, pat::PackedCandidate::p4(), pc2pf_, pc_, EgammaValidation_cff::pdgId, pat::PackedCandidate::pdgId(), reco::TrackBase::phi(), reco::Vertex::position(), edm::Handle< T >::product(), edm::ESHandle< T >::product(), pT_cut_, pT_cut_noIso_, edm::Event::put(), MetAnalyzer::pv(), pv_, FSQDQM_cfi::pvs, reco::TrackBase::px(), reco::TrackBase::py(), reco::TrackBase::pz(), reco::TrackBase::qualityMask(), relIso_cut_, saveDeDxHitInfo_, saveDeDxHitInfoCut_, mathSSE::sqrt(), StandaloneTrackMonitor_cfi::trackQuality, TrackDetMatchInfo::trkGlobPosAtEcal, usePrecomputedDeDxPixel_, and usePrecomputedDeDxStrip_.

171  {
172  // packedPFCandidate collection
174  iEvent.getByToken(pc_, pc_h);
175  const pat::PackedCandidateCollection* pc = pc_h.product();
176 
177  // lostTracks collection
179  iEvent.getByToken(lt_, lt_h);
180  const pat::PackedCandidateCollection* lt = lt_h.product();
181 
182  // generalTracks collection
184  iEvent.getByToken(gt_, gt_h);
186 
187  // get the primary vertex
189  iEvent.getByToken(pv_, pvs);
190  const reco::Vertex& pv = (*pvs)[0];
191 
192  // generalTracks-->packedPFCandidate association
194  iEvent.getByToken(gt2pc_, gt2pc);
195 
196  // generalTracks-->lostTracks association
198  iEvent.getByToken(gt2lt_, gt2lt);
199 
200  // packedPFCandidates-->particleFlow(reco::PFCandidate) association
202  iEvent.getByToken(pc2pf_, pc2pf);
203 
205  iEvent.getByToken(caloJets_, caloJets);
206 
207  // associate generalTracks with their DeDx data (estimator for strip dE/dx)
209  iEvent.getByToken(gt2dedxStrip_, gt2dedxStrip);
210 
211  // associate generalTracks with their DeDx data (estimator for pixel dE/dx)
213  iEvent.getByToken(gt2dedxPixel_, gt2dedxPixel);
214 
215  // associate generalTracks with their DeDx hit info (used to estimate pixel dE/dx)
216  edm::Handle<reco::DeDxHitInfoAss> gt2dedxHitInfo;
217  iEvent.getByToken(gt2dedxHitInfo_, gt2dedxHitInfo);
218  edm::Handle<edm::ValueMap<int>> gt2dedxHitInfoPrescale;
220  iEvent.getByToken(gt2dedxHitInfoPrescale_, gt2dedxHitInfoPrescale);
221  }
222 
224  iSetup.get<HcalChannelQualityRcd>().get("withTopo", hcalQ_h);
225  const HcalChannelQuality* hcalQ = hcalQ_h.product();
226 
228  iSetup.get<EcalChannelStatusRcd>().get(ecalS_h);
229  const EcalChannelStatus* ecalS = ecalS_h.product();
230 
231  auto outDeDxC = std::make_unique<reco::DeDxHitInfoCollection>();
232  std::vector<int> dEdXass;
233 
234  auto outPtrP = std::make_unique<std::vector<pat::IsolatedTrack>>();
235 
236  //add general tracks
237  for (unsigned int igt = 0; igt < generalTracks->size(); igt++) {
238  const reco::Track& gentk = (*gt_h)[igt];
239  reco::TrackRef tkref = reco::TrackRef(gt_h, igt);
240  pat::PackedCandidateRef pcref = (*gt2pc)[tkref];
241  pat::PackedCandidateRef ltref = (*gt2lt)[tkref];
242  const pat::PackedCandidate* pfCand = pcref.get();
243  const pat::PackedCandidate* lostTrack = ltref.get();
244 
245  // Determine if this general track is associated with anything in packedPFCandidates or lostTracks
246  // Sometimes, a track gets associated w/ a neutral pfCand.
247  // In this case, ignore the pfCand and take from lostTracks
248  bool isInPackedCands = (pcref.isNonnull() && pcref.id() == pc_h.id() && pfCand->charge() != 0);
249  bool isInLostTracks = (ltref.isNonnull() && ltref.id() == lt_h.id());
250 
252  pat::PackedCandidateRef refToCand;
253  int pdgId, charge, fromPV;
254  float dz, dxy, dzError, dxyError;
255  int pfCandInd; //to avoid counting packedPFCands in their own isolation
256  int ltCandInd; //to avoid pointing lost track to itself when looking for closest
257 
258  // get the four-momentum and charge
259  if (isInPackedCands) {
260  p4 = pfCand->p4();
261  charge = pfCand->charge();
262  pfCandInd = pcref.key();
263  ltCandInd = -1;
264  } else if (isInLostTracks) {
265  p4 = lostTrack->p4();
266  charge = lostTrack->charge();
267  pfCandInd = -1;
268  ltCandInd = ltref.key();
269  } else {
270  double m = 0.13957018; //assume pion mass
271  double E = sqrt(m * m + gentk.p() * gentk.p());
272  p4.SetPxPyPzE(gentk.px(), gentk.py(), gentk.pz(), E);
273  charge = gentk.charge();
274  pfCandInd = -1;
275  ltCandInd = -1;
276  }
277 
278  int prescaled = 0;
280  const auto& dedxRef = (*gt2dedxHitInfo)[tkref];
281  if (dedxRef.isNonnull()) {
282  prescaled = (*gt2dedxHitInfoPrescale)[dedxRef];
283  }
284  }
285 
286  if (p4.pt() < pT_cut_ && prescaled <= 1)
287  continue;
288  if (charge == 0)
289  continue;
290 
291  // get the isolation of the track
292  pat::PFIsolation isolationDR03;
293  pat::PFIsolation miniIso;
294  getIsolation(p4, pc, pfCandInd, isolationDR03, miniIso);
295 
296  // isolation cut
297  if (p4.pt() < pT_cut_noIso_ && prescaled <= 1 &&
298  !(isolationDR03.chargedHadronIso() < absIso_cut_ || isolationDR03.chargedHadronIso() / p4.pt() < relIso_cut_ ||
299  miniIso.chargedHadronIso() / p4.pt() < miniRelIso_cut_))
300  continue;
301 
302  // get the rest after the pt/iso cuts. Saves some runtime
303  if (isInPackedCands) {
304  pdgId = pfCand->pdgId();
305  dz = pfCand->dz();
306  dxy = pfCand->dxy();
307  dzError = pfCand->hasTrackDetails() ? pfCand->dzError() : gentk.dzError();
308  dxyError = pfCand->hasTrackDetails() ? pfCand->dxyError() : gentk.dxyError();
309  fromPV = pfCand->fromPV();
310  refToCand = pcref;
311  } else if (isInLostTracks) {
312  pdgId = lostTrack->pdgId();
313  dz = lostTrack->dz();
314  dxy = lostTrack->dxy();
315  dzError = lostTrack->hasTrackDetails() ? lostTrack->dzError() : gentk.dzError();
316  dxyError = lostTrack->hasTrackDetails() ? lostTrack->dxyError() : gentk.dxyError();
317  fromPV = lostTrack->fromPV();
318  refToCand = ltref;
319  } else {
320  pdgId = 0;
321  dz = gentk.dz(pv.position());
322  dxy = gentk.dxy(pv.position());
323  dzError = gentk.dzError();
324  dxyError = gentk.dxyError();
325  fromPV = -1;
326  refToCand = pat::PackedCandidateRef(); //NULL reference
327  }
328 
329  float caloJetEm, caloJetHad;
330  getCaloJetEnergy(p4, caloJets.product(), caloJetEm, caloJetHad);
331 
332  bool pfLepOverlap = getPFLeptonOverlap(p4, pc);
333  float pfNeutralSum = getPFNeutralSum(p4, pc, pfCandInd);
334 
336  int refToNearestPF_idx = -1;
337  getNearestPCRef(p4, pc, pfCandInd, refToNearestPF_idx);
338  if (refToNearestPF_idx != -1)
339  refToNearestPF = pat::PackedCandidateRef(pc_h, refToNearestPF_idx);
340 
341  pat::PackedCandidateRef refToNearestLostTrack = pat::PackedCandidateRef();
342  int refToNearestLostTrack_idx = -1;
343  getNearestPCRef(p4, lt, ltCandInd, refToNearestLostTrack_idx);
344  if (refToNearestLostTrack_idx != -1)
345  refToNearestLostTrack = pat::PackedCandidateRef(lt_h, refToNearestLostTrack_idx);
346 
347  // if no dEdx info exists, just store -1
348  float dEdxPixel = -1, dEdxStrip = -1;
349  if (usePrecomputedDeDxStrip_ && gt2dedxStrip.isValid() && gt2dedxStrip->contains(tkref.id())) {
350  dEdxStrip = (*gt2dedxStrip)[tkref].dEdx();
351  } else if (gt2dedxHitInfo.isValid() && gt2dedxHitInfo->contains(tkref.id())) {
352  const reco::DeDxHitInfo* hitInfo = (*gt2dedxHitInfo)[tkref].get();
353  dEdxStrip = getDeDx(hitInfo, false, true);
354  }
355  if (usePrecomputedDeDxPixel_ && gt2dedxPixel.isValid() && gt2dedxPixel->contains(tkref.id())) {
356  dEdxPixel = (*gt2dedxPixel)[tkref].dEdx();
357  } else if (gt2dedxHitInfo.isValid() && gt2dedxHitInfo->contains(tkref.id())) {
358  const reco::DeDxHitInfo* hitInfo = (*gt2dedxHitInfo)[tkref].get();
359  dEdxPixel = getDeDx(hitInfo, true, false);
360  }
361 
362  int trackQuality = gentk.qualityMask();
363 
364  // get the associated ecal/hcal detectors
365  TrackDetMatchInfo trackDetInfo = getTrackDetMatchInfo(iEvent, iSetup, gentk);
366 
367  // fill ecal/hcal status vectors
368  std::vector<uint32_t> crossedHcalStatus;
369  for (auto const& did : trackDetInfo.crossedHcalIds) {
370  crossedHcalStatus.push_back(hcalQ->getValues(did.rawId())->getValue());
371  }
372  std::vector<uint16_t> crossedEcalStatus;
373  for (auto const& did : trackDetInfo.crossedEcalIds) {
374  crossedEcalStatus.push_back(ecalS->find(did.rawId())->getStatusCode());
375  }
376 
377  int deltaEta = int((trackDetInfo.trkGlobPosAtEcal.eta() - gentk.eta()) / 0.5 * 250);
378  int deltaPhi = int((trackDetInfo.trkGlobPosAtEcal.phi() - gentk.phi()) / 0.5 * 250);
379  if (deltaEta < -250)
380  deltaEta = -250;
381  if (deltaEta > 250)
382  deltaEta = 250;
383  if (deltaPhi < -250)
384  deltaPhi = -250;
385  if (deltaPhi > 250)
386  deltaPhi = 250;
387 
388  outPtrP->push_back(pat::IsolatedTrack(isolationDR03,
389  miniIso,
390  caloJetEm,
391  caloJetHad,
392  pfLepOverlap,
393  pfNeutralSum,
394  p4,
395  charge,
396  pdgId,
397  dz,
398  dxy,
399  dzError,
400  dxyError,
401  gentk.hitPattern(),
402  dEdxStrip,
403  dEdxPixel,
404  fromPV,
405  trackQuality,
406  crossedEcalStatus,
407  crossedHcalStatus,
408  deltaEta,
409  deltaPhi,
410  refToCand,
411  refToNearestPF,
412  refToNearestLostTrack));
413  outPtrP->back().setStatus(prescaled);
414 
415  if (saveDeDxHitInfo_) {
416  const auto& dedxRef = (*gt2dedxHitInfo)[tkref];
417  if (saveDeDxHitInfoCut_(outPtrP->back()) && dedxRef.isNonnull()) {
418  outDeDxC->push_back(*dedxRef);
419  dEdXass.push_back(outDeDxC->size() - 1);
420  } else {
421  dEdXass.push_back(-1);
422  }
423  }
424  }
425 
426  // there are some number of pfcandidates with no associated track
427  // (mostly electrons, with a handful of muons)
428  // here we find these and store. Track-specific variables get some default values
429  for (unsigned int ipc = 0; ipc < pc->size(); ipc++) {
430  const pat::PackedCandidate& pfCand = pc->at(ipc);
432  reco::PFCandidateRef pfref = (*pc2pf)[pcref];
433 
434  // already counted if it has a track reference in the generalTracks collection
435  if (pfref.get()->trackRef().isNonnull() && pfref.get()->trackRef().id() == gt_h.id())
436  continue;
437 
439  pat::PackedCandidateRef refToCand;
440  int pdgId, charge, fromPV;
441  float dz, dxy, dzError, dxyError;
442 
443  p4 = pfCand.p4();
444  charge = pfCand.charge();
445 
446  if (p4.pt() < pT_cut_)
447  continue;
448  if (charge == 0)
449  continue;
450 
451  // get the isolation of the track
452  pat::PFIsolation isolationDR03;
453  pat::PFIsolation miniIso;
454  getIsolation(p4, pc, ipc, isolationDR03, miniIso);
455 
456  // isolation cut
457  if (p4.pt() < pT_cut_noIso_ &&
458  !(isolationDR03.chargedHadronIso() < absIso_cut_ || isolationDR03.chargedHadronIso() / p4.pt() < relIso_cut_ ||
459  miniIso.chargedHadronIso() / p4.pt() < miniRelIso_cut_))
460  continue;
461 
462  pdgId = pfCand.pdgId();
463  dz = pfCand.dz();
464  dxy = pfCand.dxy();
465  if (pfCand.hasTrackDetails()) {
466  dzError = pfCand.dzError();
467  dxyError = pfCand.dxyError();
468  } else {
469  dzError = 0;
470  dxyError = 0;
471  }
472  fromPV = pfCand.fromPV();
473  refToCand = pcref;
474 
475  float caloJetEm, caloJetHad;
476  getCaloJetEnergy(p4, caloJets.product(), caloJetEm, caloJetHad);
477 
478  bool pfLepOverlap = getPFLeptonOverlap(p4, pc);
479  float pfNeutralSum = getPFNeutralSum(p4, pc, ipc);
480 
482  int refToNearestPF_idx = -1;
483  getNearestPCRef(p4, pc, ipc, refToNearestPF_idx);
484  if (refToNearestPF_idx != -1)
485  refToNearestPF = pat::PackedCandidateRef(pc_h, refToNearestPF_idx);
486 
487  pat::PackedCandidateRef refToNearestLostTrack = pat::PackedCandidateRef();
488  int refToNearestLostTrack_idx = -1;
489  getNearestPCRef(p4, lt, -1, refToNearestLostTrack_idx);
490  if (refToNearestLostTrack_idx != -1)
491  refToNearestLostTrack = pat::PackedCandidateRef(lt_h, refToNearestLostTrack_idx);
492 
493  // fill with default values
495  float dEdxPixel = -1, dEdxStrip = -1;
496  int trackQuality = 0;
497  std::vector<uint16_t> ecalStatus;
498  std::vector<uint32_t> hcalStatus;
499  int deltaEta = 0;
500  int deltaPhi = 0;
501 
502  outPtrP->push_back(pat::IsolatedTrack(isolationDR03,
503  miniIso,
504  caloJetEm,
505  caloJetHad,
506  pfLepOverlap,
507  pfNeutralSum,
508  p4,
509  charge,
510  pdgId,
511  dz,
512  dxy,
513  dzError,
514  dxyError,
515  hp,
516  dEdxStrip,
517  dEdxPixel,
518  fromPV,
519  trackQuality,
520  ecalStatus,
521  hcalStatus,
522  deltaEta,
523  deltaPhi,
524  refToCand,
525  refToNearestPF,
526  refToNearestLostTrack));
527 
528  dEdXass.push_back(-1); // these never have dE/dx hit info, as there's no track
529  }
530 
531  auto orphHandle = iEvent.put(std::move(outPtrP));
532  if (saveDeDxHitInfo_) {
533  auto dedxOH = iEvent.put(std::move(outDeDxC));
534  auto dedxMatch = std::make_unique<reco::DeDxHitInfoAss>(dedxOH);
536  filler.insert(orphHandle, dEdXass.begin(), dEdXass.end());
537  filler.fill();
538  iEvent.put(std::move(dedxMatch));
539  }
540 }
virtual float dz(size_t ipv=0) const
dz with respect to the PV[ipv]
double p() const
momentum vector magnitude
Definition: TrackBase.h:599
const edm::EDGetTokenT< reco::TrackCollection > gt_
float dxyError() const override
uncertainty on dxy
const edm::EDGetTokenT< edm::ValueMap< reco::DeDxData > > gt2dedxStrip_
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
const edm::EDGetTokenT< edm::ValueMap< int > > gt2dedxHitInfoPrescale_
int pdgId() const override
PDG identifier.
ProductID id() const
Definition: HandleBase.cc:13
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
double dxyError() const
error on dxy
Definition: TrackBase.h:716
std::vector< DetId > crossedEcalIds
bool getPFLeptonOverlap(const LorentzVector &p4, const pat::PackedCandidateCollection *pc) const
std::vector< pat::PackedCandidate > PackedCandidateCollection
const LorentzVector & p4() const override
four-momentum Lorentz vecto r
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
float dzError() const override
uncertainty on dz
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:614
const Item * getValues(DetId fId, bool throwOnFail=true) const
key_type key() const
Accessor for product key.
Definition: Ref.h:250
double px() const
x coordinate of momentum vector
Definition: TrackBase.h:605
const edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > gt2pc_
std::vector< DetId > crossedHcalIds
const Point & position() const
position
Definition: Vertex.h:113
ProductID id() const
Accessor for product ID.
Definition: Ref.h:244
static const double deltaEta
Definition: CaloConstants.h:8
const edm::EDGetTokenT< reco::DeDxHitInfoAss > gt2dedxHitInfo_
int charge() const override
electric charge
void getCaloJetEnergy(const LorentzVector &, const reco::CaloJetCollection *, float &, float &) const
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:617
const PVAssoc fromPV(size_t ipv=0) const
susybsm::HSCParticleRefProd hp
Definition: classes.h:27
T sqrt(T t)
Definition: SSEVec.h:19
double p4[4]
Definition: TauolaWrapper.h:92
edm::Ref< pat::PackedCandidateCollection > PackedCandidateRef
int qualityMask() const
Definition: TrackBase.h:773
def pv(vc)
Definition: MetAnalyzer.py:7
math::XYZTLorentzVector LorentzVector
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:232
bool isValid() const
Definition: HandleBase.h:70
bool contains(ProductID id) const
Definition: Association.h:63
double pz() const
z coordinate of momentum vector
Definition: TrackBase.h:611
bool hasTrackDetails() const
Return true if a bestTrack can be extracted from this Candidate.
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:596
double dzError() const
error on dz
Definition: TrackBase.h:725
const edm::EDGetTokenT< pat::PackedCandidateCollection > pc_
StringCutObjectSelector< pat::IsolatedTrack > saveDeDxHitInfoCut_
T const * product() const
Definition: Handle.h:69
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:483
const edm::EDGetTokenT< edm::Association< reco::PFCandidateCollection > > pc2pf_
const edm::EDGetTokenT< pat::PackedCandidateCollection > lt_
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
Definition: TrackFwd.h:20
void getNearestPCRef(const LorentzVector &p4, const pat::PackedCandidateCollection *pc, int pc_idx, int &pc_ref_idx) const
const edm::EDGetTokenT< reco::VertexCollection > pv_
void getIsolation(const LorentzVector &p4, const pat::PackedCandidateCollection *pc, int pc_idx, pat::PFIsolation &iso, pat::PFIsolation &miniiso) const
const edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > gt2lt_
TrackDetMatchInfo getTrackDetMatchInfo(const edm::Event &, const edm::EventSetup &, const reco::Track &)
T get() const
Definition: EventSetup.h:73
const_iterator find(uint32_t rawId) const
math::XYZPoint trkGlobPosAtEcal
Track position at different parts of the calorimeter.
const JetExtendedData & getValue(const Container &, const reco::JetBaseRef &)
get value for the association. Throw exception if no association found
int charge() const
track electric charge
Definition: TrackBase.h:575
virtual float dxy() const
dxy with respect to the PV ref
float chargedHadronIso() const
Definition: PFIsolation.h:28
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:587
T const * product() const
Definition: ESHandle.h:86
float getPFNeutralSum(const LorentzVector &p4, const pat::PackedCandidateCollection *pc, int pc_idx) const
def move(src, dest)
Definition: eostools.py:511
const edm::EDGetTokenT< reco::CaloJetCollection > caloJets_
double py() const
y coordinate of momentum vector
Definition: TrackBase.h:608
const edm::EDGetTokenT< edm::ValueMap< reco::DeDxData > > gt2dedxPixel_
float getDeDx(const reco::DeDxHitInfo *hitInfo, bool doPixel, bool doStrip) const

Member Data Documentation

const float pat::PATIsolatedTrackProducer::absIso_cut_
private

Definition at line 95 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const bool pat::PATIsolatedTrackProducer::addPrescaledDeDxTracks_
private

Definition at line 87 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const float pat::PATIsolatedTrackProducer::caloJet_DR_
private

Definition at line 98 of file PATIsolatedTrackProducer.cc.

Referenced by getCaloJetEnergy().

const edm::EDGetTokenT<reco::CaloJetCollection> pat::PATIsolatedTrackProducer::caloJets_
private

Definition at line 83 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<reco::DeDxHitInfoAss> pat::PATIsolatedTrackProducer::gt2dedxHitInfo_
private

Definition at line 86 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<edm::ValueMap<int> > pat::PATIsolatedTrackProducer::gt2dedxHitInfoPrescale_
private

Definition at line 88 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<edm::ValueMap<reco::DeDxData> > pat::PATIsolatedTrackProducer::gt2dedxPixel_
private

Definition at line 85 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<edm::ValueMap<reco::DeDxData> > pat::PATIsolatedTrackProducer::gt2dedxStrip_
private

Definition at line 84 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<edm::Association<pat::PackedCandidateCollection> > pat::PATIsolatedTrackProducer::gt2lt_
private

Definition at line 81 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<edm::Association<pat::PackedCandidateCollection> > pat::PATIsolatedTrackProducer::gt2pc_
private

Definition at line 80 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<reco::TrackCollection> pat::PATIsolatedTrackProducer::gt_
private

Definition at line 78 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<pat::PackedCandidateCollection> pat::PATIsolatedTrackProducer::lt_
private

Definition at line 77 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

std::vector<double> pat::PATIsolatedTrackProducer::miniIsoParams_
private

Definition at line 107 of file PATIsolatedTrackProducer.cc.

Referenced by getIsolation(), and PATIsolatedTrackProducer().

const float pat::PATIsolatedTrackProducer::miniRelIso_cut_
private

Definition at line 97 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<edm::Association<reco::PFCandidateCollection> > pat::PATIsolatedTrackProducer::pc2pf_
private

Definition at line 82 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<pat::PackedCandidateCollection> pat::PATIsolatedTrackProducer::pc_
private

Definition at line 76 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const float pat::PATIsolatedTrackProducer::pcRefNearest_DR_
private

Definition at line 101 of file PATIsolatedTrackProducer.cc.

Referenced by getNearestPCRef().

const float pat::PATIsolatedTrackProducer::pcRefNearest_pTmin_
private

Definition at line 102 of file PATIsolatedTrackProducer.cc.

Referenced by getNearestPCRef().

const float pat::PATIsolatedTrackProducer::pfIsolation_DR_
private

Definition at line 93 of file PATIsolatedTrackProducer.cc.

Referenced by getIsolation().

const float pat::PATIsolatedTrackProducer::pfIsolation_DZ_
private

Definition at line 94 of file PATIsolatedTrackProducer.cc.

Referenced by getIsolation(), getNearestPCRef(), and getPFLeptonOverlap().

const float pat::PATIsolatedTrackProducer::pflepoverlap_DR_
private

Definition at line 99 of file PATIsolatedTrackProducer.cc.

Referenced by getPFLeptonOverlap().

const float pat::PATIsolatedTrackProducer::pflepoverlap_pTmin_
private

Definition at line 100 of file PATIsolatedTrackProducer.cc.

Referenced by getPFLeptonOverlap().

const float pat::PATIsolatedTrackProducer::pfneutralsum_DR_
private

Definition at line 103 of file PATIsolatedTrackProducer.cc.

Referenced by getPFNeutralSum().

const float pat::PATIsolatedTrackProducer::pT_cut_
private

Definition at line 91 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const float pat::PATIsolatedTrackProducer::pT_cut_noIso_
private

Definition at line 92 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<reco::VertexCollection> pat::PATIsolatedTrackProducer::pv_
private

Definition at line 79 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const float pat::PATIsolatedTrackProducer::relIso_cut_
private

Definition at line 96 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const bool pat::PATIsolatedTrackProducer::saveDeDxHitInfo_
private

Definition at line 104 of file PATIsolatedTrackProducer.cc.

Referenced by PATIsolatedTrackProducer(), and produce().

StringCutObjectSelector<pat::IsolatedTrack> pat::PATIsolatedTrackProducer::saveDeDxHitInfoCut_
private

Definition at line 105 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

TrackDetectorAssociator pat::PATIsolatedTrackProducer::trackAssociator_
private

Definition at line 109 of file PATIsolatedTrackProducer.cc.

Referenced by getTrackDetMatchInfo(), and PATIsolatedTrackProducer().

TrackAssociatorParameters pat::PATIsolatedTrackProducer::trackAssocParameters_
private

Definition at line 110 of file PATIsolatedTrackProducer.cc.

Referenced by getTrackDetMatchInfo(), and PATIsolatedTrackProducer().

const bool pat::PATIsolatedTrackProducer::usePrecomputedDeDxPixel_
private

Definition at line 90 of file PATIsolatedTrackProducer.cc.

Referenced by produce().

const bool pat::PATIsolatedTrackProducer::usePrecomputedDeDxStrip_
private

Definition at line 89 of file PATIsolatedTrackProducer.cc.

Referenced by produce().