ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray Namespace Reference

Detray include(s). More...

Namespaces

namespace  concepts
 Type list concepts.
namespace  detector_scanner
 Run a scan on detector object by shooting test particles through it.
namespace  io
 The following enums are global for all detectors.

Classes

class  actor_chain
 The interface to the actors and aborters in the propagation. More...
class  actor_chain<>
 Empty actor chain (placeholder). More...
struct  aggregate_inspector
 An inspector that aggregates a number of different inspectors. More...
struct  air
 Mixtures or Compounds. More...
struct  aluminium
 Predefined aluminium material with tabulated bulk properties. More...
struct  always_init
 Struct that represents the most conservative navigation policy: always re- initialize the current volume. More...
class  annulus2D
 Geometrical shape of a stereo annulus that is used for the ITk strip endcaps. More...
struct  antimuon
 Positive muon hypothesis. More...
struct  argon_gas
 Predefined argon gas material with tabulated bulk properties. More...
struct  argon_liquid
 Predefined argon liquid material with tabulated bulk properties. More...
struct  array
 Define the plugin types. More...
struct  attach
 An attach populator that adds a new entry to a given bin. More...
class  axis_aligned_bounding_volume
 An axis aligned bounding box of a given. More...
struct  axis_rotation
 Helper struct to rotate a vector around a given axis and angle counterclockwisely. More...
class  barrel_generator
 Generates a number of surfaces in a barrel shape. More...
struct  barrel_generator_config
 configuration for the barrel module generator More...
struct  base_actor
 Base class actor implementation. More...
class  base_stepper
 Base stepper implementation. More...
struct  beryllium
 Predefined beryllium material with tabulated bulk properties. More...
struct  beryllium_tml
 Elements Declaration for ACTS Generic detector. More...
struct  bin_associator
 Fill a grid surface finder by bin association. More...
struct  bound_parameters_vector
 Six-component parameter vector expressed in a surface-bound coordinate frame. More...
struct  bound_track_parameters
 Combine the bound track parameter vector with the covariance and associated surface. More...
class  brute_force_collection
 A collection of brute force surface finders, callable by index. More...
struct  brute_force_scan
 struct that holds functionality to shoot a parametrized particle trajectory through a detector. More...
class  caching_navigator
 Navigation class which caches a 'road' through the detector. More...
struct  carbon_gas
 Predefined carbon gas material with tabulated bulk properties. More...
struct  cartesian2D
 Projection into a 2D cartesian coordinate frame. More...
struct  cartesian3D
 Projection into a 3D cartesian coordinate frame. More...
struct  cesium_iodide
 Predefined cesium iodide material with tabulated bulk properties. More...
struct  cesium_iodide_with_ded
 Predefined cesium iodide material with density-effect data. More...
struct  complete
 A complete populator that adds entries to a bin which contains an array of entries until it is completed - ignored afterwards. More...
class  composite_actor
 Composition of actors. More...
class  concentric_cylinder2D
 Geometrical shape of a 2D concentric cylinder. More...
struct  concentric_cylindrical2D
 Projection into a 2D concentric cylindrical frame (No rotation in coordinate transformation). More...
struct  const_container_types
 Bundle container type definitions. More...
struct  constant
 Physical and mathematical constants. More...
struct  constrained_step
 Struct that can be configured with a number of different step sizes by other actors and will then resolve the strictest one. More...
struct  container_types
 Bundle container type definitions. More...
struct  copper
 Predefined copper material with tabulated bulk properties. More...
struct  copper_with_ded
 Predefined copper material with density-effect data. More...
class  cuboid3D
 Geometrical shape of a full 3D cuboid. More...
struct  cuboid_intersector
 Checks if a cuboid bonuding box is intersected by a ray. More...
class  cuboid_portal_generator
 Generates a portal box around a volume that already contains surfaces. More...
struct  curvilinear_frame
 Frame and Jacobian data associated with a free track's curvilinear frame. More...
class  cylinder2D
 Geometrical shape of a 2D cylinder. More...
class  cylinder3D
 Geometrical shape of a full 3D cylinder. More...
struct  cylinder_portal_config
 configuration for the cylinder portal generator More...
class  cylinder_portal_generator
 Generates a portal box around a volume that already contains surfaces. More...
struct  cylindrical2D
 Projection into a 2D cylindrical coordinate frame. More...
struct  cylindrical3D
 Projection into a 3D cylindrical coordinate frame. More...
struct  default_hash
 Default hash function makes use of default node in the hash tree. More...
 Type and storage policy used to assemble a detector from geometry and material components. More...
class  detector_builder
 Provides functionality to build a detray detector volume by volume. More...
struct  detector_traits
 Unified interface to detector types - from any detector type. More...
 Unified interface to detector types - from a metadata type. More...
class  direct_navigator
 Navigator that visits an externally supplied sequence of surfaces in order. More...
struct  eigen
 Define the plugin types. More...
struct  electron
 Electron hypothesis. More...
class  endcap_generator
 Generates surfaces for an endcap layer consisting of two rings. More...
struct  endcap_generator_config
 configuration for the barrel module generator More...
struct  euler_rotation
 Helper struct to perform an euler rotation for a given vector All rotation operations are counterclockwise. More...
class  external_surface
 Surface descriptor used for geometry supplied outside the detector store. More...
class  factory_decorator
 Decorator for the surface factories. More...
struct  fastor
 Define the plugin types. More...
struct  fill_by_bin
 Fill a surface grid using a local bin index of the grid and a payload. More...
struct  fill_by_pos
 Fill a surface grid using the surface translation. More...
struct  free_parameters_vector
 Six-component parameter vector expressed in global Cartesian coordinates. More...
struct  gold
 Predefined gold material with tabulated bulk properties. More...
class  grid_builder
 Build a grid of a certain shape. More...
class  grid_collection
 A collection of grids that can be moved to device as part of the detector. More...
class  grid_collection< detray::grid_impl< axes_t, bin_t, serializer_t > >
 Specialization for detray::grid. More...
class  grid_collection< spatial_grid_impl< grid_t > >
 Accelerator collection specialization for detray::spatial_grid_impl. More...
class  grid_factory
 Provides functionality to instantiate grids and grid collections. More...
class  grid_impl
 An N-dimensional grid for object storage. More...
struct  guided_navigation
 During guided navigation only the next surface should be re-evaluated. More...
class  hash_tree
 Builds a hash tree from the data of an input collection. More...
struct  helium_gas
 Predefined helium gas material with tabulated bulk properties. More...
struct  helix_intersector_impl
 Intersection implementation for detector surfaces using a helix trajectory. More...
struct  helix_intersector_impl< cartesian2D< algebra_t >, algebra_t >
 Intersection implementation for helical trajectories with planar surfaces. More...
struct  helix_intersector_impl< concentric_cylindrical2D< algebra_t >, algebra_t >
 Helix intersector for a concentric cylindrical coordinate frame. More...
struct  helix_intersector_impl< cylindrical2D< algebra_t >, algebra_t >
 Intersection implementation for cylinder surfaces using helical trajectories. More...
struct  helix_intersector_impl< line2D< algebra_t >, algebra_t >
 Intersection implementation for helical trajectories with line surfaces. More...
struct  helix_intersector_impl< polar2D< algebra_t >, algebra_t >
struct  hom_material_config
 Configuration for the homogeneous material generator. More...
class  homogeneous_material_builder
 Build a volume containing surfaces with material. More...
class  homogeneous_material_factory
 Factory class for homogeneous material. More...
class  homogeneous_material_generator
 Surface factory decorator that adds homogeneous material to surfaces. More...
class  homogeneous_volume_material_builder
 Build a volume with homogeneous volume material. More...
struct  hydrogen_gas
 Predefined hydrogen gas material with tabulated bulk properties. More...
struct  hydrogen_liquid
 Predefined hydrogen liquid material with tabulated bulk properties. More...
struct  interaction
 Computes energy loss and multiple scattering in detector material. More...
class  intersection2D
 This class holds the intersection information. More...
struct  intersection_point
 Result of intersector: Point of intersection on a surface. More...
struct  intersection_point< algebra_t, point_t, !intersection::contains_pos >
 Result of intersector: Only contains the distance (production). More...
