|
|
using | algebra_type = typename local_frame_type::algebra_type |
| | Algebra backend used by the local frame.
|
| using | buffer_type |
| | Vecmem based buffer type.
|
| using | const_view_type |
| | Const VecMem view of offsets and edges.
|
|
using | local_frame_type = local_frame_t |
| | Projection onto local coordinate system that is spanned by the axes.
|
|
using | point_type = typename local_frame_type::loc_point |
| | Point type in the local coordinate system.
|
|
using | scalar_type = typename detray::detail::first_t<axis_ts...>::scalar_type |
| | Scalar type used for all constituent axes.
|
|
template<bool owning> |
| using | type = multi_axis<owning, local_frame_t, axis_ts...> |
| | Find the corresponding (non-)owning type.
|
| using | view_type |
| | Vecmem based view type.
|
|
using | binnings = types::list<typename axis_ts::binning_type...> |
| | binnings and axis bounds
|
|
using | bounds = types::list<typename axis_ts::bounds_type...> |
| | Bounds policies of the constituent axes.
|
|
using | loc_bin_index = axis::multi_bin<dim> |
| | Per-axis bin indices for a bin in this multi-axis.
|
| using | container_types |
| | Extract container types.
|
|
template<typename T> |
| using | vector_type = typename container_types::template vector_type<T> |
| | Vector container type used by the axis storage.
|
|
using | edge_offset_container_type = vector_type<dsized_index_range> |
| | Axes boundary/bin edges storage.
|
|
using | edges_container_type = vector_type<scalar_type> |
| | Container type holding concatenated bin edges.
|
|
|
constexpr | multi_axis ()=default |
| | Default constructor.
|
template<bool owner = is_owning>
requires (!owner) |
| | multi_axis (const vector_type< dsized_index_range > &edge_offsets, const vector_type< scalar_type > &edges, const unsigned int offset=0) |
| | Construct from containers that are not owned by this class.
|
| template<concepts::device_view view_t> |
| | multi_axis (const view_t &view) |
| | Construct containers from vecmem based view type.
|
template<bool owner = is_owning>
requires owner |
| | multi_axis (edge_offset_range_t &&edge_offsets, edge_range_t &&edges) |
| | Construct from containers - move.
|
template<bool owner = is_owning>
requires owner |
| | multi_axis (vecmem::memory_resource &resource) |
| | Construct containers using a specific memory resources.
|
| constexpr auto | bin_edge_offsets () const -> const edge_offset_range_t & |
| constexpr auto | bin_edges () const -> const vector_type< scalar_type > & |
| template<typename neighbor_t> |
| multi_bin_range< dim > | bin_ranges (const point_type &p, const darray< neighbor_t, 2 > &nhood) const |
| | Get a bin range on every axis corresponding to the given point and the neighborhood around it.
|
| loc_bin_index | bins (const point_type &p) const |
| | Query the bin index for every coordinate of the given point on the axes.
|
template<bool owner = is_owning>
requires owner |
| auto | get_data () -> view_type |
template<bool owner = is_owning>
requires owner |
| auto | get_data () const -> const_view_type |
| constexpr auto | nbins () const -> dindex |
| constexpr auto | nbins_per_axis () const -> loc_bin_index |
| constexpr auto | operator== (const multi_axis &rhs) const -> bool |
| | Equality operator.
|
| template<std::size_t I> |
| types::get< axis_reg, types::id_cast< axis_reg, I > > | get_axis () const |
| | Build an axis object in place.
|
| template<axis::label L> |
| types::get< axis_reg, L > | get_axis () const |
| template<typename axis_t> |
| axis_t | get_axis () const |
template<bool ownership, typename local_frame_t, concepts::axis... axis_ts>
class detray::axis::multi_axis< ownership, local_frame_t, axis_ts >
An N-dimensional collection of single axes.
Given a point in the grid local coordinate system, which is spanned by the axes in this multi-axes type, the corresponding bin multi-index or multi-index range is returned.
- Note
- can be owning the data (as member of a standalone grid) or can be non-owning if the grid is part of a larger collection.
template<bool ownership, typename local_frame_t, concepts::axis... axis_ts>
template<typename neighbor_t>
Get a bin range on every axis corresponding to the given point and the neighborhood around it.
The neighborhood around the point can be defined in two ways:
- scalar: neighborhood around the axis value,
- index: neighborhood in bins The resulting bin index range will contain all bins that belong to a given neighborhood around the lookup point.
- Template Parameters
-
| neighbor_t | the type of neighborhood defined on the axis around the point |
- Parameters
-
| p | the point in the local coordinate system that is spanned by the axes. |
| nhood | the search window definition. |
- Returns
- a multi bin range that contains the resulting bin ranges for every axis in the corresponding entry (e.g. rng_x in entry 0)