ATLAS Offline Software
Loading...
Searching...
No Matches
TrackTruthMatchingTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
9
13#include "TrackMatchingLookup.h"
16
18#include <algorithm> // for std::find
19
24 const std::string& name ) :
25 asg::AsgTool( name ) { }
26
27
32{
34
35 ATH_MSG_DEBUG( "Initializing " << name() << "..." );
36
37 return StatusCode::SUCCESS;
38}
39
40
45 TrackAnalysisCollections& trkAnaColls,
46 const std::string& chainRoIName,
47 const std::string& roiStr ) const
48{
50 bool doMatch = trkAnaColls.updateChainRois( chainRoIName, roiStr );
51
53 if( not doMatch ) {
54 ATH_MSG_WARNING( "Matching for " << chainRoIName <<
55 " was already done. Skipping" );
56 return StatusCode::SUCCESS;
57 }
58
63 trkAnaColls.matches() ) );
64
65 ATH_MSG_DEBUG( trkAnaColls.printMatchInfo() );
66
67 return StatusCode::SUCCESS;
68}
69
70
75 const std::vector< const xAOD::TrackParticle* >& vTest,
76 const std::vector< const xAOD::TruthParticle* >& vRef,
77 ITrackMatchingLookup& matches ) const
78{
79 ATH_MSG_DEBUG( "Doing Track->Truth matching via truthParticleLink" );
80
81 for( const xAOD::TrackParticle* track_particle : vTest ) {
82
84 const xAOD::TruthParticle* truth_particle = getLinkedTruth(
85 *track_particle, m_truthProbCut.value() );
86
88 if( not truth_particle ) continue;
89
90 ATH_MSG_DEBUG( "Found matched truth particle with pT = " <<
91 pT( *truth_particle ) << " and prob = " <<
92 getTruthMatchProb( *track_particle ) );
93
96 if( std::find( vRef.begin(), vRef.end(),
97 truth_particle ) == vRef.end() ) {
98 ATH_MSG_DEBUG( "Truth particle is not in selected reference. Skipping." );
99 continue;
100 }
101
103 float dist = 1 - getTruthMatchProb( *track_particle );
104
106 ATH_CHECK( matches.update( *track_particle, *truth_particle, dist ) );
107 } // loop over vTest
108
109 return StatusCode::SUCCESS;
110}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
Utility methods to access offline object decorations.
Class to hold for each event collections needed in the TrkAnalsis.
Look-up table (templated) class to store (internally to IDTPM) all the matches between test and refer...
Utility methods to access track/truth particles parmeters in a consitent way in this package.
Tool to perform matching of tracks and truth particles via truthParticleLink decorations.
virtual StatusCode update(const xAOD::TrackParticle &t, const xAOD::TrackParticle &r, float dist=0.)=0
update lookup tables with a new entry Track -> Track
std::string printMatchInfo()
print track matching information
bool updateChainRois(const std::string &chainRoi, const std::string &roiStr)
update chainRois map
ITrackMatchingLookup & matches()
get track matching information
const std::vector< const xAOD::TrackParticle * > & testTrackVec(Stage stage=FULL)
TEST = Track.
const std::vector< const xAOD::TruthParticle * > & refTruthVec(Stage stage=FULL)
get REFERENCE track vectors
virtual StatusCode match(TrackAnalysisCollections &trkAnaColls, const std::string &chainRoIName, const std::string &roiStr) const override
General matching method, via TrackAnalysisCollections.
TrackTruthMatchingTool(const std::string &name)
Constructor.
virtual StatusCode initialize() override
Initialize.
AsgTool(const std::string &name)
Constructor specifying the tool instance's name.
Definition AsgTool.cxx:58
virtual StatusCode initialize()
Dummy implementation of the initialisation function.
Definition AsgTool.h:133
bool match(std::string s1, std::string s2)
match the individual directories of two strings
Definition hcg.cxx:357
float pT(const U &p)
Accessor utility function for getting the value of pT.
float getTruthMatchProb(const xAOD::TrackParticle &track)
getTruthMatchProb
const xAOD::TruthParticle * getLinkedTruth(const xAOD::TrackParticle &track, const float truthProbCut)
getLinkedTruth
TrackParticle_v1 TrackParticle
Reference the current persistent version:
TruthParticle_v1 TruthParticle
Typedef to implementation.