ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::Ccl Namespace Reference

Classes

struct  ClusteringData
struct  Connect1D
struct  Connect2D
struct  DefaultConnect
struct  DefaultConnect< Cell, 1 >
struct  DefaultConnect< Cell, 2 >
class  DisjointSets
struct  TimedConnect

Concepts

concept  CanAcceptCell
concept  CanReserve
concept  HasRetrievableColumnInfo
concept  HasRetrievableRowInfo
concept  HasRetrievableTimeInfo

Typedefs

using Label = int

Enumerations

enum class  ConnectResult { eNoConn , eNoConnStop , eConn , eDuplicate }

Functions

template<typename CellCollection, typename ClusterCollection, std::size_t GridDim = 2, typename Connect = DefaultConnect<typename CellCollection::value_type, GridDim>>
requires (GridDim == 1 || GridDim == 2)
void createClusters (Acts::Ccl::ClusteringData &data, CellCollection &cells, ClusterCollection &clusters, Connect &&connect=Connect())
 createClusters Convenience function which runs both labelClusters and mergeClusters.
template<typename CellCollection, std::size_t GridDim = 2, typename Connect = DefaultConnect<typename CellCollection::value_type, GridDim>>
void labelClusters (Acts::Ccl::ClusteringData &data, CellCollection &cells, Connect &&connect=Connect())
 labelClusters
template<typename CellCollection, typename ClusterCollection>
requires (Acts::Ccl::CanAcceptCell<typename CellCollection::value_type, typename ClusterCollection::value_type>)
void mergeClusters (Acts::Ccl::ClusteringData &data, const CellCollection &cells, ClusterCollection &outv)
 mergeClusters

Variables

constexpr Label NO_LABEL = 0

Typedef Documentation

◆ Label

using Acts::Ccl::Label = int

Enumeration Type Documentation

◆ ConnectResult

enum class Acts::Ccl::ConnectResult
strong
Enumerator
eNoConn 
eNoConnStop 
eConn 
eDuplicate 

Function Documentation

◆ createClusters()

template<typename CellCollection, typename ClusterCollection, std::size_t GridDim = 2, typename Connect = DefaultConnect<typename CellCollection::value_type, GridDim>>
requires (GridDim == 1 || GridDim == 2)
void Acts::Ccl::createClusters ( Acts::Ccl::ClusteringData & data,
CellCollection & cells,
ClusterCollection & clusters,
Connect && connect = Connect() )

createClusters Convenience function which runs both labelClusters and mergeClusters.

Exceptions
std::invalid_argumentif the input contains duplicate cells.

◆ labelClusters()

template<typename CellCollection, std::size_t GridDim = 2, typename Connect = DefaultConnect<typename CellCollection::value_type, GridDim>>
void Acts::Ccl::labelClusters ( Acts::Ccl::ClusteringData & data,
CellCollection & cells,
Connect && connect = Connect() )

labelClusters

In-place connected component labelling using the Hoshen-Kopelman algorithm. The Cell type must have the following functions defined: int getCellRow(const Cell&), int getCellColumn(const Cell&)

Parameters
[in]datacollection of quantities for clusterization
[in]cellsthe cell collection to be labeled
[in]connectthe connection type (see DefaultConnect)
Exceptions
std::invalid_argumentif the input contains duplicate cells.

◆ mergeClusters()

template<typename CellCollection, typename ClusterCollection>
requires (Acts::Ccl::CanAcceptCell<typename CellCollection::value_type, typename ClusterCollection::value_type>)
void Acts::Ccl::mergeClusters ( Acts::Ccl::ClusteringData & data,
const CellCollection & cells,
ClusterCollection & outv )

mergeClusters

Merge a set of cells previously labeled (for instance with labelClusters) into actual clusters. The Cluster type must have the following function defined: void clusterAddCell(Cluster&, const Cell&)

Variable Documentation

◆ NO_LABEL

Label Acts::Ccl::NO_LABEL = 0
constexpr