17 #include <type_traits>
19 #if defined(ACTS_CONCEPTS_SUPPORTED)
25 using Parameters = Eigen::Map<BoundVector>;
28 using ConstParameters = Eigen::Map<const BoundVector>;
29 using ConstCovariance = Eigen::Map<const BoundMatrix>;
33 concept ConstTrackContainerBackend = requires(
const T& cv,
HashedString key,
35 { cv.size_impl() } -> std::same_as<std::size_t>;
37 { cv.component_impl(key, itrack) } -> std::same_as<std::any>;
39 { cv.parameters(itrack) } -> std::same_as<detail::ConstParameters>;
41 { cv.covariance(itrack) } -> std::same_as<detail::ConstCovariance>;
43 { cv.hasColumn_impl(key) } -> std::same_as<bool>;
45 { cv.referenceSurface_impl(itrack) } -> std::same_as<const Surface*>;
49 concept MutableTrackContainerBackend = ConstTrackContainerBackend<T> &&
51 const T& other, std::shared_ptr<const Surface> sharedSurface) {
52 { v.parameters(itrack) } -> std::same_as<detail::Parameters>;
54 { v.covariance(itrack) } -> std::same_as<detail::Covariance>;
56 { v.addTrack_impl() } -> std::same_as<TrackIndexType>;
58 {v.removeTrack_impl(itrack)};
62 {v.template addColumn_impl<uint32_t>(
col)};
63 {v.template addColumn_impl<uint64_t>(
col)};
64 {v.template addColumn_impl<int32_t>(
col)};
65 {v.template addColumn_impl<int64_t>(
col)};
66 {v.template addColumn_impl<float>(
col)};
67 {v.template addColumn_impl<double>(
col)};
69 {v.copyDynamicFrom_impl(itrack, other, itrack)};
71 {v.ensureDynamicColumns_impl(other)};
75 {v.setReferenceSurface_impl(itrack, sharedSurface)};
82 concept TrackContainerBackend = ConstTrackContainerBackend<T> &&