ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::GridGlobalIterator< T, Axes > Class Template Reference

Grid iterator using the global position. More...

#include <Acts/Utilities/GridIterator.hpp>

Inheritance diagram for Acts::GridGlobalIterator< T, Axes >:
[legend]

Public Types

using difference_type = std::ptrdiff_t
 Type for iterator arithmetic.
using iterator_category = std::random_access_iterator_tag
 Iterator category for standard algorithms.
using pointer = value_type*
 Pointer type to grid values.
using reference = value_type&
 Reference type to grid values.
using value_type = T
 Type of values stored in grid bins.

Public Member Functions

 GridGlobalIterator ()=default
 Default constructor.
 GridGlobalIterator (const Grid< T, Axes... > &grid, std::size_t idx=0ul)
 Constructor not taking ownership of the grid.
 GridGlobalIterator (const GridGlobalIterator< T, Axes... > &other)=default
 Copy constructor.
 GridGlobalIterator (Grid< T, Axes... > &&grid, std::size_t idx)=delete
 Constructor taking ownership of the grid is not allowed.
 GridGlobalIterator (GridGlobalIterator< T, Axes... > &&other) noexcept
 Move constructor.
 ~GridGlobalIterator ()=default
 Default destructor.
std::size_t globalBinIndex () const
 Retrieve the global bin index.
std::array< std::size_t, DIMlocalBinsIndices () const
 Retrieve the local bins indices.
const value_typeoperator* () const
 Return stored value at given global position.
GridGlobalIterator< T, Axes... > operator+ (const std::size_t offset) const
 Create incremented iterator.
GridGlobalIterator< T, Axes... > & operator++ ()
 Increment operator (pre).
GridGlobalIterator< T, Axes... > operator++ (int)
 Increment operator (post).
GridGlobalIterator< T, Axes... > & operator+= (const std::size_t offset)
 Increment this iterator with an offset.
difference_type operator- (const GridGlobalIterator< T, Axes... > &other) const
 Distance between two GridGlobalIterators.
GridGlobalIterator< T, Axes... > operator- (const std::size_t offset) const
 Create decremented iterator.
GridGlobalIterator< T, Axes... > & operator-= (const std::size_t offset)
 Decrement this iterator with an offset.
auto operator<=> (const GridGlobalIterator< T, Axes... > &other) const
 Comparison (<=>) operator.
GridGlobalIterator< T, Axes... > & operator= (const GridGlobalIterator< T, Axes... > &other)=default
 Copy assignment.
GridGlobalIterator< T, Axes... > & operator= (GridGlobalIterator< T, Axes... > &&other) noexcept
 Move assignment.
bool operator== (const GridGlobalIterator< T, Axes... > &other) const
 Equality operator.

Static Public Attributes

static constexpr std::size_t DIM = sizeof...(Axes)
 Dimensionality of the grid (number of axes).

Detailed Description

template<typename T, class... Axes>
class Acts::GridGlobalIterator< T, Axes >

Grid iterator using the global position.

This iterates on all the bins in the grid, including under- and over-flows

Template Parameters
TThe type stored in the grid bins
Axes... The types of the axes in the grid

Member Typedef Documentation

◆ difference_type

template<typename T, class... Axes>
using Acts::GridGlobalIterator< T, Axes >::difference_type = std::ptrdiff_t

Type for iterator arithmetic.

◆ iterator_category

template<typename T, class... Axes>
using Acts::GridGlobalIterator< T, Axes >::iterator_category = std::random_access_iterator_tag

Iterator category for standard algorithms.

◆ pointer

template<typename T, class... Axes>
using Acts::GridGlobalIterator< T, Axes >::pointer = value_type*

Pointer type to grid values.

◆ reference

template<typename T, class... Axes>
using Acts::GridGlobalIterator< T, Axes >::reference = value_type&

Reference type to grid values.

◆ value_type

template<typename T, class... Axes>
using Acts::GridGlobalIterator< T, Axes >::value_type = T

Type of values stored in grid bins.

Constructor & Destructor Documentation

◆ GridGlobalIterator() [1/5]

template<typename T, class... Axes>
Acts::GridGlobalIterator< T, Axes >::GridGlobalIterator ( )
default

Default constructor.

◆ GridGlobalIterator() [2/5]

template<typename T, class... Axes>
Acts::GridGlobalIterator< T, Axes >::GridGlobalIterator ( Grid< T, Axes... > && grid,
std::size_t idx )
delete

Constructor taking ownership of the grid is not allowed.

Parameters
[in]gridThe grid
[in]idxThe global bin

◆ GridGlobalIterator() [3/5]

template<typename T, class... Axes>
Acts::GridGlobalIterator< T, Axes >::GridGlobalIterator ( const Grid< T, Axes... > & grid,
std::size_t idx = 0ul )
explicit

Constructor not taking ownership of the grid.

Parameters
[in]gridThe grid
[in]idxThe global bin
Precondition
Global bin index must be a valid index for the grid

◆ GridGlobalIterator() [4/5]

template<typename T, class... Axes>
Acts::GridGlobalIterator< T, Axes >::GridGlobalIterator ( const GridGlobalIterator< T, Axes... > & other)
default

Copy constructor.

Parameters
[in]otherThe GlobalBinIterator to be copied

◆ GridGlobalIterator() [5/5]

template<typename T, class... Axes>
Acts::GridGlobalIterator< T, Axes >::GridGlobalIterator ( GridGlobalIterator< T, Axes... > && other)
noexcept

Move constructor.

Parameters
[in]otherThe GlobalBinIterator to be moved

This will invalidate the other GlobalBinIterator

◆ ~GridGlobalIterator()

template<typename T, class... Axes>
Acts::GridGlobalIterator< T, Axes >::~GridGlobalIterator ( )
default

Default destructor.

Member Function Documentation

◆ globalBinIndex()

template<typename T, class... Axes>
std::size_t Acts::GridGlobalIterator< T, Axes >::globalBinIndex ( ) const

Retrieve the global bin index.

Returns
The current global bin index in the grid

◆ localBinsIndices()

template<typename T, class... Axes>
std::array< std::size_t, DIM > Acts::GridGlobalIterator< T, Axes >::localBinsIndices ( ) const

Retrieve the local bins indices.

Returns
The current local bins indexed in the grid

◆ operator*()

template<typename T, class... Axes>
const value_type & Acts::GridGlobalIterator< T, Axes >::operator* ( ) const

Return stored value at given global position.

Returns
The stored value in the grid from that given global position

◆ operator+()

template<typename T, class... Axes>
GridGlobalIterator< T, Axes... > Acts::GridGlobalIterator< T, Axes >::operator+ ( const std::size_t offset) const

Create incremented iterator.

Parameters
[in]offsetThe increment value
Returns
The incremented iterator

◆ operator++() [1/2]

template<typename T, class... Axes>
GridGlobalIterator< T, Axes... > & Acts::GridGlobalIterator< T, Axes >::operator++ ( )

Increment operator (pre).

Returns
The global iterator after the increment

This will increase the global position by one

◆ operator++() [2/2]

template<typename T, class... Axes>
GridGlobalIterator< T, Axes... > Acts::GridGlobalIterator< T, Axes >::operator++ ( int )

Increment operator (post).

Returns
The global iterator before the increment

This will increase the global position by one

◆ operator+=()

template<typename T, class... Axes>
GridGlobalIterator< T, Axes... > & Acts::GridGlobalIterator< T, Axes >::operator+= ( const std::size_t offset)

Increment this iterator with an offset.

Parameters
[in]offsetThe increment value
Returns
The incremented iterator

◆ operator-() [1/2]

template<typename T, class... Axes>
difference_type Acts::GridGlobalIterator< T, Axes >::operator- ( const GridGlobalIterator< T, Axes... > & other) const

Distance between two GridGlobalIterators.

Parameters
[in]otherThe other GridGlobalIterator
Returns
The distance between the two iterators

This will compute the distance by comparing the global positions in the two iterators

Precondition
The two iterators must have the same grid

◆ operator-() [2/2]

template<typename T, class... Axes>
GridGlobalIterator< T, Axes... > Acts::GridGlobalIterator< T, Axes >::operator- ( const std::size_t offset) const

Create decremented iterator.

Parameters
[in]offsetThe decrement value
Returns
The decremented iterator

◆ operator-=()

template<typename T, class... Axes>
GridGlobalIterator< T, Axes... > & Acts::GridGlobalIterator< T, Axes >::operator-= ( const std::size_t offset)

Decrement this iterator with an offset.

Parameters
[in]offsetThe decrement value
Returns
The decremented iterator

◆ operator<=>()

template<typename T, class... Axes>
auto Acts::GridGlobalIterator< T, Axes >::operator<=> ( const GridGlobalIterator< T, Axes... > & other) const

Comparison (<=>) operator.

Parameters
[in]otherThe other GridGlobalIterator to be compared against this one
Returns
The result of the comparison

◆ operator=() [1/2]

template<typename T, class... Axes>
GridGlobalIterator< T, Axes... > & Acts::GridGlobalIterator< T, Axes >::operator= ( const GridGlobalIterator< T, Axes... > & other)
default

Copy assignment.

Parameters
[in]otherThe GlobalBinIterator to be copied
Returns
The new global bin iterator

◆ operator=() [2/2]

template<typename T, class... Axes>
GridGlobalIterator< T, Axes... > & Acts::GridGlobalIterator< T, Axes >::operator= ( GridGlobalIterator< T, Axes... > && other)
noexcept

Move assignment.

Parameters
[in]otherThe GlobalBinIterator to be moved
Returns
The new global bin iterator

This will invalidate the other GlobalBinIterator

◆ operator==()

template<typename T, class... Axes>
bool Acts::GridGlobalIterator< T, Axes >::operator== ( const GridGlobalIterator< T, Axes... > & other) const

Equality operator.

Parameters
[in]otherThe other GridGlobalIterator to be compared against this one
Returns
The result of the comparison

Member Data Documentation

◆ DIM

template<typename T, class... Axes>
std::size_t Acts::GridGlobalIterator< T, Axes >::DIM = sizeof...(Axes)
staticconstexpr

Dimensionality of the grid (number of axes).