ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
ActsTrk::detail::TrackFindingMeasurements Class Reference

#include <TrackFindingMeasurements.h>

Collaboration diagram for ActsTrk::detail::TrackFindingMeasurements:

Public Member Functions

 TrackFindingMeasurements (std::size_t nMeasurementContainerMax)
 
 TrackFindingMeasurements (const TrackFindingMeasurements &)=default
 
TrackFindingMeasurementsoperator= (const TrackFindingMeasurements &)=default
 
 TrackFindingMeasurements (TrackFindingMeasurements &&) noexcept=default
 
TrackFindingMeasurementsoperator= (TrackFindingMeasurements &&) noexcept=default
 
 ~TrackFindingMeasurements ()=default
 
void addMeasurements (std::size_t typeIndex, const xAOD::UncalibratedMeasurementContainer &clusterContainer, const DetectorElementToActsGeometryIdMap &detectorElementToGeoid)
 
MeasurementRange markSurfaceInsensitive (const Acts::GeometryIdentifier &identifier)
 
const ActsTrk::detail::MeasurementRangeListmeasurementRanges () const
 
std::size_t nMeasurements () const
 
const std::vector< std::size_t > & measurementOffsets () const
 

Private Attributes

std::vector< std::size_t > m_measurementOffsets
 
ActsTrk::detail::MeasurementRangeList m_measurementRanges {}
 
std::size_t m_measurementsTotal {0ul}
 

Detailed Description

Definition at line 17 of file TrackFindingMeasurements.h.

Constructor & Destructor Documentation

◆ TrackFindingMeasurements() [1/3]

ActsTrk::detail::TrackFindingMeasurements::TrackFindingMeasurements ( std::size_t  nMeasurementContainerMax)

Definition at line 12 of file TrackFindingMeasurements.cxx.

13  : m_measurementOffsets(nMeasurementContainerMax, 0ul) {}

◆ TrackFindingMeasurements() [2/3]

ActsTrk::detail::TrackFindingMeasurements::TrackFindingMeasurements ( const TrackFindingMeasurements )
default

◆ TrackFindingMeasurements() [3/3]

ActsTrk::detail::TrackFindingMeasurements::TrackFindingMeasurements ( TrackFindingMeasurements &&  )
defaultnoexcept

◆ ~TrackFindingMeasurements()

ActsTrk::detail::TrackFindingMeasurements::~TrackFindingMeasurements ( )
default

Member Function Documentation

◆ addMeasurements()

void ActsTrk::detail::TrackFindingMeasurements::addMeasurements ( std::size_t  typeIndex,
const xAOD::UncalibratedMeasurementContainer clusterContainer,
const DetectorElementToActsGeometryIdMap detectorElementToGeoid 
)

Definition at line 15 of file TrackFindingMeasurements.cxx.

18  {
19  if (typeIndex < m_measurementOffsets.size())
21 
22  if (m_measurementRanges.empty()) {
23  // try to reserve needed space,
24  // this however will reserve more than necessary not just the space needed for the surfaces of
25  // all the measurements that are going to be added (e.g. pixel+strips).
26  m_measurementRanges.reserve(detectorElementToGeoid.size());
27  }
28  m_measurementRanges.setContainer(typeIndex, &clusterContainer);
29 
32  MeasurementRange *currentRange = nullptr;
33 
34  std::size_t n_elements = clusterContainer.size();;
35  std::size_t sl_idx = 0;
36  for( ; sl_idx < n_elements; ++sl_idx) {
37  const auto *measurement = clusterContainer[sl_idx];
38  if (measurement->identifierHash() != lastIdHash or
39  measurement->type() != lastMeasurementType)
40  {
41  if (currentRange) {
42  currentRange->updateEnd(typeIndex, sl_idx);
43  }
44  lastIdHash = measurement->identifierHash();
45  lastMeasurementType = measurement->type();
46 
47  Acts::GeometryIdentifier measurementSurfaceId = ActsTrk::getSurfaceGeometryIdOfMeasurement(detectorElementToGeoid,
48  *measurement);
49  if (measurementSurfaceId.value() == 0u) {
50  // @TODO improve error message.
51  throw std::domain_error("No Acts surface associated to measurement");
52  }
53 
54  // start with en empty range which is updated later.
55  auto ret = m_measurementRanges.insert( std::make_pair( measurementSurfaceId.value(),
56  MeasurementRange( typeIndex, sl_idx, sl_idx) ));
57  if (!ret.second) {
58  std::stringstream msg;
59  msg << "Measurement not clustered by identifierHash / geometryId. New measurement "
60  << sl_idx << " with geo Id " << measurementSurfaceId
61  << " type = " << static_cast<unsigned int>(measurement->type())
62  << " idHash=" << measurement->identifierHash()
63  << " but already recorded for this geo ID the range : [" << ret.first->second.containerIndex() << "]"
64  << ret.first->second.elementBeginIndex()
65  << " .. " << ret.first->second.elementEndIndex()
66  << (ret.first->second.isConsistentRange() ? "" : " !Container index inconsistent or not in increasing order!");
67  throw std::runtime_error(msg.str());
68  }
69  currentRange = &ret.first->second;
70  }
71  }
72 
73  if (currentRange) {
74  currentRange->updateEnd(typeIndex, sl_idx);
75  }
76 
77  m_measurementsTotal += clusterContainer.size();
78  }