struct  intersection_point< algebra_t, point_t, intersection::contains_pos >
 Result of intersector: Distance and intersection point (debug). More...
struct  intersection_point_err
 Result of intersector: Distance, intersection point (2D or 3D, local/global) and error estimate on distance (for mask resolution). More...
struct  intersection_record
 Record of a surface intersection along a track. More...
struct  intersector
 Intersection interface for detector surfaces. More...
struct  intersector_base
 Base class for an intersector: Provides mask based call interfaces for convenience. More...
struct  invalid
 Invalid particle hypothesis (PDG number zero). More...
struct  iron
 Predefined iron material with tabulated bulk properties. More...
struct  iron_with_ded
 Predefined iron material with density-effect data. More...
struct  is_ratio_one
 Helper trait to check if the ratio is one. More...
struct  isobutane
 Predefined isobutane material with tabulated bulk properties. More...
class  landau_distribution
 Landau distribution based on CERNLIB G110 Computer Physics Communications 31(1984) 97—111). More...
class  line
 Geometrical shape of a line surface. More...
struct  line2D
 Projection into a line coordinate frame. More...
class  line_stepper
 Straight line stepper implementation. More...
class  mask
 Mask a region on a surface and link it to a volume. More...
struct  material
 Material composition properties and density data used by interactions. More...
class  material_data
 Bind components for material together. More...
class  material_map_builder
 Build the material maps for a given volume. More...
struct  material_map_config
 Configuration for the material map generator. More...
class  material_map_factory
 Factory class for material maps. More...
class  material_map_generator
 Surface factory decorator that adds material maps to surfaces. More...
struct  material_record
 Contains the material parameters and the pathlength. More...
struct  material_rod
 Rod structure to be mapped on the line mask. More...
struct  material_slab
 Slab structure to be mapped on the mask (plane, cylinder). More...
struct  mixture
 Compile-time material mixture type. More...
struct  muon
 Negative muon hypothesis. More...
struct  name_map
 Map volume indices to volume names and vice versa. More...
class  navigator
 The geometry navigation class. More...
class  navigator_base
 Navigation base class - interface towards the propagator. More...
struct  nitrogen_gas
 Predefined nitrogen gas material with tabulated bulk properties. More...
 Detector-specific aliases and storage policy for odd geometry. More...
struct  oxygen_gas
 Predefined oxygen gas material with tabulated bulk properties. More...
struct  oxygen_liquid
 Predefined oxygen liquid material with tabulated bulk properties. More...
struct  pdg_particle
 Particle hypothesis identified by PDG number, mass, and electric charge. More...
class  perigee_extrapolator
 Templated propagator class, using a stepper and a navigator object in succession. More...
struct  perigee_stopper
 Actor that exits from a navigation stream, if it has reached the perigee. More...
struct  photon
 Photon hypothesis. More...
struct  pion_minus
 Negative pion hypothesis. More...
struct  pion_plus
 Positive pion hypothesis. More...
struct  pion_zero
 Neutral pion hypothesis. More...
struct  polar2D
 Projection into a polar coordinate frame. More...
struct  positron
 Positron hypothesis. More...
struct  propagation_record
 Data for a single step. More...
struct  propagation_validation_config
 Configure the Kalman Filter comparison test. More...
struct  propagator
 Templated propagator class, using a stepper and a navigator object in succession. More...
struct  propane
 Predefined propane material with tabulated bulk properties. More...
class  random_track_generator
 Generates track states with random momentum directions. More...
struct  random_track_generator_config
 Configuration for the random track generator. More...
struct  ratio_sum
 Struct to sum over variadic std::ratio. More...
struct  ratio_sum_helper
 Helper struct to sum over variadic std::ratio. More...
struct  ratio_sum_helper< R >
 Base case for a one-element ratio sum. More...
struct  ratio_sum_helper< ratio1, ratio2, ratios... >
 Recursive case that adds two ratios before processing any remainder. More...
struct  ray_intersector_impl
 Intersection implementation for detector surfaces using a ray trajectory. More...
struct  ray_intersector_impl< cartesian2D< algebra_t >, algebra_t, resolve_pos >
 A functor to find intersections between straight line and planar surface. More...
struct  ray_intersector_impl< concentric_cylindrical2D< algebra_t >, algebra_t, resolve_pos >
 A functor to find intersections between a straight line and a cylindrical portal surface. More...
struct  ray_intersector_impl< cylindrical2D< algebra_t >, algebra_t, resolve_pos >
 A functor to find intersections between a ray and a 2D cylinder mask. More...
struct  ray_intersector_impl< line2D< algebra_t >, algebra_t, resolve_pos >
 A functor to find intersections between trajectory and line mask. More...
struct  ray_intersector_impl< polar2D< algebra_t >, algebra_t, resolve_pos >
class  rectangle2D
 Geometrical shape of a rectangle2D. More...
struct  replace
 A replace populator that overrides whatever current content is in the bin with a new entry. More...
class  ring2D
 Geometrical shape of a closed ring. More...
class  rk_stepper
 Runge-Kutta-Nystrom 4th order stepper implementation. More...
struct  scattering_helper
 Generates a random direction after multiple scattering. More...
struct  silicon
 Predefined silicon material with tabulated bulk properties. More...
struct  silicon_tml
 Predefined silicon material using TrackML bulk properties. More...
struct  silicon_with_ded
 Predefined silicon material with density-effect data. More...
class  single3D
 Underlying geometry for a single parameter bound mask. More...
struct  smatrix
 Define the plugin types. More...
class  spatial_grid_impl
 An N-dimensional spatial grid for geometry object searches. More...
struct  step_record
 Data for a single step. More...
struct  stepper_default_policy
 Default navigation update policy for the steppers: If a constraint has been hit, lower the trustlevel to 'fair trust', otherwise stay in 'high trust'. More...
struct  stepper_rk_policy
 Specific navigation policy for the Runge-Kutta stepper: Use the relative amount of step size correction as a measure for the change in direction of the track state. More...
class  surface_data
 Bind transform and mask data together for surface building. More...
class  surface_descriptor
 Templated surface class for detector surfaces and portals. More...
class  surface_factory
 Generates a number of surfaces for a volume (can be portals, passives or sensitives) and fills them into the containers of a volume builder. More...
class  surface_factory_interface
 How to generate surfaces with their corresponding masks and transforms. More...
struct  tel_det_config
 Configure the toy detector. More...
class  telescope_generator
 Generates a number of surfaces along a given direction. More...
 Defines a special telescope test detector type with only rectangle portals and one additional kind of contained module surfaces (mask_shape_t). More...
struct  toy_det_config
 Configure the toy detector. More...
 Detector-specific aliases and storage policy for toy geometry. More...
class  tracking_surface
 Facade for a detray detector surface with extra tracking capabilities. More...
class  tracking_volume
 Facade for a detray detector volume. More...
class  trapezoid2D
 Geometrical shape of a trapezoid2D. More...
struct  tungsten
 Predefined tungsten material with tabulated bulk properties. More...
struct  tuple
 Default tuple type. More...
struct  tuple< T, Ts... >
 Recursive tuple node holding one value and the remaining tuple tail. More...
class  unbounded
 Wraps any shape, but does not enforce boundaries. More...
struct  unconstrained_step
 Struct that represents unconstrained stepping. More...
class  uniform_track_generator
 Generates track states with momentum directions in a uniform angle space. More...
struct  uniform_track_generator_config
 Configuration for the uniform track generator. More...
struct  unit
 Unit conversion factors. More...
struct  unit_vectors
 Build the curvilinear unit basis perpendicular to a three-dimensional direction. More...
class  unmasked
 Generic shape without boundaries. More...
struct  vacuum
 Elements Declaration. More...
struct  vc_aos
 Define the plugin types. More...
struct  vc_soa
 Define the plugin types. More...
struct  void_actor
 Placeholder struct for an action while walking through the graph. More...
struct  void_node_inspector
 Placeholder struct for the implementation of an inspection function that will be executed, when a node is visited. More...
class  volume_builder
 Provides basic functionality to build detector volumes. More...
class  volume_builder_interface
 Interface for volume builders (and volume builder decorators). More...
struct  volume_builder_options
 Options for the volume builder classes. More...
class  volume_decorator
 Decorator for the volume builder. More...
