IAP GITLAB

Skip to content
Snippets Groups Projects
Commit 6a460fac authored by Maximilian Reininghaus's avatar Maximilian Reininghaus :vulcan: Committed by ralfulrich
Browse files

testParticles

parent 91fdc3e6
No related branches found
No related tags found
No related merge requests found
...@@ -11,132 +11,133 @@ ...@@ -11,132 +11,133 @@
#include <catch2/catch.hpp> #include <catch2/catch.hpp>
using namespace corsika::units;
using namespace corsika::units::si;
using namespace corsika; using namespace corsika;
TEST_CASE("ParticleProperties", "[Particles]") { TEST_CASE("ParticleProperties", "[Particles]") {
SECTION("Types") { SECTION("Types") {
CHECK(Electron::GetCode() == Code::Electron); REQUIRE(Electron::code == Code::Electron);
CHECK(Positron::GetCode() == Code::Positron); REQUIRE(Positron::code == Code::Positron);
CHECK(Proton::GetCode() == Code::Proton); REQUIRE(Proton::code == Code::Proton);
CHECK(Neutron::GetCode() == Code::Neutron); REQUIRE(Neutron::code == Code::Neutron);
CHECK(Gamma::GetCode() == Code::Gamma); REQUIRE(Gamma::code == Code::Gamma);
CHECK(PiPlus::GetCode() == Code::PiPlus); REQUIRE(PiPlus::code == Code::PiPlus);
} }
SECTION("Masses") { SECTION("Masses") {
CHECK(Electron::GetMass() / (511_keV) == Approx(1)); REQUIRE(Electron::mass() / (511_keV) == Approx(1));
CHECK(Electron::GetMass() / GetMass(Code::Electron) == Approx(1)); REQUIRE(Electron::mass() / mass(Code::Electron) == Approx(1));
REQUIRE((Proton::GetMass() + Neutron::GetMass()) / constants::nucleonMass == REQUIRE((Proton::mass() + Neutron::mass()) / constants::nucleonMass == Approx(2));
Approx(2));
} }
SECTION("Charges") { SECTION("Charges") {
CHECK(Electron::GetCharge() / constants::e == Approx(-1)); REQUIRE(Electron::charge() / constants::e == Approx(-1));
CHECK(Positron::GetCharge() / constants::e == Approx(+1)); REQUIRE(Positron::charge() / constants::e == Approx(+1));
CHECK(GetCharge(Positron::GetAntiParticle()) / constants::e == Approx(-1)); REQUIRE(charge(Positron::anti_code) / constants::e == Approx(-1));
} }
SECTION("Names") { SECTION("Names") {
CHECK(Electron::GetName() == "e-"); REQUIRE(Electron::name() == "e-");
CHECK(PiMinus::GetName() == "pi-"); REQUIRE(PiMinus::name() == "pi-");
CHECK(Nucleus::GetName() == "nucleus"); REQUIRE(Nucleus::name() == "nucleus");
CHECK(Iron::GetName() == "iron"); REQUIRE(Iron::name() == "iron");
} }
SECTION("PDG") { SECTION("PDG") {
CHECK(GetPDG(Code::PiPlus) == PDGCode::PiPlus); REQUIRE(PDG(Code::PiPlus) == PDGCode::PiPlus);
CHECK(GetPDG(Code::DPlus) == PDGCode::DPlus); REQUIRE(PDG(Code::DPlus) == PDGCode::DPlus);
CHECK(GetPDG(Code::NuMu) == PDGCode::NuMu); REQUIRE(PDG(Code::NuMu) == PDGCode::NuMu);
CHECK(GetPDG(Code::NuE) == PDGCode::NuE); REQUIRE(PDG(Code::NuE) == PDGCode::NuE);
CHECK(GetPDG(Code::MuMinus) == PDGCode::MuMinus); REQUIRE(PDG(Code::MuMinus) == PDGCode::MuMinus);
CHECK(static_cast<int>(GetPDG(Code::PiPlus)) == 211); REQUIRE(static_cast<int>(PDG(Code::PiPlus)) == 211);
CHECK(static_cast<int>(GetPDG(Code::DPlus)) == 411); REQUIRE(static_cast<int>(PDG(Code::DPlus)) == 411);
CHECK(static_cast<int>(GetPDG(Code::NuMu)) == 14); REQUIRE(static_cast<int>(PDG(Code::NuMu)) == 14);
CHECK(static_cast<int>(GetPDG(Code::NuEBar)) == -12); REQUIRE(static_cast<int>(PDG(Code::NuEBar)) == -12);
CHECK(static_cast<int>(GetPDG(Code::MuMinus)) == 13); REQUIRE(static_cast<int>(PDG(Code::MuMinus)) == 13);
} }
SECTION("Conversion PDG -> internal") { SECTION("Conversion PDG -> internal") {
CHECK(ConvertFromPDG(PDGCode::KStarMinus) == Code::KStarMinus); REQUIRE(convert_from_PDG(PDGCode::KStarMinus) == Code::KStarMinus);
CHECK(ConvertFromPDG(PDGCode::MuPlus) == Code::MuPlus); REQUIRE(convert_from_PDG(PDGCode::MuPlus) == Code::MuPlus);
CHECK(ConvertFromPDG(PDGCode::SigmaStarCMinusBar) == Code::SigmaStarCMinusBar); REQUIRE(convert_from_PDG(PDGCode::SigmaStarCMinusBar) == Code::SigmaStarCMinusBar);
} }
SECTION("Lifetimes") { SECTION("Lifetimes") {
REQUIRE(GetLifetime(Code::Electron) == REQUIRE(lifetime(Code::Electron) ==
std::numeric_limits<double>::infinity() * si::second); std::numeric_limits<double>::infinity() * si::second);
REQUIRE(GetLifetime(Code::DPlus) < GetLifetime(Code::Gamma)); REQUIRE(lifetime(Code::DPlus) < lifetime(Code::Gamma));
REQUIRE(GetLifetime(Code::RhoPlus) / si::second == REQUIRE(lifetime(Code::RhoPlus) / si::second ==
(Approx(4.414566727909413e-24).epsilon(1e-3))); (Approx(4.414566727909413e-24).epsilon(1e-3)));
REQUIRE(GetLifetime(Code::SigmaMinusBar) / si::second == REQUIRE(lifetime(Code::SigmaMinusBar) / si::second ==
(Approx(8.018880848563575e-11).epsilon(1e-5))); (Approx(8.018880848563575e-11).epsilon(1e-5)));
REQUIRE(GetLifetime(Code::MuPlus) / si::second == REQUIRE(lifetime(Code::MuPlus) / si::second ==
(Approx(2.1970332555864364e-06).epsilon(1e-5))); (Approx(2.1970332555864364e-06).epsilon(1e-5)));
} }
SECTION("Particle groups: electromagnetic") { SECTION("Particle groups: electromagnetic") {
CHECK(IsEM(Code::Gamma)); REQUIRE(is_em(Code::Gamma));
CHECK(IsEM(Code::Electron)); REQUIRE(is_em(Code::Electron));
CHECK_FALSE(IsEM(Code::MuPlus)); REQUIRE_FALSE(is_em(Code::MuPlus));
CHECK_FALSE(IsEM(Code::NuE)); REQUIRE_FALSE(is_em(Code::NuE));
CHECK_FALSE(IsEM(Code::Proton)); REQUIRE_FALSE(is_em(Code::Proton));
CHECK_FALSE(IsEM(Code::PiPlus)); REQUIRE_FALSE(is_em(Code::PiPlus));
CHECK_FALSE(IsEM(Code::Oxygen)); REQUIRE_FALSE(is_em(Code::Oxygen));
} }
SECTION("Particle groups: hadrons") { SECTION("Particle groups: hadrons") {
CHECK_FALSE(IsHadron(Code::Gamma)); REQUIRE_FALSE(is_hadron(Code::Gamma));
CHECK_FALSE(IsHadron(Code::Electron)); REQUIRE_FALSE(is_hadron(Code::Electron));
CHECK_FALSE(IsHadron(Code::MuPlus)); REQUIRE_FALSE(is_hadron(Code::MuPlus));
CHECK_FALSE(IsHadron(Code::NuE)); REQUIRE_FALSE(is_hadron(Code::NuE));
CHECK(IsHadron(Code::Proton)); REQUIRE(is_hadron(Code::Proton));
CHECK(IsHadron(Code::PiPlus)); REQUIRE(is_hadron(Code::PiPlus));
CHECK(IsHadron(Code::Oxygen)); REQUIRE(is_hadron(Code::Oxygen));
CHECK(IsHadron(Code::Nucleus)); REQUIRE(is_hadron(Code::Nucleus));
} }
SECTION("Particle groups: muons") { SECTION("Particle groups: muons") {
CHECK_FALSE(IsMuon(Code::Gamma)); REQUIRE_FALSE(is_muon(Code::Gamma));
CHECK_FALSE(IsMuon(Code::Electron)); REQUIRE_FALSE(is_muon(Code::Electron));
CHECK(IsMuon(Code::MuPlus)); REQUIRE(is_muon(Code::MuPlus));
CHECK_FALSE(IsMuon(Code::NuE)); REQUIRE(is_muon(Code::MuMinus));
CHECK_FALSE(IsMuon(Code::Proton)); REQUIRE_FALSE(is_muon(Code::NuE));
CHECK_FALSE(IsMuon(Code::PiPlus)); REQUIRE_FALSE(is_muon(Code::Proton));
CHECK_FALSE(IsMuon(Code::Oxygen)); REQUIRE_FALSE(is_muon(Code::PiPlus));
REQUIRE_FALSE(is_muon(Code::Oxygen));
} }
SECTION("Particle groups: neutrinos") { SECTION("Particle groups: neutrinos") {
CHECK_FALSE(IsNeutrino(Code::Gamma)); REQUIRE_FALSE(is_neutrino(Code::Gamma));
CHECK_FALSE(IsNeutrino(Code::Electron)); REQUIRE_FALSE(is_neutrino(Code::Electron));
CHECK_FALSE(IsNeutrino(Code::MuPlus)); REQUIRE_FALSE(is_neutrino(Code::MuPlus));
CHECK(IsNeutrino(Code::NuE)); REQUIRE_FALSE(is_neutrino(Code::Proton));
CHECK_FALSE(IsNeutrino(Code::Proton)); REQUIRE_FALSE(is_neutrino(Code::PiPlus));
CHECK_FALSE(IsNeutrino(Code::PiPlus)); REQUIRE_FALSE(is_neutrino(Code::Oxygen));
CHECK_FALSE(IsNeutrino(Code::Oxygen));
REQUIRE(is_neutrino(Code::NuE));
REQUIRE(is_neutrino(Code::NuMu));
REQUIRE(is_neutrino(Code::NuTau));
REQUIRE(is_neutrino(Code::NuEBar));
REQUIRE(is_neutrino(Code::NuMuBar));
REQUIRE(is_neutrino(Code::NuTauBar));
} }
SECTION("Nuclei") { SECTION("Nuclei") {
CHECK_FALSE(IsNucleus(Code::Gamma)); REQUIRE_FALSE(is_nucleus(Code::Gamma));
CHECK(IsNucleus(Code::Argon)); REQUIRE(is_nucleus(Code::Argon));
CHECK_FALSE(IsNucleus(Code::Proton)); REQUIRE_FALSE(is_nucleus(Code::Proton));
CHECK(IsNucleus(Code::Hydrogen)); REQUIRE(is_nucleus(Code::Hydrogen));
CHECK(Argon::IsNucleus()); REQUIRE(Argon::is_nucleus());
CHECK_FALSE(EtaC::IsNucleus()); REQUIRE_FALSE(EtaC::is_nucleus());
CHECK(GetNucleusA(Code::Hydrogen) == 1); REQUIRE(nucleus_A(Code::Hydrogen) == 1);
CHECK(GetNucleusA(Code::Tritium) == 3); REQUIRE(nucleus_A(Code::Tritium) == 3);
CHECK(Hydrogen::GetNucleusZ() == 1); REQUIRE(Hydrogen::nucleus_Z() == 1);
CHECK(Tritium::GetNucleusA() == 3); REQUIRE(Tritium::nucleus_A() == 3);
// Nucleus is a generic object, it has no specific properties REQUIRE_THROWS(nucleus_Z(Code::Nucleus));
CHECK_THROWS(GetNucleusA(Code::Nucleus)); REQUIRE_THROWS(nucleus_A(Code::Nucleus));
CHECK_THROWS(GetNucleusZ(Code::Nucleus));
CHECK_THROWS(GetMass(Code::Nucleus));
CHECK_THROWS(GetCharge(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