From 734e8f7e8ad4b37c886a15f974b2912cdd7f0e25 Mon Sep 17 00:00:00 2001 From: ralfulrich <ralf.ulrich@kit.edu> Date: Sun, 6 Jun 2021 19:42:48 +0200 Subject: [PATCH] final random number adaptions --- corsika/modules/HadronicElasticModel.hpp | 2 +- examples/boundary_example.cpp | 2 +- examples/cascade_example.cpp | 6 ++--- examples/cascade_proton_example.cpp | 6 ++--- examples/corsika.cpp | 29 ++++++++++++------------ examples/em_shower.cpp | 12 +++++++--- examples/hybrid_MC.cpp | 25 ++++++++++---------- examples/vertical_EAS.cpp | 23 ++++++++++--------- 8 files changed, 57 insertions(+), 48 deletions(-) diff --git a/corsika/modules/HadronicElasticModel.hpp b/corsika/modules/HadronicElasticModel.hpp index 0d5a77473..1754952f8 100644 --- a/corsika/modules/HadronicElasticModel.hpp +++ b/corsika/modules/HadronicElasticModel.hpp @@ -55,7 +55,7 @@ namespace corsika { // Froissart-Martin is not violated up for sqrt s < 10^32 eV with these values [DL]. default_prng_type& RNG_ = - RNGManager::getInstance().getRandomStream("HadronicElasticModel"); + RNGManager<>::getInstance().getRandomStream("HadronicElasticModel"); }; } // namespace corsika diff --git a/examples/boundary_example.cpp b/examples/boundary_example.cpp index e5f707bde..797f49502 100644 --- a/examples/boundary_example.cpp +++ b/examples/boundary_example.cpp @@ -84,7 +84,7 @@ int main() { feenableexcept(FE_INVALID); // initialize random number sequence(s) - RNGManager::getInstance().registerRandomStream("cascade"); + RNGManager<>::getInstance().registerRandomStream("cascade"); // setup environment, geometry using EnvType = setup::Environment; diff --git a/examples/cascade_example.cpp b/examples/cascade_example.cpp index 623f44312..6632e7979 100644 --- a/examples/cascade_example.cpp +++ b/examples/cascade_example.cpp @@ -63,7 +63,7 @@ int main() { feenableexcept(FE_INVALID); // initialize random number sequence(s) - RNGManager::getInstance().registerRandomStream("cascade"); + RNGManager<>::getInstance().registerRandomStream("cascade"); // setup environment, geometry setup::Environment env; @@ -133,8 +133,8 @@ int main() { setup::Tracking tracking; StackInspector<setup::Stack> stackInspect(1, true, E0); - RNGManager::getInstance().registerRandomStream("sibyll"); - RNGManager::getInstance().registerRandomStream("pythia"); + RNGManager<>::getInstance().registerRandomStream("sibyll"); + RNGManager<>::getInstance().registerRandomStream("pythia"); corsika::sibyll::Interaction sibyll; corsika::sibyll::NuclearInteraction sibyllNuc(sibyll, env); corsika::sibyll::Decay decay; diff --git a/examples/cascade_proton_example.cpp b/examples/cascade_proton_example.cpp index 94db3bd19..cd043185d 100644 --- a/examples/cascade_proton_example.cpp +++ b/examples/cascade_proton_example.cpp @@ -64,7 +64,7 @@ int main() { feenableexcept(FE_INVALID); // initialize random number sequence(s) - RNGManager::getInstance().registerRandomStream("cascade"); + RNGManager<>::getInstance().registerRandomStream("cascade"); OutputManager output("cascade_proton_outputs"); @@ -119,8 +119,8 @@ int main() { setup::Tracking tracking; StackInspector<setup::Stack> stackInspect(1000, true, E0); - RNGManager::getInstance().registerRandomStream("sibyll"); - RNGManager::getInstance().registerRandomStream("pythia"); + RNGManager<>::getInstance().registerRandomStream("sibyll"); + RNGManager<>::getInstance().registerRandomStream("pythia"); // corsika::sibyll::Interaction sibyll; corsika::pythia8::Interaction pythia; // sibyll::NuclearInteraction sibyllNuc(sibyll, env); diff --git a/examples/corsika.cpp b/examples/corsika.cpp index 863e27a98..ab2bdf232 100644 --- a/examples/corsika.cpp +++ b/examples/corsika.cpp @@ -6,8 +6,6 @@ * the license. */ -#define TRACE - /* clang-format off */ // InteractionCounter used boost/histogram, which // fails if boost/type_traits have been included before. Thus, we have @@ -83,18 +81,21 @@ using namespace std; using Particle = setup::Stack::particle_type; -void registerRandomStreams(const int seed) { - RNGManager::getInstance().registerRandomStream("cascade"); - RNGManager::getInstance().registerRandomStream("qgsjet"); - RNGManager::getInstance().registerRandomStream("sibyll"); - RNGManager::getInstance().registerRandomStream("pythia"); - RNGManager::getInstance().registerRandomStream("urqmd"); - RNGManager::getInstance().registerRandomStream("proposal"); - - if (seed == 0) - RNGManager::getInstance().seedAll(); - else - RNGManager::getInstance().seedAll(seed); +void registerRandomStreams(int seed) { + RNGManager<>::getInstance().registerRandomStream("cascade"); + RNGManager<>::getInstance().registerRandomStream("qgsjet"); + RNGManager<>::getInstance().registerRandomStream("sibyll"); + RNGManager<>::getInstance().registerRandomStream("pythia"); + RNGManager<>::getInstance().registerRandomStream("urqmd"); + RNGManager<>::getInstance().registerRandomStream("proposal"); + + if (seed == 0) { + std::random_device rd; + seed = rd(); + cout << "new random seed (auto) " << seed << endl; + } + + RNGManager<>::getInstance().setSeed(seed); } template <typename T> diff --git a/examples/em_shower.cpp b/examples/em_shower.cpp index 611b2cb91..0ff4d28b7 100644 --- a/examples/em_shower.cpp +++ b/examples/em_shower.cpp @@ -56,10 +56,15 @@ using namespace corsika; using namespace std; -void registerRandomStreams() { +void registerRandomStreams(int seed) { RNGManager<>::getInstance().registerRandomStream("cascade"); RNGManager<>::getInstance().registerRandomStream("proposal"); - RNGManager<>::getInstance().seedAll(); + if (seed == 0) { + std::random_device rd; + seed = rd(); + cout << "new random seed (auto) " << seed << endl; + } + RNGManager<>::getInstance().setSeed(seed); } template <typename T> @@ -75,7 +80,8 @@ int main(int argc, char** argv) { } feenableexcept(FE_INVALID); // initialize random number sequence(s) - registerRandomStreams(); + int seed = 44; + registerRandomStreams(seed); // setup environment, geometry using EnvType = setup::Environment; diff --git a/examples/hybrid_MC.cpp b/examples/hybrid_MC.cpp index 9993d390e..627116620 100644 --- a/examples/hybrid_MC.cpp +++ b/examples/hybrid_MC.cpp @@ -68,18 +68,19 @@ using namespace corsika; using namespace std; -void registerRandomStreams(const int seed) { - RNGManager::getInstance().registerRandomStream("cascade"); - RNGManager::getInstance().registerRandomStream("qgsjet"); - RNGManager::getInstance().registerRandomStream("sibyll"); - RNGManager::getInstance().registerRandomStream("pythia"); - RNGManager::getInstance().registerRandomStream("urqmd"); - RNGManager::getInstance().registerRandomStream("proposal"); - - if (seed == 0) - RNGManager::getInstance().seedAll(); - else - RNGManager::getInstance().seedAll(seed); +void registerRandomStreams(int seed) { + RNGManager<>::getInstance().registerRandomStream("cascade"); + RNGManager<>::getInstance().registerRandomStream("qgsjet"); + RNGManager<>::getInstance().registerRandomStream("sibyll"); + RNGManager<>::getInstance().registerRandomStream("pythia"); + RNGManager<>::getInstance().registerRandomStream("urqmd"); + RNGManager<>::getInstance().registerRandomStream("proposal"); + if (seed == 0) { + std::random_device rd; + seed = rd(); + cout << "new random seed (auto) " << seed << endl; + } + RNGManager<>::getInstance().setSeed(seed); } template <typename T> diff --git a/examples/vertical_EAS.cpp b/examples/vertical_EAS.cpp index 190492722..90db5adf8 100644 --- a/examples/vertical_EAS.cpp +++ b/examples/vertical_EAS.cpp @@ -75,17 +75,18 @@ using namespace std; using Particle = setup::Stack::particle_type; -void registerRandomStreams(const int seed) { - RNGManager::getInstance().registerRandomStream("cascade"); - RNGManager::getInstance().registerRandomStream("sibyll"); - RNGManager::getInstance().registerRandomStream("pythia"); - RNGManager::getInstance().registerRandomStream("urqmd"); - RNGManager::getInstance().registerRandomStream("proposal"); - - if (seed == 0) - RNGManager::getInstance().seedAll(); - else - RNGManager::getInstance().seedAll(seed); +void registerRandomStreams(int seed) { + RNGManager<>::getInstance().registerRandomStream("cascade"); + RNGManager<>::getInstance().registerRandomStream("sibyll"); + RNGManager<>::getInstance().registerRandomStream("pythia"); + RNGManager<>::getInstance().registerRandomStream("urqmd"); + RNGManager<>::getInstance().registerRandomStream("proposal"); + if (seed == 0) { + std::random_device rd; + seed = rd(); + cout << "new random seed (auto) " << seed << endl; + } + RNGManager<>::getInstance().setSeed(seed); } template <typename T> -- GitLab