12#include "algebra/fastor.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 = [](vector_t& v) { v.random(); };
26 collection.resize(collection.capacity());
27 std::ranges::for_each(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 = [](transform3_t& trf) {
41 x_axis = detray::vector::normalize(x_axis);
44 t = detray::vector::normalize(t);
47 typename transform3_t::scalar_type coeff =
48 detray::vector::dot(x_axis, z_axis) / detray::vector::norm(x_axis);
49 z_axis = x_axis - coeff * z_axis;
51 trf = transform3_t{t, x_axis, detray::vector::normalize(z_axis)};
54 collection.resize(collection.capacity());
55 std::ranges::for_each(collection, rand_obj);
59template <detray::concepts::matrix matrix_t>
60inline void fill_random_matrix(std::vector<matrix_t>& collection) {
61 auto rand_obj = [](matrix_t&
m) {
m.random(); };
63 collection.resize(collection.capacity());
64 std::ranges::for_each(collection, rand_obj);
constexpr double m
Meter.
Definition Units.hpp:97