CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros 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 TrackClassifierByProxy< Collection >

Classes

struct  G4
 
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 &)
 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 &)
 Classify all the tracks by their association and reconstruction information. More...
 
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_
 
std::vector
< GeneratedPrimaryVertex
genpvs_
 
const edm::InputTag hepMCLabel_
 
double longLivedDecayLength_
 
edm::ESHandle< MagneticFieldmagneticField_
 
edm::Handle< edm::HepMCProductmcInformation_
 
unsigned int minTrackerSimHits_
 
unsigned int numberOfInnerLayers_
 
edm::ESHandle< ParticleDataTableparticleDataTable_
 
TrackQuality quality_
 
TrackHistory tracer_
 
edm::ESHandle
< TransientTrackBuilder
transientTrackBuilder_
 
const TrackerTopologytTopo_
 
double vertexClusteringSqDistance_
 

Additional Inherited Members

- Static Public Attributes inherited from TrackCategories
static const char * 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 28 of file TrackClassifier.h.

Member Typedef Documentation

Type to the associate category.

Definition at line 34 of file TrackClassifier.h.

Constructor & Destructor Documentation

TrackClassifier::TrackClassifier ( edm::ParameterSet const &  config)

Constructor by ParameterSet.

Definition at line 12 of file TrackClassifier.cc.

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

12  : TrackCategories(),
13  hepMCLabel_( config.getUntrackedParameter<edm::InputTag>("hepMC") ),
14  beamSpotLabel_( config.getUntrackedParameter<edm::InputTag>("beamSpot") ),
15  tracer_(config),
17 {
18  // Set the history depth after hadronization
19  tracer_.depth(-2);
20 
21  // Set the maximum d0pull for the bad category
22  badPull_ = config.getUntrackedParameter<double>("badPull");
23 
24  // Set the minimum decay length for detecting long decays
25  longLivedDecayLength_ = config.getUntrackedParameter<double>("longLivedDecayLength");
26 
27  // Set the distance for clustering vertices
28  float vertexClusteringDistance = config.getUntrackedParameter<double>("vertexClusteringDistance");
29  vertexClusteringSqDistance_ = vertexClusteringDistance * vertexClusteringDistance;
30 
31  // Set the number of innermost layers to check for bad hits
32  numberOfInnerLayers_ = config.getUntrackedParameter<unsigned int>("numberOfInnerLayers");
33 
34  // Set the minimum number of simhits in the tracker
35  minTrackerSimHits_ = config.getUntrackedParameter<unsigned int>("minTrackerSimHits");
36 }
const edm::InputTag beamSpotLabel_
const edm::InputTag hepMCLabel_
unsigned int numberOfInnerLayers_
unsigned int minTrackerSimHits_
TrackQuality quality_
TrackCategories()
Void constructor.
void depth(int d)
Set the depth of the history.
Definition: HistoryBase.h:47
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 72 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(), TrackClassifierByProxy< Collection >::evaluate(), evaluate(), QualityCutsAnalyzer::LoopOverJetTracksAssociation(), and JetVetoedTracksAssociationDRVertex::produce().

73 {
74  // Initializing the category vector
75  reset();
76 
77  // Associate and evaluate the track history (check for fakes)
78  if ( tracer_.evaluate(track) )
79  {
80  // Classify all the tracks by their association and reconstruction information
82 
83  // Get all the information related to the simulation details
85 
86  // Analyse the track reconstruction quality
87  qualityInformation(track);
88 
89  // Get hadron flavor of the initial hadron
90  hadronFlavor();
91 
92  // Get all the information related to decay process
94 
95  // Get information about conversion and other interactions
97 
98  // Get geometrical information about the vertices
100 
101  // Check for unkown classification
102  unknownTrack();
103  }
104  else
105  flags_[Fake] = true;
106 
107  return *this;
108 }
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 &)
Classify all the tracks by their association and reconstruction information.
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:39
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 111 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().

