ATLAS Offline Software
Classes | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
InDet::TrackStatHelper Class Reference

#include <TrackStatHelper.h>

Collaboration diagram for InDet::TrackStatHelper:

Classes

struct  Counter
 
struct  Counter4D
 

Public Member Functions

 TrackStatHelper (const std::string &, const std::string &, bool careAboutTruth=true)
 Constructor. More...
 
void SetCuts (const struct cuts &)
 Sets the cuts such as the eta regions (barrel, transition,endcap) and the hit fraction fake cuts and the track matching cut. More...
 
void addEvent (const TrackCollection *, std::vector< const Trk::Track * > &, const std::vector< std::pair< HepMC::ConstGenParticlePtr, int > > &, const TrackTruthCollection *, const AtlasDetectorID *const, const PixelID *, const SCT_ID *, const Trk::IExtendedTrackSummaryTool *, bool, const unsigned int *, const unsigned int *) const
 Adds hit, track and matching information for each event. More...
 
void reset ()
 Resets the track collection information, called in the constructor. More...
 
void print (MsgStream &out) const
 Prints all of the statistics information, calls printRegion, printTrackSummaryRegion, etc for detailed statistics. More...
 
void printRegion1 (MsgStream &out, enum eta_region) const
 Prints ntracks per event,efficiencies,fake rates, and general hit information for given eta region. More...
 
void printRegion2 (MsgStream &out, enum eta_region, float denominator) const
 
void printSecondary (MsgStream &out) const
 Prints all of the statistics information, calls printRegion, printTrackSummaryRegion, etc for detailed statistics. More...
 
void printRegionSecondary (MsgStream &out, enum eta_region, float denominator) const
 Prints ntracks per event,efficiencies,fake rates, and general hit information for given eta region. More...
 
bool printTrackSummaryRegion (MsgStream &out, enum track_types, enum eta_region) const
 Sets up detailed statistics part of table, calls printTrackSummaryRegion. More...
 
void printTrackSummaryAverage (MsgStream &out, enum track_types, enum eta_region, int summary_type) const
 Prints information from TrackSummaryTool. More...
 
bool PassTrackCuts (const Trk::TrackParameters *para) const
 defines 'good' reco tracks More...
 
int ClassifyParticle (const HepMC::ConstGenParticlePtr &particle, const double prob) const
 classifies gen particle as primary, secondary or truncated More...
 
const std::string & key () const
 Returns TrackCollection Key. More...
 
const std::string & Truthkey () const
 Returns Truth TrackCollection Key. More...
 

Static Public Member Functions

static std::string getSummaryTypeHeader ()
 

Private Types

enum  ETrackCounter { kTracks_rec, kTracks_gen, kTracks_gen_signal, kNTracksCounter }
 
enum  EHitsCounter { kHits_rec, kHits_pri, kHits_sec, kNHitsCounter }
 
enum  ETrackSummaryCounter { kTrackSummarySum, kNTrackSummaryOK, kNTrackSummaryBAD, kNTrackSummaryCounter }
 
enum  ETrackSummaryTypes {
  kNumberOfInnermostPixelLayerHits, kNumberOfPixelHits, kNumberOfPixelHoles, kNumberOfGangedPixels,
  kNumberOfSCTHits, kNumberOfSCTHoles, kNumberOfSCTDoubleHoles, kNumberOfTRTHits,
  kNumberOfTRTOutliers, kNumberOfTRTHighThresholdHits, kNumberOfTRTHighThresholdOutliers, kNumberOfOutliersOnTrack,
  kNSummaryTypes
}
 
using TracksCounter = Counter< kNTracksCounter, N_TRACKTYPES, N_ETAREGIONS, int >
 
using TracksCounterAtomic = Counter< kNTracksCounter, N_TRACKTYPES, N_ETAREGIONS, std::atomic< long > >
 
using HitsCounter = Counter< kNHitsCounter, N_HITTYPES, N_ETAREGIONS, int >
 
using HitsCounterAtomic = Counter< kNHitsCounter, N_HITTYPES, N_ETAREGIONS, std::atomic< long > >
 
using TrackSummaryCounter = Counter4D< kNTrackSummaryCounter, N_TRACKTYPES, N_ETAREGIONS, kNSummaryTypes, int >
 type statistics. More...
 
using TrackSummaryCounterAtomic = Counter4D< kNTrackSummaryCounter, N_TRACKTYPES, N_ETAREGIONS, kNSummaryTypes, std::atomic< long > >
 
typedef std::multimap< HepMcParticleLink, float > recoToTruthMap
 map containing reco track and matched truth track barcode More...
 

Private Member Functions

void setSummaryStat (track_types track_i, eta_region region_i, const Trk::TrackSummary *summary, TrackSummaryCounter &trackSummarySum) const
 

Private Attributes

std::string m_TrackCollectionKey
 StoreGate Track Collection Key. More...
 
std::string m_TrackTruthCollectionKey
 StoreGate Track Truth Collection Key. More...
 
std::atomic< bool > m_author_found [Trk::TrackInfo::NumberOfTrackFitters] {}
 Number of tracking authors found. More...
 
std::atomic< long > m_events {}
 Number of events. More...
 
TracksCounterAtomic m_tracks ATLAS_THREAD_SAFE
 
HitsCounterAtomic m_hits ATLAS_THREAD_SAFE
 
TrackSummaryCounterAtomic m_trackSummarySum ATLAS_THREAD_SAFE
 
std::atomic< bool > m_truthMissing
 Flag for if track truth is missing. More...
 
bool m_careAboutTruth
 
struct cuts m_cuts
 
std::mutex m_authorMutex
 
std::bitset< Trk::TrackInfo::NumberOfTrackRecoInfo > m_recoInfo ATLAS_THREAD_SAFE
 
std::bitset< Trk::TrackInfo::NumberOfTrackProperties > m_patternProperties ATLAS_THREAD_SAFE
 

Static Private Attributes

static const Trk::SummaryType s_summaryTypes [kNSummaryTypes]
 summary types for which statistics are gathered More...
 
static const char *const s_summaryTypeName [kNSummaryTypes]
 table column labels for summary More...
 

Detailed Description

Definition at line 126 of file TrackStatHelper.h.

Member Typedef Documentation

◆ HitsCounter

Definition at line 260 of file TrackStatHelper.h.

◆ HitsCounterAtomic

Definition at line 261 of file TrackStatHelper.h.

◆ recoToTruthMap

typedef std::multimap<HepMcParticleLink,float> InDet::TrackStatHelper::recoToTruthMap
private

map containing reco track and matched truth track barcode

Definition at line 335 of file TrackStatHelper.h.

◆ TracksCounter

Definition at line 250 of file TrackStatHelper.h.

◆ TracksCounterAtomic

Definition at line 251 of file TrackStatHelper.h.

◆ TrackSummaryCounter

type statistics.

Definition at line 294 of file TrackStatHelper.h.

◆ TrackSummaryCounterAtomic

Definition at line 299 of file TrackStatHelper.h.

Member Enumeration Documentation

◆ EHitsCounter

Enumerator
kHits_rec 

number of reconstructed hits for a given type and eta region

kHits_pri 

number of hits from primary tracks for a given type and eta region

kHits_sec 

number of hits from secondary tracks for a given type and eta region

kNHitsCounter 

Definition at line 254 of file TrackStatHelper.h.

254  {
255  kHits_rec,
256  kHits_pri,
257  kHits_sec,
259  };

◆ ETrackCounter

Enumerator
kTracks_rec 

number of reconstructed tracks for a given type and eta region

kTracks_gen 

number of generated tracks for a given type and eta region, looping over genevents to include possible pileup

kTracks_gen_signal 

number of generated tracks for a given type and eta region, just from first genevent

kNTracksCounter 

Definition at line 245 of file TrackStatHelper.h.

◆ ETrackSummaryCounter

Enumerator
kTrackSummarySum 

Track Summary Values for each track type, region and summary type.

kNTrackSummaryOK 

Number of tracks with track summary OK for given type,eta,summary type.

kNTrackSummaryBAD 

Number of tracks with track summary bad for given type,eta,summary type.

kNTrackSummaryCounter 

Definition at line 263 of file TrackStatHelper.h.

263  {
268  };

◆ ETrackSummaryTypes

Enumerator
kNumberOfInnermostPixelLayerHits 
kNumberOfPixelHits 
kNumberOfPixelHoles 
kNumberOfGangedPixels 
kNumberOfSCTHits 
kNumberOfSCTHoles 
kNumberOfSCTDoubleHoles 
kNumberOfTRTHits 
kNumberOfTRTOutliers 
kNumberOfTRTHighThresholdHits 
kNumberOfTRTHighThresholdOutliers 
kNumberOfOutliersOnTrack 
kNSummaryTypes 

Definition at line 274 of file TrackStatHelper.h.

Constructor & Destructor Documentation

◆ TrackStatHelper()

InDet::TrackStatHelper::TrackStatHelper ( const std::string &  TrackCollectionKey,
const std::string &  TrackTruthCollectionKey,
bool  careAboutTruth = true 
)

Constructor.

Takes strings of TrackCollectionKey and Track TruthCollectionKey. Assume that truth collections will be used, but let user specify if they intentionally will not be.

Definition at line 103 of file TrackStatHelper.cxx.

103  :
104  m_TrackCollectionKey (std::move(TrackCollectionKey)),
105  m_TrackTruthCollectionKey (std::move(TrackTruthCollectionKey)),
106  m_truthMissing (false),
107  m_careAboutTruth (careAboutTruth)
108 {
109  this->reset();
110 }

Member Function Documentation

◆ addEvent()

