File indexing completed on 2026-05-27 07:24:25
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011
0012 #include "detray/builders/grid_builder.hpp"
0013 #include "detray/definitions/algebra.hpp"
0014 #include "detray/geometry/mask.hpp"
0015 #include "detray/utils/grid/grid.hpp"
0016 #include "detray/utils/grid/grid_collection.hpp"
0017 #include "detray/utils/grid/populators.hpp"
0018 #include "detray/utils/grid/serializers.hpp"
0019
0020
0021 #include "detray/test/framework/types.hpp"
0022
0023 namespace detray {
0024
0025
0026 using test_algebra = test::algebra;
0027 using scalar = detray::dscalar<test_algebra>;
0028 using point3 = detray::dpoint3D<test_algebra>;
0029
0030 using namespace axis;
0031
0032 inline constexpr scalar tol{1e-7f};
0033 inline constexpr std::size_t n_points{3u};
0034 inline constexpr bool is_owning{true};
0035
0036
0037
0038
0039 using host_grid3_single =
0040 grid<test_algebra, axes<cuboid3D>, bins::single<point3>>;
0041
0042 using device_grid3_single =
0043 grid<test_algebra, axes<cuboid3D>, bins::single<point3>, simple_serializer,
0044 device_container_types>;
0045
0046 using host_grid2_single_ci =
0047 grid<test_algebra, axes<ring2D, bounds::e_closed, irregular>,
0048 bins::single<point3>>;
0049
0050 using device_grid2_single_ci =
0051 grid<test_algebra, axes<ring2D, bounds::e_closed, irregular>,
0052 bins::single<point3>, simple_serializer, device_container_types>;
0053
0054
0055 using host_grid2_array =
0056 grid<test_algebra, axes<ring2D>, bins::static_array<point3, n_points>>;
0057
0058 using device_grid2_array =
0059 grid<test_algebra, axes<ring2D>, bins::static_array<point3, n_points>,
0060 simple_serializer, device_container_types>;
0061
0062 using host_grid2_dynamic_array =
0063 grid<test_algebra, axes<ring2D>, bins::dynamic_array<point3>>;
0064
0065 using device_grid2_dynamic_array =
0066 grid<test_algebra, axes<ring2D>, bins::dynamic_array<point3>,
0067 simple_serializer, device_container_types>;
0068
0069
0070 template <typename containers>
0071 using cylinder3D_grid = grid<test_algebra, axes<cylinder3D, bounds::e_open>,
0072 bins::static_array<dindex, n_points>,
0073 simple_serializer, containers, !is_owning>;
0074
0075 using n_own_host_grid3_array = cylinder3D_grid<host_container_types>;
0076 using n_own_device_grid3_array = cylinder3D_grid<device_container_types>;
0077
0078
0079 void grid_replace_test(host_grid3_single::view_type grid_view,
0080 std::size_t dim_x, std::size_t dim_y, std::size_t dim_z);
0081
0082
0083 void grid_replace_ci_test(host_grid2_single_ci::view_type grid_view,
0084 std::size_t dim_x, std::size_t dim_y);
0085
0086
0087 void grid_complete_test(host_grid2_array::view_type grid_view,
0088 std::size_t dim_x, std::size_t dim_y);
0089
0090
0091
0092 void grid_attach_test(host_grid2_array::view_type grid_view, std::size_t dim_x,
0093 std::size_t dim_y);
0094
0095 void grid_dynamic_attach_test(host_grid2_dynamic_array::view_type grid_view,
0096 std::size_t dim_x, std::size_t dim_y);
0097
0098
0099
0100 template <typename device_grid_t, typename view_t, typename... I>
0101 void print_grid(view_t grid_view, I... dims);
0102
0103
0104 void grid_collection_test(
0105 grid_collection<n_own_host_grid3_array>::view_type grid_collection_view,
0106 vecmem::data::vector_view<dindex> n_bins_view,
0107 vecmem::data::vector_view<std::array<dindex, 3>> result_bins_view,
0108 std::size_t n_grids, std::size_t dim_x, std::size_t dim_y,
0109 std::size_t dim_z);
0110
0111 }