From 6a2eafd3c111c9fbfbdded1ed319e53e98f84c8d Mon Sep 17 00:00:00 2001 From: ralfulrich <ralf.ulrich@kit.edu> Date: Thu, 29 Nov 2018 17:05:55 +0100 Subject: [PATCH] working --- Documentation/Examples/cascade_example.cc | 7 +++---- Processes/Sibyll/code_generator.py | 6 ++++-- Processes/Sibyll/sibyll_codes.dat | 2 ++ Processes/Sibyll/testSibyll.cc | 18 ++++++++++++++---- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/Documentation/Examples/cascade_example.cc b/Documentation/Examples/cascade_example.cc index 50a8f351c..9dfa98b39 100644 --- a/Documentation/Examples/cascade_example.cc +++ b/Documentation/Examples/cascade_example.cc @@ -44,8 +44,8 @@ public: double MinStepLength(Particle& p) const { // beam particles for sibyll : 1, 2, 3 for p, pi, k corsika::particles::Code c_id = p.GetPID(); - corsika::process::sibyll::Code s_id = process::sibyll::ConvertToSibyll( p.GetPID() ); - corsika::particles::Code p_id_2 = process::sibyll::ConvertFromSibyll( corsika::process::sibyll::Code::Proton ); + corsika::process::sibyll::SibyllCode s_id = process::sibyll::ConvertToSibyll( p.GetPID() ); + corsika::particles::Code p_id_2 = process::sibyll::ConvertFromSibyll( corsika::process::sibyll::SibyllCode::Proton ); cout << p_id_2 << endl; std::cout << "MinStepLength: particle input " << "corsika id: " << c_id << std::endl; auto test = static_cast<corsika::process::sibyll::SibyllCodeIntType>(s_id); @@ -157,8 +157,7 @@ public: const double en_lab = gambet * s_plist_.p[2][i] + gamma * p.GetEnergy(); // add to corsika stack s.NewParticle().SetEnergy( en_lab * 1_GeV ); - } - + } } } diff --git a/Processes/Sibyll/code_generator.py b/Processes/Sibyll/code_generator.py index 784b8e7d8..a2929fdaa 100755 --- a/Processes/Sibyll/code_generator.py +++ b/Processes/Sibyll/code_generator.py @@ -28,10 +28,11 @@ def read_sibyll_codes(filename, pythia_db): line = line.strip() if line[0] == '#': continue - identifier, sib_code, canInteractFlag = line.split() + identifier, sib_code, canInteractFlag, xsType = line.split() try: pythia_db[identifier]["sibyll_code"] = int(sib_code) pythia_db[identifier]["sibyll_canInteract"] = int(canInteractFlag) + pythia_db[identifier]["xsType"] = int(xsType) except KeyError as e: raise Exception("Identifier '{:s}' not found in pythia_db".format(identifier)) @@ -126,7 +127,7 @@ def generate_interacting_particle(pythia_db): low = numeric & 0xFFFFFFFF numeric = numeric >> 32 string += " 0x{:0x},\n".format(low) - + string += "}}};\n" return string @@ -148,3 +149,4 @@ if __name__ == "__main__": print(generate_corsika2sibyll(pythia_db), file=f) print(generate_known_particle(pythia_db), file=f) print(generate_sibyll2corsika(pythia_db), file=f) + print(generate_interacting_particle(pythia_db), file=f) diff --git a/Processes/Sibyll/sibyll_codes.dat b/Processes/Sibyll/sibyll_codes.dat index 9b6479216..19e35384e 100644 --- a/Processes/Sibyll/sibyll_codes.dat +++ b/Processes/Sibyll/sibyll_codes.dat @@ -1,3 +1,5 @@ +# input file for particle conversion to/from SIBYLL +# the format of this file is: "corsika-identifier" "sibyll-id" "can-interact-in-sibyll" "cross-section-type" Electron 3 0 0 Positron 2 0 0 NuE 15 0 0 diff --git a/Processes/Sibyll/testSibyll.cc b/Processes/Sibyll/testSibyll.cc index 7e8049524..15e9fa2e7 100644 --- a/Processes/Sibyll/testSibyll.cc +++ b/Processes/Sibyll/testSibyll.cc @@ -23,20 +23,30 @@ TEST_CASE("Sibyll", "[processes]") { SECTION("Sibyll -> Corsika") { REQUIRE(corsika::particles::Electron::GetCode() == - process::sibyll::ConvertFromSibyll(process::sibyll::Code::Electron)); + process::sibyll::ConvertFromSibyll(process::sibyll::SibyllCode::Electron)); } SECTION("Corsika -> Sibyll") { REQUIRE(process::sibyll::ConvertToSibyll(corsika::particles::Electron::GetCode()) == - process::sibyll::Code::Electron); + process::sibyll::SibyllCode::Electron); REQUIRE(process::sibyll::ConvertToSibyllRaw(corsika::particles::Proton::GetCode()) == 13 ); } SECTION("handledBySibyll") { - REQUIRE(process::sibyll::HandledBySibyll(corsika::particles::Electron::GetCode())); + REQUIRE(process::sibyll::KnownBySibyll(corsika::particles::Electron::GetCode())); REQUIRE_FALSE( - process::sibyll::HandledBySibyll(corsika::particles::XiPrimeC0::GetCode())); + process::sibyll::KnownBySibyll(corsika::particles::XiPrimeC0::GetCode())); + } + + SECTION("canInteractInSibyll") { + REQUIRE(process::sibyll::CanInteract(corsika::particles::Proton::GetCode())); + REQUIRE(process::sibyll::CanInteract(corsika::particles::XiCPlus::GetCode())); + + REQUIRE_FALSE( + process::sibyll::CanInteract(corsika::particles::Electron::GetCode())); + REQUIRE_FALSE( + process::sibyll::CanInteract(corsika::particles::SigmaC0::GetCode())); } } -- GitLab