void InDet::TrackStatHelper::addEvent ( const TrackCollection recTracks,
std::vector< const Trk::Track * > &  rec,
const std::vector< std::pair< HepMC::ConstGenParticlePtr, int > > &  gen,
const TrackTruthCollection truthMap,
const AtlasDetectorID * const  idHelper,
const PixelID pixelID,
const SCT_ID sctID,
const Trk::IExtendedTrackSummaryTool trkSummaryTool,
bool  useTrackSummary,
const unsigned int *  inTimeStart,
const unsigned int *  inTimeEnd 
) const

Adds hit, track and matching information for each event.

Called at each event

Definition at line 119 of file TrackStatHelper.cxx.

130 {
131 
132  recoToTruthMap rttMap;
133 
134  recoToTruthMap::const_iterator imap;
135 
136  m_events ++;
137 
138  float Eta = 0;
140  int Author = 0;
141  int recoClassification = 0;
142  bool truth_missing=false;
143 
144  TracksCounter tracks;
146  TrackSummaryCounter trackSummarySum;
147  bool author_found [Trk::TrackInfo::NumberOfTrackFitters];
148  std::bitset<Trk::TrackInfo::NumberOfTrackRecoInfo> reco_info;
149  std::bitset<Trk::TrackInfo::NumberOfTrackProperties> pattern_properties;
150  for (unsigned int i=0; i < Trk::TrackInfo::NumberOfTrackFitters; ++i) { author_found[i]=false; }
151 
152  // ------------ reconstructed tracks -----------------
153  for (const Trk::Track* track : rec) {
154 
155  const Trk::TrackParameters* para = track->trackParameters()->front();
156  recoClassification = -999;
157  int thisEventIndex = -999;
158 
159  Author = track->info().trackFitter();
161  author_found[Author] = true;
162  reco_info |= track->info().patternRecognition();
163  pattern_properties |= track->info().properties();
164  }
165  else {
166  //FIX author_problem++;
167  }
168  if (!para) {
170  }
171  else {
172  Eta = std::abs(para->eta());
175  else if (Eta < m_cuts.maxEtaEndcap) Region = ETA_ENDCAP;
177  else Region = ETA_OUTSIDE;
178  }
179 
181  {
182  continue; // Only want to tally tracks that are within the detector volume.
183  }
184 
185  TrackTruthCollection::const_iterator found;
186  TrackTruth trtruth;
187  double trprob = 0;
188 
189  if (!truthMap) {
190  // no truthmap
191  truth_missing=true;
192  }
193  else {
195  tracklink.setElement(track);
196  tracklink.setStorableObject(*recTracks);
197  const ElementLink<TrackCollection> tracklink2=tracklink;
198 
199  found = truthMap->find(tracklink2);
200  if(!(found == truthMap->end())){
201  trtruth=found->second;
202  HepMcParticleLink hmpl = trtruth.particleLink();
203  thisEventIndex = hmpl.eventIndex();
204  rttMap.insert(std::pair<HepMcParticleLink,float>(hmpl,trtruth.probability()));
205  // ME: remember prob
206  trprob = trtruth.probability();
207  }
208 
209  }
210 
211 
212  if(!PassTrackCuts(para)) continue;
213 
214  tracks.m_counter[kTracks_rec][TRACK_ALL][Region]++;
215  tracks.m_counter[kTracks_rec][TRACK_ALL][ETA_ALL]++;
216  // signal only tracks for the denominator in signal efficiencies
217  if (thisEventIndex==0)
218  {
219  tracks.m_counter[kTracks_rec][TRACK_ALL_SIGNAL][Region]++;
220  tracks.m_counter[kTracks_rec][TRACK_ALL_SIGNAL][ETA_ALL]++;
221  }
222 
223  // process track summary
224 
225  std::unique_ptr<Trk::TrackSummary> cleanup;
226  const Trk::TrackSummary* summary = track->trackSummary();
227 
228  if (useTrackSummary) {
229  if (!track->trackSummary()) {
230  cleanup = trkSummaryTool->summary(*track);
231  summary=cleanup.get();
232  }
233 
234  setSummaryStat(TRACK_ALL, Region, summary, trackSummarySum);
235  }
236 
237  // check if current reco track has more than a specified fraction of hits
238  // from a generated track. [If not, it will be counted as a fake
239  // track in the statistics report.]
240 
241  if (!truthMap) {
242  truth_missing=true;
243  }
244  else {// no truthmap
245 
246  if (found == truthMap->end()) {
247  // m_truthMissing=true;
248  // no truth might happen with new truth !
249  tracks.m_counter[kTracks_rec][TRACK_NOHEPMCPARTICLELINK][Region]++;
250  tracks.m_counter[kTracks_rec][TRACK_NOHEPMCPARTICLELINK][ETA_ALL]++;
252  }
253  else{ // no link
254 
255  // ME : change logic, secondaries from G4 processes are truncated
256  const HepMcParticleLink& HMPL=trtruth.particleLink();
257  if (! HMPL.isValid()) {
258  tracks.m_counter[kTracks_rec][TRACK_NOHEPMCPARTICLELINK][Region]++;
259  tracks.m_counter[kTracks_rec][TRACK_NOHEPMCPARTICLELINK][ETA_ALL]++;
261  }
262  else {
263  //classify track as coming from primary, secondary or truncated gen particle
264 #ifdef HEPMC3
266 #else
267  const HepMC::GenParticle *particle = HMPL.cptr();
268 #endif
269  recoClassification = ClassifyParticle(particle, trprob);
270 
271  if (trprob < m_cuts.fakeTrackCut)
272  {
273  tracks.m_counter[kTracks_rec][TRACK_LOWTRUTHPROB][Region]++;
274  tracks.m_counter[kTracks_rec][TRACK_LOWTRUTHPROB][ETA_ALL]++;
275  if (thisEventIndex==0)
276  {
277  tracks.m_counter[kTracks_rec][TRACK_LOWTRUTHPROB_SIGNAL][Region]++;
278  tracks.m_counter[kTracks_rec][TRACK_LOWTRUTHPROB_SIGNAL][ETA_ALL]++;
279  }
280  setSummaryStat(TRACK_LOWTRUTHPROB, Region, summary, trackSummarySum);
281  }
282  if (trprob < m_cuts.fakeTrackCut2) {
283  tracks.m_counter[kTracks_rec][TRACK_LOWTRUTHPROB2][Region]++;
284  tracks.m_counter[kTracks_rec][TRACK_LOWTRUTHPROB2][ETA_ALL]++;
285  if (thisEventIndex==0)
286  {
287  tracks.m_counter[kTracks_rec][TRACK_LOWTRUTHPROB2_SIGNAL][Region]++;
288  tracks.m_counter[kTracks_rec][TRACK_LOWTRUTHPROB2_SIGNAL][ETA_ALL]++;
289  }
290  setSummaryStat(TRACK_LOWTRUTHPROB2, Region, summary, trackSummarySum);
291  }
292  } // end else on !isVadid
293  }
294  }
295 
296  // ------------------ hits on reconstructed tracks ---------------
297 
298  EHitsCounter part_type = ( recoClassification==TRACK_PRIMARY
299  ? kHits_pri
300  : ( recoClassification==TRACK_SECONDARY
301  ? kHits_sec
302  : kNHitsCounter));
303  for (const Trk::TrackStateOnSurface* hit : *track->trackStateOnSurfaces()) {
304  if(hit){
305  const Trk::MeasurementBase* mesh =hit->measurementOnTrack();
306  if (mesh) {
307  const Trk::RIO_OnTrack* rio{} ;
309  assert(dynamic_cast<const Trk::RIO_OnTrack*>(mesh)!=nullptr);
310  rio = static_cast<const Trk::RIO_OnTrack*>(mesh);
311  } else {
312  // try CompetingROT:
314  assert(dynamic_cast<const Trk::CompetingRIOsOnTrack*>(mesh) !=nullptr);
315  auto comprot = static_cast<const Trk::CompetingRIOsOnTrack*>(mesh);
316  rio = &comprot->rioOnTrack(comprot->indexOfMaxAssignProb());
317  }
318  }
319 
320 
321  if (rio) {
322  // skip outliers
323  if (!hit->type(Trk::TrackStateOnSurface::Measurement))
324  continue;
325 
326  hits.m_counter[kHits_rec][HIT_ALL][Region]++;
327  hits.m_counter[kHits_rec][HIT_ALL][ETA_ALL]++;
328  if(part_type<kNHitsCounter){
329  hits.m_counter[part_type][HIT_ALL][Region]++;
330  hits.m_counter[part_type][HIT_ALL][ETA_ALL]++;
331  }
332 
333  Identifier id = rio->identify();
334  int HitDet = HIT_UNKNOWN;
335  int HitLayer = N_HITTYPES;
336  bool part_type_for_all=true;
337  if (idHelper->is_trt(id)){
338  HitDet=HIT_TRT_ALL;
339  }
340  else if (idHelper->is_sct(id)){
341  HitDet=HIT_SCT_ALL;
342  if (sctID) {
343  switch (sctID->layer_disk(id)) {
344  case 0: HitLayer = HIT_SCT1; break;
345  case 1: HitLayer = HIT_SCT2; break;
346  case 2: HitLayer = HIT_SCT3; break;
347  case 3: HitLayer = HIT_SCT4; break;
348  case 4: case 5: case 6: case 7: case 8: HitLayer = HIT_SCT5TO9; break;
349  default: HitLayer = HIT_UNKNOWN; break;
350  }
351  }
352  }
353  else if (idHelper->is_pixel(id)){
354  part_type_for_all=false;
355  HitDet = HIT_PIXEL_ALL;
356  if (pixelID) {
357  switch (pixelID->layer_disk(id)) {
358  case 0: HitLayer = HIT_PIX1; break;
359  case 1: HitLayer = HIT_PIX2; break;
360  case 2: HitLayer = HIT_PIX3; break;
361  default: HitLayer = HIT_UNKNOWN;
362  }
363  }
364  }
365 
366  hits.m_counter[kHits_rec][HitDet][Region]++;
367  hits.m_counter[kHits_rec][HitDet][ETA_ALL]++;
368  if(part_type_for_all && part_type<kNHitsCounter){
369  hits.m_counter[part_type][HitDet][Region]++;
370  hits.m_counter[part_type][HitDet][ETA_ALL]++;
371  }
372 
373  if (HitLayer<N_HITTYPES) {
374  hits.m_counter[kHits_rec][HitLayer][Region]++;
375  hits.m_counter[kHits_rec][HitLayer][ETA_ALL]++;
376  if(part_type<kNHitsCounter){
377  hits.m_counter[part_type][HitLayer][Region]++;
378  hits.m_counter[part_type][HitLayer][ETA_ALL]++;
379  }
380  }
381  }
382  }
383  }
384  }
385  }
386 
387  // ------------------------- generated tracks, including pileup -----------------------------
388 
389  Eta = 0;
390  Region = ETA_ALL;
391  int classification=-999;
392  for (auto truth = gen.begin(); truth != gen.end(); ++truth) {
393  classification=-999;
394  bool inTimePileup = truth->second == 0 || (truth->second >= (int)*inTimeStart && truth->second <= (int)*inTimeEnd);
395 
396  auto particle = truth->first;
397 
398  //determine eta region
399  Eta = std::abs(particle->momentum().pseudoRapidity());
402  else if (Eta < m_cuts.maxEtaEndcap) Region = ETA_ENDCAP;
404  else Region = ETA_OUTSIDE;
406  {
407  continue; // Only want to tally tracks that are within the detector volume.
408  }
409  tracks.m_counter[kTracks_gen][TRACK_ALL][Region]++;
410  tracks.m_counter[kTracks_gen][TRACK_ALL][ETA_ALL] ++;
411  if (inTimePileup) tracks.m_counter[kTracks_gen][TRACK_ALL_SIGNAL][ETA_ALL]++; // "SIGNAL" is misnomer here
412  if (inTimePileup) tracks.m_counter[kTracks_gen][TRACK_ALL_SIGNAL][Region]++;
413 
414  //classify gen as primary, secondary or truncated
415  classification = ClassifyParticle(particle,1.);
416 
417  if(classification==TRACK_PRIMARY){
418  tracks.m_counter[kTracks_gen][TRACK_PRIMARY][ETA_ALL] ++;
419  tracks.m_counter[kTracks_gen][TRACK_PRIMARY][Region]++;
420  }
421  if(classification==TRACK_SECONDARY){
422  tracks.m_counter[kTracks_gen][TRACK_SECONDARY][ETA_ALL] ++;
423  tracks.m_counter[kTracks_gen][TRACK_SECONDARY][Region]++;
424  }
425 
426  //see if gen track has at least 1 matching reco track with high enough probability
427  bool matched = false;
428  int nmatched = 0;
429 
430  HepMcParticleLink hmpl2(particle,particle->parent_event()->event_number(),HepMcParticleLink::IS_EVENTNUM);
431  recoToTruthMap::iterator rttIter=rttMap.find(hmpl2);
432  if(rttIter != rttMap.end()){
433  for(imap = rttMap.lower_bound(hmpl2); imap !=rttMap.upper_bound(hmpl2); ++imap){
434  if(imap->second > m_cuts.matchTrackCut){
435  matched = true;
436  nmatched++;
437  }
438  }
439  }
440  if (matched) {
441  tracks.m_counter[kTracks_gen][TRACK_MATCHED][Region]++;
442  tracks.m_counter[kTracks_gen][TRACK_MATCHED][ETA_ALL]++;
443  if (inTimePileup)
444  {
445  tracks.m_counter[kTracks_gen][TRACK_MATCHED_SIGNAL][Region]++;
446  tracks.m_counter[kTracks_gen][TRACK_MATCHED_SIGNAL][ETA_ALL]++;
447  }
448  if(nmatched > 1){
449  tracks.m_counter[kTracks_gen][TRACK_MULTMATCH][Region] += nmatched-1;
450  tracks.m_counter[kTracks_gen][TRACK_MULTMATCH][ETA_ALL]+= nmatched-1;
451  }
452  if(classification==TRACK_PRIMARY){
453  tracks.m_counter[kTracks_gen][TRACK_MATCHED_PRIMARY][Region]++;
454  tracks.m_counter[kTracks_gen][TRACK_MATCHED_PRIMARY][ETA_ALL]++;
455  if(nmatched > 1){
456  tracks.m_counter[kTracks_gen][TRACK_MULTMATCH_PRIMARY][Region] += nmatched-1;
457  tracks.m_counter[kTracks_gen][TRACK_MULTMATCH_PRIMARY][ETA_ALL] += nmatched-1;
458  }
459  }
460  if(classification==TRACK_SECONDARY){
461  tracks.m_counter[kTracks_gen][TRACK_MATCHED_SECONDARY][Region]++;
462  tracks.m_counter[kTracks_gen][TRACK_MATCHED_SECONDARY][ETA_ALL]++;
463  if(nmatched > 1){
464  tracks.m_counter[kTracks_gen][TRACK_MULTMATCH_SECONDARY][Region] += nmatched-1;
465  tracks.m_counter[kTracks_gen][TRACK_MULTMATCH_SECONDARY][ETA_ALL] += nmatched-1;
466  }
467  }
468  }
469  }
470 
471  // ------------------------- generated tracks, just signal event -----------------------------
472  // For efficiencies.
473 
474  Eta = 0;
475  Region = ETA_ALL;
476  classification=-999;
477 
478  for (auto truth = gen.begin(); truth != gen.end(); ++truth)
479  {
480  if (truth->second != 0) // only signal event GenParticles
481  continue;
482 
483  classification=-999;
484 
485  auto particle = truth->first;
486 
487  //determine eta region
488  Eta = std::abs(particle->momentum().pseudoRapidity());
491  else if (Eta < m_cuts.maxEtaEndcap) Region = ETA_ENDCAP;
493  else Region = ETA_OUTSIDE;
495  {
496  continue; // Only want to tally tracks that are within the detector volume.
497  }
498  tracks.m_counter[kTracks_gen_signal][TRACK_ALL][ETA_ALL] ++;
499  tracks.m_counter[kTracks_gen_signal][TRACK_ALL][Region]++;
500 
501  //classify gen partilce as primary, secondary or truncated
502  classification = ClassifyParticle(particle,1.);
503 
504  if(classification==TRACK_PRIMARY){
505  tracks.m_counter[kTracks_gen_signal][TRACK_PRIMARY][ETA_ALL] ++;
506  tracks.m_counter[kTracks_gen_signal][TRACK_PRIMARY][Region]++;
507  }
508  if(classification==TRACK_SECONDARY){
509  tracks.m_counter[kTracks_gen_signal][TRACK_SECONDARY][ETA_ALL] ++;
510  tracks.m_counter[kTracks_gen_signal][TRACK_SECONDARY][Region]++;
511  }
512 
513  //see if gen track has at least 1 matching reco track with high enough probability
514  bool matched = false;
515  int nmatched = 0;
516 
517  HepMcParticleLink hmpl2(particle,truth->second,HepMcParticleLink::IS_EVENTNUM); // FIXME truth->second is actually the position of the GenEvent in the McEventCollection!! See InDetRecStatisticsAlg::selectGenSignal(...) method (only client of TrackStatsHelper)
518  recoToTruthMap::iterator rttIter=rttMap.find(hmpl2);
519  if(rttIter != rttMap.end()){
520  for(imap = rttMap.lower_bound(hmpl2); imap !=rttMap.upper_bound(hmpl2); ++imap){
521  if(imap->second > m_cuts.matchTrackCut){
522  matched = true;
523  nmatched++;
524  }
525  }
526  }
527  if (matched) {
528  tracks.m_counter[kTracks_gen_signal][TRACK_MATCHED][Region]++;
529  tracks.m_counter[kTracks_gen_signal][TRACK_MATCHED][ETA_ALL]++;
530  if(nmatched > 1){
531  tracks.m_counter[kTracks_gen_signal][TRACK_MULTMATCH][Region] += nmatched-1;
532  tracks.m_counter[kTracks_gen_signal][TRACK_MULTMATCH][ETA_ALL]+= nmatched-1;
533  }
534  if(classification==TRACK_PRIMARY){
535  tracks.m_counter[kTracks_gen_signal][TRACK_MATCHED_PRIMARY][Region]++;
536  tracks.m_counter[kTracks_gen_signal][TRACK_MATCHED_PRIMARY][ETA_ALL]++;
537  if(nmatched > 1){
538  tracks.m_counter[kTracks_gen_signal][TRACK_MULTMATCH_PRIMARY][Region] += nmatched-1;
539  tracks.m_counter[kTracks_gen_signal][TRACK_MULTMATCH_PRIMARY][ETA_ALL] += nmatched-1;
540  }
541  }
542  if(classification==TRACK_SECONDARY){
543  tracks.m_counter[kTracks_gen_signal][TRACK_MATCHED_SECONDARY][Region]++;
544  tracks.m_counter[kTracks_gen_signal][TRACK_MATCHED_SECONDARY][ETA_ALL]++;
545  if(nmatched > 1){
546  tracks.m_counter[kTracks_gen_signal][TRACK_MULTMATCH_SECONDARY][Region] += nmatched-1;
547  tracks.m_counter[kTracks_gen_signal][TRACK_MULTMATCH_SECONDARY][ETA_ALL] += nmatched-1;
548  }
549  }
550  }
551  }
552 
553  if (truth_missing) {
554  m_truthMissing = truth_missing;
555  }
556  m_tracks += tracks;
557  m_hits += hits;
558  m_trackSummarySum += trackSummarySum;
559  for (unsigned int i=0; i < Trk::TrackInfo::NumberOfTrackFitters; ++i) {
560  if (author_found[i]) {
561  m_author_found[i] = author_found[i];
562  }
563  }
564  {
565  std::lock_guard<std::mutex> lock(m_authorMutex);
566  m_recoInfo |= reco_info;
567  m_patternProperties |= pattern_properties;
568  }
569 }

