IAP GITLAB

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

event output conversion

parent 0fe04531
No related branches found
No related tags found
1 merge request!124Resolve "Neutral kaon mixing for UrQMD"
Pipeline #737 passed
...@@ -170,8 +170,7 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupProjectile& vProjecti ...@@ -170,8 +170,7 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupProjectile& vProjecti
rsys_.ebeam = (projectileEnergyLab - vProjectile.GetMass()) * (1 / 1_GeV); rsys_.ebeam = (projectileEnergyLab - vProjectile.GetMass()) * (1 / 1_GeV);
if (projectileCode == particles::Code::K0Long) { if (projectileCode == particles::Code::K0Long) {
std::uniform_int_distribution dist(0, 1); projectileCode = fBooleanDist(fRNG) ? particles::Code::K0 : particles::Code::K0Bar;
projectileCode = (dist(fRNG) == 1) ? particles::Code::K0 : particles::Code::K0Bar;
} else if (projectileCode == particles::Code::K0Short) { } else if (projectileCode == particles::Code::K0Short) {
throw std::runtime_error("K0Short should not interact"); throw std::runtime_error("K0Short should not interact");
} }
...@@ -205,7 +204,11 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupProjectile& vProjecti ...@@ -205,7 +204,11 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupProjectile& vProjecti
originalCS.RotateToZ(projectileMomentumLab); originalCS.RotateToZ(projectileMomentumLab);
for (int i = 0; i < sys_.npart; ++i) { 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 // "coor_.p0[i] * 1_GeV" is likely off-shell as UrQMD doesn't preserve masses well
auto momentum = geometry::Vector( auto momentum = geometry::Vector(
zAxisFrame, zAxisFrame,
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <corsika/units/PhysicalUnits.h> #include <corsika/units/PhysicalUnits.h>
#include <array> #include <array>
#include <random>
#include <utility> #include <utility>
namespace corsika::process::UrQMD { namespace corsika::process::UrQMD {
...@@ -42,6 +43,8 @@ namespace corsika::process::UrQMD { ...@@ -42,6 +43,8 @@ namespace corsika::process::UrQMD {
particles::Code, particles::Code, corsika::units::si::HEPEnergyType, int); particles::Code, particles::Code, corsika::units::si::HEPEnergyType, int);
corsika::random::RNG& fRNG = corsika::random::RNG& fRNG =
corsika::random::RNGManager::GetInstance().GetRandomStream("UrQMD"); corsika::random::RNGManager::GetInstance().GetRandomStream("UrQMD");
std::uniform_int_distribution<int> fBooleanDist{0, 1};
}; };
namespace constants { namespace constants {
......
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