ATLAS Offline Software
TrackAnalysisCollections.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
12 #include "TrackParametersHelper.h"
13 #include "TrackMatchingLookup.h"
14 
15 
20  const std::string& anaTag ) :
21  AthMessaging( "TrackAnalysisCollections"+anaTag ),
22  m_anaTag( anaTag ), m_trkAnaDefSvc( nullptr )
23 {
24  m_truthPartVec.resize( NStages );
25  m_offlTrackVec.resize( NStages );
26  m_trigTrackVec.resize( NStages );
27 }
28 
33 {
35  if( not m_trkAnaDefSvc ) {
36  ISvcLocator* svcLoc = Gaudi::svcLocator();
37  ATH_CHECK( svcLoc->service( "TrkAnaDefSvc"+m_anaTag, m_trkAnaDefSvc ) );
38  }
39 
43  if( m_trkAnaDefSvc->isTestTruth() ) {
44  m_matches = std::make_unique< TrackMatchingLookup_truthTrk >( m_anaTag );
45  }
47  else if( m_trkAnaDefSvc->isReferenceTruth() ) {
48  m_matches = std::make_unique< TrackMatchingLookup_trkTruth >( m_anaTag );
49  }
51  else {
52  m_matches = std::make_unique< TrackMatchingLookup_trk >( m_anaTag );
53  }
54 
55  return StatusCode::SUCCESS;
56 }
57 
64 {
65  if( m_trkAnaDefSvc->useTruth() ) {
66  ATH_MSG_DEBUG( "Loading collection: " << handleKey.key() );
67 
69 
70  if( not pColl.isValid() ) {
71  ATH_MSG_ERROR( "Non valid truth particles collection: " << handleKey.key() );
72  return StatusCode::FAILURE;
73  }
74 
76  m_truthPartContainer = pColl.ptr();
77 
79  m_truthPartVec[ FULL ].clear();
80  m_truthPartVec[ FULL ].insert(
81  m_truthPartVec[ FULL ].begin(),
82  pColl->begin(), pColl->end() );
83  } else {
84  m_truthPartContainer = nullptr;
85  m_truthPartVec[ FULL ].clear();
86  }
87 
88  return StatusCode::SUCCESS;
89 }
90 
94 {
95  if( m_trkAnaDefSvc->useOffline() ) {
96  ATH_MSG_DEBUG( "Loading collection: " << handleKey.key() );
97 
99 
100  if( not pColl.isValid() ) {
101  ATH_MSG_ERROR( "Non valid offline tracks collection: " << handleKey.key() );
102  return StatusCode::FAILURE;
103  }
104 
106  m_offlTrackContainer = pColl.ptr();
107 
109  m_offlTrackVec[ FULL ].clear();
110  m_offlTrackVec[ FULL ].insert(
111  m_offlTrackVec[ FULL ].begin(),
112  pColl->begin(), pColl->end() );
113  } else {
114  m_offlTrackContainer = nullptr;
115  m_offlTrackVec[ FULL ].clear();
116  }
117 
118  return StatusCode::SUCCESS;
119 }
120 
124 {
125  if( m_trkAnaDefSvc->useTrigger()) {
126  ATH_MSG_DEBUG( "Loading collection: " << handleKey.key() );
127 
129 
130  if( not pColl.isValid() ) {
131  ATH_MSG_ERROR( "Non valid trigger tracks collection: " << handleKey.key() );
132  return StatusCode::FAILURE;
133  }
134 
136  m_trigTrackContainer = pColl.ptr();
137 
139  m_trigTrackVec[ FULL ].clear();
140  m_trigTrackVec[ FULL ].insert(
141  m_trigTrackVec[ FULL ].begin(),
142  pColl->begin(), pColl->end() );
143  } else {
144  m_trigTrackContainer = nullptr;
145  m_trigTrackVec[ FULL ].clear();
146  }
147 
148  return StatusCode::SUCCESS;
149 }
150 
156  const std::vector< const xAOD::TruthParticle* >& vec,
158 {
159  if( m_trkAnaDefSvc->isTestTruth() ) {
160  m_truthPartVec[ stage ].clear();
161  m_truthPartVec[ stage ].insert(
162  m_truthPartVec[ stage ].begin(),
163  vec.begin(), vec.end() );
164  return StatusCode::SUCCESS;
165  }
166 
167  ATH_MSG_DEBUG( "No TEST TruthParticle vector" );
168  return StatusCode::SUCCESS;
169 }
170 
173  const std::vector< const xAOD::TrackParticle* >& vec,
175 {
176  if( m_trkAnaDefSvc->isTestOffline() ) {
177  m_offlTrackVec[ stage ].clear();
178  m_offlTrackVec[ stage ].insert(
179  m_offlTrackVec[ stage ].begin(),
180  vec.begin(), vec.end() );
181  return StatusCode::SUCCESS;
182  }
183 
184  if( m_trkAnaDefSvc->isTestTrigger() ) {
185  m_trigTrackVec[ stage ].clear();
186  m_trigTrackVec[ stage ].insert(
187  m_trigTrackVec[ stage ].begin(),
188  vec.begin(), vec.end() );
189  return StatusCode::SUCCESS;
190  }
191 
192  ATH_MSG_DEBUG( "No TEST TrackParticle vector");
193  return StatusCode::SUCCESS;
194 }
195 
198  const std::vector< const xAOD::TruthParticle* >& vec,
200 {
201  if( m_trkAnaDefSvc->isReferenceTruth() ) {
202  m_truthPartVec[ stage ].clear();
203  m_truthPartVec[ stage ].insert(
204  m_truthPartVec[ stage ].begin(),
205  vec.begin(), vec.end() );
206  return StatusCode::SUCCESS;
207  }
208 
209  ATH_MSG_DEBUG( "No REFERENCE TruthParticle vector" );
210  return StatusCode::SUCCESS;
211 }
212 
215  const std::vector< const xAOD::TrackParticle* >& vec,
217 {
218  if( m_trkAnaDefSvc->isReferenceOffline() ) {
219  m_offlTrackVec[ stage ].clear();
220  m_offlTrackVec[ stage ].insert(
221  m_offlTrackVec[ stage ].begin(),
222  vec.begin(), vec.end() );
223  return StatusCode::SUCCESS;
224  }
225 
226  if( m_trkAnaDefSvc->isReferenceTrigger() ) {
227  m_trigTrackVec[ stage ].clear();
228  m_trigTrackVec[ stage ].insert(
229  m_trigTrackVec[ stage ].begin(),
230  vec.begin(), vec.end() );
231  return StatusCode::SUCCESS;
232  }
233 
234  ATH_MSG_DEBUG( "No REFERENCE TrackParticle vector" );
235  return StatusCode::SUCCESS;
236 }
237 
240  const std::vector< const xAOD::TruthParticle* >& vec,
242 {
243  if( m_trkAnaDefSvc->useTruth() ) {
244  m_truthPartVec[ stage ].clear();
245  m_truthPartVec[ stage ].insert(
246  m_truthPartVec[ stage ].begin(),
247  vec.begin(), vec.end() );
248  return StatusCode::SUCCESS;
249  }
250 
251  ATH_MSG_DEBUG( "No TruthParticle vector" );
252  return StatusCode::SUCCESS;
253 }
254 
257  const std::vector< const xAOD::TrackParticle* >& vec,
259 {
260  if( m_trkAnaDefSvc->useOffline() ) {
261  m_offlTrackVec[ stage ].clear();
262  m_offlTrackVec[ stage ].insert(
263  m_offlTrackVec[ stage ].begin(),
264  vec.begin(), vec.end() );
265  return StatusCode::SUCCESS;
266  }
267 
268  ATH_MSG_DEBUG( "No Offline TrackParticle vector" );
269  return StatusCode::SUCCESS;
270 }
271 
274  const std::vector< const xAOD::TrackParticle* >& vec,
276 {
277  if( m_trkAnaDefSvc->useTrigger() or m_trkAnaDefSvc->useEFTrigger() ) {
278  m_trigTrackVec[ stage ].clear();
279  m_trigTrackVec[ stage ].insert(
280  m_trigTrackVec[ stage ].begin(),
281  vec.begin(), vec.end() );
282  return StatusCode::SUCCESS;
283  }
284 
285  ATH_MSG_DEBUG( "No Trigger TrackParticle vector" );
286  return StatusCode::SUCCESS;
287 }
288 
295 {
298  bool isTrigEmpty = m_trkAnaDefSvc->useTrigger() and not m_trkAnaDefSvc->useEFTrigger() and
300  m_trigTrackVec[ stage ].empty() : false;
301  bool isEFTrigEmpty = m_trkAnaDefSvc->useEFTrigger() ?
302  m_trigTrackVec[ stage ].empty() : false;
303  bool isOfflEmpty = m_trkAnaDefSvc->useOffline() ?
304  m_offlTrackVec[ stage ].empty() : false;
305  bool isTruthEmpty = m_trkAnaDefSvc->useTruth() ?
306  m_truthPartVec[ stage ].empty() : false;
307 
308  if( isTrigEmpty or isEFTrigEmpty or isOfflEmpty or isTruthEmpty ) return true;
309 
310  return false;
311 }
312 
316 {
317  if( stage == FULL ) {
318  m_truthPartVec[ FULL ].clear();
319  m_offlTrackVec[ FULL ].clear();
320  m_trigTrackVec[ FULL ].clear();
321  }
322  if( stage == FULL or stage == FS ) {
323  m_truthPartVec[ FS ].clear();
324  m_offlTrackVec[ FS ].clear();
325  m_trigTrackVec[ FS ].clear();
326  }
327  if( stage == FULL or stage == FS or stage == InRoI ) {
328  m_truthPartVec[ InRoI ].clear();
329  m_offlTrackVec[ InRoI ].clear();
330  m_trigTrackVec[ InRoI ].clear();
331  }
332 }
333 
336 {
337  ATH_MSG_DEBUG( "Copying tracks in RoI" );
338 
340  m_offlTrackVec[ InRoI ].clear();
341  m_offlTrackVec[ InRoI ].insert(
342  m_offlTrackVec[ InRoI ].begin(),
343  m_offlTrackVec[ FS ].begin(),
344  m_offlTrackVec[ FS ].end() );
345 
347  m_truthPartVec[ InRoI ].clear();
348  m_truthPartVec[ InRoI ].insert(
349  m_truthPartVec[ InRoI ].begin(),
350  m_truthPartVec[ FS ].begin(),
351  m_truthPartVec[ FS ].end() );
352 
354  if (m_trkAnaDefSvc->useEFTrigger()) {
355  m_trigTrackVec[ InRoI ].clear();
356  m_trigTrackVec[ InRoI ].insert(
357  m_trigTrackVec[ InRoI ].begin(),
358  m_trigTrackVec[ FS ].begin(),
359  m_trigTrackVec[ FS ].end() );
360  }
361 
363  ATH_MSG_DEBUG( "Tracks after in RoI copy: " << printInfo( InRoI ) );
364 }
365 
372 {
373  if( m_trkAnaDefSvc->isTestTruth() ) {
374  return m_truthPartContainer;
375  }
376 
377  return nullptr;
378 }
379 
383 {
384  if( m_trkAnaDefSvc->isTestOffline() ) {
385  return m_offlTrackContainer;
386  }
387 
388  if( m_trkAnaDefSvc->isTestTrigger() ) {
389  return m_trigTrackContainer;
390  }
391 
392  return nullptr;
393 }
394 
398 {
399  if( m_trkAnaDefSvc->isReferenceTruth() ) {
400  return m_truthPartContainer;
401  }
402 
403  return nullptr;
404 }
405 
409 {
410  if( m_trkAnaDefSvc->isReferenceOffline() ) {
411  return m_offlTrackContainer;
412  }
413 
414  if( m_trkAnaDefSvc->isReferenceTrigger() ) {
415  return m_trigTrackContainer;
416  }
417 
418  return nullptr;
419 }
420 
425 const std::vector< const xAOD::TruthParticle* >&
428 {
429  if( m_trkAnaDefSvc->isTestTruth() ) {
430  return m_truthPartVec[ stage ];
431  }
432 
433  ATH_MSG_DEBUG( "No Test truth vector found" );
434  return m_nullTruthVec;
435 }
436 
438 const std::vector< const xAOD::TrackParticle* >&
441 {
442  if( m_trkAnaDefSvc->isTestOffline() ) {
443  return m_offlTrackVec[ stage ];
444  }
445 
446  if( m_trkAnaDefSvc->isTestTrigger() ) {
447  return m_trigTrackVec[ stage ];
448  }
449 
450  ATH_MSG_DEBUG( "No Test track vector found" );
451  return m_nullTrackVec;
452 }
453 
455 const std::vector< const xAOD::TruthParticle* >&
458 {
459  if( m_trkAnaDefSvc->isReferenceTruth() ) {
460  return m_truthPartVec[ stage ];
461  }
462 
463  ATH_MSG_DEBUG( "No Reference truth vector found" );
464  return m_nullTruthVec;
465 }
466 
468 const std::vector< const xAOD::TrackParticle* >&
471 {
472  if( m_trkAnaDefSvc->isReferenceOffline() ) {
473  return m_offlTrackVec[ stage ];
474  }
475 
476  if( m_trkAnaDefSvc->isReferenceTrigger() ) {
477  return m_trigTrackVec[ stage ];
478  }
479 
480  ATH_MSG_DEBUG( "No Test track vector found" );
481  return m_nullTrackVec;
482 }
483 
490 {
491  std::stringstream ss;
492  ss << "\n==========================================" << std::endl;
493 
494  size_t it(0);
495  for( const xAOD::TrackParticle* thisOfflineTrack : m_offlTrackVec[ stage ] ) {
496  ss << "Offline track"
497  << " : pt = " << pT( *thisOfflineTrack )
498  << " : eta = " << eta( *thisOfflineTrack )
499  << " : phi = " << phi( *thisOfflineTrack )
500  << std::endl;
501  if( it > 20 ) { ss << "et al...." << std::endl; break; }
502  it++;
503  }
504 
505  if( not m_offlTrackVec[ stage ].empty() )
506  ss << "==========================================" << std::endl;
507 
508  it = 0;
509  for( const xAOD::TruthParticle* thisTruthParticle : m_truthPartVec[ stage ] ) {
510  ss << "Truth particle"
511  << " : pt = " << pT( *thisTruthParticle )
512  << " : eta = " << eta( *thisTruthParticle )
513  << " : phi = " << phi( *thisTruthParticle )
514  << std::endl;
515  if( it > 20 ) { ss << "et al...." << std::endl; break; }
516  it++;
517  }
518 
519  if( not m_truthPartVec[ stage ].empty() )
520  ss << "==========================================" << std::endl;
521 
522  it = 0;
523  for( const xAOD::TrackParticle* thisTriggerTrack : m_trigTrackVec[ stage ] ) {
524  ss << "Trigger track"
525  << " : pt = " << pT( *thisTriggerTrack )
526  << " : eta = " << eta( *thisTriggerTrack )
527  << " : phi = " << phi( *thisTriggerTrack )
528  << std::endl;
529  if( it > 20 ) { ss << "et al...." << std::endl; break; }
530  it++;
531  }
532 
533  if( not m_trigTrackVec[ stage ].empty() )
534  ss << "==========================================" << std::endl;
535 
536  return ss.str();
537 }
538 
539 
544 {
546  if( m_trkAnaDefSvc->isTestTruth() ) {
547  return m_matches->printInfo( testTruthVec( InRoI ), refTrackVec( InRoI ) );
548  }
550  if( m_trkAnaDefSvc->isReferenceTruth() ) {
551  return m_matches->printInfo( testTrackVec( InRoI ), refTruthVec( InRoI ) );
552  }
554  return m_matches->printInfo( testTrackVec( InRoI ), refTrackVec( InRoI ) );
555 }
556 
557 
562  const std::string& chainRoi, const std::string& roiStr )
563 {
564  ATH_MSG_DEBUG( "Updating TrackAnalysisCollection with ChainRoiName: " << chainRoi );
565 
566  std::pair< mapChainRoi_t::iterator, bool > result =
567  m_chainRois.insert( mapChainRoi_t::value_type( chainRoi, roiStr ) );
568 
569  if( not result.second ) {
570  ATH_MSG_WARNING( "ChainRoiName has already been cached. No update." );
571  return false;
572  }
573 
575  m_matches->clear();
576  m_matches->chainRoiName( chainRoi );
578 
579  return result.second;
580 }
IDTPM::TrackAnalysisCollections::fillTrigTrackVec
StatusCode fillTrigTrackVec(const std::vector< const xAOD::TrackParticle * > &vec, Stage stage=FULL)
Trigger tracks.
Definition: TrackAnalysisCollections.cxx:273
get_generator_info.result
result
Definition: get_generator_info.py:21
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
python.FPGATrackSimAnalysisConfig.stage
stage
Definition: FPGATrackSimAnalysisConfig.py:604
IDTPM::TrackAnalysisCollections::NStages
@ NStages
Definition: TrackAnalysisCollections.h:49
correlationModel::FULL
@ FULL
Definition: AsgElectronEfficiencyCorrectionTool.cxx:49
IDTPM::TrackAnalysisCollections::updateChainRois
bool updateChainRois(const std::string &chainRoi, const std::string &roiStr)
update chainRois map
Definition: TrackAnalysisCollections.cxx:561
IDTPM::TrackAnalysisCollections::m_offlTrackVec
std::vector< std::vector< const xAOD::TrackParticle * > > m_offlTrackVec
Definition: TrackAnalysisCollections.h:180
IDTPM::TrackAnalysisCollections::m_trigTrackVec
std::vector< std::vector< const xAOD::TrackParticle * > > m_trigTrackVec
Definition: TrackAnalysisCollections.h:181
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
skel.it
it
Definition: skel.GENtoEVGEN.py:423
IDTPM::TrackAnalysisCollections::fillRefTrackVec
StatusCode fillRefTrackVec(const std::vector< const xAOD::TrackParticle * > &vec, Stage stage=FULL)
REFERENCE = tracks.
Definition: TrackAnalysisCollections.cxx:214
IDTPM::TrackAnalysisCollections::TrackAnalysisCollections
TrackAnalysisCollections(const std::string &anaTag)
Constructor.
Definition: TrackAnalysisCollections.cxx:19
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
IDTPM::TrackAnalysisCollections::fillTruthPartContainer
StatusCode fillTruthPartContainer(const SG::ReadHandleKey< xAOD::TruthParticleContainer > &handleKey)
— Setter methods —
Definition: TrackAnalysisCollections.cxx:62
TrackAnalysisCollections.h
Class to hold for each event collections needed in the TrkAnalsis.
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
SG::ReadHandleKey< xAOD::TruthParticleContainer >
IDTPM::TrackAnalysisCollections::testTruthContainer
const xAOD::TruthParticleContainer * testTruthContainer()
get full TEST containers
Definition: TrackAnalysisCollections.cxx:371
empty
bool empty(TH1 *h)
Definition: computils.cxx:294
IDTPM::phi
float phi(const U &p)
Accessor utility function for getting the value of phi.
Definition: TrackParametersHelper.h:53
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
IDTPM::TrackAnalysisCollections::fillOfflTrackVec
StatusCode fillOfflTrackVec(const std::vector< const xAOD::TrackParticle * > &vec, Stage stage=FULL)
Offline tracks.
Definition: TrackAnalysisCollections.cxx:256
IDTPM::TrackAnalysisCollections::printMatchInfo
std::string printMatchInfo()
print matching information
Definition: TrackAnalysisCollections.cxx:543
IDTPM::TrackAnalysisCollections::testTrackVec
const std::vector< const xAOD::TrackParticle * > & testTrackVec(Stage stage=FULL)
TEST = Track.
Definition: TrackAnalysisCollections.cxx:439
IDTPM::TrackAnalysisCollections::fillTruthPartVec
StatusCode fillTruthPartVec(const std::vector< const xAOD::TruthParticle * > &vec, Stage stage=FULL)
get truth/offline/trigger track vector (TEST or REFERENCE)
Definition: TrackAnalysisCollections.cxx:239
IDTPM::TrackAnalysisCollections::clear
void clear(Stage stage=FULL)
Clear vectors.
Definition: TrackAnalysisCollections.cxx:314
TrackParametersHelper.h
Utility methods to access track/truth particles parmeters in a consitent way in this package.
TrackMatchingLookup.h
Look-up table (templated) class to store (internally to IDTPM) all the matches between test and refer...
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
IDTPM::eta
float eta(const U &p)
Accessor utility function for getting the value of eta.
Definition: TrackParametersHelper.h:40
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
IDTPM::TrackAnalysisCollections::FS
@ FS
Definition: TrackAnalysisCollections.h:49
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:41
IDTPM::pT
float pT(const U &p)
Accessor utility function for getting the value of pT.
Definition: TrackParametersHelper.h:30
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
DataVector::clear
void clear()
Erase all the elements in the collection.
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
IDTPM::TrackAnalysisCollections::Stage
Stage
Enum for selection stages.
Definition: TrackAnalysisCollections.h:49
IDTPM::TrackAnalysisCollections::refTruthContainer
const xAOD::TruthParticleContainer * refTruthContainer()
get full REFERENCE containers
Definition: TrackAnalysisCollections.cxx:397
IDTPM::TrackAnalysisCollections::testTrackContainer
const xAOD::TrackParticleContainer * testTrackContainer()
TEST = Track.
Definition: TrackAnalysisCollections.cxx:382
SG::ReadHandle::ptr
const_pointer_type ptr()
Dereference the pointer.
IDTPM::TrackAnalysisCollections::initialize
StatusCode initialize()
initialize
Definition: TrackAnalysisCollections.cxx:32
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
IDTPM::TrackAnalysisCollections::refTrackVec
const std::vector< const xAOD::TrackParticle * > & refTrackVec(Stage stage=FULL)
TEST = Track.
Definition: TrackAnalysisCollections.cxx:469
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
IDTPM::TrackAnalysisCollections::printInfo
std::string printInfo(Stage stage=FULL) const
print Information about tracks in the collection(s)
Definition: TrackAnalysisCollections.cxx:488
IDTPM::TrackAnalysisCollections::testTruthVec
const std::vector< const xAOD::TruthParticle * > & testTruthVec(Stage stage=FULL)
get TEST track vectors
Definition: TrackAnalysisCollections.cxx:426
IDTPM::TrackAnalysisCollections::empty
bool empty(Stage stage=FULL)
— Utility methods —
Definition: TrackAnalysisCollections.cxx:293
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
IDTPM::TrackAnalysisCollections::fillTrigTrackContainer
StatusCode fillTrigTrackContainer(const SG::ReadHandleKey< xAOD::TrackParticleContainer > &handleKey)
Trigger track particles.
Definition: TrackAnalysisCollections.cxx:122
IDTPM::TrackAnalysisCollections::copyFS
void copyFS()
copy content of FS vectors to InRoI vectors
Definition: TrackAnalysisCollections.cxx:335
IDTPM::TrackAnalysisCollections::refTrackContainer
const xAOD::TrackParticleContainer * refTrackContainer()
REFERENCE = Track.
Definition: TrackAnalysisCollections.cxx:408
IDTPM::TrackAnalysisCollections::fillTestTrackVec
StatusCode fillTestTrackVec(const std::vector< const xAOD::TrackParticle * > &vec, Stage stage=FULL)
TEST = tracks.
Definition: TrackAnalysisCollections.cxx:172
IDTPM::TrackAnalysisCollections::m_truthPartVec
std::vector< std::vector< const xAOD::TruthParticle * > > m_truthPartVec
vectors of track/truth particles at different stages of the selection/workflow
Definition: TrackAnalysisCollections.h:179
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
IDTPM::TrackAnalysisCollections::refTruthVec
const std::vector< const xAOD::TruthParticle * > & refTruthVec(Stage stage=FULL)
get REFERENCE track vectors
Definition: TrackAnalysisCollections.cxx:456
IDTPM::TrackAnalysisCollections::fillRefTruthVec
StatusCode fillRefTruthVec(const std::vector< const xAOD::TruthParticle * > &vec, Stage stage=FULL)
fill REFERENCE vectors
Definition: TrackAnalysisCollections.cxx:197
IDTPM::TrackAnalysisCollections::fillOfflTrackContainer
StatusCode fillOfflTrackContainer(const SG::ReadHandleKey< xAOD::TrackParticleContainer > &handleKey)
Offline track particles.
Definition: TrackAnalysisCollections.cxx:92
IDTPM::TrackAnalysisCollections::fillTestTruthVec
StatusCode fillTestTruthVec(const std::vector< const xAOD::TruthParticle * > &vec, Stage stage=FULL)
fill TEST vectors
Definition: TrackAnalysisCollections.cxx:155