6#include <DD4hep/Detector.h>
7#include <DD4hep/IDDescriptor.h>
8#include <algorithms/algorithm.h>
9#include <algorithms/geo.h>
10#include <edm4eic/CalorimeterHitCollection.h>
11#include <edm4eic/ProtoClusterCollection.h>
12#include <edm4hep/RawCalorimeterHit.h>
13#include <edm4hep/Vector2f.h>
17#include <gsl/pointers>
31 algorithms::Algorithm<algorithms::Input<edm4eic::CalorimeterHitCollection>,
32 algorithms::Output<edm4eic::ProtoClusterCollection>>;
40 {
"inputProtoClusterCollection"},
41 {
"outputClusterCollection"},
42 "Island clustering."} {}
45 void process(const Input&, const Output&) const final;
48 const
dd4hep::Detector* m_detector{algorithms::GeoSvc::instance().detector()};
49 std::vector<double> m_localDistXY;
55 std::function<edm4hep::Vector2f(
const CaloHit& h1,
const CaloHit& h2)>
74 void bfs_group(
const edm4eic::CalorimeterHitCollection& hits, std::set<std::size_t>& group,
75 std::size_t idx, std::vector<bool>& visits)
const;
78 std::vector<std::size_t> find_maxima(
const edm4eic::CalorimeterHitCollection& hits,
79 const std::set<std::size_t>& group,
80 bool global =
false)
const;
83 inline static void vec_normalize(std::vector<double>& vals) {
85 for (
auto& val : vals) {
88 for (
auto& val : vals) {
94 void split_group(
const edm4eic::CalorimeterHitCollection& hits, std::set<std::size_t>& group,
95 const std::vector<std::size_t>& maxima,
96 edm4eic::ProtoClusterCollection* protoClusters)
const;
Definition CalorimeterIslandCluster.h:35
double transverseEnergyProfileScaleUnits
Definition CalorimeterIslandCluster.h:58
dd4hep::IDDescriptor m_idSpec
Definition CalorimeterIslandCluster.h:70
std::array< double, 2 > neighbourDist
Definition CalorimeterIslandCluster.h:67
std::function< edm4hep::Vector2f(const CaloHit &h1, const CaloHit &h2)> transverseEnergyProfileMetric
Definition CalorimeterIslandCluster.h:56
double u_transverseEnergyProfileScale
Definition CalorimeterIslandCluster.h:57
std::function< edm4hep::Vector2f(const CaloHit &, const CaloHit &)> hitsDist
Definition CalorimeterIslandCluster.h:53
std::function< bool(const CaloHit &maximum, const CaloHit &other)> is_maximum_neighbourhood
Definition CalorimeterIslandCluster.h:64
std::function< bool(const CaloHit &h1, const CaloHit &h2)> is_neighbour
Definition CalorimeterIslandCluster.h:61
CalorimeterIslandCluster(std::string_view name)
Definition CalorimeterIslandCluster.h:38
Definition WithPodConfig.h:22
Definition ActsGeometryProvider.h:28
-client
Definition CalorimeterClusterRecoCoG.cc:37
edm4eic::CalorimeterHit CaloHit
Definition CalorimeterIslandCluster.h:28
algorithms::Algorithm< algorithms::Input< edm4eic::CalorimeterHitCollection >, algorithms::Output< edm4eic::ProtoClusterCollection > > CalorimeterIslandClusterAlgorithm
Definition CalorimeterIslandCluster.h:32