ATLAS Offline Software
Loading...
Searching...
No Matches
SeedingTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ACTSTRKSEEDINGTOOL_SEEDINGTOOL_H
6#define ACTSTRKSEEDINGTOOL_SEEDINGTOOL_H
7
8
9
10// gcc12 gives false positive warnings from copying boost::small_vector.
11#if __GNUC__ >= 12
12# pragma GCC diagnostic ignored "-Wstringop-overread"
13#endif
14
15
16// ATHENA
19#include "ActsInterop/Logger.h"
20
21// ACTS CORE
22#include "Acts/Definitions/Units.hpp"
23#include "Acts/Definitions/Common.hpp"
24#include "Acts/Definitions/Algebra.hpp"
25#include "Acts/Seeding/SpacePointGrid.hpp"
26#include "Acts/Utilities/GridBinFinder.hpp"
27#include "Acts/Seeding/BinnedGroup.hpp"
28#include "Acts/Seeding/SeedFinderConfig.hpp"
29#include "Acts/Seeding/SeedFilterConfig.hpp"
30#include "Acts/Seeding/SeedFilter.hpp"
31#include "Acts/Seeding/SeedFinder.hpp"
32#include "Acts/EventData/Seed.hpp"
33
35
36#include <numbers>
37
38namespace ActsTrk {
39
41 public extends<AthAlgTool, ActsTrk::ISeedingTool> {
42 public:
43 using value_type = typename Acts::SpacePointContainer<ActsTrk::SpacePointCollector, Acts::detail::RefHolder>::SpacePointProxyType;
44 using seed_type = Acts::Seed< value_type, 3ul >;
45 using external_type = typename std::conditional<
46 std::is_const< typename value_type::ValueType >::value,
47 typename std::remove_const< typename value_type::ValueType >::type,
48 typename value_type::ValueType
49 >::type;
50
51
52 SeedingTool(const std::string& type,
53 const std::string& name,
54 const IInterface* parent);
55 virtual ~SeedingTool() = default;
56
57 virtual StatusCode initialize() override;
58
59 // Interface
60 virtual StatusCode
61 createSeeds(const EventContext& ctx,
62 const Acts::SpacePointContainer<ActsTrk::SpacePointCollector, Acts::detail::RefHolder>& spContainer,
63 const Acts::Vector3& beamSpotPos,
64 const Acts::Vector3& bField,
65 ActsTrk::SeedContainer& seedContainer ) const override;
66 protected:
67 // metafunction to obtain correct type in iterated container given the iterator type
68 template<typename spacepoint_iterator_t>
70 using type = typename std::conditional<
71 std::is_pointer< typename spacepoint_iterator_t::value_type >::value,
72 typename std::remove_const< typename std::remove_pointer< typename spacepoint_iterator_t::value_type >::type >::type,
73 typename std::remove_const< typename spacepoint_iterator_t::value_type >::type
74 >::type;
75 };
76
77 template< typename external_iterator_t >
78 StatusCode
79 createSeeds( external_iterator_t spBegin,
80 external_iterator_t spEnd,
81 const Acts::Vector3& beamSpotPos,
82 const Acts::Vector3& bField,
83 ActsTrk::SeedContainer& seeds ) const;
84
85 StatusCode prepareConfiguration();
86
87 // *********************************************************************
88 // *********************************************************************
89
90 protected:
91
92 const PixelID* m_pixelId{ nullptr };
93
94 Acts::SeedFinder< value_type, Acts::CylindricalSpacePointGrid<value_type> > m_finder;
95 Acts::SeedFinderConfig< value_type > m_finderCfg;
96 Acts::CylindricalSpacePointGridConfig m_gridCfg;
97
98 // See quality selection
99 Gaudi::Property< bool > m_seedQualitySelection {this, "doSeedQualitySelection", true,
100 "Select seed according to quality criteria"};
101
102 // Properties to set SpacePointGridConfig
103 Gaudi::Property< float > m_minPt {this, "minPt", 900. * Acts::UnitConstants::MeV,
104 "lower pT cutoff for seeds"}; // Used in SeedfinderConfig as well
105 Gaudi::Property< float > m_cotThetaMax {this, "cotThetaMax", 27.2899,
106 "cot of maximum theta angle"}; // Used in SeedfinderConfig as well
107 Gaudi::Property< float > m_zMin {this, "zMin", -3000. * Acts::UnitConstants::mm,
108 "limiting location of measurements"}; // Used in SeedfinderConfig as well
109 Gaudi::Property< float > m_zMax {this, "zMax", 3000. * Acts::UnitConstants::mm,
110 "limiting location of measurements"}; // Used in SeedfinderConfig as well
111 Gaudi::Property< float > m_deltaRMax {this, "deltaRMax", 280. * Acts::UnitConstants::mm,
112 "maximum distance in r between two measurements within one seed"}; // Used in SeedfinderConfig as well
113 Gaudi::Property< float > m_impactMax {this, "impactMax", 2. * Acts::UnitConstants::mm,
114 "maximum impact parameter"}; // Used in SeedfinderConfig as well
115 Gaudi::Property< std::vector< float > > m_zBinEdges {this, "zBinEdges",
116 {-3000., -2700., -2500., -1400., -925., -500., -250., 250., 500., 925., 1400., 2500., 2700, 3000.},
117 "enable non equidistant binning in z"}; // Used in SeedfinderConfig as well
118 Gaudi::Property< std::vector< float > > m_rBinEdges {this, "rBinEdges", {0., 1100 * Acts::UnitConstants::mm},
119 "enable non equidistant binning in radius"};
120 Gaudi::Property< float > m_gridRMax {this, "gridRMax", 320. * Acts::UnitConstants::mm,
121 "radial extension of subdetector to be used in grid building"};
122 Gaudi::Property< float > m_gridPhiMin {this, "gridPhiMin", -std::numbers::pi_v<float>,
123 "phi min for space point grid formation"};
124 Gaudi::Property< float > m_gridPhiMax {this, "gridPhiMax", std::numbers::pi_v<float>,
125 "phi max for space point grid formation"};
126 Gaudi::Property< int > m_phiBinDeflectionCoverage {this, "phiBinDeflectionCoverage", 3,
127 "sets of consecutive phi bins to cover full deflection of minimum pT particle"};
128 Gaudi::Property< int > m_maxPhiBins {this, "maxPhiBins", 200, "max number of bins"};
129
130 // Properties to set SeedfinderConfig
131 Gaudi::Property< float > m_rMax {this, "rMax", 320. * Acts::UnitConstants::mm,
132 "limiting location of measurements"};
133 Gaudi::Property< float > m_binSizeR {this, "binSizeR", 1. * Acts::UnitConstants::mm,
134 "defining radial bin for space point sorting"};
135 Gaudi::Property< float > m_deltaRMin {this, "deltaRMin", 20. * Acts::UnitConstants::mm,
136 "minimum distance in r between two measurements within one seed"}; // Used in SeedFilterConfig as well
137 Gaudi::Property< float > m_deltaRMinTopSP {this, "deltaRMinTopSP", 6. * Acts::UnitConstants::mm,
138 "minimum distance in r between middle and top SP"};
139 Gaudi::Property< float > m_deltaRMaxTopSP {this, "deltaRMaxTopSP", 280. * Acts::UnitConstants::mm,
140 "maximum distance in r between middle and top SP"};
141 Gaudi::Property< float > m_deltaRMinBottomSP {this, "deltaRMinBottomSP", 6. * Acts::UnitConstants::mm,
142 "minimum distance in r between middle and top SP"};
143 Gaudi::Property< float > m_deltaRMaxBottomSP {this, "deltaRMaxBottomSP", 150. * Acts::UnitConstants::mm,
144 "maximum distance in r between middle and top SP"};
145 Gaudi::Property< float > m_deltaZMax {this, "deltaZMax", 600,
146 "maximum distance in z between two measurements within one seed"};
147 Gaudi::Property< float > m_collisionRegionMin {this, "collisionRegionMin", -200. * Acts::UnitConstants::mm,
148 "limiting location of collision region in z"};
149 Gaudi::Property< float > m_collisionRegionMax {this, "collisionRegionMax", 200. * Acts::UnitConstants::mm,
150 "limiting location of collision region in z"};
151 Gaudi::Property< float > m_sigmaScattering {this, "sigmaScattering", 2.,
152 "how many sigmas of scattering angle should be considered"};
153 Gaudi::Property< float > m_maxPtScattering {this, "maxPtScattering", 10e6,
154 "Upper pt limit for scattering calculation"};
155 Gaudi::Property< float > m_radLengthPerSeed {this, "radLengthPerSeed", 0.098045,
156 "average radiation lengths of material on the length of a seed. used for scattering"};
157 Gaudi::Property< int > m_maxSeedsPerSpM {this, "maxSeedsPerSpM", 4,
158 "In dense environments many seeds may be found per middle space point. Only seeds with the highest weight will be kept if this limit is reached."}; // Used in SeedFilterConfig as well
159 Gaudi::Property< bool > m_interactionPointCut {this, "interactionPointCut", true,
160 "Enable cut on the compatibility between interaction point and SPs"};
161 Gaudi::Property< std::vector< size_t > > m_zBinsCustomLooping {this, "zBinsCustomLooping",
162 {2, 3, 4, 5, 12, 11, 10, 9, 7, 6, 8} , "defines order of z bins for looping"};
163 Gaudi::Property< std::vector<std::size_t> > m_rBinsCustomLooping {this, "rBinsCustomLooping", {1},
164 "defines order of r bins for looping"};
165 Gaudi::Property< bool > m_useVariableMiddleSPRange {this, "useVariableMiddleSPRange", true,
166 "Enable variable range to search for middle SPs"};
167 Gaudi::Property< std::vector<std::vector<double>> > m_rRangeMiddleSP {this, "rRangeMiddleSP",
168 {{40.0, 90.0}, {40.0, 90.0}, {40.0, 200.0}, {46.0, 200.0}, {46.0, 200.0}, {46.0, 250.0}, {46.0, 250.0}, {46.0, 250.0}, {46.0, 200.0}, {46.0, 200.0}, {40.0, 200.0}, {40.0, 90.0}, {40.0, 90.0}},
169 "radial range for middle SP"};
170 Gaudi::Property< float > m_deltaRMiddleMinSPRange {this, "deltaRMiddleMinSPRange", 10.,
171 "delta R for middle SP range (min)"};
172 Gaudi::Property< float > m_deltaRMiddleMaxSPRange {this, "deltaRMiddleMaxSPRange", 10.,
173 "delta R for middle SP range (max)"};
174 Gaudi::Property< bool > m_seedConfirmation {this, "seedConfirmation", true,
175 "run seed confirmation"};
176 Gaudi::Property< float > m_seedConfCentralZMin {this, "seedConfCentralZMin", -250. * Acts::UnitConstants::mm,
177 "minimum z for central seed confirmation "};
178 // Used in SeedFilterConfig as well
179 Gaudi::Property< float > m_seedConfCentralZMax {this, "seedConfCentralZMax", 250. * Acts::UnitConstants::mm,
180 "maximum z for central seed confirmation "};
181 // Used in SeedFilterConfig as well
182 Gaudi::Property< float > m_seedConfCentralRMax {this, "seedConfCentralRMax", 140. * Acts::UnitConstants::mm,
183 "maximum r for central seed confirmation "};
184 // Used in SeedFilterConfig as well
185 Gaudi::Property< size_t > m_seedConfCentralNTopLargeR {this, "seedConfCentralNTopLargeR", 1,
186 "nTop for large R central seed confirmation"};
187 // Used in SeedFilterConfig as well
188 Gaudi::Property< size_t > m_seedConfCentralNTopSmallR {this, "seedConfCentralNTopSmallR", 2,
189 "nTop for small R central seed confirmation"};
190 // Used in SeedFilterConfig as well
191 Gaudi::Property< float > m_seedConfCentralMinBottomRadius {this, "seedConfCentralMinBottomRadius", 60 * Acts::UnitConstants::mm,
192 "Minimum radius for bottom SP in seed confirmation"};
193 // Used in SeedFilterConfig as well
194 Gaudi::Property< float > m_seedConfCentralMaxZOrigin {this, "seedConfCentralMaxZOrigin", 150 * Acts::UnitConstants::mm,
195 "Maximum zOrigin in seed confirmation"};
196 // Used in SeedFilterConfig as well
197 Gaudi::Property< float > m_seedConfCentralMinImpact {this, "seedConfCentralMinImpact", 1. * Acts::UnitConstants::mm,
198 "Minimum impact parameter for seed confirmation"};
199 // Used in SeedFilterConfig as well
200 Gaudi::Property< float > m_seedConfForwardZMin {this, "seedConfForwardZMin", -3000. * Acts::UnitConstants::mm,
201 "minimum z for forward seed confirmation "};
202 // Used in SeedFilterConfig as well
203 Gaudi::Property< float > m_seedConfForwardZMax {this, "seedConfForwardZMax", 3000. * Acts::UnitConstants::mm,
204 "maximum z for forward seed confirmation "};
205 // Used in SeedFilterConfig as well
206 Gaudi::Property< float > m_seedConfForwardRMax {this, "seedConfForwardRMax", 140. * Acts::UnitConstants::mm,
207 "maximum r for forward seed confirmation "};
208 // Used in SeedFilterConfig as well
209 Gaudi::Property< size_t > m_seedConfForwardNTopLargeR {this, "seedConfForwardNTopLargeR", 1,
210 "nTop for large R forward seed confirmation"};
211 // Used in SeedFilterConfig as well
212 Gaudi::Property< size_t > m_seedConfForwardNTopSmallR {this, "seedConfForwardNTopSmallR", 2,
213 "nTop for small R forward seed confirmation"};
214 // Used in SeedFilterConfig as well
215 Gaudi::Property< float > m_seedConfForwardMinBottomRadius {this, "seedConfForwardMinBottomRadius", 60 * Acts::UnitConstants::mm,
216 "Minimum radius for bottom SP in seed confirmation"};
217 // Used in SeedFilterConfig as well
218 Gaudi::Property< float > m_seedConfForwardMaxZOrigin {this, "seedConfForwardMaxZOrigin", 150 * Acts::UnitConstants::mm,
219 "Maximum zOrigin in seed confirmation"};
220 // Used in SeedFilterConfig as well
221 Gaudi::Property< float > m_seedConfForwardMinImpact {this, "seedConfForwardMinImpact", 1. * Acts::UnitConstants::mm,
222 "Minimum impact parameter for seed confirmation"};
223 // Used in SeedFilterConfig as well
224 Gaudi::Property< bool > m_useDetailedDoubleMeasurementInfo {this, "useDetailedDoubleMeasurementInfo", false,
225 "enable use of double measurement details"};
226
227 Gaudi::Property<float> m_toleranceParam {this, "toleranceParam", 1.1 * Acts::UnitConstants::mm,
228 "tolerance parameter used to check the compatibility of SPs coordinates in xyz"};
229 Gaudi::Property<float> m_phiMin {this, "phiMin", -std::numbers::pi_v<float>, ""};
230 Gaudi::Property<float> m_phiMax {this, "phiMax", std::numbers::pi_v<float>, ""};
231 Gaudi::Property<float> m_rMin {this, "rMin", 0 * Acts::UnitConstants::mm, ""};
232 Gaudi::Property<float> m_zAlign {this, "zAlign", 0 * Acts::UnitConstants::mm, ""};
233 Gaudi::Property<float> m_rAlign {this, "rAlign", 0 * Acts::UnitConstants::mm, ""};
234 Gaudi::Property<float> m_sigmaError {this, "sigmaError", 5, ""};
235
236 // Properties to set SeedFilterConfig
237 Gaudi::Property< float > m_impactWeightFactor {this, "impactWeightFactor", 100.,
238 "the impact parameters (d0) is multiplied by this factor and subtracted from weight"};
239 Gaudi::Property< float > m_zOriginWeightFactor {this, "zOriginWeightFactor", 1.};
240 Gaudi::Property< float > m_compatSeedWeight {this, "compatSeedWeight", 100.,
241 "seed weight increased by this value if a compatible seed has been found"};
242 Gaudi::Property< std::size_t > m_compatSeedLimit {this, "compatSeedLimit", 3,
243 "how often do you want to increase the weight of a seed for finding a compatible seed"};
244 Gaudi::Property< float > m_seedWeightIncrement {this, "seedWeightIncrement", 0.,
245 "increment in seed weight if needed"};
246 Gaudi::Property< float > m_numSeedIncrement {this, "numSeedIncrement", 10e6,
247 "increment in seed weight is applied if the number of compatible seeds is larger than numSeedIncrement"};
248 Gaudi::Property< bool > m_seedConfirmationInFilter {this, "seedConfirmationInFilter", true,
249 "run seed confirmation"};
250 Gaudi::Property< std::size_t > m_maxSeedsPerSpMConf {this, "maxSeedsPerSpMConf", 5,
251 "Maximum number of lower quality seeds in seed confirmation."};
252 Gaudi::Property< std::size_t > m_maxQualitySeedsPerSpMConf {this, "maxQualitySeedsPerSpMConf", 5,
253 "Maximum number of quality seeds for each middle-bottom SP-duplet in seed confirmation."};
254 Gaudi::Property< bool > m_useDeltaRorTopRadius {this, "useDeltaRorTopRadius", true,
255 "use deltaR (top radius - middle radius) instead of top radius"};
256 Gaudi::Property<float> m_deltaInvHelixDiameter {this, "deltaInvHelixDiameter", 0.00003 * 1. / Acts::UnitConstants::mm,
257 "the allowed delta between two inverted seed radii for them to be considered compatible"};
258
259 // Properties to set other objects used in
260 // seeding algorithm
261 Gaudi::Property< std::vector<std::pair<int, int>> > m_zBinNeighborsTop{this,
262 "zBinNeighborsTop",
263 {{0, 0}, {-1, 0}, {-2, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 2} , {0, 1}, {0, 0}},
264 "vector containing the map of z bins in the top layers"};
265 Gaudi::Property< std::vector<std::pair<int, int>> > m_zBinNeighborsBottom{this, "zBinNeighborsBottom",
266 {{0, 0}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {0, 0}},
267 "vector containing the map of z bins in the top layers"};
268 Gaudi::Property< std::vector<std::pair<int, int>> > m_rBinNeighborsTop{this, "rBinNeighborsTop", {{0, 0}},
269 "vector containing the map of radius bins in the top layers"};
270 Gaudi::Property< std::vector<std::pair<int, int>> > m_rBinNeighborsBottom{this, "rBinNeighborsBottom", {{0, 0}},
271 "vector containing the map of radius bins in the bottom layers"};
272 Gaudi::Property< int > m_numPhiNeighbors {this, "numPhiNeighbors", 1,
273 "number of phi bin neighbors at each side of the current bin that will be used to search for SPs"};
274
275 Gaudi::Property< bool > m_useExperimentCuts {this, "useExperimentCuts", false, ""};
276
277 Gaudi::Property< int > m_stateVectorReserveSize {this, "stateVectorReserveSize", 500, "Size of the initial Seeding State internal vectors"};
278
279 private:
280 std::unique_ptr< Acts::GridBinFinder< 3ul > > m_bottomBinFinder{nullptr};
281 std::unique_ptr< Acts::GridBinFinder< 3ul > > m_topBinFinder{nullptr};
282
283 std::array<std::vector<std::size_t>, 3ul> m_navigation{};
284
286 const Acts::Logger &logger() const { return *m_logger; }
288 std::unique_ptr<const Acts::Logger> m_logger {nullptr};
289
290 // A conservative guess of the size of the vectors needed for seeding
291
292 Gaudi::Property<float> m_ExpCutrMin {this, "SpSelectionExpCutrMin", 45. * Acts::UnitConstants::mm};
293
294 inline bool spacePointSelectionFunction(const value_type& sp) const {
295
296 float r = sp.radius();
297 float zabs = std::abs(sp.z());
298 float absCotTheta = zabs / r;
299
300 // checking configuration to remove pixel space points
301 Identifier identifier = m_pixelId->wafer_id(sp.externalSpacePoint().elementIdList().at(0));
302 if (m_pixelId->is_barrel(identifier)) {
303 if (zabs > 200 and
304 r < 40)
305 return false;
306
307 return true;
308 }
309
310 // Inner layers
311 // Below 1.20 - accept all
312 static constexpr float cotThetaEta120 = 1.5095;
313 if (absCotTheta < cotThetaEta120)
314 return true;
315
316 // Below 3.40 - remove if too close to beamline
317 static constexpr float cotThetaEta340 = 14.9654;
318 if (absCotTheta < cotThetaEta340 and
319 r < m_ExpCutrMin)
320 return false;
321
322
323 // Outer layers
324 // Above 2.20
325 static constexpr float cotThetaEta220 = 4.4571;
326 if (absCotTheta > cotThetaEta220 and
327 r > 260.)
328 return false;
329
330 // Above 2.60
331 static constexpr float cotThetaEta260 = 6.6947;
332 if (absCotTheta > cotThetaEta260 and
333 r > 200.)
334 return false;
335
336 // Above 3.20
337 static constexpr float cotThetaEta320 = 12.2459;
338 if (absCotTheta > cotThetaEta320 and
339 r > 140.)
340 return false;
341
342 // Above 4.00
343 static constexpr float cotThetaEta400 = 27.2899;
344 if (absCotTheta > cotThetaEta400)
345 return false;
346
347 return true;
348 }
349
351 const value_type& middle,
352 const value_type& other,
353 float cotTheta, bool isBottomCandidate) const {
354 // We remove some doublets that have the middle space point in some specific areas
355 // This should eventually be moved inside ACTS and allow a veto mechanism according
356 // to the user desire.
357 // As of now we cannot really do this since we define a range of validity of the middle
358 // candidate, and if we want to veto some sub-regions inside it, we need to do it here.
359 if (std::abs(middle.z()) > 1500 and
360 middle.radius() > 100 and middle.radius() < 150) {
361 return false;
362 }
363
364 // We remove here some seeds, in case the bottom space point radius is
365 // too small (i.e. < fastTrackingRMin)
366
367 // This operation is done only within a specific eta window
368 // Instead of eta we use the doublet cottheta
369 static constexpr float cotThetaEta120 = 1.5095;
370 static constexpr float cotThetaEta360 = 18.2855;
371
372 float absCotTheta = std::abs(cotTheta);
373 if (isBottomCandidate and other.radius() < m_ExpCutrMin and
374 absCotTheta > cotThetaEta120 and
375 absCotTheta < cotThetaEta360) {
376 return false;
377 }
378
379 return true;
380 }
381 };
382
383} // namespace
384
385#endif
386
static Double_t sp
This is an Identifier helper class for the Pixel subdetector.
Gaudi::Property< float > m_seedConfCentralMinImpact
Gaudi::Property< float > m_seedConfForwardMinBottomRadius
Gaudi::Property< float > m_deltaRMiddleMaxSPRange
Gaudi::Property< size_t > m_seedConfCentralNTopLargeR
Gaudi::Property< float > m_deltaRMiddleMinSPRange
const PixelID * m_pixelId
Definition SeedingTool.h:92
Acts::Seed< value_type, 3ul > seed_type
Definition SeedingTool.h:44
Gaudi::Property< float > m_seedConfCentralMinBottomRadius
Gaudi::Property< std::vector< std::pair< int, int > > > m_zBinNeighborsBottom
Gaudi::Property< float > m_seedConfCentralZMax
Gaudi::Property< float > m_toleranceParam
Gaudi::Property< float > m_compatSeedWeight
Gaudi::Property< float > m_radLengthPerSeed
Gaudi::Property< std::vector< float > > m_zBinEdges
typename std::conditional< std::is_const< typename value_type::ValueType >::value, typename std::remove_const< typename value_type::ValueType >::type, typename value_type::ValueType >::type external_type
Definition SeedingTool.h:45
Gaudi::Property< bool > m_seedConfirmation
Gaudi::Property< float > m_deltaRMax
Gaudi::Property< std::size_t > m_maxSeedsPerSpMConf
Gaudi::Property< std::vector< size_t > > m_zBinsCustomLooping
Gaudi::Property< std::vector< std::pair< int, int > > > m_zBinNeighborsTop
Gaudi::Property< size_t > m_seedConfCentralNTopSmallR
Gaudi::Property< float > m_zAlign
Gaudi::Property< bool > m_interactionPointCut
Gaudi::Property< float > m_zMax
Gaudi::Property< int > m_maxPhiBins
Gaudi::Property< bool > m_seedConfirmationInFilter
Gaudi::Property< float > m_deltaRMin
Gaudi::Property< float > m_seedConfCentralRMax
Gaudi::Property< float > m_deltaInvHelixDiameter
virtual StatusCode createSeeds(const EventContext &ctx, const Acts::SpacePointContainer< ActsTrk::SpacePointCollector, Acts::detail::RefHolder > &spContainer, const Acts::Vector3 &beamSpotPos, const Acts::Vector3 &bField, ActsTrk::SeedContainer &seedContainer) const override
Gaudi::Property< float > m_impactMax
Gaudi::Property< float > m_deltaRMaxBottomSP
Gaudi::Property< float > m_sigmaError
Gaudi::Property< float > m_collisionRegionMin
Gaudi::Property< float > m_gridPhiMax
Gaudi::Property< float > m_deltaZMax
Gaudi::Property< float > m_numSeedIncrement
std::unique_ptr< Acts::GridBinFinder< 3ul > > m_bottomBinFinder
Gaudi::Property< float > m_zOriginWeightFactor
Gaudi::Property< float > m_rMax
Gaudi::Property< float > m_deltaRMaxTopSP
Acts::SeedFinderConfig< value_type > m_finderCfg
Definition SeedingTool.h:95
Gaudi::Property< std::size_t > m_maxQualitySeedsPerSpMConf
Gaudi::Property< float > m_deltaRMinTopSP
Gaudi::Property< size_t > m_seedConfForwardNTopSmallR
bool doubletSelectionFunction(const value_type &middle, const value_type &other, float cotTheta, bool isBottomCandidate) const
Gaudi::Property< float > m_collisionRegionMax
Acts::CylindricalSpacePointGridConfig m_gridCfg
Definition SeedingTool.h:96
Gaudi::Property< int > m_maxSeedsPerSpM
Gaudi::Property< int > m_phiBinDeflectionCoverage
Gaudi::Property< float > m_minPt
Gaudi::Property< std::vector< std::size_t > > m_rBinsCustomLooping
Gaudi::Property< bool > m_useVariableMiddleSPRange
Gaudi::Property< int > m_stateVectorReserveSize
Gaudi::Property< std::vector< std::pair< int, int > > > m_rBinNeighborsTop
Gaudi::Property< bool > m_useExperimentCuts
StatusCode prepareConfiguration()
Gaudi::Property< std::vector< float > > m_rBinEdges
Gaudi::Property< float > m_seedWeightIncrement
Gaudi::Property< float > m_deltaRMinBottomSP
typename Acts::SpacePointContainer< ActsTrk::SpacePointCollector, Acts::detail::RefHolder >::SpacePointProxyType value_type
Definition SeedingTool.h:43
std::array< std::vector< std::size_t >, 3ul > m_navigation
bool spacePointSelectionFunction(const value_type &sp) const
Gaudi::Property< size_t > m_seedConfForwardNTopLargeR
Gaudi::Property< float > m_sigmaScattering
Gaudi::Property< float > m_zMin
Gaudi::Property< float > m_seedConfCentralZMin
Gaudi::Property< float > m_seedConfForwardMaxZOrigin
std::unique_ptr< Acts::GridBinFinder< 3ul > > m_topBinFinder
Gaudi::Property< float > m_seedConfForwardZMax
SeedingTool(const std::string &type, const std::string &name, const IInterface *parent)
Gaudi::Property< float > m_rMin
Gaudi::Property< float > m_gridPhiMin
Gaudi::Property< float > m_ExpCutrMin
Gaudi::Property< float > m_seedConfCentralMaxZOrigin
Gaudi::Property< float > m_phiMin
Gaudi::Property< float > m_impactWeightFactor
Gaudi::Property< float > m_rAlign
Gaudi::Property< float > m_phiMax
Gaudi::Property< float > m_cotThetaMax
virtual ~SeedingTool()=default
Gaudi::Property< float > m_maxPtScattering
Gaudi::Property< bool > m_useDeltaRorTopRadius
const Acts::Logger & logger() const
Private access to the logger.
Gaudi::Property< float > m_seedConfForwardZMin
Gaudi::Property< std::size_t > m_compatSeedLimit
Gaudi::Property< float > m_gridRMax
Gaudi::Property< std::vector< std::pair< int, int > > > m_rBinNeighborsBottom
std::unique_ptr< const Acts::Logger > m_logger
logging instance
Acts::SeedFinder< value_type, Acts::CylindricalSpacePointGrid< value_type > > m_finder
Definition SeedingTool.h:94
Gaudi::Property< float > m_seedConfForwardRMax
Gaudi::Property< float > m_seedConfForwardMinImpact
Gaudi::Property< float > m_binSizeR
Gaudi::Property< bool > m_seedQualitySelection
Definition SeedingTool.h:99
Gaudi::Property< bool > m_useDetailedDoubleMeasurementInfo
Gaudi::Property< int > m_numPhiNeighbors
virtual StatusCode initialize() override
Gaudi::Property< std::vector< std::vector< double > > > m_rRangeMiddleSP
This is an Identifier helper class for the Pixel subdetector.
Definition PixelID.h:67
int r
Definition globals.cxx:22
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
typename std::conditional< std::is_pointer< typename spacepoint_iterator_t::value_type >::value, typename std::remove_const< typename std::remove_pointer< typename spacepoint_iterator_t::value_type >::type >::type, typename std::remove_const< typename spacepoint_iterator_t::value_type >::type >::type type
Definition SeedingTool.h:70