ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::direct_navigator< detector_t, surface_sequence_t > Class Template Reference

Navigator that visits an externally supplied sequence of surfaces in order. More...

#include <detray/navigation/direct_navigator.hpp>

Inheritance diagram for detray::direct_navigator< detector_t, surface_sequence_t >:
[legend]

Classes

class  state
 Mutable state for traversing the external surface sequence. More...

Public Types

using context_type = detector_type::geometry_context
 Geometry context expected by the detector.
using detector_type = detector_t
 Detector whose surfaces are navigated.
using inspector_type = navigation::void_inspector
 Inspector policy used by the direct navigation flow.
using intersection_type
 Intersection record stored in the navigation state.
using surface_sequence_type
 Range containing the surfaces visited by this navigator.
using surface_type = detray::ranges::range_value_t<surface_sequence_type>
 Descriptor type stored in the surface sequence.

Public Member Functions

template<typename track_t>
void init (const track_t &track, state &navigation, const navigation::config &cfg, const context_type &ctx) const
 Initialize the direct navigation flow on the first/last external surface.
template<typename track_t>
bool update (const track_t &track, state &navigation, const navigation::config &cfg, const context_type &ctx={}) const
 Update the navigation status on the current next external and switch to the following external surface if the current one was reached.

Detailed Description

template<concepts::detector detector_t, typename surface_sequence_t = void>
class detray::direct_navigator< detector_t, surface_sequence_t >

Navigator that visits an externally supplied sequence of surfaces in order.

Template Parameters
detector_tDetector providing the geometry and algebra types.
surface_sequence_tOptional range type for the ordered surfaces.

Member Typedef Documentation

◆ intersection_type

template<concepts::detector detector_t, typename surface_sequence_t = void>
using detray::direct_navigator< detector_t, surface_sequence_t >::intersection_type
Initial value:
This class holds the intersection information.
Definition intersection.hpp:212

Intersection record stored in the navigation state.

◆ surface_sequence_type

template<concepts::detector detector_t, typename surface_sequence_t = void>
using detray::direct_navigator< detector_t, surface_sequence_t >::surface_sequence_type
Initial value:
std::conditional_t<
std::same_as<surface_sequence_t, void>,
vecmem::device_vector<typename detector_t::surface_type>,
surface_sequence_t>

Range containing the surfaces visited by this navigator.

Member Function Documentation

◆ init()

template<concepts::detector detector_t, typename surface_sequence_t = void>
template<typename track_t>
void detray::direct_navigator< detector_t, surface_sequence_t >::init ( const track_t & track,
state & navigation,
const navigation::config & cfg,
const context_type & ctx ) const

Initialize the direct navigation flow on the first/last external surface.

Parameters
trackTrack whose intersections will be evaluated.
navigationState to initialize.
cfgNavigation tolerances and policies.
ctxDetector geometry context.

◆ update()

template<concepts::detector detector_t, typename surface_sequence_t = void>
template<typename track_t>
bool detray::direct_navigator< detector_t, surface_sequence_t >::update ( const track_t & track,
state & navigation,
const navigation::config & cfg,
const context_type & ctx = {} ) const

Update the navigation status on the current next external and switch to the following external surface if the current one was reached.

Parameters
trackTrack whose intersections will be evaluated.
navigationState to update.
cfgNavigation tolerances and policies.
ctxDetector geometry context.
Returns
Whether the current surface was reached and advancement occurred.