Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-06-06 08:35:12

0001 // SPDX-License-Identifier: LGPL-3.0-or-later
0002 // Copyright (C) 2024-2025 Chun Yuen Tsang, Simon Gardner
0003 
0004 #pragma once
0005 
0006 #include "algorithms/digi/SiliconChargeSharing.h"
0007 #include "services/algorithms_init/AlgorithmsInit_service.h"
0008 #include "extensions/jana/JOmniFactory.h"
0009 
0010 namespace eicrecon {
0011 
0012 class SiliconChargeSharing_factory
0013     : public JOmniFactory<SiliconChargeSharing_factory, SiliconChargeSharingConfig> {
0014 public:
0015   using AlgoT = eicrecon::SiliconChargeSharing;
0016 
0017 private:
0018   std::unique_ptr<AlgoT> m_algo;
0019 
0020   PodioInput<edm4hep::SimTrackerHit> m_in_sim_track{this};
0021   PodioOutput<edm4hep::SimTrackerHit> m_out_reco_particles{this};
0022 
0023   Service<AlgorithmsInit_service> m_algorithmsInit{this};
0024 
0025   ParameterRef<float> m_sigma_sharingx{this, "sigmaSharingX", config().sigma_sharingx};
0026   ParameterRef<float> m_sigma_sharingy{this, "sigmaSharingY", config().sigma_sharingy};
0027   ParameterRef<float> m_min_edep{this, "minEDep", config().min_edep};
0028   ParameterRef<std::string> m_readout{this, "readout", config().readout};
0029 
0030 public:
0031   void Configure() {
0032     m_algo = std::make_unique<AlgoT>(GetPrefix());
0033     m_algo->level(static_cast<algorithms::LogLevel>(logger()->level()));
0034     m_algo->applyConfig(config());
0035     m_algo->init();
0036   }
0037 
0038   void ChangeRun(int32_t /* run_number */) {}
0039 
0040   void Process(int32_t /* run_number */, uint64_t /* event_number */) {
0041     m_algo->process({m_in_sim_track()}, {m_out_reco_particles().get()});
0042   }
0043 };
0044 } // namespace eicrecon