18 #include <type_traits>
28 template <
class charge_t>
47 std::optional<CovarianceMatrix>
cov = std::nullopt)
49 assert((0 <= (params[
eFreeQOverP] * q)) and
"Inconsistent q/p and q signs");
60 template <
typename T = charge_t,
61 std::enable_if_t<std::is_default_constructible_v<T>,
int> = 0>
63 std::optional<CovarianceMatrix>
cov = std::nullopt)
76 std::optional<CovarianceMatrix>
cov = std::nullopt)
79 assert((0 <= p) and
"Absolute momentum must be positive");
102 template <
typename T = charge_t,
103 std::enable_if_t<std::is_default_constructible_v<T>,
int> = 0>
106 std::optional<CovarianceMatrix>
cov = std::nullopt)
133 template <FreeIndices kIndex>
135 return m_paramSet.template getParameter<kIndex>();
142 template <FreeIndices kIndex>
144 return m_paramSet.template getUncertainty<kIndex>();
150 pos4[
ePos0] = get<eFreePos0>();
151 pos4[
ePos1] = get<eFreePos1>();
152 pos4[
ePos2] = get<eFreePos2>();
153 pos4[
eTime] = get<eFreeTime>();
177 Scalar transverseMagnitude = std::hypot(get<eFreeDir0>(), get<eFreeDir1>());
179 Scalar magnitude = std::hypot(transverseMagnitude, get<eFreeDir2>());