diff --git a/corsika/detail/modules/sibyll/Interaction.inl b/corsika/detail/modules/sibyll/Interaction.inl index ed42473ec865d339e540e7b7e1904df763136e09..07f390b7385a6be73b155b8fe8dd8a64b4308c7a 100644 --- a/corsika/detail/modules/sibyll/Interaction.inl +++ b/corsika/detail/modules/sibyll/Interaction.inl @@ -127,7 +127,10 @@ namespace corsika::sibyll { si::CrossSectionType weightedProdCrossSection = mediumComposition.getWeightedSum( [=](corsika::Code targetID) -> si::CrossSectionType { - return std::get<0>(this->getCrossSection(corsikaBeamId, targetID, ECoM)); + // Argon needs special handling .... + return targetID == Code::Argon ? CrossSectionType::zero() + : std::get<0>(this->getCrossSection( + corsikaBeamId, targetID, ECoM)); }); CORSIKA_LOG_DEBUG( @@ -243,6 +246,7 @@ namespace corsika::sibyll { for (size_t i = 0; i < compVec.size(); ++i) { auto const targetId = compVec[i]; + if (targetId == Code::Argon) continue; // skip Argon .... const auto [sigProd, sigEla] = getCrossSection(corsikaBeamId, targetId, Ecm); [[maybe_unused]] const auto& dummy_sigEla = sigEla; cross_section_of_components[i] = sigProd; diff --git a/corsika/detail/modules/sibyll/NuclearInteraction.inl b/corsika/detail/modules/sibyll/NuclearInteraction.inl index db7788a117dd5a6cb5cb75422a10e37ebee0cffb..1460b1133616c1347cdd2eaa156bbcd06ac307b1 100644 --- a/corsika/detail/modules/sibyll/NuclearInteraction.inl +++ b/corsika/detail/modules/sibyll/NuclearInteraction.inl @@ -51,6 +51,10 @@ namespace corsika::sibyll { template <typename TEnvironment> inline void NuclearInteraction<TEnvironment>::printCrossSectionTable(Code pCode) { + if (pCode == Code::Argon) { + CORSIKA_LOG_WARN("SIBYLL cannot handle Argon as target!"); + return; + } const int k = targetComponentsIndex_.at(pCode); Code pNuclei[] = {Code::Helium, Code::Lithium7, Code::Oxygen, Code::Neon, Code::Argon, Code::Iron}; @@ -97,6 +101,7 @@ namespace corsika::sibyll { // loop over target components, at most 4!! int k = -1; for (auto& ptarg : allElementsInUniverse) { + if (ptarg == Code::Argon) continue; // NEED TO IGNORE Argon .... ++k; CORSIKA_LOG_DEBUG("NuclearInteraction: init target component: {}", ptarg); const int ib = get_nucleus_A(ptarg); @@ -265,6 +270,7 @@ namespace corsika::sibyll { const auto& w = mediumComposition.getFractions(); // loop over components in medium for (auto const targetId : mediumComposition.getComponents()) { + if (targetId == Code::Argon) continue; // NEED TO IGNORE Argon .... i++; CORSIKA_LOG_DEBUG("NuclearInteraction: get interaction length for target: {}", get_name(targetId)); @@ -422,6 +428,7 @@ namespace corsika::sibyll { for (size_t i = 0; i < compVec.size(); ++i) { auto const targetId = compVec[i]; + if (targetId == Code::Argon) continue; // NEED TO IGNORE Argon .... CORSIKA_LOG_DEBUG("target component: {}", get_name(targetId)); CORSIKA_LOG_DEBUG("beam id: {}", get_name(beamId)); const auto [sigProd, sigEla] =