ATLAS Offline Software
Loading...
Searching...
No Matches
SiSPGNNTrackMaker.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef SiSPGNNTrackMaker_H
6#define SiSPGNNTrackMaker_H
7
8#include <string>
9
11
12// data containers
18
19// Tool handles
23#include "IGNNTrackReaderTool.h"
26
27namespace Trk {
28 class ITrackFitter;
29}
30
31
32namespace InDet {
43 public:
44 SiSPGNNTrackMaker(const std::string& name, ISvcLocator* pSvcLocator);
45 virtual StatusCode initialize() override;
46 virtual StatusCode execute(const EventContext& ctx) const override;
47
49 virtual bool isClonable() const override { return true; };
51
52 MsgStream& dump (MsgStream& out) const;
53 std::ostream& dump (std::ostream& out) const;
54
55 protected:
59
60 // input containers
62 this, "SpacePointsPixelName", "ITkPixelSpacePoints"};
64 this, "SpacePointsSCTName", "ITkStripSpacePoints"};
65 SG::ReadHandleKey<SpacePointOverlapCollection> m_SpacePointsOverlapKey{this, "SpacePointsOverlapName", "ITkOverlapSpacePoints"};
68 this, "PixelClusterContainer", "ITkPixelClusters"};
70 this, "StripClusterContainer", "ITkStripClusters"};
71
72 // output container
74 this, "TracksLocation", "SiSPGNNTracks"};
75
76 // temporary output container for edge scores
78 this, "EdgeScoresKey", "GNNEdgeScores"};
79
83
84
85 ToolHandle<IGNNTrackFinder> m_gnnTrackFinder{
86 this, "GNNTrackFinderTool",
87 "InDet::SiGNNTrackFinderTool", "Track Finder"
88 };
89 ToolHandle<ISeedFitter> m_seedFitter{
90 this, "SeedFitterTool",
91 "InDet::SiSeedFitterTool", "Seed Fitter"
92 };
93
94 ToolHandle<Trk::ITrackFitter> m_trackFitter {
95 this, "TrackFitter",
96 "Trk::GlobalChi2Fitter/InDetTrackFitter", "Track Fitter"
97 };
98 ToolHandle<Trk::IExtendedTrackSummaryTool> m_trackSummaryTool{
99 this, "TrackSummaryTool", "InDetTrackSummaryTool"};
100 ToolHandle<IGNNTrackReaderTool> m_gnnTrackReader{
101 this, "GNNTrackReaderTool",
102 "InDet::GNNTrackReaderTool", "Track Reader"
103 };
104
105
106 MsgStream& dumptools(MsgStream& out) const;
107 MsgStream& dumpevent(MsgStream& out) const;
108 BooleanProperty m_areInputClusters{
109 this, "areInputClusters", false,
110 "Read track candidates as list of clusters"};
111 BooleanProperty m_doRecoTrackCuts{this, "doRecoTrackCuts", false,
112 "Apply Loose track cuts"};
113 // eta dependent track selection
115 this, "InDetEtaDependentCutsSvc", "InDetEtaDependentCutsSvc"};
116
117 UnsignedIntegerProperty m_minClusters{this, "minClusters", 6, "Min number clusters"};
118 UnsignedIntegerProperty m_minPixelClusters{this, "minPixelClusters", 1, "min pixel clusters"};
119 UnsignedIntegerProperty m_minStripClusters{this, "minStripClusters", 0, "Minimum number of strip clusters"};
120 DoubleProperty m_pTmin{this, "pTmin", 400., "min pT"};
121 DoubleProperty m_etamax{this, "etamax", 4., "max reco eta"};
122
123 int passEtaDepCuts(const Trk::Track& track) const;
124
125 BooleanProperty m_doRecoverFailedFits{this, "doRecoverFailedFits", true,
126 "Try to recover failed track fits by removing hits, at the end of the track"};
127
128 BooleanProperty m_saveEdgeScore{this, "saveEdgeScore", false, "Save edge scores in a temporary container"};
129
130
131 std::tuple<bool, int, std::unique_ptr<Trk::Track>> doFitAndCut(
132 const EventContext& ctx,
133 std::vector<const Trk::SpacePoint*>& spacePoints,
134 std::vector<const Trk::PrepRawData*>& clusters,
135 int& trackCounter
136 ) const;
137
138 bool prefitCheck(unsigned int nPix, unsigned int nStrip, unsigned int nClusters, unsigned int nSpacePoints) const;
139
140 std::unique_ptr<Trk::Track> fitTrack(
141 const EventContext& ctx,
142 std::vector<const Trk::PrepRawData*> clusters,
143 const Trk::TrackParameters& initial_params,
144 int trackCounter
145 ) const;
146
147 std::pair<std::vector<const Trk::SpacePoint*>, std::vector<uint32_t> > getSpacePoints (
148 const std::vector<uint32_t>& trackIndices,
149 const std::vector<const Trk::SpacePoint*>& allSpacePoints
150 ) const;
151
152 std::vector<const Trk::PrepRawData*> spacePointsToClusters (
153 const std::vector<const Trk::SpacePoint*>& spacePoints
154 ) const;
155
156 std::vector<const Trk::PrepRawData*> getClusters (
157 const std::vector<std::vector<uint32_t>>& clusterTracks,
158 const std::vector<const Trk::PrepRawData*>& allClusters,
159 int trackNumber
160 ) const;
161
162 std::vector<const Trk::SpacePoint*> getSpacePointsInEvent (
163 const EventContext& ctx,
164 int eventNumber
165 ) const;
166
167 std::vector<const Trk::SpacePoint*> getSpacePointsInEvent(
168 const EventContext& ctx,
170 ) const;
171
172 std::vector<const Trk::SpacePoint*> getSpacePointsInEvent(
173 const EventContext& ctx,
175 ) const ;
176
177 std::vector<const Trk::PrepRawData*> getClustersInEvent (
178 const EventContext& ctx,
179 int eventNumber
180 ) const;
181
182 std::vector<float> getEdgeScores(
183 const std::vector<uint32_t>& sortedID,
184 const std::unordered_map<int, std::unordered_map<int, float>>& edgeMap
185 ) const;
186
187 };
188
189 MsgStream& operator << (MsgStream& ,const SiSPGNNTrackMaker&);
190 std::ostream& operator << (std::ostream&,const SiSPGNNTrackMaker&);
191}
192
193#endif
An algorithm that can be simultaneously executed in multiple threads.
InDet::SiSPGNNTrackMaker is an algorithm that uses the GNN-based track finding tool to reconstruct tr...
SG::WriteHandleKey< std::vector< std::vector< float > > > m_outputEdgeScoresKey
ToolHandle< ISeedFitter > m_seedFitter
std::unique_ptr< Trk::Track > fitTrack(const EventContext &ctx, std::vector< const Trk::PrepRawData * > clusters, const Trk::TrackParameters &initial_params, int trackCounter) const
UnsignedIntegerProperty m_minStripClusters
ToolHandle< IGNNTrackReaderTool > m_gnnTrackReader
std::pair< std::vector< const Trk::SpacePoint * >, std::vector< uint32_t > > getSpacePoints(const std::vector< uint32_t > &trackIndices, const std::vector< const Trk::SpacePoint * > &allSpacePoints) const
SG::ReadHandleKey< InDet::PixelClusterContainer > m_ClusterPixelKey
BooleanProperty m_doRecoverFailedFits
virtual bool isClonable() const override
Make this algorithm clonable.
SG::ReadHandleKey< InDet::SCT_ClusterContainer > m_ClusterStripKey
UnsignedIntegerProperty m_minPixelClusters
BooleanProperty m_doRecoTrackCuts
BooleanProperty m_areInputClusters
int passEtaDepCuts(const Trk::Track &track) const
SiSPGNNTrackMaker(const std::string &name, ISvcLocator *pSvcLocator)
ServiceHandle< IInDetEtaDependentCutsSvc > m_etaDependentCutsSvc
std::vector< const Trk::PrepRawData * > getClustersInEvent(const EventContext &ctx, int eventNumber) const
std::vector< float > getEdgeScores(const std::vector< uint32_t > &sortedID, const std::unordered_map< int, std::unordered_map< int, float > > &edgeMap) const
SG::WriteHandleKey< TrackCollection > m_outputTracksKey
std::vector< const Trk::PrepRawData * > spacePointsToClusters(const std::vector< const Trk::SpacePoint * > &spacePoints) const
ToolHandle< Trk::ITrackFitter > m_trackFitter
Track Fitter.
SG::ReadHandleKey< SpacePointContainer > m_SpacePointsSCTKey
MsgStream & dumpevent(MsgStream &out) const
virtual StatusCode initialize() override
ToolHandle< IGNNTrackFinder > m_gnnTrackFinder
GNN-based track finding tool that produces track candidates.
bool prefitCheck(unsigned int nPix, unsigned int nStrip, unsigned int nClusters, unsigned int nSpacePoints) const
std::vector< const Trk::SpacePoint * > getSpacePointsInEvent(const EventContext &ctx, int eventNumber) const
UnsignedIntegerProperty m_minClusters
virtual StatusCode execute(const EventContext &ctx) const override
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trackSummaryTool
std::vector< const Trk::PrepRawData * > getClusters(const std::vector< std::vector< uint32_t > > &clusterTracks, const std::vector< const Trk::PrepRawData * > &allClusters, int trackNumber) const
SG::ReadHandleKey< SpacePointOverlapCollection > m_SpacePointsOverlapKey
SG::ReadHandleKey< SpacePointContainer > m_SpacePointsPixelKey
std::tuple< bool, int, std::unique_ptr< Trk::Track > > doFitAndCut(const EventContext &ctx, std::vector< const Trk::SpacePoint * > &spacePoints, std::vector< const Trk::PrepRawData * > &clusters, int &trackCounter) const
Fits a track and applies quality cuts to determine if it should be kept.
MsgStream & dumptools(MsgStream &out) const
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
Provides the abstract interface for track fitting in the common ATLAS Tracking EDM.
Primary Vertex Finder.
MsgStream & operator<<(MsgStream &, const GNNTrackFinderTritonTool &)
Ensure that the ATLAS eigen extensions are properly loaded.
ParametersBase< TrackParametersDim, Charged > TrackParameters
-event-from-file