ATLAS Offline Software
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t > Struct Template Reference

ATALS specific Implementation of the member functions needed by the measurement selector. More...

Collaboration diagram for AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >:

Classes

struct  CalibratedMeasurementTraits
 
struct  Empty
 

Public Types

using BASE = MeasurementSelectorBaseImpl< NMeasMax, AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >, measurement_container_variant_t >
 
using traits = typename BASE::traits
 
template<std::size_t DIM>
using Measurement = typename traits::template CalibratedMeasurement< DIM >
 
using abstract_measurement_range_t = BASE::abstract_measurement_range_t
 
template<std::size_t DIM, typename measurement_t >
using Calibrator = Acts::Delegate< std::pair< typename traits::template CalibratedMeasurement< DIM >, typename traits::template CalibratedMeasurementCovariance< DIM > >(const Acts::GeometryContext &, const Acts::CalibrationContext &, const measurement_t &, const typename traits::BoundTrackParameters &)>
 

Public Member Functions

void setMeasurementRangesForced (const ActsTrk::detail::MeasurementRangeListFlat *measurementRangesForced)
 
 AtlasMeasurementSelector (typename BASE::Config &&config, const ActsTrk::detail::MeasurementRangeList &measurementRanges)
 
template<std::size_t DIM, typename T_ValueType >
void setCalibrator (const Calibrator< DIM, T_ValueType > &calibrator)
 
template<std::size_t DIM, typename T_ValueType >
void setPreCalibrator (typename std::enable_if< s_CanPreCalibrate< DIM >, const Calibrator< DIM, T_ValueType > & >::type calibrator)
 
template<std::size_t DIM>
ParameterMapping::type< DIM > parameterMap (const Acts::GeometryContext &geometryContext, const Acts::CalibrationContext &calibrationContext, const Acts::Surface &surface) const
 
template<std::size_t DIM, typename measurement_t >
const Calibrator< DIM, measurement_t > & postCalibrator () const
 
template<std::size_t DIM, typename measurement_t >
auto preCalibrator () const
 
std::tuple< const measurement_container_variant_t *, abstract_measurement_range_t, bool > containerAndRange (const Acts::Surface &surface) const
 
bool expectMeasurements ([[maybe_unused]] const Acts::Surface &surface, [[maybe_unused]] const measurement_container_variant_t *container_variant_ptr, const abstract_measurement_range_t &abstract_range) const
 
template<typename measurement_container_t >
auto rangeForContainer (const measurement_container_t &concrete_container, const abstract_measurement_range_t &abstract_range) const
 

Static Public Member Functions

template<typename T_Value >
static Acts::SourceLink makeSourceLink (T_Value &&value)
 
template<typename MeasurementRangeList_t >
static std::tuple< const measurement_container_variant_t *, abstract_measurement_range_t, bool > containerAndRangeSingle (const MeasurementRangeList_t &measurementRanges, const Acts::Surface &surface, bool forced)
 

Public Attributes

const ActsTrk::detail::MeasurementRangeListm_measurementRanges {}
 
const ActsTrk::detail::MeasurementRangeListFlatm_measurementRangesForced {}
 
ActsTrk::MeasurementParameterMap m_projector {}
 
CalibratorRegistry< CalibratedMeasurementTraits, typename traits::BoundTrackParameters, measurement_container_variant_t > m_calibrators {}
 
std::conditional< s_fullPreCalibration, CalibratorRegistry< CalibratedMeasurementTraits, typename traits::BoundTrackParameters, measurement_container_variant_t >, Empty >::type m_preCalibrators {}
 

Static Public Attributes

template<std::size_t DIM>
static constexpr bool s_CanPreCalibrate
 

Detailed Description

template<std::size_t NMeasMax, typename traj_t, typename measurement_container_variant_t>
struct AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >

ATALS specific Implementation of the member functions needed by the measurement selector.

Definition at line 46 of file AtlasMeasurementSelector.cxx.

Member Typedef Documentation

◆ abstract_measurement_range_t

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
using AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::abstract_measurement_range_t = BASE::abstract_measurement_range_t

Definition at line 170 of file AtlasMeasurementSelector.cxx.

