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 573 of file TrackClassifier.cc.

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

Referenced by newEvent().

574 {
575  genpvs_.clear();
576 
577  const HepMC::GenEvent * event = mcInformation_->GetEvent();
578 
579  if (event)
580  {
581  int idx = 0;
582 
583  // Loop over the different GenVertex
584  for ( HepMC::GenEvent::vertex_const_iterator ivertex = event->vertices_begin(); ivertex != event->vertices_end(); ++ivertex )
585  {
586  bool hasParentVertex = false;
587 
588  // Loop over the parents looking to see if they are coming from a production vertex
589  for (
590  HepMC::GenVertex::particle_iterator iparent = (*ivertex)->particles_begin(HepMC::parents);
591  iparent != (*ivertex)->particles_end(HepMC::parents);
592  ++iparent
593  )
594  if ( (*iparent)->production_vertex() )
595  {
596  hasParentVertex = true;
597  break;
598  }
599 
600  // Reject those vertices with parent vertices
601  if (hasParentVertex) continue;
602 
603  // Get the position of the vertex
604  HepMC::FourVector pos = (*ivertex)->position();
605 
606  double const mm = 0.1;
607 
608  GeneratedPrimaryVertex pv(pos.x()*mm, pos.y()*mm, pos.z()*mm);
609 
610  std::vector<GeneratedPrimaryVertex>::iterator ientry = genpvs_.begin();
611 
612  // Search for a VERY close vertex in the list
613  for (; ientry != genpvs_.end(); ++ientry)
614  {
615  double distance2 = pow(pv.x - ientry->x, 2) + pow(pv.y - ientry->y, 2) + pow(pv.z - ientry->z, 2);
616  if ( distance2 < vertexClusteringSqDistance_ )
617  break;
618  }
619 
620  // Check if there is not a VERY close vertex and added to the list
621  if (ientry == genpvs_.end())
622  ientry = genpvs_.insert(ientry,pv);
623 
624  // Add the vertex barcodes to the new or existent vertices
625  ientry->genVertex.push_back((*ivertex)->barcode());
626 
627  // Collect final state descendants
628  for (
629  HepMC::GenVertex::particle_iterator idecendants = (*ivertex)->particles_begin(HepMC::descendants);
630  idecendants != (*ivertex)->particles_end(HepMC::descendants);
631  ++idecendants
632  )
633  {
634  if (isFinalstateParticle(*idecendants))
635  if ( find(ientry->finalstateParticles.begin(), ientry->finalstateParticles.end(), (*idecendants)->barcode()) == ientry->finalstateParticles.end() )
636  {
637  ientry->finalstateParticles.push_back((*idecendants)->barcode());
638  HepMC::FourVector m = (*idecendants)->momentum();
639 
640  ientry->ptot.setPx(ientry->ptot.px() + m.px());
641  ientry->ptot.setPy(ientry->ptot.py() + m.py());
642  ientry->ptot.setPz(ientry->ptot.pz() + m.pz());
643  ientry->ptot.setE(ientry->ptot.e() + m.e());
644  ientry->ptsq += m.perp() * m.perp();
645 
646  if ( m.perp() > 0.8 && std::abs(m.pseudoRapidity()) < 2.5 && isCharged(*idecendants) ) ientry->nGenTrk++;
647  }
648  }
649  idx++;
650  }
651  }
652 
653  std::sort(genpvs_.begin(), genpvs_.end());
654 }
TPRegexp parents
Definition: eve_filter.cc:24
edm::Handle< edm::HepMCProduct > mcInformation_
#define abs(x)
Definition: mlp_lapack.h:159
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 *)
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, evf::utils::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 }
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 560 of file TrackClassifier.cc.

References particleDataTable_.

Referenced by genPrimaryVertices().

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

Definition at line 554 of file TrackClassifier.cc.

Referenced by genPrimaryVertices().

