12#include "detray/definitions/algebra.hpp"
13#include "detray/geometry/concepts.hpp"
14#include "detray/navigation/intersection/helix_intersector.hpp"
15#include "detray/navigation/intersection/intersection_config.hpp"
16#include "detray/navigation/intersection/ray_intersector.hpp"
24 bool resolve_pos =
false>
62 template <
typename S = shape_t>
67 return to_result_type(
77 template <
typename mask_t,
typename S = shape_t>
83 ray, trf,
mask, overstep_tol));
90 template <
typename S = shape_t>
103 template <
typename mask_t,
typename S = shape_t>
120 template <
typename surface_descr_t,
typename mask_t>
121 DETRAY_HOST_DEVICE
inline decltype(
auto)
operator()(
136 template <
typename surface_descr_t,
typename mask_t>
137 DETRAY_HOST_DEVICE
inline decltype(
auto)
operator()(
153 result[i] =
typename result_type::value_type{ray_results[i]};
describes a helical trajectory in a given B-field.
Definition helix.hpp:33
describes a straight-line trajectory
Definition ray.hpp:22
Mask a region on a surface and link it to a volume.
Definition mask.hpp:46
Algebra plugin concept.
Definition concepts.hpp:147
Definition concepts.hpp:158
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
intersector_base< ray_intersector_impl< typename shape_t::template local_frame_type< algebra_t >, algebra_t, resolve_pos > > ray_intersector
Select the ray intersector specialization for a shape's local frame.
Definition ray_intersector.hpp:36
intersector_base< helix_intersector_impl< typename shape_t::template local_frame_type< algebra_t >, algebra_t > > helix_intersector
Select the helix intersector specialization for a shape's local frame.
Definition helix_intersector.hpp:33
get_transform3D_t< A, T > dtransform3D
Three-dimensional transform type for algebra A and value type T.
Definition algebra.hpp:84
Intersector configuration.
Definition intersection_config.hpp:21
typename helix_intersector_impl< typename shape_t::template local_frame_type< algebra_t >, algebra_t >::result_type result_type
Definition intersector_base.hpp:65
static constexpr std::uint8_t n_solutions
Definition intersector_base.hpp:62
Intersection interface for detector surfaces.
Definition intersector.hpp:25
helix_intersector< shape_t, algebra_t > helix_intersector_type
How to intersect surfaces with helices.
Definition intersector.hpp:37
typename helix_intersector_type::result_type result_type
Common result representation, which accommodates helix error estimates.
Definition intersector.hpp:52
constexpr result_type point_of_intersection(const detail::ray< algebra_t > &ray, const transform3_type &trf, const scalar_type overstep_tol=0.f) const
Operator function to find intersections between ray and planar mask.
Definition intersector.hpp:64
dtransform3D< algebra_t > transform3_type
Transform type used to place surfaces in 3D.
Definition intersector.hpp:31
static constexpr std::uint8_t n_solutions
Largest number of solutions produced by either trajectory intersector.
Definition intersector.hpp:47
dscalar< algebra_t > scalar_type
Scalar type associated with the algebra policy.
Definition intersector.hpp:29
constexpr result_type point_of_intersection(const detail::ray< algebra_t > &ray, const transform3_type &trf, const mask_t &mask, const scalar_type overstep_tol=0.f) const
Intersect a ray with a cylindrical surface using its radius mask.
Definition intersector.hpp:79
algebra_t algebra_type
Algebra policy used by the intersection calculations.
Definition intersector.hpp:27
constexpr result_type point_of_intersection(const detail::helix< algebra_t > &h, const transform3_type &trf, const mask_t &mask, const scalar_type=0.f) const
Intersect a helix with a cylindrical surface using its radius mask.
Definition intersector.hpp:105
constexpr result_type point_of_intersection(const detail::helix< algebra_t > &h, const transform3_type &trf, const scalar_type=0.f) const
Intersect a helix with a planar or line surface.
Definition intersector.hpp:92
ray_intersector< shape_t, algebra_t, resolve_pos > ray_intersector_type
How to intersect surfaces with rays.
Definition intersector.hpp:34