13#include <DD4hep/Detector.h>
14#include <DD4hep/IDDescriptor.h>
15#include <DDRec/CellIDPositionConverter.h>
16#include <Parsers/Primitives.h>
17#include <algorithms/algorithm.h>
18#include <algorithms/geo.h>
19#include <edm4eic/CalorimeterHitCollection.h>
23#include <gsl/pointers>
28#include <unordered_map>
38using MergeMap = std::unordered_map<uint64_t, std::vector<std::size_t>>;
40using MapFunc = std::function<int(
const edm4eic::CalorimeterHit&)>;
43 algorithms::Algorithm<algorithms::Input<edm4eic::CalorimeterHitCollection>,
44 algorithms::Output<edm4eic::CalorimeterHitCollection>>;
52 {
"inputHitCollection"},
53 {
"outputHitCollection"},
54 "Group readout hits from a calorimeter."} {}
57 void process(const Input&, const Output&) const final;
63 mutable std::map<std::string, MapFunc> ref_maps;
64 dd4hep::IDDescriptor id_desc;
65 dd4hep::BitFieldCoder* id_decoder;
68 const dd4hep::Detector* m_detector{algorithms::GeoSvc::instance().detector()};
69 const dd4hep::rec::CellIDPositionConverter* m_converter{
70 algorithms::GeoSvc::instance().cellIDPositionConverter()};
73 void build_merge_map(
const edm4eic::CalorimeterHitCollection* in_hits,
MergeMap& merge_map)
const;
Definition CalorimeterHitsMerger.h:47
CalorimeterHitsMerger(std::string_view name)
Definition CalorimeterHitsMerger.h:50
Definition WithPodConfig.h:22
-client
Definition CalorimeterClusterRecoCoG.cc:37
algorithms::Algorithm< algorithms::Input< edm4eic::CalorimeterHitCollection >, algorithms::Output< edm4eic::CalorimeterHitCollection > > CalorimeterHitsMergerAlgorithm
Definition CalorimeterHitsMerger.h:44
std::function< int(const edm4eic::CalorimeterHit &)> MapFunc
Definition CalorimeterHitsMerger.h:40
std::pair< std::string, int > RefField
Definition CalorimeterHitsMerger.h:39
std::unordered_map< uint64_t, std::vector< std::size_t > > MergeMap
Definition CalorimeterHitsMerger.h:38