◆ markSurfaceInsensitive()

MeasurementRange ActsTrk::detail::TrackFindingMeasurements::markSurfaceInsensitive ( const Acts::GeometryIdentifier &  identifier)

Definition at line 80 of file TrackFindingMeasurements.cxx.

80  {
81  auto ret = m_measurementRanges.insert( std::make_pair( identifier.value(),
83  if (!ret.second) {
84  return ret.first->second;
85  }
86  else {
87  return MeasurementRange();
88  }
89  }

◆ measurementOffsets()

const std::vector<std::size_t>& ActsTrk::detail::TrackFindingMeasurements::measurementOffsets ( ) const
inline

◆ measurementRanges()

const ActsTrk::detail::MeasurementRangeList& ActsTrk::detail::TrackFindingMeasurements::measurementRanges ( ) const
inline

◆ nMeasurements()

std::size_t ActsTrk::detail::TrackFindingMeasurements::nMeasurements ( ) const
inline

◆ operator=() [1/2]

TrackFindingMeasurements& ActsTrk::detail::TrackFindingMeasurements::operator= ( const TrackFindingMeasurements )
default

◆ operator=() [2/2]

TrackFindingMeasurements& ActsTrk::detail::TrackFindingMeasurements::operator= ( TrackFindingMeasurements &&  )
defaultnoexcept

Member Data Documentation

◆ m_measurementOffsets

std::vector<std::size_t> ActsTrk::detail::TrackFindingMeasurements::m_measurementOffsets
private

Definition at line 36 of file TrackFindingMeasurements.h.

◆ m_measurementRanges

ActsTrk::detail::MeasurementRangeList ActsTrk::detail::TrackFindingMeasurements::m_measurementRanges {}
private

Definition at line 38 of file TrackFindingMeasurements.h.

◆ m_measurementsTotal

std::size_t ActsTrk::detail::TrackFindingMeasurements::m_measurementsTotal {0ul}
private

Definition at line 39 of file TrackFindingMeasurements.h.


The documentation for this class was generated from the following files:
ActsTrk::getSurfaceGeometryIdOfMeasurement
Acts::GeometryIdentifier getSurfaceGeometryIdOfMeasurement(const DetectorElementToActsGeometryIdMap &detector_element_to_geoid, const xAOD::UncalibratedMeasurement &measurement)
Definition: SurfaceOfMeasurementUtil.h:24
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
xAOD::identifier
identifier
Definition: UncalibratedMeasurement_v1.cxx:15
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
xAOD::Other
@ Other
detail::ul
unsigned long ul
Definition: PrimitiveHelpers.h:46
ActsTrk::detail::TrackFindingMeasurements::m_measurementsTotal
std::size_t m_measurementsTotal
Definition: TrackFindingMeasurements.h:39
ActsTrk::detail::TrackFindingMeasurements::m_measurementRanges
ActsTrk::detail::MeasurementRangeList m_measurementRanges
Definition: TrackFindingMeasurements.h:38
xAOD::DetectorIDHashType
unsigned int DetectorIDHashType
@ detector ID element hash
Definition: MeasurementDefs.h:43
ActsTrk::detail::MeasurementRange::noMeasurementExpected
static MeasurementRange noMeasurementExpected()
Definition: AtlasUncalibSourceLinkAccessor.h:52
ActsTrk::detail::GenMeasurementRangeList::setContainer
void setContainer(unsigned int container_index, const xAOD::UncalibratedMeasurementContainer *container)
Definition: AtlasUncalibSourceLinkAccessor.h:96
ActsTrk::detail::TrackFindingMeasurements::m_measurementOffsets
std::vector< std::size_t > m_measurementOffsets
Definition: TrackFindingMeasurements.h:36
xAOD::UncalibMeasType
UncalibMeasType
Define the type of the uncalibrated measurement.
Definition: MeasurementDefs.h:25
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7