12#include "detray/core/detail/multi_store.hpp"
13#include "detray/core/detail/single_store.hpp"
14#include "detray/definitions/algebra.hpp"
15#include "detray/definitions/containers.hpp"
16#include "detray/definitions/indexing.hpp"
17#include "detray/geometry/mask.hpp"
18#include "detray/geometry/shapes/concentric_cylinder2D.hpp"
19#include "detray/geometry/shapes/cylinder3D.hpp"
20#include "detray/geometry/shapes/line.hpp"
21#include "detray/geometry/shapes/ring2D.hpp"
22#include "detray/geometry/surface_descriptor.hpp"
23#include "detray/material/material.hpp"
24#include "detray/material/material_map.hpp"
25#include "detray/material/material_rod.hpp"
26#include "detray/navigation/accelerators/brute_force.hpp"
27#include "detray/navigation/accelerators/spatial_grid.hpp"
32template <concepts::algebra algebra_t>
42 template <
template <
typename...>
class vector_t =
dvector>
45 single_store<dtransform3D<algebra_type>, vector_t, geometry_context>;
61 e_concentric_cylinder2D = 2u,
65 DETRAY_HOST
inline friend std::ostream&
operator<<(std::ostream& os,
68 case mask_id::e_drift_cell:
71 case mask_id::e_straw_tube:
74 case mask_id::e_concentric_cylinder2D:
75 os <<
"e_concentric_cylinder2D";
77 case mask_id::e_ring2D:
86 template <
template <
typename...>
class vector_t =
dvector>
92 template <
typename container_t>
96 template <
typename container_t>
106 e_concentric_cylinder2D_map = 0u,
113 DETRAY_HOST
inline friend std::ostream&
operator<<(std::ostream& os,
116 case material_id::e_concentric_cylinder2D_map:
117 os <<
"e_concentric_cylinder2D_map";
119 case material_id::e_ring2D_map:
120 os <<
"e_ring2D_map";
122 case material_id::e_raw_material:
123 os <<
"e_raw_material";
125 case material_id::e_material_rod:
126 os <<
"e_material_rod";
128 case material_id::e_none:
137 template <
typename container_t = host_container_types>
143 typename container_t::template vector_type<raw_material_t>,
144 typename container_t::template vector_type<material_rod_t>>;
156 template <
typename axes_t,
typename bin_entry_t,
typename container_t>
161 detray::simple_serializer, container_t,
false>;
163 template <
typename container_t>
168 template <
typename container_t>
175 e_surface_brute_force = 0u,
176 e_surface_concentric_cylinder2D_grid = 1u,
177 e_volume_cylinder3D_grid = 2u,
178 e_surface_default = e_surface_brute_force,
179 e_volume_default = e_volume_cylinder3D_grid,
182 DETRAY_HOST
inline friend std::ostream&
operator<<(std::ostream& os,
185 case accel_id::e_surface_brute_force:
186 os <<
"e_surface_brute_force";
188 case accel_id::e_surface_concentric_cylinder2D_grid:
189 os <<
"e_surface_concentric_cylinder2D_grid";
191 case accel_id::e_volume_cylinder3D_grid:
192 os <<
"e_volume_cylinder3D_grid";
200 template <
typename container_t = host_container_types>
218 DETRAY_HOST
inline friend std::ostream&
operator<<(std::ostream& os,
221 case geo_objects::e_sensitive:
224 case geo_objects::e_passive:
225 os <<
"e_portal/e_passive";
227 case geo_objects::e_volume:
230 case geo_objects::e_size:
Bin that views a collection of entries it does not own.
Definition grid_bins.hpp:206
A collection of brute force surface finders, callable by index.
Definition brute_force.hpp:38
A collection of grids that can be moved to device as part of the detector.
Definition grid_collection.hpp:31
Mask a region on a surface and link it to a volume.
Definition mask.hpp:46
Templated surface class for detector surfaces and portals.
Definition surface_descriptor.hpp:35
Detray include(s).
Definition array_operators.hpp:18
get_scalar_t< A, T > dscalar
Scalar type for algebra A and value type T.
Definition algebra.hpp:64
vecmem::vector< value_t > dvector
Vector container backed by vecmem.
Definition containers.hpp:34
grid< algebra_t, axes< shape_t >, bins::single< material_slab< dscalar< algebra_t > > >, simple_serializer, container_t, owning > material_map
Definition of binned material.
Definition material_map.hpp:29
unsigned int dindex
Default index type.
Definition indexing.hpp:18
spatial_grid_impl< grid_impl< coordinate_axes< axes_t, algebra_t, ownership, containers >, bin_t, simple_serializer > > spatial_grid
Spatial grid alias built from coordinate axes and a bin type.
Definition spatial_grid.hpp:275
detray::tuple< types... > dtuple
Tuple type used by detray storage and dispatch.
Definition containers.hpp:46
detail::multi_index< index_t, DIM > dmulti_index
Index that consists of multiple subindices.
Definition indexing.hpp:33
std::ostream & operator<<(std::ostream &os, volume_id vid)
Write the volume shape identifier using its enumerator name.
Definition geometry.hpp:59
Rod structure to be mapped on the line mask.
Definition material_rod.hpp:26
Material composition properties and density data used by interactions.
Definition material.hpp:36