ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::single3D< kCheckIndex > Class Template Reference

Underlying geometry for a single parameter bound mask. More...

#include <detray/geometry/shapes/single3D.hpp>

Collaboration diagram for detray::single3D< kCheckIndex >:
[legend]

Public Types

enum  boundaries : unsigned int { e_lower = 0u , e_upper = 1u , e_size = 2u }
 Indices describing the entries in the shape boundary array.
template<concepts::scalar scalar_t>
using bounds_type = darray<scalar_t, boundaries::e_size>
 Container definition for the shape boundary values.
template<concepts::algebra algebra_t>
using local_frame_type = cartesian2D<algebra_t>
 Local coordinate frame for boundary checks.
template<typename bool_t>
using result_type = detail::boundary_check_result<bool_t>
 Result type of a boundary check.

Public Member Functions

template<concepts::scalar scalar_t>
constexpr scalar_t area (const bounds_type< scalar_t > &bounds) const
 The area of a the shape.
template<concepts::algebra algebra_t>
auto centroid (const bounds_type< dscalar< algebra_t > > &bounds) const
template<concepts::scalar scalar_t>
constexpr bool check_consistency (const bounds_type< scalar_t > &bounds, std::ostream &os) const
 Check consistency of boundary values.
template<concepts::algebra algebra_t>
darray< dscalar< algebra_t >, 6 > local_min_bounds (const bounds_type< dscalar< algebra_t > > &bounds, const dscalar< algebra_t > env=std::numeric_limits< dscalar< algebra_t > >::epsilon()) const
 Lower and upper point for minimal axis aligned bounding box.
template<concepts::scalar scalar_t>
constexpr scalar_t measure (const bounds_type< scalar_t > &bounds) const
 Measure of the shape: Range.
template<concepts::scalar scalar_t>
constexpr bounds_type< scalar_t > merge (const bounds_type< scalar_t > &bounds, const bounds_type< scalar_t > &o_bounds) const
 Merge two 'single' shapes.
template<concepts::scalar scalar_t, concepts::point point_t>
scalar_t min_dist_to_boundary (const bounds_type< scalar_t > &bounds, const point_t &loc_p) const
 Find the minimum distance to any boundary.
template<concepts::algebra algebra_t>
dvector< dpoint3D< algebra_t > > vertices (const bounds_type< dscalar< algebra_t > > &, dindex) const
 Generate vertices in local cartesian frame.
template<concepts::algebra algebra_t>
constexpr result_type< dbool< algebra_t > > check_boundaries (const bounds_type< dscalar< algebra_t > > &bounds, const dtransform3D< algebra_t > &trf, const dpoint3D< algebra_t > &glob_p, const dscalar< algebra_t > tol=std::numeric_limits< dscalar< algebra_t > >::epsilon(), const dscalar< algebra_t > edge_tol=0.f) const
 Check boundary values for a local point.
template<concepts::scalar scalar_t, concepts::point point_t>
constexpr auto check_boundaries (const bounds_type< scalar_t > &bounds, const point_t &loc_p, const scalar_t tol=std::numeric_limits< scalar_t >::epsilon(), const scalar_t edge_tol=0.f) const

Static Public Attributes

static constexpr std::size_t dim {1u}
 Dimension of the local coordinate system.
static constexpr std::string_view name = "single3D"
 The name for this shape.

Detailed Description

template<unsigned int kCheckIndex = 0u>
class detray::single3D< kCheckIndex >

Underlying geometry for a single parameter bound mask.

Template Parameters
kCheckIndexis the index of the local point on which the mask is applied

Member Function Documentation

◆ area()

template<unsigned int kCheckIndex = 0u>
template<concepts::scalar scalar_t>
scalar_t detray::single3D< kCheckIndex >::area ( const bounds_type< scalar_t > & bounds) const
constexpr

The area of a the shape.

Parameters
boundsthe boundary values for this shape
Returns
the range.

◆ centroid()

template<unsigned int kCheckIndex = 0u>
template<concepts::algebra algebra_t>
auto detray::single3D< kCheckIndex >::centroid ( const bounds_type< dscalar< algebra_t > > & bounds) const
Parameters
boundsBoundary values used to determine the center.
Returns
the shapes centroid in local cartesian coordinates

◆ check_boundaries() [1/2]

