20 #include <type_traits>
35 template <
class charge_t>
56 std::optional<CovarianceMatrix>
cov = std::nullopt)
61 "Inconsistent q/p and q signs");
73 template <
typename T = charge_t,
74 std::enable_if_t<std::is_default_constructible_v<T>,
int> = 0>
77 std::optional<CovarianceMatrix>
cov = std::nullopt)
97 std::optional<CovarianceMatrix>
cov = std::nullopt)
101 (q !=
Scalar(0)) ? (q / p) : (1 / p), *surface, geoCtx)),
104 assert((0 <= p) and
"Absolute momentum must be positive");
120 template <
typename T = charge_t,
121 std::enable_if_t<std::is_default_constructible_v<T>,
int> = 0>
126 std::optional<CovarianceMatrix>
cov = std::nullopt)
129 qOverP, *surface, geoCtx)),
150 template <BoundIndices kIndex>
152 return m_paramSet.template getParameter<kIndex>();
159 template <BoundIndices kIndex>
161 return m_paramSet.template getUncertainty<kIndex>();
173 const Vector2D loc(get<eBoundLoc0>(), get<eBoundLoc1>());
177 pos4.segment<3>(
ePos0) =
m_surface->localToGlobal(geoCtx, loc, dir);
178 pos4[
eTime] = get<eBoundTime>();
190 const Vector2D loc(get<eBoundLoc0>(), get<eBoundLoc1>());
193 return m_surface->localToGlobal(geoCtx, loc, dir);
249 return !(lhs == rhs);