File indexing completed on 2025-08-06 08:09:57
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include <memory>
0012 #include <vector>
0013
0014 namespace Acts::Ccl {
0015
0016 using Label = int;
0017 constexpr Label NO_LABEL = 0;
0018
0019
0020
0021
0022
0023 enum class ConnectResult {
0024 eNoConn,
0025 eNoConnStop,
0026 eConn
0027 };
0028
0029
0030 template <typename Cell>
0031 struct Connect2D {
0032 bool conn8;
0033 Connect2D() : conn8{true} {}
0034 explicit Connect2D(bool commonCorner) : conn8{commonCorner} {}
0035 ConnectResult operator()(const Cell& ref, const Cell& iter) const;
0036 };
0037
0038
0039 template <typename Cell>
0040 struct Connect1D {
0041 ConnectResult operator()(const Cell& ref, const Cell& iter) const;
0042 };
0043
0044
0045 template <typename Cell, std::size_t GridDim = 2>
0046 struct DefaultConnect {
0047 static_assert(GridDim != 1 && GridDim != 2,
0048 "Only grid dimensions of 1 or 2 are supported");
0049 };
0050
0051 template <typename Cell>
0052 struct DefaultConnect<Cell, 2> : public Connect2D<Cell> {
0053 explicit DefaultConnect(bool commonCorner) : Connect2D<Cell>(commonCorner) {}
0054 DefaultConnect() : DefaultConnect(true) {}
0055 };
0056
0057 template <typename Cell>
0058 struct DefaultConnect<Cell, 1> : public Connect1D<Cell> {};
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070 template <typename CellCollection, std::size_t GridDim = 2,
0071 typename Connect =
0072 DefaultConnect<typename CellCollection::value_type, GridDim>>
0073 void labelClusters(CellCollection& cells, Connect connect = Connect());
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083 template <typename CellCollection, typename ClusterCollection,
0084 std::size_t GridDim>
0085 ClusterCollection mergeClusters(CellCollection& );
0086
0087
0088
0089 template <typename CellCollection, typename ClusterCollection,
0090 std::size_t GridDim = 2,
0091 typename Connect =
0092 DefaultConnect<typename CellCollection::value_type, GridDim>>
0093 ClusterCollection createClusters(CellCollection& cells,
0094 Connect connect = Connect());
0095
0096 }
0097
0098 #include "Acts/Clusterization/Clusterization.ipp"