555 {
556  return !p->end_vertex() && p->status() == 1;
557 }
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 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 }
#define abs(x)
Definition: mlp_lapack.h:159
std::vector< const HepMC::GenParticle * > GenParticleTrail
GenParticle trail type.
Definition: HistoryBase.h:18
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 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, 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  // Check for the number of psimhit if different from zero
387  if ((*iparticle)->numberOfHits()) continue;
388 
389  // Collect the G4 process of the first psimhit (it should be the same for all of them)
390 #warning "This file has been modified just to get it to compile without any regard as to whether it still functions as intended"
391 #ifdef REMOVED_JUST_TO_GET_IT_TO_COMPILE__THIS_CODE_NEEDS_TO_BE_CHECKED
392  unsigned short process = (*iparticle)->pSimHit_begin()->processType();
393 #else
394  unsigned short process = 0;
395 #endif
396  // Flagging all the different processes
397 
398  update(
400  process != G4::Undefined &&
401  process != G4::Unknown &&
402  process != G4::Primary
403  );
404 
406  update(flags_[UnknownProcess], process == G4::Unknown);
407  update(flags_[PrimaryProcess], process == G4::Primary);
409  update(flags_[DecayProcess], process == G4::Decay);
410  update(flags_[ComptonProcess], process == G4::Compton);
412  update(flags_[EIoniProcess], process == G4::EIoni);
413  update(flags_[HIoniProcess], process == G4::HIoni);
414  update(flags_[MuIoniProcess], process == G4::MuIoni);
415  update(flags_[PhotonProcess], process == G4::Photon);
418  update(flags_[EBremProcess], process == G4::EBrem);
420  update(flags_[MuBremProcess], process == G4::MuBrem);
421  update(flags_[MuNuclProcess], process == G4::MuNucl);
422 
423  // Get particle type
424  HepPDT::ParticleID particleID(pdgid);
425 
426  // Check if the particle type is valid one
427  if (particleID.isValid())
428  {
429  // Get particle data
430  ParticleData const * particleData = particleDataTable_->particle(particleID);
431  // Special treatment for decays
432  if (process == G4::Decay)
433  {
434  // Check if the particle exist in the table
435  if (particleData)
436  {
437  // Check if their life time is bigger than 1e-14
438  if ( particleDataTable_->particle(particleID)->lifetime() > longLivedDecayLength_ )
439  update(flags_[LongLivedDecay], true);
440 
441  // Check for B and C weak decays
442  update(flags_[BWeakDecay], particleID.hasBottom());
443  update(flags_[CWeakDecay], particleID.hasCharm());
444 
445  // Check for B or C pure leptonic decays
446  int daughtId = abs((*iparticle)->pdgId());
447  update(flags_[FromBWeakDecayMuon], particleID.hasBottom() && daughtId == 13);
448  update(flags_[FromCWeakDecayMuon], particleID.hasCharm() && daughtId == 13);
449  }
450  // Check decays
451  update(flags_[ChargePionDecay], pdgid == 211);
452  update(flags_[ChargeKaonDecay], pdgid == 321);
453  update(flags_[TauDecay], pdgid == 15);
454  update(flags_[KsDecay], pdgid == 310);
455  update(flags_[LambdaDecay], pdgid == 3122);
456  update(flags_[JpsiDecay], pdgid == 443);
457  update(flags_[XiDecay], pdgid == 3312);
458  update(flags_[OmegaDecay], pdgid == 3334);
459  update(flags_[SigmaPlusDecay], pdgid == 3222);
460  update(flags_[SigmaMinusDecay], pdgid == 3112);
461  }
462  }
463  }
464  // Decays in flight
468 }
long int flag
Definition: mlp_lapack.h:47
#define abs(x)
Definition: mlp_lapack.h:159
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:250
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(), 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_
#define min(a, b)
Definition: mlp_lapack.h:161
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 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
#define abs(x)
Definition: mlp_lapack.h:159
int TrackCharge
Definition: TrackCharge.h:4
T z() const
Definition: PV3DBase.h:64
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
math::XYZPoint Point
point in the space
Definition: TrackBase.h:76
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 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
#define abs(x)
Definition: mlp_lapack.h:159
unsigned int minTrackerSimHits_
int bunchCrossing() const
get the detector field from this detid
Flags flags_
Flag containers.
TrackHistory tracer_
void TrackClassifier::vertexInformation ( )
private

Get geometrical information about the vertices.

Definition at line 471 of file TrackClassifier.cc.

References 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().

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