IAP GITLAB

Skip to content
Snippets Groups Projects
Commit 6a2eafd3 authored by ralfulrich's avatar ralfulrich
Browse files

working

parent 5fe647fd
No related branches found
No related tags found
No related merge requests found
...@@ -44,8 +44,8 @@ public: ...@@ -44,8 +44,8 @@ public:
double MinStepLength(Particle& p) const { double MinStepLength(Particle& p) const {
// beam particles for sibyll : 1, 2, 3 for p, pi, k // beam particles for sibyll : 1, 2, 3 for p, pi, k
corsika::particles::Code c_id = p.GetPID(); corsika::particles::Code c_id = p.GetPID();
corsika::process::sibyll::Code s_id = process::sibyll::ConvertToSibyll( p.GetPID() ); corsika::process::sibyll::SibyllCode s_id = process::sibyll::ConvertToSibyll( p.GetPID() );
corsika::particles::Code p_id_2 = process::sibyll::ConvertFromSibyll( corsika::process::sibyll::Code::Proton ); corsika::particles::Code p_id_2 = process::sibyll::ConvertFromSibyll( corsika::process::sibyll::SibyllCode::Proton );
cout << p_id_2 << endl; cout << p_id_2 << endl;
std::cout << "MinStepLength: particle input " << "corsika id: " << c_id << std::endl; std::cout << "MinStepLength: particle input " << "corsika id: " << c_id << std::endl;
auto test = static_cast<corsika::process::sibyll::SibyllCodeIntType>(s_id); auto test = static_cast<corsika::process::sibyll::SibyllCodeIntType>(s_id);
...@@ -157,8 +157,7 @@ public: ...@@ -157,8 +157,7 @@ public:
const double en_lab = gambet * s_plist_.p[2][i] + gamma * p.GetEnergy(); const double en_lab = gambet * s_plist_.p[2][i] + gamma * p.GetEnergy();
// add to corsika stack // add to corsika stack
s.NewParticle().SetEnergy( en_lab * 1_GeV ); s.NewParticle().SetEnergy( en_lab * 1_GeV );
} }
} }
} }
......
...@@ -28,10 +28,11 @@ def read_sibyll_codes(filename, pythia_db): ...@@ -28,10 +28,11 @@ def read_sibyll_codes(filename, pythia_db):
line = line.strip() line = line.strip()
if line[0] == '#': if line[0] == '#':
continue continue
identifier, sib_code, canInteractFlag = line.split() identifier, sib_code, canInteractFlag, xsType = line.split()
try: try:
pythia_db[identifier]["sibyll_code"] = int(sib_code) pythia_db[identifier]["sibyll_code"] = int(sib_code)
pythia_db[identifier]["sibyll_canInteract"] = int(canInteractFlag) pythia_db[identifier]["sibyll_canInteract"] = int(canInteractFlag)
pythia_db[identifier]["xsType"] = int(xsType)
except KeyError as e: except KeyError as e:
raise Exception("Identifier '{:s}' not found in pythia_db".format(identifier)) raise Exception("Identifier '{:s}' not found in pythia_db".format(identifier))
...@@ -126,7 +127,7 @@ def generate_interacting_particle(pythia_db): ...@@ -126,7 +127,7 @@ def generate_interacting_particle(pythia_db):
low = numeric & 0xFFFFFFFF low = numeric & 0xFFFFFFFF
numeric = numeric >> 32 numeric = numeric >> 32
string += " 0x{:0x},\n".format(low) string += " 0x{:0x},\n".format(low)
string += "}}};\n" string += "}}};\n"
return string return string
...@@ -148,3 +149,4 @@ if __name__ == "__main__": ...@@ -148,3 +149,4 @@ if __name__ == "__main__":
print(generate_corsika2sibyll(pythia_db), file=f) print(generate_corsika2sibyll(pythia_db), file=f)
print(generate_known_particle(pythia_db), file=f) print(generate_known_particle(pythia_db), file=f)
print(generate_sibyll2corsika(pythia_db), file=f) print(generate_sibyll2corsika(pythia_db), file=f)
print(generate_interacting_particle(pythia_db), file=f)
# 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 Electron 3 0 0
Positron 2 0 0 Positron 2 0 0
NuE 15 0 0 NuE 15 0 0
......
...@@ -23,20 +23,30 @@ TEST_CASE("Sibyll", "[processes]") { ...@@ -23,20 +23,30 @@ TEST_CASE("Sibyll", "[processes]") {
SECTION("Sibyll -> Corsika") { SECTION("Sibyll -> Corsika") {
REQUIRE(corsika::particles::Electron::GetCode() == REQUIRE(corsika::particles::Electron::GetCode() ==
process::sibyll::ConvertFromSibyll(process::sibyll::Code::Electron)); process::sibyll::ConvertFromSibyll(process::sibyll::SibyllCode::Electron));
} }
SECTION("Corsika -> Sibyll") { SECTION("Corsika -> Sibyll") {
REQUIRE(process::sibyll::ConvertToSibyll(corsika::particles::Electron::GetCode()) == REQUIRE(process::sibyll::ConvertToSibyll(corsika::particles::Electron::GetCode()) ==
process::sibyll::Code::Electron); process::sibyll::SibyllCode::Electron);
REQUIRE(process::sibyll::ConvertToSibyllRaw(corsika::particles::Proton::GetCode()) == REQUIRE(process::sibyll::ConvertToSibyllRaw(corsika::particles::Proton::GetCode()) ==
13 ); 13 );
} }
SECTION("handledBySibyll") { SECTION("handledBySibyll") {
REQUIRE(process::sibyll::HandledBySibyll(corsika::particles::Electron::GetCode())); REQUIRE(process::sibyll::KnownBySibyll(corsika::particles::Electron::GetCode()));
REQUIRE_FALSE( 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()));
} }
} }
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