4#ifndef ACTSTRK_CELLCONTAINER_H
5#define ACTSTRK_CELLCONTAINER_H
17template <
typename coordinates_t, std::
size_t NDIM, std::
unsigned_
integral index_t>
19 CellTmpl(
const std::array<coordinates_t, NDIM> &the_coordinates, index_t src_index)
21 std::array<coordinates_t, NDIM>
28template <
typename coordinates_t, std::
size_t NDIM, std::
unsigned_
integral index_t>
33 unsigned int n_cluster_total,
34 unsigned int n_cells_total)
35 {
reserve(n_modules, n_cluster_total, n_cells_total); }
41 unsigned int n_cluster_total,
42 unsigned int n_cells_total) {
86 .clusterRangeEndIndex =
static_cast<unsigned int>(
m_cellContainer->m_relativeClusterCellIndex.size()),
110 return ModuleRangeGuard(*
this, id_hash);
112 void emplace_back_cell(
const std::array<coordinates_t, NDIM> &the_coordinates, index_t src_index) {
113 m_cells.emplace_back(the_coordinates, src_index);
118 assert(cell_begin_idx < cell_end_idx);
129 assert( a_range.clusterRangeEndIndex >0u );
This is a "hash" representation of an Identifier.
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
unsigned int nClusters() const
unsigned int clusterRangeEndIndex
unsigned int cellBeginIndex
unsigned int clusterRangeBeginIndex
IdentifierHash identifyHash() const
ModuleRangeGuard(CellContainer &cell_container, unsigned int id_hash)
ClusterRange range() const
unsigned int m_clusterBegin
std::span< Cell > moduleCellSpan()
CellContainer * m_cellContainer
void registerNewCluster(index_t cell_begin_idx, index_t cell_end_idx)
CellContainer(unsigned int n_modules, unsigned int n_cluster_total, unsigned int n_cells_total)
std::size_t nCellsTotal() const
void reserve(unsigned int n_modules, unsigned int n_cluster_total, unsigned int n_cells_total)
reserve storage for the cell and cluster data
void emplace_back_cell(const std::array< coordinates_t, NDIM > &the_coordinates, index_t src_index)
void registerClustersForNewModule(const ClusterRange &a_range)
CellTmpl< coordinates_t, NDIM, index_t > Cell
std::vector< Cell > m_cells
std::size_t nModules() const
std::vector< index_t > m_relativeClusterCellIndex
ModuleRangeGuard startNewModule(unsigned int id_hash)
std::size_t nClustersTotal() const
const ClusterRange & moduleClusterRange(unsigned int module_i) const
std::vector< ClusterRange > m_moduleClusterRange
Definition of a cell to be used by the in-place clusterization.
CellTmpl(const std::array< coordinates_t, NDIM > &the_coordinates, index_t src_index)
index_t label
a label which will be assigned by the clusterization
index_t srcIndex
the index to find the source cell
std::array< coordinates_t, NDIM > coordinates
the coordinates of the cell on the regular grid