File indexing completed on 2026-06-17 07:50:54
0001
0002
0003
0004 #pragma once
0005
0006 #include "algorithms/reco/LambdaReconstruction.h"
0007 #include "algorithms/reco/LambdaReconstructionConfig.h"
0008 #include "services/algorithms_init/AlgorithmsInit_service.h"
0009 #include "extensions/jana/JOmniFactory.h"
0010
0011 namespace eicrecon {
0012
0013 class LambdaReconstruction_factory
0014 : public JOmniFactory<LambdaReconstruction_factory, LambdaReconstructionConfig> {
0015
0016 public:
0017 using AlgoT = eicrecon::LambdaReconstruction;
0018
0019 private:
0020 std::unique_ptr<AlgoT> m_algo;
0021
0022 PodioInput<edm4eic::ReconstructedParticle> m_hcal_neutrals_input{this};
0023 PodioInput<edm4eic::ReconstructedParticle> m_b0_neutrals_input{this};
0024 PodioInput<edm4eic::ReconstructedParticle> m_ecalendcapp_neutrals_input{this};
0025 PodioInput<edm4eic::ReconstructedParticle> m_lfhcal_neutrals_input{this};
0026
0027 PodioOutput<edm4eic::ReconstructedParticle> m_lambda_output{this};
0028 PodioOutput<edm4eic::ReconstructedParticle> m_lambda_decay_products_cm_output{this};
0029
0030 ParameterRef<std::string> m_offset_position_name{this, "offsetPositionName",
0031 config().offsetPositionName};
0032 ParameterRef<double> m_rot_y{this, "globalToProtonRotation", config().globalToProtonRotation};
0033 ParameterRef<double> m_lambda_mass_window{this, "lambdaMassWindow", config().lambdaMassWindow};
0034 ParameterRef<double> m_pi0_mass_window{this, "pi0Window", config().pi0Window};
0035 ParameterRef<int> m_iterations{this, "iterations", config().iterations};
0036 Service<AlgorithmsInit_service> m_algorithmsInit{this};
0037
0038 public:
0039 void Configure() {
0040 m_algo = std::make_unique<AlgoT>(GetPrefix());
0041 m_algo->level((algorithms::LogLevel)logger()->level());
0042
0043 m_algo->applyConfig(config());
0044 m_algo->init();
0045 }
0046
0047 void Process(int32_t , uint64_t ) {
0048 m_algo->process({m_hcal_neutrals_input(), m_b0_neutrals_input(), m_ecalendcapp_neutrals_input(),
0049 m_lfhcal_neutrals_input()},
0050 {m_lambda_output().get(), m_lambda_decay_products_cm_output().get()});
0051 }
0052 };
0053
0054 }