12#include "algebra/vc_soa.hpp"
13#include "detray/algebra/concepts.hpp"
19namespace detray::algebra {
22template <detray::concepts::vector vector_soa_t>
23inline void fill_random_vec(std::vector<vector_soa_t> &collection) {
25 auto rand_obj = []() {
26 using simd_vector_t =
typename vector_soa_t::scalar_type;
29 for (std::size_t i = 0u; i < detray::traits::size<vector_soa_t>; ++i) {
30 tmp[i] = simd_vector_t::Random();
36 collection.resize(collection.capacity());
37 std::ranges::generate(collection, rand_obj);
41template <detray::concepts::transform3D transform3_t>
42inline void fill_random_trf(std::vector<transform3_t> &collection) {
44 auto rand_obj = []() {
45 using vector_t =
typename transform3_t::vector3;
46 using simd_vector_t =
typename transform3_t::scalar_type;
52 x_axis[0] = simd_vector_t::Random();
53 x_axis[1] = simd_vector_t::Random();
54 x_axis[2] = simd_vector_t::Random();
55 x_axis = detray::vector::normalize(x_axis);
57 z_axis[0] = simd_vector_t::Random();
58 z_axis[1] = simd_vector_t::Random();
59 z_axis[2] = simd_vector_t::Random();
61 t[0] = simd_vector_t::Random();
62 t[1] = simd_vector_t::Random();
63 t[2] = simd_vector_t::Random();
64 t = detray::vector::normalize(t);
68 detray::vector::dot(x_axis, z_axis) / detray::vector::norm(x_axis);
69 z_axis = x_axis - coeff * z_axis;
71 return transform3_t{t, x_axis, detray::vector::normalize(z_axis)};
74 collection.resize(collection.capacity());
75 std::ranges::generate(collection, rand_obj);
79template <detray::concepts::matrix matrix_t>
80inline void fill_random_matrix(std::vector<matrix_t> &collection) {
82 auto rand_obj = []() {
83 using simd_vector_t =
typename matrix_t::scalar_type;
87 for (std::size_t j = 0u; j < matrix_t::columns(); ++j) {
88 typename matrix_t::vector_type v;
90 for (std::size_t i = 0u; i < matrix_t::rows(); ++i) {
91 v[i] = simd_vector_t::Random();
100 collection.resize(collection.capacity());
101 std::ranges::generate(collection, rand_obj);
constexpr double m
Meter.
Definition Units.hpp:97