ATLAS Offline Software
Loading...
Searching...
No Matches
SiSPGNNTrackMaker.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef SiSPGNNTrackMaker_H
6#define SiSPGNNTrackMaker_H
7
8#include <string>
9
12
13// data containers
19
20// Tool handles
24#include "IGNNTrackReaderTool.h"
27
28namespace Trk {
29 class ITrackFitter;
30}
31
32
33namespace InDet {
44 public:
45 SiSPGNNTrackMaker(const std::string& name, ISvcLocator* pSvcLocator);
46 virtual StatusCode initialize() override;
47 virtual StatusCode execute(const EventContext& ctx) const override;
48
50 virtual bool isClonable() const override { return true; };
52
53 MsgStream& dump (MsgStream& out) const;
54 std::ostream& dump (std::ostream& out) const;
55
56 protected:
60
61 // input containers
63 this, "SpacePointsPixelName", "ITkPixelSpacePoints"};
65 this, "SpacePointsSCTName", "ITkStripSpacePoints"};
66 SG::ReadHandleKey<SpacePointOverlapCollection> m_SpacePointsOverlapKey{this, "SpacePointsOverlapName", "ITkOverlapSpacePoints"};
69 this, "PixelClusterContainer", "ITkPixelClusters"};
71 this, "StripClusterContainer", "ITkStripClusters"};
72
73 // output container
75 this, "TracksLocation", "SiSPGNNTracks"};
76
80
81
82 ToolHandle<IGNNTrackFinder> m_gnnTrackFinder{
83 this, "GNNTrackFinderTool",
84 "InDet::SiGNNTrackFinderTool", "Track Finder"
85 };
86 ToolHandle<ISeedFitter> m_seedFitter{
87 this, "SeedFitterTool",
88 "InDet::SiSeedFitterTool", "Seed Fitter"
89 };
90
91 ToolHandle<Trk::ITrackFitter> m_trackFitter {
92 this, "TrackFitter",
93 "Trk::GlobalChi2Fitter/InDetTrackFitter", "Track Fitter"
94 };
95 ToolHandle<Trk::IExtendedTrackSummaryTool> m_trackSummaryTool{
96 this, "TrackSummaryTool", "InDetTrackSummaryTool"};
97 ToolHandle<IGNNTrackReaderTool> m_gnnTrackReader{
98 this, "GNNTrackReaderTool",
99 "InDet::GNNTrackReaderTool", "Track Reader"
100 };
101
102
103 MsgStream& dumptools(MsgStream& out) const;
104 MsgStream& dumpevent(MsgStream& out) const;
105 BooleanProperty m_areInputClusters{
106 this, "areInputClusters", false,
107 "Read track candidates as list of clusters"};
108 BooleanProperty m_doRecoTrackCuts{this, "doRecoTrackCuts", false,
109 "Apply Loose track cuts"};
110 // eta dependent track selection
112 this, "InDetEtaDependentCutsSvc", "InDetEtaDependentCutsSvc"};
113
114 UnsignedIntegerProperty m_minClusters{this, "minClusters", 6, "Min number clusters"};
115 UnsignedIntegerProperty m_minPixelClusters{this, "minPixelClusters", 1, "min pixel clusters"};
116 UnsignedIntegerProperty m_minStripClusters{this, "minStripClusters", 0, "Minimum number of strip clusters"};
117 DoubleProperty m_pTmin{this, "pTmin", 400., "min pT"};
118 DoubleProperty m_etamax{this, "etamax", 4., "max reco eta"};
119
120 int passEtaDepCuts(const Trk::Track& track) const;
121
122 BooleanProperty m_doRecoverFailedFits{this, "doRecoverFailedFits", true,
123 "Try to recover failed track fits by removing hits, at the end of the track"};
124
125
126 std::tuple<bool, int, std::unique_ptr<Trk::Track>> doFitAndCut(
127 const EventContext& ctx,
128 std::vector<const Trk::SpacePoint*>& spacePoints,
129 std::vector<const Trk::PrepRawData*>& clusters,
130 int& trackCounter
131 ) const;
132
133 bool prefitCheck(unsigned int nPix, unsigned int nStrip, unsigned int nClusters, unsigned int nSpacePoints) const;
134
135 std::unique_ptr<Trk::Track> fitTrack(
136 const EventContext& ctx,
137 std::vector<const Trk::PrepRawData*> clusters,
138 const Trk::TrackParameters& initial_params,
139 int trackCounter
140 ) const;
141
142 std::vector<const Trk::SpacePoint*> getSpacePoints (
143 const std::vector<uint32_t>& trackIndices,
144 const std::vector<const Trk::SpacePoint*>& allSpacePoints
145 ) const;
146
147 std::vector<const Trk::PrepRawData*> spacePointsToClusters (
148 const std::vector<const Trk::SpacePoint*>& spacePoints
149 ) const;
150
151 std::vector<const Trk::PrepRawData*> getClusters (
152 const std::vector<std::vector<uint32_t>>& clusterTracks,
153 const std::vector<const Trk::PrepRawData*>& allClusters,
154 int trackNumber
155 ) const;
156
157 std::vector<const Trk::SpacePoint*> getSpacePointsInEvent (
158 const EventContext& ctx,
159 int eventNumber
160 ) const;
161
162 std::vector<const Trk::SpacePoint*> getSpacePointsInEvent(
163 const EventContext& ctx,
165 ) const;
166
167 std::vector<const Trk::SpacePoint*> getSpacePointsInEvent(
168 const EventContext& ctx,
170 ) const ;
171
172 std::vector<const Trk::PrepRawData*> getClustersInEvent (
173 const EventContext& ctx,
174 int eventNumber
175 ) const;
176
177
178
179 };
180
181 MsgStream& operator << (MsgStream& ,const SiSPGNNTrackMaker&);
182 std::ostream& operator << (std::ostream&,const SiSPGNNTrackMaker&);
183}
184
185#endif
defines an "iterator" over instances of a given type in StoreGateSvc
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