IAP GITLAB

Skip to content
Snippets Groups Projects
Commit eddce42b authored by Maximilian Reininghaus's avatar Maximilian Reininghaus :vulcan:
Browse files

clean-up sibyll

parent 98f0443a
No related branches found
No related tags found
1 merge request!37Cleanup process interface
...@@ -21,11 +21,12 @@ namespace corsika::process { ...@@ -21,11 +21,12 @@ namespace corsika::process {
// i.e. corsika::particles::ListOfParticles() // i.e. corsika::particles::ListOfParticles()
std::cout << "Sibyll: setting hadrons unstable.." << std::endl; std::cout << "Sibyll: setting hadrons unstable.." << std::endl;
// make ALL particles unstable, then set EM stable // make ALL particles unstable, then set EM stable
for (auto& p : corsika2sibyll) { for (auto const& p : corsika2sibyll) {
// std::cout << (int)p << std::endl; // std::cout << (int)p << std::endl;
const int sibCode = (int)p; const int sibCode = static_cast<int>(p);
// skip unknown and antiparticles // skip unknown and antiparticles
if (sibCode < 1) continue; if (sibCode < 1)
continue;
// std::cout << "Sibyll: Decay: setting " << ConvertFromSibyll( // std::cout << "Sibyll: Decay: setting " << ConvertFromSibyll(
// static_cast<SibyllCode> ( sibCode ) ) << " unstable" << std::endl; // static_cast<SibyllCode> ( sibCode ) ) << " unstable" << std::endl;
s_csydec_.idb[sibCode - 1] = abs(s_csydec_.idb[sibCode - 1]); s_csydec_.idb[sibCode - 1] = abs(s_csydec_.idb[sibCode - 1]);
...@@ -84,6 +85,7 @@ namespace corsika::process { ...@@ -84,6 +85,7 @@ namespace corsika::process {
class Decay : public corsika::process::DecayProcess<Decay> { class Decay : public corsika::process::DecayProcess<Decay> {
public: public:
Decay() {} Decay() {}
void Init() { void Init() {
setHadronsUnstable(); setHadronsUnstable();
setTrackedParticlesStable(); setTrackedParticlesStable();
...@@ -97,9 +99,11 @@ namespace corsika::process { ...@@ -97,9 +99,11 @@ namespace corsika::process {
// i.e. corsika::particles::ListOfParticles() // i.e. corsika::particles::ListOfParticles()
for (auto& p : corsika2sibyll) { for (auto& p : corsika2sibyll) {
// std::cout << (int)p << std::endl; // std::cout << (int)p << std::endl;
const int sibCode = (int)p; const int sibCode = static_cast<int>(p);
// skip unknown and antiparticles // skip unknown and antiparticles
if (sibCode < 1) continue; if (sibCode < 1)
continue;
std::cout << "Sibyll: Decay: setting " std::cout << "Sibyll: Decay: setting "
<< ConvertFromSibyll(static_cast<SibyllCode>(sibCode)) << " stable" << ConvertFromSibyll(static_cast<SibyllCode>(sibCode)) << " stable"
<< std::endl; << std::endl;
...@@ -115,23 +119,15 @@ namespace corsika::process { ...@@ -115,23 +119,15 @@ namespace corsika::process {
corsika::units::hep::EnergyType E = p.GetEnergy(); corsika::units::hep::EnergyType E = p.GetEnergy();
corsika::units::hep::MassType m = corsika::particles::GetMass(p.GetPID()); corsika::units::hep::MassType m = corsika::particles::GetMass(p.GetPID());
// const MassDensityType density = 1.25e-3 * kilogram / (1_cm * 1_cm * 1_cm);
const double gamma = E / m;
const TimeType t0 = particles::GetLifetime(p.GetPID()); const TimeType t0 = particles::GetLifetime(p.GetPID());
const double gamma = E / m;
corsika::units::si::TimeType const lifetime = gamma * t0;
cout << "Decay: code: " << (p.GetPID()) << endl; cout << "Decay: code: " << (p.GetPID()) << endl;
cout << "Decay: MinStep: t0: " << t0 << endl; cout << "Decay: MinStep: t0: " << t0 << endl;
cout << "Decay: MinStep: gamma: " << gamma << endl; cout << "Decay: MinStep: gamma: " << gamma << endl;
// cout << "Decay: MinStep: density: " << density << endl;
// return as column density
// const double x0 = density * t0 * gamma * constants::c / kilogram * 1_cm * 1_cm;
// cout << "Decay: MinStep: x0: " << x0 << endl;
corsika::units::si::TimeType const lifetime = gamma * t0;
cout << "Decay: MinStep: tau: " << lifetime << endl; cout << "Decay: MinStep: tau: " << lifetime << endl;
// int a = 1;
// const double x = -x0 * log(s_rndm_(a));
// cout << "Decay: next decay: " << x << endl;
return lifetime; return lifetime;
} }
......
...@@ -34,9 +34,8 @@ namespace corsika::process::sibyll { ...@@ -34,9 +34,8 @@ namespace corsika::process::sibyll {
} }
SibyllCode constexpr ConvertToSibyll(corsika::particles::Code pCode) { SibyllCode constexpr ConvertToSibyll(corsika::particles::Code pCode) {
//~ assert(handledBySibyll(pCode));
return static_cast<SibyllCode>( return static_cast<SibyllCode>(
corsika2sibyll[static_cast<corsika::particles::CodeIntType>(pCode)]); corsika2sibyll[static_cast<corsika::particles::CodeIntType>(pCode)]);
} }
corsika::particles::Code constexpr ConvertFromSibyll(SibyllCode pCode) { corsika::particles::Code constexpr ConvertFromSibyll(SibyllCode pCode) {
...@@ -44,8 +43,7 @@ namespace corsika::process::sibyll { ...@@ -44,8 +43,7 @@ namespace corsika::process::sibyll {
} }
int constexpr ConvertToSibyllRaw(corsika::particles::Code pCode) { int constexpr ConvertToSibyllRaw(corsika::particles::Code pCode) {
return (int)static_cast<corsika::process::sibyll::SibyllCodeIntType>( return static_cast<int>(ConvertToSibyll(pCode));
corsika::process::sibyll::ConvertToSibyll(pCode));
} }
int constexpr GetSibyllXSCode(corsika::particles::Code pCode) { int constexpr GetSibyllXSCode(corsika::particles::Code pCode) {
......
#include <corsika/process/sibyll/sibyll2.3c.h> #include <corsika/process/sibyll/sibyll2.3c.h>
#include <corsika/random/RNGManager.h> #include <corsika/random/RNGManager.h>
#include <random>
double s_rndm_(int&) { double s_rndm_(int&) {
static corsika::random::RNG& rmng = static corsika::random::RNG& rng =
corsika::random::RNGManager::GetInstance().GetRandomStream("s_rndm"); corsika::random::RNGManager::GetInstance().GetRandomStream("s_rndm");
;
return rmng() / (double)rmng.max(); std::uniform_real_distribution<double> dist;
return dist(rng);
} }
...@@ -70,12 +70,6 @@ namespace corsika::stack { ...@@ -70,12 +70,6 @@ namespace corsika::stack {
} }
Point GetPosition() const { return GetStackData().GetPosition(GetIndex()); } Point GetPosition() const { return GetStackData().GetPosition(GetIndex()); }
TimeType GetTime() const { return GetStackData().GetTime(GetIndex()); } TimeType GetTime() const { return GetStackData().GetTime(GetIndex()); }
#warning this does not really work, nor makes sense:
Vector<SpeedType::dimension_type> GetDirection() const {
auto P = GetMomentum();
return P / P.norm() * 1e10 * (units::si::meter / units::si::second);
}
}; };
/** /**
......
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