CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes
TrackClassifier Class Reference

Get track history and classify it in function of their . More...

#include <TrackClassifier.h>

Inheritance diagram for TrackClassifier:
TrackCategories

Classes

struct  GeneratedPrimaryVertex
 Auxiliary class holding simulated primary vertices. More...
 

Public Types

typedef TrackCategories Categories
 Type to the associate category. More...
 
- Public Types inherited from TrackCategories
enum  Category {
  Fake = 0, Reconstructed = Fake, Bad, BadInnerHits,
  SharedInnerHits, SignalEvent, Bottom, Charm,
  Light, Muon, TrackerSimHits, BWeakDecay,
  CWeakDecay, ChargePionDecay, ChargeKaonDecay, TauDecay,
  KsDecay, LambdaDecay, JpsiDecay, XiDecay,
  OmegaDecay, SigmaPlusDecay, SigmaMinusDecay, LongLivedDecay,
  KnownProcess, UndefinedProcess, UnknownProcess, PrimaryProcess,
  HadronicProcess, DecayProcess, ComptonProcess, AnnihilationProcess,
  EIoniProcess, HIoniProcess, MuIoniProcess, PhotonProcess,
  MuPairProdProcess, ConversionsProcess, EBremProcess, SynchrotronRadiationProcess,
  MuBremProcess, MuNuclProcess, FromBWeakDecayMuon, FromCWeakDecayMuon,
  DecayOnFlightMuon, FromChargePionMuon, FromChargeKaonMuon, PrimaryVertex,
  SecondaryVertex, TertiaryVertex, TierciaryVertex = TertiaryVertex, Unknown
}
 Categories available to vertex. More...
 
typedef std::vector< bool > Flags
 Main types associated to the class. More...
 

Public Member Functions

TrackClassifier const & evaluate (reco::TrackBaseRef const &)
 Classify the RecoTrack in categories. More...
 
TrackClassifier const & evaluate (TrackingParticleRef const &)
 Classify the TrackingParticle in categories. More...
 
TrackClassifier const & evaluate (reco::TrackRef const &track)
 Classify the RecoTrack in categories. More...
 
TrackHistory const & history () const
 Returns a reference to the track history used in the classification. More...
 
void newEvent (edm::Event const &, edm::EventSetup const &)
 Pre-process event information (for accessing reconstraction information) More...
 
TrackQuality const & quality () const
 Returns a reference to the track quality used in the classification. More...
 
 TrackClassifier (edm::ParameterSet const &, edm::ConsumesCollector &&)
 Constructor by ParameterSet. More...
 
- Public Member Functions inherited from TrackCategories
const Flagsflags () const
 Returns flags with the category descriptions. More...
 
bool is (Category category) const
 Returns track flag for a given category. More...
 
 TrackCategories ()
 Void constructor. More...
 

Private Member Functions

void genPrimaryVertices ()
 
void hadronFlavor ()
 Get hadron flavor of the initial hadron. More...
 
bool isCharged (const HepMC::GenParticle *)
 
bool isFinalstateParticle (const HepMC::GenParticle *)
 
void processesAtGenerator ()
 Get all the information related to decay process. More...
 
void processesAtSimulation ()
 Get information about conversion and other interactions. More...
 
void qualityInformation (reco::TrackBaseRef const &)
 Classify all the tracks by their reconstruction quality. More...
 
void reconstructionInformation (reco::TrackBaseRef const &)
 
void simulationInformation ()
 Get all the information related to the simulation details. More...
 
void vertexInformation ()
 Get geometrical information about the vertices. More...
 

Private Attributes

double badPull_
 
edm::Handle< reco::BeamSpotbeamSpot_
 
const edm::InputTag beamSpotLabel_
 
const G4toCMSLegacyProcTypeMap g4toCMSProcMap_
 
std::vector
< GeneratedPrimaryVertex
genpvs_
 
const edm::InputTag hepMCLabel_
 
double longLivedDecayLength_
 
edm::ESHandle< MagneticFieldmagneticField_
 
edm::ESGetToken< MagneticField,
IdealMagneticFieldRecord
magneticFieldToken_
 
edm::Handle< edm::HepMCProductmcInformation_
 
unsigned int minTrackerSimHits_
 
unsigned int numberOfInnerLayers_
 
edm::ESHandle< ParticleDataTableparticleDataTable_
 
edm::ESGetToken
< ParticleDataTable, PDTRecord
particleDataTableToken_
 
TrackQuality quality_
 
TrackHistory tracer_
 
edm::ESHandle
< TransientTrackBuilder
transientTrackBuilder_
 
edm::ESGetToken
< TransientTrackBuilder,
TransientTrackRecord
transientTrackBuilderToken_
 
const TrackerTopologytTopo_
 
edm::ESGetToken
< TrackerTopology,
TrackerTopologyRcd
tTopoHandToken_
 
double vertexClusteringSqDistance_
 

Additional Inherited Members

- Static Public Attributes inherited from TrackCategories
static const char *const Names []
 Name of the different categories. More...
 
- Protected Member Functions inherited from TrackCategories
void reset ()
 Reset the categories flags. More...
 
void unknownTrack ()
 
- Protected Attributes inherited from TrackCategories
Flags flags_
 Flag containers. More...
 

Detailed Description

Get track history and classify it in function of their .

Definition at line 29 of file TrackClassifier.h.

Member Typedef Documentation

Type to the associate category.

Definition at line 32 of file TrackClassifier.h.

Constructor & Destructor Documentation

TrackClassifier::TrackClassifier ( edm::ParameterSet const &  config,
edm::ConsumesCollector &&  collector 
)

Constructor by ParameterSet.

Definition at line 15 of file TrackClassifier.cc.

References badPull_, beamSpotLabel_, HistoryBase::depth(), edm::ParameterSet::getUntrackedParameter(), hepMCLabel_, longLivedDecayLength_, minTrackerSimHits_, numberOfInnerLayers_, tracer_, and vertexClusteringSqDistance_.