class  volume_descriptor
 The detray detector volume descriptor. More...
class  volume_graph
 Uses the geometry implementations to walk through their graph-like structure breadth first. More...
struct  wire_chamber_config
 Configuration for building a wire chamber detector. More...
 Detector-specific aliases and storage policy for wire chamber geometry. More...
class  wire_layer_generator
 Generates a number of drift cells or straw tubes for a barrel layer. More...
struct  wire_layer_generator_config
 configuration for the wire layer generator More...

Typedefs

template<concepts::algebra algebra_t>
using bound_matrix = dmatrix<algebra_t, e_bound_size, e_bound_size>
 Covariance matrix type for bound track parametrization.
template<concepts::algebra algebra_t>
using bound_to_free_jacobian_submatrix = dmatrix<algebra_t, 3, 2>
 Submatrix for bound to free Jacobians for d(x,y,z) or d(nx, ny, nz) over d(l0, l1) or d(phi, theta).
template<concepts::algebra algebra_t>
using bound_to_free_matrix = dmatrix<algebra_t, e_free_size, e_bound_size>
 Mapping from bound to free track parameters.
template<concepts::algebra algebra_t>
using bound_vector = dmatrix<algebra_t, e_bound_size, 1>
 Vector type for bound track parametrization.
using const_host_container_types = const_container_types<>
 Const-qualified host container policy based on vecmem vectors.
template<typename A, typename T>
using dalgebra = get_algebra_t<A, T>
 Select the algebra backend with value type T.
template<typename value_t, std::size_t kDIM>
using darray = std::array<value_t, kDIM>
 Fixed-size array container.
template<typename A>
using dbool = get_boolean_t<A>
 Boolean type associated with the algebra backend.
using dindex = unsigned int
 Default index type.
using dindex_range = detail::index_range<dindex>
 Index ranges and sequences.
using dindex_sequence = dvector<dindex>
 Compile-time sequence of detector indices.
template<typename A>
using dindex_type = get_index_t<A>
 Index type provided by the algebra backend.
template<typename value_t>
using djagged_vector = vecmem::jagged_vector<value_t>
 Jagged vector container backed by vecmem.
template<typename key_t, typename value_t>
using dmap = std::map<key_t, value_t>
 Ordered key-value map container.
template<typename A, std::size_t R, std::size_t C, typename T = dvalue<A>>
using dmatrix = get_matrix_t<A, R, C, T>
 R by C matrix type for algebra A and value type T.
template<typename index_t = dindex, std::size_t DIM = 3u>
using dmulti_index = detail::multi_index<index_t, DIM>
 Index that consists of multiple subindices.
template<typename A, typename T = dvalue<A>>
using dpoint2D = get_point2D_t<A, T>
 Two-dimensional point type for algebra A and value type T.
template<typename A, typename T = dvalue<A>>
using dpoint3D = get_point3D_t<A, T>
 Three-dimensional point type for algebra A and value type T.
template<typename A, typename T = dvalue<A>>
using dscalar = get_scalar_t<A, T>
 Scalar type for algebra A and value type T.
template<typename A, typename T>
using dsimd = get_simd_t<A, T>
 SIMD type associated with value type T.
using dsized_index_range
 Index range whose size is known at compile time.
template<typename A, typename T = dvalue<A>>
using dtransform3D = get_transform3D_t<A, T>
 Three-dimensional transform type for algebra A and value type T.
template<class... types>
using dtuple = detray::tuple<types...>
 Tuple type used by detray storage and dispatch.
template<typename id_t = dindex, typename index_t = dindex, typename value_t = std::uint_least32_t, value_t id_mask = 0xf0000000, value_t index_mask = ~id_mask>
using dtyped_index
 Link consisting of a type ID and an index.
template<typename A>
using dvalue = get_value_t<A>
 Value scalar type of the algebra backend.
template<typename value_t>
using dvector = vecmem::vector<value_t>
 Vector container backed by vecmem.
template<typename A, typename T = dvalue<A>>
using dvector2D = get_vector2D_t<A, T>
 Two-dimensional vector type for algebra A and value type T.
template<typename A, typename T = dvalue<A>>
using dvector3D = get_vector3D_t<A, T>
 Three-dimensional vector type for algebra A and value type T.
template<concepts::algebra algebra_t>
using free_matrix = dmatrix<algebra_t, e_free_size, e_free_size>
 Covariance matrix type for free track parametrization.
template<concepts::algebra algebra_t>
using free_to_bound_jacobian_submatrix = dmatrix<algebra_t, 2, 3>
 Submatrix for free to bound Jacobians d(l0, l1) or d(phi, theta) over d(x,y,z) or d(nx, ny, nz).
template<concepts::algebra algebra_t>
using free_to_bound_matrix = dmatrix<algebra_t, e_bound_size, e_free_size>
 Mapping from free to bound track parameters.
template<concepts::algebra algebra_t>
using free_to_path_matrix = dmatrix<algebra_t, 1, e_free_size>
 Mapping from free to path.
template<concepts::algebra algebra_t>
using free_track_parameters = free_parameters_vector<algebra_t>
 The free track parameters consist only of the parameter vector.
template<concepts::algebra algebra_t>
using free_vector = dmatrix<algebra_t, e_free_size, 1>
 Vector type for free track parametrization.
template<typename A, typename T>
using get_algebra_t = typename traits::get_algebra<A, T>::algebra_type
 Select the algebra type, optionally replacing its value type.
template<typename A>
using get_boolean_t = typename traits::get_algebra<A>::boolean
 Get the algebra boolean type.
template<typename A>
using get_index_t = typename traits::get_algebra<A>::index_type
 Get the algebra index type.
template<typename A, std::size_t R, std::size_t C, typename T = get_value_t<A>>
using get_matrix_t = typename traits::get_algebra<A, T>::template matrix<R, C>
 Get a matrix type with the requested dimensions and value type.
template<typename A, typename T = get_value_t<A>>
using get_point2D_t = typename traits::get_algebra<A, T>::point2D
 Get the 2D point type, optionally for a replacement value type.
template<typename A, typename T = get_value_t<A>>
using get_point3D_t = typename traits::get_algebra<A, T>::point3D
 Get the 3D point type, optionally for a replacement value type.
template<typename A, typename T = get_value_t<A>>
using get_scalar_t = typename traits::get_algebra<A, T>::scalar
 Get the algebra scalar type, optionally for a replacement value type.
template<typename A, typename T>
using get_simd_t = typename traits::get_algebra<A>::template simd<T>
 Get the algebra SIMD type for a lane value type.
template<typename A, typename T = get_value_t<A>>
using get_transform3D_t = typename traits::get_algebra<A, T>::transform3D
 Get the 3D transform type, optionally for a replacement value type.
template<typename A>
using get_value_t = typename traits::get_algebra<A>::value
 Get the algebra value type.
template<typename A, typename T = get_value_t<A>>
using get_vector2D_t = typename traits::get_algebra<A, T>::vector2D
 Get the 2D vector type, optionally for a replacement value type.
template<typename A, typename T = get_value_t<A>>
using get_vector3D_t = typename traits::get_algebra<A, T>::vector3D
 Get the 3D vector type, optionally for a replacement value type.
template<concepts::algebra algebra_t, typename axes_t, typename bin_t, template< std::size_t > class serializer_t = simple_serializer, typename containers = host_container_types, bool ownership = true>
using grid
 Type alias for easier construction.
template<concepts::detector detector_t, template< class, template< std::size_t > class, typename > class grid_factory_t, typename grid_shape_t, typename bin_t, template< std::size_t > class serializer_t, axis::bounds e_bounds = axis::bounds::e_closed, template< typename, typename > class... binning_ts>
using grid_builder_type
 Grid builder from single components.
template<concepts::grid grid_t>
using grid_factory_type
 Infer a grid factory type from an already completely assembled grid type.
template<typename shape_t, concepts::algebra algebra_t, bool = true>
using helix_intersector
 Select the helix intersector specialization for a shape's local frame.
template<concepts::algebra algebra_t>
using helix_scan = brute_force_scan<detail::helix<algebra_t>>
 Type of a helix scan for the selected algebra.
using host_container_types = container_types<>
 Defining some common types Default host container policy based on vecmem vectors.