template<unsigned int kCheckIndex = 0u>
template<concepts::algebra algebra_t>
result_type< dbool< algebra_t > > detray::single3D< kCheckIndex >::check_boundaries ( const bounds_type< dscalar< algebra_t > > & bounds,
const dtransform3D< algebra_t > & trf,
const dpoint3D< algebra_t > & glob_p,
const dscalar< algebra_t > tol = std::numeric_limits<dscalar<algebra_t>>::epsilon(),
const dscalar< algebra_t > edge_tol = 0.f ) const
constexpr

Check boundary values for a local point.

Parameters
boundsthe boundary values for this shape
trfthe surface transform
glob_pthe point to be checked in the global coordinate system
toldynamic tolerance determined by caller
edge_tolAdditional tolerance used to classify points near an edge.
Returns
true if the local point lies within the given boundaries.

◆ check_boundaries() [2/2]

template<unsigned int kCheckIndex = 0u>
template<concepts::scalar scalar_t, concepts::point point_t>
auto detray::single3D< kCheckIndex >::check_boundaries ( const bounds_type< scalar_t > & bounds,
const point_t & loc_p,
const scalar_t tol = std::numeric_limits<scalar_t>::epsilon(),
const scalar_t edge_tol = 0.f ) const
constexpr
Note
the point is expected to be given in local coordinates by the caller. For the conversion from global cartesian coordinates, the nested shape struct can be used.
Parameters
boundsthe boundary values for this shape
loc_pthe point to be checked in the local coordinate system
toldynamic tolerance determined by caller
edge_tolAdditional tolerance used to classify points near an edge.
Returns
true if the local point lies within the given boundaries.

◆ check_consistency()

template<unsigned int kCheckIndex = 0u>
template<concepts::scalar scalar_t>
bool detray::single3D< kCheckIndex >::check_consistency ( const bounds_type< scalar_t > & bounds,
std::ostream & os ) const
constexpr

Check consistency of boundary values.

Parameters
boundsthe boundary values for this shape
osoutput stream for error messages
Returns
true if the bounds are consistent.

◆ local_min_bounds()

template<unsigned int kCheckIndex = 0u>
template<concepts::algebra algebra_t>
darray< dscalar< algebra_t >, 6 > detray::single3D< kCheckIndex >::local_min_bounds ( const bounds_type< dscalar< algebra_t > > & bounds,
const dscalar< algebra_t > env = std::numeric_limits<dscalar<algebra_t>>::epsilon() ) const

Lower and upper point for minimal axis aligned bounding box.

Computes the min and max vertices in a local cartesian frame.

Parameters
boundsthe boundary values for this shape
envdynamic envelope around the shape
Returns
and array of coordinates that contains the lower point (first three values) and the upper point (latter three values) .

◆ measure()

template<unsigned int kCheckIndex = 0u>
template<concepts::scalar scalar_t>
scalar_t detray::single3D< kCheckIndex >::measure ( const bounds_type< scalar_t > & bounds) const
constexpr

Measure of the shape: Range.

Parameters
boundsthe boundary values for this shape
Returns
the range.

◆ merge()

template<unsigned int kCheckIndex = 0u>
template<concepts::scalar scalar_t>
bounds_type< scalar_t > detray::single3D< kCheckIndex >::merge ( const bounds_type< scalar_t > & bounds,
const bounds_type< scalar_t > & o_bounds ) const
constexpr

Merge two 'single' shapes.

Parameters
boundsthe boundary values for this shape
o_boundsthe boundary values for the other shape
Returns
merged bound values

◆ min_dist_to_boundary()

template<unsigned int kCheckIndex = 0u>
template<concepts::scalar scalar_t, concepts::point point_t>
scalar_t detray::single3D< kCheckIndex >::min_dist_to_boundary ( const bounds_type< scalar_t > & bounds,
const point_t & loc_p ) const

Find the minimum distance to any boundary.

Note
the point is expected to be given in local coordinates by the caller.
Parameters
boundsthe boundary values for this shape
loc_pthe point to be checked in the local coordinate system
Returns
the minimum distance.

◆ vertices()

template<unsigned int kCheckIndex = 0u>
template<concepts::algebra algebra_t>
dvector< dpoint3D< algebra_t > > detray::single3D< kCheckIndex >::vertices ( const bounds_type< dscalar< algebra_t > > & ,
dindex  ) const

Generate vertices in local cartesian frame.

This point shape does not require boundary values or a segment count.

Returns
a generated list of vertices