IAP GITLAB

Skip to content
Snippets Groups Projects
Commit d7da841f authored by Maximilian Reininghaus's avatar Maximilian Reininghaus :vulcan:
Browse files

IsHadron & GetNucleusA/Z for Code::Nucleus

parent e4dca006
No related branches found
No related tags found
1 merge request!146Resolve "cascade_example with nucleus primary doesn't work"
Pipeline #837 passed
...@@ -120,14 +120,22 @@ namespace corsika::particles { ...@@ -120,14 +120,22 @@ namespace corsika::particles {
} }
int constexpr GetNucleusA(Code const p) { int constexpr GetNucleusA(Code const p) {
if (p == Code::Nucleus) {
throw std::runtime_error("GetNucleusA(Code::Nucleus) is impossible!");
}
return detail::nucleusA[static_cast<CodeIntType>(p)]; return detail::nucleusA[static_cast<CodeIntType>(p)];
} }
int constexpr GetNucleusZ(Code const p) { int constexpr GetNucleusZ(Code const p) {
if (p == Code::Nucleus) {
throw std::runtime_error("GetNucleusZ(Code::Nucleus) is impossible!");
}
return detail::nucleusZ[static_cast<CodeIntType>(p)]; return detail::nucleusZ[static_cast<CodeIntType>(p)];
} }
bool constexpr IsNucleus(Code const p) { return GetNucleusA(p) != 0; } bool constexpr IsNucleus(Code const p) {
return (p == Code::Nucleus) || (GetNucleusA(p) != 0);
}
/** /**
* the output operator for humand-readable particle codes * the output operator for humand-readable particle codes
......
...@@ -102,6 +102,7 @@ TEST_CASE("ParticleProperties", "[Particles]") { ...@@ -102,6 +102,7 @@ TEST_CASE("ParticleProperties", "[Particles]") {
REQUIRE(IsHadron(Code::Proton)); REQUIRE(IsHadron(Code::Proton));
REQUIRE(IsHadron(Code::PiPlus)); REQUIRE(IsHadron(Code::PiPlus));
REQUIRE(IsHadron(Code::Oxygen)); REQUIRE(IsHadron(Code::Oxygen));
REQUIRE(IsHadron(Code::Nucleus));
} }
SECTION("Particle groups: muons") { SECTION("Particle groups: muons") {
...@@ -124,7 +125,6 @@ TEST_CASE("ParticleProperties", "[Particles]") { ...@@ -124,7 +125,6 @@ TEST_CASE("ParticleProperties", "[Particles]") {
REQUIRE_FALSE(IsNeutrino(Code::Oxygen)); REQUIRE_FALSE(IsNeutrino(Code::Oxygen));
} }
SECTION("Nuclei") { SECTION("Nuclei") {
REQUIRE_FALSE(IsNucleus(Code::Gamma)); REQUIRE_FALSE(IsNucleus(Code::Gamma));
REQUIRE(IsNucleus(Code::Argon)); REQUIRE(IsNucleus(Code::Argon));
...@@ -137,5 +137,8 @@ TEST_CASE("ParticleProperties", "[Particles]") { ...@@ -137,5 +137,8 @@ TEST_CASE("ParticleProperties", "[Particles]") {
REQUIRE(GetNucleusA(Code::Tritium) == 3); REQUIRE(GetNucleusA(Code::Tritium) == 3);
REQUIRE(Hydrogen::GetNucleusZ() == 1); REQUIRE(Hydrogen::GetNucleusZ() == 1);
REQUIRE(Tritium::GetNucleusA() == 3); REQUIRE(Tritium::GetNucleusA() == 3);
REQUIRE_THROWS(GetNucleusA(Code::Nucleus));
REQUIRE_THROWS(GetNucleusZ(Code::Nucleus));
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment