5#ifndef SiSPGNNTrackMaker_H
6#define SiSPGNNTrackMaker_H
46 virtual StatusCode
execute(
const EventContext& ctx)
const override;
49 virtual bool isClonable()
const override {
return true; };
52 MsgStream&
dump (MsgStream& out)
const;
53 std::ostream&
dump (std::ostream& out)
const;
62 this,
"SpacePointsPixelName",
"ITkPixelSpacePoints"};
64 this,
"SpacePointsSCTName",
"ITkStripSpacePoints"};
68 this,
"PixelClusterContainer",
"ITkPixelClusters"};
70 this,
"StripClusterContainer",
"ITkStripClusters"};
74 this,
"TracksLocation",
"SiSPGNNTracks"};
78 this,
"EdgeScoresKey",
"GNNEdgeScores"};
86 this,
"GNNTrackFinderTool",
87 "InDet::SiGNNTrackFinderTool",
"Track Finder"
90 this,
"SeedFitterTool",
91 "InDet::SiSeedFitterTool",
"Seed Fitter"
96 "Trk::GlobalChi2Fitter/InDetTrackFitter",
"Track Fitter"
99 this,
"TrackSummaryTool",
"InDetTrackSummaryTool"};
101 this,
"GNNTrackReaderTool",
102 "InDet::GNNTrackReaderTool",
"Track Reader"
106 MsgStream&
dumptools(MsgStream& out)
const;
107 MsgStream&
dumpevent(MsgStream& out)
const;
109 this,
"areInputClusters",
false,
110 "Read track candidates as list of clusters"};
112 "Apply Loose track cuts"};
115 this,
"InDetEtaDependentCutsSvc",
"InDetEtaDependentCutsSvc"};
117 UnsignedIntegerProperty
m_minClusters{
this,
"minClusters", 6,
"Min number 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"};
126 "Try to recover failed track fits by removing hits, at the end of the track"};
128 BooleanProperty
m_saveEdgeScore{
this,
"saveEdgeScore",
false,
"Save edge scores in a temporary container"};
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,
138 bool prefitCheck(
unsigned int nPix,
unsigned int nStrip,
unsigned int nClusters,
unsigned int nSpacePoints)
const;
140 std::unique_ptr<Trk::Track>
fitTrack(
141 const EventContext& ctx,
142 std::vector<const Trk::PrepRawData*> clusters,
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
153 const std::vector<const Trk::SpacePoint*>& spacePoints
157 const std::vector<std::vector<uint32_t>>& clusterTracks,
158 const std::vector<const Trk::PrepRawData*>& allClusters,
163 const EventContext& ctx,
168 const EventContext& ctx,
173 const EventContext& ctx,
178 const EventContext& ctx,
183 const std::vector<uint32_t>& sortedID,
184 const std::unordered_map<
int, std::unordered_map<int, float>>& edgeMap
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
BooleanProperty m_saveEdgeScore
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.
MsgStream & operator<<(MsgStream &, const GNNTrackFinderTritonTool &)
Ensure that the ATLAS eigen extensions are properly loaded.
ParametersBase< TrackParametersDim, Charged > TrackParameters