Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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"
19 #include "CxxUtils/inline_hints.h"
20 
21 using namespace Acts::HashedStringLiteral;
22 
23 namespace 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);
43  ATH_MSG_DEBUG(" " << m_impactMax);
44  ATH_MSG_DEBUG(" " << m_zMin);
45  ATH_MSG_DEBUG(" " << m_zMax);
48  ATH_MSG_DEBUG(" " << m_zBinEdges);
49  ATH_MSG_DEBUG(" " << m_rBinEdges);
50  ATH_MSG_DEBUG(" " << m_deltaRMax);
51  ATH_MSG_DEBUG(" " << m_gridRMax);
53 
54  ATH_MSG_DEBUG(" * Used by SeedFinderConfig:");
55  ATH_MSG_DEBUG(" " << m_minPt);
57  ATH_MSG_DEBUG(" " << m_impactMax);
58  ATH_MSG_DEBUG(" " << m_zMin);
59  ATH_MSG_DEBUG(" " << m_zMax);
60  ATH_MSG_DEBUG(" " << m_zBinEdges);
61  ATH_MSG_DEBUG(" " << m_rMax);
62  ATH_MSG_DEBUG(" " << m_deltaRMin);
63  ATH_MSG_DEBUG(" " << m_deltaRMax);
68  ATH_MSG_DEBUG(" " << m_deltaZMax);
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);
110  ATH_MSG_DEBUG(" " << m_sigmaError);
111 
112  ATH_MSG_DEBUG(" * Used by SeedFilterConfig:");
113  ATH_MSG_DEBUG(" " << m_deltaRMin);
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;
207 
208  return StatusCode::SUCCESS;
209  }
210 
212  StatusCode
213  SeedingTool::createSeeds(const EventContext& /*ctx*/,
214  const Acts::SpacePointContainer<ActsTrk::SpacePointCollector, Acts::detail::RefHolder>& spContainer,
215  const Acts::Vector3& beamSpotPos,
216  const Acts::Vector3& bField,
217  ActsTrk::SeedContainer& seedContainer ) const
218  {
219  // Create Seeds
220  //TODO POSSIBLE OPTIMISATION come back here: see MR !52399 ( i.e. use static thread_local)
221  ATH_CHECK(createSeeds(spContainer.begin(),
222  spContainer.end(),
223  beamSpotPos,
224  bField,
225  seedContainer));
226 
227  return StatusCode::SUCCESS;
228  }
229 
230  template< typename external_iterator_t >
231  StatusCode
232  SeedingTool::createSeeds(external_iterator_t spBegin,
233  external_iterator_t spEnd,
234  const Acts::Vector3& beamSpotPos,
235  const Acts::Vector3& bField,
236  DataVector< Acts::Seed< typename SeedingTool::external_type, 3ul > >& seedContainer) const
237  {
238  static_assert(std::is_same<typename external_spacepoint< external_iterator_t >::type, const value_type&>::value,
239  "Inconsistent type");
240 
241  if (spBegin == spEnd)
242  return StatusCode::SUCCESS;
243 
244  std::vector< seed_type > seeds;
245 
246  // Space Point Grid Options
247  Acts::CylindricalSpacePointGridOptions gridOpts;
248  gridOpts.bFieldInZ = bField[2];
249  gridOpts = gridOpts.toInternalUnits();
250 
251  // Seed Finder Options
252  Acts::SeedFinderOptions finderOpts;
253  finderOpts.beamPos = Acts::Vector2(beamSpotPos[Amg::x],
254  beamSpotPos[Amg::y]);
255  finderOpts.bFieldInZ = bField[2];
256  finderOpts = finderOpts.toInternalUnits().calculateDerivedQuantities(m_finderCfg);
257 
258 
259 
260 
261  Acts::CylindricalSpacePointGrid< value_type > grid =
262  Acts::CylindricalSpacePointGridCreator::createGrid< value_type >(m_gridCfg, gridOpts, logger());
263 
264  Acts::CylindricalSpacePointGridCreator::fillGrid(m_finderCfg, finderOpts, grid,
265  spBegin, spEnd, logger());
266 
267  // Compute radius Range
268  // we rely on the fact the grid is storing the proxies
269  // with a sorting in the radius
270  float minRange = std::numeric_limits<float>::max();
271  float maxRange = std::numeric_limits<float>::lowest();
272  for (const auto& coll : grid) {
273  if (coll.empty()) {
274  continue;
275  }
276  const auto* firstEl = coll.front();
277  const auto* lastEl = coll.back();
278  minRange = std::min(firstEl->radius(), minRange);
279  maxRange = std::max(lastEl->radius(), maxRange);
280  }
281 
282  Acts::CylindricalBinnedGroup< value_type > spacePointsGrouping(std::move(grid), *m_bottomBinFinder,
284 
285  // variable middle SP radial region of interest
286  const Acts::Range1D<float> rMiddleSPRange(std::floor(minRange/2)*2 + m_finderCfg.deltaRMiddleMinSPRange,
287  std::floor(maxRange/2)*2 - m_finderCfg.deltaRMiddleMaxSPRange);
288 
289  //TODO POSSIBLE OPTIMISATION come back here: see MR !52399 ( i.e. use static thread_local)
290  typename decltype(m_finder)::SeedingState state;
291 
292  // Already reserve the state vectors here.
293 
294  state.topSpVec.reserve(m_stateVectorReserveSize);
295  state.curvatures.reserve(m_stateVectorReserveSize);
296  state.impactParameters.reserve(m_stateVectorReserveSize);
297  state.linCircleTop.reserve(m_stateVectorReserveSize);
298  state.compatBottomSP.reserve(m_stateVectorReserveSize);
299  state.compatTopSP.reserve(m_stateVectorReserveSize);
300 
301  state.spacePointMutableData.resize(std::distance(spBegin, spEnd));
302 
303  for (const auto [bottom, middle, top] : spacePointsGrouping) {
304  m_finder.createSeedsForGroup(finderOpts, state, spacePointsGrouping.grid(),
305  seeds, bottom, middle, top, rMiddleSPRange);
306  }
307 
309  // Selection function - temporary implementation
310  // need change from ACTS for final implementation
311  // To be used only on PPP
312  auto selectionFunction = [&state] (const seed_type& seed) -> bool
313  {
314  float seed_quality = seed.seedQuality();
315  float bottom_quality = state.spacePointMutableData.quality(seed.sp()[0]->index());
316  float middle_quality = state.spacePointMutableData.quality(seed.sp()[1]->index());
317  float top_quality = state.spacePointMutableData.quality(seed.sp()[2]->index());
318 
319  if (bottom_quality > seed_quality and
320  middle_quality > seed_quality and
321  top_quality > seed_quality) {
322  return false;
323  }
324 
325  return true;
326  };
327 
328  // Select the seeds
329  std::size_t acceptedSeeds = 0;
330  for (std::size_t i(0); i<seeds.size(); ++i) {
331  const auto& seed = seeds[i];
332  if (not selectionFunction(seed)) {
333  continue;
334  }
335  // move passing seeds at the beginning of the vector/collection
336  // no need to swap them both. The seed currently at acceptedSeeds
337  // didn't make it (if i != acceptedSeeds)
338  if (acceptedSeeds != i)
339  seeds[acceptedSeeds] = std::move(seeds[i]);
340  ++acceptedSeeds;
341  }
342  // remove seeds that didn't make it
343  // they are all at the end of the collection
344  seeds.erase(seeds.begin() + acceptedSeeds, seeds.end());
345  }
346 
347 
348  // Store seeds
349  seedContainer.reserve(seeds.size());
350  for(const auto& seed: seeds) {
351  const auto [bottom, middle, top] = seed.sp();
352 
353  std::unique_ptr< ActsTrk::Seed > toAdd =
354  std::make_unique< ActsTrk::Seed >(bottom->externalSpacePoint(),
355  middle->externalSpacePoint(),
356  top->externalSpacePoint());
357  toAdd->setVertexZ(seed.z());
358  toAdd->setQuality(seed.seedQuality());
359  seedContainer.push_back(std::move(toAdd));
360  }
361 
362  return StatusCode::SUCCESS;
363  }
364 
365  StatusCode
367  assert(m_logger != nullptr);
368 
369  // Prepare the Acts::SeedFinderConfig object
370  // This is done only once, during initialization using the
371  // parameters set in the JO
372 
373  // Configuration for Acts::SeedFinder
374  m_finderCfg.minPt = m_minPt;
375  m_finderCfg.cotThetaMax = m_cotThetaMax;
376  m_finderCfg.impactMax = m_impactMax;
377  m_finderCfg.zMin = m_zMin;
378  m_finderCfg.zMax = m_zMax;
379  m_finderCfg.zBinEdges = m_zBinEdges;
380  m_finderCfg.rMax = m_rMax;
381  m_finderCfg.binSizeR = m_binSizeR;
382  m_finderCfg.deltaRMin = m_deltaRMin;
383  m_finderCfg.deltaRMax = m_deltaRMax;
384  m_finderCfg.deltaRMinTopSP = m_deltaRMinTopSP;
385  m_finderCfg.deltaRMaxTopSP = m_deltaRMaxTopSP;
386  m_finderCfg.deltaRMinBottomSP = m_deltaRMinBottomSP;
387  m_finderCfg.deltaRMaxBottomSP = m_deltaRMaxBottomSP;
388  m_finderCfg.deltaZMax = m_deltaZMax;
389  m_finderCfg.collisionRegionMin = m_collisionRegionMin;
390  m_finderCfg.collisionRegionMax = m_collisionRegionMax;
391  m_finderCfg.sigmaScattering = m_sigmaScattering;
392  m_finderCfg.maxPtScattering = m_maxPtScattering;
393  m_finderCfg.radLengthPerSeed = m_radLengthPerSeed;
394  m_finderCfg.maxSeedsPerSpM = m_maxSeedsPerSpM;
395  m_finderCfg.interactionPointCut = m_interactionPointCut;
396  m_finderCfg.zBinsCustomLooping = m_zBinsCustomLooping;
397  m_finderCfg.useVariableMiddleSPRange = m_useVariableMiddleSPRange;
398  m_finderCfg.deltaRMiddleMinSPRange = m_deltaRMiddleMinSPRange;
399  m_finderCfg.deltaRMiddleMaxSPRange = m_deltaRMiddleMaxSPRange;
400  m_finderCfg.seedConfirmation = m_seedConfirmation;
401  m_finderCfg.centralSeedConfirmationRange.zMinSeedConf = m_seedConfCentralZMin;
402  m_finderCfg.centralSeedConfirmationRange.zMaxSeedConf = m_seedConfCentralZMax;
403  m_finderCfg.centralSeedConfirmationRange.rMaxSeedConf = m_seedConfCentralRMax;
404  m_finderCfg.centralSeedConfirmationRange.nTopForLargeR = m_seedConfCentralNTopLargeR;
405  m_finderCfg.centralSeedConfirmationRange.nTopForSmallR = m_seedConfCentralNTopSmallR;
406  m_finderCfg.centralSeedConfirmationRange.seedConfMinBottomRadius = m_seedConfCentralMinBottomRadius;
407  m_finderCfg.centralSeedConfirmationRange.seedConfMaxZOrigin = m_seedConfCentralMaxZOrigin;
408  m_finderCfg.centralSeedConfirmationRange.minImpactSeedConf = m_seedConfCentralMinImpact;
409  m_finderCfg.forwardSeedConfirmationRange.zMinSeedConf = m_seedConfForwardZMin;
410  m_finderCfg.forwardSeedConfirmationRange.zMaxSeedConf = m_seedConfForwardZMax;
411  m_finderCfg.forwardSeedConfirmationRange.rMaxSeedConf = m_seedConfForwardRMax;
412  m_finderCfg.forwardSeedConfirmationRange.nTopForLargeR = m_seedConfForwardNTopLargeR;
413  m_finderCfg.forwardSeedConfirmationRange.nTopForSmallR = m_seedConfForwardNTopSmallR;
414  m_finderCfg.forwardSeedConfirmationRange.seedConfMinBottomRadius = m_seedConfForwardMinBottomRadius;
415  m_finderCfg.forwardSeedConfirmationRange.seedConfMaxZOrigin = m_seedConfForwardMaxZOrigin;
416  m_finderCfg.forwardSeedConfirmationRange.minImpactSeedConf = m_seedConfForwardMinImpact;
417  m_finderCfg.useDetailedDoubleMeasurementInfo = m_useDetailedDoubleMeasurementInfo;
418  m_finderCfg.toleranceParam = m_toleranceParam;
419  m_finderCfg.phiMin = m_phiMin;
420  m_finderCfg.phiMax = m_phiMax;
421  m_finderCfg.rMin = m_rMin;
422  m_finderCfg.zAlign = m_zAlign;
423  m_finderCfg.rAlign = m_rAlign;
424  m_finderCfg.sigmaError = m_sigmaError;
425 
426  // Fast tracking
427  // manually convert the two types
428  for (const auto& vec : m_rRangeMiddleSP) {
429  std::vector<float> convertedVec;
430 
431  for (const auto& val : vec) {
432  convertedVec.push_back(static_cast<float>(val));
433  }
434 
435  m_finderCfg.rRangeMiddleSP.push_back(convertedVec);
436  }
437 
438  // define cuts used for fast tracking configuration
439  if (m_useExperimentCuts) {
440 
441  // This function will be applied to select space points during grid filling
442  m_finderCfg.spacePointSelector
443  .connect<itkFastTrackingSPselect>();
444 
445  m_finderCfg.experimentCuts
446  .connect<itkFastDoubletCut>();
447 
448  }
449 
450  // Configuration for Acts::SeedFilter (used by FinderCfg)
451  Acts::SeedFilterConfig filterCfg;
452  filterCfg.deltaRMin = m_deltaRMin;
453  filterCfg.maxSeedsPerSpM = m_maxSeedsPerSpM;
454  filterCfg.useDeltaRorTopRadius = m_useDeltaRorTopRadius;
455  filterCfg.seedConfirmation = m_seedConfirmationInFilter;
456  filterCfg.maxSeedsPerSpMConf = m_maxSeedsPerSpMConf;
457  filterCfg.maxQualitySeedsPerSpMConf = m_maxQualitySeedsPerSpMConf;
458  filterCfg.centralSeedConfirmationRange = m_finderCfg.centralSeedConfirmationRange;
459  filterCfg.forwardSeedConfirmationRange = m_finderCfg.forwardSeedConfirmationRange;
460  filterCfg.impactWeightFactor = m_impactWeightFactor;
461  filterCfg.zOriginWeightFactor = m_zOriginWeightFactor;
462  filterCfg.compatSeedWeight = m_compatSeedWeight;
463  filterCfg.compatSeedLimit = m_compatSeedLimit;
464  filterCfg.seedWeightIncrement = m_seedWeightIncrement;
465  filterCfg.numSeedIncrement = m_numSeedIncrement;
466  filterCfg.deltaInvHelixDiameter = m_deltaInvHelixDiameter;
467  m_finderCfg.seedFilter = std::make_unique<Acts::SeedFilter< value_type > >(filterCfg.toInternalUnits(), logger().cloneWithSuffix("Filter"));
468 
469  m_finderCfg = m_finderCfg.toInternalUnits().calculateDerivedQuantities();
470 
471  // Grid Configuration
472  m_gridCfg.minPt = m_minPt;
473  m_gridCfg.cotThetaMax = m_cotThetaMax;
474  m_gridCfg.impactMax = m_impactMax;
475  m_gridCfg.zMin = m_zMin;
476  m_gridCfg.zMax = m_zMax;
477  m_gridCfg.phiMin = m_gridPhiMin;
478  m_gridCfg.phiMax = m_gridPhiMax;
479  m_gridCfg.zBinEdges = m_zBinEdges;
480  m_gridCfg.rBinEdges = m_rBinEdges;
481  m_gridCfg.deltaRMax = m_deltaRMax;
482  m_gridCfg.rMax = m_gridRMax;
483  m_gridCfg.phiBinDeflectionCoverage = m_phiBinDeflectionCoverage;
484  m_gridCfg.maxPhiBins = m_maxPhiBins;
485  m_gridCfg = m_gridCfg.toInternalUnits();
486 
487  // Seed Finder
488  m_finder = decltype(m_finder){m_finderCfg, logger().cloneWithSuffix("Finder")};
489 
490  return StatusCode::SUCCESS;
491  }
492 
493 } // namespace ActsTrk
ActsTrk::SeedingTool::m_deltaRMaxTopSP
Gaudi::Property< float > m_deltaRMaxTopSP
Definition: SeedingTool.h:135
ActsTrk::SeedingTool::m_gridPhiMax
Gaudi::Property< float > m_gridPhiMax
Definition: SeedingTool.h:120
ActsTrk::SeedingTool::m_compatSeedLimit
Gaudi::Property< std::size_t > m_compatSeedLimit
Definition: SeedingTool.h:238
ActsTrk::SeedingTool::m_seedConfCentralMaxZOrigin
Gaudi::Property< float > m_seedConfCentralMaxZOrigin
Definition: SeedingTool.h:190
inline_hints.h
ActsTrk::SeedingTool::m_finderCfg
Acts::SeedFinderConfig< value_type > m_finderCfg
Definition: SeedingTool.h:91
ActsTrk::SeedingTool::m_seedConfCentralMinBottomRadius
Gaudi::Property< float > m_seedConfCentralMinBottomRadius
Definition: SeedingTool.h:187
ActsTrk::SeedingTool::m_compatSeedWeight
Gaudi::Property< float > m_compatSeedWeight
Definition: SeedingTool.h:236
ActsTrk::SeedingTool::m_sigmaScattering
Gaudi::Property< float > m_sigmaScattering
Definition: SeedingTool.h:147
ActsTrk::SeedingTool::m_maxSeedsPerSpM
Gaudi::Property< int > m_maxSeedsPerSpM
Definition: SeedingTool.h:153
ActsTrk::SeedingTool::m_bottomBinFinder
std::unique_ptr< Acts::GridBinFinder< 3ul > > m_bottomBinFinder
Definition: SeedingTool.h:276
ActsTrk::SeedingTool::m_seedConfForwardMaxZOrigin
Gaudi::Property< float > m_seedConfForwardMaxZOrigin
Definition: SeedingTool.h:214
ActsTrk::SeedingTool::m_maxQualitySeedsPerSpMConf
Gaudi::Property< std::size_t > m_maxQualitySeedsPerSpMConf
Definition: SeedingTool.h:248
ActsTrk::SeedingTool::m_seedConfirmation
Gaudi::Property< bool > m_seedConfirmation
Definition: SeedingTool.h:170
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
ActsTrk::SeedingTool::m_phiBinDeflectionCoverage
Gaudi::Property< int > m_phiBinDeflectionCoverage
Definition: SeedingTool.h:122
ActsTrk::SeedingTool::m_phiMin
Gaudi::Property< float > m_phiMin
Definition: SeedingTool.h:225
ActsTrk::SeedingTool::m_deltaRMinTopSP
Gaudi::Property< float > m_deltaRMinTopSP
Definition: SeedingTool.h:133
ActsTrk::SeedingTool::m_deltaRMaxBottomSP
Gaudi::Property< float > m_deltaRMaxBottomSP
Definition: SeedingTool.h:139
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
ActsTrk::SeedingTool::itkFastTrackingSPselect
static bool itkFastTrackingSPselect(const value_type &sp)
Definition: SeedingTool.h:291
ActsTrk::SeedingTool::m_useVariableMiddleSPRange
Gaudi::Property< bool > m_useVariableMiddleSPRange
Definition: SeedingTool.h:161
ActsTrk::SeedingTool::createSeeds
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
Definition: SeedingTool.cxx:213
Amg::y
@ y
Definition: GeoPrimitives.h:35
ActsTrk::SeedingTool::external_spacepoint::type
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:73
ActsTrk::SeedingTool::m_rMin
Gaudi::Property< float > m_rMin
Definition: SeedingTool.h:227
ActsTrk::SeedingTool::m_rAlign
Gaudi::Property< float > m_rAlign
Definition: SeedingTool.h:229
ActsTrk::SeedingTool::m_seedConfCentralNTopLargeR
Gaudi::Property< size_t > m_seedConfCentralNTopLargeR
Definition: SeedingTool.h:181
athena.value
value
Definition: athena.py:124
ActsTrk::SeedingTool::m_deltaRMax
Gaudi::Property< float > m_deltaRMax
Definition: SeedingTool.h:107
ActsTrk::SeedingTool::m_deltaRMinBottomSP
Gaudi::Property< float > m_deltaRMinBottomSP
Definition: SeedingTool.h:137
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:9
ActsTrk::SeedingTool::m_finder
Acts::SeedFinder< value_type, Acts::CylindricalSpacePointGrid< value_type > > m_finder
Definition: SeedingTool.h:90
ActsTrk::SeedingTool::m_useExperimentCuts
Gaudi::Property< bool > m_useExperimentCuts
Definition: SeedingTool.h:271
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
ActsTrk::SeedingTool::m_rMax
Gaudi::Property< float > m_rMax
Definition: SeedingTool.h:127
ActsTrk::SeedingTool::m_zAlign
Gaudi::Property< float > m_zAlign
Definition: SeedingTool.h:228
ActsTrk::SeedingTool::m_seedConfCentralZMax
Gaudi::Property< float > m_seedConfCentralZMax
Definition: SeedingTool.h:175
ActsTrk::SeedingTool::m_zBinNeighborsTop
Gaudi::Property< std::vector< std::pair< int, int > > > m_zBinNeighborsTop
Definition: SeedingTool.h:257
makeActsAthenaLogger
std::unique_ptr< const Acts::Logger > makeActsAthenaLogger(IMessageSvc *svc, const std::string &name, int level, std::optional< std::string > parent_name)
Definition: Tracking/Acts/ActsInterop/src/Logger.cxx:64
ActsTrk::SeedingTool::m_impactMax
Gaudi::Property< float > m_impactMax
Definition: SeedingTool.h:109
ActsTrk::SeedingTool::m_impactWeightFactor
Gaudi::Property< float > m_impactWeightFactor
Definition: SeedingTool.h:233
ActsTrk::SeedingTool::m_seedQualitySelection
Gaudi::Property< bool > m_seedQualitySelection
Definition: SeedingTool.h:95
ActsTrk::SeedingTool::m_zBinEdges
Gaudi::Property< std::vector< float > > m_zBinEdges
Definition: SeedingTool.h:111
ActsTrk::SeedingTool::m_zMax
Gaudi::Property< float > m_zMax
Definition: SeedingTool.h:105
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ActsTrk::SeedingTool::m_seedConfForwardZMax
Gaudi::Property< float > m_seedConfForwardZMax
Definition: SeedingTool.h:199
lumiFormat.i
int i
Definition: lumiFormat.py:85
ActsTrk::SeedingTool::m_minPt
Gaudi::Property< float > m_minPt
Definition: SeedingTool.h:99
ActsTrk::SeedingTool::m_deltaZMax
Gaudi::Property< float > m_deltaZMax
Definition: SeedingTool.h:141
ActsTrk::SeedingTool::m_maxSeedsPerSpMConf
Gaudi::Property< std::size_t > m_maxSeedsPerSpMConf
Definition: SeedingTool.h:246
ATH_FLATTEN
#define ATH_FLATTEN
Definition: inline_hints.h:52
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Amg::x
@ x
Definition: GeoPrimitives.h:34
ActsTrk::SeedingTool::m_binSizeR
Gaudi::Property< float > m_binSizeR
Definition: SeedingTool.h:129
ActsTrk::SeedingTool::m_topBinFinder
std::unique_ptr< Acts::GridBinFinder< 3ul > > m_topBinFinder
Definition: SeedingTool.h:277
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ActsTrk::SeedingTool::m_seedConfForwardRMax
Gaudi::Property< float > m_seedConfForwardRMax
Definition: SeedingTool.h:202
detail::ul
unsigned long ul
Definition: PrimitiveHelpers.h:46
ActsTrk::SeedingTool::m_seedConfCentralMinImpact
Gaudi::Property< float > m_seedConfCentralMinImpact
Definition: SeedingTool.h:193
ActsTrk::SeedingTool::m_seedConfForwardMinImpact
Gaudi::Property< float > m_seedConfForwardMinImpact
Definition: SeedingTool.h:217
ActsTrk::SeedingTool::m_rBinNeighborsTop
Gaudi::Property< std::vector< std::pair< int, int > > > m_rBinNeighborsTop
Definition: SeedingTool.h:264
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
ActsTrk::SeedingTool::m_gridRMax
Gaudi::Property< float > m_gridRMax
Definition: SeedingTool.h:116
ActsTrk::SeedingTool::m_radLengthPerSeed
Gaudi::Property< float > m_radLengthPerSeed
Definition: SeedingTool.h:151
DeMoUpdate.toAdd
bool toAdd
Definition: DeMoUpdate.py:1304
ActsTrk::SeedingTool::m_deltaInvHelixDiameter
Gaudi::Property< float > m_deltaInvHelixDiameter
Definition: SeedingTool.h:252
ActsTrk::SeedingTool::logger
const Acts::Logger & logger() const
Private access to the logger.
Definition: SeedingTool.h:282
ActsTrk::SeedingTool::m_seedConfCentralRMax
Gaudi::Property< float > m_seedConfCentralRMax
Definition: SeedingTool.h:178
ActsTrk::SeedingTool::m_collisionRegionMax
Gaudi::Property< float > m_collisionRegionMax
Definition: SeedingTool.h:145
ActsTrk::SeedingTool::m_rBinNeighborsBottom
Gaudi::Property< std::vector< std::pair< int, int > > > m_rBinNeighborsBottom
Definition: SeedingTool.h:266
ActsTrk::SeedingTool::m_rBinsCustomLooping
Gaudi::Property< std::vector< std::size_t > > m_rBinsCustomLooping
Definition: SeedingTool.h:159
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
ActsTrk::SeedingTool::m_deltaRMiddleMaxSPRange
Gaudi::Property< float > m_deltaRMiddleMaxSPRange
Definition: SeedingTool.h:168
ActsTrk::SeedingTool::m_deltaRMiddleMinSPRange
Gaudi::Property< float > m_deltaRMiddleMinSPRange
Definition: SeedingTool.h:166
ActsTrk::SeedingTool::m_navigation
std::array< std::vector< std::size_t >, 3ul > m_navigation
Definition: SeedingTool.h:279
ActsTrk::SeedingTool::m_seedConfCentralZMin
Gaudi::Property< float > m_seedConfCentralZMin
Definition: SeedingTool.h:172
ActsTrk::SeedingTool::itkFastDoubletCut
static bool itkFastDoubletCut(float bottomRadius, float cotTheta)
Definition: SeedingTool.h:309
ActsTrk::SeedingTool::m_zBinsCustomLooping
Gaudi::Property< std::vector< size_t > > m_zBinsCustomLooping
Definition: SeedingTool.h:157
ActsTrk::SeedingTool::prepareConfiguration
StatusCode prepareConfiguration()
Definition: SeedingTool.cxx:366
ActsTrk::SeedingTool::m_phiMax
Gaudi::Property< float > m_phiMax
Definition: SeedingTool.h:226
ActsTrk::SeedingTool::m_collisionRegionMin
Gaudi::Property< float > m_collisionRegionMin
Definition: SeedingTool.h:143
ActsTrk::SeedingTool::m_seedConfCentralNTopSmallR
Gaudi::Property< size_t > m_seedConfCentralNTopSmallR
Definition: SeedingTool.h:184
ActsTrk::SeedingTool::m_cotThetaMax
Gaudi::Property< float > m_cotThetaMax
Definition: SeedingTool.h:101
ActsTrk::SeedingTool::m_maxPhiBins
Gaudi::Property< int > m_maxPhiBins
Definition: SeedingTool.h:124
ActsTrk::SeedingTool::initialize
virtual StatusCode initialize() override
Definition: SeedingTool.cxx:30
ActsTrk::SeedingTool::m_toleranceParam
Gaudi::Property< float > m_toleranceParam
Definition: SeedingTool.h:223
ActsTrk::SeedingTool::seed_type
Acts::Seed< value_type, 3ul > seed_type
Definition: SeedingTool.h:43
ActsTrk::SeedingTool::m_deltaRMin
Gaudi::Property< float > m_deltaRMin
Definition: SeedingTool.h:131
ActsTrk::SeedingTool::m_stateVectorReserveSize
Gaudi::Property< int > m_stateVectorReserveSize
Definition: SeedingTool.h:273
ActsTrk::SeedingTool::m_seedWeightIncrement
Gaudi::Property< float > m_seedWeightIncrement
Definition: SeedingTool.h:240
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
ActsTrk::SeedingTool::m_numPhiNeighbors
Gaudi::Property< int > m_numPhiNeighbors
Definition: SeedingTool.h:268
ActsTrk::SeedingTool::m_seedConfForwardNTopLargeR
Gaudi::Property< size_t > m_seedConfForwardNTopLargeR
Definition: SeedingTool.h:205
ActsTrk::SeedingTool::m_seedConfForwardZMin
Gaudi::Property< float > m_seedConfForwardZMin
Definition: SeedingTool.h:196
ActsTrk::SeedingTool::m_seedConfirmationInFilter
Gaudi::Property< bool > m_seedConfirmationInFilter
Definition: SeedingTool.h:244
ActsTrk::SeedingTool::m_rBinEdges
Gaudi::Property< std::vector< float > > m_rBinEdges
Definition: SeedingTool.h:114
ActsTrk::SeedingTool::m_interactionPointCut
Gaudi::Property< bool > m_interactionPointCut
Definition: SeedingTool.h:155
ActsTrk::SeedingTool::m_rRangeMiddleSP
Gaudi::Property< std::vector< std::vector< double > > > m_rRangeMiddleSP
Definition: SeedingTool.h:163
ActsTrk::SeedingTool::m_useDeltaRorTopRadius
Gaudi::Property< bool > m_useDeltaRorTopRadius
Definition: SeedingTool.h:250
SeedingTool.h
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition: MuonDetectorBuilderTool.cxx:55
top
@ top
Definition: TruthClasses.h:64
ActsTrk::SeedingTool::m_seedConfForwardNTopSmallR
Gaudi::Property< size_t > m_seedConfForwardNTopSmallR
Definition: SeedingTool.h:208
ActsTrk::SeedingTool::m_gridCfg
Acts::CylindricalSpacePointGridConfig m_gridCfg
Definition: SeedingTool.h:92
ActsTrk::SeedingTool::m_zOriginWeightFactor
Gaudi::Property< float > m_zOriginWeightFactor
Definition: SeedingTool.h:235
ActsTrk::SeedingTool::m_useDetailedDoubleMeasurementInfo
Gaudi::Property< bool > m_useDetailedDoubleMeasurementInfo
Definition: SeedingTool.h:220
ActsTrk::SeedingTool::m_zBinNeighborsBottom
Gaudi::Property< std::vector< std::pair< int, int > > > m_zBinNeighborsBottom
Definition: SeedingTool.h:261
value_type
Definition: EDM_MasterSearch.h:11
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
ActsTrk::SeedingTool::m_gridPhiMin
Gaudi::Property< float > m_gridPhiMin
Definition: SeedingTool.h:118
ActsTrk::SeedingTool::m_sigmaError
Gaudi::Property< float > m_sigmaError
Definition: SeedingTool.h:230
ActsTrk::SeedingTool::m_logger
std::unique_ptr< const Acts::Logger > m_logger
logging instance
Definition: SeedingTool.h:284
ActsTrk::SeedingTool::m_maxPtScattering
Gaudi::Property< float > m_maxPtScattering
Definition: SeedingTool.h:149
ActsTrk::SeedingTool::m_numSeedIncrement
Gaudi::Property< float > m_numSeedIncrement
Definition: SeedingTool.h:242
ActsTrk::SeedingTool::m_seedConfForwardMinBottomRadius
Gaudi::Property< float > m_seedConfForwardMinBottomRadius
Definition: SeedingTool.h:211
ActsTrk::SeedingTool::m_zMin
Gaudi::Property< float > m_zMin
Definition: SeedingTool.h:103