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"
18 template <
typename MeasurementTypeTraits,
typename bound_track_parameters_t,
typename measurement_container_variant_t>
20 template <std::
size_t DIM>
22 template <std::
size_t DIM>
25 template <std::
size_t DIM,
typename measurement_t>
28 (
const Acts::GeometryContext&,
29 const Acts::CalibrationContext&,
30 const measurement_t &,
31 const bound_track_parameters_t &)>;
34 template <std::
size_t DIM,
typename T_ValueType>
39 template <std::
size_t DIM,
typename T_ValueType>
46 template <
typename T_ContainerPtr>
47 using container_type = std::remove_cv_t<std::remove_pointer_t<T_ContainerPtr> >;
52 template <
typename T_Container>
56 template <
typename T_ContainerWithDimension>
57 using type =
Calibrator< T_ContainerWithDimension::dimension() , std::remove_cv_t<std::remove_pointer_t< value_type<T_ContainerWithDimension> > > >;
62 std::array< CalibratorVariant, std::variant_size_v<measurement_container_variant_t> >
m_calibrators;
64 template <std::
size_t DIM,
typename T_ValueType, std::
size_t N>
71 template <
typename MeasurementTypeTraits,
typename bound_track_parameters_t,
typename measurement_container_variant_t>
72 template <std::
size_t DIM,
typename T_ValueType, std::
size_t N>
78 return calibrator_arr[0];
81 using Container = std::remove_cv_t<std::remove_pointer_t<decltype( ActsTrk::detail::MakeDerivedVariant::lvalue(std::get<N-1>(measurement_container_variant_t{})))> >;
84 using BaseElementType =
typename std::remove_cv_t<std::remove_pointer_t< ElementType > >;
86 return calibrator_arr[
N-1];
89 return getCalibratorGeneric<DIM, T_ValueType,
N-1>(calibrator_arr);
94 template <
typename MeasurementTypeTraits,
typename bound_track_parameters_t,
typename measurement_container_variant_t>
95 template <std::
size_t DiM,
typename T_ValueType>
100 assert( universial.index() < m_calibrators.size() );
101 m_calibrators.at(universial.index()) = std::move( universial);
104 template <
typename MeasurementTypeTraits,
typename bound_track_parameters_t,
typename measurement_container_variant_t>
105 template <std::
size_t DIM,
typename T_ValueType>
110 const CalibratorVariant &universal = getCalibratorGeneric< DIM, T_ValueType,std::variant_size_v<measurement_container_variant_t> >(m_calibrators);
111 return std::get<Calibrator<DIM, T_ValueType> >(universal);