File indexing completed on 2024-09-27 07:03:05
0001
0002
0003
0004
0005 #include "algorithms/reco/UndoAfterBurner.h"
0006 #include "algorithms/reco/UndoAfterBurnerConfig.h"
0007
0008
0009 #include <edm4eic/MCRecoParticleAssociationCollection.h>
0010 #include <edm4eic/ReconstructedParticleCollection.h>
0011 #include <edm4hep/MCParticleCollection.h>
0012
0013 #include "extensions/jana/JOmniFactory.h"
0014
0015 namespace eicrecon {
0016
0017 class UndoAfterBurnerMCParticles_factory :
0018 public JOmniFactory<UndoAfterBurnerMCParticles_factory, UndoAfterBurnerConfig> {
0019
0020 public:
0021 using AlgoT = eicrecon::UndoAfterBurner;
0022 private:
0023 std::unique_ptr<AlgoT> m_algo;
0024
0025 PodioInput<edm4hep::MCParticle> m_mcparts_input {this};
0026 PodioOutput<edm4hep::MCParticle> m_postburn_output {this};
0027
0028 ParameterRef<bool> m_pid_assume_pion_mass {this, "m_pid_assume_pion_mass", config().m_pid_assume_pion_mass};
0029 ParameterRef<double> m_crossing_angle {this, "m_crossing_angle", config().m_crossing_angle};
0030 ParameterRef<double> m_pid_purity {this, "m_pid_purity", config().m_pid_purity};
0031 ParameterRef<bool> m_correct_beam_FX {this, "m_correct_beam_FX", config().m_correct_beam_FX};
0032 ParameterRef<bool> m_pid_use_MC_truth {this, "m_pid_use_MC_truth", config().m_pid_use_MC_truth};
0033
0034
0035 public:
0036 void Configure() {
0037 m_algo = std::make_unique<AlgoT>(GetPrefix());
0038 m_algo->applyConfig(config());
0039 }
0040
0041 void ChangeRun(int64_t run_number) {
0042 }
0043
0044 void Process(int64_t run_number, uint64_t event_number) {
0045 m_algo->process({m_mcparts_input()}, {m_postburn_output().get()});
0046 }
0047
0048 };
0049
0050 }