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