From dc8c998b2ab6d11e5d3c9041e8951df809b6efe9 Mon Sep 17 00:00:00 2001 From: ralfulrich <ralf.ulrich@kit.edu> Date: Thu, 29 Nov 2018 12:56:30 +0100 Subject: [PATCH] fixed bug in sibyll2corsika --- Documentation/Examples/cascade_example.cc | 12 ++++++++---- Processes/Sibyll/ParticleConversion.h | 2 +- Processes/Sibyll/code_generator.py | 11 +++++++---- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/Documentation/Examples/cascade_example.cc b/Documentation/Examples/cascade_example.cc index 13997ef13..0d6551cd5 100644 --- a/Documentation/Examples/cascade_example.cc +++ b/Documentation/Examples/cascade_example.cc @@ -30,6 +30,7 @@ using namespace corsika::units; using namespace corsika::particles; using namespace corsika::random; +#include <typeinfo> #include <iostream> using namespace std; @@ -42,11 +43,14 @@ public: template <typename Particle> double MinStepLength(Particle& p) const { // beam particles for sibyll : 1, 2, 3 for p, pi, k - Code c_id = p.GetPID(); - //sibyll::SibyllCodeIntType s_id = process::sibyll::ConvertToSibyll( p.GetPID() ); + 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 ); + cout << p_id_2 << endl; std::cout << "MinStepLength: particle input " << "corsika id: " << c_id << std::endl; - //std::cout << "MinStepLength: particle input " << "sibyll id: " << s_id << std::endl; - // std::cout << "MinStepLength: particle input " << "sibyll id: " << process::sibyll::ConvertToSibyll( p.GetPID() ) << std::endl; + auto test = static_cast<corsika::process::sibyll::SibyllCodeIntType>(s_id); + std::cout << "MinStepLength: particle input " << "sibyll id: |" << (int)test << "|" <<std::endl; + // std::cout << "MinStepLength: particle input " << "sibyll id: " << process::sibyll::ConvertToSibyll( p.GetPID() ) << std::endl; int kBeam = 1; /* diff --git a/Processes/Sibyll/ParticleConversion.h b/Processes/Sibyll/ParticleConversion.h index 2ad007016..3347220a7 100644 --- a/Processes/Sibyll/ParticleConversion.h +++ b/Processes/Sibyll/ParticleConversion.h @@ -37,7 +37,7 @@ namespace corsika::process::sibyll { corsika::particles::Code constexpr ConvertFromSibyll(Code pCode) { return sibyll2corsika[static_cast<SibyllCodeIntType>(pCode) - minSibyll]; } - + } // namespace corsika::process::sibyll #endif diff --git a/Processes/Sibyll/code_generator.py b/Processes/Sibyll/code_generator.py index dc082cdb8..aff36785e 100755 --- a/Processes/Sibyll/code_generator.py +++ b/Processes/Sibyll/code_generator.py @@ -60,12 +60,15 @@ def generate_corsika2sibyll(pythia_db): # generates the look-up table to convert sibyll codes to corsika codes def generate_sibyll2corsika(pythia_db) : + minID = 0 + for identifier, pData in pythia_db.items() : + if 'sibyll_code' in pData: + minID = min(minID, pData['sibyll_code']) + pDict = {} for identifier, pData in pythia_db.items() : if 'sibyll_code' in pData: - sib_code = pData['sibyll_code'] - # corsika_code = pData['ngc_code'] - #d[sib_code] = (corsika_code, identifier) + sib_code = pData['sibyll_code'] - minID pDict[sib_code] = identifier nPart = max(pDict.keys()) - min(pDict.keys()) + 1 @@ -79,7 +82,7 @@ def generate_sibyll2corsika(pythia_db) : string += " corsika::particles::Code::{:s}, \n".format(identifier) string += "};\n" - string += "SibyllCodeIntType constexpr minSibyll = {:d};\n".format(min(pDict.keys())) + string += "SibyllCodeIntType constexpr minSibyll = {:d};\n".format(minID) return string -- GitLab