◆ ClassifyParticle()

int InDet::TrackStatHelper::ClassifyParticle ( const HepMC::ConstGenParticlePtr particle,
const double  prob 
) const

classifies gen particle as primary, secondary or truncated

Definition at line 850 of file TrackStatHelper.cxx.

850  {
851 
852  int partClass=-999;
853 
854  // ME: only classify matched tracks
855  if (prob <= m_cuts.matchTrackCut) return partClass;
856 
857  //classify as primary, secondary or truncated
858  bool primary=false;
859  bool secondary=false;
860  bool truncated=false;
861 
862  if (particle->production_vertex()){
863 
864  // primary vertex inside innermost layer?
865  HepGeom::Point3D<double> startVertex(particle->production_vertex()->position().x(),
866  particle->production_vertex()->position().y(),
867  particle->production_vertex()->position().z());
868  if ( std::abs(startVertex.perp()) < m_cuts.maxRStartPrimary
869  && std::abs(startVertex.z()) < m_cuts.maxZStartPrimary) {
870  if (particle->end_vertex() == nullptr) {
871  primary=true;
872  }
873  else {
874  HepGeom::Point3D<double> endVertex(particle->end_vertex()->position().x(),
875  particle->end_vertex()->position().y(),
876  particle->end_vertex()->position().z());
877  if ( endVertex.perp() > m_cuts.minREndPrimary
878  || std::abs(startVertex.z()) > m_cuts.minZEndPrimary){
879  primary=true;
880  }
881  else {
882  truncated = true;
883  }
884  }
885  }
886 
887  else if ( startVertex.perp() < m_cuts.maxRStartSecondary && std::abs(startVertex.z()) < m_cuts.maxZStartSecondary) {
888  if (particle->end_vertex() == nullptr) {
889  secondary=true;
890  }
891  else {
892  HepGeom::Point3D<double> endVertex(particle->end_vertex()->position().x(),
893  particle->end_vertex()->position().y(),
894  particle->end_vertex()->position().z());
895 
896  if (endVertex.perp() > m_cuts.minREndSecondary
897  || std::abs(endVertex.z()) > m_cuts.minZEndSecondary) {
898  secondary=true;
899  }
900  }
901  }
902  }//end classification
903 
904  if(secondary)partClass=TRACK_SECONDARY;
905  if(primary)partClass=TRACK_PRIMARY;
906  if(truncated)partClass=TRACK_TRUNCATED;
907 
908  return partClass;
909 }

◆ getSummaryTypeHeader()

std::string InDet::TrackStatHelper::getSummaryTypeHeader ( )
static

Definition at line 81 of file TrackStatHelper.cxx.

81  {
82  std::stringstream out;
83  for (unsigned int stype_i=0; stype_i < kNSummaryTypes; ++stype_i ) {
84  out << std::setw(std::max(6,static_cast<int>(strlen(s_summaryTypeName[stype_i])+1))) << s_summaryTypeName[stype_i];
85  }
86  return out.str();
87 }

◆ key()

const std::string& InDet::TrackStatHelper::key ( ) const
inline

Returns TrackCollection Key.

Definition at line 177 of file TrackStatHelper.h.

177 { return m_TrackCollectionKey; }

◆ PassTrackCuts()

bool InDet::TrackStatHelper::PassTrackCuts ( const Trk::TrackParameters para) const

defines 'good' reco tracks

Definition at line 841 of file TrackStatHelper.cxx.

841  {
842  bool passed = false;
843  if(para->pT() > m_cuts.minPt && std::abs(para->eta()) < m_cuts.maxEtaFORWARD)passed = true;
844 
845 
846  return passed;
847 
848 }

◆ print()

void InDet::TrackStatHelper::print ( MsgStream &  out) const

Prints all of the statistics information, calls printRegion, printTrackSummaryRegion, etc for detailed statistics.

Definition at line 584 of file TrackStatHelper.cxx.

584  {
585 
586  out << " Printing Statistics for " << key();
587 
588  out << "TrackCollection \"" << key() << "\" " << "\n" ;
589 
590  if (m_events > 0) {
591  out << "(TrackAuthors:";
592  std::vector<std::string> author_string;
593  author_string.reserve(Trk::TrackInfo::NumberOfTrackFitters);
594  for (int i=0; i<Trk::TrackInfo::NumberOfTrackFitters; ++i) {
595  author_string.push_back( Trk::TrackInfo(static_cast<Trk::TrackInfo::TrackFitter>(i),
597  m_patternProperties,
598  m_recoInfo).dumpInfo() );
599  }
600  for (int i=0; i<Trk::TrackInfo::NumberOfTrackFitters; i++){
601  if (m_author_found[i]){
602  out << " " << author_string[i];
603  }
604  }
605  out << " )" << std::endl
606  << "TrackTruthCollection \"" << Truthkey() << "\"" << std::endl;
607 
608  if (m_truthMissing)
609  {
610  if (m_careAboutTruth)
611  out << " WARNING: TrackTruth missing for part of this TrackCollection, no efficiencies or fakerates included.!" << std::endl;
612  else
613  out << " INFO: Intentionally no TrackTruth for this TrackCollection, no efficiencies or fakerates included." << std::endl;
614  }
615  if (!m_truthMissing)
616  {
617  out << " \t\t\t ................................tracks................................" << std::endl;
618  out << " \t\t\tn/event\tSEff.pr\tSEff.sd\tSLowP1\tSLowP2\tLowP1\tLowP2\tnoLink\tmultM\t" << std::endl;
619  out << " total "; printRegion1(out,ETA_ALL);
620  out << " in barrel "; printRegion1(out,ETA_BARREL);
621  out << " in trans. "; printRegion1(out,ETA_TRANSITION);
622  out << " in endcap "; printRegion1(out,ETA_ENDCAP);
623  out << " in forwa."; printRegion1(out,ETA_FORWARD);
624 
625  }
626  else // no truth
627  {
628  out << "\t" << "tracks, n/event:" << std::endl;
629  out << "\t\t" << "total" << std::setiosflags(std::ios::fixed | std::ios::showpoint) <<
630  std::setw(7) << std::setprecision(2) << "\t" << m_tracks.m_counter[kTracks_rec][TRACK_ALL][ETA_ALL]/(float) m_events << std::endl << std::setprecision(-1);
631  out << "\t\t" << "in barrel" << std::setiosflags(std::ios::fixed | std::ios::showpoint) <<
632  std::setw(7) << std::setprecision(2) << "\t" << m_tracks.m_counter[kTracks_rec][TRACK_ALL][ETA_BARREL]/(float) m_events << std::endl << std::setprecision(-1);
633  out << "\t\t" << "in trans." << std::setiosflags(std::ios::fixed | std::ios::showpoint) <<
634  std::setw(7) << std::setprecision(2) << "\t" << m_tracks.m_counter[kTracks_rec][TRACK_ALL][ETA_TRANSITION]/(float) m_events << std::endl << std::setprecision(-1);
635  out << "\t\t" << "in endcap" << std::setiosflags(std::ios::fixed | std::ios::showpoint) <<
636  std::setw(7) << std::setprecision(2) << "\t" << m_tracks.m_counter[kTracks_rec][TRACK_ALL][ETA_ENDCAP]/(float) m_events << std::endl << std::setprecision(-1);
637  out << "\t\t" << "in forwa." << std::setiosflags(std::ios::fixed | std::ios::showpoint) <<
638  std::setw(7) << std::setprecision(2) << "\t" << m_tracks.m_counter[kTracks_rec][TRACK_ALL][ETA_FORWARD]/(float) m_events << std::endl << std::setprecision(-1);
639  }
640  out << " \t\t\t ....................................hits/track............................" << std::endl;
641  out << " \t\t\t\ttotal\tPIX1\tPIX2\tPIX3\tSCT1\tSCT2\tSCT3\tSCT4\tSCT5to9\tStraws" << std::endl;
642  out << " total "; printRegion2(out,ETA_ALL, (float) m_tracks.m_counter[kTracks_rec][TRACK_ALL][ETA_ALL]);
643  out << " in barrel "; printRegion2(out,ETA_BARREL, (float) m_tracks.m_counter[kTracks_rec][TRACK_ALL][ETA_BARREL]);
644  out << " in trans. "; printRegion2(out,ETA_TRANSITION, (float) m_tracks.m_counter[kTracks_rec][TRACK_ALL][ETA_TRANSITION] );
645  out << " in endcap "; printRegion2(out,ETA_ENDCAP, (float) m_tracks.m_counter[kTracks_rec][TRACK_ALL][ETA_ENDCAP] );
646  out << " in forwa. "; printRegion2(out,ETA_FORWARD, (float) m_tracks.m_counter[kTracks_rec][TRACK_ALL][ETA_FORWARD] );
647 
648  }
649  else
650  out << ": NO EVENTS PROCESSED! " << std::endl;
651 }

◆ printRegion1()

void InDet::TrackStatHelper::printRegion1 ( MsgStream &  out,
enum eta_region  region 
) const

Prints ntracks per event,efficiencies,fake rates, and general hit information for given eta region.

Definition at line 653 of file TrackStatHelper.cxx.

653  {
654  out << std::setiosflags(std::ios::fixed | std::ios::showpoint) << std::setw(7) << std::setprecision(2)
655  << "\t" << m_tracks.m_counter[kTracks_rec][TRACK_ALL][region]/(float) m_events;
656 
657  if (m_tracks.m_counter[kTracks_gen_signal][TRACK_PRIMARY][region]) {
658  out << "\t" << std::setprecision(4)
659  << m_tracks.m_counter[kTracks_gen_signal][TRACK_MATCHED_PRIMARY][region]/ (float) m_tracks.m_counter[kTracks_gen_signal][TRACK_PRIMARY][region] // track efficiency wrt. gen primary in signal
660  << std::setprecision(2);
661  }
662  else {
663  out << "\t" << "n/a" ;
664  }
665  if (m_tracks.m_counter[kTracks_gen_signal][TRACK_SECONDARY][region]) {
666  out << "\t" << std::setprecision(4)
667  << m_tracks.m_counter[kTracks_gen_signal][TRACK_MATCHED_SECONDARY][region]/ (float) m_tracks.m_counter[kTracks_gen_signal][TRACK_SECONDARY][region] // track efficiency wrt. gen secondary in signal
668  << std::setprecision(2);
669  }
670  else {
671  out << "\t" << "n/a" ;
672  }
673 
674  if (m_tracks.m_counter[kTracks_rec][TRACK_ALL_SIGNAL][region]) {
675  out << "\t" << 100*(m_tracks.m_counter[kTracks_rec][TRACK_LOWTRUTHPROB_SIGNAL][region]/ (float) m_tracks.m_counter[kTracks_rec][TRACK_ALL_SIGNAL][region]) << "%" // track fake rate for signal only
676  << "\t" << 100*(m_tracks.m_counter[kTracks_rec][TRACK_LOWTRUTHPROB2_SIGNAL][region]/ (float) m_tracks.m_counter[kTracks_rec][TRACK_ALL_SIGNAL][region]) << "%"; // track fake rate for signal only
677  }
678  else {
679  out << "\t" << "n/a\tn/a" ;
680  }
681 
682  if (m_tracks.m_counter[kTracks_rec][TRACK_ALL][region]) {
683  out << "\t" << 100*(m_tracks.m_counter[kTracks_rec][TRACK_LOWTRUTHPROB][region]/ (float) m_tracks.m_counter[kTracks_rec][TRACK_ALL][region]) << "%" // track fake rate
684  << "\t" << 100*(m_tracks.m_counter[kTracks_rec][TRACK_LOWTRUTHPROB2][region]/ (float) m_tracks.m_counter[kTracks_rec][TRACK_ALL][region]) << "%" // track fake rate
685  << "\t" << 100*(m_tracks.m_counter[kTracks_rec][TRACK_NOHEPMCPARTICLELINK][region]/ (float) m_tracks.m_counter[kTracks_rec][TRACK_ALL][region]) << "%" // rate of tracks without HepMcParticleLink
686  << "\t" << 100*(m_tracks.m_counter[kTracks_gen][TRACK_MULTMATCH][region]/ (float) m_tracks.m_counter[kTracks_rec][TRACK_ALL][region]) << "%"; // rate of tracks matched to the same truth track
687 
688  }
689  else{
690  out << "\tn/a\tn/a\tn/a";
691  }
692  out << std::endl << std::setprecision(-1);
693 }

◆ printRegion2()

void InDet::TrackStatHelper::printRegion2 ( MsgStream &  out,
enum eta_region  region,
float  denominator 
) const

Definition at line 695 of file TrackStatHelper.cxx.

695  {
696  out << std::setiosflags(std::ios::fixed | std::ios::showpoint) << std::setw(7) << std::setprecision(2);
697  if (denominator > 0) {
698  out << std::setiosflags(std::ios::fixed | std::ios::showpoint) << std::setw(4) << std::setprecision(1)
699  <<" \t\t" << float(m_hits.m_counter[kHits_rec][HIT_ALL ][region]/denominator) << std::setprecision(2)
700  << "\t" << float(m_hits.m_counter[kHits_rec][HIT_PIX1 ][region]/denominator)
701  << "\t" << float(m_hits.m_counter[kHits_rec][HIT_PIX2 ][region]/denominator)
702  << "\t" << float(m_hits.m_counter[kHits_rec][HIT_PIX3 ][region]/denominator)
703  << "\t" << float(m_hits.m_counter[kHits_rec][HIT_SCT1 ][region]/denominator)
704  << "\t" << float(m_hits.m_counter[kHits_rec][HIT_SCT2 ][region]/denominator)
705  << "\t" << float(m_hits.m_counter[kHits_rec][HIT_SCT3 ][region]/denominator)
706  << "\t" << float(m_hits.m_counter[kHits_rec][HIT_SCT4 ][region]/denominator)
707  << "\t" << float(m_hits.m_counter[kHits_rec][HIT_SCT5TO9][region]/denominator)
708  << "\t" << float(m_hits.m_counter[kHits_rec][HIT_TRT_ALL][region]/denominator)
709  << std::endl << std::setprecision(-1);
710  }
711  else {
712  out << " Unable to calculate: Denominator=0." << std::endl << std::setprecision(-1);
713  }
714 }

◆ printRegionSecondary()

void InDet::TrackStatHelper::printRegionSecondary ( MsgStream &  out,
enum eta_region  region,
float  denominator 
) const

Prints ntracks per event,efficiencies,fake rates, and general hit information for given eta region.

Definition at line 808 of file TrackStatHelper.cxx.

810  {
811  out << std::setiosflags(std::ios::fixed | std::ios::showpoint) << std::setw(7) << std::setprecision(2)
812  << "\t" << m_tracks.m_counter[kTracks_gen][TRACK_MATCHED_SECONDARY][region]/(float) m_events; // tracks / event
813  if (m_tracks.m_counter[kTracks_gen][TRACK_SECONDARY][region]) {
814  out << "\t" << m_tracks.m_counter[kTracks_gen][TRACK_MATCHED_SECONDARY][region]/ (float) m_tracks.m_counter[kTracks_gen][TRACK_SECONDARY][region]; // track efficiency
815  }
816  else {
817  out << "\t" << "n/a" ;
818  }
819 
820  if (denominator > 0) {
821  out << std::setiosflags(std::ios::fixed | std::ios::showpoint) << std::setw(4) << std::setprecision(1)
822  <<" " << float(m_hits.m_counter[kHits_sec][HIT_ALL ][region]/denominator) << std::setprecision(2)
823  << "\t" << float(m_hits.m_counter[kHits_sec][HIT_PIX1 ][region]/denominator)
824  << "\t" << float(m_hits.m_counter[kHits_sec][HIT_PIX2 ][region]/denominator)
825  << "\t" << float(m_hits.m_counter[kHits_sec][HIT_PIX3 ][region]/denominator)
826  << "\t" << float(m_hits.m_counter[kHits_sec][HIT_SCT1 ][region]/denominator)
827  << "\t" << float(m_hits.m_counter[kHits_sec][HIT_SCT2 ][region]/denominator)
828  << "\t" << float(m_hits.m_counter[kHits_sec][HIT_SCT3 ][region]/denominator)
829  << "\t" << float(m_hits.m_counter[kHits_sec][HIT_SCT4 ][region]/denominator)
830  << "\t" << float(m_hits.m_counter[kHits_sec][HIT_SCT5TO9][region]/denominator)
831  << "\t" << float(m_hits.m_counter[kHits_sec][HIT_TRT_ALL][region]/denominator)
832  << std::endl << std::setprecision(-1);
833  }
834  else {
835  out << " Unable to calculate: Denominator=0." << std::endl << std::setprecision(-1);
836  }
837 }

◆ printSecondary()

void InDet::TrackStatHelper::printSecondary ( MsgStream &  out) const

Prints all of the statistics information, calls printRegion, printTrackSummaryRegion, etc for detailed statistics.

Definition at line 760 of file TrackStatHelper.cxx.

760  {
761  out << "TrackCollection \"" << key() << "\" " << std::endl;
762  if (m_events > 0) {
763  out << "(TrackAuthors:";
764  std::vector<std::string> author_string;
765  author_string.reserve(Trk::TrackInfo::NumberOfTrackFitters);
766  for (int i=0; i<Trk::TrackInfo::NumberOfTrackFitters; i++) {
767  author_string.push_back( Trk::TrackInfo(static_cast<Trk::TrackInfo::TrackFitter>(i),
769  m_patternProperties,
770  m_recoInfo).dumpInfo() );
771  }
772  for (int i=0; i<Trk::TrackInfo::NumberOfTrackFitters; i++){
773  if (m_author_found[i]){
774  out << " " << author_string[i];
775  }
776  }
777  out << " )" << std::endl
778  << "TrackTruthCollection \"" << Truthkey() << "\"" << std::endl;
779 
780  if (m_truthMissing)
781  {
782  if (m_careAboutTruth)
783  out << " WARNING: TrackTruth missing for part of this TrackCollection --> No secondaries information printed!" << std::endl;
784  else
785  out << " INFO: Intentionally no TrackTruth for this TrackCollection. (No secondaries information printed.)" << std::endl;
786  }
787  if (!m_truthMissing)
788  {
789  out << " \t\t\t\t ......................truth mached tracks statistics....................." << std::endl;
790  out << " \t\t\t\tn/event\teff.\ttotal\tPIX1\tPIX2\tPIX3\tSCT1\tSCT2\tSCT3\tSCT4\tSCT5to9\tStraws" << std::endl;
791 
792 
793  out << " total secondaries ";
795  out << " secondaries in barrel ";
797  out << " secondaries in trans. ";
799  out << " secondaries in endcap ";
801  out << " secondaries in forwa. ";
803  }
804  }
805  else out << ": NO EVENTS PROCESSED! " << std::endl;
806 }