using line_circular = line<false>
 Radial crossection, boundary check in polar coordinates.
using line_square = line<true>
 Square crossection, boundary check in cartesian coordinates.
template<concepts::algebra algebra_t>
using material_grid_factory
 How to build material maps of various shapes.
template<concepts::algebra algebra_t, typename shape_t, typename container_t = host_container_types, bool owning = false>
using material_map
 Definition of binned material.
template<typename T1, typename T2>
using pair = tuple<T1, T2>
 A two-element tuple alias.
template<concepts::algebra algebra_t>
using path_to_free_matrix = dmatrix<algebra_t, e_free_size, 1>
 Mapping from path to free.
template<typename shape_t, concepts::algebra algebra_t, bool resolve_pos = false>
using ray_intersector
 Select the ray intersector specialization for a shape's local frame.
template<concepts::algebra algebra_t>
using ray_scan = brute_force_scan<detail::ray<algebra_t>>
 Type of a ray scan for the selected algebra.
template<concepts::arithmetic window_size_t, std::size_t DIM>
using search_window = darray<window_size_t, DIM>
 Size around a query point for which to do the search in an acceleration structure.
template<concepts::algebra algebra_t, typename axes_t, typename bin_t, template< std::size_t > class serializer_t = simple_serializer, typename containers = host_container_types, bool ownership = true>
using spatial_grid
 Spatial grid alias built from coordinate axes and a bin type.
template<typename D>
using detector_metadata_t = typename detector_traits<D>::metadata_type
 Some predefined alias types.
template<typename D>
using detector_host_t = typename detector_traits<D>::host
 Host detector type for metadata type D.
template<typename D>
using detector_device_t = typename detector_traits<D>::device
 Device detector type for metadata type D.
template<typename D>
using detector_view_t = typename detector_traits<D>::view
 Const view type for detector type D.
template<typename D>
using detector_buffer_t = typename detector_traits<D>::buffer
 Buffer type for transferring detector type D.

Enumerations

enum  bound_indices : unsigned int {
  e_bound_loc0 = 0u , e_bound_loc1 = 1u , e_bound_phi = 2u , e_bound_theta = 3u ,
  e_bound_qoverp = 4u , e_bound_time = 5u , e_bound_size
}
 Components of a bound track parameters vector.
enum  free_indices : unsigned int {
  e_free_pos0 = 0u , e_free_pos1 = e_free_pos0 + 1u , e_free_pos2 = e_free_pos0 + 2u , e_free_time = 3u ,
  e_free_dir0 = 4u , e_free_dir1 = e_free_dir0 + 1u , e_free_dir2 = e_free_dir0 + 2u , e_free_qoverp = 7u ,
  e_free_size
}
 Components of a free track parameters vector. More...
enum class  material_state { e_solid = 0 , e_liquid = 1 , e_gas = 2 , e_unknown = 3 }
 Material State.
enum class  rk_stepper_flags : std::uint32_t { e_allow_covariance_transport = 1 , e_allow_field_gradient = 2 }
 Optional capabilities enabled in an RK stepper. More...
enum class  surface_id : std::uint_least8_t {
  e_portal = 0u , e_sensitive = 1u , e_passive = 2u , e_unknown = 3u ,
  e_all = e_unknown
}
 surface type, resolved during navigation. More...
enum class  volume_id : std::uint_least8_t {
  e_cylinder = 0u , e_rectangle = 1u , e_trapezoid = 2u , e_cone = 3u ,
  e_cuboid = 4u , e_unknown = 5u
}
 Shape of a detector volume. More...

Functions

template<concepts::algebra algebra_t, typename mask_shape_t = rectangle2D, template< typename > class trajectory_t = detail::ray>
auto build_telescope_detector (vecmem::memory_resource &resource, const tel_det_config< algebra_t, mask_shape_t, trajectory_t > &cfg=tel_det_config< algebra_t, mask_shape_t, trajectory_t >{ 20.f *unit< dscalar< algebra_t > >::mm, 20.f *unit< dscalar< algebra_t > >::mm})
 Builds a detray geometry that contains only one volume with one type of surfaces.
template<concepts::algebra algebra_t>
auto build_toy_detector (vecmem::memory_resource &resource, toy_det_config< dscalar< algebra_t > > cfg={})
 Builds a detray geometry that contains the innermost tml layers.
template<concepts::algebra algebra_t, typename wire_shape_t>
auto build_wire_chamber (vecmem::memory_resource &resource, wire_chamber_config< dscalar< algebra_t >, wire_shape_t > &cfg)
 Build a wire chamber detector.
template<concepts::scalar scalar_t>
constexpr pdg_particle< scalar_t > charge_conjugation (const pdg_particle< scalar_t > &ptc)
 Apply the charge conjugation operator to a particle hypothesis ptc.
bool check_covfie_file (const std::string &file_name)
 Function that reads the first 4 bytes of a potential bfield file and checks that it contains data for a covfie field.
template<concepts::detector detector_t, concepts::point point_t>
constexpr dscalar< typename detector_t::algebra_type > cos_angle (const typename detector_t::geometry_context &ctx, geometry::surface< detector_t > sf, const dvector3D< typename detector_t::algebra_type > &dir, const point_t &loc)
 Helper to get the incidence angle of a direction vector on a surface.
template<typename T, concepts::vector3D vector3_t>
bfield::const_field_t< T > create_const_field (const vector3_t &B)
template<typename T>
bfield::inhom_field_t< T > create_inhom_field ()
template<concepts::scalar scalar_t, typename function_t>
bool expand_bracket (const scalar_t a, const scalar_t b, function_t &f, darray< scalar_t, 2 > &bracket, const scalar_t k=1.f)
 Try to find a bracket around a root.
template<std::random_access_iterator rand_iter_t, std::sentinel_for< rand_iter_t > sentinel_t, class Predicate>
auto find_if (rand_iter_t first, sentinel_t last, Predicate &&comp)
 find_if implementation for host/device (single thread)
template<typename U, typename T, typename... Ts>
const auto & get (const detray::tuple< T, Ts... > &t) noexcept
 Get a tuple element by type from a const tuple.
template<std::size_t I, typename... Ts>
const auto & get (const detray::tuple< Ts... > &t) noexcept
 Get a tuple element by index from a const tuple.
template<typename U, typename T, typename... Ts>
auto & get (detray::tuple< T, Ts... > &t) noexcept
 Get a tuple element by type from a mutable tuple.
template<std::size_t I, typename... Ts>
auto & get (detray::tuple< Ts... > &t) noexcept
 Get a tuple element by index from a mutable tuple.
template<std::forward_iterator forw_iter_t, std::sentinel_for< forw_iter_t > sentinel_t, typename Value>
auto lower_bound (forw_iter_t first, sentinel_t last, const Value &value)
 lower_bound implementation for host/device
template<typename T1, typename T2>
constexpr detray::pair< std::decay_t< T1 >, std::decay_t< T2 > > make_pair (T1 &&v1, T2 &&v2)
 Construct a pair by decaying and forwarding its two arguments.
template<typename... Ts>
constexpr detray::tuple< std::decay_t< Ts >... > make_tuple (Ts &&...vs)
 Construct a tuple by decaying and forwarding its arguments.
template<std::size_t I = 0u, typename store_t>
std::size_t n_grids (const store_t &store, std::size_t n=0u)
 Count grid collections in a detector store.
template<concepts::detector detector_t>
std::size_t n_material_maps (const detector_t &det)
template<concepts::detector detector_t>
std::size_t n_material_rods (const detector_t &det)
template<concepts::detector detector_t>
std::size_t n_material_slabs (const detector_t &det)
template<concepts::detector detector_t>
std::size_t n_passives (const detector_t &det)
template<concepts::detector detector_t>
std::size_t n_portals (const detector_t &det)
template<concepts::detector detector_t>
std::size_t n_sensitives (const detector_t &det)
template<concepts::detector detector_t>
std::size_t n_surface_grids (const detector_t &det)
template<typename scalar_t, typename function_t>
std::pair< scalar_t, scalar_t > newton_raphson (function_t &evaluate_func, scalar_t s, const scalar_t convergence_tolerance=1.f *unit< scalar_t >::um, const std::size_t max_n_tries=1000u, const scalar_t max_path=5.f *unit< scalar_t >::m)
 Find a root using the Newton-Raphson algorithm.
