Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
DuplicateSeedDetector.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
8 
9 namespace ActsTrk::detail {
10 
12  bool enabled)
13  : m_disabled(!enabled),
14  m_nUsedMeasurements(enabled ? numSeeds : 0ul, 0ul),
15  m_nSeedMeasurements(enabled ? numSeeds : 0ul, 0ul),
16  m_isDuplicateSeed(enabled ? numSeeds : 0ul, false) {
17  if (m_disabled)
18  return;
19  m_seedOffset.reserve(2ul);
20  }
21 
22  void DuplicateSeedDetector::addSeeds(std::size_t typeIndex,
23  const ActsTrk::SeedContainer &seeds,
24  const MeasurementIndex& measurementIndex) {
25  if (m_disabled)
26  return;
27  if (!(typeIndex < m_seedOffset.size()))
28  m_seedOffset.resize(typeIndex + 1);
29  m_seedOffset[typeIndex] = m_numSeeds;
30  m_seedIndex.resize(measurementIndex.size()); // will resize for each seed container, but always with the same space
31 
32  for (const ActsTrk::Seed *seed : seeds) {
33  if (!seed)
34  continue;
35 
36  for (const xAOD::SpacePoint *sp : seed->sp()) {
37  const std::vector<const xAOD::UncalibratedMeasurement *> &els = sp->measurements();
38  for (const xAOD::UncalibratedMeasurement *meas : els) {
39  std::size_t hitIndex = measurementIndex.index(*meas);
40  if (!(hitIndex < m_seedIndex.size())) {
41  // std::cout << "ERROR hit index " << hitIndex << " past end of " << m_seedIndex.size() << " hit indices\n";
42  continue;
43  }
44  m_seedIndex[hitIndex].push_back(m_numSeeds);
46  }
47  }
48  ++m_numSeeds;
49  }
50  }
51 
52 } // namespace ActsTrk::detail
ActsTrk::detail::DuplicateSeedDetector::m_numSeeds
index_t m_numSeeds
Definition: DuplicateSeedDetector.h:49
ActsTrk::detail::MeasurementIndex::size
std::size_t size() const
ActsTrk::detail::DuplicateSeedDetector::addSeeds
void addSeeds(std::size_t typeIndex, const ActsTrk::SeedContainer &seeds, const MeasurementIndex &measurementIndex)
Definition: DuplicateSeedDetector.cxx:22
ActsTrk::detail::DuplicateSeedDetector::m_seedIndex
std::vector< boost::container::small_vector< index_t, 4 > > m_seedIndex
Definition: DuplicateSeedDetector.h:44
xAOD::SpacePoint_v1
Definition: SpacePoint_v1.h:29
ActsTrk::detail::MeasurementIndex
Definition: MeasurementIndex.h:16
MeasurementIndex.h
ActsTrk::detail::DuplicateSeedDetector::DuplicateSeedDetector
DuplicateSeedDetector(std::size_t numSeeds, bool enabled)
Definition: DuplicateSeedDetector.cxx:11
xAOD::UncalibratedMeasurement_v1
Definition: UncalibratedMeasurement_v1.h:13
ActsTrk::detail::DuplicateSeedDetector::m_disabled
bool m_disabled
Definition: DuplicateSeedDetector.h:43
ActsTrk::Seed
Acts::Seed< xAOD::SpacePoint, 3ul > Seed
Definition: Seed.h:12
detail::ul
unsigned long ul
Definition: PrimitiveHelpers.h:46
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
ActsTrk::detail::DuplicateSeedDetector::m_seedOffset
std::vector< index_t > m_seedOffset
Definition: DuplicateSeedDetector.h:48
ActsTrk::detail::MeasurementIndex::index
std::size_t index(const xAOD::UncalibratedMeasurement &hit) const
ActsTrk::detail::DuplicateSeedDetector::m_nSeedMeasurements
std::vector< std::size_t > m_nSeedMeasurements
Definition: DuplicateSeedDetector.h:46
DuplicateSeedDetector.h
ActsTrk::detail
Definition: Decoration.h:15