diff --git a/Processes/Sibyll/ParticleConversion.cc b/Processes/Sibyll/ParticleConversion.cc index 040b35b2c482fe8da9f0cd7b1c4602f6d15c3dc2..b342830c0760ae0c3a1c437e2b1500c08799f7f4 100644 --- a/Processes/Sibyll/ParticleConversion.cc +++ b/Processes/Sibyll/ParticleConversion.cc @@ -20,7 +20,10 @@ corsika::units::si::HEPMassType corsika::process::sibyll::GetSibyllMass( if (pCode == corsika::particles::Code::Nucleus) throw std::runtime_error("Cannot GetMass() of particle::Nucleus -> unspecified"); auto sCode = ConvertToSibyllRaw(pCode); - return sqrt(get_sibyll_mass2(sCode)) * 1_GeV; + if (sCode == 0) + return std::numeric_limits<double>::quiet_NaN() * 1_GeV; + else + return sqrt(get_sibyll_mass2(sCode)) * 1_GeV; } // const std::map<sibyll::PID, ParticleProperties::InternalParticleCode> diff --git a/Processes/Sibyll/sibyll2.3c.cc b/Processes/Sibyll/sibyll2.3c.cc index 7cb2c027dc45948c5db2eeae473bc883305b604b..52cfd7c26188ae652ed09805e9d67123fc20f7bc 100644 --- a/Processes/Sibyll/sibyll2.3c.cc +++ b/Processes/Sibyll/sibyll2.3c.cc @@ -14,7 +14,7 @@ #include <random> int get_nwounded() { return s_chist_.nwd; } -double get_sibyll_mass2(int& id) { return s_mass1_.am2[id]; } +double get_sibyll_mass2(int& id) { return s_mass1_.am2[abs(id) - 1]; } double s_rndm_(int&) { static corsika::random::RNG& rng = diff --git a/Processes/Sibyll/testSibyll.cc b/Processes/Sibyll/testSibyll.cc index 2fef7138f31d07d70a070c0011d9bfb1fb6f2b08..553c980c6c52a7ca1eb1d6a7bfa653296fb5d2a5 100644 --- a/Processes/Sibyll/testSibyll.cc +++ b/Processes/Sibyll/testSibyll.cc @@ -40,7 +40,6 @@ TEST_CASE("Sibyll", "[processes]") { REQUIRE(process::sibyll::ConvertToSibyllRaw(particles::Proton::GetCode()) == 13); REQUIRE(process::sibyll::ConvertToSibyll(particles::XiStarC0::GetCode()) == process::sibyll::SibyllCode::XiStarC0); - } SECTION("canInteractInSibyll") {