4#ifndef CALIBRATORREGISTRY_H
5#define CALIBRATORREGISTRY_H
8#include "Acts/Utilities/Delegate.hpp"
9#include "Acts/Geometry/GeometryContext.hpp"
10#include "Acts/Utilities/CalibrationContext.hpp"
12template <
typename calibrator_type_helper_t,
typename measurement_container_variant_t>
16 template <std::
size_t DIM,
typename T_ValueType>
20 template <std::
size_t DIM,
typename T_ValueType>
25 template <std::
size_t DIM,
typename T_ValueType>
29 measurement_container_variant_t >::variant_type;
32 std::array< CalibratorVariant, std::variant_size_v<measurement_container_variant_t> >
m_calibrators;
34 template <std::
size_t DIM,
typename T_ValueType, std::
size_t N>
40template <
typename MeasurementTypeTraits,
typename measurement_container_variant_t,
typename bound_track_parameters_t>
42 template <std::
size_t DIM>
44 template <std::
size_t DIM>
47 template <std::
size_t DIM,
typename measurement_t>
50 (
const Acts::GeometryContext&,
51 const Acts::CalibrationContext&,
52 const Acts::Surface &,
53 const measurement_t &,
54 const bound_track_parameters_t &)>;
57 template <
typename T_ContainerPtr>
58 using container_type = std::remove_cv_t<std::remove_pointer_t<T_ContainerPtr> >;
61 template <
typename T_Container>
67 template <
typename T_Container>
68 using value_type =
typename MeasurementTypeTraits::template MeassurementContainerValueType<typename T_Container::container_type >;
71 template <
typename T_ContainerWithDimension>
72 using type =
Calibrator< T_ContainerWithDimension::dimension() , std::remove_cv_t<std::remove_pointer_t< value_type<T_ContainerWithDimension> > > >;
75template <
typename MeasurementTypeTraits,
typename measurement_container_variant_t,
typename track_state_proxy_t >
77 template <std::
size_t DIM>
79 template <std::
size_t DIM>
82 template <std::
size_t DIM,
typename measurement_t>
84 void (
const Acts::GeometryContext&,
85 const Acts::CalibrationContext&,
86 const measurement_t &,
87 track_state_proxy_t &)>;
90 template <
typename T_ContainerPtr>
91 using container_type = std::remove_cv_t<std::remove_pointer_t<T_ContainerPtr> >;
94 template <
typename T_Container>
100 template <
typename T_Container>
101 using value_type =
typename MeasurementTypeTraits::template MeassurementContainerValueType<typename T_Container::container_type >;
104 template <
typename T_ContainerWithDimension>
105 using type =
Calibrator< T_ContainerWithDimension::dimension() , std::remove_cv_t<std::remove_pointer_t< value_type<T_ContainerWithDimension> > > >;
114template <
typename MeasurementTypeTraits,
typename measurement_container_variant_t,
typename track_state_proxy_t>
116 measurement_container_variant_t,
117 track_state_proxy_t>,
118 measurement_container_variant_t>;
119template <
typename MeasurementTypeTraits,
typename measurement_container_variant_t,
typename bound_track_parameters_t>
121 measurement_container_variant_t,
122 bound_track_parameters_t>,
123 measurement_container_variant_t>;
126template <
typename calibrator_type_helper_t,
typename measurement_container_variant_t>
127template <std::
size_t DIM,
typename T_ValueType, std::
size_t N>
133 return calibrator_arr[0];
138 using ElementType =
typename calibrator_type_helper_t::template container_value_type<typename Container::container_type>;
139 using BaseElementType =
typename std::remove_cv_t<std::remove_pointer_t< ElementType > >;
140 if constexpr(std::is_same<T_ValueType,BaseElementType>::value && Container::dimension() == DIM) {
141 return calibrator_arr[N-1];
149template <
typename calibrator_type_helper_t,
typename measurement_container_variant_t>
150template <std::
size_t DiM,
typename T_ValueType>
156 m_calibrators.at(universial.index()) = std::move( universial);
159template <
typename calibrator_type_helper_t,
typename measurement_container_variant_t>
160template <std::
size_t DIM,
typename T_ValueType>
166 return std::get<Calibrator<DIM, T_ValueType> >(universal);
CalibratorRegistryBase< PreCalibratorTypeTraits< MeasurementTypeTraits, measurement_container_variant_t, bound_track_parameters_t >, measurement_container_variant_t > PreCalibratorRegistry
CalibratorRegistryBase< CalibratorTypeTraits< MeasurementTypeTraits, measurement_container_variant_t, track_state_proxy_t >, measurement_container_variant_t > CalibratorRegistry
An instance of this class is created for each sub-level of the TRT by the TRTCalibrator.
storage of the time histories of all the cells
typename CalibratorType::template Calibrator< DIM, T_ValueType > Calibrator
ActsTrk::detail::MakeDerivedVariant::MakeVariant< calibrator_type_helper_t, measurement_container_variant_t >::variant_type CalibratorVariant
std::array< CalibratorVariant, std::variant_size_v< measurement_container_variant_t > > m_calibrators
static const CalibratorVariant & getCalibratorGeneric(const std::array< CalibratorVariant, std::variant_size_v< measurement_container_variant_t > > &calibrator_arr)
const calibrator_type_helper_t::template Calibrator< DIM, T_ValueType > & calibrator() const
const CalibratorRegistryBase< CalibratorTypeTraits< MeasurementTypeTraits, measurement_container_variant_t, track_state_proxy_t >, measurement_container_variant_t >::template Calibrator< DIM, T_ValueType > & calibrator() const
void setCalibrator(const typename calibrator_type_helper_t::template Calibrator< DIM, T_ValueType > &calibrator)
calibrator_type_helper_t CalibratorType
std::remove_cv_t< std::remove_pointer_t< T_ContainerPtr > > container_type
typename CalibratedMeasurementTraits::template MeasurementCovariance< DIM > MeasurementCovariance
typename CalibratedMeasurementTraits::template Measurement< DIM > Measurement
typename T_Container::value_type container_value_type
Acts::Delegate< void(const Acts::GeometryContext &, const Acts::CalibrationContext &, const measurement_t &, typename traits::TrackStateProxy &)> Calibrator
typename CalibratedMeasurementTraits::template MeassurementContainerValueType< typename T_Container::container_type > value_type
Calibrator< T_ContainerWithDimension::dimension(), std::remove_cv_t< std::remove_pointer_t< value_type< T_ContainerWithDimension > > > > type
typename CalibratedMeasurementTraits::template Measurement< DIM > Measurement
Acts::Delegate< std::tuple< Measurement< DIM >, MeasurementCovariance< DIM >, unsigned int >(const Acts::GeometryContext &, const Acts::CalibrationContext &, const Acts::Surface &, const measurement_t &, const typename traits::BoundTrackParameters &)> Calibrator
std::remove_cv_t< std::remove_pointer_t< T_ContainerPtr > > container_type
typename CalibratedMeasurementTraits::template MeassurementContainerValueType< typename T_Container::container_type > value_type
typename CalibratedMeasurementTraits::template MeasurementCovariance< DIM > MeasurementCovariance
Calibrator< T_ContainerWithDimension::dimension(), std::remove_cv_t< std::remove_pointer_t< value_type< T_ContainerWithDimension > > > > type
typename T_Container::value_type container_value_type