template<concepts::scalar scalar_t, typename function_t>
std::pair< scalar_t, scalar_t > newton_raphson_safe (function_t &evaluate_func, scalar_t s, const scalar_t convergence_tolerance=1.f *unit< scalar_t >::um, const std::size_t max_n_tries=1000u, const scalar_t max_path=5.f *unit< scalar_t >::m)
 Find a root using the Newton-Raphson and Bisection algorithms.
std::ostream & operator<< (std::ostream &os, surface_id sid)
 Write the surface category identifier using its enumerator name.
std::ostream & operator<< (std::ostream &os, volume_id vid)
 Write the volume shape identifier using its enumerator name.
template<typename vector_t>
requires (concepts::vector<vector_t> || concepts::point<vector_t>)
std::ostream & operator<< (std::ostream &out, const vector_t &v)
 Print a generic vector or point v.
template<std::size_t N, concepts::scalar S>
constexpr bool operator== (const Fastor::Tensor< S, N > &lhs, const Fastor::Tensor< S, N > &rhs)
 Compare two Fastor vectors component-wise for exact equality.
template<concepts::detector detector_t>
void prefill_detector (detector_t &d, typename detector_t::geometry_context ctx)
 Adds a few surfaces to the detector for testing the builder code on non-empty detectors.
template<concepts::detector detector_t, typename bfield_view_t>
bool propagation_validation (const detector_t &det, const typename detector_t::name_map &names, const std::optional< bfield_view_t > &bfield, const propagation_validation_config< typename detector_t::scalar_type > &cfg, const std::vector< free_track_parameters< typename detector_t::algebra_type > > &tracks, std::vector< dvector< intersection_record< detector_t > > > &truth_traces_fw)
 Run a detray propagation and compare the surfaces that were encountered against a reference of truth tracks givben as intersection traces.
template<typename bfield_t>
bfield_t read_bfield (const std::string &file_name)
 function that reads a covfie field from file
template<typename intersection_t, typename trajectory_t, concepts::algebra algebra_t, concepts::point point_t, typename surface_descr_t, typename mask_t, concepts::transform3D transform3_t, concepts::scalar scalar_t>
constexpr void resolve_mask (intersection_t &is, const trajectory_t &traj, const intersection_point< algebra_t, point_t, intersection::contains_pos > &ip, const surface_descr_t sf_desc, const mask_t &mask, const transform3_t &trf, const intersection::config &cfg={}, const scalar_t external_mask_tolerance=0.f)
 Fill an intersection with the result of the intersection alg.
template<typename intersection_t, concepts::algebra algebra_t, typename surface_descr_t, typename mask_t, typename trajectory_t, concepts::transform3D transform3_t, concepts::scalar scalar_t>
constexpr void resolve_mask (intersection_t &is, const trajectory_t &traj, const intersection_point_err< algebra_t > &ip, const surface_descr_t sf_desc, const mask_t &mask, const transform3_t &trf, const intersection::config &intr_cfg, const scalar_t=0.f)
 Fill an intersection with the result of the root finding.
template<std::random_access_iterator rand_iter_t, std::sentinel_for< rand_iter_t > sentinel_t>
void sequential_sort (rand_iter_t first, sentinel_t last)
 sequential (single thread) sort function
template<concepts::algebra algebra_t, typename shape_t, template< typename > class trajectory_t>
 tel_det_config (const mask< shape_t, algebra_t > &, const trajectory_t< algebra_t > &) -> tel_det_config< algebra_t, shape_t, trajectory_t >
 Deduce the type of telescope config.
template<typename... Ts>
constexpr detray::tuple< Ts &... > tie (Ts &...args)
 Create a tuple of references to the supplied objects.
template<concepts::detector detector_t, typename descr_t>
 tracking_surface (const detector_t &, const descr_t &) -> tracking_surface< detector_t >
 Deduce the detector type from a detector and surface descriptor pair.
template<concepts::detector detector_t>
 tracking_surface (const detector_t &, const geometry::identifier) -> tracking_surface< detector_t >
 Deduce the detector type when wrapping an existing surface.
template<concepts::detector detector_t>
 tracking_surface (const geometry::surface< const detector_t >) -> tracking_surface< detector_t >
 Deduce the detector type from a const geometry surface.
template<concepts::detector detector_t>
 tracking_surface (const geometry::surface< detector_t >) -> tracking_surface< detector_t >
 Deduce the detector type from a geometry identifier.
template<concepts::scalar scalar_t, typename track_t>
constexpr pdg_particle< scalar_t > update_particle_hypothesis (const pdg_particle< scalar_t > &ptc, const track_t &params)
 Select the hypothesis matching the sign of the track charge over momentum.
template<std::forward_iterator forw_iter_t, std::sentinel_for< forw_iter_t > sentinel_t, typename Value>
auto upper_bound (forw_iter_t first, sentinel_t last, const Value &value)
 upper_bound implementation for host/device
Operators on @c algebra::array::storage_type
template<template< typename, std::size_t > class array_t, concepts::scalar scalar1_t, concepts::scalar scalar2_t>
constexpr array_t< scalar1_t, 2 > operator* (const array_t< scalar1_t, 2 > &a, scalar2_t s)
 Multiply an array-backed vector by a scalar.
template<template< typename, std::size_t > class array_t, concepts::scalar scalar_t>
constexpr array_t< scalar_t, 2 > operator- (const array_t< scalar_t, 2 > &a, const array_t< scalar_t, 2 > &b)
 Subtract array-backed vectors component-wise.
template<template< typename, std::size_t > class array_t, concepts::scalar scalar_t>
constexpr array_t< scalar_t, 2 > operator+ (const array_t< scalar_t, 2 > &a, const array_t< scalar_t, 2 > &b)
 Add array-backed vectors component-wise.
Operators on @c algebra::storage::vector types
template<template< typename, std::size_t > class array_t, concepts::scalar scalar_t, std::size_t N>
constexpr array_t< scalar_t, N > operator* (const array_t< scalar_t, N > &a, scalar_t s) noexcept
 Multiply an SoA vector by a scalar or another compatible vector.
template<template< typename, std::size_t > class array_t, concepts::scalar scalar_t, std::size_t N>
constexpr array_t< scalar_t, N > operator/ (const array_t< scalar_t, N > &a, const array_t< scalar_t, N > &b) noexcept
 Divide compatible SoA vectors component-wise.
template<template< typename, std::size_t > class array_t, concepts::scalar scalar_t, std::size_t N>
constexpr array_t< scalar_t, N > operator- (const array_t< scalar_t, N > &a, const array_t< scalar_t, N > &b) noexcept
 Subtract compatible SoA vectors component-wise.
template<template< typename, std::size_t > class array_t, concepts::scalar scalar_t, std::size_t N>
constexpr array_t< scalar_t, N > operator+ (const array_t< scalar_t, N > &a, const array_t< scalar_t, N > &b) noexcept
 Add compatible SoA vectors component-wise.

Variables

constexpr dindex dindex_invalid = detail::invalid_value<dindex>()
 Global invalid index definition.
template<class R>
constexpr bool is_ratio_one_v = is_ratio_one<R>::value
 True when the supplied ratio is exactly one.

Detailed Description

Detray include(s).

Detray library, part of the ACTS project (R&D line).

(c) 2025 CERN for the benefit of the ACTS project

Mozilla Public License Version 2.0

Typedef Documentation

◆ detector_metadata_t

template<typename D>
using detray::detector_metadata_t = typename detector_traits<D>::metadata_type

Some predefined alias types.

Metadata type associated with detector type D.

◆ dsized_index_range

Initial value:
detail::index_range<dindex, detail::sized_index_range>

Index range whose size is known at compile time.

◆ dtyped_index

template<typename id_t = dindex, typename index_t = dindex, typename value_t = std::uint_least32_t, value_t id_mask = 0xf0000000, value_t index_mask = ~id_mask>
using detray::dtyped_index
Initial value:
detail::typed_index<id_t, index_t, value_t, id_mask, index_mask>

Link consisting of a type ID and an index.

◆ grid

