14 #include <type_traits>
21 template <
typename D,
size_t M,
bool ReadOnly>
26 template <
typename D,
size_t M,
bool ReadOnly>
32 mask |= PM::Predicted;
43 if (hasCalibrated()) {
44 mask |= PM::Calibrated;
49 template <
typename D,
size_t M,
bool ReadOnly>
54 }
else if (hasFiltered()) {
61 template <
typename D,
size_t M,
bool ReadOnly>
65 return smoothedCovariance();
66 }
else if (hasFiltered()) {
67 return filteredCovariance();
69 return predictedCovariance();
73 template <
typename D,
size_t M,
bool ReadOnly>
76 return bitsetToMatrix<Projector>(
80 template <
typename D,
size_t M,
bool ReadOnly>
84 return m_traj->getUncalibratedSourceLink(m_istate);
93 static_assert(detail_lt::VisitorConcept<F, ConstTrackStateProxy>,
94 "Callable needs to satisfy VisitorConcept");
97 throw std::runtime_error(
98 "Cannot visit backwards with kInvalid as endpoint");
102 auto ts = getTrackState(iendpoint);
103 if constexpr (std::is_same_v<std::invoke_result_t<F, ConstTrackStateProxy>,
105 bool proceed = callable(ts);
108 if (!proceed || !ts.hasPrevious()) {
114 if (!ts.hasPrevious()) {
118 iendpoint = ts.previous();