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

Uses the geometry implementations to walk through their graph-like structure breadth first. More...

#include <detray/navigation/volume_graph.hpp>

Classes

struct  edge_generator
 Builds graph edges from the detector mask collection on the fly. More...
struct  node_generator
 Builds a graph node from the detector collections on the fly. More...

Public Types

using edge_type = typename edge_generator::edge
 Type representing a volume graph edge.
using geo_obj_ids = typename detector_t::geo_obj_ids
 Geometry object identifier type provided by the detector.
using mask_container_t = typename detector_t::mask_container
 Detector mask container type.
using node_type = typename node_generator::node
 Type representing a volume graph node.
using volume_container_t = vector_t<typename detector_t::volume_type>
 Container type used to access detector volumes.

Public Member Functions

 volume_graph ()=delete
 Default constructor.
 volume_graph (const detector_t &det)
 Build from existing nodes and edges, which are provide by the detector.
 ~volume_graph ()=default
 Default destructor: we don't own anything.
const auto & adjacency_matrix () const
const auto & edges () const
dindex n_edges (dindex volume_id) const
dindex n_nodes () const
const auto & nodes () const
std::string to_dot_string () const
std::string to_string () const
 Walks breadth first through the geometry objects.

Detailed Description

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

Uses the geometry implementations to walk through their graph-like structure breadth first.

Template Parameters
detector_tthe type of geometry we want to walk along.
node_inspectorthe type of inspection to perform when a node is visited
Note
The detector has to expose the volume/portal interface.

Constructor & Destructor Documentation

◆ volume_graph()

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 >::volume_graph ( const detector_t & det)
explicit

Build from existing nodes and edges, which are provide by the detector.

Parameters
detprovides: geometry volumes that become the graph nodes, surfaces which are needed to index the correct masks and the masks that link to volumes and become graph edges.

Member Function Documentation

◆ adjacency_matrix()

template<concepts::detector detector_t, typename node_inspector = void_node_inspector<typename detector_t::volume_type>, template< typename... > class vector_t = dvector>
const auto & detray::volume_graph< detector_t, node_inspector, vector_t >::adjacency_matrix ( ) const
Returns
graph adjacency - const access.

◆ edges()

template<concepts::detector detector_t, typename node_inspector = void_node_inspector<typename detector_t::volume_type>, template< typename... > class vector_t = dvector>
const auto & detray::volume_graph< detector_t, node_inspector, vector_t >::edges ( ) const
Returns
edges collection - const access.

◆ n_edges()

template<concepts::detector detector_t, typename node_inspector = void_node_inspector<typename detector_t::volume_type>, template< typename... > class vector_t = dvector>
dindex detray::volume_graph< detector_t, node_inspector, vector_t >::n_edges ( dindex volume_id) const
Returns
number of surfaces/portals in the geometry *‍/
Parameters
volume_idindex of the volume whose half-edges are counted

◆ n_nodes()

template<concepts::detector detector_t, typename node_inspector = void_node_inspector<typename detector_t::volume_type>, template< typename... > class vector_t = dvector>
dindex detray::volume_graph< detector_t, node_inspector, vector_t >::n_nodes ( ) const
Returns
number of nodes

◆ nodes()

template<concepts::detector detector_t, typename node_inspector = void_node_inspector<typename detector_t::volume_type>, template< typename... > class vector_t = dvector>
const auto & detray::volume_graph< detector_t, node_inspector, vector_t >::nodes ( ) const
Returns
node collection - const access. *‍/

◆ to_dot_string()

template<concepts::detector detector_t, typename node_inspector = void_node_inspector<typename detector_t::volume_type>, template< typename... > class vector_t = dvector>
std::string detray::volume_graph< detector_t, node_inspector, vector_t >::to_dot_string ( ) const
Returns
the linking description as a string in DOT syntax.

◆ to_string()

template<concepts::detector detector_t, typename node_inspector = void_node_inspector<typename detector_t::volume_type>, template< typename... > class vector_t = dvector>
std::string detray::volume_graph< detector_t, node_inspector, vector_t >::to_string ( ) const

Walks breadth first through the geometry objects.

Returns
the linking description as a string.