ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::volume_graph< detector_t, node_inspector, vector_t >::edge_generator Struct Reference

Builds graph edges from the detector mask collection on the fly. More...

#include <detray/navigation/volume_graph.hpp>

Inheritance diagram for detray::volume_graph< detector_t, node_inspector, vector_t >::edge_generator:
[legend]
Collaboration diagram for detray::volume_graph< detector_t, node_inspector, vector_t >::edge_generator:
[legend]

Classes

struct  edge
 An edge in the graph connects two nodes (volumes). More...
struct  edges_builder
 Nested functor that fills the edges from a mask container. More...

Public Types

using mask_edge_t = typename detector_t::surface_type::navigation_link
 The link to the next volume.
using mask_link_t = typename detector_t::surface_type::mask_link
 The link to the surfaces mask.

Public Member Functions

 edge_generator ()=delete
 No default constructor (holds member reference).
 edge_generator (const typename detector_t::mask_container &masks, const dindex volume_id=0, const mask_link_t mask_link={})
 Constructor from the detector masks store.
auto begin ()
auto end ()
edge_generator & operator() (dindex volume_id, const mask_link_t mask_link)
 Rebuild edges for a new volume and mask link.
Public Member Functions inherited from detray::ranges::view_interface< edge_generator >
constexpr decltype(auto) back () const
 Return a reference to the last element.
constexpr auto data () const
 Return a pointer to the first element, or null for an empty view.
constexpr auto empty () const -> bool
 Check whether the view contains no elements.
constexpr decltype(auto) front () const
 Return a reference to the first element.
constexpr operator bool () const
 Test whether the view contains at least one element.
constexpr decltype(auto) operator[] (const dindex i) const
 Subscript operator that takes detray dindex.
constexpr auto size () const
 Return the number of elements in the view.

Public Attributes

vector_t< edge > _edges
 Edges generated for the current volume and mask link.
mask_link_t _mask_link
 Link identifying the mask range used to generate edges.
const mask_container_t & _masks
 Referenced detector mask container.
dindex _volume_id
 Current source volume index.

Detailed Description

template<concepts::detector detector_t, typename node_inspector = void_node_inspector<typename detector_t::volume_type>, template< typename... > class vector_t = dvector>
struct detray::volume_graph< detector_t, node_inspector, vector_t >::edge_generator

Builds graph edges from the detector mask collection on the fly.

Iterates through the detectors mask store given a volume id (graph node) The graph edges are constructed for the node on the fly from the half edges in the _edges collection (detector masks).

Constructor & Destructor Documentation

◆ edge_generator()

template<concepts::detector detector_t, typename node_inspector = void_node_inspector<typename detector_t::volume_type>, template< typename... > class vector_t = dvector>
detray::volume_graph< detector_t, node_inspector, vector_t >::edge_generator::edge_generator ( const typename detector_t::mask_container & masks,
const dindex volume_id = 0,
const mask_link_t mask_link = {} )
explicit

Constructor from the detector masks store.

Parameters
masksdetector mask container
volume_idsource volume index
mask_linklink identifying the mask range to visit

Member Function Documentation

◆ begin()

template<concepts::detector detector_t, typename node_inspector = void_node_inspector<typename detector_t::volume_type>, template< typename... > class vector_t = dvector>
auto detray::volume_graph< detector_t, node_inspector, vector_t >::edge_generator::begin ( )
Returns
begging of graph edges container

◆ end()

template<concepts::detector detector_t, typename node_inspector = void_node_inspector<typename detector_t::volume_type>, template< typename... > class vector_t = dvector>
auto detray::volume_graph< detector_t, node_inspector, vector_t >::edge_generator::end ( )
Returns
end of graph edges container

◆ operator()()

template<concepts::detector detector_t, typename node_inspector = void_node_inspector<typename detector_t::volume_type>, template< typename... > class vector_t = dvector>
edge_generator & detray::volume_graph< detector_t, node_inspector, vector_t >::edge_generator::operator() ( dindex volume_id,
const mask_link_t mask_link )

Rebuild edges for a new volume and mask link.

Parameters
volume_idsource volume index
mask_linklink identifying the mask range to visit
Returns
updated version of edge_generator