ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::SurfaceArray::ISurfaceGridLookup Struct Referenceabstract

Base interface for all surface lookups. More...

#include <Acts/Surfaces/SurfaceArray.hpp>

Inheritance diagram for Acts::SurfaceArray::ISurfaceGridLookup:
[legend]

Public Member Functions

virtual std::span< const Surface *const > at (std::array< std::size_t, 2 > gridIndices, std::uint8_t neighborDistance) const =0
 Get all surfaces in bin given by local grid indices and neighbor distance.
virtual std::vector< AxisDirectionbinningValues () const
 The binning values described by this surface grid lookup.
virtual void fill (const GeometryContext &gctx, std::span< const Surface *const > surfaces)=0
 Fill provided surfaces into the contained Grid.
virtual std::vector< const IAxis * > getAxes () const =0
 Returns copies of the axes used in the grid as AnyAxis.
virtual Vector3 getBinCenter (std::size_t bin) const =0
 Gets the center position of bin bin in global coordinates.
virtual bool isValidBin (std::size_t bin) const =0
 Checks if global bin is valid.
virtual std::span< const Surface *const > lookup (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const =0
 Performs lookup at pos and returns bin content as const reference.
virtual const std::vector< const Surface * > & lookup (const Vector3 &position, const Vector3 &direction) const =0
 Performs lookup at pos and returns bin content as const reference.
virtual const std::vector< const Surface * > & lookup (std::size_t bin) const =0
 Performs lookup at global bin and returns bin content as const reference.
virtual std::vector< const Surface * > & lookup (std::size_t bin)=0
 Performs lookup at global bin and returns bin content as reference.
virtual std::uint8_t maxNeighborDistance () const =0
 Get the maximum neighbor distance that is supported by this lookup.
virtual std::span< const Surface *const > neighbors (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const =0
 Performs a lookup at pos, but returns neighbors as well.
virtual const std::vector< const Surface * > & neighbors (const Vector3 &position, const Vector3 &direction) const =0
 Performs a lookup at pos, but returns neighbors as well.
virtual std::array< std::size_t, 2 > numLocalBins () const =0
 Get the number of local bins in each dimension.
virtual std::size_t size () const =0
 Returns the total size of the grid (including under/overflow bins).
virtual const SurfacesurfaceRepresentation () const =0
 Get the representative surface used for this lookup.

Detailed Description

Base interface for all surface lookups.

Member Function Documentation

◆ at()

virtual std::span< const Surface *const > Acts::SurfaceArray::ISurfaceGridLookup::at ( std::array< std::size_t, 2 > gridIndices,
std::uint8_t neighborDistance ) const
pure virtual

Get all surfaces in bin given by local grid indices and neighbor distance.

Parameters
gridIndicesthe local grid indices
neighborDistancethe neighbor distance to include in the lookup
Returns
span of surface pointers of the bin at that position and its neighbors

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ binningValues()

virtual std::vector< AxisDirection > Acts::SurfaceArray::ISurfaceGridLookup::binningValues ( ) const
virtual

The binning values described by this surface grid lookup.

They are in order of the axes (optional) and empty for eingle lookups

Returns
Vector of axis directions for binning

Reimplemented in Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ fill()

virtual void Acts::SurfaceArray::ISurfaceGridLookup::fill ( const GeometryContext & gctx,
std::span< const Surface *const > surfaces )
pure virtual

Fill provided surfaces into the contained Grid.

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

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ getAxes()

virtual std::vector< const IAxis * > Acts::SurfaceArray::ISurfaceGridLookup::getAxes ( ) const
pure virtual

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

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

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ getBinCenter()

virtual Vector3 Acts::SurfaceArray::ISurfaceGridLookup::getBinCenter ( std::size_t bin) const
pure virtual

Gets the center position of bin bin in global coordinates.

Parameters
binthe global bin index
Returns
The bin center

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ isValidBin()

virtual bool Acts::SurfaceArray::ISurfaceGridLookup::isValidBin ( std::size_t bin) const
pure virtual

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.

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ lookup() [1/4]

virtual std::span< const Surface *const > Acts::SurfaceArray::ISurfaceGridLookup::lookup ( const GeometryContext & gctx,
const Vector3 & position,
const Vector3 & direction ) const
pure virtual

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

Parameters
gctxThe current geometry context object, e.g. alignment
positionLookup position
directionLookup direction
Returns
A span of surface pointers

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ lookup() [2/4]

virtual const std::vector< const Surface * > & Acts::SurfaceArray::ISurfaceGridLookup::lookup ( const Vector3 & position,
const Vector3 & direction ) const
pure virtual

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

Parameters
positionLookup position
directionLookup direction
Returns
A vector of surfaces at given bin

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ lookup() [3/4]

virtual const std::vector< const Surface * > & Acts::SurfaceArray::ISurfaceGridLookup::lookup ( std::size_t bin) const
pure virtual

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

Parameters
binGlobal lookup bin
Returns
A vector of surfaces at given bin

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ lookup() [4/4]

virtual std::vector< const Surface * > & Acts::SurfaceArray::ISurfaceGridLookup::lookup ( std::size_t bin)
pure virtual

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

Parameters
binGlobal lookup bin
Returns
A vector of surfaces at given bin

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ maxNeighborDistance()

virtual std::uint8_t Acts::SurfaceArray::ISurfaceGridLookup::maxNeighborDistance ( ) const
pure virtual

Get the maximum neighbor distance that is supported by this lookup.

This is used to determine how many neighbors to include in neighbor lookups.

Returns
Maximum neighbor distance

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ neighbors() [1/2]

virtual std::span< const Surface *const > Acts::SurfaceArray::ISurfaceGridLookup::neighbors ( const GeometryContext & gctx,
const Vector3 & position,
const Vector3 & direction ) const
pure virtual

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

Parameters
gctxThe current geometry context object, e.g. alignment
positionLookup position
directionLookup direction
Returns
A span of surface pointers

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ neighbors() [2/2]

virtual const std::vector< const Surface * > & Acts::SurfaceArray::ISurfaceGridLookup::neighbors ( const Vector3 & position,
const Vector3 & direction ) const
pure virtual

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

Parameters
positionLookup position
directionLookup direction
Returns
A vector of surfaces at given bin. Copy of all bins selected

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ numLocalBins()

virtual std::array< std::size_t, 2 > Acts::SurfaceArray::ISurfaceGridLookup::numLocalBins ( ) const
pure virtual

Get the number of local bins in each dimension.

This is used to determine the size of the grid for neighbor lookups.

Returns
Array of number of local bins in each dimension

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ size()

virtual std::size_t Acts::SurfaceArray::ISurfaceGridLookup::size ( ) const
pure virtual

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

Returns
Size of the grid data structure

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.

◆ surfaceRepresentation()

virtual const Surface * Acts::SurfaceArray::ISurfaceGridLookup::surfaceRepresentation ( ) const
pure virtual

Get the representative surface used for this lookup.

Returns
Surface pointer

Implemented in Acts::SurfaceArray::SingleElementLookup, and Acts::SurfaceArray::SurfaceGridLookup< Axis1, Axis2 >.