From 4da4bb41663546b6efde1762626b5007e9198b7b Mon Sep 17 00:00:00 2001 From: Maximilian Reininghaus <maximilian.reininghaus@kit.edu> Date: Thu, 23 May 2019 17:20:43 -0300 Subject: [PATCH] event output conversion --- Processes/UrQMD/UrQMD.cc | 9 ++++++--- Processes/UrQMD/UrQMD.h | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Processes/UrQMD/UrQMD.cc b/Processes/UrQMD/UrQMD.cc index 1953d4a35..fba5dc183 100644 --- a/Processes/UrQMD/UrQMD.cc +++ b/Processes/UrQMD/UrQMD.cc @@ -170,8 +170,7 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupProjectile& vProjecti rsys_.ebeam = (projectileEnergyLab - vProjectile.GetMass()) * (1 / 1_GeV); if (projectileCode == particles::Code::K0Long) { - std::uniform_int_distribution dist(0, 1); - projectileCode = (dist(fRNG) == 1) ? particles::Code::K0 : particles::Code::K0Bar; + projectileCode = fBooleanDist(fRNG) ? particles::Code::K0 : particles::Code::K0Bar; } else if (projectileCode == particles::Code::K0Short) { throw std::runtime_error("K0Short should not interact"); } @@ -205,7 +204,11 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupProjectile& vProjecti originalCS.RotateToZ(projectileMomentumLab); for (int i = 0; i < sys_.npart; ++i) { - auto const code = ConvertFromUrQMD(isys_.ityp[i], isys_.iso3[i]); + auto code = ConvertFromUrQMD(isys_.ityp[i], isys_.iso3[i]); + if (code == particles::Code::K0 || code == particles::Code::K0Bar) { + code = fBooleanDist(fRNG) ? particles::Code::K0Short : particles::Code::K0Long; + } + // "coor_.p0[i] * 1_GeV" is likely off-shell as UrQMD doesn't preserve masses well auto momentum = geometry::Vector( zAxisFrame, diff --git a/Processes/UrQMD/UrQMD.h b/Processes/UrQMD/UrQMD.h index c1af956f9..bdbca146e 100644 --- a/Processes/UrQMD/UrQMD.h +++ b/Processes/UrQMD/UrQMD.h @@ -18,6 +18,7 @@ #include <corsika/units/PhysicalUnits.h> #include <array> +#include <random> #include <utility> namespace corsika::process::UrQMD { @@ -42,6 +43,8 @@ namespace corsika::process::UrQMD { particles::Code, particles::Code, corsika::units::si::HEPEnergyType, int); corsika::random::RNG& fRNG = corsika::random::RNGManager::GetInstance().GetRandomStream("UrQMD"); + + std::uniform_int_distribution<int> fBooleanDist{0, 1}; }; namespace constants { -- GitLab