1 #ifndef CUDADataFormats_Track_TrajectoryStateSOAT_H 2 #define CUDADataFormats_Track_TrajectoryStateSOAT_H 9 using Vector5f = Eigen::Matrix<float, 5, 1>;
15 static constexpr int32_t
stride() {
return S; }
20 template <
typename V3,
typename M3,
typename V2,
typename M2>
22 V3
const&
cp, M3
const& ccov, V2
const& lp, M2
const& lcov,
float b, int32_t
i) {
23 state(
i) <<
cp.template cast<float>(), lp.template cast<float>();
28 cov(2) =
b *
float(ccov(0, 2));
31 cov(6) =
b *
float(ccov(1, 2));
33 cov(9) =
b *
b *
float(ccov(2, 2));
34 cov(11) = cov(10) = 0;
40 template <
typename V5,
typename M5>
42 state(
i) =
v.template cast<float>();
43 for (
int j = 0, ind = 0;
j < 5; ++
j)
44 for (
auto k =
j;
k < 5; ++
k)
48 template <
typename V5,
typename M5>
50 v =
state(
i).template cast<typename V5::Scalar>();
51 for (
int j = 0, ind = 0;
j < 5; ++
j) {
53 for (
auto k =
j + 1;
k < 5; ++
k)
59 #endif // CUDADataFormats_Track_TrajectoryStateSOAT_H
Eigen::Matrix< double, 5, 5 > Matrix5d
eigenSoA::MatrixSoA< Vector15f, S > covariance
__host__ __device__ void copyToDense(V5 &v, M5 &cov, int32_t i) const
__host__ __device__ void copyFromCircle(V3 const &cp, M3 const &ccov, V2 const &lp, M2 const &lcov, float b, int32_t i)
Eigen::Matrix< float, 15, 1 > Vector15f
eigenSoA::MatrixSoA< Vector5f, S > state
static constexpr int32_t stride()
Eigen::Matrix< double, 5, 1 > Vector5d
__host__ __device__ void copyFromDense(V5 const &v, M5 const &cov, int32_t i)
Eigen::Matrix< float, 5, 1 > Vector5f