IAP GITLAB

Skip to content
Snippets Groups Projects
Commit 2c9e97b8 authored by Remy Prechelt's avatar Remy Prechelt Committed by ralfulrich
Browse files

Port over HomogeneousMedium.

parent b4c1bb13
No related branches found
No related tags found
No related merge requests found
/*
* (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
......@@ -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>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment