From 81082d9ce7e02bb63bd974ceba7c9f63ad175f85 Mon Sep 17 00:00:00 2001 From: ralfulrich <ralf.ulrich@kit.edu> Date: Tue, 12 Oct 2021 11:14:31 +0200 Subject: [PATCH] fixed small problems and examples --- corsika/detail/modules/sibyll/Decay.inl | 11 ++++++----- corsika/modules/sibyll/ParticleConversion.hpp | 8 ++++---- examples/cascade_example.cpp | 8 ++++++-- examples/corsika.cpp | 3 ++- examples/hybrid_MC.cpp | 6 +++--- examples/mars.cpp | 3 ++- examples/vertical_EAS.cpp | 6 ++++-- tests/modules/testSibyll.cpp | 3 ++- 8 files changed, 29 insertions(+), 19 deletions(-) diff --git a/corsika/detail/modules/sibyll/Decay.inl b/corsika/detail/modules/sibyll/Decay.inl index 55f8446ff..465190f6c 100644 --- a/corsika/detail/modules/sibyll/Decay.inl +++ b/corsika/detail/modules/sibyll/Decay.inl @@ -35,11 +35,12 @@ namespace corsika::sibyll { inline bool Decay::canHandleDecay(const Code vParticleCode) { // if known to sibyll and not proton or neutrino it can decay - if (vParticleCode == Code::Proton || vParticleCode == Code::AntiProton || - vParticleCode == Code::NuE || vParticleCode == Code::NuMu || - vParticleCode == Code::NuTau || vParticleCode == Code::NuEBar || - vParticleCode == Code::NuMuBar || vParticleCode == Code::NuTauBar || - vParticleCode == Code::Electron || vParticleCode == Code::Positron) + if (is_nucleus(vParticleCode) || vParticleCode == Code::Proton || + vParticleCode == Code::AntiProton || vParticleCode == Code::NuE || + vParticleCode == Code::NuMu || vParticleCode == Code::NuTau || + vParticleCode == Code::NuEBar || vParticleCode == Code::NuMuBar || + vParticleCode == Code::NuTauBar || vParticleCode == Code::Electron || + vParticleCode == Code::Positron) return false; else if (corsika::sibyll::convertToSibyllRaw( vParticleCode)) // non-zero for particles known to sibyll diff --git a/corsika/modules/sibyll/ParticleConversion.hpp b/corsika/modules/sibyll/ParticleConversion.hpp index 5351280f9..653b83fc3 100644 --- a/corsika/modules/sibyll/ParticleConversion.hpp +++ b/corsika/modules/sibyll/ParticleConversion.hpp @@ -48,13 +48,13 @@ namespace corsika::sibyll { return corsikaCode; } - int constexpr convertToSibyllRaw(corsika::Code pCode) { - return static_cast<int>(convertToSibyll(pCode)); + int constexpr convertToSibyllRaw(Code const code) { + return static_cast<int>(convertToSibyll(code)); } - int constexpr getSibyllXSCode(corsika::Code pCode) { + int constexpr getSibyllXSCode(Code const code) { return static_cast<SibyllXSClassIntType>( - corsika2sibyllXStype[static_cast<corsika::CodeIntType>(pCode)]); + corsika2sibyllXStype[static_cast<corsika::CodeIntType>(code)]); } bool constexpr canInteract(corsika::Code pCode) { return getSibyllXSCode(pCode) > 0; } diff --git a/examples/cascade_example.cpp b/examples/cascade_example.cpp index f7693fc40..dde77011d 100644 --- a/examples/cascade_example.cpp +++ b/examples/cascade_example.cpp @@ -8,6 +8,7 @@ #include <corsika/framework/core/Cascade.hpp> #include <corsika/framework/process/ProcessSequence.hpp> +#include <corsika/framework/process/SwitchProcessSequence.hpp> #include <corsika/framework/core/PhysicalUnits.hpp> #include <corsika/framework/random/RNGManager.hpp> #include <corsika/framework/geometry/Sphere.hpp> @@ -146,8 +147,11 @@ int main() { BetheBlochPDG eLoss{showerAxis}; // assemble all processes into an ordered process list - auto sequence = - make_sequence(stackInspect, sibyll, sibyllNuc, decay, eLoss, cut, trackWriter); + auto sequence = make_sequence( + stackInspect, + make_select([](auto const& particle) { return is_nucleus(particle.getPID()); }, + sibyllNuc, sibyll), + decay, eLoss, cut, trackWriter); // define air shower object, run simulation Cascade EAS(env, tracking, sequence, output, stack); diff --git a/examples/corsika.cpp b/examples/corsika.cpp index 8166b9e11..33a63d390 100644 --- a/examples/corsika.cpp +++ b/examples/corsika.cpp @@ -292,7 +292,8 @@ int main(int argc, char** argv) { InteractionCounter sibyllCounted(sibyll); corsika::sibyll::NuclearInteraction sibyllNuc(sibyll, env); InteractionCounter sibyllNucCounted(sibyllNuc); - auto heModelCounted = make_sequence(sibyllNucCounted, sibyllCounted); + auto heModelCounted = make_select([](auto const& p) { return is_nucleus(p.getPID()); }, + sibyllNucCounted, sibyllCounted); corsika::pythia8::Decay decayPythia; diff --git a/examples/hybrid_MC.cpp b/examples/hybrid_MC.cpp index da892f8d4..04a126366 100644 --- a/examples/hybrid_MC.cpp +++ b/examples/hybrid_MC.cpp @@ -158,10 +158,10 @@ int main(int argc, char** argv) { setup::Stack stack; stack.clear(); unsigned short const A = std::stoi(std::string(argv[1])); - unsigned short Z = std::stoi(std::string(argv[2])); - const Code beamCode = get_nucleus_code(A, Z); + unsigned short const Z = std::stoi(std::string(argv[2])); + Code const beamCode = get_nucleus_code(A, Z); auto const mass = get_mass(beamCode); - const HEPEnergyType E0 = 1_GeV * std::stof(std::string(argv[3])); + HEPEnergyType const E0 = 1_GeV * std::stof(std::string(argv[3])); double theta = 0.; auto const thetaRad = theta / 180. * M_PI; diff --git a/examples/mars.cpp b/examples/mars.cpp index b4c4b381c..e1f525020 100644 --- a/examples/mars.cpp +++ b/examples/mars.cpp @@ -313,7 +313,8 @@ int main(int argc, char** argv) { InteractionCounter sibyllCounted(sibyll); corsika::sibyll::NuclearInteraction sibyllNuc(sibyll, env); InteractionCounter sibyllNucCounted(sibyllNuc); - auto heModelCounted = make_sequence(sibyllNucCounted, sibyllCounted); + auto heModelCounted = make_select([](auto const& p) { return is_nucleus(p.getPID()); }, + sibyllNucCounted, sibyllCounted); corsika::pythia8::Decay decayPythia; diff --git a/examples/vertical_EAS.cpp b/examples/vertical_EAS.cpp index 638752840..09e229bca 100644 --- a/examples/vertical_EAS.cpp +++ b/examples/vertical_EAS.cpp @@ -251,8 +251,10 @@ int main(int argc, char** argv) { : cutE_(cutE) {} bool operator()(const Particle& p) { return (p.getEnergy() < cutE_); } }; - auto hadronSequence = make_select(EnergySwitch(55_GeV), urqmdCounted, - make_sequence(sibyllNucCounted, sibyllCounted)); + auto hadronSequence = + make_select(EnergySwitch(55_GeV), urqmdCounted, + make_select([](auto const& p) { return is_nucleus(p.getPID()); }, + sibyllNucCounted, sibyllCounted)); auto decaySequence = make_sequence(decayPythia, decaySibyll); // directory for outputs diff --git a/tests/modules/testSibyll.cpp b/tests/modules/testSibyll.cpp index 68e69fe57..c5dca766f 100644 --- a/tests/modules/testSibyll.cpp +++ b/tests/modules/testSibyll.cpp @@ -60,7 +60,8 @@ TEST_CASE("Sibyll", "modules") { } SECTION("cross-section type") { - + CHECK(corsika::sibyll::getSibyllXSCode(Code::Helium) == 0); + CHECK(corsika::sibyll::getSibyllXSCode(Code::Proton) == 1); CHECK(corsika::sibyll::getSibyllXSCode(Code::Electron) == 0); CHECK(corsika::sibyll::getSibyllXSCode(Code::K0Long) == 3); CHECK(corsika::sibyll::getSibyllXSCode(Code::SigmaPlus) == 1); -- GitLab