From bdaf8fcd19f455177695db8016d411b3d3c4a2b5 Mon Sep 17 00:00:00 2001 From: Jean-Marco Alameddine <jean-marco.alameddine@tu-dortmund.de> Date: Mon, 29 Jun 2020 15:53:47 +0200 Subject: [PATCH] Fix conversion of CORSIKA direction to PROPOSAL direction --- Processes/Proposal/Interaction.cc | 6 ++++-- Processes/Proposal/Interaction.h | 17 +++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Processes/Proposal/Interaction.cc b/Processes/Proposal/Interaction.cc index e7ccbaec4..0e6234cf6 100644 --- a/Processes/Proposal/Interaction.cc +++ b/Processes/Proposal/Interaction.cc @@ -82,8 +82,10 @@ namespace corsika::process::proposal { auto point = PROPOSAL::Vector3D(vP.GetPosition().GetX() / 1_cm, vP.GetPosition().GetY() / 1_cm, vP.GetPosition().GetZ() / 1_cm); - auto p = vP.GetMomentum().GetComponents(); - auto direction = PROPOSAL::Vector3D(p[0] / 1_GeV, p[1] / 1_GeV, p[2] / 1_GeV); + auto d = vP.GetDirection().GetComponents(); + auto direction = PROPOSAL::Vector3D(d.GetX().magnitude(), + d.GetY().magnitude(), + d.GetZ().magnitude()); auto loss = make_tuple(static_cast<int>(type), point, direction, v * primary_energy, 0.); auto sec = std::get<SECONDARIES>(calc->second) diff --git a/Processes/Proposal/Interaction.h b/Processes/Proposal/Interaction.h index 6f1aeb501..be6835069 100644 --- a/Processes/Proposal/Interaction.h +++ b/Processes/Proposal/Interaction.h @@ -43,14 +43,6 @@ namespace corsika::process::proposal { unique_ptr<PROPOSAL::Displacement>>; std::unordered_map<const NuclearComposition*, calculator_t> calculators; - enum { SECONDARIES, INTERACTION, DISPLACEMENT }; - template <typename Particle> - auto GetCalculator(Particle& vP) { - auto& comp = vP.GetNode()->GetModelProperties().GetNuclearComposition(); - auto calc_it = calculators.find(&comp); - if (calc_it != calculators.end()) return calc_it; - return BuildCalculator(vP.GetPID(), comp); - } auto BuildCalculator(particles::Code corsika_code, NuclearComposition const& comp) { auto medium = media.at(&comp); @@ -92,6 +84,15 @@ namespace corsika::process::proposal { } } // namespace corsika::process::proposal + enum { SECONDARIES, INTERACTION, DISPLACEMENT }; + template <typename Particle> + auto GetCalculator(Particle& vP) { + auto& comp = vP.GetNode()->GetModelProperties().GetNuclearComposition(); + auto calc_it = calculators.find(&comp); + if (calc_it != calculators.end()) return calc_it; + return BuildCalculator(vP.GetPID(), comp); + } + public: template <typename TEnvironment> Interaction(TEnvironment const& env, CORSIKA_ParticleCut const& cut); -- GitLab