diff --git a/Processes/Proposal/Interaction.cc b/Processes/Proposal/Interaction.cc index e7ccbaec44a26d182f9def29bbf9daa187ad5de6..0e6234cf6284bd15f610109f522eb8c2f2c84022 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 6f1aeb501d2a7f144bbab3bdf9f54e9611c18ce7..be683506995648a1b2b29eef3134a00f74de4fa3 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);