ATLAS Offline Software
Loading...
Searching...
No Matches
PFTrackClusterMatchingTool Class Reference

This is the tool, which inherits from AthAlgTool, which clients can use for track-cluster matching. More...

#include <PFTrackClusterMatchingTool.h>

Inheritance diagram for PFTrackClusterMatchingTool:
Collaboration diagram for PFTrackClusterMatchingTool:

Public Member Functions

 PFTrackClusterMatchingTool (const std::string &type, const std::string &name, const IInterface *parent)
virtual ~PFTrackClusterMatchingTool ()
StatusCode initialize ()
StatusCode finalize ()
std::vector< std::pair< eflowRecCluster *, float > > doMatches (const eflowRecTrack *track, eflowRecClusterContainer *clusters, int n) const
 Get n clusters that matches best to a given track.
std::vector< std::pair< eflowRecCluster *, float > > doMatches (const eflowRecTrack *track, std::vector< eflowRecCluster * > &clusters, int n) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Member Functions

static const InterfaceID & interfaceID ()

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

std::string m_trackPositionType
 The type of track position to be used for matching.
std::string m_clusterPositionType
 The type of cluster position to be used for matching.
std::string m_distanceType
 The type of distance measure to be used for matching.
double m_matchCut
 The cut value on the distance measure.
std::unique_ptr< PFMatch::TrackClusterMatcherm_matcher
 The track cluster matcher to perform the actual matching.
ToolHandle< GenericMonitoringToolm_monTool {this,"MonTool_ClusterMatching","","Monitoring tool"}
 Online monitoring tool for recording histograms of the alg in action.
const float m_invGeV = 1./CLHEP::GeV
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

This is the tool, which inherits from AthAlgTool, which clients can use for track-cluster matching.

Clients should define the type of cluster position, the type of track position and the type of distance to use. This tool uses the PF::TrackClusterMatcher tool and returns a vector of matched eflowRecCluster to the client. The client must provide an eflowRecTrack and a list of eflowRecCluster to consider for matching.

Definition at line 32 of file PFTrackClusterMatchingTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ PFTrackClusterMatchingTool()

PFTrackClusterMatchingTool::PFTrackClusterMatchingTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 22 of file PFTrackClusterMatchingTool.cxx.

24 :
25 AthAlgTool(type, name, parent),
26 m_trackPositionType("EM2EtaPhi"),
27 m_clusterPositionType("GeomCenterEtaPhi"),
28 m_distanceType("EtaPhiSquareSignificance"),
29 m_matchCut(1.64*1.64),
30 m_matcher(nullptr) {
31 declareInterface<PFTrackClusterMatchingTool>(this);
32 declareProperty("TrackPositionType",m_trackPositionType);
33 declareProperty("ClusterPositionType",m_clusterPositionType);
34 declareProperty("DistanceType",m_distanceType);
35 declareProperty("MatchCut", m_matchCut);
36}
AthAlgTool()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
std::string m_distanceType
The type of distance measure to be used for matching.
std::string m_trackPositionType
The type of track position to be used for matching.
std::string m_clusterPositionType
The type of cluster position to be used for matching.
std::unique_ptr< PFMatch::TrackClusterMatcher > m_matcher
The track cluster matcher to perform the actual matching.
double m_matchCut
The cut value on the distance measure.

◆ ~PFTrackClusterMatchingTool()

virtual PFTrackClusterMatchingTool::~PFTrackClusterMatchingTool ( )
inlinevirtual

Definition at line 36 of file PFTrackClusterMatchingTool.h.

36{ }

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ doMatches() [1/2]

std::vector< std::pair< eflowRecCluster *, float > > PFTrackClusterMatchingTool::doMatches ( const eflowRecTrack * track,
eflowRecClusterContainer * clusters,
int n ) const

Get n clusters that matches best to a given track.

Definition at line 57 of file PFTrackClusterMatchingTool.cxx.

60{
61 std::vector<eflowRecCluster*> vec_clusters(clusters->begin(),
62 clusters->end());
63 return doMatches(track, vec_clusters, nMatches);
64}
std::vector< std::pair< eflowRecCluster *, float > > doMatches(const eflowRecTrack *track, eflowRecClusterContainer *clusters, int n) const
Get n clusters that matches best to a given track.

◆ doMatches() [2/2]

std::vector< std::pair< eflowRecCluster *, float > > PFTrackClusterMatchingTool::doMatches ( const eflowRecTrack * track,
std::vector< eflowRecCluster * > & clusters,
int n ) const

Definition at line 67 of file PFTrackClusterMatchingTool.cxx.