112 {
113  // Initializing the category vector
114  reset();
115 
116  // Trace the history for the given TP
117  tracer_.evaluate(track);
118 
119  // Collect the associated reco track
121 
122  // If there is a reco truck then evaluate the simulated history
123  if ( recotrack.isNonnull() )
124  {
125  flags_[Reconstructed] = true;
126  // Classify all the tracks by their association and reconstruction information
127  reconstructionInformation(recotrack);
128  // Analyse the track reconstruction quality
129  qualityInformation(recotrack);
130  }
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 }
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 &)
Classify all the tracks by their association and reconstruction information.
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:39
Flags flags_
Flag containers.
const reco::TrackBaseRef & recoTrack() const
Return a reference to the reconstructed track.
Definition: TrackHistory.h:60
void reset()
Reset the categories flags.
bool isNonnull() const
Checks for non-null.
Definition: RefToBase.h:279
TrackHistory tracer_
TrackClassifier const& TrackClassifier::evaluate ( reco::TrackRef const &  track)
inline

Classify the RecoTrack in categories.

Definition at line 49 of file TrackClassifier.h.

References evaluate().

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

Definition at line 569 of file TrackClassifier.cc.

References funct::abs(), event(), spr::find(), genpvs_, customizeTrackingMonitorSeedNumber::idx, isCharged(), isFinalstateParticle(), m, mcInformation_, parents, funct::pow(), python.multivaluedict::sort(), and vertexClusteringSqDistance_.

Referenced by newEvent().

570 {
571  genpvs_.clear();
572 
573  const HepMC::GenEvent * event = mcInformation_->GetEvent();
574 
575  if (event)
576  {
577  int idx = 0;
578 
579  // Loop over the different GenVertex
580  for ( HepMC::GenEvent::vertex_const_iterator ivertex = event->vertices_begin(); ivertex != event->vertices_end(); ++ivertex )
581  {
582  bool hasParentVertex = false;
583 
584  // Loop over the parents looking to see if they are coming from a production vertex
585  for (
586  HepMC::GenVertex::particle_iterator iparent = (*ivertex)->particles_begin(HepMC::parents);
587  iparent != (*ivertex)->particles_end(HepMC::parents);
588  ++iparent
589  )
590  if ( (*iparent)->production_vertex() )
591  {
592  hasParentVertex = true;
593  break;
594  }
595 
596  // Reject those vertices with parent vertices
597  if (hasParentVertex) continue;
598 
599  // Get the position of the vertex
600  HepMC::FourVector pos = (*ivertex)->position();
601 
602  double const mm = 0.1;
603 
604  GeneratedPrimaryVertex pv(pos.x()*mm, pos.y()*mm, pos.z()*mm);
605 
606  std::vector<GeneratedPrimaryVertex>::iterator ientry = genpvs_.begin();
607 
608  // Search for a VERY close vertex in the list
609  for (; ientry != genpvs_.end(); ++ientry)
610  {
611  double distance2 = pow(pv.x - ientry->x, 2) + pow(pv.y - ientry->y, 2) + pow(pv.z - ientry->z, 2);
612  if ( distance2 < vertexClusteringSqDistance_ )
613  break;
614  }
615 
616  // Check if there is not a VERY close vertex and added to the list
617  if (ientry == genpvs_.end())
618  ientry = genpvs_.insert(ientry,pv);
619 
620  // Add the vertex barcodes to the new or existent vertices
621  ientry->genVertex.push_back((*ivertex)->barcode());
622 
623  // Collect final state descendants
624  for (
625  HepMC::GenVertex::particle_iterator idecendants = (*ivertex)->particles_begin(HepMC::descendants);
626  idecendants != (*ivertex)->particles_end(HepMC::descendants);
627  ++idecendants
628  )
629  {
630  if (isFinalstateParticle(*idecendants))
631  if ( find(ientry->finalstateParticles.begin(), ientry->finalstateParticles.end(), (*idecendants)->barcode()) == ientry->finalstateParticles.end() )
632  {
633  ientry->finalstateParticles.push_back((*idecendants)->barcode());
634  HepMC::FourVector m = (*idecendants)->momentum();
635 
636  ientry->ptot.setPx(ientry->ptot.px() + m.px());
637  ientry->ptot.setPy(ientry->ptot.py() + m.py());
638  ientry->ptot.setPz(ientry->ptot.pz() + m.pz());
639  ientry->ptot.setE(ientry->ptot.e() + m.e());
640  ientry->ptsq += m.perp() * m.perp();
641 
642  if ( m.perp() > 0.8 && std::abs(m.pseudoRapidity()) < 2.5 && isCharged(*idecendants) ) ientry->nGenTrk++;
643  }
644  }
645  idx++;
646  }
647  }
648 
649  std::sort(genpvs_.begin(), genpvs_.end());
650 }
TPRegexp parents
Definition: eve_filter.cc:24
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:7
std::vector< GeneratedPrimaryVertex > genpvs_
bool isCharged(const HepMC::GenParticle *)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
bool isFinalstateParticle(const HepMC::GenParticle *)
double vertexClusteringSqDistance_
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
void TrackClassifier::hadronFlavor ( )
private

Get hadron flavor of the initial hadron.

Definition at line 259 of file TrackClassifier.cc.

References TrackCategories::Bottom, TrackCategories::Charm, TrackCategories::flags_, configurableAnalysis::GenParticle, HistoryBase::genParticle(), TrackCategories::Light, RecoTau_DiTaus_pt_20-420_cfg::ParticleID, sysUtil::pid, and tracer_.

Referenced by evaluate().

260 {
261  // Get the initial hadron
262  const HepMC::GenParticle * particle = tracer_.genParticle();
263 
264  // Check for the initial hadron
265  if (particle)
266  {
267  HepPDT::ParticleID pid(particle->pdg_id());
268  flags_[Bottom] = pid.hasBottom();
269  flags_[Charm] = pid.hasCharm();
270  flags_[Light] = !pid.hasCharm() && !pid.hasBottom();
271  }
272 }
tuple pid
Definition: sysUtil.py:22
Flags flags_
Flag containers.
TrackHistory tracer_
const HepMC::GenParticle * genParticle() const
Returns a pointer to most primitive status 1 or 2 particle.
Definition: HistoryBase.h:89
TrackHistory const& TrackClassifier::history ( ) const
inline

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

Definition at line 55 of file TrackClassifier.h.

References tracer_.

Referenced by TrackHistoryAnalyzer::analyze().

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

Definition at line 556 of file TrackClassifier.cc.

References particleDataTable_.

Referenced by genPrimaryVertices().

557 {
558  const ParticleData * part = particleDataTable_->particle( p->pdg_id() );
559  if (part)
560  return part->charge()!=0;
561  else
562  {
563  // the new/improved particle table doesn't know anti-particles
564  return particleDataTable_->particle( -p->pdg_id() ) != 0;
565  }
566 }
HepPDT::ParticleData ParticleData
part
Definition: HCALResponse.h:20
edm::ESHandle< ParticleDataTable > particleDataTable_
bool TrackClassifier::isFinalstateParticle ( const HepMC::GenParticle *  p)
private

Definition at line 550 of file TrackClassifier.cc.

Referenced by genPrimaryVertices().

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

Pre-process event information (for accessing reconstraction information)

Definition at line 39 of file TrackClassifier.cc.

References beamSpot_, beamSpotLabel_, genPrimaryVertices(), edm::EventSetup::get(), edm::EventSetup::getData(), hepMCLabel_, magneticField_, mcInformation_, TrackHistory::newEvent(), TrackQuality::newEvent(), particleDataTable_, edm::ESHandle< class >::product(), quality_, tracer_, transientTrackBuilder_, and tTopo_.

Referenced by TrackCategoriesAnalyzer::analyze(), TrackingParticleCategoriesAnalyzer::analyze(), TrackHistoryAnalyzer::analyze(), QualityCutsAnalyzer::analyze(), TrackClassifierByProxy< Collection >::newEvent(), and JetVetoedTracksAssociatorAtVertex::produce().

40 {
41  // Get the new event information for the tracer
43 
44  // Get the new event information for the track quality analyser
46 
47  // Get hepmc of the event
48  event.getByLabel(hepMCLabel_, mcInformation_);
49 
50  // Magnetic field
52 
53  // Get the partivle data table
54  setup.getData(particleDataTable_);
55 
56  // get the beam spot
57  event.getByLabel(beamSpotLabel_, beamSpot_);
58 
59  // Transient track builder
60  setup.get<TransientTrackRecord>().get("TransientTrackBuilder", transientTrackBuilder_);
61 
62  // Create the list of primary vertices associated to the event
64 
65  //Retrieve tracker topology from geometry
67  setup.get<IdealGeometryRecord>().get(tTopoHand);
68  tTopo_=tTopoHand.product();
69 }
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::ESHandle< TransientTrackBuilder > transientTrackBuilder_
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
edm::Handle< reco::BeamSpot > beamSpot_
TrackQuality quality_
T const * product() const
Definition: ESHandle.h:62
edm::ESHandle< MagneticField > magneticField_
void newEvent(const edm::Event &, const edm::EventSetup &)
Pre-process event information (for accessing reconstruction information)
edm::ESHandle< ParticleDataTable > particleDataTable_
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
TrackHistory tracer_
void TrackClassifier::processesAtGenerator ( )
private

