ATLAS Offline Software
Loading...
Searching...
No Matches
DeviceTripletSeedingAlg.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_DEVICETRIPLETSEEDINGALG_H
5#define ACTSGPUPATTERNRECOGNITION_DEVICETRIPLETSEEDINGALG_H
6
8#include "GaudiKernel/ToolHandle.h"
12
21
22
23template <typename scalar_t>
24using unit = detray::unit<scalar_t>;
25
26namespace ActsTrk {
46public:
47 using AthReentrantAlgorithm::AthReentrantAlgorithm;
48
50 virtual StatusCode initialize() override;
52 virtual StatusCode execute(const EventContext& ctx) const override;
53
54private:
55
56 virtual StatusCode configureTripletSeeder();
57
59 ToolHandle<IDeviceSeedingAlgProviderTool> m_seedingAlgProviderTool{
60 this, "SeedingAlgProviderTool", "",
61 "Tool providing the appropriate backend device seeding algorithm"};
62
65 this, "InputTracccPixelSpacepoints", "",
66 "Input traccc spacepoint collection buffer"};
67
71 this, "OutputTracccPixelSeeds", "",
72 "Output traccc pixel seed collection buffer"};
73
74
78 this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"};
80 this, "AtlasFieldCacheCondObj", "fieldCondObj",
81 "Name of the Magnetic Field conditions object key"};
82
83
86 Gaudi::Property<float> m_zMin{this, "zMin", -3000.f, "limiting location of measurements [mm]"};
87 Gaudi::Property<float> m_zMax{this, "zMax", 3000.f, "limiting location of measurements [mm]"};
88 Gaudi::Property<float> m_rMin{this, "rMin", 33.f, "limiting location of measurements [mm]"};
89 Gaudi::Property<float> m_rMax{this, "rMax", 320.f, "limiting location of measurements [mm]"};
90 Gaudi::Property<float> m_collisionRegionMin{this, "collisionRegionMin", -114.f,
91 "limiting location of collision region in z [mm]"};
92 Gaudi::Property<float> m_collisionRegionMax{this, "collisionRegionMax", 114.f,
93 "limiting location of collision region in z [mm]"};
94 Gaudi::Property<float> m_minPt{this, "minPt", 900.f, "lower pT cutoff for seeds [MeV]"};
95 Gaudi::Property<float> m_cotThetaMax{this, "cotThetaMax", 27.2899f, "cot of maximum theta angle"};
96 Gaudi::Property<float> m_deltaRMin{this, "deltaRMin", 20.f,
97 "minimum distance in r between two measurements within one seed [mm]"};
98 Gaudi::Property<float> m_deltaRMax{this, "deltaRMax", 100.f,
99 "maximum distance in r between two measurements within one seed [mm]"};
100 Gaudi::Property<float> m_deltaZMax{this, "deltaZMax", 800.f,
101 "maximum distance in z between two measurements within one seed [mm]"};
102 Gaudi::Property<float> m_impactMax{this, "impactMax", 2.f, "maximum impact parameter [mm]"};
103 Gaudi::Property<float> m_sigmaScattering{this, "sigmaScattering", 3.f,
104 "how many sigmas of scattering angle should be considered"};
105 Gaudi::Property<float> m_maxPtScattering{this, "maxPtScattering", 10000.f,
106 "upper pt limit for scattering calculation [MeV]"};
107 Gaudi::Property<float> m_radLengthPerSeed{this, "radLengthPerSeed", 0.05f,
108 "average radiation lengths of material on the length of a seed"};
109 Gaudi::Property<unsigned int> m_maxSeedsPerSpM{this, "maxSeedsPerSpM", 2,
110 "maximum number of seeds per middle spacepoint"};
111 Gaudi::Property<int> m_phiBinDeflectionCoverage{this, "phiBinDeflectionCoverage", 1,
112 "sets of consecutive phi bins to cover full deflection of minimum pT particle"};
113
114
117 Gaudi::Property<float> m_gridDeltaRMax{this, "gridDeltaRMax", -1.f,
118 "maximum distance in r from middle to bottom or top spacepoint used for the grid "
119 "phi binning [mm], deltaRMax if negative"};
120
121
124 Gaudi::Property<float> m_deltaInvHelixDiameter{this, "deltaInvHelixDiameter", 0.00003f,
125 "allowed delta between two inverted seed radii to be considered compatible [1/mm]"};
126 Gaudi::Property<float> m_impactWeightFactor{this, "impactWeightFactor", 1.f,
127 "impact parameter is multiplied by this factor and subtracted from the weight"};
128 Gaudi::Property<float> m_compatSeedWeight{this, "compatSeedWeight", 200.f,
129 "seed weight increase if a compatible seed has been found"};
130 Gaudi::Property<float> m_filterDeltaRMin{this, "filterDeltaRMin", 5.f,
131 "minimum distance between compatible seeds to be considered for weight boost [mm]"};
132 Gaudi::Property<unsigned int> m_compatSeedLimit{this, "compatSeedLimit", 1,
133 "maximum number of compatible seeds considered for the weight boost"};
134 Gaudi::Property<float> m_goodSpBMinRadius{this, "goodSpBMinRadius", 150.f,
135 "bottom spacepoint radius above which the weight is increased [mm]"};
136 Gaudi::Property<float> m_goodSpBWeightIncrease{this, "goodSpBWeightIncrease", 400.f,
137 "weight increase for a good bottom spacepoint"};
138 Gaudi::Property<float> m_goodSpTMaxRadius{this, "goodSpTMaxRadius", 150.f,
139 "top spacepoint radius below which the weight is increased [mm]"};
140 Gaudi::Property<float> m_goodSpTWeightIncrease{this, "goodSpTWeightIncrease", 200.f,
141 "weight increase for a good top spacepoint"};
142 Gaudi::Property<float> m_goodSpBMinWeight{this, "goodSpBMinWeight", 380.f,
143 "minimum weight of a seed with a good bottom spacepoint"};
144 Gaudi::Property<float> m_seedMinWeight{this, "seedMinWeight", 200.f,
145 "minimum weight of a seed with a bottom spacepoint below spBMinRadius"};
146 Gaudi::Property<float> m_spBMinRadius{this, "spBMinRadius", 43.f,
147 "bottom spacepoint radius above which the seed weight cut is not applied [mm]"};
148
149
150 traccc::seedfinder_config m_seedfinder;
151 traccc::seedfilter_config m_seedfilter;
152
153};
154
155} // namespace ActsTrk
156
157#endif // ACTSGPUPATTERNRECOGNITION_DEVICETRIPLETSEEDINGALG_H
detray::unit< scalar_t > unit
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 triplet seeding on the GPU.
ToolHandle< IDeviceSeedingAlgProviderTool > m_seedingAlgProviderTool
Gaudi::Property< int > m_phiBinDeflectionCoverage
Gaudi::Property< float > m_goodSpTWeightIncrease
SG::ReadHandleKey< traccc::edm::spacepoint_collection::const_view > m_inputPixelSPKey
Gaudi::Property< float > m_deltaInvHelixDiameter
SG::WriteHandleKey< traccc::edm::seed_collection::buffer > m_outputPixelSeedsKey
Gaudi::Property< float > m_goodSpBMinWeight
Gaudi::Property< unsigned int > m_compatSeedLimit
Gaudi::Property< float > m_goodSpBMinRadius
virtual StatusCode execute(const EventContext &ctx) const override
Function executing the algorithm.
virtual StatusCode initialize() override
Function initializing the algorithm.
Gaudi::Property< unsigned int > m_maxSeedsPerSpM
Gaudi::Property< float > m_goodSpBWeightIncrease
Gaudi::Property< float > m_radLengthPerSeed
Gaudi::Property< float > m_goodSpTMaxRadius
Gaudi::Property< float > m_compatSeedWeight
Gaudi::Property< float > m_collisionRegionMax
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
Gaudi::Property< float > m_impactWeightFactor
Gaudi::Property< float > m_collisionRegionMin
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...