template<concepts::algebra algebra_t, typename axes_t, typename bin_t, template< std::size_t > class serializer_t = simple_serializer, typename containers = host_container_types, bool ownership = true>
using detray::grid
Initial value:
simple_serializer>
An N-dimensional grid for object storage.
Definition grid.hpp:38

Type alias for easier construction.

◆ grid_builder_type

template<concepts::detector detector_t, template< class, template< std::size_t > class, typename > class grid_factory_t, typename grid_shape_t, typename bin_t, template< std::size_t > class serializer_t, axis::bounds e_bounds = axis::bounds::e_closed, template< typename, typename > class... binning_ts>
using detray::grid_builder_type
Initial value:
detector_t,
typename grid_factory_t<bin_t, serializer_t,
typename detector_t::algebra_type>::
template grid_type<axes<grid_shape_t, e_bounds, binning_ts...>>,
grid_factory_t<bin_t, serializer_t, typename detector_t::algebra_type>>
Build a grid of a certain shape.
Definition grid_builder.hpp:41

Grid builder from single components.

◆ grid_factory_type

template<concepts::grid grid_t>
using detray::grid_factory_type
Initial value:
grid_factory<typename grid_t::bin_type,
simple_serializer ,
typename grid_t::algebra_type>
Provides functionality to instantiate grids and grid collections.
Definition grid_factory.hpp:50

Infer a grid factory type from an already completely assembled grid type.

◆ helix_intersector

template<typename shape_t, concepts::algebra algebra_t, bool = true>
using detray::helix_intersector
Initial value:
typename shape_t::template local_frame_type<algebra_t>, algebra_t>>
Intersection implementation for detector surfaces using a helix trajectory.
Definition helix_intersector.hpp:29
Base class for an intersector: Provides mask based call interfaces for convenience.
Definition intersector_base.hpp:33

Select the helix intersector specialization for a shape's local frame.

◆ material_grid_factory

template<concepts::algebra algebra_t>
using detray::material_grid_factory
Initial value:

How to build material maps of various shapes.

◆ material_map

template<concepts::algebra algebra_t, typename shape_t, typename container_t = host_container_types, bool owning = false>
using detray::material_map
Initial value:
simple_serializer, container_t, owning>
Bin with a single entry.
Definition grid_bins.hpp:25
grid_impl< coordinate_axes< axes_t, algebra_t, ownership, containers >, bin_t, simple_serializer > grid
Type alias for easier construction.
Definition grid.hpp:422

Definition of binned material.

◆ ray_intersector

template<typename shape_t, concepts::algebra algebra_t, bool resolve_pos = false>
using detray::ray_intersector
Initial value:
algebra_t, resolve_pos>>
Intersection implementation for detector surfaces using a ray trajectory.
Definition ray_intersector.hpp:31

Select the ray intersector specialization for a shape's local frame.

◆ search_window

template<concepts::arithmetic window_size_t, std::size_t DIM>
using detray::search_window = darray<window_size_t, DIM>

Size around a query point for which to do the search in an acceleration structure.

Template Parameters
window_size_ttype that defines the window size (e.g. distance or number of bins)
DIMnumber of dimensions of the window boundaries

◆ spatial_grid

template<concepts::algebra algebra_t, typename axes_t, typename bin_t, template< std::size_t > class serializer_t = simple_serializer, typename containers = host_container_types, bool ownership = true>
using detray::spatial_grid
Initial value:
simple_serializer>>
An N-dimensional spatial grid for geometry object searches.
Definition spatial_grid.hpp:34

Spatial grid alias built from coordinate axes and a bin type.

Template Parameters
algebra_tAlgebra policy used by the grid calculations.
axes_tCoordinate-axis implementation.
bin_tBin storage type.
serializer_tSerializer used for axis indexing.
containersContainer family used for storage.
ownershipWhether the grid owns its storage.

Enumeration Type Documentation

◆ free_indices

enum detray::free_indices : unsigned int

Components of a free track parameters vector.

To be used to access components by named indices instead of just numbers. This must be a regular enum and not a scoped enum class to allow implicit conversion to an integer. The enum value are thus visible directly in namespace Acts and are prefixed to avoid naming collisions.

◆ rk_stepper_flags

enum class detray::rk_stepper_flags : std::uint32_t
strong

Optional capabilities enabled in an RK stepper.

Enumerator
e_allow_covariance_transport 

Allow transport of the track covariance.

e_allow_field_gradient 

Allow use of magnetic-field gradients in Jacobian transport.

◆ surface_id

enum class detray::surface_id : std::uint_least8_t
strong

surface type, resolved during navigation.

sensitive: can provide measurements and have material. passive: no measurements, but can have material. portal: boundary surface between two detector volumes, can have material.

◆ volume_id

enum class detray::volume_id : std::uint_least8_t
strong

Shape of a detector volume.

cylinder: cylinder and two disc portals (shape: cylinder2D or cylinder3D). cone: a cone portal and a disc portal (shape: missing). rectangle: six rectangular portals that form a box (shape: cuboid3D). trapezoid: six trapezoid portals (shape: cuboid3D). cuboid: general cuboid form, excluding the previous ones (shape: cuboid3D).

Function Documentation

◆ build_telescope_detector()

template<concepts::algebra algebra_t, typename mask_shape_t = rectangle2D, template< typename > class trajectory_t = detail::ray>
auto detray::build_telescope_detector ( vecmem::memory_resource & resource,
const tel_det_config< algebra_t, mask_shape_t, trajectory_t > & cfg = tel_det_config<algebra_t, mask_shape_t, trajectory_t>{ 20.f * unit<dscalar<algebra_t>>::mm, 20.f * unit<dscalar<algebra_t>>::mm} )

Builds a detray geometry that contains only one volume with one type of surfaces.

The detector is auto-constructed by following a trajectory through space, along which the surfaces are placed. The portals are built from the bounding box around the sensors.

Template Parameters
mask_shape_tthe type of mask for the telescope surfaces
trajectory_tthe type of the pilot trajectory (ray/helix)
Parameters
resourcethe memory resource for the detector containers
cfgconfiguration struct of the telescope detector
Returns
a complete detector object

◆ build_toy_detector()

template<concepts::algebra algebra_t>
auto detray::build_toy_detector ( vecmem::memory_resource & resource,
toy_det_config< dscalar< algebra_t > > cfg = {} )

Builds a detray geometry that contains the innermost tml layers.

The number of barrel and endcap layers can be chosen, but all barrel layers should be present when an endcap detector is built to have the barrel region radius match the endcap diameter.

Parameters
resourcevecmem memory resource to use for container allocations
cfgtoy detector configuration
Returns
a complete detector object

◆ build_wire_chamber()

template<concepts::algebra algebra_t, typename wire_shape_t>
auto detray::build_wire_chamber ( vecmem::memory_resource & resource,
wire_chamber_config< dscalar< algebra_t >, wire_shape_t > & cfg )

Build a wire chamber detector.

Parameters
resourcememory resource used for detector allocations
cfgwire chamber configuration
Returns
the detector and its name map

◆ charge_conjugation()

template<concepts::scalar scalar_t>
pdg_particle< scalar_t > detray::charge_conjugation ( const pdg_particle< scalar_t > & ptc)
constexpr

Apply the charge conjugation operator to a particle hypothesis ptc.

Parameters
ptcParticle hypothesis to conjugate.
Returns
Hypothesis with reversed charge and PDG sign for charged particles.

◆ check_covfie_file()

bool detray::check_covfie_file ( const std::string & file_name)

Function that reads the first 4 bytes of a potential bfield file and checks that it contains data for a covfie field.

Parameters
file_namepath to the field file
Returns
whether the file contains the covfie magic header

◆ cos_angle()

template<concepts::detector detector_t, concepts::point point_t>
dscalar< typename detector_t::algebra_type > detray::cos_angle ( const typename detector_t::geometry_context & ctx,
geometry::surface< detector_t > sf,
const dvector3D< typename detector_t::algebra_type > & dir,
const point_t & loc )
constexpr

Helper to get the incidence angle of a direction vector on a surface.

Parameters
ctxthe geometric context
sfthe geometric surface
dirnormalized direction vector (e.g. direction of a track)
locthe local/bound position on the surface
Returns
the cosine of the incidence angle given a local/bound position