◆ BASE

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
using AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::BASE = MeasurementSelectorBaseImpl<NMeasMax, AtlasMeasurementSelector<NMeasMax, traj_t, measurement_container_variant_t> , measurement_container_variant_t >

Definition at line 161 of file AtlasMeasurementSelector.cxx.

◆ Calibrator

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
template<std::size_t DIM, typename measurement_t >
using AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::Calibrator = Acts::Delegate< std::pair < typename traits::template CalibratedMeasurement<DIM>, typename traits::template CalibratedMeasurementCovariance<DIM> > (const Acts::GeometryContext&, const Acts::CalibrationContext&, const measurement_t &, const typename traits::BoundTrackParameters &)>

Definition at line 174 of file AtlasMeasurementSelector.cxx.

◆ Measurement

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
template<std::size_t DIM>
using AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::Measurement = typename traits::template CalibratedMeasurement<DIM>

Definition at line 168 of file AtlasMeasurementSelector.cxx.

◆ traits

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
using AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::traits = typename BASE::traits

Definition at line 165 of file AtlasMeasurementSelector.cxx.

Constructor & Destructor Documentation

◆ AtlasMeasurementSelector()

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::AtlasMeasurementSelector ( typename BASE::Config &&  config,
const ActsTrk::detail::MeasurementRangeList measurementRanges 
)
inline

Definition at line 214 of file AtlasMeasurementSelector.cxx.

216  : BASE{std::move(config)},
217  m_measurementRanges(&measurementRanges)
218  {}

Member Function Documentation

◆ containerAndRange()

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
std::tuple<const measurement_container_variant_t *, abstract_measurement_range_t, bool > AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::containerAndRange ( const Acts::Surface &  surface) const
inline

Definition at line 287 of file AtlasMeasurementSelector.cxx.

287  {
289  auto ret = containerAndRangeSingle(*m_measurementRangesForced, surface, true);
290  if (std::get<0>(ret)) return ret;
291  }
292  return containerAndRangeSingle(*m_measurementRanges, surface, false);
293  }

◆ containerAndRangeSingle()

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
template<typename MeasurementRangeList_t >
static std::tuple<const measurement_container_variant_t *, abstract_measurement_range_t, bool > AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::containerAndRangeSingle ( const MeasurementRangeList_t &  measurementRanges,
const Acts::Surface &  surface,
bool  forced 
)
inlinestatic

Definition at line 298 of file AtlasMeasurementSelector.cxx.

298  {
299  typename MeasurementRangeList_t::const_iterator range_iter = measurementRanges.find(surface.geometryId().value());
300  if (range_iter == measurementRanges.end())
301  {
302  return {nullptr, abstract_measurement_range_t{}, forced};
303  }
304  else {
305  abstract_measurement_range_t range{range_iter->second.elementBeginIndex(),
306  range_iter->second.elementEndIndex()};
307  assert( !range_iter->second.isMeasurementExpected() || range.begin() <= range.end());
308  // if surface marked as defect
309  return { forced || range_iter->second.isMeasurementExpected() ? &(measurementRanges.container(range_iter->second.containerIndex())) : nullptr,
310  std::move(range), forced};
311  }
312  }

◆ expectMeasurements()

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
bool AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::expectMeasurements ( [[maybe_unused] ] const Acts::Surface &  surface,
[[maybe_unused] ] const measurement_container_variant_t *  container_variant_ptr,
const abstract_measurement_range_t abstract_range 
) const
inline

Definition at line 314 of file AtlasMeasurementSelector.cxx.

316  {
317  return (abstract_range.begin()<=abstract_range.end());
318  }

◆ makeSourceLink()

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
template<typename T_Value >
static Acts::SourceLink AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::makeSourceLink ( T_Value &&  value)
inlinestatic

Definition at line 239 of file AtlasMeasurementSelector.cxx.

239  {
240  // value is pointer
241  static_assert( !std::is_same<std::remove_pointer_t<T_Value>, T_Value>::value );
242  // ... and pointer to xAOD::UncalibgratedMeasurement
243  static_assert(std::is_base_of_v< xAOD::UncalibratedMeasurement, std::remove_cv_t<std::remove_pointer_t<T_Value> > > );
244  return Acts::SourceLink{ ActsTrk::makeATLASUncalibSourceLink(value) };
245  }

