From 2c9e97b8abcd892c03f3cd5b107bb1a4ab15c87d Mon Sep 17 00:00:00 2001
From: Remy Prechelt <prechelt@hawaii.edu>
Date: Mon, 16 Nov 2020 23:17:19 -1000
Subject: [PATCH] Port over HomogeneousMedium.

---
 corsika/detail/media/HomogeneousMedium.inl | 46 ++++++++++++++++++++++
 corsika/media/HomogeneousMedium.hpp        | 38 +++++++-----------
 2 files changed, 60 insertions(+), 24 deletions(-)
 create mode 100644 corsika/detail/media/HomogeneousMedium.inl

diff --git a/corsika/detail/media/HomogeneousMedium.inl b/corsika/detail/media/HomogeneousMedium.inl
new file mode 100644
index 000000000..adbe03c4f
--- /dev/null
+++ b/corsika/detail/media/HomogeneousMedium.inl
@@ -0,0 +1,46 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Trajectory.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+
+namespace corsika {
+
+  template <typename T>
+  HomogeneousMedium<T>::HomogeneousMedium(units::si::MassDensityType density,
+                                          NuclearComposition nuclComp)
+      : density_(density)
+      , nuclComp_(nuclComp) {}
+
+  template <typename T>
+  units::si::MassDensityType HomogeneousMedium<T>::getMassDensity(Point const&) const {
+    return density_;
+  }
+  template <typename T>
+  NuclearComposition const& HomogeneousMedium<T>::getNuclearComposition() const {
+    return nuclComp_;
+  }
+
+  template <typename T>
+  units::si::GrammageType HomogeneousMedium<T>::integratedGrammage(
+      Trajectory<Line> const&, units::si::LengthType to) const {
+    using namespace units::si;
+    return to * density_;
+  }
+
+  template <typename T>
+  units::si::LengthType HomogeneousMedium<T>::arclengthFromGrammage(
+      Trajectory<Line> const&, units::si::GrammageType grammage) const {
+    return grammage / density_;
+  }
+} // namespace corsika
diff --git a/corsika/media/HomogeneousMedium.hpp b/corsika/media/HomogeneousMedium.hpp
index 81101825a..56ea8a25d 100644
--- a/corsika/media/HomogeneousMedium.hpp
+++ b/corsika/media/HomogeneousMedium.hpp
@@ -8,49 +8,39 @@
 
 #pragma once
 
-#include <corsika/framework/core/ParticleProperties.hpp>
 #include <corsika/framework/core/PhysicalUnits.hpp>
 #include <corsika/framework/geometry/Line.hpp>
 #include <corsika/framework/geometry/Point.hpp>
 #include <corsika/framework/geometry/Trajectory.hpp>
-#include <corsika/framework/random/RNGManager.hpp>
 #include <corsika/media/NuclearComposition.hpp>
 
-#include <corsika/setup/SetupTrajectory.h>
-
-#include <cassert>
-
 /**
  * a homogeneous medium
  */
 
 namespace corsika {
 
-  template <class T>
+  template <typename T>
   class HomogeneousMedium : public T {
-    MassDensityType const fDensity;
-    NuclearComposition const fNuclComp;
+    units::si::MassDensityType const density_;
+    NuclearComposition const nuclComp_;
 
   public:
-    HomogeneousMedium(MassDensityType pDensity, NuclearComposition pNuclComp)
-        : fDensity(pDensity)
-        , fNuclComp(pNuclComp) {}
+    HomogeneousMedium(units::si::MassDensityType density, NuclearComposition nuclComp);
 
-    MassDensityType GetMassDensity(corsika::Point const&) const override {
-      return fDensity;
-    }
+      units::si::MassDensityType getMassDensity(Point const&) const override;
 
-    NuclearComposition const& GetNuclearComposition() const override { return fNuclComp; }
+    NuclearComposition const& getNuclearComposition() const override;
 
-    GrammageType IntegratedGrammage(corsika::Trajectory<corsika::Line> const&,
-                                    LengthType pTo) const override {
-      return pTo * fDensity;
-    }
+    units::si::GrammageType integratedGrammage(
+        Trajectory<Line> const&,
+        units::si::LengthType to) const override;
 
-    LengthType ArclengthFromGrammage(corsika::Trajectory<corsika::Line> const&,
-                                     GrammageType pGrammage) const override {
-      return pGrammage / fDensity;
-    }
+    units::si::LengthType arclengthFromGrammage(
+        Trajectory<Line> const&,
+        units::si::GrammageType grammage) const override;
   };
 
 } // namespace corsika
+
+#include <corsika/detail/media/HomogeneousMedium.inl>
-- 
GitLab