ATLAS Offline Software
TrackSelectionProcessorTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRACKSELECTIONPROCESSORTOOL_H
6 #define TRACKSELECTIONPROCESSORTOOL_H
7 
8 
12 #include "GaudiKernel/ToolHandle.h"
15 
19 
20 //need to include the following, since its a typedef and can't be forward declared.
22 
23 #include "TrackPtr.h"
24 
25 #include <map>
26 #include <set>
27 #include <vector>
28 
29 
30 namespace Trk {
31 
32  class ITrackScoringTool;
33  class IPRD_AssociationTool;
34 
36  : public AthAlgTool,
37  virtual public ITrackAmbiguityProcessorTool {
38  public:
39  // public types
40  typedef std::multimap<TrackScore, TrackPtr> TrackScoreMap;
41 
42  typedef std::set<const PrepRawData *> PrdSignature;
43  typedef std::set<PrdSignature> PrdSignatureSet;
44 
45  // default methods
46  TrackSelectionProcessorTool(const std::string &, const std::string &,
47  const IInterface *);
49  virtual StatusCode initialize() override;
50  virtual StatusCode finalize() override;
51 
72  virtual const TrackCollection *process(
73  const TrackCollection *tracksCol,
74  Trk::PRDtoTrackMap *prdToTrackMap) const override;
75 
76  virtual const TrackCollection *process(
77  const TracksScores * /*trackScoreTrackMap*/) const override {
78  return nullptr;
79  }
80 
82  void statistics() override {}
83 
84  private:
90  void addNewTracks(TrackScoreMap &trackScoreTrackMap,
91  Trk::PRDtoTrackMap &prdToTrackMap,
92  const std::vector<const Track *> &tracks) const;
93 
94  void solveTracks(TrackScoreMap &trackScoreTrackMap,
95  Trk::PRDtoTrackMap &prdToTrackMap,
96  ConstDataVector<TrackCollection> &final_tracks) const;
97 
99  void dumpTracks(const TrackCollection &tracks) const;
100 
101  // private data members
102 
105 
109  ToolHandle<ITrackScoringTool> m_scoringTool;
110 
114  ToolHandle<IAmbiTrackSelectionTool> m_selectionTool;
115 
116  ToolHandle<Trk::IPRDtoTrackMapTool> m_assoTool{this, "AssociationTool",
117  "Trk::PRDtoTrackMapTool"};
118 
121  this, "AssociationMapName",
122  ""};
123 
125  m_clusterSplitProbContainerIn{this, "InputClusterSplitProbabilityName",
126  "", ""};
129  this, "OutputClusterSplitProbabilityName", "", ""};
130 
134  };
135 
136 } //end ns
137 
138 #endif // TrackAmbiguityProcessorTool_H
139 
Trk::TrackSelectionProcessorTool::m_selectionTool
ToolHandle< IAmbiTrackSelectionTool > m_selectionTool
selection tool - here the decision which hits remain on a track and which are removed are made
Definition: TrackSelectionProcessorTool.h:114
PRDtoTrackMap.h
Trk::TrackSelectionProcessorTool
Definition: TrackSelectionProcessorTool.h:37
Trk::TrackSelectionProcessorTool::TrackScoreMap
std::multimap< TrackScore, TrackPtr > TrackScoreMap
Definition: TrackSelectionProcessorTool.h:40
Trk::TrackSelectionProcessorTool::m_disableSorting
bool m_disableSorting
option to disable sorting based on track score and use the ordering provided externally
Definition: TrackSelectionProcessorTool.h:133
Trk::TrackSelectionProcessorTool::PrdSignature
std::set< const PrepRawData * > PrdSignature
Definition: TrackSelectionProcessorTool.h:42
Trk::TrackSelectionProcessorTool::m_dropDouble
bool m_dropDouble
by default drop double tracks before refit
Definition: TrackSelectionProcessorTool.h:104
Trk::PRDtoTrackMap
Definition: PRDtoTrackMap.h:17
ConstDataVector.h
DataVector adapter that acts like it holds const pointers.
Trk::TrackSelectionProcessorTool::PrdSignatureSet
std::set< PrdSignature > PrdSignatureSet
Definition: TrackSelectionProcessorTool.h:43
Trk::TrackSelectionProcessorTool::m_assoTool
ToolHandle< Trk::IPRDtoTrackMapTool > m_assoTool
Definition: TrackSelectionProcessorTool.h:116
Trk::TrackSelectionProcessorTool::initialize
virtual StatusCode initialize() override
Definition: TrackSelectionProcessorTool.cxx:34
SG::ReadHandleKey< Trk::PRDtoTrackMap >
ITrackAmbiguityProcessorTool.h
Trk::TrackSelectionProcessorTool::~TrackSelectionProcessorTool
virtual ~TrackSelectionProcessorTool()
Trk::TrackSelectionProcessorTool::process
virtual const TrackCollection * process(const TracksScores *) const override
Definition: TrackSelectionProcessorTool.h:76
SG::WriteHandleKey< Trk::ClusterSplitProbabilityContainer >
Trk::TrackSelectionProcessorTool::dumpTracks
void dumpTracks(const TrackCollection &tracks) const
print out tracks and their scores for debugging
Definition: TrackSelectionProcessorTool.cxx:214
Trk::TrackSelectionProcessorTool::process
virtual const TrackCollection * process(const TrackCollection *tracksCol, Trk::PRDtoTrackMap *prdToTrackMap) const override
Returns a processed TrackCollection from the passed 'tracks' WITHOUT copying or refitting the input t...
Definition: TrackSelectionProcessorTool.cxx:65
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
TrackCollection.h
Trk::TrackSelectionProcessorTool::m_scoringTool
ToolHandle< ITrackScoringTool > m_scoringTool
Scoring tool This tool is used to 'score' the tracks, i.e.
Definition: TrackSelectionProcessorTool.h:109
DataVector< Trk::Track >
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::TrackSelectionProcessorTool::m_clusterSplitProbContainerOut
SG::WriteHandleKey< Trk::ClusterSplitProbabilityContainer > m_clusterSplitProbContainerOut
Definition: TrackSelectionProcessorTool.h:128
Trk::TrackSelectionProcessorTool::m_clusterSplitProbContainerIn
SG::ReadHandleKey< Trk::ClusterSplitProbabilityContainer > m_clusterSplitProbContainerIn
Definition: TrackSelectionProcessorTool.h:125
TrackScore.h
IPRDtoTrackMapTool.h
Trk::TracksScores
std::vector< std::pair< const Track *, float > > TracksScores
Definition: ITrackAmbiguityProcessorTool.h:18
Trk::ITrackAmbiguityProcessorTool
Interface for resolving hit assoication ambiguities in a given track collection.
Definition: ITrackAmbiguityProcessorTool.h:30
Trk::TrackSelectionProcessorTool::m_assoMapName
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_assoMapName
key for the PRDtoTrackMap to filled by the ambiguity score processor.
Definition: TrackSelectionProcessorTool.h:120
Trk::TrackSelectionProcessorTool::TrackSelectionProcessorTool
TrackSelectionProcessorTool(const std::string &, const std::string &, const IInterface *)
Definition: TrackSelectionProcessorTool.cxx:14
ConstDataVector
DataVector adapter that acts like it holds const pointers.
Definition: ConstDataVector.h:76
TrackPtr.h
ClusterSplitProbabilityContainer.h
Trk::TrackSelectionProcessorTool::finalize
virtual StatusCode finalize() override
Definition: TrackSelectionProcessorTool.cxx:54
IAmbiTrackSelectionTool.h
Trk::TrackSelectionProcessorTool::solveTracks
void solveTracks(TrackScoreMap &trackScoreTrackMap, Trk::PRDtoTrackMap &prdToTrackMap, ConstDataVector< TrackCollection > &final_tracks) const
Definition: TrackSelectionProcessorTool.cxx:147
AthAlgTool
Definition: AthAlgTool.h:26
Trk::TrackSelectionProcessorTool::statistics
void statistics() override
statistics output to be called by algorithm during finalize.
Definition: TrackSelectionProcessorTool.h:82
Trk::TrackSelectionProcessorTool::addNewTracks
void addNewTracks(TrackScoreMap &trackScoreTrackMap, Trk::PRDtoTrackMap &prdToTrackMap, const std::vector< const Track * > &tracks) const
Add passed TrackCollection, and Trk::PrepRawData from tracks to caches.
Definition: TrackSelectionProcessorTool.cxx:103