◆ parameterMap()

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
template<std::size_t DIM>
ParameterMapping::type<DIM> AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::parameterMap ( const Acts::GeometryContext &  geometryContext,
const Acts::CalibrationContext &  calibrationContext,
const Acts::Surface &  surface 
) const
inline

Definition at line 250 of file AtlasMeasurementSelector.cxx.

252  {
253  return m_projector.parameterMap<DIM>(geometryContext,calibrationContext,surface);
254  }

◆ postCalibrator()

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
template<std::size_t DIM, typename measurement_t >
const Calibrator<DIM, measurement_t>& AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::postCalibrator ( ) const
inline

Definition at line 259 of file AtlasMeasurementSelector.cxx.

259  {
260  return m_calibrators.template calibrator<DIM,measurement_t>();
261  }

◆ preCalibrator()

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
template<std::size_t DIM, typename measurement_t >
auto AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::preCalibrator ( ) const
inline

Definition at line 266 of file AtlasMeasurementSelector.cxx.

266  {
267  if constexpr(s_fullPreCalibration) {
268  // full calibration during selection
269  return m_preCalibrators.template calibrator<DIM,measurement_t>();
270  }
271  else {
272  // no calibration is performed before the measurement selection, so just Eigen maps to the stored location
273  // and covariance are returned.
274  // @TODO unfortunately the Eigen Maps cannot be used directly because they are incompatible with the
275  // temporary measurement storage used in the measurement selector, so need to convert to the
276  // above ConstVectorMapWithInvalidDef etc. Does this introduce some overhead ?
277  return []( [[maybe_unused]] const Acts::GeometryContext&,
278  [[maybe_unused]] const Acts::CalibrationContext&,
279  const measurement_t &measurement,
280  [[maybe_unused]] const typename traits::BoundTrackParameters &) {
281  return std::make_pair( measurement.template localPosition<DIM>(), measurement.template localCovariance<DIM>() );
282  };
283  }
284  }

◆ rangeForContainer()

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
template<typename measurement_container_t >
auto AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::rangeForContainer ( const measurement_container_t &  concrete_container,
const abstract_measurement_range_t abstract_range 
) const
inline

Definition at line 322 of file AtlasMeasurementSelector.cxx.

323  {
324  unsigned int begin_idx = abstract_range.front();
325  auto begin_iter = concrete_container.container().begin() + begin_idx;
326  auto end_iter = begin_iter + static_cast<unsigned int>(abstract_range.size());
327  return std::ranges::subrange(begin_iter, end_iter);
328  }

◆ setCalibrator()

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
template<std::size_t DIM, typename T_ValueType >
void AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::setCalibrator ( const Calibrator< DIM, T_ValueType > &  calibrator)
inline

Definition at line 222 of file AtlasMeasurementSelector.cxx.

222  {
223  m_calibrators.template setCalibrator<DIM, T_ValueType>(calibrator);
224  }

◆ setMeasurementRangesForced()

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
void AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::setMeasurementRangesForced ( const ActsTrk::detail::MeasurementRangeListFlat measurementRangesForced)
inline

Definition at line 199 of file AtlasMeasurementSelector.cxx.

199  {
200  m_measurementRangesForced = measurementRangesForced;
201  }

◆ setPreCalibrator()

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
template<std::size_t DIM, typename T_ValueType >
void AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::setPreCalibrator ( typename std::enable_if< s_CanPreCalibrate< DIM >, const Calibrator< DIM, T_ValueType > & >::type  calibrator)
inline

Definition at line 233 of file AtlasMeasurementSelector.cxx.

233  {
234  m_preCalibrators.template setCalibrator<DIM, T_ValueType>(calibrator);
235  }

Member Data Documentation

◆ m_calibrators

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
CalibratorRegistry< CalibratedMeasurementTraits, typename traits::BoundTrackParameters, measurement_container_variant_t> AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::m_calibrators {}

Definition at line 207 of file AtlasMeasurementSelector.cxx.

◆ m_measurementRanges

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
const ActsTrk::detail::MeasurementRangeList* AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::m_measurementRanges {}

Definition at line 196 of file AtlasMeasurementSelector.cxx.

◆ m_measurementRangesForced

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
const ActsTrk::detail::MeasurementRangeListFlat* AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::m_measurementRangesForced {}

Definition at line 197 of file AtlasMeasurementSelector.cxx.

◆ m_preCalibrators

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
std::conditional<s_fullPreCalibration, CalibratorRegistry< CalibratedMeasurementTraits, typename traits::BoundTrackParameters, measurement_container_variant_t>, Empty>::type AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::m_preCalibrators {}

Definition at line 211 of file AtlasMeasurementSelector.cxx.

◆ m_projector

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
ActsTrk::MeasurementParameterMap AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::m_projector {}

Definition at line 206 of file AtlasMeasurementSelector.cxx.

◆ s_CanPreCalibrate

template<std::size_t NMeasMax, typename traj_t , typename measurement_container_variant_t >
template<std::size_t DIM>
constexpr bool AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >::s_CanPreCalibrate
staticconstexpr
Initial value:
= std::is_same< typename traits::template PreSelectionMeasurement<DIM>,
typename traits::template CalibratedMeasurement<DIM> >::value
&& std::is_same< typename traits::template PreSelectionMeasurementCovariance<DIM>,
typename traits::template CalibratedMeasurementCovariance<DIM> >::value

Definition at line 227 of file AtlasMeasurementSelector.cxx.


The documentation for this struct was generated from the following file:
taskman.template
dictionary template
Definition: taskman.py:314
athena.value
value
Definition: athena.py:124
AtlasMeasurementSelector::m_preCalibrators
std::conditional< s_fullPreCalibration, CalibratorRegistry< CalibratedMeasurementTraits, typename traits::BoundTrackParameters, measurement_container_variant_t >, Empty >::type m_preCalibrators
Definition: AtlasMeasurementSelector.cxx:211
config
Definition: PhysicsAnalysis/AnalysisCommon/AssociationUtils/python/config.py:1
AtlasMeasurementSelector::BASE
MeasurementSelectorBaseImpl< NMeasMax, AtlasMeasurementSelector< NMeasMax, traj_t, measurement_container_variant_t >, measurement_container_variant_t > BASE
Definition: AtlasMeasurementSelector.cxx:163
xAOD::UncalibratedMeasurement_v1
Definition: UncalibratedMeasurement_v1.h:13
ActsTrk::makeATLASUncalibSourceLink
ATLASUncalibSourceLink makeATLASUncalibSourceLink(const xAOD::UncalibratedMeasurementContainer *container, std::size_t index, [[maybe_unused]] const EventContext &ctx)
Definition: ATLASSourceLink.h:30
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
AtlasMeasurementSelector::m_calibrators
CalibratorRegistry< CalibratedMeasurementTraits, typename traits::BoundTrackParameters, measurement_container_variant_t > m_calibrators
Definition: AtlasMeasurementSelector.cxx:207
AtlasMeasurementSelector::abstract_measurement_range_t
BASE::abstract_measurement_range_t abstract_measurement_range_t
Definition: AtlasMeasurementSelector.cxx:170
AtlasMeasurementSelector::m_projector
ActsTrk::MeasurementParameterMap m_projector
Definition: AtlasMeasurementSelector.cxx:206
AtlasMeasurementSelector::containerAndRangeSingle
static std::tuple< const measurement_container_variant_t *, abstract_measurement_range_t, bool > containerAndRangeSingle(const MeasurementRangeList_t &measurementRanges, const Acts::Surface &surface, bool forced)
Definition: AtlasMeasurementSelector.cxx:298
AtlasMeasurementSelector::m_measurementRanges
const ActsTrk::detail::MeasurementRangeList * m_measurementRanges
Definition: AtlasMeasurementSelector.cxx:196
ActsTrk::MeasurementParameterMap::parameterMap
Acts::SubspaceIndices< DIM > parameterMap([[maybe_unused]] const Acts::GeometryContext &, [[maybe_unused]] const Acts::CalibrationContext &, const Acts::Surface &surface) const
Definition: MeasurementCalibrator.h:65
AtlasMeasurementSelector::m_measurementRangesForced
const ActsTrk::detail::MeasurementRangeListFlat * m_measurementRangesForced
Definition: AtlasMeasurementSelector.cxx:197