◆ printTrackSummaryAverage()

void InDet::TrackStatHelper::printTrackSummaryAverage ( MsgStream &  out,
enum track_types  track_type,
enum eta_region  eta_region,
int  summary_type 
) const

Prints information from TrackSummaryTool.

Definition at line 743 of file TrackStatHelper.cxx.

747 {
748  assert( summary_type < kNSummaryTypes);
749  long denom = m_trackSummarySum.m_counter[kNTrackSummaryOK][track_type][eta_region][summary_type]
750  + m_trackSummarySum.m_counter[kNTrackSummaryBAD][track_type][eta_region][summary_type];
751 
752  if (denom > 0) {
753  out << float ( m_trackSummarySum.m_counter[kTrackSummarySum][track_type][eta_region][summary_type]/ (float) denom);
754  }
755  else {
756  out << "n/a";
757  }
758 }

◆ printTrackSummaryRegion()

bool InDet::TrackStatHelper::printTrackSummaryRegion ( MsgStream &  out,
enum track_types  track_type,
enum eta_region  eta_region 
) const

Sets up detailed statistics part of table, calls printTrackSummaryRegion.

Definition at line 716 of file TrackStatHelper.cxx.

719 {
720  long ex_denom = m_trackSummarySum.m_counter[kNTrackSummaryOK][track_type][eta_region][kNumberOfPixelHits]
721  + m_trackSummarySum.m_counter[kNTrackSummaryBAD][track_type][eta_region][kNumberOfPixelHits];
722  if (ex_denom > 0)
723  {
724  out << std::setiosflags(std::ios::fixed | std::ios::showpoint)
725  << std::setw(8) << track_types_string[track_type]
726  << std::setw(25) << key();
727 
728  if (m_events)
729  out << std::setw(6) << std::setprecision(2) << m_tracks.m_counter[kTracks_rec][track_type][eta_region]/(float) m_events;
730  else
731  out << std::setw(6) << "n/a";
732  for (unsigned int stype_i=0; stype_i< kNSummaryTypes; ++stype_i) {
733  out << std::setw(std::max(6,static_cast<int>(strlen(s_summaryTypeName[stype_i])+1)))
734  << std::setprecision(2); printTrackSummaryAverage(out, track_type , eta_region, stype_i );
735  }
736  out << std::endl << std::setprecision(-1);
737  return true; // yes, printed output
738  }
739  else
740  return false; // no, didn't print output
741 }

◆ reset()

void InDet::TrackStatHelper::reset ( )

Resets the track collection information, called in the constructor.

Definition at line 571 of file TrackStatHelper.cxx.

571  {
572  m_events = 0;
573  m_hits.reset();
574  m_tracks.reset();
575  m_trackSummarySum.reset();
576 
577  for (int i=0; i<Trk::TrackInfo::NumberOfTrackFitters; i++) {
578  m_author_found[i] = false;
579  }
580  m_truthMissing=false;
581 }

◆ SetCuts()

void InDet::TrackStatHelper::SetCuts ( const struct cuts ct)

Sets the cuts such as the eta regions (barrel, transition,endcap) and the hit fraction fake cuts and the track matching cut.

Definition at line 113 of file TrackStatHelper.cxx.

114 {
115  m_cuts = ct;
116 
117 }

◆ setSummaryStat()

void InDet::TrackStatHelper::setSummaryStat ( track_types  track_i,
eta_region  region_i,
const Trk::TrackSummary summary,
TrackSummaryCounter trackSummarySum 
) const
inlineprivate

Definition at line 307 of file TrackStatHelper.h.

311  {
312  if (summary) {
313  for (int stype=0; stype < kNSummaryTypes; stype++) {
314  int value = summary->get(s_summaryTypes[stype]);
315  //value is -1 if undefined
316  if (value>0) {
317  trackSummarySum.m_counter[kTrackSummarySum][track_i][region_i][stype] += value;
318  trackSummarySum.m_counter[kNTrackSummaryOK][track_i][region_i][stype] ++;
319  }
320  else {
321  trackSummarySum.m_counter[kNTrackSummaryBAD][track_i][region_i][stype] ++;
322  }
323  }
324  }
325  }

◆ Truthkey()

const std::string& InDet::TrackStatHelper::Truthkey ( ) const
inline

Returns Truth TrackCollection Key.

Definition at line 179 of file TrackStatHelper.h.

179 { return m_TrackTruthCollectionKey; }

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/5]

TracksCounterAtomic m_tracks InDet::TrackStatHelper::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 252 of file TrackStatHelper.h.

◆ ATLAS_THREAD_SAFE [2/5]

HitsCounterAtomic m_hits InDet::TrackStatHelper::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 262 of file TrackStatHelper.h.

◆ ATLAS_THREAD_SAFE [3/5]

TrackSummaryCounterAtomic m_trackSummarySum InDet::TrackStatHelper::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 304 of file TrackStatHelper.h.

◆ ATLAS_THREAD_SAFE [4/5]

std::bitset<Trk::TrackInfo::NumberOfTrackRecoInfo> m_recoInfo InDet::TrackStatHelper::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 332 of file TrackStatHelper.h.

◆ ATLAS_THREAD_SAFE [5/5]

std::bitset<Trk::TrackInfo::NumberOfTrackProperties> m_patternProperties InDet::TrackStatHelper::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 333 of file TrackStatHelper.h.

◆ m_author_found

std::atomic<bool> InDet::TrackStatHelper::m_author_found[Trk::TrackInfo::NumberOfTrackFitters] {}
mutableprivate

Number of tracking authors found.

Definition at line 186 of file TrackStatHelper.h.

◆ m_authorMutex

std::mutex InDet::TrackStatHelper::m_authorMutex
mutableprivate

Definition at line 331 of file TrackStatHelper.h.

◆ m_careAboutTruth

bool InDet::TrackStatHelper::m_careAboutTruth
private

Definition at line 328 of file TrackStatHelper.h.

◆ m_cuts

struct cuts InDet::TrackStatHelper::m_cuts
private

Definition at line 328 of file TrackStatHelper.h.

◆ m_events

std::atomic<long> InDet::TrackStatHelper::m_events {}
mutableprivate

Number of events.

Definition at line 187 of file TrackStatHelper.h.

◆ m_TrackCollectionKey

std::string InDet::TrackStatHelper::m_TrackCollectionKey
private

StoreGate Track Collection Key.

Definition at line 183 of file TrackStatHelper.h.

◆ m_TrackTruthCollectionKey

std::string InDet::TrackStatHelper::m_TrackTruthCollectionKey
private

StoreGate Track Truth Collection Key.

Definition at line 184 of file TrackStatHelper.h.

◆ m_truthMissing

std::atomic<bool> InDet::TrackStatHelper::m_truthMissing
mutableprivate

Flag for if track truth is missing.

Definition at line 327 of file TrackStatHelper.h.

◆ s_summaryTypeName

const char *const InDet::TrackStatHelper::s_summaryTypeName
staticprivate
Initial value:
= {
"blay",
"pix",
"hole",
"gang",
"SCT",
"hole",
"DHole",
"TRT",
"outl",
"TRHi",
"outl",
"alloutl"}

table column labels for summary

Definition at line 291 of file TrackStatHelper.h.

◆ s_summaryTypes

const Trk::SummaryType InDet::TrackStatHelper::s_summaryTypes
staticprivate

The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
AtlasDetectorID::is_pixel
bool is_pixel(Identifier id) const
Definition: AtlasDetectorID.h:760
InDet::TrackStatHelper::kNumberOfInnermostPixelLayerHits
@ kNumberOfInnermostPixelLayerHits
Definition: TrackStatHelper.h:275
Trk::numberOfPixelHits
@ numberOfPixelHits
number of pixel layers on track with absence of hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:57
InDet::TrackStatHelper::s_summaryTypeName
static const char *const s_summaryTypeName[kNSummaryTypes]
table column labels for summary
Definition: TrackStatHelper.h:291
InDet::eta_region
eta_region
Definition: TrackStatHelper.h:74
InDet::TrackStatHelper::m_careAboutTruth
bool m_careAboutTruth
Definition: TrackStatHelper.h:328
InDet::HIT_SCT1
@ HIT_SCT1
Definition: TrackStatHelper.h:65
InDet::TRACK_LOWTRUTHPROB2_SIGNAL
@ TRACK_LOWTRUTHPROB2_SIGNAL
Definition: TrackStatHelper.h:53
Trk::TrackInfo
Contains information about the 'fitter' of this track.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:32
InDet::TRACK_LOWTRUTHPROB_SIGNAL
@ TRACK_LOWTRUTHPROB_SIGNAL
Definition: TrackStatHelper.h:52
InDet::TRACK_MATCHED
@ TRACK_MATCHED
Definition: TrackStatHelper.h:45
InDet::HIT_ALL
@ HIT_ALL
Definition: TrackStatHelper.h:59
InDet::TRACK_ALL
@ TRACK_ALL
Definition: TrackStatHelper.h:38
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
Trk::numberOfTRTHighThresholdHits
@ numberOfTRTHighThresholdHits
total number of TRT hits which pass the high threshold
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:87
InDet::TRACK_MATCHED_SIGNAL
@ TRACK_MATCHED_SIGNAL
Definition: TrackStatHelper.h:54
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
Trk::numberOfTRTHighThresholdOutliers
@ numberOfTRTHighThresholdOutliers
number of dead TRT straws crossed
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:93
Trk::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 1st pixel layer
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:53
InDet::TrackStatHelper::kNumberOfSCTHoles
@ kNumberOfSCTHoles
Definition: TrackStatHelper.h:280
InDet::TrackStatHelper::key
const std::string & key() const
Returns TrackCollection Key.
Definition: TrackStatHelper.h:177
TrigCompositeUtils::passed
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
Definition: TrigCompositeUtilsRoot.cxx:117
InDet::TrackStatHelper::m_TrackCollectionKey
std::string m_TrackCollectionKey
StoreGate Track Collection Key.
Definition: TrackStatHelper.h:183
InDet::TRACK_NOHEPMCPARTICLELINK
@ TRACK_NOHEPMCPARTICLELINK
Definition: TrackStatHelper.h:44
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
InDet::TrackStatHelper::kNumberOfOutliersOnTrack
@ kNumberOfOutliersOnTrack
Definition: TrackStatHelper.h:286
InDet::TrackStatHelper::kTracks_rec
@ kTracks_rec
number of reconstructed tracks for a given type and eta region
Definition: TrackStatHelper.h:245
AtlasDetectorID::is_sct
bool is_sct(Identifier id) const
Definition: AtlasDetectorID.h:770
InDet::TrackStatHelper::printRegion2
void printRegion2(MsgStream &out, enum eta_region, float denominator) const
Definition: TrackStatHelper.cxx:695
InDet::TrackStatHelper::m_cuts
struct cuts m_cuts
Definition: TrackStatHelper.h:329
InDet::cuts::maxEtaFORWARD
float maxEtaFORWARD
Definition: TrackStatHelper.h:88
InDet::TrackStatHelper::m_authorMutex
std::mutex m_authorMutex
Definition: TrackStatHelper.h:331
InDet::TrackStatHelper::kNumberOfTRTHighThresholdOutliers
@ kNumberOfTRTHighThresholdOutliers
Definition: TrackStatHelper.h:285
InDet::TrackStatHelper::kNumberOfTRTHighThresholdHits
@ kNumberOfTRTHighThresholdHits
Definition: TrackStatHelper.h:284
InDet::cuts::minZEndSecondary
float minZEndSecondary
Definition: TrackStatHelper.h:99
InDet::TRACK_MATCHED_SECONDARY
@ TRACK_MATCHED_SECONDARY
Definition: TrackStatHelper.h:47
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
InDet::cuts::matchTrackCut
float matchTrackCut
Truth probability has to be greater than this for track to be considered matched
Definition: TrackStatHelper.h:91
athena.value
value
Definition: athena.py:124
InDet::cuts::minZEndPrimary
float minZEndPrimary
Definition: TrackStatHelper.h:98
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
Trk::numberOfOutliersOnTrack
@ numberOfOutliersOnTrack
100 times the standard deviation of the chi2 from the surfaces
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:148
InDet::ETA_BARREL
@ ETA_BARREL
Definition: TrackStatHelper.h:75
InDet::TrackStatHelper::printRegion1
void printRegion1(MsgStream &out, enum eta_region) const
Prints ntracks per event,efficiencies,fake rates, and general hit information for given eta region.
Definition: TrackStatHelper.cxx:653
AtlasDetectorID::is_trt
bool is_trt(Identifier id) const
Definition: AtlasDetectorID.h:782
Trk::undefined
@ undefined
Definition: ParticleHypothesis.h:38
InDet::TrackStatHelper::setSummaryStat
void setSummaryStat(track_types track_i, eta_region region_i, const Trk::TrackSummary *summary, TrackSummaryCounter &trackSummarySum) const
Definition: TrackStatHelper.h:307
covarianceTool.prob
prob
Definition: covarianceTool.py:678
Trk::numberOfSCTHoles
@ numberOfSCTHoles
number of Holes in both sides of a SCT module
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:73
InDet::HIT_PIX1
@ HIT_PIX1
Definition: TrackStatHelper.h:61
InDet::ETA_OUTSIDE
@ ETA_OUTSIDE
Definition: TrackStatHelper.h:78
InDet::N_HITTYPES
@ N_HITTYPES
Definition: TrackStatHelper.h:72
master.gen
gen
Definition: master.py:32
InDet::TrackStatHelper::m_TrackTruthCollectionKey
std::string m_TrackTruthCollectionKey
StoreGate Track Truth Collection Key.
Definition: TrackStatHelper.h:184
InDet::TRACK_LOWTRUTHPROB2
@ TRACK_LOWTRUTHPROB2
Definition: TrackStatHelper.h:43
InDet::TrackStatHelper::m_author_found
std::atomic< bool > m_author_found[Trk::TrackInfo::NumberOfTrackFitters]
Number of tracking authors found.
Definition: TrackStatHelper.h:186
InDet::TrackStatHelper::kTracks_gen
@ kTracks_gen
number of generated tracks for a given type and eta region, looping over genevents to include possibl...
Definition: TrackStatHelper.h:246
InDet::TrackStatHelper::kNumberOfSCTHits
@ kNumberOfSCTHits
Definition: TrackStatHelper.h:279
InDet::TRACK_TRUNCATED
@ TRACK_TRUNCATED
Definition: TrackStatHelper.h:41
InDet::cuts::minPt
float minPt
Definition: TrackStatHelper.h:100
Trk::CompetingRIOsOnTrack::rioOnTrack
virtual const RIO_OnTrack & rioOnTrack(unsigned int) const =0
returns the RIO_OnTrack (also known as ROT) objects depending on the integer.
InDet::TRACK_MATCHED_PRIMARY
@ TRACK_MATCHED_PRIMARY
Definition: TrackStatHelper.h:46
InDet::TrackStatHelper::m_events
std::atomic< long > m_events
Number of events.
Definition: TrackStatHelper.h:187
InDet::cuts::maxRStartSecondary
float maxRStartSecondary
Definition: TrackStatHelper.h:93
InDet::TRACK_MULTMATCH
@ TRACK_MULTMATCH
Definition: TrackStatHelper.h:48
InDet::TrackStatHelper::TrackSummaryCounter
Counter4D< kNTrackSummaryCounter, N_TRACKTYPES, N_ETAREGIONS, kNSummaryTypes, int > TrackSummaryCounter
type statistics.
Definition: TrackStatHelper.h:298
StateLessPT_NewConfig.primary
primary
Definition: StateLessPT_NewConfig.py:228
InDet::cuts::maxZStartSecondary
float maxZStartSecondary
Definition: TrackStatHelper.h:95
InDet::HIT_UNKNOWN
@ HIT_UNKNOWN
Definition: TrackStatHelper.h:71
InDet::TrackStatHelper::kHits_pri
@ kHits_pri
number of hits from primary tracks for a given type and eta region
Definition: TrackStatHelper.h:256
Trk::TrackInfo::TrackFitter
TrackFitter
enums to identify who created this track and what propertis does it have.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:39
lumiFormat.i
int i
Definition: lumiFormat.py:85
Trk::MeasurementBaseType::CompetingRIOsOnTrack
@ CompetingRIOsOnTrack
Definition: MeasurementBase.h:50
InDet::HIT_PIX2
@ HIT_PIX2
Definition: TrackStatHelper.h:62
Trk::numberOfTRTOutliers
@ numberOfTRTOutliers
number of TRT holes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:81
InDet::TrackStatHelper::HitsCounter
Counter< kNHitsCounter, N_HITTYPES, N_ETAREGIONS, int > HitsCounter
Definition: TrackStatHelper.h:260
InDet::TRACK_ALL_SIGNAL
@ TRACK_ALL_SIGNAL
Definition: TrackStatHelper.h:51
Trk::numberOfSCTHits
@ numberOfSCTHits
number of SCT holes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:71
InDet::TrackStatHelper::kNSummaryTypes
@ kNSummaryTypes
Definition: TrackStatHelper.h:287
InDet::HIT_SCT4
@ HIT_SCT4
Definition: TrackStatHelper.h:68
InDet::ETA_FORWARD
@ ETA_FORWARD
Definition: TrackStatHelper.h:79
Trk::IExtendedTrackSummaryTool::summary
virtual std::unique_ptr< Trk::TrackSummary > summary(const EventContext &ctx, const Track &track) const =0
InDet::TrackStatHelper::kTrackSummarySum
@ kTrackSummarySum
Track Summary Values for each track type, region and summary type.
Definition: TrackStatHelper.h:264
InDet::TrackStatHelper::TracksCounter
Counter< kNTracksCounter, N_TRACKTYPES, N_ETAREGIONS, int > TracksCounter
Definition: TrackStatHelper.h:250
Trk::CompetingRIOsOnTrack
Base class for all CompetingRIOsOnTack implementations, extends the common MeasurementBase.
Definition: CompetingRIOsOnTrack.h:64
InDet::HIT_PIX3
@ HIT_PIX3
Definition: TrackStatHelper.h:63
Region
Region
Definition: TrigL2HitResidual.h:14
InDet::TrackStatHelper::kNumberOfPixelHoles
@ kNumberOfPixelHoles
Definition: TrackStatHelper.h:277
InDet::cuts::maxEtaBarrel
float maxEtaBarrel
Definition: TrackStatHelper.h:84
Trk::MeasurementBase::type
virtual bool type(MeasurementBaseType::Type type) const =0
Interface method checking the type.
InDet::TRACK_LOWTRUTHPROB
@ TRACK_LOWTRUTHPROB
Definition: TrackStatHelper.h:42
InDet::TrackStatHelper::kNumberOfGangedPixels
@ kNumberOfGangedPixels
Definition: TrackStatHelper.h:278
Trk::ParametersBase
Definition: ParametersBase.h:55
InDet::TrackStatHelper::printRegionSecondary
void printRegionSecondary(MsgStream &out, enum eta_region, float denominator) const
Prints ntracks per event,efficiencies,fake rates, and general hit information for given eta region.
Definition: TrackStatHelper.cxx:808
InDet::HIT_SCT5TO9
@ HIT_SCT5TO9
Definition: TrackStatHelper.h:69
ReadTripsProbsFromCool.denominator
denominator
Definition: ReadTripsProbsFromCool.py:96
InDet::TrackStatHelper::kNTrackSummaryBAD
@ kNTrackSummaryBAD
Number of tracks with track summary bad for given type,eta,summary type.
Definition: TrackStatHelper.h:266
InDet::TrackStatHelper::kNTrackSummaryOK
@ kNTrackSummaryOK
Number of tracks with track summary OK for given type,eta,summary type.
Definition: TrackStatHelper.h:265
compute_lumi.denom
denom
Definition: compute_lumi.py:76
TrackTruth::particleLink
const HepMcParticleLink & particleLink() const
Definition: TrackTruth.h:26
calibdata.ct
ct
Definition: calibdata.py:418
InDet::TrackStatHelper::m_truthMissing
std::atomic< bool > m_truthMissing
Flag for if track truth is missing.
Definition: TrackStatHelper.h:327
Trk::numberOfPixelHoles
@ numberOfPixelHoles
number of pixels which have a ganged ambiguity.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:59
InDet::cuts::maxZStartPrimary
float maxZStartPrimary
Definition: TrackStatHelper.h:94
Trk::MeasurementBase
Definition: MeasurementBase.h:58
Trk::numberOfGangedPixels
@ numberOfGangedPixels
number of Ganged Pixels flagged as fakes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:61
InDet::TrackStatHelper::kNTrackSummaryCounter
@ kNTrackSummaryCounter
Definition: TrackStatHelper.h:267
PixelID::layer_disk
int layer_disk(const Identifier &id) const
Definition: PixelID.h:626
InDet::ETA_ALL
@ ETA_ALL
Definition: TrackStatHelper.h:74
Trk::numberOfTRTHits
@ numberOfTRTHits
number of TRT outliers
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:79
HepMC::ConstGenParticlePtr
const GenParticle * ConstGenParticlePtr
Definition: GenParticle.h:38
InDet::cuts::minREndSecondary
float minREndSecondary
Definition: TrackStatHelper.h:97
Trk::ParametersBase::pT
double pT() const
Access method for transverse momentum.
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
InDet::TrackStatHelper::Truthkey
const std::string & Truthkey() const
Returns Truth TrackCollection Key.
Definition: TrackStatHelper.h:179
Trk::TrackSummary
A summary of the information contained by a track.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:287
InDet::TrackStatHelper::EHitsCounter
EHitsCounter
Definition: TrackStatHelper.h:254
InDet::cuts::maxRStartPrimary
float maxRStartPrimary
Definition: TrackStatHelper.h:92
InDet::TrackStatHelper::s_summaryTypes
static const Trk::SummaryType s_summaryTypes[kNSummaryTypes]
summary types for which statistics are gathered
Definition: TrackStatHelper.h:289
SCT_ID::layer_disk
int layer_disk(const Identifier &id) const
Definition: SCT_ID.h:734
python.ElectronD3PDObject.matched
matched
Definition: ElectronD3PDObject.py:138
InDet::HIT_SCT_ALL
@ HIT_SCT_ALL
Definition: TrackStatHelper.h:64
InDet::TrackStatHelper::kTracks_gen_signal
@ kTracks_gen_signal
number of generated tracks for a given type and eta region, just from first genevent
Definition: TrackStatHelper.h:247
InDet::TrackStatHelper::ClassifyParticle
int ClassifyParticle(const HepMC::ConstGenParticlePtr &particle, const double prob) const
classifies gen particle as primary, secondary or truncated
Definition: TrackStatHelper.cxx:850
Trk::MeasurementBaseType::RIO_OnTrack
@ RIO_OnTrack
Definition: MeasurementBase.h:49
InDet::TRACK_SECONDARY
@ TRACK_SECONDARY
Definition: TrackStatHelper.h:40
InDet::cuts::minREndPrimary
float minREndPrimary
Definition: TrackStatHelper.h:96
InDet::TrackStatHelper::kNHitsCounter
@ kNHitsCounter
Definition: TrackStatHelper.h:258
InDet::TrackStatHelper::recoToTruthMap
std::multimap< HepMcParticleLink, float > recoToTruthMap
map containing reco track and matched truth track barcode
Definition: TrackStatHelper.h:335
InDet::TrackStatHelper::PassTrackCuts
bool PassTrackCuts(const Trk::TrackParameters *para) const
defines 'good' reco tracks
Definition: TrackStatHelper.cxx:841
InDet::cuts::maxEtaTransition
float maxEtaTransition
Maxiumu eta for transition region.
Definition: TrackStatHelper.h:85
InDet::TRACK_PRIMARY
@ TRACK_PRIMARY
Definition: TrackStatHelper.h:39
InDet::cuts::fakeTrackCut
float fakeTrackCut
fraction of hits per track that come from single matched truth track.
Definition: TrackStatHelper.h:89
InDet::TrackStatHelper::kHits_sec
@ kHits_sec
number of hits from secondary tracks for a given type and eta region
Definition: TrackStatHelper.h:257
InDet::ETA_UNKNOWN
@ ETA_UNKNOWN
Definition: TrackStatHelper.h:80
InDet::ETA_TRANSITION
@ ETA_TRANSITION
Definition: TrackStatHelper.h:76
TrackTruth
MC particle associated with a reco track + the quality of match.
Definition: TrackTruth.h:14
CondAlgsOpts.found
int found
Definition: CondAlgsOpts.py:101
InDet::TrackStatHelper::kNumberOfSCTDoubleHoles
@ kNumberOfSCTDoubleHoles
Definition: TrackStatHelper.h:281
InDet::HIT_SCT2
@ HIT_SCT2
Definition: TrackStatHelper.h:66
InDet::TrackStatHelper::kNTracksCounter
@ kNTracksCounter
Definition: TrackStatHelper.h:248
InDet::TrackStatHelper::kHits_rec
@ kHits_rec
number of reconstructed hits for a given type and eta region
Definition: TrackStatHelper.h:255
TrackTruth::probability
float probability() const
Definition: TrackTruth.h:28
InDet::HIT_PIXEL_ALL
@ HIT_PIXEL_ALL
Definition: TrackStatHelper.h:60
InDet::TRACK_MULTMATCH_SECONDARY
@ TRACK_MULTMATCH_SECONDARY
Definition: TrackStatHelper.h:50
InDet::TrackStatHelper::kNumberOfTRTHits
@ kNumberOfTRTHits
Definition: TrackStatHelper.h:282
InDet::TrackStatHelper::reset
void reset()
Resets the track collection information, called in the constructor.
Definition: TrackStatHelper.cxx:571
InDet::cuts::maxEtaEndcap
float maxEtaEndcap
Maximum eta for endcap.
Definition: TrackStatHelper.h:86
Trk::ParametersBase::eta
double eta() const
Access method for pseudorapidity - from momentum.
InDet::HIT_TRT_ALL
@ HIT_TRT_ALL
Definition: TrackStatHelper.h:70
InDet::cuts::fakeTrackCut2
float fakeTrackCut2
2nd value for fraction of hits per track that come from single matched truth track.
Definition: TrackStatHelper.h:90
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
InDet::TrackStatHelper::kNumberOfTRTOutliers
@ kNumberOfTRTOutliers
Definition: TrackStatHelper.h:283
InDet::HIT_SCT3
@ HIT_SCT3
Definition: TrackStatHelper.h:67
ParticleJetParams::Author
Author
Definition: ParticleJetParamDefs.h:33
Trk::TrackInfo::NumberOfTrackFitters
@ NumberOfTrackFitters
maximum number of enums
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:71
Trk::numberOfSCTDoubleHoles
@ numberOfSCTDoubleHoles
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:75
InDet::TrackStatHelper::kNumberOfPixelHits
@ kNumberOfPixelHits
Definition: TrackStatHelper.h:276
readCCLHist.float
float
Definition: readCCLHist.py:83
InDet::cuts::minEtaFORWARD
float minEtaFORWARD
Definition: TrackStatHelper.h:87
Trk::TrackStateOnSurface::Measurement
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
Definition: TrackStateOnSurface.h:101
Eta
@ Eta
Definition: RPCdef.h:8
InDet::ETA_ENDCAP
@ ETA_ENDCAP
Definition: TrackStatHelper.h:77
InDet::TrackStatHelper::printTrackSummaryAverage
void printTrackSummaryAverage(MsgStream &out, enum track_types, enum eta_region, int summary_type) const
Prints information from TrackSummaryTool.
Definition: TrackStatHelper.cxx:743
GenParticle
@ GenParticle
Definition: TruthClasses.h:30
InDet::TRACK_MULTMATCH_PRIMARY
@ TRACK_MULTMATCH_PRIMARY
Definition: TrackStatHelper.h:49
Identifier
Definition: IdentifierFieldParser.cxx:14
SCT_Monitoring::summary
@ summary
Definition: SCT_MonitoringNumbers.h:65