File indexing completed on 2025-07-01 07:56:31
0001
0002
0003
0004 #pragma once
0005
0006 #include "algorithms/calorimetry/HEXPLIT.h"
0007 #include "services/algorithms_init/AlgorithmsInit_service.h"
0008 #include "extensions/jana/JOmniFactory.h"
0009
0010 namespace eicrecon {
0011
0012 class HEXPLIT_factory : public JOmniFactory<HEXPLIT_factory, HEXPLITConfig> {
0013
0014 using AlgoT = eicrecon::HEXPLIT;
0015
0016 private:
0017 std::unique_ptr<AlgoT> m_algo;
0018 PodioInput<edm4eic::CalorimeterHit> m_rec_hits_input{this};
0019 PodioOutput<edm4eic::CalorimeterHit> m_subcell_hits_output{this};
0020
0021 ParameterRef<double> m_MIP{this, "MIP", config().MIP};
0022 ParameterRef<double> m_Emin_in_MIPs{this, "Emin_in_MIPs", config().Emin_in_MIPs};
0023 ParameterRef<double> m_delta_in_MIPs{this, "delta_in_MIPs", config().delta_in_MIPs};
0024 ParameterRef<double> m_tmax{this, "tmax", config().tmax};
0025
0026 Service<AlgorithmsInit_service> m_algorithmsInit{this};
0027
0028 public:
0029 void Configure() {
0030 m_algo = std::make_unique<AlgoT>(GetPrefix());
0031 m_algo->level(static_cast<algorithms::LogLevel>(logger()->level()));
0032 m_algo->applyConfig(config());
0033 m_algo->init();
0034 }
0035
0036 void ChangeRun(int32_t ) {}
0037
0038 void Process(int32_t , uint64_t ) {
0039 m_algo->process({m_rec_hits_input()}, {m_subcell_hits_output().get()});
0040 }
0041 };
0042
0043 }