Get all the information related to decay process.

Definition at line 275 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, HistoryBase::genParticleTrail(), TrackCategories::JpsiDecay, TrackCategories::KsDecay, TrackCategories::LambdaDecay, TrackCategories::LongLivedDecay, longLivedDecayLength_, TrackCategories::Muon, particleDataTable_, RecoTau_DiTaus_pt_20-420_cfg::ParticleID, TrackCategories::SigmaMinusDecay, TrackCategories::SigmaPlusDecay, tracer_, update, and TrackCategories::XiDecay.

Referenced by evaluate().

276 {
277  // pdgid of the "in" particle to the production vertex
278  int pdgid = 0;
279 
280  // Get the generated particles from track history
281  TrackHistory::GenParticleTrail const & genParticleTrail = tracer_.genParticleTrail();
282 
283  // Loop over the generated particles
284  for (TrackHistory::GenParticleTrail::const_iterator iparticle = genParticleTrail.begin(); iparticle != genParticleTrail.end(); ++iparticle)
285  {
286  // Get the source vertex for the particle
287  HepMC::GenVertex * productionVertex = (*iparticle)->production_vertex();
288 
289  // Get the pointer to the vertex by removing the const-ness (no const methos in HepMC::GenVertex)
290  // HepMC::GenVertex * vertex = const_cast<HepMC::GenVertex *>(*ivertex);
291 
292  // Check for a non-null pointer to the production vertex
293  if (productionVertex)
294  {
295  // Only case track history will navegate (one in or source particle per vertex)
296  if ( productionVertex->particles_in_size() == 1 )
297  {
298  // Look at the pdgid of the first "in" particle to the vertex
299  pdgid = std::abs((*productionVertex->particles_in_const_begin())->pdg_id());
300  // Get particle type
301  HepPDT::ParticleID particleID(pdgid);
302 
303  // Check if the particle type is valid one
304  if (particleID.isValid())
305  {
306  // Get particle data
307  ParticleData const * particleData = particleDataTable_->particle(particleID);
308  // Check if the particle exist in the table
309  if (particleData)
310  {
311  // Check if their life time is bigger than longLivedDecayLength_
312  if ( particleData->lifetime() > longLivedDecayLength_ )
313  update(flags_[LongLivedDecay], true);
314  // Check for B and C weak decays
315  update(flags_[BWeakDecay], particleID.hasBottom());
316  update(flags_[CWeakDecay], particleID.hasCharm());
317  // Check for B and C pure leptonic decay
318  int daughterId = abs((*iparticle)->pdg_id());
319  update(flags_[FromBWeakDecayMuon], particleID.hasBottom() && daughterId == 13);
320  update(flags_[FromCWeakDecayMuon], particleID.hasCharm() && daughterId == 13);
321  }
322  // Check Tau, Ks and Lambda decay
323  update(flags_[ChargePionDecay], pdgid == 211);
324  update(flags_[ChargeKaonDecay], pdgid == 321);
325  update(flags_[TauDecay], pdgid == 15);
326  update(flags_[KsDecay], pdgid == 310);
327  update(flags_[LambdaDecay], pdgid == 3122);
328  update(flags_[JpsiDecay], pdgid == 443);
329  update(flags_[XiDecay], pdgid == 3312);
330  update(flags_[SigmaPlusDecay], pdgid == 3222);
331  update(flags_[SigmaMinusDecay], pdgid == 3112);
332  }
333  }
334  }
335  }
336  // Decays in flight
340 }
std::vector< const HepMC::GenParticle * > GenParticleTrail
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_
edm::ESHandle< ParticleDataTable > particleDataTable_
GenParticleTrail const & genParticleTrail() const
Return all generated particle in the history.
Definition: HistoryBase.h:71
TrackHistory tracer_
void TrackClassifier::processesAtSimulation ( )
private

Get information about conversion and other interactions.

Definition at line 343 of file TrackClassifier.cc.

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

Referenced by evaluate().

