diff --git a/corsika/detail/modules/epos/Interaction.inl b/corsika/detail/modules/epos/Interaction.inl index 8f73349a4802388c456049dcef53cfeb30643410..79cc7cd0ab644fcc66b946e713081a8c7e870443 100644 --- a/corsika/detail/modules/epos/Interaction.inl +++ b/corsika/detail/modules/epos/Interaction.inl @@ -63,7 +63,7 @@ namespace corsika::epos { } inline bool Interaction::isValidTarget(Code const TargetId) const { - if (is_nucleus(TargetId)) + if (is_nucleus(TargetId)) { if (TargetId == Code::Nucleus) { // nuclearExtension for projectiles only CORSIKA_LOGGER_WARN(logger_, @@ -75,7 +75,9 @@ namespace corsika::epos { } else { return (get_nucleus_Z(TargetId) < maxTargetMassNumber_ ? true : false); } - return false; + } else { + return false; + } } inline void Interaction::initialize_eposlhc_c7() const { @@ -532,7 +534,11 @@ namespace corsika::epos { ::epos::afinal_(); - if (epos_listing_) ::epos::alistf_("EPOSLHC&"); + if (epos_listing_) { + //std::string nam = "EPOSLHC&"; + char nam[9] = "EPOSLHC&"; + ::epos::alistf_(nam); + } // NSTORE-part diff --git a/corsika/detail/modules/epos/ParticleConversion.inl b/corsika/detail/modules/epos/ParticleConversion.inl index 159bea41133c022ce3236e542a1495899e818c57..d23b800c945be7ab2be175fe2d184fc9daaae6d1 100644 --- a/corsika/detail/modules/epos/ParticleConversion.inl +++ b/corsika/detail/modules/epos/ParticleConversion.inl @@ -9,7 +9,6 @@ #pragma once #include <corsika/framework/core/ParticleProperties.hpp> - #include <epos.hpp> namespace corsika::epos { @@ -26,4 +25,15 @@ namespace corsika::epos { return sqrt(mass2) * 1_GeV; } } + + inline PDGCode getEposPDGId(Code const p) { + if (!is_nucleus(p)) { + int eid = corsika::epos::convertToEposRaw(p); + char nxs[4] = "nxs"; + char pdg[4] = "pdg"; + return static_cast<PDGCode>(::epos::idtrafo_(nxs, pdg, eid)); + } else { + throw std::runtime_error("Epos id conversion not implemented for nuclei!"); + } + } } // namespace corsika::epos diff --git a/corsika/modules/epos/ParticleConversion.hpp b/corsika/modules/epos/ParticleConversion.hpp index afa03cc4e0cfdb920b6a7f994ee9a5404200b247..252ebea38eb9ca5311ef919af46c7abc6e395c4e 100644 --- a/corsika/modules/epos/ParticleConversion.hpp +++ b/corsika/modules/epos/ParticleConversion.hpp @@ -62,6 +62,8 @@ namespace corsika::epos { HEPMassType getEposMass(corsika::Code const); + PDGCode getEposPDGId(corsika::Code const); + } // namespace corsika::epos #include <corsika/detail/modules/epos/ParticleConversion.inl> diff --git a/tests/modules/testEpos.cpp b/tests/modules/testEpos.cpp index 5270f0eee5565a2eb3fef5da2fec65f6906fd082..68b31673dea48ae9f36f52951671727e675f34ed 100644 --- a/tests/modules/testEpos.cpp +++ b/tests/modules/testEpos.cpp @@ -82,11 +82,9 @@ TEST_CASE("Epos", "[processes]") { if (!is_nucleus(p)) { int eid = corsika::epos::convertToEposRaw(p); if (eid == 0 && p != Code::Unknown) - CHECK_FALSE(p == convert_from_PDG(static_cast<PDGCode>( - ::epos::idtrafo_("nxs", "pdg", eid)))); + CHECK_FALSE(p == convert_from_PDG(getEposPDGId(p))); else - CHECK(p == convert_from_PDG( - static_cast<PDGCode>(::epos::idtrafo_("nxs", "pdg", eid)))); + CHECK(p == convert_from_PDG(getEposPDGId(p))); } } }