File IndexedGridFiller.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

namespace Experimental

Functions

std::vector<std::size_t> binSequence(std::array<std::size_t, 2u> minMaxBins, std::size_t expand, std::size_t nBins, detail::AxisBoundaryType type)

Helper method to generate completely populated bin sequences that respect the boundary type of the axis.

Note

for closed binning a span over half the bins flips direction

Parameters
  • minMaxBins – estimated bin range (aka binning boundary box)

  • expand – the parameter to expand the view (extra window)

  • nBins – the maximum number of bins on this axis

  • type – the boundary type of the axis (for correct bin closure)

Returns

a vector of bins to be filled

template<typename grid_type>
std::set<typename grid_type::index_t> localIndices(const grid_type &grid, const std::vector<typename grid_type::point_t> &queries, const std::vector<std::size_t> &expansion = {})

Helper method to fill local bins given a set of query points bin in between the extra points are filled, and a possible expansion of the bin window can be chosen.

Template Parameters

grid_type – the type of the grid that determines locall binning

Parameters
  • grid – the grid used for this

  • queries – the grid positions for the bin queries

  • expansion – are the additional (configured) number of bins to expand the view

Returns

a set of unique indices

template<typename local_bin>
std::string outputIndices(const std::set<local_bin> &lbins)

Helper method to screen output the local bins.

Template Parameters

local_bin – the type of the local bins

Parameters

lbins – the local bins

Returns

a string containing the local bins orderd in a set

struct BinningValueReferenceGenerator
#include <Acts/Detector/IndexedGridFiller.hpp>

A struct to access reference postions based on bin values.

This generator will provide only one filling point and hence only a single bin in the indexed grid.

Public Functions

inline const std::vector<Vector3> references(const GeometryContext &gctx, const Surface &surface) const

Helper to access a reference postion based on binning value.

Parameters
  • gctx – the geometry context of this operation

  • surface – the surface for which the reference point is to be accessed

Returns

a vector of referene points for filling

Public Members

BinningValue bValue

The binning value.

struct CenterReferenceGenerator
#include <Acts/Detector/IndexedGridFiller.hpp>

A struct to access the center position.

This generator will provide only one filling point and hence only a single bin in the indexed grid.

Public Functions

inline const std::vector<Vector3> references(const GeometryContext &gctx, const Surface &surface) const

Helper to access the Center point of for filling the grid.

Parameters
  • gctx – the geometry context of this operation

  • surface – the surface for which the reference point is to be accessed

Returns

a vector of referene points for filling

struct IndexedGridFiller
#include <Acts/Detector/IndexedGridFiller.hpp>

A helper class that fills surfaces into predefined grids.

Public Functions

template<typename index_grid, typename indices>
inline void assignToAll(index_grid &iGrid, const indices &idcs) const

Helper method to fill a dedicated list of indices into the entire grid.

This is useful if e.g. certain objects are to be attempted in any case, regardless of their binning.

template<typename index_grid, typename indexed_objects, typename reference_generator>
inline void fill(const GeometryContext &gctx, index_grid &iGrid, const indexed_objects &iObjects, const reference_generator &rGenerator, const typename index_grid::grid_type::value_type &aToAll = {}) const

This method takes a collection of objects and fills them into an index grid - it uses a reference generator for grid query points and then completes the bins in between.

It also allows for expanding the fill view.

Note

as this is a Detector module, the objects within the indexed_objects container are assumed to have pointer semantics

Template Parameters
  • index_grid – the type of the index grid

  • indexed_objects – the type of the object container

  • reference_generator – the generator for reference points to be filled

Parameters
  • gctx – the geometry context of the operation

  • iGrid – [in,out] the index grid object to be filled

  • iObjects – the object container to be indexed

  • rGenerator – the reference point generator for position queries

  • aToAll – the indices that are assigned to all bins

inline const Logger &logger() const

Access to the logger.

Returns

a const reference to the logger

Public Members

std::vector<std::size_t> binExpansion = {}

Bin expansion where needed.

std::unique_ptr<const Logger> oLogger = getDefaultLogger("IndexedGridFiller", Logging::INFO)

Screen output logger.

struct PolyhedronReferenceGenerator
#include <Acts/Detector/IndexedGridFiller.hpp>

A struct to access generated vertices from surface polyhedrons These vertices are then used to find the bin boundary box for the indexed grid.

The grid filling then completes the empty bins in between and expands if necessary.

Public Functions

inline const std::vector<Vector3> references(const GeometryContext &gctx, const Surface &surface) const

Helper to access the Center point of for filling the grid.

Parameters
  • gctx – the geometry context of this operation

  • surface – the surface for which the reference point is to be accessed

Returns

a vector of referene points for filling

Public Members

bool addBarycenter = true

Also use the barycenter.

unsigned int nSegments = 1

The number of segments to approximate (1 means extrema points only)