12#include "algebra/eigen.hpp"
13#include "detray/algebra/concepts.hpp"
19namespace detray::algebra {
22template <detray::concepts::vector vector_t>
23inline void fill_random_vec(std::vector<vector_t> &collection) {
24 auto rand_obj = []() {
return vector_t::Random(); };
26 collection.resize(collection.capacity());
27 std::ranges::generate(collection, rand_obj);
31template <detray::concepts::transform3D transform3_t>
32inline void fill_random_trf(std::vector<transform3_t> &collection) {
33 using vector_t =
typename transform3_t::vector3;
35 auto rand_obj = []() {
40 x_axis = detray::vector::normalize(vector_t::Random());
41 z_axis = vector_t::Random();
42 t = detray::vector::normalize(vector_t::Random());
45 typename transform3_t::scalar_type coeff =
46 detray::vector::dot(x_axis, z_axis) / detray::vector::norm(x_axis);
47 z_axis = x_axis - coeff * z_axis;
49 return transform3_t{t, x_axis, detray::vector::normalize(z_axis)};
52 collection.resize(collection.capacity());
53 std::ranges::generate(collection, rand_obj);
57template <detray::concepts::matrix matrix_t>
58inline void fill_random_matrix(std::vector<matrix_t> &collection) {
59 auto rand_obj = []() {
return matrix_t::Random(); };
61 collection.resize(collection.capacity());
62 std::ranges::generate(collection, rand_obj);