diff --git a/Documentation/Examples/cascade_example.cc b/Documentation/Examples/cascade_example.cc index a37ced7d15fcdca0a8687fb9de7dd9ca96330099..fdc7069499e80599c92ef25e80b63b62d175be60 100644 --- a/Documentation/Examples/cascade_example.cc +++ b/Documentation/Examples/cascade_example.cc @@ -23,6 +23,8 @@ #include <corsika/cascade/sibyll2.3c.h> #include <corsika/process/sibyll/ParticleConversion.h> +#include <corsika/process/sibyll/ProcessDecay.h> + #include <corsika/units/PhysicalUnits.h> using namespace corsika; @@ -333,54 +335,6 @@ double s_rndm_(int&) { return rmng() / (double)rmng.max(); } -class ProcessDecay : public corsika::process::BaseProcess<ProcessDecay> { -public: - ProcessDecay() {} - void Init() {} - - template <typename Particle> - double MinStepLength(Particle& p, setup::Trajectory&) const { - EnergyType E = p.GetEnergy(); - MassType m = corsika::particles::GetMass(p.GetPID()); - // env.GetDensity(); - const MassDensityType density = 1.25e-3 * kilogram / ( 1_cm * 1_cm * 1_cm ); - - const double gamma = E / m / constants::cSquared; - // lifetimes not implemented yet - TimeType t0; - switch( p.GetPID() ){ - case Code::PiPlus : - t0 = 2.6e-8 * 1_s; - break; - - case Code::KPlus : - t0 = 1.e-5 * 1_s; - break; - - default: - t0 = 1.e8 * 1_s; - break; - } - cout << "ProcessDecay: MinStep: t0: " << t0 << endl; - cout << "ProcessDecay: MinStep: gamma: " << gamma << endl; - cout << "ProcessDecay: MinStep: density: " << density << endl; - // return as column density - const double x0 = density * t0 * gamma * constants::c / kilogram * 1_cm * 1_cm; - cout << "ProcessDecay: MinStep: x0: " << x0 << endl; - return x0; - } - - template <typename Particle, typename Stack> - void DoDiscrete(Particle& p, Stack& s) const { - } - - template <typename Particle, typename Stack> - EProcessReturn DoContinuous(Particle&, setup::Trajectory&, Stack&) const { - return EProcessReturn::eOk; - } - -}; - int main() { @@ -389,7 +343,7 @@ int main() { tracking_line::TrackingLine<setup::Stack> tracking; stack_inspector::StackInspector<setup::Stack> p0(true); ProcessSplit p1; - ProcessDecay p2; + corsika::process::sibyll::ProcessDecay p2; const auto sequence = p0 + p1 + p2; setup::Stack stack; diff --git a/Processes/Sibyll/CMakeLists.txt b/Processes/Sibyll/CMakeLists.txt index f2e4a9fee1aabbbb5196a597db36de06e6385594..a0985a1ad2304e7e5bd4f1024cf43b5cefaf8bc4 100644 --- a/Processes/Sibyll/CMakeLists.txt +++ b/Processes/Sibyll/CMakeLists.txt @@ -20,6 +20,7 @@ set ( set ( MODEL_HEADERS ParticleConversion.h + ProcessDecay.h ${PROJECT_BINARY_DIR}/Processes/Sibyll/Generated.inc ) diff --git a/Processes/Sibyll/ProcessDecay.h b/Processes/Sibyll/ProcessDecay.h new file mode 100644 index 0000000000000000000000000000000000000000..20f493607d1dbff293caa6bedeedf52a16f59712 --- /dev/null +++ b/Processes/Sibyll/ProcessDecay.h @@ -0,0 +1,65 @@ +#ifndef _include_ProcessDecay_h_ +#define _include_ProcessDecay_h_ + +#include <corsika/process/ContinuousProcess.h> + +#include <corsika/setup/SetupTrajectory.h> +#include <corsika/process/sibyll/ParticleConversion.h> + +//using namespace corsika::particles; + +namespace corsika::process { + + namespace sibyll { + +class ProcessDecay : public corsika::process::BaseProcess<ProcessDecay> { +public: + ProcessDecay() {} + void Init() {} + + template <typename Particle> + double MinStepLength(Particle& p, setup::Trajectory&) const { + EnergyType E = p.GetEnergy(); + MassType m = corsika::particles::GetMass(p.GetPID()); + // env.GetDensity(); + const MassDensityType density = 1.25e-3 * kilogram / ( 1_cm * 1_cm * 1_cm ); + + const double gamma = E / m / constants::cSquared; + // lifetimes not implemented yet + TimeType t0; + switch( p.GetPID() ){ + case corsika::particles::Code::PiPlus : + t0 = 2.6e-8 * 1_s; + break; + + case corsika::particles::Code::KPlus : + t0 = 1.e-5 * 1_s; + break; + + default: + t0 = 1.e8 * 1_s; + break; + } + cout << "ProcessDecay: MinStep: t0: " << t0 << endl; + cout << "ProcessDecay: MinStep: gamma: " << gamma << endl; + cout << "ProcessDecay: MinStep: density: " << density << endl; + // return as column density + const double x0 = density * t0 * gamma * constants::c / kilogram * 1_cm * 1_cm; + cout << "ProcessDecay: MinStep: x0: " << x0 << endl; + return x0; + } + + template <typename Particle, typename Stack> + void DoDiscrete(Particle& p, Stack& s) const { + } + + template <typename Particle, typename Stack> + EProcessReturn DoContinuous(Particle&, setup::Trajectory&, Stack&) const { + return EProcessReturn::eOk; + } + +}; + } +} + +#endif