diff --git a/Documentation/Examples/CMakeLists.txt b/Documentation/Examples/CMakeLists.txt index 2459d4d9a7faf03b3a2d8fdb03b562db7848a4a7..5a5bd65531b948d1b71536e83f7f88a905c6f4fa 100644 --- a/Documentation/Examples/CMakeLists.txt +++ b/Documentation/Examples/CMakeLists.txt @@ -31,6 +31,7 @@ target_link_libraries (cascade_example SuperStupidStack CORSIKAunits CORSIKAlogg CORSIKAprocesses CORSIKAparticles CORSIKAgeometry + CORSIKAenvironment CORSIKAprocesssequence ) #install (TARGETS cascade_example DESTINATION share/examples) diff --git a/Environment/Environment.h b/Environment/Environment.h index 5afe69c57000976ef529559696e6bcdca31da609..335f776ee69d76bc77fb2fef628761ae8b67508c 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>::infinity()) {} + 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/CMakeLists.txt b/Framework/Cascade/CMakeLists.txt index 8da2afe065f5fce33f2fa3a9f9a695a930471a09..8b832d21bb9fe0731d6a6294dc6b234e15fddac4 100644 --- a/Framework/Cascade/CMakeLists.txt +++ b/Framework/Cascade/CMakeLists.txt @@ -54,6 +54,7 @@ target_link_libraries ( CORSIKAprocesses CORSIKAparticles CORSIKAgeometry + CORSIKAenvironment CORSIKAprocesssequence CORSIKAunits CORSIKAthirdparty # for catch2 diff --git a/Framework/Cascade/testCascade.cc b/Framework/Cascade/testCascade.cc index 423940c156782b2978ed402524f209cf489178fb..b39c3f145c697500141ad911bb110b8b7aba8da4 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 b6b8864087b53fe577029c379996ca9d6ef29d35..205991ecf0b2b613bc97192b15494a824636a0ea 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;