◆ create_const_field()

template<typename T, concepts::vector3D vector3_t>
bfield::const_field_t< T > detray::create_const_field ( const vector3_t & B)
Returns
a constant covfie field constructed from the field vector B
Parameters
Bfield vector used to construct the constant field

◆ create_inhom_field()

template<typename T>
bfield::inhom_field_t< T > detray::create_inhom_field ( )
Returns
an inhomogeneous covfie field read from the configured file

◆ expand_bracket()

template<concepts::scalar scalar_t, typename function_t>
bool detray::expand_bracket ( const scalar_t a,
const scalar_t b,
function_t & f,
darray< scalar_t, 2 > & bracket,
const scalar_t k = 1.f )

Try to find a bracket around a root.

Parameters
[in]alower initial boundary
[in]bupper initial boundary
[in]ffunction for which to find the root
[out]bracketbracket around the root
[in]kscale factor with which to widen the bracket at every step
See also
Numerical Recepes pp. 445
Returns
whether a bracket was found

◆ find_if()

template<std::random_access_iterator rand_iter_t, std::sentinel_for< rand_iter_t > sentinel_t, class Predicate>
auto detray::find_if ( rand_iter_t first,
sentinel_t last,
Predicate && comp )

find_if implementation for host/device (single thread)

Template Parameters
rand_iter_trandom-access iterator over the elements
sentinel_tsentinel marking the end of the range
Predicatecallable returning true for a matching element
Parameters
firstiterator to the first element
lastsentinel after the final element
comppredicate applied to each element
Returns
iterator to the first match, or last when no element matches

◆ get() [1/4]

template<typename U, typename T, typename... Ts>
const auto & detray::get ( const detray::tuple< T, Ts... > & t)
noexcept

Get a tuple element by type from a const tuple.

Template Parameters
UType of the requested element.
Parameters
tTuple containing the element.
Returns
A const reference to the selected element.

◆ get() [2/4]

template<std::size_t I, typename... Ts>
const auto & detray::get ( const detray::tuple< Ts... > & t)
noexcept

Get a tuple element by index from a const tuple.

Template Parameters
IZero-based element index.
Parameters
tTuple to access.
Returns
A const reference to the selected element.

◆ get() [3/4]

template<typename U, typename T, typename... Ts>
auto & detray::get ( detray::tuple< T, Ts... > & t)
noexcept

Get a tuple element by type from a mutable tuple.

Template Parameters
UType of the requested element.
Parameters
tTuple containing the element.
Returns
A mutable reference to the selected element.

◆ get() [4/4]

template<std::size_t I, typename... Ts>
auto & detray::get ( detray::tuple< Ts... > & t)
noexcept

Get a tuple element by index from a mutable tuple.

Template Parameters
IZero-based element index.
Parameters
tTuple to access.
Returns
A mutable reference to the selected element.

◆ lower_bound()

template<std::forward_iterator forw_iter_t, std::sentinel_for< forw_iter_t > sentinel_t, typename Value>
auto detray::lower_bound ( forw_iter_t first,
sentinel_t last,
const Value & value )

lower_bound implementation for host/device

Template Parameters
forw_iter_tforward iterator over the sorted elements
sentinel_tsentinel marking the end of the range
Valuetype of the lookup value
Parameters
firstiterator to the first element
lastsentinel after the final element
valuevalue to locate
Returns
iterator to the first element not less than value

◆ make_pair()

template<typename T1, typename T2>
detray::pair< std::decay_t< T1 >, std::decay_t< T2 > > detray::make_pair ( T1 && v1,
T2 && v2 )
constexpr

Construct a pair by decaying and forwarding its two arguments.

Parameters
v1First value to store.
v2Second value to store.
Returns
A pair containing the decayed argument types.

◆ make_tuple()

template<typename... Ts>
detray::tuple< std::decay_t< Ts >... > detray::make_tuple ( Ts &&... vs)
constexpr

Construct a tuple by decaying and forwarding its arguments.

Parameters
vsValues to store in the tuple.
Returns
A tuple containing the decayed argument types.

◆ n_grids()

template<std::size_t I = 0u, typename store_t>
std::size_t detray::n_grids ( const store_t & store,
std::size_t n = 0u )

Count grid collections in a detector store.

Template Parameters
Icurrent compile-time collection index
Parameters
storestore whose collections are inspected
nrunning count accumulated by recursive calls
Returns
the total number of grids in a detector store store

◆ n_material_maps()

template<concepts::detector detector_t>
std::size_t detray::n_material_maps ( const detector_t & det)
Returns
the total number of material maps in the detector
Parameters
det

◆ n_material_rods()

template<concepts::detector detector_t>
std::size_t detray::n_material_rods ( const detector_t & det)
Returns
the total number of material rods in the detector
Parameters
det

◆ n_material_slabs()

template<concepts::detector detector_t>
std::size_t detray::n_material_slabs ( const detector_t & det)
Returns
the total number of material slabs outside of material maps in the detector
Parameters
det

◆ n_passives()

template<concepts::detector detector_t>
std::size_t detray::n_passives ( const detector_t & det)
Returns
the total number of passive surfaces in the detector
Parameters
det

◆ n_portals()

template<concepts::detector detector_t>
std::size_t detray::n_portals ( const detector_t & det)
Returns
the total number of portals in the detector
Parameters
det

◆ n_sensitives()

template<concepts::detector detector_t>
std::size_t detray::n_sensitives ( const detector_t & det)
Returns
the total number of sensitive surfaces in the detector
Parameters
det

◆ n_surface_grids()

template<concepts::detector detector_t>
std::size_t detray::n_surface_grids ( const detector_t & det)
Returns
the total number of surface grids in the detector
Parameters
det

◆ newton_raphson()

template<typename scalar_t, typename function_t>
std::pair< scalar_t, scalar_t > detray::newton_raphson ( function_t & evaluate_func,
scalar_t s,
const scalar_t convergence_tolerance = 1.f * unit<scalar_t>::um,
const std::size_t max_n_tries = 1000u,
const scalar_t max_path = 5.f * unit<scalar_t>::m )

Find a root using the Newton-Raphson algorithm.

Parameters
evaluate_funcevaluate the function and its derivative
sinitial guess for the root
convergence_tolerancemax distance between from root before finished
max_n_triesmax number of Newton-Bisection step to try
max_pathdon't consider root if it is too far away
See also
Numerical Recepes pp. 445
Returns
pathlength to root and the last step size

◆ newton_raphson_safe()

template<concepts::scalar scalar_t, typename function_t>
std::pair< scalar_t, scalar_t > detray::newton_raphson_safe ( function_t & evaluate_func,
scalar_t s,
const scalar_t convergence_tolerance = 1.f * unit<scalar_t>::um,
const std::size_t max_n_tries = 1000u,
const scalar_t max_path = 5.f * unit<scalar_t>::m )

Find a root using the Newton-Raphson and Bisection algorithms.

Parameters
evaluate_funcevaluate the function and its derivative
sinitial guess for the root
convergence_tolerancemax distance between from root before finished
max_n_triesmax number of Newton-Bisection step to try
max_pathdon't consider root if it is too far away
See also
Numerical Recepes pp. 445
Returns
pathlength to root and the last step size

◆ operator*() [1/2]

template<template< typename, std::size_t > class array_t, concepts::scalar scalar1_t, concepts::scalar scalar2_t>
array_t< scalar1_t, 2 > detray::algebra::array::operator* ( const array_t< scalar1_t, 2 > & a,
scalar2_t s )
constexpr

Multiply an array-backed vector by a scalar.

Parameters
aVector to scale.
sScalar multiplier.
Returns
The scaled vector expression.

◆ operator*() [2/2]

template<template< typename, std::size_t > class array_t, concepts::scalar scalar_t, std::size_t N>
array_t< scalar_t, N > detray::algebra::storage::operator* ( const array_t< scalar_t, N > & a,
scalar_t s )
constexprnoexcept

Multiply an SoA vector by a scalar or another compatible vector.

Parameters
aFirst vector operand when multiplying two vectors.
sScalar multiplier when multiplying by a scalar.
Returns
The component-wise product or scaled vector.

◆ operator+() [1/2]

template<template< typename, std::size_t > class array_t, concepts::scalar scalar_t>
array_t< scalar_t, 2 > detray::algebra::array::operator+ ( const array_t< scalar_t, 2 > & a,
const array_t< scalar_t, 2 > & b )
constexpr

Add array-backed vectors component-wise.

Parameters
aLeft-hand vector.
bRight-hand vector.
Returns
The component-wise sum.

◆ operator+() [2/2]

template<template< typename, std::size_t > class array_t, concepts::scalar scalar_t, std::size_t N>
array_t< scalar_t, N > detray::algebra::storage::operator+ ( const array_t< scalar_t, N > & a,
const array_t< scalar_t, N > & b )
constexprnoexcept

Add compatible SoA vectors component-wise.

Parameters
aLeft-hand vector.
bRight-hand vector.
Returns
The component-wise sum.

◆ operator-() [1/2]

template<template< typename, std::size_t > class array_t, concepts::scalar scalar_t>
array_t< scalar_t, 2 > detray::algebra::array::operator- ( const array_t< scalar_t, 2 > & a,
const array_t< scalar_t, 2 > & b )
constexpr

Subtract array-backed vectors component-wise.

Parameters
aLeft-hand vector.
bRight-hand vector.
Returns
The component-wise difference.

◆ operator-() [2/2]

template<template< typename, std::size_t > class array_t, concepts::scalar scalar_t, std::size_t N>
array_t< scalar_t, N > detray::algebra::storage::operator- ( const array_t< scalar_t, N > & a,
const array_t< scalar_t, N > & b )
constexprnoexcept

Subtract compatible SoA vectors component-wise.

Parameters
aLeft-hand vector.
bRight-hand vector.
Returns
The component-wise difference.

◆ operator/()

template<template< typename, std::size_t > class array_t, concepts::scalar scalar_t, std::size_t N>
array_t< scalar_t, N > detray::algebra::storage::operator/ ( const array_t< scalar_t, N > & a,
const array_t< scalar_t, N > & b )
constexprnoexcept

Divide compatible SoA vectors component-wise.

Parameters
aNumerator vector.
bDenominator vector.
Returns
The component-wise quotient.

◆ operator<<() [1/3]

std::ostream & detray::operator<< ( std::ostream & os,
surface_id sid )

Write the surface category identifier using its enumerator name.

Parameters
osoutput stream
sidsurface identifier to print
Returns
the output stream

◆ operator<<() [2/3]

std::ostream & detray::operator<< ( std::ostream & os,
volume_id vid )

Write the volume shape identifier using its enumerator name.

Parameters
osoutput stream
vidvolume identifier to print
Returns
the output stream

◆ operator<<() [3/3]

template<typename vector_t>
requires (concepts::vector<vector_t> || concepts::point<vector_t>)
std::ostream & detray::algebra::operator<< ( std::ostream & out,
const vector_t & v )

Print a generic vector or point v.

Parameters
outStream receiving the formatted value.
vVector or point to print.
Returns
The output stream.

◆ operator==()

template<std::size_t N, concepts::scalar S>
bool detray::operator== ( const Fastor::Tensor< S, N > & lhs,
const Fastor::Tensor< S, N > & rhs )
constexpr

Compare two Fastor vectors component-wise for exact equality.

Parameters
lhsLeft-hand vector.
rhsRight-hand vector.
Returns
Whether all elements compare equal.

◆ prefill_detector()

template<concepts::detector detector_t>
void detray::prefill_detector ( detector_t & d,
typename detector_t::geometry_context ctx )

Adds a few surfaces to the detector for testing the builder code on non-empty detectors.

Parameters
dDetector to populate.
ctxGeometry context used while building the surfaces.

◆ propagation_validation()

template<concepts::detector detector_t, typename bfield_view_t>
bool detray::propagation_validation ( const detector_t & det,
const typename detector_t::name_map & names,
const std::optional< bfield_view_t > & bfield,
const propagation_validation_config< typename detector_t::scalar_type > & cfg,
const std::vector< free_track_parameters< typename detector_t::algebra_type > > & tracks,
std::vector< dvector< intersection_record< detector_t > > > & truth_traces_fw )

Run a detray propagation and compare the surfaces that were encountered against a reference of truth tracks givben as intersection traces.

Parameters
detthe detector
namesthe detector and volume names
bfieldthe magnetic field representation
cfgthe full test configuration
tracksthe initial particle vertices as free track parameters
truth_traces_fwthe reference data for each encountered module
Returns
whether the validation was successful

◆ read_bfield()

template<typename bfield_t>
bfield_t detray::read_bfield ( const std::string & file_name)

function that reads a covfie field from file

Parameters
file_namepath to the field file
Returns
the field read from the file

◆ resolve_mask() [1/2]

template<typename intersection_t, typename trajectory_t, concepts::algebra algebra_t, concepts::point point_t, typename surface_descr_t, typename mask_t, concepts::transform3D transform3_t, concepts::scalar scalar_t>
void detray::resolve_mask ( intersection_t & is,
const trajectory_t & traj,
const intersection_point< algebra_t, point_t, intersection::contains_pos > & ip,
const surface_descr_t sf_desc,
const mask_t & mask,
const transform3_t & trf,
const intersection::config & cfg = {},
const scalar_t external_mask_tolerance = 0.f )
constexpr

Fill an intersection with the result of the intersection alg.

Parameters
isIntersection object to populate.
trajTrajectory used to evaluate the global intersection position.
ipGeometric intersection candidate returned by the intersector.
sf_descSurface descriptor associated with the mask.
maskMask used to classify the candidate's local position.
trfTransform from the surface frame to the global frame.
cfgTolerances and path cutoff used for classification.
external_mask_toleranceAdditional tolerance for the mask boundary.

◆ resolve_mask() [2/2]

template<typename intersection_t, concepts::algebra algebra_t, typename surface_descr_t, typename mask_t, typename trajectory_t, concepts::transform3D transform3_t, concepts::scalar scalar_t>
void detray::resolve_mask ( intersection_t & is,
const trajectory_t & traj,
const intersection_point_err< algebra_t > & ip,
const surface_descr_t sf_desc,
const mask_t & mask,
const transform3_t & trf,
const intersection::config & intr_cfg,
const scalar_t = 0.f )
constexpr

Fill an intersection with the result of the root finding.

Parameters
isIntersection object to populate.
trajTrajectory used to evaluate the intersection point.
ipPath length and error estimate returned by root finding.
sf_descDescriptor of the intersected surface.
maskShape mask defining the surface bounds.
trfTransform from the surface frame to global coordinates.
intr_cfgIntersection configuration, including mask tolerances.

◆ sequential_sort()

template<std::random_access_iterator rand_iter_t, std::sentinel_for< rand_iter_t > sentinel_t>
void detray::sequential_sort ( rand_iter_t first,
sentinel_t last )

sequential (single thread) sort function

Template Parameters
rand_iter_trandom-access iterator over the elements to sort
sentinel_tsentinel marking the end of the range
Parameters
firstiterator to the first element
lastsentinel after the final element

◆ tie()

template<typename... Ts>
detray::tuple< Ts &... > detray::tie ( Ts &... args)
constexpr

Create a tuple of references to the supplied objects.

Parameters
argsObjects whose references are stored.
Returns
A tuple containing references to the arguments.

◆ update_particle_hypothesis()

template<concepts::scalar scalar_t, typename track_t>
pdg_particle< scalar_t > detray::update_particle_hypothesis ( const pdg_particle< scalar_t > & ptc,
const track_t & params )
constexpr

Select the hypothesis matching the sign of the track charge over momentum.

Parameters
ptcInitial particle hypothesis.
paramsTrack parameters providing charge over momentum.
Returns
an updated particle hypothesis according to the track qop

◆ upper_bound()

template<std::forward_iterator forw_iter_t, std::sentinel_for< forw_iter_t > sentinel_t, typename Value>
auto detray::upper_bound ( forw_iter_t first,
sentinel_t last,
const Value & value )

upper_bound implementation for host/device

Template Parameters
forw_iter_tforward iterator over the sorted elements
sentinel_tsentinel marking the end of the range
Valuetype of the lookup value
Parameters
firstiterator to the first element
lastsentinel after the final element
valuevalue to locate
Returns
iterator to the first element greater than value