ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 > Struct Template Reference

Lookup helper which encapsulates a Grid. More...

#include <Acts/Surfaces/SurfaceArray.hpp>

Inheritance diagram for Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >:
[legend]
Collaboration diagram for Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >:
[legend]

Public Types

using Grid_t = Grid<SurfaceVector, Axis1, Axis2>

Public Member Functions

 SurfaceGridLookup (std::shared_ptr< RegularSurface > representative, double tolerance, std::tuple< Axis1, Axis2 > axes, std::vector< AxisDirection > bValues={})
 Construct a surface grid lookup.
std::vector< AxisDirectionbinningValues () const override
 The binning values described by this surface grid lookup They are in order of the axes.
void fill (const GeometryContext &gctx, const SurfaceVector &surfaces) override
 Fill provided surfaces into the contained Grid.
std::vector< const IAxis * > getAxes () const override
 Returns copies of the axes used in the grid as AnyAxis.
Vector3 getBinCenter (std::size_t bin) const override
 Gets the center position of bin bin in global coordinates.
std::optional< AnyGridConstView< SurfaceVector > > getGridView () const override
 Get a view of the grid for inspection.
bool isValidBin (std::size_t bin) const override
 Checks if global bin is valid.
const SurfaceVectorlookup (const Vector3 &position, const Vector3 &direction) const override
 Performs lookup at pos and returns bin content as const reference.
const SurfaceVectorlookup (std::size_t bin) const override
 Performs lookup at global bin and returns bin content as const reference.
SurfaceVectorlookup (std::size_t bin) override
 Performs lookup at global bin and returns bin content as reference.
const SurfaceVectorneighbors (const Vector3 &position, const Vector3 &direction) const override
 Performs a lookup at pos, but returns neighbors as well.
std::size_t size () const override
 Returns the total size of the grid (including under/overflow bins).
const SurfacesurfaceRepresentation () const override
 Get the representative surface used for this lookup.
Public Member Functions inherited from Acts::SurfaceArray::ISurfaceGridLookup
virtual ~ISurfaceGridLookup ()=0
 Pure virtual destructor.

Detailed Description

template<class Axis1, class Axis2>
struct Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >

Lookup helper which encapsulates a Grid.

Template Parameters
AxesThe axes used for the grid

Member Typedef Documentation

◆ Grid_t

template<class Axis1, class Axis2>
using Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::Grid_t = Grid<SurfaceVector, Axis1, Axis2>

Constructor & Destructor Documentation

◆ SurfaceGridLookup()

template<class Axis1, class Axis2>
Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::SurfaceGridLookup ( std::shared_ptr< RegularSurface > representative,
double tolerance,
std::tuple< Axis1, Axis2 > axes,
std::vector< AxisDirection > bValues = {} )

Construct a surface grid lookup.

Parameters
representativeThe surface which is used as representative
toleranceThe tolerance used for intersection checks
axesThe axes used for the grid
bValuesOptional vector of axis directions for binning

Member Function Documentation

◆ binningValues()

template<class Axis1, class Axis2>
std::vector< AxisDirection > Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::binningValues ( ) const
overridevirtual

The binning values described by this surface grid lookup They are in order of the axes.

Returns
Vector of axis directions for binning

Reimplemented from Acts::SurfaceArray::ISurfaceGridLookup.

◆ fill()

template<class Axis1, class Axis2>
void Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::fill ( const GeometryContext & gctx,
const SurfaceVector & surfaces )
overridevirtual

Fill provided surfaces into the contained Grid.

This is done by iterating, accessing the referencePosition, lookup and append. Also populates the neighbor map by combining the filled bins of all bins around a given one.

Parameters
gctxThe current geometry context object, e.g. alignment
surfacesInput surface pointers

Implements Acts::SurfaceArray::ISurfaceGridLookup.

◆ getAxes()

template<class Axis1, class Axis2>
std::vector< const IAxis * > Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::getAxes ( ) const
overridevirtual

Returns copies of the axes used in the grid as AnyAxis.

Returns
The axes
Note
This returns copies. Use for introspection and querying.

Implements Acts::SurfaceArray::ISurfaceGridLookup.

◆ getBinCenter()

template<class Axis1, class Axis2>
Vector3 Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::getBinCenter ( std::size_t bin) const
overridevirtual

Gets the center position of bin bin in global coordinates.

Parameters
binthe global bin index
Returns
The bin center

Implements Acts::SurfaceArray::ISurfaceGridLookup.

◆ getGridView()

template<class Axis1, class Axis2>
std::optional< AnyGridConstView< SurfaceVector > > Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::getGridView ( ) const
overridevirtual

Get a view of the grid for inspection.

Returns
Optional grid view containing surface vectors

Implements Acts::SurfaceArray::ISurfaceGridLookup.

◆ isValidBin()

template<class Axis1, class Axis2>
bool Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::isValidBin ( std::size_t bin) const
overridevirtual

Checks if global bin is valid.

Parameters
binthe global bin index
Returns
bool if the bin is valid
Note
Valid means that the index points to a bin which is not a under or overflow bin or out of range in any axis.

Implements Acts::SurfaceArray::ISurfaceGridLookup.

◆ lookup() [1/3]

template<class Axis1, class Axis2>
const SurfaceVector & Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::lookup ( const Vector3 & position,
const Vector3 & direction ) const
overridevirtual

Performs lookup at pos and returns bin content as const reference.

Parameters
positionLookup position
directionLookup direction
Returns
SurfaceVector at given bin

Implements Acts::SurfaceArray::ISurfaceGridLookup.

◆ lookup() [2/3]

template<class Axis1, class Axis2>
const SurfaceVector & Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::lookup ( std::size_t bin) const
overridevirtual

Performs lookup at global bin and returns bin content as const reference.

Parameters
binGlobal lookup bin
Returns
SurfaceVector at given bin

Implements Acts::SurfaceArray::ISurfaceGridLookup.

◆ lookup() [3/3]

template<class Axis1, class Axis2>
SurfaceVector & Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::lookup ( std::size_t bin)
overridevirtual

Performs lookup at global bin and returns bin content as reference.

Parameters
binGlobal lookup bin
Returns
SurfaceVector at given bin

Implements Acts::SurfaceArray::ISurfaceGridLookup.

◆ neighbors()

template<class Axis1, class Axis2>
const SurfaceVector & Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::neighbors ( const Vector3 & position,
const Vector3 & direction ) const
overridevirtual

Performs a lookup at pos, but returns neighbors as well.

Parameters
positionLookup position
directionLookup direction
Returns
SurfaceVector at given bin. Copy of all bins selected

Implements Acts::SurfaceArray::ISurfaceGridLookup.

◆ size()

template<class Axis1, class Axis2>
std::size_t Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::size ( ) const
overridevirtual

Returns the total size of the grid (including under/overflow bins).

Returns
Size of the grid data structure

Implements Acts::SurfaceArray::ISurfaceGridLookup.

◆ surfaceRepresentation()

template<class Axis1, class Axis2>
const Surface * Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >::surfaceRepresentation ( ) const
overridevirtual

Get the representative surface used for this lookup.

Returns
Surface pointer

Implements Acts::SurfaceArray::ISurfaceGridLookup.