Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-06-17 07:50:54

0001 // SPDX-License-Identifier: LGPL-3.0-or-later
0002 // Copyright (C) 2026 Sebouh Paul, Baptiste Fraisse
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 /* run_number */, uint64_t /* event_number */) {
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 } // namespace eicrecon