From ff9c6c55bd6f96a6fd39c286180bbcc129300a39 Mon Sep 17 00:00:00 2001 From: Maximilian Reininghaus <maximilian.reininghaus@kit.edu> Date: Wed, 12 Dec 2018 11:56:19 +0100 Subject: [PATCH] fixed testCascade crash by changing the Universe to infinite-radius Sphere --- Environment/Environment.h | 28 ++++++++++++++++++--------- Framework/Cascade/testCascade.cc | 5 +---- Processes/TrackingLine/TrackingLine.h | 2 +- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/Environment/Environment.h b/Environment/Environment.h index 5afe69c57..041ca1afa 100644 --- a/Environment/Environment.h +++ b/Environment/Environment.h @@ -13,11 +13,21 @@ #include <corsika/environment/IMediumModel.h> #include <corsika/environment/VolumeTreeNode.h> +#include <corsika/geometry/Point.h> +#include <corsika/geometry/Sphere.h> #include <corsika/geometry/RootCoordinateSystem.h> #include <corsika/setup/SetupEnvironment.h> +#include <limits> namespace corsika::environment { - struct Universe : public corsika::geometry::Volume { + struct Universe : public corsika::geometry::Sphere { + Universe(corsika::geometry::CoordinateSystem const& pCS) + : corsika::geometry::Sphere( + corsika::geometry::Point{ + pCS, 0 * corsika::units::si::meter, + 0 * corsika::units::si::meter, 0 * corsika::units::si::meter}, + corsika::units::si::meter * std::numeric_limits<double>::max()) {} + bool Contains(corsika::geometry::Point const&) const override { return true; } }; @@ -25,30 +35,30 @@ namespace corsika::environment { class Environment { public: Environment() - : fUniverse(std::make_unique<VolumeTreeNode<IEnvironmentModel>>( - std::make_unique<Universe>())) {} + : fCoordinateSystem{corsika::geometry::RootCoordinateSystem::GetInstance().GetRootCS()}, + fUniverse(std::make_unique<VolumeTreeNode<IEnvironmentModel>>( + std::make_unique<Universe>(fCoordinateSystem))) {} using IEnvironmentModel = corsika::setup::IEnvironmentModel; auto& GetUniverse() { return fUniverse; } auto const& GetUniverse() const { return fUniverse; } - auto const& GetCoordinateSystem() const { - return corsika::geometry::RootCoordinateSystem::GetInstance().GetRootCS(); - } + auto const& GetCoordinateSystem() const { return fCoordinateSystem; } // factory method for creation of VolumeTreeNodes - template <class VolumeType, typename... Args> - static auto CreateNode(Args&&... args) { + template <class VolumeType, typename... VolumeArgs> + static auto CreateNode(VolumeArgs&&... args) { static_assert(std::is_base_of_v<corsika::geometry::Volume, VolumeType>, "unusable type provided, needs to be derived from " "\"corsika::geometry::Volume\""); return std::make_unique<VolumeTreeNode<IEnvironmentModel>>( - std::make_unique<VolumeType>(std::forward<Args>(args)...)); + std::make_unique<VolumeType>(std::forward<VolumeArgs>(args)...)); } private: + corsika::geometry::CoordinateSystem const& fCoordinateSystem; VolumeTreeNode<IEnvironmentModel>::VTNUPtr fUniverse; }; diff --git a/Framework/Cascade/testCascade.cc b/Framework/Cascade/testCascade.cc index 423940c15..b39c3f145 100644 --- a/Framework/Cascade/testCascade.cc +++ b/Framework/Cascade/testCascade.cc @@ -80,11 +80,8 @@ private: }; TEST_CASE("Cascade", "[Cascade]") { - corsika::random::RNGManager& rmng = corsika::random::RNGManager::GetInstance(); - ; - const std::string str_name = "s_rndm"; - rmng.RegisterRandomStream(str_name); + rmng.RegisterRandomStream("s_rndm"); corsika::environment::Environment env; // dummy environment auto& universe = *(env.GetUniverse()); diff --git a/Processes/TrackingLine/TrackingLine.h b/Processes/TrackingLine/TrackingLine.h index b6b886408..205991ecf 100644 --- a/Processes/TrackingLine/TrackingLine.h +++ b/Processes/TrackingLine/TrackingLine.h @@ -35,7 +35,7 @@ namespace corsika::process { template <typename Stack> class TrackingLine { // - typedef typename Stack::ParticleType Particle; + using Particle = typename Stack::ParticleType; corsika::environment::Environment const& fEnvironment; -- GitLab