344 {
345  TrackHistory::SimParticleTrail const & simParticleTrail = tracer_.simParticleTrail();
346 
347  // Loop over the simulated particles
348  for (
349  TrackHistory::SimParticleTrail::const_iterator iparticle = simParticleTrail.begin();
350  iparticle != simParticleTrail.end();
351  ++iparticle
352  )
353  {
354  // pdgid of the real source parent vertex
355  int pdgid = 0;
356 
357  // Get a reference to the TP's parent vertex
358  TrackingVertexRef const & parentVertex = (*iparticle)->parentVertex();
359 
360  // Look for the original source track
361  if ( parentVertex.isNonnull() )
362  {
363  // select the original source in case of combined vertices
364  bool flag = false;
366 
367  for (its = parentVertex->sourceTracks_begin(); its != parentVertex->sourceTracks_end(); ++its)
368  {
369  for (itd = parentVertex->daughterTracks_begin(); itd != parentVertex->daughterTracks_end(); ++itd)
370  if (itd != its)
371  {
372  flag = true;
373  break;
374  }
375  if (flag)
376  break;
377  }
378 
379  // Collect the pdgid of the original source track
380  if ( its != parentVertex->sourceTracks_end() )
381  pdgid = std::abs((*its)->pdgId());
382  else
383  pdgid = 0;
384  }
385 
386  unsigned short process = 0;
387 
388  // Check existence of SimVerteces assigned
389  if(parentVertex->nG4Vertices() > 0) {
390  process = (*(parentVertex->g4Vertices_begin())).processType();
391  }
392 
393  // Flagging all the different processes
394  update(
396  process != G4::Undefined &&
397  process != G4::Unknown &&
398  process != G4::Primary
399  );
400 
402  update(flags_[UnknownProcess], process == G4::Unknown);
403  update(flags_[PrimaryProcess], process == G4::Primary);
405  update(flags_[DecayProcess], process == G4::Decay);
406  update(flags_[ComptonProcess], process == G4::Compton);
408  update(flags_[EIoniProcess], process == G4::EIoni);
409  update(flags_[HIoniProcess], process == G4::HIoni);
410  update(flags_[MuIoniProcess], process == G4::MuIoni);
411  update(flags_[PhotonProcess], process == G4::Photon);
414  update(flags_[EBremProcess], process == G4::EBrem);
416  update(flags_[MuBremProcess], process == G4::MuBrem);
417  update(flags_[MuNuclProcess], process == G4::MuNucl);
418 
419  // Get particle type
420  HepPDT::ParticleID particleID(pdgid);
421 
422  // Check if the particle type is valid one
423  if (particleID.isValid())
424  {
425  // Get particle data
426  ParticleData const * particleData = particleDataTable_->particle(particleID);
427  // Special treatment for decays
428  if (process == G4::Decay)
429  {
430  // Check if the particle exist in the table
431  if (particleData)
432  {
433  // Check if their life time is bigger than 1e-14
434  if ( particleDataTable_->particle(particleID)->lifetime() > longLivedDecayLength_ )
435  update(flags_[LongLivedDecay], true);
436 
437  // Check for B and C weak decays
438  update(flags_[BWeakDecay], particleID.hasBottom());
439  update(flags_[CWeakDecay], particleID.hasCharm());
440 
441  // Check for B or C pure leptonic decays
442  int daughtId = abs((*iparticle)->pdgId());
443  update(flags_[FromBWeakDecayMuon], particleID.hasBottom() && daughtId == 13);
444  update(flags_[FromCWeakDecayMuon], particleID.hasCharm() && daughtId == 13);
445  }
446  // Check decays
447  update(flags_[ChargePionDecay], pdgid == 211);
448  update(flags_[ChargeKaonDecay], pdgid == 321);
449  update(flags_[TauDecay], pdgid == 15);
450  update(flags_[KsDecay], pdgid == 310);
451  update(flags_[LambdaDecay], pdgid == 3122);
452  update(flags_[JpsiDecay], pdgid == 443);
453  update(flags_[XiDecay], pdgid == 3312);
454  update(flags_[OmegaDecay], pdgid == 3334);
455  update(flags_[SigmaPlusDecay], pdgid == 3222);
456  update(flags_[SigmaMinusDecay], pdgid == 3112);
457  }
458  }
459  }
460  // Decays in flight
464 }
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:250
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HepPDT::ParticleData ParticleData
SimParticleTrail const & simParticleTrail() const
Return all the simulated particle in the history.
Definition: HistoryBase.h:59
#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:27
TrackQuality const& TrackClassifier::quality ( void  ) const
inline

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

