12#include "detray/definitions/algebra.hpp"
13#include "detray/definitions/detail/qualifiers.hpp"
14#include "detray/definitions/math.hpp"
15#include "detray/geometry/coordinates/cartesian2D.hpp"
16#include "detray/geometry/coordinates/polar2D.hpp"
17#include "detray/navigation/intersection/intersection.hpp"
18#include "detray/tracks/ray.hpp"
22template <
typename frame_t, concepts::algebra algebra_t,
bool resolve_pos>
26template <detray::concepts::soa algebra_t,
bool resolve_pos>
42 template <
typename surface_descr_t>
47 template <
typename other_algebra_t>
62 template <concepts::algebra other_algebra_t>
71 const auto &pos = ray.pos();
72 const auto &dir = ray.dir();
78 const scalar_type s = vector::dot(sn, diff) / denom;
86template <detray::concepts::soa algebra_t,
bool resolve_pos>
87struct ray_intersector_impl<polar2D<algebra_t>, algebra_t, resolve_pos>
88 :
public ray_intersector_impl<cartesian2D<algebra_t>, algebra_t,
describes a straight-line trajectory
Definition ray.hpp:22
This class holds the intersection information.
Definition intersection.hpp:212
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
get_vector3D_t< A, T > dvector3D
Three-dimensional vector type for algebra A and value type T.
Definition algebra.hpp:80
get_transform3D_t< A, T > dtransform3D
Three-dimensional transform type for algebra A and value type T.
Definition algebra.hpp:84
get_point3D_t< A, T > dpoint3D
Three-dimensional point type for algebra A and value type T.
Definition algebra.hpp:72
Projection into a 2D cartesian coordinate frame.
Definition cartesian2D.hpp:19
Result of intersector: Point of intersection on a surface.
Definition intersection.hpp:43
detail::ray< other_algebra_t > trajectory_type
Trajectory representation accepted by this intersector.
Definition ray_plane_intersector.hpp:46
dpoint3D< algebra_t > point3_type
Three-dimensional point type used by this intersector.
Definition ray_plane_intersector.hpp:34
intersection_point< algebra_t, point_type, intersection::contains_pos > result_type
Always includes the intersection position, in order to resolve the mask.
Definition ray_plane_intersector.hpp:53
static constexpr std::uint8_t n_solutions
Maximum number of solutions produced by this intersector.
Definition ray_plane_intersector.hpp:50
constexpr result_type point_of_intersection(const trajectory_type< other_algebra_t > &ray, const transform3_type &trf, const scalar_type=0.f) const
Operator function to find intersections between ray and planar mask.
Definition ray_plane_intersector.hpp:63
dvector3D< algebra_t > vector3_type
Three-dimensional vector type used by this intersector.
Definition ray_plane_intersector.hpp:36
dscalar< algebra_t > scalar_type
Scalar calculation type for the configured algebra layout.
Definition ray_plane_intersector.hpp:32
dtransform3D< algebra_t > transform3_type
Transform type used to place the surface.
Definition ray_plane_intersector.hpp:38
algebra_t algebra_type
Algebra policy used by this intersector.
Definition ray_plane_intersector.hpp:33
intersection2D< surface_descr_t, algebra_t, resolve_pos > intersection_type
Intersection result type associated with a surface descriptor.
Definition ray_plane_intersector.hpp:41
Intersection implementation for detector surfaces using a ray trajectory.
Definition ray_intersector.hpp:31