File NavigationStateUpdators.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

namespace Experimental
template<typename ...updators_t>
class ChainedUpdatorImpl : public Acts::Experimental::INavigationDelegate
#include <Acts/Navigation/NavigationStateUpdators.hpp>

This is a chained extractor/filler implementation Since there is no control whether it is a static or payload extractor, these have to be provided by a tuple.

Template Parameters

updators_t – the updators that will be called in sequence

Public Functions

inline ChainedUpdatorImpl(const std::tuple<updators_t...> &upts)

Constructor for chained updators in a tuple, this will unroll the tuple and call them in sequence.

Parameters

upts – the updators to be called in chain

inline void update(const GeometryContext &gctx, NavigationState &nState) const

A combined navigation state updator w/o intersection specifics.

Parameters
  • gctx – is the Geometry context of this call

  • nState – the navigation state to which the objects are attached

Private Members

std::tuple<updators_t...> updators
template<typename grid_type, typename extractor_type, typename filler_type>
class IndexedUpdatorImpl : public Acts::Experimental::INavigationDelegate
#include <Acts/Navigation/NavigationStateUpdators.hpp>

This is an index grid based navigation state updator, it uses an extractor type and a filler type to handle the navigation state.

It can be used for volumes, surfaces at convenience

Note

a transform is applied p3l = transform * p3 in order to allow shifted, transformed grids

Template Parameters
  • grid_type – is the type of the grid

  • extractor_type – is the helper to extract the object

  • filler_type – is the helper to fill the object into the nState

Public Functions

inline IndexedUpdatorImpl(grid_type &&igrid, const std::array<BinningValue, grid_type::DIM> &icasts, const Transform3 &itr = Transform3::Identity())

Constructor for a grid based surface attacher.

Parameters
  • igrid – the grid that is moved into this attacher

  • icasts – is the cast values array

  • itr – a transform applied to the global position

IndexedUpdatorImpl() = delete
inline std::array<ActsScalar, grid_type::DIM> castPosition(const Vector3 &position) const

Cast into a lookup position.

Parameters

position – is the position of the update call

inline void update(const GeometryContext &gctx, NavigationState &nState) const

updates the navigation state with objects from the grid according to the filling type AFTER applying p3loc = transform * p3

Note

this is attaching objects without intersecting nor checking

Parameters
  • gctx – is the Geometry context of this call

  • nState – the navigation state to which the surfaces are attached

Public Members

extractor_type extractor

An extractor helper to get the object(s) from the volume.

grid_type grid

The grid where the indices are stored.

Private Functions

template<typename Array, std::size_t... idx>
inline void fillCasts(const Vector3 &position, Array &a, std::index_sequence<idx...>) const

Unroll the cast loop.

Parameters
  • position – is the position of the update call

  • a – is the array to be filled

Private Members

std::array<BinningValue, grid_type::DIM> casts = {}

These are the cast parameters.

Transform3 transform = Transform3::Identity()

A transform to be applied to the position.

template<typename object_type, typename filler_type>
class SingleObjectImpl : public Acts::Experimental::INavigationDelegate
#include <Acts/Navigation/NavigationStateUpdators.hpp>

This sets a single object, e.g.

single surface or single volume

Template Parameters
  • object_type – the type of the object to be filled

  • filler_type – is the helper to fill the object into nState

Public Functions

inline SingleObjectImpl(const object_type *so)

Convenience constructor.

Parameters

so – the single object

inline void update([[maybe_unused]] const GeometryContext &gctx, NavigationState &nState) const

updates the navigation state with a single object that is filled in

Note

this is attaching objects without intersecting nor checking

Parameters
  • gctx – is the Geometry context of this call

  • nState – the navigation state to which the surfaces are attached

Private Members

const object_type *object = nullptr
template<typename extractor_type, typename filler_type>
class StaticUpdatorImpl : public Acts::Experimental::INavigationDelegate
#include <Acts/Navigation/NavigationStateUpdators.hpp>

This uses state less extractor and fillers to manipulate the navigation state.

Template Parameters
  • extractor_type – the helper to extract the objects from

  • filler_type – is the helper to fill the object into nState

Public Functions

inline void update([[maybe_unused]] const GeometryContext &gctx, NavigationState &nState) const

updates the navigation state with a single object that is filled in

Note

this is attaching objects without intersecting nor checking

Parameters
  • gctx – is the Geometry context of this call

  • nState – the navigation state to which the surfaces are attached