Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-27 07:24:25

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 #pragma once
0010 
0011 // detray core
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 // Detray test include(s)
0021 #include "detray/test/framework/types.hpp"
0022 
0023 namespace detray {
0024 
0025 // type definitions
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 // host and device grid definitions
0037 
0038 // replacer
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 // completer/attacher
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 // grid collection
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 /// test function for replace populator
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 /// test function for replace populator with circular and irregular axis
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 /// test function for complete populator
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 /// read test function for attach populator
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 // print an N-dimensional grid on device
0100 template <typename device_grid_t, typename view_t, typename... I>
0101 void print_grid(view_t grid_view, I... dims);
0102 
0103 // test function for a collection of grids
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 }  // namespace detray