CORSIKA  @c8_version@
The framework to simulate particle cascades for astroparticle physics
InhomogeneousMedium.hpp
1 /*
2  * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
3  *
4  * This software is distributed under the terms of the GNU General Public
5  * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
6  * the license.
7  */
8 
9 #pragma once
10 
12 #include <corsika/framework/geometry/Line.hpp>
13 #include <corsika/framework/geometry/Point.hpp>
14 #include <corsika/media/NuclearComposition.hpp>
15 #include <corsika/framework/geometry/BaseTrajectory.hpp>
16 
17 namespace corsika {
18 
24  template <typename T, typename TDensityFunction>
25  class InhomogeneousMedium : public T {
26 
27  public:
28  template <typename... TArgs>
29  InhomogeneousMedium(NuclearComposition const& nuclComp, TArgs&&... rhoTArgs);
30 
31  MassDensityType getMassDensity(Point const& point) const override;
32 
33  NuclearComposition const& getNuclearComposition() const override;
34 
35  GrammageType getIntegratedGrammage(BaseTrajectory const& line) const override;
36 
37  LengthType getArclengthFromGrammage(BaseTrajectory const& pLine,
38  GrammageType grammage) const override;
39 
40  private:
41  NuclearComposition const nuclComp_;
42  TDensityFunction const densityFunction_;
43  };
44 
45 } // namespace corsika
46 
47 #include <corsika/detail/media/InhomogeneousMedium.inl>
Import and extend the phys::units package.
class "quantity" is the heart of the library.
Definition: quantity.hpp:54
`, since they are used everywhere as integral part of the framework.
A Trajectory is a description of a momvement of an object in three-dimensional space that describes t...
Describes the composition of matter Allowes and handles the creation of custom matter compositions...
A general inhomogeneous medium.