ATLAS Offline Software
SeedingTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "src/SeedingTool.h"
6 
7 // ACTS
8 #include "Acts/Seeding/SeedFilterConfig.hpp"
9 #include "Acts/Seeding/BinnedGroup.hpp"
10 #include "Acts/Seeding/SeedFilter.hpp"
11 #include "Acts/Seeding/SeedFinder.hpp"
12 #include "Acts/Seeding/SeedFinderConfig.hpp"
13 #include "Acts/Definitions/Units.hpp"
14 #include "Acts/Seeding/SeedConfirmationRangeConfig.hpp"
15 
16 namespace ActsTrk {
17  SeedingTool::SeedingTool(const std::string& type,
18  const std::string& name,
19  const IInterface* parent)
20  : base_class(type, name, parent)
21  {}
22 
24  ATH_MSG_DEBUG("Initializing " << name() << "...");
25 
26  ATH_MSG_DEBUG("Properties Summary:");
30 
31  ATH_MSG_DEBUG(" * Used by SpacePointGridConfig");
32  ATH_MSG_DEBUG(" " << m_minPt);
34  ATH_MSG_DEBUG(" " << m_impactMax);
35  ATH_MSG_DEBUG(" " << m_zMin);
36  ATH_MSG_DEBUG(" " << m_zMax);
39  ATH_MSG_DEBUG(" " << m_zBinEdges);
40  ATH_MSG_DEBUG(" " << m_deltaRMax);
41  ATH_MSG_DEBUG(" " << m_gridRMax);
43 
44  ATH_MSG_DEBUG(" * Used by SeedFinderConfig:");
45  ATH_MSG_DEBUG(" " << m_minPt);
47  ATH_MSG_DEBUG(" " << m_impactMax);
48  ATH_MSG_DEBUG(" " << m_zMin);
49  ATH_MSG_DEBUG(" " << m_zMax);
50  ATH_MSG_DEBUG(" " << m_zBinEdges);
51  ATH_MSG_DEBUG(" " << m_rMax);
52  ATH_MSG_DEBUG(" " << m_deltaRMin);
53  ATH_MSG_DEBUG(" " << m_deltaRMax);
58  ATH_MSG_DEBUG(" " << m_deltaZMax);
71  } else if ( not m_rRangeMiddleSP.empty() )
74  if ( m_seedConfirmation ) {
91  }
94  ATH_MSG_DEBUG(" " << m_phiMin);
95  ATH_MSG_DEBUG(" " << m_phiMax);
96  ATH_MSG_DEBUG(" " << m_rMin);
97  ATH_MSG_DEBUG(" " << m_zAlign);
98  ATH_MSG_DEBUG(" " << m_rAlign);
100 
101  ATH_MSG_DEBUG(" * Used by SeedFilterConfig:");
102  ATH_MSG_DEBUG(" " << m_deltaRMin);
125  }
132 
133 
134  if (m_zBinEdges.size() - 1 !=
135  m_zBinNeighborsTop.size() and
136  not m_zBinNeighborsTop.empty()) {
137  ATH_MSG_ERROR("Inconsistent config zBinNeighborsTop");
138  return StatusCode::FAILURE;
139  }
140 
141  if (m_zBinEdges.size() - 1 !=
142  m_zBinNeighborsBottom.size() and
143  not m_zBinNeighborsBottom.empty()) {
144  ATH_MSG_ERROR("Inconsistent config zBinNeighborsBottom");
145  return StatusCode::FAILURE;
146  }
147 
148  if (m_zBinsCustomLooping.size() != 0) {
149  // zBinsCustomLooping can contain a number of elements <= to the total number
150  // of bin in zBinEdges
151  for (std::size_t i : m_zBinsCustomLooping) {
152  if (i >= m_zBinEdges.size()) {
153  ATH_MSG_ERROR("Inconsistent config zBinsCustomLooping contains bins that are not in zBinEdges");
154  return StatusCode::FAILURE;
155  }
156  }
157  }
158 
160 
161  m_bottomBinFinder = std::make_unique< Acts::GridBinFinder< 2ul > >(m_numPhiNeighbors.value(), m_zBinNeighborsBottom.value());
162  m_topBinFinder = std::make_unique< Acts::GridBinFinder< 2ul > >(m_numPhiNeighbors.value(), m_zBinNeighborsTop.value());
163 
164  m_navigation[0ul] = {};
165  m_navigation[1ul] = m_finderCfg.zBinsCustomLooping;
166 
167  return StatusCode::SUCCESS;
168  }
169 
170  StatusCode
171  SeedingTool::createSeeds(const EventContext& /*ctx*/,
172  const std::vector<const xAOD::SpacePoint*>& spContainer,
173  const Acts::Vector3& beamSpotPos,
174  const Acts::Vector3& bField,
175  ActsTrk::SeedContainer& seedContainer ) const
176  {
177  // Create Seeds
178  //TODO POSSIBLE OPTIMISATION come back here: see MR !52399 ( i.e. use static thread_local)
179  std::vector<Acts::Seed< xAOD::SpacePoint >> groupSeeds;
180  ATH_CHECK(createSeeds(spContainer.begin(),
181  spContainer.end(),
182  beamSpotPos,
183  bField,
184  groupSeeds));
185 
186  // Store seeds
187  seedContainer.reserve(groupSeeds.size());
188  for( const auto& seed: groupSeeds) {
189  std::unique_ptr< seed_type > to_add =
190  std::make_unique< seed_type >(seed);
191  seedContainer.push_back(std::move(to_add));
192  }
193 
194  return StatusCode::SUCCESS;
195  }
196 
197  template< typename external_iterator_t >
198  StatusCode
199  SeedingTool::createSeeds(external_iterator_t spBegin,
200  external_iterator_t spEnd,
201  const Acts::Vector3& beamSpotPos,
202  const Acts::Vector3& bField,
203  std::vector< seed_type >& seeds) const
204  {
205  static_assert(std::is_same<typename external_spacepoint< external_iterator_t >::type, value_type>::value,
206  "Inconsistent type");
207 
208  seeds.clear();
209  if (spBegin == spEnd)
210  return StatusCode::SUCCESS;
211 
212  // Space Point Grid Options
213  Acts::CylindricalSpacePointGridOptions gridOpts;
214  gridOpts.bFieldInZ = bField[2];
215  gridOpts = gridOpts.toInternalUnits();
216 
217  // Seed Finder Options
218  Acts::SeedFinderOptions finderOpts;
219  finderOpts.beamPos = Acts::Vector2(beamSpotPos[Amg::x],
220  beamSpotPos[Amg::y]);
221  finderOpts.bFieldInZ = bField[2];
222  finderOpts = finderOpts.toInternalUnits().calculateDerivedQuantities(m_finderCfg);
223 
224  auto extractCovariance = [](const value_type& sp,
225  float, float, float) -> std::tuple<Acts::Vector3, Acts::Vector2, std::optional<Acts::ActsScalar>>
226  {
230  Acts::Vector3 position(sp.x(),
231  sp.y(),
232  sp.z());
233  Acts::Vector2 covariance(sp.varianceR(), sp.varianceZ());
234  return std::make_tuple(position, covariance, std::nullopt);
235  };
236 
237 
238  Acts::Extent rRangeSPExtent;
239 
240  Acts::CylindricalSpacePointGrid< value_type > grid =
241  Acts::CylindricalSpacePointGridCreator::createGrid< value_type >(m_gridCfg, gridOpts);
242 
243  Acts::CylindricalSpacePointGridCreator::fillGrid(m_finderCfg, finderOpts, grid,
244  spBegin, spEnd, extractCovariance, rRangeSPExtent);
245 
246  Acts::CylindricalBinnedGroup< value_type > spacePointsGrouping(std::move(grid), *m_bottomBinFinder,
248 
249  // variable middle SP radial region of interest
250  const Acts::Range1D<float> rMiddleSPRange(std::floor(rRangeSPExtent.min(Acts::binR) / 2) * 2 +
251  m_finderCfg.deltaRMiddleMinSPRange,
252  std::floor(rRangeSPExtent.max(Acts::binR) / 2) * 2 -
253  m_finderCfg.deltaRMiddleMaxSPRange);
254 
255  //TODO POSSIBLE OPTIMISATION come back here: see MR !52399 ( i.e. use static thread_local)
256  typename decltype(m_finder)::SeedingState state;
257  state.spacePointData.resize(std::distance(spBegin, spEnd),
259 
261  for (std::size_t idx(0); idx < spacePointsGrouping.grid().size(); ++idx) {
262  const std::vector<std::unique_ptr<Acts::InternalSpacePoint<xAOD::SpacePoint>>>& collection = spacePointsGrouping.grid().at(idx);
263  for (const std::unique_ptr<Acts::InternalSpacePoint<xAOD::SpacePoint>>& sp : collection) {
264  std::size_t index = sp->index();
265 
266  const float topHalfStripLength =
267  m_finderCfg.getTopHalfStripLength(sp->sp());
268  const float bottomHalfStripLength =
269  m_finderCfg.getBottomHalfStripLength(sp->sp());
270  const Acts::Vector3 topStripDirection =
271  m_finderCfg.getTopStripDirection(sp->sp());
272  const Acts::Vector3 bottomStripDirection =
273  m_finderCfg.getBottomStripDirection(sp->sp());
274 
275  state.spacePointData.setTopStripVector(
276  index, topHalfStripLength * topStripDirection);
277  state.spacePointData.setBottomStripVector(
278  index, bottomHalfStripLength * bottomStripDirection);
279  state.spacePointData.setStripCenterDistance(
280  index, m_finderCfg.getStripCenterDistance(sp->sp()));
281  state.spacePointData.setTopStripCenterPosition(
282  index, m_finderCfg.getTopStripCenterPosition(sp->sp()));
283 
284  }
285  }
286  }
287 
288  for (const auto [bottom, middle, top] : spacePointsGrouping) {
289  m_finder.createSeedsForGroup(finderOpts, state, spacePointsGrouping.grid(),
290  std::back_inserter(seeds), bottom, middle, top, rMiddleSPRange);
291  }
292 
294  // Selection function - temporary implementation
295  // need change from ACTS for final implementation
296  // To be used only on PPP
297  auto selectionFunction = [&state] (const Acts::Seed<xAOD::SpacePoint>& seed) -> bool
298  {
299  const xAOD::SpacePoint* bottom_sp = seed.sp()[0];
300  const xAOD::SpacePoint* middle_sp = seed.sp()[1];
301  const xAOD::SpacePoint* top_sp = seed.sp()[2];
302 
303  float seed_quality = seed.seedQuality();
304  float bottom_quality = state.spacePointData.quality(bottom_sp->index());
305  float middle_quality = state.spacePointData.quality(middle_sp->index());
306  float top_quality = state.spacePointData.quality(top_sp->index());
307 
308  if (bottom_quality > seed_quality and
309  middle_quality > seed_quality and
310  top_quality > seed_quality) {
311  return false;
312  }
313 
314  return true;
315  };
316 
317  // Select the seeds
318  std::size_t acceptedSeeds = 0;
319  for (std::size_t i(0); i<seeds.size(); ++i) {
320  const auto& seed = seeds[i];
321  if (not selectionFunction(seed)) {
322  continue;
323  }
324  // move passing seeds at the beginning of the vector/collection
325  // no need to swap them both. The seed currently at acceptedSeeds
326  // didn't make it (if i != acceptedSeeds)
327  if (acceptedSeeds != i)
328  seeds[acceptedSeeds] = std::move(seeds[i]);
329  ++acceptedSeeds;
330  }
331  // remove seeds that didn't make it
332  // they are all at the end of the collection
333  seeds.erase(seeds.begin() + acceptedSeeds, seeds.end());
334  }
335 
336  return StatusCode::SUCCESS;
337  }
338 
339  StatusCode
341  // Prepare the Acts::SeedFinderConfig object
342  // This is done only once, during initialization using the
343  // parameters set in the JO
344 
345  // Configuration for Acts::SeedFinder
346  m_finderCfg.minPt = m_minPt;
347  m_finderCfg.cotThetaMax = m_cotThetaMax;
348  m_finderCfg.impactMax = m_impactMax;
349  m_finderCfg.zMin = m_zMin;
350  m_finderCfg.zMax = m_zMax;
351  m_finderCfg.zBinEdges = m_zBinEdges;
352  m_finderCfg.rMax = m_rMax;
353  m_finderCfg.binSizeR = m_binSizeR;
354  m_finderCfg.deltaRMin = m_deltaRMin;
355  m_finderCfg.deltaRMax = m_deltaRMax;
356  m_finderCfg.deltaRMinTopSP = m_deltaRMinTopSP;
357  m_finderCfg.deltaRMaxTopSP = m_deltaRMaxTopSP;
358  m_finderCfg.deltaRMinBottomSP = m_deltaRMinBottomSP;
359  m_finderCfg.deltaRMaxBottomSP = m_deltaRMaxBottomSP;
360  m_finderCfg.deltaZMax = m_deltaZMax;
361  m_finderCfg.collisionRegionMin = m_collisionRegionMin;
362  m_finderCfg.collisionRegionMax = m_collisionRegionMax;
363  m_finderCfg.sigmaScattering = m_sigmaScattering;
364  m_finderCfg.maxPtScattering = m_maxPtScattering;
365  m_finderCfg.radLengthPerSeed = m_radLengthPerSeed;
366  m_finderCfg.maxSeedsPerSpM = m_maxSeedsPerSpM;
367  m_finderCfg.interactionPointCut = m_interactionPointCut;
368  m_finderCfg.zBinsCustomLooping = m_zBinsCustomLooping;
369  m_finderCfg.useVariableMiddleSPRange = m_useVariableMiddleSPRange;
370  m_finderCfg.deltaRMiddleMinSPRange = m_deltaRMiddleMinSPRange;
371  m_finderCfg.deltaRMiddleMaxSPRange = m_deltaRMiddleMaxSPRange;
372  m_finderCfg.seedConfirmation = m_seedConfirmation;
373  m_finderCfg.centralSeedConfirmationRange.zMinSeedConf = m_seedConfCentralZMin;
374  m_finderCfg.centralSeedConfirmationRange.zMaxSeedConf = m_seedConfCentralZMax;
375  m_finderCfg.centralSeedConfirmationRange.rMaxSeedConf = m_seedConfCentralRMax;
376  m_finderCfg.centralSeedConfirmationRange.nTopForLargeR = m_seedConfCentralNTopLargeR;
377  m_finderCfg.centralSeedConfirmationRange.nTopForSmallR = m_seedConfCentralNTopSmallR;
378  m_finderCfg.centralSeedConfirmationRange.seedConfMinBottomRadius = m_seedConfCentralMinBottomRadius;
379  m_finderCfg.centralSeedConfirmationRange.seedConfMaxZOrigin = m_seedConfCentralMaxZOrigin;
380  m_finderCfg.centralSeedConfirmationRange.minImpactSeedConf = m_seedConfCentralMinImpact;
381  m_finderCfg.forwardSeedConfirmationRange.zMinSeedConf = m_seedConfForwardZMin;
382  m_finderCfg.forwardSeedConfirmationRange.zMaxSeedConf = m_seedConfForwardZMax;
383  m_finderCfg.forwardSeedConfirmationRange.rMaxSeedConf = m_seedConfForwardRMax;
384  m_finderCfg.forwardSeedConfirmationRange.nTopForLargeR = m_seedConfForwardNTopLargeR;
385  m_finderCfg.forwardSeedConfirmationRange.nTopForSmallR = m_seedConfForwardNTopSmallR;
386  m_finderCfg.forwardSeedConfirmationRange.seedConfMinBottomRadius = m_seedConfForwardMinBottomRadius;
387  m_finderCfg.forwardSeedConfirmationRange.seedConfMaxZOrigin = m_seedConfForwardMaxZOrigin;
388  m_finderCfg.forwardSeedConfirmationRange.minImpactSeedConf = m_seedConfForwardMinImpact;
389  m_finderCfg.useDetailedDoubleMeasurementInfo = m_useDetailedDoubleMeasurementInfo;
390  m_finderCfg.toleranceParam = m_toleranceParam;
391  m_finderCfg.phiMin = m_phiMin;
392  m_finderCfg.phiMax = m_phiMax;
393  m_finderCfg.rMin = m_rMin;
394  m_finderCfg.zAlign = m_zAlign;
395  m_finderCfg.rAlign = m_rAlign;
396  m_finderCfg.sigmaError = m_sigmaError;
397 
399  m_finderCfg.getTopHalfStripLength.connect(
400  [](const void*, const value_type& sp) -> float {
401  return sp.topHalfStripLength();
402  });
403  m_finderCfg.getBottomHalfStripLength.connect(
404  [](const void*, const value_type& sp) -> float {
405  return sp.bottomHalfStripLength();
406  });
407  m_finderCfg.getTopStripDirection.connect(
408  [](const void*, const value_type& sp) -> Acts::Vector3 {
409  return sp.topStripDirection().cast<double>();
410  });
411  m_finderCfg.getBottomStripDirection.connect(
412  [](const void*, const value_type& sp) -> Acts::Vector3 {
413  return sp.bottomStripDirection().cast<double>();
414  });
415  m_finderCfg.getStripCenterDistance.connect(
416  [](const void*, const value_type& sp) -> Acts::Vector3 {
417  return sp.stripCenterDistance().cast<double>();
418  });
419  m_finderCfg.getTopStripCenterPosition.connect(
420  [](const void*, const value_type& sp) -> Acts::Vector3 {
421  return sp.topStripCenter().cast<double>();
422  });
423  }
424 
425  // Fast tracking
426  // manually convert the two types
427  for (const auto& vec : m_rRangeMiddleSP) {
428  std::vector<float> convertedVec;
429 
430  for (const auto& val : vec) {
431  convertedVec.push_back(static_cast<float>(val));
432  }
433 
434  m_finderCfg.rRangeMiddleSP.push_back(convertedVec);
435  }
436 
437  // define cuts used for fast tracking configuration
438  if (m_useExperimentCuts) {
439  m_finderCfg.experimentCuts.connect(
440  [](const void*, float bottomRadius, float cotTheta) -> bool {
441 
442  float fastTrackingRMin = 50.;
443  float fastTrackingCotThetaMax = 1.5;
444 
445  if (bottomRadius < fastTrackingRMin and
446  (cotTheta > fastTrackingCotThetaMax or
447  cotTheta < -fastTrackingCotThetaMax)) {
448  return false;
449  }
450  return true;
451  });
452  }
453 
454  // Configuration for Acts::SeedFilter (used by FinderCfg)
455  Acts::SeedFilterConfig filterCfg;
456  filterCfg.deltaRMin = m_deltaRMin;
457  filterCfg.maxSeedsPerSpM = m_maxSeedsPerSpM;
458  filterCfg.useDeltaRorTopRadius = m_useDeltaRorTopRadius;
459  filterCfg.seedConfirmation = m_seedConfirmationInFilter;
460  filterCfg.maxSeedsPerSpMConf = m_maxSeedsPerSpMConf;
461  filterCfg.maxQualitySeedsPerSpMConf = m_maxQualitySeedsPerSpMConf;
462  filterCfg.centralSeedConfirmationRange = m_finderCfg.centralSeedConfirmationRange;
463  filterCfg.forwardSeedConfirmationRange = m_finderCfg.forwardSeedConfirmationRange;
464  filterCfg.impactWeightFactor = m_impactWeightFactor;
465  filterCfg.zOriginWeightFactor = m_zOriginWeightFactor;
466  filterCfg.compatSeedWeight = m_compatSeedWeight;
467  filterCfg.compatSeedLimit = m_compatSeedLimit;
468  filterCfg.seedWeightIncrement = m_seedWeightIncrement;
469  filterCfg.numSeedIncrement = m_numSeedIncrement;
470  filterCfg.deltaInvHelixDiameter = m_deltaInvHelixDiameter;
471  m_finderCfg.seedFilter = std::make_unique<Acts::SeedFilter< value_type > >(filterCfg.toInternalUnits());
472 
473  m_finderCfg = m_finderCfg.toInternalUnits().calculateDerivedQuantities();
474 
475  // Grid Configuration
476  m_gridCfg.minPt = m_minPt;
477  m_gridCfg.cotThetaMax = m_cotThetaMax;
478  m_gridCfg.impactMax = m_impactMax;
479  m_gridCfg.zMin = m_zMin;
480  m_gridCfg.zMax = m_zMax;
481  m_gridCfg.phiMin = m_gridPhiMin;
482  m_gridCfg.phiMax = m_gridPhiMax;
483  m_gridCfg.zBinEdges = m_zBinEdges;
484  m_gridCfg.deltaRMax = m_deltaRMax;
485  m_gridCfg.rMax = m_gridRMax;
486  m_gridCfg.phiBinDeflectionCoverage = m_phiBinDeflectionCoverage;
487  m_gridCfg.maxPhiBins = m_maxPhiBins;
488  m_gridCfg = m_gridCfg.toInternalUnits();
489 
490  // Seed Finder
491  m_finder = {m_finderCfg};
492 
493  return StatusCode::SUCCESS;
494  }
495 
496 } // namespace ActsTrk
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
ActsTrk::SeedingTool::m_deltaRMaxTopSP
Gaudi::Property< float > m_deltaRMaxTopSP
Definition: SeedingTool.h:125
ActsTrk::SeedingTool::m_gridPhiMax
Gaudi::Property< float > m_gridPhiMax
Definition: SeedingTool.h:110
ActsTrk::SeedingTool::m_compatSeedLimit
Gaudi::Property< std::size_t > m_compatSeedLimit
Definition: SeedingTool.h:226
xAOD::SpacePoint_v1::bottomHalfStripLength
float bottomHalfStripLength() const
xAOD::SpacePoint_v1::stripCenterDistance
ConstVectorMap stripCenterDistance() const
Definition: SpacePoint_v1.cxx:73
ActsTrk::SeedingTool::m_bottomBinFinder
std::unique_ptr< Acts::GridBinFinder< 2ul > > m_bottomBinFinder
Definition: SeedingTool.h:258
ActsTrk::SeedingTool::m_seedConfCentralMaxZOrigin
Gaudi::Property< float > m_seedConfCentralMaxZOrigin
Definition: SeedingTool.h:178
top
TopConfig A simple configuration that is NOT a singleton.
Definition: AnalysisTrackingHelper.cxx:58
ActsTrk::SeedingTool::m_finderCfg
Acts::SeedFinderConfig< value_type > m_finderCfg
Definition: SeedingTool.h:83
ActsTrk::SeedingTool::m_seedConfCentralMinBottomRadius
Gaudi::Property< float > m_seedConfCentralMinBottomRadius
Definition: SeedingTool.h:175
ActsTrk::SeedingTool::m_compatSeedWeight
Gaudi::Property< float > m_compatSeedWeight
Definition: SeedingTool.h:224
ActsTrk::SeedingTool::m_sigmaScattering
Gaudi::Property< float > m_sigmaScattering
Definition: SeedingTool.h:137
xAOD::SpacePoint_v1::topStripDirection
ConstVectorMap topStripDirection() const
Definition: SpacePoint_v1.cxx:63
ActsTrk::SeedingTool::m_maxSeedsPerSpM
Gaudi::Property< int > m_maxSeedsPerSpM
Definition: SeedingTool.h:143
ActsTrk::SeedingTool::m_seedConfForwardMaxZOrigin
Gaudi::Property< float > m_seedConfForwardMaxZOrigin
Definition: SeedingTool.h:202
ActsTrk::SeedingTool::m_maxQualitySeedsPerSpMConf
Gaudi::Property< std::size_t > m_maxQualitySeedsPerSpMConf
Definition: SeedingTool.h:236
index
Definition: index.py:1
ActsTrk::SeedingTool::m_seedConfirmation
Gaudi::Property< bool > m_seedConfirmation
Definition: SeedingTool.h:158
ActsTrk::SeedingTool::m_phiBinDeflectionCoverage
Gaudi::Property< int > m_phiBinDeflectionCoverage
Definition: SeedingTool.h:112
ActsTrk::SeedingTool::m_phiMin
Gaudi::Property< float > m_phiMin
Definition: SeedingTool.h:213
ActsTrk::SeedingTool::m_deltaRMinTopSP
Gaudi::Property< float > m_deltaRMinTopSP
Definition: SeedingTool.h:123
ActsTrk::SeedingTool::m_deltaRMaxBottomSP
Gaudi::Property< float > m_deltaRMaxBottomSP
Definition: SeedingTool.h:129
ActsTrk::SeedingTool::m_useVariableMiddleSPRange
Gaudi::Property< bool > m_useVariableMiddleSPRange
Definition: SeedingTool.h:149
Amg::y
@ y
Definition: GeoPrimitives.h:35
xAOD::SpacePoint_v1::topHalfStripLength
float topHalfStripLength() const
Return details.
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:65
ActsTrk::SeedingTool::m_rMin
Gaudi::Property< float > m_rMin
Definition: SeedingTool.h:215
ActsTrk::SeedingTool::m_rAlign
Gaudi::Property< float > m_rAlign
Definition: SeedingTool.h:217
ActsTrk::SeedingTool::m_seedConfCentralNTopLargeR
Gaudi::Property< size_t > m_seedConfCentralNTopLargeR
Definition: SeedingTool.h:169
athena.value
value
Definition: athena.py:122
xAOD::SpacePoint_v1
Definition: SpacePoint_v1.h:29
ActsTrk::SeedingTool::SeedingTool
SeedingTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: SeedingTool.cxx:17
ActsTrk::SeedingTool::m_deltaRMax
Gaudi::Property< float > m_deltaRMax
Definition: SeedingTool.h:99
ActsTrk::SeedingTool::m_deltaRMinBottomSP
Gaudi::Property< float > m_deltaRMinBottomSP
Definition: SeedingTool.h:127
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
xAOD::SpacePoint_v1::z
float z() const
ActsTrk::SeedingTool::m_finder
Acts::SeedFinder< value_type, Acts::CylindricalSpacePointGrid< value_type > > m_finder
Definition: SeedingTool.h:82
ActsTrk::SeedingTool::m_useExperimentCuts
Gaudi::Property< bool > m_useExperimentCuts
Definition: SeedingTool.h:255
ActsTrk::SeedingTool::m_rMax
Gaudi::Property< float > m_rMax
Definition: SeedingTool.h:117
xAOD::SpacePoint_v1::bottomStripDirection
ConstVectorMap bottomStripDirection() const
Definition: SpacePoint_v1.cxx:68
ActsTrk::SeedingTool::m_zAlign
Gaudi::Property< float > m_zAlign
Definition: SeedingTool.h:216
ActsTrk::SeedingTool::m_seedConfCentralZMax
Gaudi::Property< float > m_seedConfCentralZMax
Definition: SeedingTool.h:163
ActsTrk::SeedingTool::m_zBinNeighborsTop
Gaudi::Property< std::vector< std::pair< int, int > > > m_zBinNeighborsTop
Definition: SeedingTool.h:245
ActsTrk::SeedingTool::m_impactMax
Gaudi::Property< float > m_impactMax
Definition: SeedingTool.h:101
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
ActsTrk::SeedingTool::m_impactWeightFactor
Gaudi::Property< float > m_impactWeightFactor
Definition: SeedingTool.h:221
ActsTrk::SeedingTool::m_seedQualitySelection
Gaudi::Property< bool > m_seedQualitySelection
Definition: SeedingTool.h:87
ActsTrk::SeedingTool::m_zBinEdges
Gaudi::Property< std::vector< float > > m_zBinEdges
Definition: SeedingTool.h:103
ActsTrk::SeedingTool::m_zMax
Gaudi::Property< float > m_zMax
Definition: SeedingTool.h:97
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ActsTrk::SeedingTool::m_seedConfForwardZMax
Gaudi::Property< float > m_seedConfForwardZMax
Definition: SeedingTool.h:187
lumiFormat.i
int i
Definition: lumiFormat.py:92
ActsTrk::SeedingTool::m_minPt
Gaudi::Property< float > m_minPt
Definition: SeedingTool.h:91
ActsTrk::SeedingTool::m_deltaZMax
Gaudi::Property< float > m_deltaZMax
Definition: SeedingTool.h:131
ActsTrk::SeedingTool::m_maxSeedsPerSpMConf
Gaudi::Property< std::size_t > m_maxSeedsPerSpMConf
Definition: SeedingTool.h:234
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
xAOD::SpacePoint_v1::varianceZ
float varianceZ() const
ActsTrk::SeedingTool::m_binSizeR
Gaudi::Property< float > m_binSizeR
Definition: SeedingTool.h:119
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:190
xAOD::SpacePoint_v1::varianceR
float varianceR() const
Returns the variances.
ActsTrk::SeedingTool::m_seedConfCentralMinImpact
Gaudi::Property< float > m_seedConfCentralMinImpact
Definition: SeedingTool.h:181
ActsTrk::SeedingTool::m_seedConfForwardMinImpact
Gaudi::Property< float > m_seedConfForwardMinImpact
Definition: SeedingTool.h:205
SG::AuxElement::index
size_t index() const
Return the index of this element within its container.
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
ActsTrk::SeedingTool::m_gridRMax
Gaudi::Property< float > m_gridRMax
Definition: SeedingTool.h:106
ActsTrk::SeedingTool::m_topBinFinder
std::unique_ptr< Acts::GridBinFinder< 2ul > > m_topBinFinder
Definition: SeedingTool.h:259
ActsTrk::SeedingTool::m_radLengthPerSeed
Gaudi::Property< float > m_radLengthPerSeed
Definition: SeedingTool.h:141
ActsTrk::SeedingTool::m_deltaInvHelixDiameter
Gaudi::Property< float > m_deltaInvHelixDiameter
Definition: SeedingTool.h:240
ActsTrk::SeedingTool::m_seedConfCentralRMax
Gaudi::Property< float > m_seedConfCentralRMax
Definition: SeedingTool.h:166
ActsTrk::SeedingTool::m_collisionRegionMax
Gaudi::Property< float > m_collisionRegionMax
Definition: SeedingTool.h:135
ActsTrk::SeedingTool::createSeeds
virtual StatusCode createSeeds(const EventContext &ctx, const std::vector< const xAOD::SpacePoint * > &spContainer, const Acts::Vector3 &beamSpotPos, const Acts::Vector3 &bField, ActsTrk::SeedContainer &seedContainer) const override
Definition: SeedingTool.cxx:171
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ActsTrk::SeedingTool::m_deltaRMiddleMaxSPRange
Gaudi::Property< float > m_deltaRMiddleMaxSPRange
Definition: SeedingTool.h:156
ActsTrk::SeedingTool::m_deltaRMiddleMinSPRange
Gaudi::Property< float > m_deltaRMiddleMinSPRange
Definition: SeedingTool.h:154
ActsTrk::SeedingTool::m_seedConfCentralZMin
Gaudi::Property< float > m_seedConfCentralZMin
Definition: SeedingTool.h:160
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
ActsTrk::SeedingTool::m_zBinsCustomLooping
Gaudi::Property< std::vector< size_t > > m_zBinsCustomLooping
Definition: SeedingTool.h:147
ActsTrk::SeedingTool::prepareConfiguration
StatusCode prepareConfiguration()
Definition: SeedingTool.cxx:340
ActsTrk::SeedingTool::m_phiMax
Gaudi::Property< float > m_phiMax
Definition: SeedingTool.h:214
xAOD::SpacePoint_v1::y
float y() const
ActsTrk::SeedingTool::m_collisionRegionMin
Gaudi::Property< float > m_collisionRegionMin
Definition: SeedingTool.h:133
ActsTrk::SeedingTool::m_seedConfCentralNTopSmallR
Gaudi::Property< size_t > m_seedConfCentralNTopSmallR
Definition: SeedingTool.h:172
ActsTrk::SeedingTool::m_cotThetaMax
Gaudi::Property< float > m_cotThetaMax
Definition: SeedingTool.h:93
ActsTrk::SeedingTool::m_maxPhiBins
Gaudi::Property< int > m_maxPhiBins
Definition: SeedingTool.h:114
ActsTrk::SeedingTool::m_navigation
std::array< std::vector< std::size_t >, 2ul > m_navigation
Definition: SeedingTool.h:261
Trk::binR
@ binR
Definition: BinningType.h:50
ActsTrk::SeedingTool::initialize
virtual StatusCode initialize() override
Definition: SeedingTool.cxx:23
ActsTrk::SeedingTool::m_toleranceParam
Gaudi::Property< float > m_toleranceParam
Definition: SeedingTool.h:211
ActsTrk::SeedingTool::m_deltaRMin
Gaudi::Property< float > m_deltaRMin
Definition: SeedingTool.h:121
ActsTrk::SeedingTool::m_seedWeightIncrement
Gaudi::Property< float > m_seedWeightIncrement
Definition: SeedingTool.h:228
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
ActsTrk::SeedingTool::m_numPhiNeighbors
Gaudi::Property< int > m_numPhiNeighbors
Definition: SeedingTool.h:252
ActsTrk::SeedingTool::m_seedConfForwardNTopLargeR
Gaudi::Property< size_t > m_seedConfForwardNTopLargeR
Definition: SeedingTool.h:193
xAOD::SpacePoint_v1::x
float x() const
ActsTrk::SeedingTool::m_seedConfForwardZMin
Gaudi::Property< float > m_seedConfForwardZMin
Definition: SeedingTool.h:184
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
TRT::Track::cotTheta
@ cotTheta
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:65
ActsTrk::SeedingTool::m_seedConfirmationInFilter
Gaudi::Property< bool > m_seedConfirmationInFilter
Definition: SeedingTool.h:232
ActsTrk::SeedingTool::m_interactionPointCut
Gaudi::Property< bool > m_interactionPointCut
Definition: SeedingTool.h:145
ActsTrk::SeedingTool::m_rRangeMiddleSP
Gaudi::Property< std::vector< std::vector< double > > > m_rRangeMiddleSP
Definition: SeedingTool.h:151
ActsTrk::SeedingTool::m_useDeltaRorTopRadius
Gaudi::Property< bool > m_useDeltaRorTopRadius
Definition: SeedingTool.h:238
SeedingTool.h
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition: MuonDetectorBuilderTool.cxx:34
ActsTrk::SeedingTool::m_seedConfForwardNTopSmallR
Gaudi::Property< size_t > m_seedConfForwardNTopSmallR
Definition: SeedingTool.h:196
ActsTrk::SeedingTool::m_gridCfg
Acts::CylindricalSpacePointGridConfig m_gridCfg
Definition: SeedingTool.h:84
ActsTrk::SeedingTool::m_zOriginWeightFactor
Gaudi::Property< float > m_zOriginWeightFactor
Definition: SeedingTool.h:223
ActsTrk::SeedingTool::m_useDetailedDoubleMeasurementInfo
Gaudi::Property< bool > m_useDetailedDoubleMeasurementInfo
Definition: SeedingTool.h:208
ActsTrk::SeedingTool::m_zBinNeighborsBottom
Gaudi::Property< std::vector< std::pair< int, int > > > m_zBinNeighborsBottom
Definition: SeedingTool.h:249
xAOD::SpacePoint_v1::topStripCenter
ConstVectorMap topStripCenter() const
Definition: SpacePoint_v1.cxx:78
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:108
ActsTrk::SeedingTool::m_sigmaError
Gaudi::Property< float > m_sigmaError
Definition: SeedingTool.h:218
readCCLHist.float
float
Definition: readCCLHist.py:83
ActsTrk::SeedingTool::m_maxPtScattering
Gaudi::Property< float > m_maxPtScattering
Definition: SeedingTool.h:139
ActsTrk::SeedingTool::m_numSeedIncrement
Gaudi::Property< float > m_numSeedIncrement
Definition: SeedingTool.h:230
ActsTrk::SeedingTool::m_seedConfForwardMinBottomRadius
Gaudi::Property< float > m_seedConfForwardMinBottomRadius
Definition: SeedingTool.h:199
ActsTrk::SeedingTool::m_zMin
Gaudi::Property< float > m_zMin
Definition: SeedingTool.h:95