diff --git a/Documentation/Examples/cascade_example.cc b/Documentation/Examples/cascade_example.cc index 50a8f351c74a50a35e160d1726594be5b73ebedb..9dfa98b3978a1c3d8e165b4f04251929a4decd71 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 784b8e7d87b0f51697674a02f2561aa95ac1ed52..a2929fdaa1fca5e544f153a197af02fbdc4e1649 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 9b64792167c2893355190a31c09be6545bfb8d5c..19e35384e6df654c00a40bc625a432281c2095ba 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 7e8049524e880e5528a87bd4d7076956cb2d14bf..15e9fa2e7117f09b2e8642719a95b3216db7eb32 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())); } }