19 #include <type_traits>
41 template <
typename source_link_t>
47 template <
typename T,
bool select>
48 using ConstIf = std::conditional_t<select, const T, T>;
52 template <
typename Storage,
size_t kSizeIncrement>
60 size_t index =
m_size + (
n - 1);
62 data.conservativeResize(Eigen::NoChange,
data.cols() + kSizeIncrement);
68 data.col(index).setZero();
70 return data.col(index);
74 auto col(
size_t index) {
return data.col(index); }
77 auto col(
size_t index)
const {
return data.col(index); }
80 size_t capacity()
const {
return static_cast<size_t>(
data.cols()); }
90 template <
size_t Size,
bool ReadOnlyMaps = true>
93 Flags = Eigen::ColMajor | Eigen::AutoAlign,
99 using Covariance = Eigen::Matrix<Scalar, Size, Size, Flags>;
139 template <
typename source_link_t,
size_t M,
bool ReadOnly = true>
154 Eigen::Matrix<typename Covariance::Scalar, M, eBoundSize, ProjectorFlags>;
170 template <
bool RO = ReadOnly,
typename = std::enable_if_t<!RO>>
187 template <
bool RO = ReadOnly,
bool ReadOnlyOther,
188 typename = std::enable_if<!RO>>
195 if (
static_cast<std::underlying_type_t<TrackStatePropMask>
>((src ^ dest) &
197 throw std::runtime_error(
198 "Attempt track state copy with incompatible allocations");
255 template <
bool RO = ReadOnly,
typename = std::enable_if_t<!RO>>
345 template <
typename Derived,
bool RO = ReadOnly,
346 typename = std::enable_if_t<!RO>>
348 constexpr
int rows = Eigen::MatrixBase<Derived>::RowsAtCompileTime;
349 constexpr
int cols = Eigen::MatrixBase<Derived>::ColsAtCompileTime;
351 static_assert(rows != -1 && cols != -1,
352 "Assignment of dynamic matrices is currently not supported.");
357 static_assert(rows <=
M,
"Given projector has too many rows");
358 static_assert(cols <=
eBoundSize,
"Given projector has too many columns");
362 decltype(fullProjector)::Zero();
366 fullProjector.template topLeftCorner<rows, cols>() = projector;
385 template <
bool RO = ReadOnly,
typename = std::enable_if_t<!RO>>
406 template <
bool RO = ReadOnly,
typename = std::enable_if_t<!RO>>
445 template <
bool RO = ReadOnly,
typename = std::enable_if_t<!RO>,
446 BoundIndices... params>
450 constexpr
size_t measdim =
467 std::shared_ptr<const Surface>& refSrf =
486 template <
bool RO = ReadOnly,
typename = std::enable_if_t<!RO>,
487 BoundIndices... params>
493 traj.m_meas.addCol();
494 traj.m_measCov.addCol();
499 traj.m_sourceLinks.emplace_back();
502 traj.m_projectors.emplace_back();
503 dataref.
iprojector = traj.m_projectors.size() - 1;
514 template <
bool RO = ReadOnly,
typename = std::enable_if_t<!RO>>
529 template <
bool RO = ReadOnly,
typename = std::enable_if_t<!RO>>
542 template <
bool RO = ReadOnly,
typename = std::enable_if_t<!RO>>
567 template <
bool RO = ReadOnly,
typename = std::enable_if_t<!RO>>
581 template <
typename T,
typename TS>
584 template <
typename T,
typename TS>
586 Concepts ::either<Concepts ::identical_to<bool, call_operator_t, T, TS>,
587 Concepts ::identical_to<void, call_operator_t, T, TS>>>;
600 template <
typename source_link_t>
624 size_t iprevious = SIZE_MAX);
630 return {*
this, istate};
642 template <
typename F>
652 template <
typename F>