ATLAS Offline Software
Loading...
Searching...
No Matches
DeviceTrackFindingAlg.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef ACTSGPUPATTERNRECOGNITION_DEVICETRACKFINDINGALG_H
5#define ACTSGPUPATTERNRECOGNITION_DEVICETRACKFINDINGALG_H
6
8#include "GaudiKernel/ToolHandle.h"
11
21
22namespace ActsTrk {
39public:
40 using AthReentrantAlgorithm::AthReentrantAlgorithm;
41
43 virtual StatusCode initialize() override;
45 virtual StatusCode execute(const EventContext& ctx) const override;
46
47private:
48
49 virtual StatusCode configureTrackFinding();
50
52 ToolHandle<IDeviceTrackFindingAlgProviderTool> m_trkFindingAlgProviderTool{
53 this, "TrackFindingAlgProviderTool", "",
54 "Tool providing the appropriate backend device track finding algorithm"};
55
58 this, "InputTracccMeasurements", "",
59 "Input traccc measurements collection buffer"};
60
62 Gaudi::Property<std::string> m_inputMagFieldKey{
63 this, "InputTracccMagField", "",
64 "Input traccc inhom. mag. field"};
65
66 Gaudi::Property<std::string> m_deviceDetectorObjectName{
67 this, "InputTracccDetectorGeometry", "",
68 "Input traccc detector geometry"};
69
73 this, "InputTracccTrackParameters", "",
74 "Input traccc track parameter collection buffer"};
75
76
80 this, "OutputTracccTracks", "",
81 "Output traccc tracks collection buffer"};
82
83
86 Gaudi::Property<unsigned int> m_maxNumBranchesPerSeed{this, "maxNumBranchesPerSeed", 3,
87 "maximum number of branches per seed"};
88 Gaudi::Property<unsigned int> m_maxNumBranchesPerSurface{this, "maxNumBranchesPerSurface", 1,
89 "maximum number of branches per surface"};
90 Gaudi::Property<unsigned int> m_minTrackCandidatesPerTrack{this, "minTrackCandidatesPerTrack", 7,
91 "minimum number of measurements per track"};
92 Gaudi::Property<unsigned int> m_maxTrackCandidatesPerTrack{this, "maxTrackCandidatesPerTrack", 20,
93 "maximum number of measurements per track"};
94 Gaudi::Property<unsigned int> m_maxNumSkippingPerCand{this, "maxNumSkippingPerCand", 2,
95 "maximum number of holes per track candidate"};
96 Gaudi::Property<unsigned int> m_maxNumConsecutiveSkipped{this, "maxNumConsecutiveSkipped", 1,
97 "maximum number of consecutive holes per track candidate"};
98 Gaudi::Property<float> m_chi2Max{this, "chi2Max", 30.f,
99 "maximum chi2 for a measurement to be added to a track candidate"};
100 Gaudi::Property<float> m_minPt{this, "minPt", 600.f,
101 "minimum transverse momentum of a track candidate [MeV]"};
102 Gaudi::Property<float> m_minP{this, "minP", 100.f,
103 "minimum momentum of a track candidate [MeV]"};
104 Gaudi::Property<unsigned int> m_maxNumTracksPerMeasurement{this, "maxNumTracksPerMeasurement", 1,
105 "maximum number of tracks sharing a measurement, 0 for no limit"};
106 Gaudi::Property<unsigned int> m_initialLinksPerSeed{this, "initialLinksPerSeed", 20,
107 "initial number of links reserved per seed"};
108 Gaudi::Property<float> m_minStepLengthForNextSurface{this, "minStepLengthForNextSurface", 0.5f,
109 "minimum step length to the next surface [mm]"};
110 Gaudi::Property<unsigned int> m_maxStepCountsForNextSurface{this, "maxStepCountsForNextSurface", 100,
111 "maximum number of steps to the next surface"};
112
113
114 traccc::finding_config m_finding_cfg;
115 const traccc::magnetic_field* m_deviceMagField{nullptr};
116 const traccc::detector_buffer* m_deviceDetector{nullptr};
117
118};
119
120} // namespace ActsTrk
121
122#endif // ACTSGPUPATTERNRECOGNITION_DEVICETRACKFINDINGALG_H
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.
Algorithm executing traccc track finding on the GPU.
SG::ReadHandleKey< traccc::edm::measurement_collection::const_view > m_inputMeasKey
Gaudi::Property< unsigned int > m_maxNumBranchesPerSeed
const traccc::magnetic_field * m_deviceMagField
Gaudi::Property< unsigned int > m_maxStepCountsForNextSurface
Gaudi::Property< unsigned int > m_maxNumSkippingPerCand
Gaudi::Property< unsigned int > m_maxNumBranchesPerSurface
SG::ReadHandleKey< traccc::bound_track_parameters_collection_types::buffer > m_inputTrkParamKey
const traccc::detector_buffer * m_deviceDetector
Gaudi::Property< std::string > m_deviceDetectorObjectName
Gaudi::Property< unsigned int > m_initialLinksPerSeed
virtual StatusCode execute(const EventContext &ctx) const override
Function executing the algorithm.
ToolHandle< IDeviceTrackFindingAlgProviderTool > m_trkFindingAlgProviderTool
Gaudi::Property< unsigned int > m_maxNumTracksPerMeasurement
virtual StatusCode initialize() override
Function initializing the algorithm.
SG::WriteHandleKey< traccc_track_container::buffer > m_outputTracksKey
Gaudi::Property< float > m_chi2Max
Gaudi::Property< unsigned int > m_maxNumConsecutiveSkipped
Gaudi::Property< float > m_minStepLengthForNextSurface
Gaudi::Property< unsigned int > m_maxTrackCandidatesPerTrack
Gaudi::Property< std::string > m_inputMagFieldKey
Gaudi::Property< unsigned int > m_minTrackCandidatesPerTrack
An algorithm that can be simultaneously executed in multiple threads.
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.
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...