Definition at line 61 of file TrackClassifier.h.

References quality_.

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

Classify all the tracks by their reconstruction quality.

Definition at line 231 of file TrackClassifier.cc.

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

Referenced by evaluate().

232 {
233  // run the hit-by-hit reconstruction quality analysis
235 
236  unsigned int maxLayers = std::min(numberOfInnerLayers_, quality_.numberOfLayers());
237 
238  // check the innermost layers for bad hits
239  for (unsigned int i = 0; i < maxLayers; i++)
240  {
241  const TrackQuality::Layer &layer = quality_.layer(i);
242 
243  // check all hits in that layer
244  for (unsigned int j = 0; j < layer.hits.size(); j++)
245  {
246  const TrackQuality::Layer::Hit &hit = layer.hits[j];
247 
248  // In those cases the bad hit was used by track reconstruction
249  if (hit.state == TrackQuality::Layer::Noise ||
251  flags_[BadInnerHits] = true;
252  else if (hit.state == TrackQuality::Layer::Shared)
253  flags_[SharedInnerHits] = true;
254  }
255  }
256 }
unsigned int numberOfLayers() const
Return the number of layers with simulated and/or reconstructed hits.
Definition: TrackQuality.h:81
int i
Definition: DBlmapReader.cc:9
const TrackerTopology * tTopo_
unsigned int numberOfInnerLayers_
void evaluate(SimParticleTrail const &, reco::TrackBaseRef const &, const TrackerTopology *tTopo)
Compute information about the track reconstruction quality.
int j
Definition: DBlmapReader.cc:9
const Layer & layer(unsigned int index) const
Return information about the given layer by index.
Definition: TrackQuality.h:87
TrackQuality quality_
SimParticleTrail const & simParticleTrail() const
Return all the simulated particle in the history.
Definition: HistoryBase.h:59
std::vector< Hit > hits
Definition: TrackQuality.h:63
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 156 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(), cppFunctionSkipper::exception, 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().

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

Get all the information related to the simulation details.

Definition at line 218 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().

219 {
220  // Get the event id for the initial TP.
221  EncodedEventId eventId = tracer_.simParticle()->eventId();
222  // Check for signal events
223  flags_[SignalEvent] = !eventId.bunchCrossing() && !eventId.event();
224  // Check for muons
225  flags_[Muon] = (abs(tracer_.simParticle()->pdgId()) == 13);
226  // Check for the number of psimhit in tracker
227  flags_[TrackerSimHits] = tracer_.simParticle()->numberOfTrackerLayers() >= (int)minTrackerSimHits_;
228 }
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:77
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 467 of file TrackClassifier.cc.

References counter, TrackCategories::flags_, HistoryBase::genParticleTrail(), genpvs_, AlCaHLTBitMon_ParallelJobs::p, dbtoconf::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().

468 {
469  // Get the main primary vertex from the list
470  GeneratedPrimaryVertex const & genpv = genpvs_.back();
471 
472  // Get the generated history of the tracks
474 
475  // Vertex counter
476  int counter = 0;
477 
478  // Unit transformation from mm to cm
479  double const mm = 0.1;
480 
481  double oldX = genpv.x;
482  double oldY = genpv.y;
483  double oldZ = genpv.z;
484 
485  // Loop over the generated particles
486  for (
487  TrackHistory::GenParticleTrail::reverse_iterator iparticle = genParticleTrail.rbegin();
488  iparticle != genParticleTrail.rend();
489  ++iparticle
490  )
491  {
492  // Look for those with production vertex
493  HepMC::GenVertex * parent = (*iparticle)->production_vertex();
494  if (parent)
495  {
496  HepMC::ThreeVector p = parent->point3d();
497 
498  double distance2 = pow(p.x() * mm - genpv.x, 2) + pow(p.y() * mm - genpv.y, 2) + pow(p.z() * mm - genpv.z, 2);
499  double difference2 = pow(p.x() * mm - oldX, 2) + pow(p.y() * mm - oldY, 2) + pow(p.z() * mm - oldZ, 2);
500 
501  // std::cout << "Distance2 : " << distance2 << " (" << p.x() * mm << "," << p.y() * mm << "," << p.z() * mm << ")" << std::endl;
502  // std::cout << "Difference2 : " << difference2 << std::endl;
503 
504  if ( difference2 > vertexClusteringSqDistance_ )
505  {
506  if ( distance2 > vertexClusteringSqDistance_ ) counter++;
507  oldX = p.x() * mm;
508  oldY = p.y() * mm;
509  oldZ = p.z() * mm;
510  }
511  }
512  }
513 
515 
516  // Loop over the generated particles
517  for (
518  TrackHistory::SimParticleTrail::reverse_iterator iparticle = simParticleTrail.rbegin();
519  iparticle != simParticleTrail.rend();
520  ++iparticle
521  )
522  {
523  // Look for those with production vertex
524  TrackingParticle::Point p = (*iparticle)->vertex();
525 
526  double distance2 = pow(p.x() - genpv.x, 2) + pow(p.y() - genpv.y, 2) + pow(p.z() - genpv.z, 2);
527  double difference2 = pow(p.x() - oldX, 2) + pow(p.y() - oldY, 2) + pow(p.z() - oldZ, 2);
528 
529  // std::cout << "Distance2 : " << distance2 << " (" << p.x() << "," << p.y() << "," << p.z() << ")" << std::endl;
530  // std::cout << "Difference2 : " << difference2 << std::endl;
531 
532  if ( difference2 > vertexClusteringSqDistance_ )
533  {
534  if ( distance2 > vertexClusteringSqDistance_ ) counter++;
535  oldX = p.x();
536  oldY = p.y();
537  oldZ = p.z();
538  }
539  }
540 
541  if ( !counter )
542  flags_[PrimaryVertex] = true;
543  else if ( counter == 1 )
544  flags_[SecondaryVertex] = true;
545  else
546  flags_[TertiaryVertex] = true;
547 }
list parent
Definition: dbtoconf.py:74
std::vector< GeneratedPrimaryVertex > genpvs_
std::vector< const HepMC::GenParticle * > GenParticleTrail
GenParticle trail type.
Definition: HistoryBase.h:18
math::XYZPointD Point
point in the space
SimParticleTrail const & simParticleTrail() const
Return all the simulated particle in the history.
Definition: HistoryBase.h:59
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:40
GenParticleTrail const & genParticleTrail() const
Return all generated particle in the history.
Definition: HistoryBase.h:71
TrackHistory tracer_
std::vector< TrackingParticleRef > SimParticleTrail
SimParticle trail type.
Definition: HistoryBase.h:27

Member Data Documentation

double TrackClassifier::badPull_
private

Definition at line 71 of file TrackClassifier.h.

Referenced by reconstructionInformation(), and TrackClassifier().

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

Definition at line 113 of file TrackClassifier.h.

Referenced by newEvent(), and reconstructionInformation().

const edm::InputTag TrackClassifier::beamSpotLabel_
private

Definition at line 69 of file TrackClassifier.h.

Referenced by newEvent().

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

Definition at line 160 of file TrackClassifier.h.

Referenced by genPrimaryVertices(), and vertexInformation().

const edm::InputTag TrackClassifier::hepMCLabel_
private

Definition at line 68 of file TrackClassifier.h.

Referenced by newEvent().

double TrackClassifier::longLivedDecayLength_
private

Definition at line 72 of file TrackClassifier.h.

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

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

Definition at line 105 of file TrackClassifier.h.

Referenced by newEvent(), and reconstructionInformation().

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

Definition at line 107 of file TrackClassifier.h.

Referenced by genPrimaryVertices(), and newEvent().

unsigned int TrackClassifier::minTrackerSimHits_
private

Definition at line 75 of file TrackClassifier.h.

Referenced by simulationInformation(), and TrackClassifier().

unsigned int TrackClassifier::numberOfInnerLayers_
private

Definition at line 74 of file TrackClassifier.h.

Referenced by qualityInformation(), and TrackClassifier().

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

Definition at line 103 of file TrackClassifier.h.

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

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

Definition at line 111 of file TrackClassifier.h.

Referenced by newEvent().

const TrackerTopology* TrackClassifier::tTopo_
private

Definition at line 115 of file TrackClassifier.h.

Referenced by newEvent(), and qualityInformation().

double TrackClassifier::vertexClusteringSqDistance_
private

Definition at line 73 of file TrackClassifier.h.

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