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
79
80
81 ToolHandle<IGNNTrackFinder> m_gnnTrackFinder{
82 this, "GNNTrackFinderTool",
83 "InDet::SiGNNTrackFinderTool", "Track Finder"
84 };
85 ToolHandle<ISeedFitter> m_seedFitter{
86 this, "SeedFitterTool",
87 "InDet::SiSeedFitterTool", "Seed Fitter"
88 };
89
90 ToolHandle<Trk::ITrackFitter> m_trackFitter {
91 this, "TrackFitter",
92 "Trk::GlobalChi2Fitter/InDetTrackFitter", "Track Fitter"
93 };
94 ToolHandle<Trk::IExtendedTrackSummaryTool> m_trackSummaryTool{
95 this, "TrackSummaryTool", "InDetTrackSummaryTool"};
96 ToolHandle<IGNNTrackReaderTool> m_gnnTrackReader{
97 this, "GNNTrackReaderTool",
98 "InDet::GNNTrackReaderTool", "Track Reader"
99 };
100
101
102 MsgStream& dumptools(MsgStream& out) const;
103 MsgStream& dumpevent(MsgStream& out) const;
104 BooleanProperty m_areInputClusters{
105 this, "areInputClusters", false,
106 "Read track candidates as list of clusters"};
107 BooleanProperty m_doRecoTrackCuts{this, "doRecoTrackCuts", false,
108 "Apply Loose track cuts"};
109 // eta dependent track selection
111 this, "InDetEtaDependentCutsSvc", "InDetEtaDependentCutsSvc"};
112
113 UnsignedIntegerProperty m_minClusters{this, "minClusters", 6, "Min number clusters"};
114 UnsignedIntegerProperty m_minPixelClusters{this, "minPixelClusters", 1, "min pixel clusters"};
115 UnsignedIntegerProperty m_minStripClusters{this, "minStripClusters", 0, "Minimum number of strip clusters"};
116 DoubleProperty m_pTmin{this, "pTmin", 400., "min pT"};
117 DoubleProperty m_etamax{this, "etamax", 4., "max reco eta"};
118
119 int passEtaDepCuts(const Trk::Track& track) const;
120
121 BooleanProperty m_doRecoverFailedFits{this, "doRecoverFailedFits", true,
122 "Try to recover failed track fits by removing hits, at the end of the track"};
123
124
125 std::tuple<bool, int, std::unique_ptr<Trk::Track>> doFitAndCut(
126 const EventContext& ctx,
127 std::vector<const Trk::SpacePoint*>& spacePoints,
128 std::vector<const Trk::PrepRawData*>& clusters,
129 int& trackCounter
130 ) const;
131
132 bool prefitCheck(unsigned int nPix, unsigned int nStrip, unsigned int nClusters, unsigned int nSpacePoints) const;
133
134 std::unique_ptr<Trk::Track> fitTrack(
135 const EventContext& ctx,
136 std::vector<const Trk::PrepRawData*> clusters,
137 const Trk::TrackParameters& initial_params,
138 int trackCounter
139 ) const;
140
141 std::vector<const Trk::SpacePoint*> getSpacePoints (
142 const std::vector<uint32_t>& trackIndices,
143 const std::vector<const Trk::SpacePoint*>& allSpacePoints
144 ) const;
145
146 std::vector<const Trk::PrepRawData*> spacePointsToClusters (
147 const std::vector<const Trk::SpacePoint*>& spacePoints
148 ) const;
149
150 std::vector<const Trk::PrepRawData*> getClusters (
151 const std::vector<std::vector<uint32_t>>& clusterTracks,
152 const std::vector<const Trk::PrepRawData*>& allClusters,
153 int trackNumber
154 ) const;
155
156 std::vector<const Trk::SpacePoint*> getSpacePointsInEvent (
157 const EventContext& ctx,
158 int eventNumber
159 ) const;
160
161 std::vector<const Trk::SpacePoint*> getSpacePointsInEvent(
162 const EventContext& ctx,
164 ) const;
165
166 std::vector<const Trk::SpacePoint*> getSpacePointsInEvent(
167 const EventContext& ctx,
169 ) const ;
170
171 std::vector<const Trk::PrepRawData*> getClustersInEvent (
172 const EventContext& ctx,
173 int eventNumber
174 ) const;
175
176
177
178 };
179
180 MsgStream& operator << (MsgStream& ,const SiSPGNNTrackMaker&);
181 std::ostream& operator << (std::ostream&,const SiSPGNNTrackMaker&);
182}
183
184#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...
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
SG::ReadHandleKey< InDet::PixelClusterContainer > m_ClusterPixelKey
BooleanProperty m_doRecoverFailedFits
std::vector< const Trk::SpacePoint * > getSpacePoints(const std::vector< uint32_t > &trackIndices, const std::vector< const Trk::SpacePoint * > &allSpacePoints) const
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
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