16  : TrackCategories(),
17  hepMCLabel_(config.getUntrackedParameter<edm::InputTag>("hepMC")),
18  beamSpotLabel_(config.getUntrackedParameter<edm::InputTag>("beamSpot")),
19  tracer_(config, std::move(collector)),
20  quality_(config, collector),
27 
28  // Set the history depth after hadronization
29  tracer_.depth(-2);
30 
31  // Set the maximum d0pull for the bad category
32  badPull_ = config.getUntrackedParameter<double>("badPull");
33 
34  // Set the minimum decay length for detecting long decays
35  longLivedDecayLength_ = config.getUntrackedParameter<double>("longLivedDecayLength");
36 
37  // Set the distance for clustering vertices
38  float vertexClusteringDistance = config.getUntrackedParameter<double>("vertexClusteringDistance");
39  vertexClusteringSqDistance_ = vertexClusteringDistance * vertexClusteringDistance;
40 
41  // Set the number of innermost layers to check for bad hits
42  numberOfInnerLayers_ = config.getUntrackedParameter<unsigned int>("numberOfInnerLayers");
43 
44  // Set the minimum number of simhits in the tracker
45  minTrackerSimHits_ = config.getUntrackedParameter<unsigned int>("minTrackerSimHits");
46 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
const edm::InputTag beamSpotLabel_
const edm::InputTag hepMCLabel_
unsigned int numberOfInnerLayers_
unsigned int minTrackerSimHits_
edm::ESGetToken< ParticleDataTable, PDTRecord > particleDataTableToken_
edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > transientTrackBuilderToken_
def move
Definition: eostools.py:511
TrackQuality quality_
TrackCategories()
Void constructor.
tuple config
parse the configuration file
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoHandToken_
void depth(int d)
Set the depth of the history.
Definition: HistoryBase.h:49
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
double longLivedDecayLength_
double vertexClusteringSqDistance_
TrackHistory tracer_

Member Function Documentation

TrackClassifier const & TrackClassifier::evaluate ( reco::TrackBaseRef const &  track)

Classify the RecoTrack in categories.

Definition at line 77 of file TrackClassifier.cc.

References TrackHistory::evaluate(), TrackCategories::Fake, TrackCategories::flags_, hadronFlavor(), processesAtGenerator(), processesAtSimulation(), qualityInformation(), reconstructionInformation(), TrackCategories::reset(), simulationInformation(), tracer_, TrackCategories::unknownTrack(), and vertexInformation().

Referenced by TrackCategoriesAnalyzer::analyze(), TrackingParticleCategoriesAnalyzer::analyze(), TrackHistoryAnalyzer::analyze(), BDHadronTrackMonitoringAnalyzer::analyze(), QualityCutsAnalyzer::LoopOverJetTracksAssociation(), and JetVetoedTracksAssociationDRVertex::produce().

77  {
78  // Initializing the category vector
79  reset();
80 
81  // Associate and evaluate the track history (check for fakes)
82  if (tracer_.evaluate(track)) {
83  // Classify all the tracks by their association and reconstruction
84  // information
86 
87  // Get all the information related to the simulation details
89 
90  // Analyse the track reconstruction quality
92 
93  // Get hadron flavor of the initial hadron
94  hadronFlavor();
95 
96  // Get all the information related to decay process
98 
99  // Get information about conversion and other interactions
101 
102  // Get geometrical information about the vertices
104 
105  // Check for unkown classification
106  unknownTrack();
107  } else
108  flags_[Fake] = true;
109 
110  return *this;
111 }
void processesAtSimulation()
Get information about conversion and other interactions.
void simulationInformation()
Get all the information related to the simulation details.
void qualityInformation(reco::TrackBaseRef const &)
Classify all the tracks by their reconstruction quality.
void reconstructionInformation(reco::TrackBaseRef const &)
void hadronFlavor()
Get hadron flavor of the initial hadron.
void vertexInformation()
Get geometrical information about the vertices.
void processesAtGenerator()
Get all the information related to decay process.
bool evaluate(TrackingParticleRef tpr)
Evaluate track history using a TrackingParticleRef.
Definition: TrackHistory.h:37
Flags flags_
Flag containers.
void reset()
Reset the categories flags.
TrackHistory tracer_
TrackClassifier const & TrackClassifier::evaluate ( TrackingParticleRef const &  track)

Classify the TrackingParticle in categories.

Definition at line 113 of file TrackClassifier.cc.

References TrackHistory::evaluate(), TrackCategories::flags_, hadronFlavor(), edm::RefToBase< T >::isNonnull(), processesAtGenerator(), processesAtSimulation(), qualityInformation(), TrackCategories::Reconstructed, reconstructionInformation(), Reconstruction_cff::recotrack, TrackHistory::recoTrack(), TrackCategories::reset(), simulationInformation(), tracer_, TrackCategories::unknownTrack(), and vertexInformation().

113  {
114  // Initializing the category vector
115  reset();
116 
117  // Trace the history for the given TP
119 
120  // Collect the associated reco track
122 
123  // If there is a reco truck then evaluate the simulated history
124  if (recotrack.isNonnull()) {
125  flags_[Reconstructed] = true;
126  // Classify all the tracks by their association and reconstruction
127  // information
128  reconstructionInformation(recotrack);
129  // Analyse the track reconstruction quality
130  qualityInformation(recotrack);
131  } else
132  flags_[Reconstructed] = false;
133 
134  // Get all the information related to the simulation details
136 
137  // Get hadron flavor of the initial hadron
138  hadronFlavor();
139 
140  // Get all the information related to decay process
142 
143  // Get information about conversion and other interactions
145 
146  // Get geometrical information about the vertices
148 
149  // Check for unkown classification
150  unknownTrack();
151 
152  return *this;
153 }
bool isNonnull() const
Checks for non-null.
Definition: RefToBase.h:301
void processesAtSimulation()
Get information about conversion and other interactions.
void simulationInformation()
Get all the information related to the simulation details.
void qualityInformation(reco::TrackBaseRef const &)
Classify all the tracks by their reconstruction quality.
void reconstructionInformation(reco::TrackBaseRef const &)
void hadronFlavor()
Get hadron flavor of the initial hadron.
void vertexInformation()
Get geometrical information about the vertices.
void processesAtGenerator()
Get all the information related to decay process.
bool evaluate(TrackingParticleRef tpr)
Evaluate track history using a TrackingParticleRef.
Definition: TrackHistory.h:37
Flags flags_
Flag containers.
const reco::TrackBaseRef & recoTrack() const
Return a reference to the reconstructed track.
Definition: TrackHistory.h:55
void reset()
Reset the categories flags.
TrackHistory tracer_
TrackClassifier const& TrackClassifier::evaluate ( reco::TrackRef const &  track)
inline

