20 #include <type_traits>
22 #if defined(ACTS_CONCEPTS_SUPPORTED)
28 using Parameters = Eigen::Map<BoundVector>;
31 using ConstParameters = Eigen::Map<const BoundVector>;
32 using ConstCovariance = Eigen::Map<const BoundMatrix>;
37 concept CommonMultiTrajectoryBackend = requires(
const T& cv,
HashedString key,
39 { cv.calibratedSize_impl(istate) } -> std::same_as<TrackIndexType>;
41 { cv.getUncalibratedSourceLink_impl(istate) } -> std::same_as<SourceLink>;
43 { cv.referenceSurface_impl(istate) } -> std::same_as<const Surface*>;
45 { cv.parameters_impl(istate) } -> std::same_as<detail::ConstParameters>;
47 { cv.covariance_impl(istate) } -> std::same_as<detail::ConstCovariance>;
49 { cv.jacobian_impl(istate) } -> std::same_as<detail::ConstCovariance>;
52 cv.template measurement_impl<2>(istate)
53 } -> std::same_as<Eigen::Map<
const ActsVector<2>>>;
56 cv.template measurementCovariance_impl<2>(istate)
57 } -> std::same_as<Eigen::Map<
const ActsSquareMatrix<2>>>;
59 { cv.has_impl(key, istate) } -> std::same_as<bool>;
61 { cv.size_impl() } -> std::same_as<TrackIndexType>;
63 { cv.component_impl(key, istate) } -> std::same_as<std::any>;
65 { cv.hasColumn_impl(key) } -> std::same_as<bool>;
69 concept ConstMultiTrajectoryBackend = CommonMultiTrajectoryBackend<T> &&
71 { v.parameters_impl(istate) } -> std::same_as<detail::ConstParameters>;
73 { v.covariance_impl(istate) } -> std::same_as<detail::ConstCovariance>;
75 { v.jacobian_impl(istate) } -> std::same_as<detail::ConstCovariance>;
78 v.template measurement_impl<2>(istate)
79 } -> std::same_as<Eigen::Map<
const ActsVector<2>>>;
82 v.template measurementCovariance_impl<2>(istate)
83 } -> std::same_as<Eigen::Map<
const ActsSquareMatrix<2>>>;
87 concept MutableMultiTrajectoryBackend = CommonMultiTrajectoryBackend<T> &&
91 { v.parameters_impl(istate) } -> std::same_as<detail::Parameters>;
93 { v.covariance_impl(istate) } -> std::same_as<detail::Covariance>;
95 { v.jacobian_impl(istate) } -> std::same_as<detail::Covariance>;
98 v.template measurement_impl<2>(istate)
99 } -> std::same_as<Eigen::Map<ActsVector<2>>>;
102 v.template measurementCovariance_impl<2>(istate)
103 } -> std::same_as<Eigen::Map<ActsSquareMatrix<2>>>;
105 { v.addTrackState_impl() } -> std::same_as<TrackIndexType>;
107 {v.shareFrom_impl(istate, istate, mask, mask)};
109 {v.unset_impl(mask, istate)};
115 {v.template addColumn_impl<uint32_t>(
col)};
116 {v.template addColumn_impl<uint64_t>(
col)};
117 {v.template addColumn_impl<int32_t>(
col)};
118 {v.template addColumn_impl<int64_t>(
col)};
119 {v.template addColumn_impl<float>(
col)};
120 {v.template addColumn_impl<double>(
col)};
122 {v.allocateCalibrated_impl(istate, dim)};
124 {v.setUncalibratedSourceLink_impl(istate, sl)};
126 {v.setReferenceSurface_impl(istate, surface)};