#include "WireCellImg/BlobGrouping.h"
#include "WireCellIface/SimpleCluster.h"
#include "WireCellUtil/NamedFactory.h"
#include <boost/graph/connected_components.hpp>
Go to the source code of this file.
|
typedef std::unordered_map< WirePlaneLayer_t, cluster_indexed_graph_t > | layer_graphs_t |
|
typedef std::unordered_map<WirePlaneLayer_t, cluster_indexed_graph_t> layer_graphs_t |
Definition at line 37 of file BlobGrouping.cxx.
41 cluster_node_t nblob{iblob};
43 for (
auto wvtx : grind.neighbors(nblob)) {
44 if (wvtx.code() !=
'w') {
47 auto iwire = std::get<IWire::pointer>(wvtx.ptr);
48 auto layer = iwire->planeid().layer();
49 auto&
lg = lgs[layer];
51 for (
auto cvtx : grind.neighbors(wvtx)) {
52 if (cvtx.code() !=
'c') {
char * lg(uint32_t n, Handler h) FMT_ALWAYS_INLINE
static void fill_slice |
( |
cluster_indexed_graph_t & |
grind, |
|
|
ISlice::pointer |
islice |
|
) |
| |
|
static |
Definition at line 63 of file BlobGrouping.cxx.
68 for (
auto other : grind.neighbors(islice)) {
69 if (
other.code() !=
'b') {
76 for (
auto lgit : lgs) {
77 auto& lgrind = lgit.second;
78 auto groups = lgrind.groups();
79 for (
auto& group : groups) {
82 IChannel::shared_vector imeas = IChannel::shared_vector(chans);
84 for (
auto& v : group.second) {
85 if (v.code() ==
'b') {
87 grind.edge(v.ptr, imeas);
90 if (v.code() ==
'c') {
92 grind.edge(v.ptr, imeas);
93 chans->push_back(std::get<IChannel::pointer>(v.ptr));
static void fill_blob(layer_graphs_t &lgs, const cluster_indexed_graph_t &grind, IBlob::pointer iblob)
std::unordered_map< WirePlaneLayer_t, cluster_indexed_graph_t > layer_graphs_t
const GenericPointer< typename T::ValueType > & pointer