Classify the RecoTrack in categories.

Definition at line 47 of file TrackClassifier.h.

References evaluate().

Referenced by evaluate().

47 { return evaluate(reco::TrackBaseRef(track)); }
TrackClassifier const & evaluate(reco::TrackBaseRef const &)
Classify the RecoTrack in categories.
void TrackClassifier::genPrimaryVertices ( )
private

Definition at line 503 of file TrackClassifier.cc.

References funct::abs(), edmPickEvents::event, spr::find(), genpvs_, isCharged(), isFinalstateParticle(), visualization-live-secondInstance_cfg::m, mcInformation_, parents, funct::pow(), MetAnalyzer::pv(), and vertexClusteringSqDistance_.

Referenced by newEvent().

503  {
504  genpvs_.clear();
505 
506  const HepMC::GenEvent *event = mcInformation_->GetEvent();
507 
508  if (event) {
509  int idx = 0;
510 
511  // Loop over the different GenVertex
512  for (HepMC::GenEvent::vertex_const_iterator ivertex = event->vertices_begin(); ivertex != event->vertices_end();
513  ++ivertex) {
514  bool hasParentVertex = false;
515 
516  // Loop over the parents looking to see if they are coming from a
517  // production vertex
518  for (HepMC::GenVertex::particle_iterator iparent = (*ivertex)->particles_begin(HepMC::parents);
519  iparent != (*ivertex)->particles_end(HepMC::parents);
520  ++iparent)
521  if ((*iparent)->production_vertex()) {
522  hasParentVertex = true;
523  break;
524  }
525 
526  // Reject those vertices with parent vertices
527  if (hasParentVertex)
528  continue;
529 
530  // Get the position of the vertex
531  HepMC::FourVector pos = (*ivertex)->position();
532 
533  double const mm = 0.1;
534 
535  GeneratedPrimaryVertex pv(pos.x() * mm, pos.y() * mm, pos.z() * mm);
536 
537  std::vector<GeneratedPrimaryVertex>::iterator ientry = genpvs_.begin();
538 
539  // Search for a VERY close vertex in the list
540  for (; ientry != genpvs_.end(); ++ientry) {
541  double distance2 = pow(pv.x - ientry->x, 2) + pow(pv.y - ientry->y, 2) + pow(pv.z - ientry->z, 2);
542  if (distance2 < vertexClusteringSqDistance_)
543  break;
544  }
545 
546  // Check if there is not a VERY close vertex and added to the list
547  if (ientry == genpvs_.end())
548  ientry = genpvs_.insert(ientry, pv);
549 
550  // Add the vertex barcodes to the new or existent vertices
551  ientry->genVertex.push_back((*ivertex)->barcode());
552 
553  // Collect final state descendants
554  for (HepMC::GenVertex::particle_iterator idecendants = (*ivertex)->particles_begin(HepMC::descendants);
555  idecendants != (*ivertex)->particles_end(HepMC::descendants);
556  ++idecendants) {
557  if (isFinalstateParticle(*idecendants))
558  if (find(ientry->finalstateParticles.begin(), ientry->finalstateParticles.end(), (*idecendants)->barcode()) ==
559  ientry->finalstateParticles.end()) {
560  ientry->finalstateParticles.push_back((*idecendants)->barcode());
561  HepMC::FourVector m = (*idecendants)->momentum();
562 
563  ientry->ptot.setPx(ientry->ptot.px() + m.px());
564  ientry->ptot.setPy(ientry->ptot.py() + m.py());
565  ientry->ptot.setPz(ientry->ptot.pz() + m.pz());
566  ientry->ptot.setE(ientry->ptot.e() + m.e());
567  ientry->ptsq += m.perp() * m.perp();
568 
569  if (m.perp() > 0.8 && std::abs(m.pseudoRapidity()) < 2.5 && isCharged(*idecendants))
570  ientry->nGenTrk++;
571  }
572  }
573  idx++;
574  }
575  }
576 
577  std::sort(genpvs_.begin(), genpvs_.end());
578 }
TPRegexp parents
Definition: eve_filter.cc:21
edm::Handle< edm::HepMCProduct > mcInformation_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
std::vector< GeneratedPrimaryVertex > genpvs_
bool isCharged(const HepMC::GenParticle *)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool isFinalstateParticle(const HepMC::GenParticle *)
double vertexClusteringSqDistance_
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
void TrackClassifier::hadronFlavor ( )
private

Get hadron flavor of the initial hadron.

Definition at line 236 of file TrackClassifier.cc.

References TrackCategories::Bottom, TrackCategories::Charm, TrackCategories::flags_, TrackCategories::Light, reco::LeafCandidate::pdgId(), HistoryBase::recoGenParticle(), and tracer_.

Referenced by evaluate().

236  {
237  // Get the initial hadron from the recoGenParticleTrail
238  const reco::GenParticle *particle = tracer_.recoGenParticle();
239 
240  // Check for the initial hadron
241  if (particle) {
242  HepPDT::ParticleID pid(particle->pdgId());
243  flags_[Bottom] = pid.hasBottom();
244  flags_[Charm] = pid.hasCharm();
245  flags_[Light] = !pid.hasCharm() && !pid.hasBottom();
246  }
247 }
const reco::GenParticle * recoGenParticle() const
Definition: HistoryBase.h:82
int pdgId() const final
PDG identifier.
Flags flags_
Flag containers.
TrackHistory tracer_
TrackHistory const& TrackClassifier::history ( ) const
inline

Returns a reference to the track history used in the classification.

Definition at line 50 of file TrackClassifier.h.

References tracer_.

Referenced by TrackHistoryAnalyzer::analyze(), and BDHadronTrackMonitoringAnalyzer::analyze().

50 { return tracer_; }
TrackHistory tracer_
bool TrackClassifier::isCharged ( const HepMC::GenParticle *  p)
private

Definition at line 493 of file TrackClassifier.cc.

References particleDataTable_.

Referenced by genPrimaryVertices().

493  {
494  const ParticleData *part = particleDataTable_->particle(p->pdg_id());
495  if (part)
496  return part->charge() != 0;
497  else {
498  // the new/improved particle table doesn't know anti-particles
499  return particleDataTable_->particle(-p->pdg_id()) != nullptr;
500  }
501 }
HepPDT::ParticleData ParticleData
part
Definition: HCALResponse.h:20
edm::ESHandle< ParticleDataTable > particleDataTable_
bool TrackClassifier::isFinalstateParticle ( const HepMC::GenParticle *  p)
private

Definition at line 491 of file TrackClassifier.cc.

Referenced by genPrimaryVertices().

491 { return !p->end_vertex() && p->status() == 1; }
void TrackClassifier::newEvent ( edm::Event const &  event,
edm::EventSetup const &  setup 
)

Pre-process event information (for accessing reconstraction information)

Definition at line 48 of file TrackClassifier.cc.

References beamSpot_, beamSpotLabel_, genPrimaryVertices(), edm::EventSetup::getData(), edm::EventSetup::getHandle(), hepMCLabel_, magneticField_, magneticFieldToken_, mcInformation_, TrackHistory::newEvent(), TrackQuality::newEvent(), particleDataTable_, particleDataTableToken_, quality_, tracer_, transientTrackBuilder_, transientTrackBuilderToken_, tTopo_, and tTopoHandToken_.

Referenced by TrackCategoriesAnalyzer::analyze(), TrackingParticleCategoriesAnalyzer::analyze(), TrackHistoryAnalyzer::analyze(), QualityCutsAnalyzer::analyze(), BDHadronTrackMonitoringAnalyzer::analyze(), and JetVetoedTracksAssociatorAtVertex::produce().

48  {
49  // Get the new event information for the tracer
51 
52  // Get the new event information for the track quality analyser
54 
55  // Get hepmc of the event
56  event.getByLabel(hepMCLabel_, mcInformation_);
57 
58  // Magnetic field
60 
61  // Get the partivle data table
63 
64  // get the beam spot
65  event.getByLabel(beamSpotLabel_, beamSpot_);
66 
67  // Transient track builder
69 
70  // Create the list of primary vertices associated to the event
72 
73  // Retrieve tracker topology from geometry
74  tTopo_ = &setup.getData(tTopoHandToken_);
75 }
const edm::InputTag beamSpotLabel_
const edm::InputTag hepMCLabel_
void newEvent(const edm::Event &, const edm::EventSetup &)
Pre-process event information (for accessing reconstruction information)
Definition: TrackHistory.cc:32
edm::Handle< edm::HepMCProduct > mcInformation_
const TrackerTopology * tTopo_
edm::ESGetToken< ParticleDataTable, PDTRecord > particleDataTableToken_
edm::ESHandle< TransientTrackBuilder > transientTrackBuilder_
edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > transientTrackBuilderToken_
edm::Handle< reco::BeamSpot > beamSpot_
TrackQuality quality_
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoHandToken_
edm::ESHandle< MagneticField > magneticField_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
void newEvent(const edm::Event &, const edm::EventSetup &)
Pre-process event information (for accessing reconstruction information)
edm::ESHandle< ParticleDataTable > particleDataTable_
TrackHistory tracer_
void TrackClassifier::processesAtGenerator ( )
private

Get all the information related to decay process.

Definition at line 249 of file TrackClassifier.cc.

References funct::abs(), TrackCategories::BWeakDecay, TrackCategories::ChargeKaonDecay, TrackCategories::ChargePionDecay, TrackCategories::CWeakDecay, TrackCategories::DecayOnFlightMuon, TrackCategories::flags_, TrackCategories::FromBWeakDecayMuon, TrackCategories::FromChargeKaonMuon, TrackCategories::FromChargePionMuon, TrackCategories::FromCWeakDecayMuon, mps_fire::i, TrackCategories::JpsiDecay, TrackCategories::KsDecay, TrackCategories::LambdaDecay, TrackCategories::LongLivedDecay, longLivedDecayLength_, TrackCategories::Muon, particleDataTable_, HistoryBase::recoGenParticleTrail(), TrackCategories::SigmaMinusDecay, TrackCategories::SigmaPlusDecay, tracer_, update, and TrackCategories::XiDecay.

Referenced by evaluate().

249  {
250  // pdgid of the "in" particle to the production vertex
251  int pdgid = 0;
252 
253  // Get the generated particles from track history (reco::GenParticle in the
254  // recoGenParticleTrail)
255  TrackHistory::RecoGenParticleTrail const &recoGenParticleTrail = tracer_.recoGenParticleTrail();
256 
257  // Loop over the generated particles (reco::GenParticle in the
258  // recoGenParticleTrail)
259  for (TrackHistory::RecoGenParticleTrail::const_iterator iparticle = recoGenParticleTrail.begin();
260  iparticle != recoGenParticleTrail.end();
261  ++iparticle) {
262  pdgid = std::abs((*iparticle)->pdgId());
263  // Get particle type
264  HepPDT::ParticleID particleID(pdgid);
265 
266  // Check if the particle type is valid one
267  if (particleID.isValid()) {
268  // Get particle data
269  ParticleData const *particleData = particleDataTable_->particle(particleID);
270  // Check if the particle exist in the table
271  if (particleData) {
272  // Check if their life time is bigger than longLivedDecayLength_
273  if (particleData->lifetime() > longLivedDecayLength_)
274  update(flags_[LongLivedDecay], true);
275  // Check for B and C weak decays
276  update(flags_[BWeakDecay], particleID.hasBottom());
277  update(flags_[CWeakDecay], particleID.hasCharm());
278  // Check for B and C pure leptonic decay
279  std::set<int> daughterIds;
280  size_t ndau = (*iparticle)->numberOfDaughters();
281  for (size_t i = 0; i < ndau; ++i) {
282  daughterIds.insert((*iparticle)->daughter(i)->pdgId());
283  }
284  update(flags_[FromBWeakDecayMuon], particleID.hasBottom() && (daughterIds.find(13) != daughterIds.end()));
285  update(flags_[FromCWeakDecayMuon], particleID.hasCharm() && (daughterIds.find(13) != daughterIds.end()));
286  }
287  // Check Tau, Ks and Lambda decay
288  update(flags_[ChargePionDecay], pdgid == 211);
289  update(flags_[ChargeKaonDecay], pdgid == 321);
290  update(flags_[TauDecay], pdgid == 15);
291  update(flags_[KsDecay], pdgid == 310);
292  update(flags_[LambdaDecay], pdgid == 3122);
293  update(flags_[JpsiDecay], pdgid == 443);
294  update(flags_[XiDecay], pdgid == 3312);
295  update(flags_[SigmaPlusDecay], pdgid == 3222);
296  update(flags_[SigmaMinusDecay], pdgid == 3112);
297  }
298  }
299  // Decays in flight
303 }
std::vector< const reco::GenParticle * > RecoGenParticleTrail
reco::GenParticle trail type.
Definition: HistoryBase.h:18
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HepPDT::ParticleData ParticleData
#define update(a, b)
Flags flags_
Flag containers.
double longLivedDecayLength_
RecoGenParticleTrail const & recoGenParticleTrail() const
Return all reco::GenParticle in the history.
Definition: HistoryBase.h:64
edm::ESHandle< ParticleDataTable > particleDataTable_
TrackHistory tracer_
void TrackClassifier::processesAtSimulation ( )
private

Get information about conversion and other interactions.

Definition at line 305 of file TrackClassifier.cc.

References funct::abs(), CMS::Annihilation, TrackCategories::AnnihilationProcess, TrackCategories::BWeakDecay, TrackCategories::ChargeKaonDecay, TrackCategories::ChargePionDecay, CMS::Compton, TrackCategories::ComptonProcess, CMS::Conversions, TrackCategories::ConversionsProcess, TrackCategories::CWeakDecay, CMS::Decay, TrackCategories::DecayOnFlightMuon, TrackCategories::DecayProcess, CMS::EBrem, TrackCategories::EBremProcess, CMS::EIoni, TrackCategories::EIoniProcess, TrackCategories::flags_, TrackCategories::FromBWeakDecayMuon, TrackCategories::FromChargeKaonMuon, TrackCategories::FromChargePionMuon, TrackCategories::FromCWeakDecayMuon, g4toCMSProcMap_, CMS::Hadronic, TrackCategories::HadronicProcess, CMS::HIoni, TrackCategories::HIoniProcess, edm::Ref< C, T, F >::isNonnull(), TrackCategories::JpsiDecay, TrackCategories::KnownProcess, TrackCategories::KsDecay, TrackCategories::LambdaDecay, TrackCategories::LongLivedDecay, longLivedDecayLength_, CMS::MuBrem, TrackCategories::MuBremProcess, CMS::MuIoni, TrackCategories::MuIoniProcess, CMS::MuNucl, TrackCategories::MuNuclProcess, TrackCategories::Muon, CMS::MuPairProd, TrackCategories::MuPairProdProcess, TrackCategories::OmegaDecay, particleDataTable_, CMS::Photon, TrackCategories::PhotonProcess, CMS::Primary, TrackCategories::PrimaryProcess, LaserDQM_cfg::process, G4toCMSLegacyProcTypeMap::processId(), TrackCategories::SigmaMinusDecay, TrackCategories::SigmaPlusDecay, HistoryBase::simParticleTrail(), CMS::SynchrotronRadiation, TrackCategories::SynchrotronRadiationProcess, tracer_, CMS::Undefined, TrackCategories::UndefinedProcess, CMS::Unknown, TrackCategories::UnknownProcess, update, and TrackCategories::XiDecay.

Referenced by evaluate().

305  {
306  TrackHistory::SimParticleTrail const &simParticleTrail = tracer_.simParticleTrail();
307 
308  // Loop over the simulated particles
309  for (TrackHistory::SimParticleTrail::const_iterator iparticle = simParticleTrail.begin();
310  iparticle != simParticleTrail.end();
311  ++iparticle) {
312  // pdgid of the real source parent vertex
313  int pdgid = 0;
314 
315  // Get a reference to the TP's parent vertex
316  TrackingVertexRef const &parentVertex = (*iparticle)->parentVertex();
317 
318  // Look for the original source track
319  if (parentVertex.isNonnull()) {
320  // select the original source in case of combined vertices
321  bool flag = false;
323 
324  for (its = parentVertex->sourceTracks_begin(); its != parentVertex->sourceTracks_end(); ++its) {
325  for (itd = parentVertex->daughterTracks_begin(); itd != parentVertex->daughterTracks_end(); ++itd)
326  if (itd != its) {
327  flag = true;
328  break;
329  }
330  if (flag)
331  break;
332  }
333 
334  // Collect the pdgid of the original source track
335  if (its != parentVertex->sourceTracks_end())
336  pdgid = std::abs((*its)->pdgId());
337  else
338  pdgid = 0;
339  }
340 
341  unsigned int processG4 = 0;
342 
343  // Check existence of SimVerteces assigned
344  if (parentVertex->nG4Vertices() > 0) {
345  processG4 = (*(parentVertex->g4Vertices_begin())).processType();
346  }
347 
348  unsigned int process = g4toCMSProcMap_.processId(processG4);
349 
350  // Flagging all the different processes
351  update(flags_[KnownProcess], process != CMS::Undefined && process != CMS::Unknown && process != CMS::Primary);
352 
357  update(flags_[DecayProcess], process == CMS::Decay);
360  update(flags_[EIoniProcess], process == CMS::EIoni);
361  update(flags_[HIoniProcess], process == CMS::HIoni);
362  update(flags_[MuIoniProcess], process == CMS::MuIoni);
363  update(flags_[PhotonProcess], process == CMS::Photon);
366  update(flags_[EBremProcess], process == CMS::EBrem);
368  update(flags_[MuBremProcess], process == CMS::MuBrem);
369  update(flags_[MuNuclProcess], process == CMS::MuNucl);
370 
371  // Get particle type
372  HepPDT::ParticleID particleID(pdgid);
373 
374  // Check if the particle type is valid one
375  if (particleID.isValid()) {
376  // Get particle data
377  ParticleData const *particleData = particleDataTable_->particle(particleID);
378  // Special treatment for decays
379  if (process == CMS::Decay) {
380  // Check if the particle exist in the table
381  if (particleData) {
382  // Check if their life time is bigger than 1e-14
383  if (particleDataTable_->particle(particleID)->lifetime() > longLivedDecayLength_)
384  update(flags_[LongLivedDecay], true);
385 
386  // Check for B and C weak decays
387  update(flags_[BWeakDecay], particleID.hasBottom());
388  update(flags_[CWeakDecay], particleID.hasCharm());
389 
390  // Check for B or C pure leptonic decays
391  int daughtId = abs((*iparticle)->pdgId());
392  update(flags_[FromBWeakDecayMuon], particleID.hasBottom() && daughtId == 13);
393  update(flags_[FromCWeakDecayMuon], particleID.hasCharm() && daughtId == 13);
394  }
395  // Check decays
396  update(flags_[ChargePionDecay], pdgid == 211);
397  update(flags_[ChargeKaonDecay], pdgid == 321);
398  update(flags_[TauDecay], pdgid == 15);
399  update(flags_[KsDecay], pdgid == 310);
400  update(flags_[LambdaDecay], pdgid == 3122);
401  update(flags_[JpsiDecay], pdgid == 443);
402  update(flags_[XiDecay], pdgid == 3312);
403  update(flags_[OmegaDecay], pdgid == 3334);
404  update(flags_[SigmaPlusDecay], pdgid == 3222);
405  update(flags_[SigmaMinusDecay], pdgid == 3112);
406  }
407  }
408  }
409  // Decays in flight
413 }
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
const G4toCMSLegacyProcTypeMap g4toCMSProcMap_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const unsigned int processId(unsigned int g4ProcessId) const
Definition: Utils.cc:59
HepPDT::ParticleData ParticleData
SimParticleTrail const & simParticleTrail() const
Return all the simulated particle in the history.
Definition: HistoryBase.h:55
#define update(a, b)
Flags flags_
Flag containers.
double longLivedDecayLength_
tuple process
Definition: LaserDQM_cfg.py:3
edm::ESHandle< ParticleDataTable > particleDataTable_
TrackHistory tracer_
std::vector< TrackingParticleRef > SimParticleTrail
SimParticle trail type.
Definition: HistoryBase.h:30
TrackQuality const& TrackClassifier::quality ( void  ) const
inline

Returns a reference to the track quality used in the classification.

Definition at line 53 of file TrackClassifier.h.

References quality_.

53 { return quality_; }
TrackQuality quality_
void TrackClassifier::qualityInformation ( reco::TrackBaseRef const &  track)
private

Classify all the tracks by their reconstruction quality.

Definition at line 213 of file TrackClassifier.cc.

References TrackCategories::BadInnerHits, TrackQuality::evaluate(), TrackCategories::flags_, TrackQuality::Layer::hits, mps_fire::i, dqmiolumiharvest::j, TrackQuality::layer(), phase1PixelTopology::layer, min(), TrackQuality::Layer::Misassoc, TrackQuality::Layer::Noise, numberOfInnerLayers_, TrackQuality::numberOfLayers(), quality_, TrackQuality::Layer::Shared, TrackCategories::SharedInnerHits, HistoryBase::simParticleTrail(), TrackQuality::Layer::Hit::state, tracer_, HLT_FULL_cff::track, and tTopo_.

Referenced by evaluate().

213  {
214  // run the hit-by-hit reconstruction quality analysis
216 
217  unsigned int maxLayers = std::min(numberOfInnerLayers_, quality_.numberOfLayers());
218 
219  // check the innermost layers for bad hits
220  for (unsigned int i = 0; i < maxLayers; i++) {
222 
223  // check all hits in that layer
224  for (unsigned int j = 0; j < layer.hits.size(); j++) {
225  const TrackQuality::Layer::Hit &hit = layer.hits[j];
226 
227  // In those cases the bad hit was used by track reconstruction
229  flags_[BadInnerHits] = true;
230  else if (hit.state == TrackQuality::Layer::Shared)
231  flags_[SharedInnerHits] = true;
232  }
233  }
234 }
unsigned int numberOfLayers() const
Return the number of layers with simulated and/or reconstructed hits.
Definition: TrackQuality.h:74
const TrackerTopology * tTopo_
unsigned int numberOfInnerLayers_
constexpr std::array< uint8_t, layerIndexSize > layer
void evaluate(SimParticleTrail const &, reco::TrackBaseRef const &, const TrackerTopology *tTopo)
Compute information about the track reconstruction quality.
T min(T a, T b)
Definition: MathUtil.h:58
const Layer & layer(unsigned int index) const
Return information about the given layer by index.
Definition: TrackQuality.h:77
TrackQuality quality_
SimParticleTrail const & simParticleTrail() const
Return all the simulated particle in the history.
Definition: HistoryBase.h:55
std::vector< Hit > hits
Definition: TrackQuality.h:56
Flags flags_
Flag containers.
TrackHistory tracer_
void TrackClassifier::reconstructionInformation ( reco::TrackBaseRef const &  track)
private

Classify all the tracks by their association and reconstruction information

Definition at line 155 of file TrackClassifier.cc.

References funct::abs(), TrackCategories::Bad, badPull_, beamSpot_, reco::TrackBase::charge(), funct::cos(), reco::TrackBase::dxy(), reco::TrackBase::dxyError(), reco::TrackBase::dz(), reco::TrackBase::dzError(), TrackCategories::flags_, magneticField_, CoreSimTrack::momentum(), FreeTrajectoryState::momentum(), AlCaHLTBitMon_ParallelJobs::p, FreeTrajectoryState::position(), edm::ESHandle< class >::product(), HistoryBase::simParticle(), funct::sin(), TrajectoryStateClosestToPoint::theState(), tracer_, findQualityFiles::v, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by evaluate().

155  {
157 
158  // Compute tracking particle parameters at point of closest approach to the
159  // beamline
160 
161  const SimTrack *assocTrack = &(*tpr->g4Track_begin());
162 
163  FreeTrajectoryState ftsAtProduction(
164  GlobalPoint(tpr->vertex().x(), tpr->vertex().y(), tpr->vertex().z()),
165  GlobalVector(assocTrack->momentum().x(), assocTrack->momentum().y(), assocTrack->momentum().z()),
166  TrackCharge(track->charge()),
168 
169  try {
170  TSCPBuilderNoMaterial tscpBuilder;
171  TrajectoryStateClosestToPoint tsAtClosestApproach =
172  tscpBuilder(ftsAtProduction, GlobalPoint(beamSpot_->x0(), beamSpot_->y0(), beamSpot_->z0()));
173 
174  GlobalVector v =
175  tsAtClosestApproach.theState().position() - GlobalPoint(beamSpot_->x0(), beamSpot_->y0(), beamSpot_->z0());
176  GlobalVector p = tsAtClosestApproach.theState().momentum();
177 
178  // Simulated dxy
179  double dxySim = -v.x() * sin(p.phi()) + v.y() * cos(p.phi());
180 
181  // Simulated dz
182  double dzSim = v.z() - (v.x() * p.x() + v.y() * p.y()) * p.z() / p.perp2();
183 
184  // Calculate the dxy pull
185  double dxyPull =
186  std::abs(track->dxy(reco::TrackBase::Point(beamSpot_->x0(), beamSpot_->y0(), beamSpot_->z0())) - dxySim) /
187  track->dxyError();
188 
189  // Calculate the dx pull
190  double dzPull =
191  std::abs(track->dz(reco::TrackBase::Point(beamSpot_->x0(), beamSpot_->y0(), beamSpot_->z0())) - dzSim) /
192  track->dzError();
193 
194  // Return true if d0Pull > badD0Pull sigmas
195  flags_[Bad] = (dxyPull > badPull_ || dzPull > badPull_);
196 
197  } catch (cms::Exception const &) {
198  flags_[Bad] = true;
199  }
200 }
const FreeTrajectoryState & theState() const
const TrackingParticleRef & simParticle() const
Return the initial tracking particle from the history.
Definition: HistoryBase.h:67
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
T y() const
Definition: PV3DBase.h:60
int TrackCharge
Definition: TrackCharge.h:4
T z() const
Definition: PV3DBase.h:61
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
math::XYZPoint Point
point in the space
Definition: TrackBase.h:80
edm::Handle< reco::BeamSpot > beamSpot_
GlobalVector momentum() const
GlobalPoint position() const
T const * product() const
Definition: ESHandle.h:86
edm::ESHandle< MagneticField > magneticField_
const math::XYZTLorentzVectorD & momentum() const
Definition: CoreSimTrack.h:19
Flags flags_
Flag containers.
T x() const
Definition: PV3DBase.h:59
TrackHistory tracer_
Global3DVector GlobalVector
Definition: GlobalVector.h:10
void TrackClassifier::simulationInformation ( )
private

Get all the information related to the simulation details.

Definition at line 202 of file TrackClassifier.cc.

References funct::abs(), EncodedEventId::bunchCrossing(), EncodedEventId::event(), TrackCategories::flags_, minTrackerSimHits_, TrackCategories::Muon, TrackCategories::SignalEvent, HistoryBase::simParticle(), tracer_, and TrackCategories::TrackerSimHits.

Referenced by evaluate().

202  {
203  // Get the event id for the initial TP.
204  EncodedEventId eventId = tracer_.simParticle()->eventId();
205  // Check for signal events
206  flags_[SignalEvent] = !eventId.bunchCrossing() && !eventId.event();
207  // Check for muons
208  flags_[Muon] = (abs(tracer_.simParticle()->pdgId()) == 13);
209  // Check for the number of psimhit in tracker
210  flags_[TrackerSimHits] = tracer_.simParticle()->numberOfTrackerLayers() >= (int)minTrackerSimHits_;
211 }
int event() const
get the contents of the subdetector field (should be protected?)
const TrackingParticleRef & simParticle() const
Return the initial tracking particle from the history.
Definition: HistoryBase.h:67
unsigned int minTrackerSimHits_
int bunchCrossing() const
get the detector field from this detid
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
Flags flags_
Flag containers.
TrackHistory tracer_
void TrackClassifier::vertexInformation ( )
private

Get geometrical information about the vertices.

Definition at line 415 of file TrackClassifier.cc.

References counter, TrackCategories::flags_, HistoryBase::genParticleTrail(), genpvs_, AlCaHLTBitMon_ParallelJobs::p, SpecificationBuilder_cfi::parent(), funct::pow(), TrackCategories::PrimaryVertex, TrackCategories::SecondaryVertex, HistoryBase::simParticleTrail(), TrackCategories::TertiaryVertex, tracer_, vertexClusteringSqDistance_, TrackClassifier::GeneratedPrimaryVertex::x, TrackClassifier::GeneratedPrimaryVertex::y, and TrackClassifier::GeneratedPrimaryVertex::z.

Referenced by evaluate().

415  {
416  // Get the main primary vertex from the list
417  GeneratedPrimaryVertex const &genpv = genpvs_.back();
418 
419  // Get the generated history of the tracks
420  const TrackHistory::GenParticleTrail &genParticleTrail = tracer_.genParticleTrail();
421 
422  // Vertex counter
423  int counter = 0;
424 
425  // Unit transformation from mm to cm
426  double const mm = 0.1;
427 
428  double oldX = genpv.x;
429  double oldY = genpv.y;
430  double oldZ = genpv.z;
431 
432  // Loop over the generated particles
433  for (TrackHistory::GenParticleTrail::const_reverse_iterator iparticle = genParticleTrail.rbegin();
434  iparticle != genParticleTrail.rend();
435  ++iparticle) {
436  // Look for those with production vertex
437  HepMC::GenVertex *parent = (*iparticle)->production_vertex();
438  if (parent) {
439  HepMC::ThreeVector p = parent->point3d();
440 
441  double distance2 = pow(p.x() * mm - genpv.x, 2) + pow(p.y() * mm - genpv.y, 2) + pow(p.z() * mm - genpv.z, 2);
442  double difference2 = pow(p.x() * mm - oldX, 2) + pow(p.y() * mm - oldY, 2) + pow(p.z() * mm - oldZ, 2);
443 
444  // std::cout << "Distance2 : " << distance2 << " (" << p.x() * mm << ","
445  // << p.y() * mm << "," << p.z() * mm << ")" << std::endl; std::cout <<
446  // "Difference2 : " << difference2 << std::endl;
447 
448  if (difference2 > vertexClusteringSqDistance_) {
449  if (distance2 > vertexClusteringSqDistance_)
450  counter++;
451  oldX = p.x() * mm;
452  oldY = p.y() * mm;
453  oldZ = p.z() * mm;
454  }
455  }
456  }
457 
458  const TrackHistory::SimParticleTrail &simParticleTrail = tracer_.simParticleTrail();
459 
460  // Loop over the generated particles
461  for (TrackHistory::SimParticleTrail::const_reverse_iterator iparticle = simParticleTrail.rbegin();
462  iparticle != simParticleTrail.rend();
463  ++iparticle) {
464  // Look for those with production vertex
465  TrackingParticle::Point p = (*iparticle)->vertex();
466 
467  double distance2 = pow(p.x() - genpv.x, 2) + pow(p.y() - genpv.y, 2) + pow(p.z() - genpv.z, 2);
468  double difference2 = pow(p.x() - oldX, 2) + pow(p.y() - oldY, 2) + pow(p.z() - oldZ, 2);
469 
470  // std::cout << "Distance2 : " << distance2 << " (" << p.x() << "," << p.y()
471  // << "," << p.z() << ")" << std::endl; std::cout << "Difference2 : " <<
472  // difference2 << std::endl;
473 
474  if (difference2 > vertexClusteringSqDistance_) {
475  if (distance2 > vertexClusteringSqDistance_)
476  counter++;
477  oldX = p.x();
478  oldY = p.y();
479  oldZ = p.z();
480  }
481  }
482 
483  if (!counter)
484  flags_[PrimaryVertex] = true;
485  else if (counter == 1)
486  flags_[SecondaryVertex] = true;
487  else
488  flags_[TertiaryVertex] = true;
489 }
std::vector< GeneratedPrimaryVertex > genpvs_
std::vector< const HepMC::GenParticle * > GenParticleTrail
HepMC::GenParticle trail type.
Definition: HistoryBase.h:15
math::XYZPointD Point
point in the space
SimParticleTrail const & simParticleTrail() const
Return all the simulated particle in the history.
Definition: HistoryBase.h:55
static std::atomic< unsigned int > counter
Flags flags_
Flag containers.
double vertexClusteringSqDistance_
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
GenParticleTrail const & genParticleTrail() const
Return all generated particle (HepMC::GenParticle) in the history.
Definition: HistoryBase.h:61
TrackHistory tracer_
std::vector< TrackingParticleRef > SimParticleTrail
SimParticle trail type.
Definition: HistoryBase.h:30

Member Data Documentation

double TrackClassifier::badPull_
private

Definition at line 59 of file TrackClassifier.h.

Referenced by reconstructionInformation(), and TrackClassifier().

edm::Handle<reco::BeamSpot> TrackClassifier::beamSpot_
private

Definition at line 82 of file TrackClassifier.h.

Referenced by newEvent(), and reconstructionInformation().

const edm::InputTag TrackClassifier::beamSpotLabel_
private

Definition at line 57 of file TrackClassifier.h.

Referenced by newEvent(), and TrackClassifier().

const G4toCMSLegacyProcTypeMap TrackClassifier::g4toCMSProcMap_
private

Definition at line 69 of file TrackClassifier.h.

Referenced by processesAtSimulation().

std::vector<GeneratedPrimaryVertex> TrackClassifier::genpvs_
private

Definition at line 126 of file TrackClassifier.h.

Referenced by genPrimaryVertices(), and vertexInformation().

const edm::InputTag TrackClassifier::hepMCLabel_
private

Definition at line 56 of file TrackClassifier.h.

Referenced by newEvent(), and TrackClassifier().

double TrackClassifier::longLivedDecayLength_
private

Definition at line 60 of file TrackClassifier.h.

Referenced by processesAtGenerator(), processesAtSimulation(), and TrackClassifier().

edm::ESHandle<MagneticField> TrackClassifier::magneticField_
private

Definition at line 71 of file TrackClassifier.h.

Referenced by newEvent(), and reconstructionInformation().

edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> TrackClassifier::magneticFieldToken_
private

Definition at line 72 of file TrackClassifier.h.

Referenced by newEvent().

edm::Handle<edm::HepMCProduct> TrackClassifier::mcInformation_
private

Definition at line 74 of file TrackClassifier.h.

Referenced by genPrimaryVertices(), and newEvent().

unsigned int TrackClassifier::minTrackerSimHits_
private

Definition at line 63 of file TrackClassifier.h.

Referenced by simulationInformation(), and TrackClassifier().

unsigned int TrackClassifier::numberOfInnerLayers_
private

Definition at line 62 of file TrackClassifier.h.

Referenced by qualityInformation(), and TrackClassifier().

edm::ESHandle<ParticleDataTable> TrackClassifier::particleDataTable_
private

Definition at line 76 of file TrackClassifier.h.

Referenced by isCharged(), newEvent(), processesAtGenerator(), and processesAtSimulation().

edm::ESGetToken<ParticleDataTable, PDTRecord> TrackClassifier::particleDataTableToken_
private

Definition at line 77 of file TrackClassifier.h.

Referenced by newEvent().

TrackQuality TrackClassifier::quality_
private

Definition at line 67 of file TrackClassifier.h.

Referenced by newEvent(), quality(), and qualityInformation().

TrackHistory TrackClassifier::tracer_
private
edm::ESHandle<TransientTrackBuilder> TrackClassifier::transientTrackBuilder_
private

Definition at line 79 of file TrackClassifier.h.

Referenced by newEvent().

edm::ESGetToken<TransientTrackBuilder, TransientTrackRecord> TrackClassifier::transientTrackBuilderToken_
private

Definition at line 80 of file TrackClassifier.h.

Referenced by newEvent().

const TrackerTopology* TrackClassifier::tTopo_
private

Definition at line 84 of file TrackClassifier.h.

Referenced by newEvent(), and qualityInformation().

edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> TrackClassifier::tTopoHandToken_
private

Definition at line 85 of file TrackClassifier.h.

Referenced by newEvent().

double TrackClassifier::vertexClusteringSqDistance_
private

Definition at line 61 of file TrackClassifier.h.

Referenced by genPrimaryVertices(), TrackClassifier(), and vertexInformation().