File indexing completed on 2024-09-27 07:02:56
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #pragma once
0012
0013 #include <DD4hep/Detector.h>
0014 #include <DDRec/CellIDPositionConverter.h>
0015 #include <algorithms/algorithm.h>
0016 #include <algorithms/geo.h>
0017 #include <edm4eic/CalorimeterHitCollection.h>
0018 #include <stdint.h>
0019 #include <gsl/pointers>
0020 #include <string>
0021 #include <string_view>
0022
0023 #include "CalorimeterHitsMergerConfig.h"
0024 #include "algorithms/interfaces/WithPodConfig.h"
0025
0026 namespace eicrecon {
0027
0028 using CalorimeterHitsMergerAlgorithm = algorithms::Algorithm<
0029 algorithms::Input<
0030 edm4eic::CalorimeterHitCollection
0031 >,
0032 algorithms::Output<
0033 edm4eic::CalorimeterHitCollection
0034 >
0035 >;
0036
0037 class CalorimeterHitsMerger
0038 : public CalorimeterHitsMergerAlgorithm,
0039 public WithPodConfig<CalorimeterHitsMergerConfig> {
0040
0041 public:
0042 CalorimeterHitsMerger(std::string_view name)
0043 : CalorimeterHitsMergerAlgorithm{name,
0044 {"inputHitCollection"},
0045 {"outputHitCollection"},
0046 "Group readout hits from a calorimeter."} {}
0047
0048 void init() final;
0049 void process(const Input&, const Output&) const final;
0050
0051 private:
0052 uint64_t id_mask{0}, ref_mask{0};
0053
0054 private:
0055 const dd4hep::Detector* m_detector{algorithms::GeoSvc::instance().detector()};
0056 const dd4hep::rec::CellIDPositionConverter* m_converter{algorithms::GeoSvc::instance().cellIDPositionConverter()};
0057
0058 };
0059
0060 }