71{
72 auto matched_tracks_pt = Monitored::Scalar<float>("matched_tracks_pt");
73 auto matched_clusters_e = Monitored::Scalar<float>("matched_clusters_e");
74 auto matched_clusters_eta = Monitored::Scalar<float>("matched_clusters_eta");
75 auto matched_clusters_phi = Monitored::Scalar<float>("matched_clusters_phi");
76 auto group = Monitored::Group(m_monTool, matched_tracks_pt, matched_clusters_e,
77 matched_clusters_eta, matched_clusters_phi);
78
79 /* Transform the vector of eflowRecCluster into a vector of eflowMatchClusters
80 */
81 std::vector<eflowMatchCluster*> matchClusters;
82 matchClusters.reserve(clusters.size());
83
84 for (auto& cluster : clusters) {
85 matchClusters.push_back(cluster->getMatchCluster());
86 }
87
88 /* Use the TrackClusterMatcher to retrieve the matches */
89 eflowRecMatchTrack matchTrack(track);
90 std::vector<MatchDistance> allMatches = m_matcher->bestMatches(
91 &matchTrack, matchClusters, nMatches, 0.1 * track->getTrack()->e());
92
93 /* Transform the vector of MatchDistance objects into a vector of
94 * eflowRecClusters and return it */
95 std::vector<std::pair<eflowRecCluster*, float>> results;
96 for (MatchDistance& match : allMatches) {
97 // The matching cannot change the cluster type, this started as
98 // eflowMatchCluster and remains of that type -- no need to test cast from
99 // ICluster*
100 eflowMatchCluster* thisMatch = static_cast<eflowMatchCluster*>(match.first);
101 results.emplace_back(thisMatch->getEfRecCluster(), match.second);
102 matched_clusters_e = thisMatch->e() * m_invGeV;
103 matched_clusters_eta = thisMatch->eta();
104 matched_clusters_phi = thisMatch->phi();
105 }
106 matched_tracks_pt = track->getTrack()->pt() / 1000; //Conversion to GeV
107 return results;
108}
ToolHandle< GenericMonitoringTool > m_monTool
Online monitoring tool for recording histograms of the alg in action.
virtual double e() const
virtual double eta() const
eflowRecCluster * getEfRecCluster()
virtual double phi() const
bool match(std::string s1, std::string s2)
match the individual directories of two strings
Definition hcg.cxx:357
std::pair< ICluster *, double > MatchDistance
Definition PFMatcher.h:24

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ finalize()

StatusCode PFTrackClusterMatchingTool::finalize ( )

Definition at line 51 of file PFTrackClusterMatchingTool.cxx.

51 {
52
53 return StatusCode::SUCCESS;
54}

◆ initialize()

StatusCode PFTrackClusterMatchingTool::initialize ( )

Definition at line 38 of file PFTrackClusterMatchingTool.cxx.

38 {
39
41
42 ATH_MSG_VERBOSE("In initialize:");
43 ATH_MSG_VERBOSE("Track position type is \"" << m_trackPositionType << "\"");
44 ATH_MSG_VERBOSE("Cluster position type is \"" << m_clusterPositionType << "\"");
45 ATH_MSG_VERBOSE("Distance type is \"" << m_distanceType << "\"");
46 ATH_MSG_VERBOSE("Match cut is " << m_matchCut);
47
48 return StatusCode::SUCCESS;
49}
#define ATH_MSG_VERBOSE(x)
static std::unique_ptr< IPositionProvider > Get(const std::string &positionType)
static std::unique_ptr< IDistanceProvider > Get(const std::string &distanceType, std::unique_ptr< IPositionProvider > trackPosition, std::unique_ptr< IPositionProvider > clusterPosition)
static std::unique_ptr< IPositionProvider > Get(const std::string &positionType)

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

const InterfaceID & PFTrackClusterMatchingTool::interfaceID ( )
inlinestatic

Definition at line 73 of file PFTrackClusterMatchingTool.h.

static const InterfaceID IID_PFTrackClusterMatchingTool("PFTrackClusterMatchingTool", 1, 0)

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_clusterPositionType

std::string PFTrackClusterMatchingTool::m_clusterPositionType
private

The type of cluster position to be used for matching.

Definition at line 58 of file PFTrackClusterMatchingTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_distanceType

std::string PFTrackClusterMatchingTool::m_distanceType
private

The type of distance measure to be used for matching.

Definition at line 60 of file PFTrackClusterMatchingTool.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_invGeV

const float PFTrackClusterMatchingTool::m_invGeV = 1./CLHEP::GeV
private

Definition at line 70 of file PFTrackClusterMatchingTool.h.

◆ m_matchCut

double PFTrackClusterMatchingTool::m_matchCut
private

The cut value on the distance measure.

Definition at line 62 of file PFTrackClusterMatchingTool.h.

◆ m_matcher

std::unique_ptr<PFMatch::TrackClusterMatcher> PFTrackClusterMatchingTool::m_matcher
private

The track cluster matcher to perform the actual matching.

Definition at line 65 of file PFTrackClusterMatchingTool.h.

◆ m_monTool

ToolHandle<GenericMonitoringTool> PFTrackClusterMatchingTool::m_monTool {this,"MonTool_ClusterMatching","","Monitoring tool"}
private

Online monitoring tool for recording histograms of the alg in action.

Definition at line 68 of file PFTrackClusterMatchingTool.h.

68{this,"MonTool_ClusterMatching","","Monitoring tool"};

◆ m_trackPositionType

std::string PFTrackClusterMatchingTool::m_trackPositionType
private

The type of track position to be used for matching.

Definition at line 56 of file PFTrackClusterMatchingTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: