LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
util::details::GridContainerIndicesBase< DIMS > Class Template Reference

Index manager for a container of data arranged on a DIMS-dimension grid. More...

#include "GridContainerIndices.h"

Inheritance diagram for util::details::GridContainerIndicesBase< DIMS >:
util::GridContainerIndicesBase1D< DIMS > util::GridContainerIndicesBase2D< DIMS > util::GridContainerIndicesBase3D< DIMS >

Public Types

using CellIndex_t = typename IndexManager_t::LinIndex_t
 type of index for direct access to the cell More...
 
using CellIndexOffset_t = std::ptrdiff_t
 type of difference between indices More...
 
using CellDimIndex_t = CellIndexOffset_t
 type of difference between indices along a dimension More...
 
using CellID_t = std::array< CellDimIndex_t, dims()>
 type of cell coordinate (x, y, z) More...
 

Public Member Functions

 GridContainerIndicesBase (std::array< size_t, dims()> const &new_dims)
 Constructor: specifies the size of the container and allocates it. More...
 
Grid structure
bool has (CellIndexOffset_t index) const
 Returns whether the specified index is valid. More...
 
size_t size () const
 Returns the number of cells in the grid. More...
 
Indexing
CellIndex_t operator[] (CellID_t id) const
 Returns the index of the element from its cell coordinates (no check!) More...
 
CellIndexOffset_t offset (CellID_t const &origin, CellID_t const &cellID) const
 Returns the difference in index of cellID respect to origin. More...
 

Static Public Member Functions

static constexpr unsigned int dims ()
 Returns the number of dimensions in this object. More...
 

Protected Member Functions

CellIndex_t index (CellID_t id) const
 Returns the index of the element from its cell coordinates (no check!) More...
 

Protected Attributes

IndexManager_t indices
 the actual worker More...
 

Private Types

using IndexManager_t = util::TensorIndices< DIMS >
 

Detailed Description

template<unsigned int DIMS>
class util::details::GridContainerIndicesBase< DIMS >

Index manager for a container of data arranged on a DIMS-dimension grid.

Definition at line 34 of file GridContainerIndices.h.

Member Typedef Documentation

template<unsigned int DIMS>
using util::details::GridContainerIndicesBase< DIMS >::CellDimIndex_t = CellIndexOffset_t

type of difference between indices along a dimension

Definition at line 48 of file GridContainerIndices.h.

template<unsigned int DIMS>
using util::details::GridContainerIndicesBase< DIMS >::CellID_t = std::array<CellDimIndex_t, dims()>

type of cell coordinate (x, y, z)

Definition at line 51 of file GridContainerIndices.h.

template<unsigned int DIMS>
using util::details::GridContainerIndicesBase< DIMS >::CellIndex_t = typename IndexManager_t::LinIndex_t

type of index for direct access to the cell

Definition at line 42 of file GridContainerIndices.h.

template<unsigned int DIMS>
using util::details::GridContainerIndicesBase< DIMS >::CellIndexOffset_t = std::ptrdiff_t

type of difference between indices

Definition at line 45 of file GridContainerIndices.h.

template<unsigned int DIMS>
using util::details::GridContainerIndicesBase< DIMS >::IndexManager_t = util::TensorIndices<DIMS>
private

Definition at line 35 of file GridContainerIndices.h.

Constructor & Destructor Documentation

template<unsigned int DIMS>
util::details::GridContainerIndicesBase< DIMS >::GridContainerIndicesBase ( std::array< size_t, dims()> const &  new_dims)
inline

Constructor: specifies the size of the container and allocates it.

Definition at line 54 of file GridContainerIndices.h.

55  : indices(new_dims.begin())
56  {}
IndexManager_t indices
the actual worker

Member Function Documentation

template<unsigned int DIMS>
static constexpr unsigned int util::details::GridContainerIndicesBase< DIMS >::dims ( )
inlinestatic

Returns the number of dimensions in this object.

Definition at line 39 of file GridContainerIndices.h.

39 { return DIMS; }
template<unsigned int DIMS>
bool util::details::GridContainerIndicesBase< DIMS >::has ( CellIndexOffset_t  index) const
inline

Returns whether the specified index is valid.

Definition at line 62 of file GridContainerIndices.h.

References util::TensorIndices< RANK >::hasLinIndex(), and util::details::GridContainerIndicesBase< DIMS >::indices.

62 { return indices.hasLinIndex(index); }
CellIndex_t index(CellID_t id) const
Returns the index of the element from its cell coordinates (no check!)
IndexManager_t indices
the actual worker
bool hasLinIndex(LinIndex_t linIndex) const
Returns whether the specified linear index is valid in this tensor.
template<unsigned int DIMS>
CellIndex_t util::details::GridContainerIndicesBase< DIMS >::index ( CellID_t  id) const
inlineprotected

Returns the index of the element from its cell coordinates (no check!)

Definition at line 87 of file GridContainerIndices.h.

References util::begin(), and util::details::GridContainerIndicesBase< DIMS >::indices.

Referenced by util::GridContainerIndicesBase1D< DIMS >::hasX(), util::GridContainerIndicesBase2D< DIMS >::hasY(), util::GridContainerIndicesBase3D< DIMS >::hasZ(), util::details::GridContainerIndicesBase< DIMS >::offset(), and util::details::GridContainerIndicesBase< DIMS >::operator[]().

87 { return indices(id.begin()); }
IndexManager_t indices
the actual worker
decltype(auto) constexpr begin(T &&obj)
ADL-aware version of std::begin.
Definition: StdUtils.h:69
template<unsigned int DIMS>
CellIndexOffset_t util::details::GridContainerIndicesBase< DIMS >::offset ( CellID_t const &  origin,
CellID_t const &  cellID 
) const
inline

Returns the difference in index of cellID respect to origin.

Definition at line 76 of file GridContainerIndices.h.

References util::details::GridContainerIndicesBase< DIMS >::index().

77  {
78  return index(cellID) - index(origin);
79  }
CellIndex_t index(CellID_t id) const
Returns the index of the element from its cell coordinates (no check!)
constexpr Point origin()
Returns a origin position with a point of the specified type.
Definition: geo_vectors.h:229
template<unsigned int DIMS>
CellIndex_t util::details::GridContainerIndicesBase< DIMS >::operator[] ( CellID_t  id) const
inline

Returns the index of the element from its cell coordinates (no check!)

Definition at line 73 of file GridContainerIndices.h.

References util::details::GridContainerIndicesBase< DIMS >::index().

73 { return index(id); }
CellIndex_t index(CellID_t id) const
Returns the index of the element from its cell coordinates (no check!)
template<unsigned int DIMS>
size_t util::details::GridContainerIndicesBase< DIMS >::size ( ) const
inline

Returns the number of cells in the grid.

Definition at line 65 of file GridContainerIndices.h.

References util::details::GridContainerIndicesBase< DIMS >::indices, and util::TensorIndices< RANK >::size().

65 { return indices.size(); }
IndexManager_t indices
the actual worker
DimSize_t size() const
Returns the size of the minor tensor.

Member Data Documentation


The documentation for this class was generated from the following file: