14 :
public JOmniFactory<EnergyPositionClusterMerger_factory, EnergyPositionClusterMergerConfig> {
20 std::unique_ptr<AlgoT> m_algo;
22 PodioInput<edm4eic::Cluster> m_energy_cluster_input{
this};
23 PodioInput<edm4eic::MCRecoClusterParticleAssociation> m_energy_assoc_input{
this};
24 PodioInput<edm4eic::Cluster> m_position_cluster_input{
this};
25 PodioInput<edm4eic::MCRecoClusterParticleAssociation> m_position_assoc_input{
this};
27 PodioOutput<edm4eic::Cluster> m_cluster_output{
this};
28#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
29 PodioOutput<edm4eic::MCRecoClusterParticleLink> m_links_output{
this};
31 PodioOutput<edm4eic::MCRecoClusterParticleAssociation> m_assoc_output{
this};
33 ParameterRef<double> m_energyRelTolerance{
this,
"energyRelTolerance",
34 config().energyRelTolerance};
35 ParameterRef<double> m_phiTolerance{
this,
"phiTolerance",
config().phiTolerance};
36 ParameterRef<double> m_etaTolerance{
this,
"etaTolerance",
config().etaTolerance};
38 Service<AlgorithmsInit_service> m_algorithmsInit{
this};
42 m_algo = std::make_unique<AlgoT>(
GetPrefix());
43 m_algo->level(
static_cast<algorithms::LogLevel
>(
logger()->level()));
44 m_algo->applyConfig(
config());
49 m_algo->process({m_energy_cluster_input(), m_energy_assoc_input(), m_position_cluster_input(),
50 m_position_assoc_input()},
51 {m_cluster_output().get(),
52#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
53 m_links_output().get(),
55 m_assoc_output().get()});