CORSIKA  @c8_version@
The framework to simulate particle cascades for astroparticle physics
HomogeneousMedium.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 
23  template <typename T>
24  class HomogeneousMedium : public T {
25 
26  public:
27  HomogeneousMedium(MassDensityType density, NuclearComposition const& nuclComp);
28 
29  MassDensityType getMassDensity(Point const&) const override;
30 
31  NuclearComposition const& getNuclearComposition() const override;
32 
33  GrammageType getIntegratedGrammage(BaseTrajectory const&) const override;
34 
35  LengthType getArclengthFromGrammage(BaseTrajectory const&,
36  GrammageType grammage) const override;
37 
38  private:
39  MassDensityType const density_;
40  NuclearComposition const nuclComp_;
41  };
42 
43 } // namespace corsika
44 
45 #include <corsika/detail/media/HomogeneousMedium.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...