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