CORSIKA  @c8_version@
The framework to simulate particle cascades for astroparticle physics
IMediumModel.hpp
1 /*
2  * (c) Copyright 2018 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 
11 #include <corsika/media/NuclearComposition.hpp>
12 #include <corsika/framework/geometry/Point.hpp>
14 #include <corsika/framework/geometry/BaseTrajectory.hpp>
15 
16 namespace corsika {
17 
18  class IMediumModel {
19  public:
20  virtual ~IMediumModel() = default; // LCOV_EXCL_LINE
21 
22  virtual MassDensityType getMassDensity(Point const&) const = 0;
23 
32  virtual GrammageType getIntegratedGrammage(BaseTrajectory const&) const = 0;
33 
44  GrammageType) const = 0;
45 
46  virtual NuclearComposition const& getNuclearComposition() const = 0;
47  };
48 
49 } // namespace corsika
Import and extend the phys::units package.
virtual LengthType getArclengthFromGrammage(BaseTrajectory const &, GrammageType) const =0
Calculates the length along the trajectory.
virtual GrammageType getIntegratedGrammage(BaseTrajectory const &) const =0
Integrate the matter density along trajectory.
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...