ATLAS Offline Software
Loading...
Searching...
No Matches
SeedingTool.cxx
Go to the documentation of this file.
1/* Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2*/
3
4#if defined(FLATTEN) && defined(__GNUC__)
5// Avoid warning in dbg build
6#pragma GCC optimize "-fno-var-tracking-assignments"
7#endif
8
9#include "src/SeedingTool.h"
10
11// ACTS
12#include "Acts/Seeding/SeedFilterConfig.hpp"
13#include "Acts/Seeding/BinnedGroup.hpp"
14#include "Acts/Seeding/SeedFilter.hpp"
15#include "Acts/Seeding/SeedFinder.hpp"
16#include "Acts/Seeding/SeedFinderConfig.hpp"
17#include "Acts/Definitions/Units.hpp"
18#include "Acts/Seeding/SeedConfirmationRangeConfig.hpp"
20
21using namespace Acts::HashedStringLiteral;
22
23namespace ActsTrk {
24 SeedingTool::SeedingTool(const std::string& type,
25 const std::string& name,
26 const IInterface* parent)
27 : base_class(type, name, parent)
28 {}
29
31 ATH_MSG_DEBUG("Initializing " << name() << "...");
32
33 ATH_MSG_DEBUG("Properties Summary:");
39
40 ATH_MSG_DEBUG(" * Used by SpacePointGridConfig");
41 ATH_MSG_DEBUG(" " << m_minPt);
44 ATH_MSG_DEBUG(" " << m_zMin);
45 ATH_MSG_DEBUG(" " << m_zMax);
53
54 ATH_MSG_DEBUG(" * Used by SeedFinderConfig:");
55 ATH_MSG_DEBUG(" " << m_minPt);
58 ATH_MSG_DEBUG(" " << m_zMin);
59 ATH_MSG_DEBUG(" " << m_zMax);
61 ATH_MSG_DEBUG(" " << m_rMax);
82 } else if ( not m_rRangeMiddleSP.empty() )
85 if ( m_seedConfirmation ) {
102 }
105 ATH_MSG_DEBUG(" " << m_phiMin);
106 ATH_MSG_DEBUG(" " << m_phiMax);
107 ATH_MSG_DEBUG(" " << m_rMin);
108 ATH_MSG_DEBUG(" " << m_zAlign);
109 ATH_MSG_DEBUG(" " << m_rAlign);
111
112 ATH_MSG_DEBUG(" * Used by SeedFilterConfig:");
136 }
143
144 // Make the logger And Propagate to ACTS routines
145 m_logger = makeActsAthenaLogger(this, "Acts");
146
147 if (m_zBinEdges.size() - 1 !=
148 m_zBinNeighborsTop.size() and
149 not m_zBinNeighborsTop.empty()) {
150 ATH_MSG_ERROR("Inconsistent config zBinNeighborsTop");
151 return StatusCode::FAILURE;
152 }
153
154 if (m_zBinEdges.size() - 1 !=
155 m_zBinNeighborsBottom.size() and
156 not m_zBinNeighborsBottom.empty()) {
157 ATH_MSG_ERROR("Inconsistent config zBinNeighborsBottom");
158 return StatusCode::FAILURE;
159 }
160
161 if (m_rBinEdges.size() - 1 !=
162 m_rBinNeighborsTop.size() and
163 not m_rBinNeighborsTop.empty()) {
164 ATH_MSG_ERROR("Inconsistent config rBinNeighborsTop");
165 return StatusCode::FAILURE;
166 }
167
168 if (m_rBinEdges.size() - 1 !=
169 m_rBinNeighborsBottom.size() and
170 not m_rBinNeighborsBottom.empty()) {
171 ATH_MSG_ERROR("Inconsistent config rBinNeighborsBottom");
172 return StatusCode::FAILURE;
173 }
174
175 if (m_zBinsCustomLooping.size() != 0) {
176 // zBinsCustomLooping can contain a number of elements <= to the total number
177 // of bin in zBinEdges
178 for (std::size_t i : m_zBinsCustomLooping) {
179 if (i >= m_zBinEdges.size()) {
180 ATH_MSG_ERROR("Inconsistent config zBinsCustomLooping contains bins that are not in zBinEdges");
181 return StatusCode::FAILURE;
182 }
183 }
184 }
185
186 if (m_rBinsCustomLooping.size() != 0) {
187 for (std::size_t i : m_rBinsCustomLooping) {
188 if (i >= m_rBinEdges.size()) {
189 ATH_MSG_ERROR("Inconsistent config rBinsCustomLooping contains bins that are not in rBinEdges");
190 return StatusCode::FAILURE;
191 }
192 }
193 }
194
196
197 m_bottomBinFinder = std::make_unique< Acts::GridBinFinder< 3ul > >(m_numPhiNeighbors.value(),
198 m_zBinNeighborsBottom.value(),
199 m_rBinNeighborsBottom.value());
200 m_topBinFinder = std::make_unique< Acts::GridBinFinder< 3ul > >(m_numPhiNeighbors.value(),
201 m_zBinNeighborsTop.value(),
202 m_rBinNeighborsTop.value());
203
204 m_navigation[0ul] = {};
205 m_navigation[1ul] = m_finderCfg.zBinsCustomLooping;
206 m_navigation[2ul] = m_rBinsCustomLooping.value();
207
208 if (detStore()->retrieve(m_pixelId, "PixelID").isFailure()) {
209 ATH_MSG_ERROR("Could not get PixelID helper !");
210 return StatusCode::FAILURE;
211 }
212
213 return StatusCode::SUCCESS;
214 }
215
217 StatusCode
218 SeedingTool::createSeeds(const EventContext& /*ctx*/,
219 const Acts::SpacePointContainer<ActsTrk::SpacePointCollector, Acts::detail::RefHolder>& spContainer,
220 const Acts::Vector3& beamSpotPos,
221 const Acts::Vector3& bField,
222 ActsTrk::SeedContainer& seedContainer ) const
223 {
224 // Create Seeds
225 //TODO POSSIBLE OPTIMISATION come back here: see MR !52399 ( i.e. use static thread_local)
226 ATH_CHECK(createSeeds(spContainer.begin(),
227 spContainer.end(),
228 beamSpotPos,
229 bField,
230 seedContainer));
231
232 return StatusCode::SUCCESS;
233 }
234
235 template< typename external_iterator_t >
236 StatusCode
237 SeedingTool::createSeeds(external_iterator_t spBegin,
238 external_iterator_t spEnd,
239 const Acts::Vector3& beamSpotPos,
240 const Acts::Vector3& bField,
241 ActsTrk::SeedContainer& seedContainer) const
242 {
243 static_assert(std::is_same<typename external_spacepoint< external_iterator_t >::type, const value_type&>::value,
244 "Inconsistent type");
245
246 if (spBegin == spEnd)
247 return StatusCode::SUCCESS;
248
249 seedContainer.spacePoints().reserve(std::distance(spBegin, spEnd));
250 for (auto sp = spBegin; sp != spEnd; ++sp) {
251 seedContainer.spacePoints().push_back(&(*sp).externalSpacePoint());
252 }
253 std::vector< seed_type > seeds;
254
255 // Space Point Grid Options
256 Acts::CylindricalSpacePointGridOptions gridOpts;
257 gridOpts.bFieldInZ = bField[2];
258 gridOpts = gridOpts.toInternalUnits();
259
260 // Seed Finder Options
261 Acts::SeedFinderOptions finderOpts;
262 finderOpts.beamPos = Acts::Vector2(beamSpotPos[Amg::x],
263 beamSpotPos[Amg::y]);
264 finderOpts.bFieldInZ = bField[2];
265 finderOpts = finderOpts.toInternalUnits().calculateDerivedQuantities(m_finderCfg);
266
267
268
269
270 Acts::CylindricalSpacePointGrid< value_type > grid =
271 Acts::CylindricalSpacePointGridCreator::createGrid< value_type >(m_gridCfg, gridOpts, logger());
272
273 Acts::CylindricalSpacePointGridCreator::fillGrid(m_finderCfg, finderOpts, grid,
274 spBegin, spEnd, logger());
275
276 // Compute radius Range
277 // we rely on the fact the grid is storing the proxies
278 // with a sorting in the radius
279 float minRange = std::numeric_limits<float>::max();
280 float maxRange = std::numeric_limits<float>::lowest();
281 for (const auto& coll : grid) {
282 if (coll.empty()) {
283 continue;
284 }
285 const auto* firstEl = coll.front();
286 const auto* lastEl = coll.back();
287 minRange = std::min(firstEl->radius(), minRange);
288 maxRange = std::max(lastEl->radius(), maxRange);
289 }
290
291 Acts::CylindricalBinnedGroup< value_type > spacePointsGrouping(std::move(grid), *m_bottomBinFinder,
293
294 // variable middle SP radial region of interest
295 const Acts::Range1D<float> rMiddleSPRange(std::floor(minRange/2)*2 + m_finderCfg.deltaRMiddleMinSPRange,
296 std::floor(maxRange/2)*2 - m_finderCfg.deltaRMiddleMaxSPRange);
297
298 //TODO POSSIBLE OPTIMISATION come back here: see MR !52399 ( i.e. use static thread_local)
299 typename decltype(m_finder)::SeedingState state;
300
301 // Already reserve the state vectors here.
302
303 state.topSpVec.reserve(m_stateVectorReserveSize);
304 state.curvatures.reserve(m_stateVectorReserveSize);
305 state.impactParameters.reserve(m_stateVectorReserveSize);
306 state.linCircleTop.reserve(m_stateVectorReserveSize);
307 state.compatBottomSP.reserve(m_stateVectorReserveSize);
308 state.compatTopSP.reserve(m_stateVectorReserveSize);
309
310 state.spacePointMutableData.resize(std::distance(spBegin, spEnd));
311
312 for (const auto& [bottom, middle, top] : spacePointsGrouping) {
313 m_finder.createSeedsForGroup(finderOpts, state, spacePointsGrouping.grid(),
314 seeds, bottom, middle, top, rMiddleSPRange);
315 }
316
318 // Selection function - temporary implementation
319 // need change from ACTS for final implementation
320 // To be used only on PPP
321 auto selectionFunction = [&state] (const seed_type& seed) -> bool
322 {
323 float seed_quality = seed.seedQuality();
324 float bottom_quality = state.spacePointMutableData.quality(seed.sp()[0]->index());
325 float middle_quality = state.spacePointMutableData.quality(seed.sp()[1]->index());
326 float top_quality = state.spacePointMutableData.quality(seed.sp()[2]->index());
327
328 if (bottom_quality > seed_quality and
329 middle_quality > seed_quality and
330 top_quality > seed_quality) {
331 return false;
332 }
333
334 return true;
335 };
336
337 // Select the seeds
338 std::size_t acceptedSeeds = 0;
339 for (std::size_t i(0); i<seeds.size(); ++i) {
340 const auto& seed = seeds[i];
341 if (not selectionFunction(seed)) {
342 continue;
343 }
344 // move passing seeds at the beginning of the vector/collection
345 // no need to swap them both. The seed currently at acceptedSeeds
346 // didn't make it (if i != acceptedSeeds)
347 if (acceptedSeeds != i)
348 seeds[acceptedSeeds] = std::move(seeds[i]);
349 ++acceptedSeeds;
350 }
351 // remove seeds that didn't make it
352 // they are all at the end of the collection
353 seeds.erase(seeds.begin() + acceptedSeeds, seeds.end());
354 }
355
356
357 // Store seeds
358 seedContainer.reserve(seeds.size());
359 for(const auto& seed: seeds) {
360 seedContainer.push_back(&seed);
361 }
362
363 return StatusCode::SUCCESS;
364 }
365
366 StatusCode
368 assert(m_logger != nullptr);
369
370 // Prepare the Acts::SeedFinderConfig object
371 // This is done only once, during initialization using the
372 // parameters set in the JO
373
374 // Configuration for Acts::SeedFinder
375 m_finderCfg.minPt = m_minPt;
376 m_finderCfg.cotThetaMax = m_cotThetaMax;
377 m_finderCfg.impactMax = m_impactMax;
378 m_finderCfg.zMin = m_zMin;
379 m_finderCfg.zMax = m_zMax;
380 m_finderCfg.zBinEdges = m_zBinEdges;
381 m_finderCfg.rMax = m_rMax;
382 m_finderCfg.binSizeR = m_binSizeR;
383 m_finderCfg.deltaRMin = m_deltaRMin;
384 m_finderCfg.deltaRMax = m_deltaRMax;
385 m_finderCfg.deltaRMinTopSP = m_deltaRMinTopSP;
386 m_finderCfg.deltaRMaxTopSP = m_deltaRMaxTopSP;
387 m_finderCfg.deltaRMinBottomSP = m_deltaRMinBottomSP;
388 m_finderCfg.deltaRMaxBottomSP = m_deltaRMaxBottomSP;
389 m_finderCfg.deltaZMax = m_deltaZMax;
390 m_finderCfg.collisionRegionMin = m_collisionRegionMin;
391 m_finderCfg.collisionRegionMax = m_collisionRegionMax;
392 m_finderCfg.sigmaScattering = m_sigmaScattering;
393 m_finderCfg.maxPtScattering = m_maxPtScattering;
394 m_finderCfg.radLengthPerSeed = m_radLengthPerSeed;
395 m_finderCfg.maxSeedsPerSpM = m_maxSeedsPerSpM;
396 m_finderCfg.interactionPointCut = m_interactionPointCut;
397 m_finderCfg.zBinsCustomLooping = m_zBinsCustomLooping;
398 m_finderCfg.useVariableMiddleSPRange = m_useVariableMiddleSPRange;
399 m_finderCfg.deltaRMiddleMinSPRange = m_deltaRMiddleMinSPRange;
400 m_finderCfg.deltaRMiddleMaxSPRange = m_deltaRMiddleMaxSPRange;
401 m_finderCfg.seedConfirmation = m_seedConfirmation;
402 m_finderCfg.centralSeedConfirmationRange.zMinSeedConf = m_seedConfCentralZMin;
403 m_finderCfg.centralSeedConfirmationRange.zMaxSeedConf = m_seedConfCentralZMax;
404 m_finderCfg.centralSeedConfirmationRange.rMaxSeedConf = m_seedConfCentralRMax;
405 m_finderCfg.centralSeedConfirmationRange.nTopForLargeR = m_seedConfCentralNTopLargeR;
406 m_finderCfg.centralSeedConfirmationRange.nTopForSmallR = m_seedConfCentralNTopSmallR;
407 m_finderCfg.centralSeedConfirmationRange.seedConfMinBottomRadius = m_seedConfCentralMinBottomRadius;
408 m_finderCfg.centralSeedConfirmationRange.seedConfMaxZOrigin = m_seedConfCentralMaxZOrigin;
409 m_finderCfg.centralSeedConfirmationRange.minImpactSeedConf = m_seedConfCentralMinImpact;
410 m_finderCfg.forwardSeedConfirmationRange.zMinSeedConf = m_seedConfForwardZMin;
411 m_finderCfg.forwardSeedConfirmationRange.zMaxSeedConf = m_seedConfForwardZMax;
412 m_finderCfg.forwardSeedConfirmationRange.rMaxSeedConf = m_seedConfForwardRMax;
413 m_finderCfg.forwardSeedConfirmationRange.nTopForLargeR = m_seedConfForwardNTopLargeR;
414 m_finderCfg.forwardSeedConfirmationRange.nTopForSmallR = m_seedConfForwardNTopSmallR;
415 m_finderCfg.forwardSeedConfirmationRange.seedConfMinBottomRadius = m_seedConfForwardMinBottomRadius;
416 m_finderCfg.forwardSeedConfirmationRange.seedConfMaxZOrigin = m_seedConfForwardMaxZOrigin;
417 m_finderCfg.forwardSeedConfirmationRange.minImpactSeedConf = m_seedConfForwardMinImpact;
418 m_finderCfg.useDetailedDoubleMeasurementInfo = m_useDetailedDoubleMeasurementInfo;
419 m_finderCfg.toleranceParam = m_toleranceParam;
420 m_finderCfg.phiMin = m_phiMin;
421 m_finderCfg.phiMax = m_phiMax;
422 m_finderCfg.rMin = m_rMin;
423 m_finderCfg.zAlign = m_zAlign;
424 m_finderCfg.rAlign = m_rAlign;
425 m_finderCfg.sigmaError = m_sigmaError;
426
427 // Fast tracking
428 // manually convert the two types
429 for (const auto& vec : m_rRangeMiddleSP) {
430 std::vector<float> convertedVec;
431 convertedVec.reserve(vec.size());
432 for (const auto& val : vec) {
433 convertedVec.push_back(static_cast<float>(val));
434 }
435
436 m_finderCfg.rRangeMiddleSP.push_back(std::move(convertedVec));
437 }
438
439
440 // define cuts used for fast tracking configuration
441 if (m_useExperimentCuts) {
442
443 // This function will be applied to select space points during grid filling
444 m_finderCfg.spacePointSelector
446
447 m_finderCfg.experimentCuts
449
450 }
451
452 // Configuration for Acts::SeedFilter (used by FinderCfg)
453 Acts::SeedFilterConfig filterCfg;
454 filterCfg.deltaRMin = m_deltaRMin;
455 filterCfg.maxSeedsPerSpM = m_maxSeedsPerSpM;
456 filterCfg.useDeltaRorTopRadius = m_useDeltaRorTopRadius;
457 filterCfg.seedConfirmation = m_seedConfirmationInFilter;
458 filterCfg.maxSeedsPerSpMConf = m_maxSeedsPerSpMConf;
459 filterCfg.maxQualitySeedsPerSpMConf = m_maxQualitySeedsPerSpMConf;
460 filterCfg.centralSeedConfirmationRange = m_finderCfg.centralSeedConfirmationRange;
461 filterCfg.forwardSeedConfirmationRange = m_finderCfg.forwardSeedConfirmationRange;
462 filterCfg.impactWeightFactor = m_impactWeightFactor;
463 filterCfg.zOriginWeightFactor = m_zOriginWeightFactor;
464 filterCfg.compatSeedWeight = m_compatSeedWeight;
465 filterCfg.compatSeedLimit = m_compatSeedLimit;
466 filterCfg.seedWeightIncrement = m_seedWeightIncrement;
467 filterCfg.numSeedIncrement = m_numSeedIncrement;
468 filterCfg.deltaInvHelixDiameter = m_deltaInvHelixDiameter;
469 m_finderCfg.seedFilter = std::make_unique<Acts::SeedFilter< value_type > >(filterCfg.toInternalUnits(), logger().cloneWithSuffix("Filter"));
470
471 m_finderCfg = m_finderCfg.toInternalUnits().calculateDerivedQuantities();
472
473 // Grid Configuration
474 m_gridCfg.minPt = m_minPt;
475 m_gridCfg.cotThetaMax = m_cotThetaMax;
476 m_gridCfg.impactMax = m_impactMax;
477 m_gridCfg.zMin = m_zMin;
478 m_gridCfg.zMax = m_zMax;
479 m_gridCfg.phiMin = m_gridPhiMin;
480 m_gridCfg.phiMax = m_gridPhiMax;
481 m_gridCfg.zBinEdges = m_zBinEdges;
482 m_gridCfg.rBinEdges = m_rBinEdges;
483 m_gridCfg.deltaRMax = m_deltaRMax;
484 m_gridCfg.rMax = m_gridRMax;
485 m_gridCfg.phiBinDeflectionCoverage = m_phiBinDeflectionCoverage;
486 m_gridCfg.maxPhiBins = m_maxPhiBins;
487 m_gridCfg = m_gridCfg.toInternalUnits();
488
489 // Seed Finder
490 m_finder = decltype(m_finder){m_finderCfg, logger().cloneWithSuffix("Finder")};
491
492 return StatusCode::SUCCESS;
493 }
494
495} // namespace ActsTrk
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)
std::vector< size_t > vec
static Double_t sp
std::unique_ptr< const Acts::Logger > makeActsAthenaLogger(IMessageSvc *svc, const std::string &name, int level, std::optional< std::string > parent_name)
@ top
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
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_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
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
#define ATH_FLATTEN
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Acts::MutableSeedProxy2 push_back(Acts::SpacePointIndexSubset2 sp)
const SpacePointContainer & spacePoints() const noexcept