diff --git a/Documentation/Examples/cascade_example.cc b/Documentation/Examples/cascade_example.cc index c2cc3c4f49f0ce60b089a9e3b893151e6b7464e8..d5a7097b17d0e6ca6112b1143ed7d9f9a8f191e1 100644 --- a/Documentation/Examples/cascade_example.cc +++ b/Documentation/Examples/cascade_example.cc @@ -135,7 +135,8 @@ int main() { process::sibyll::Interaction sibyll; process::sibyll::NuclearInteraction sibyllNuc(sibyll, env); process::sibyll::Decay decay; - process::particle_cut::ParticleCut cut(20_GeV); + // cascade with only HE model ==> HE cut + process::particle_cut::ParticleCut cut(80_GeV); process::track_writer::TrackWriter trackWriter("tracks.dat"); process::energy_loss::EnergyLoss eLoss; @@ -158,8 +159,4 @@ int main() { << "relative difference (%): " << (Efinal / E0 - 1) * 100 << endl; cout << "total dEdX energy (GeV): " << eLoss.GetTotal() / 1_GeV << endl << "relative difference (%): " << eLoss.GetTotal() / E0 * 100 << endl; - - // basic check for unit-tests - assert(cut.GetNumberEmParticles() == 127); - assert(cut.GetNumberInvParticles() == 116); } diff --git a/Framework/Particles/ParticleData.xml b/Framework/Particles/ParticleData.xml index 6c8c3d0a06fec27481d508c030ddad6a7df8f925..0102f3e261ceee58b0b94003ec940d37231dd10c 100644 --- a/Framework/Particles/ParticleData.xml +++ b/Framework/Particles/ParticleData.xml @@ -860,6 +860,7 @@ <channel onMode="1" bRatio="0.0016900" products="111 111 111"/> <channel onMode="1" bRatio="0.0001076" products="13 -13 22"/> </particle> +--> <particle id="333" name="phi" spinType="3" chargeType="0" colType="0" m0="1.01946" mWidth="0.00426" mMin="1.00000" mMax="1.04000"> @@ -878,6 +879,7 @@ <channel onMode="1" bRatio="0.0000470" products="223 111"/> </particle> +<!-- <particle id="335" name="f'_2(1525)" spinType="5" chargeType="0" colType="0" m0="1.52500" mWidth="0.07300" mMin="1.10000" mMax="2.00000"> <channel onMode="1" bRatio="0.4444000" products="321 -321"/> diff --git a/Processes/Sibyll/ParticleConversion.h b/Processes/Sibyll/ParticleConversion.h index a6b31fc8fa980bca74e8af5a62cf2443ca9bc883..62ccdda99f9a6d2f57a0e2b53437d8389f2e71e6 100644 --- a/Processes/Sibyll/ParticleConversion.h +++ b/Processes/Sibyll/ParticleConversion.h @@ -13,7 +13,7 @@ #include <corsika/particles/ParticleProperties.h> -#include <map> +#include <string> namespace corsika::process::sibyll { @@ -28,7 +28,14 @@ namespace corsika::process::sibyll { } corsika::particles::Code constexpr ConvertFromSibyll(SibyllCode pCode) { - return sibyll2corsika[static_cast<SibyllCodeIntType>(pCode) - minSibyll]; + auto const s = static_cast<SibyllCodeIntType>(pCode); + auto const corsikaCode = sibyll2corsika[s - minSibyll]; + if (corsikaCode == corsika::particles::Code::Unknown) { + throw std::runtime_error(std::string("SIBYLL/CORSIKA conversion of ") + .append(std::to_string(s)) + .append(" impossible")); + } + return corsikaCode; } int constexpr ConvertToSibyllRaw(corsika::particles::Code pCode) { @@ -40,7 +47,7 @@ namespace corsika::process::sibyll { } bool constexpr CanInteract(corsika::particles::Code pCode) { - return GetSibyllXSCode(pCode) != 0; + return GetSibyllXSCode(pCode) > 0; } } // namespace corsika::process::sibyll diff --git a/Processes/Sibyll/code_generator.py b/Processes/Sibyll/code_generator.py index cb7d0cb2471c004b84345a544698defbd3e9c9f0..d2ca87c6f221bf169ad080a5dd06295016e025e4 100755 --- a/Processes/Sibyll/code_generator.py +++ b/Processes/Sibyll/code_generator.py @@ -64,7 +64,7 @@ def generate_corsika2sibyll(particle_db): def generate_corsika2sibyll_xsType(particle_db): string = "std::array<int, {:d}> constexpr corsika2sibyllXStype = {{\n".format(len(particle_db)) for identifier, pData in particle_db.items(): - sibCodeXS = pData.get("sibyll_xsType", -1) + sibCodeXS = pData.get("sibyll_xsType", 0) string += " {:d}, // {:s}\n".format(sibCodeXS, identifier if sibCodeXS else identifier + " (not implemented in SIBYLL)") string += "};\n" return string diff --git a/Processes/Sibyll/sibyll_codes.dat b/Processes/Sibyll/sibyll_codes.dat index 45aa507f964304a941b2ccf5c257f52e11f46c26..1bc87904bf53354323ce514761e22a868d0111b7 100644 --- a/Processes/Sibyll/sibyll_codes.dat +++ b/Processes/Sibyll/sibyll_codes.dat @@ -90,4 +90,5 @@ XiCMinusBar -87 1 1 OmegaC0 99 0 0 OmegaC0Bar -99 0 0 Jpsi 83 0 0 +Phi 33 0 0 #Unknown 0 0 0 diff --git a/Processes/Sibyll/testSibyll.cc b/Processes/Sibyll/testSibyll.cc index b0099568795e074ce6bc72e2635eaa1a35c84344..492b6bf3ed455c8ee3c7c599ab16b98cccec0030 100644 --- a/Processes/Sibyll/testSibyll.cc +++ b/Processes/Sibyll/testSibyll.cc @@ -45,6 +45,9 @@ TEST_CASE("Sibyll", "[processes]") { REQUIRE_FALSE(process::sibyll::CanInteract(particles::Electron::GetCode())); REQUIRE_FALSE(process::sibyll::CanInteract(particles::SigmaC0::GetCode())); + + REQUIRE_FALSE(process::sibyll::CanInteract(particles::Nucleus::GetCode())); + REQUIRE_FALSE(process::sibyll::CanInteract(particles::Helium::GetCode())); } SECTION("cross-section type") {