CORSIKA  @c8_version@
The framework to simulate particle cascades for astroparticle physics
SlidingPlanarExponential.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 
13 #include <corsika/framework/geometry/Line.hpp>
14 #include <corsika/framework/geometry/Point.hpp>
15 #include <corsika/framework/random/RNGManager.hpp>
16 #include <corsika/media/NuclearComposition.hpp>
17 #include <corsika/framework/geometry/BaseTrajectory.hpp>
18 
19 namespace corsika {
20 
21  // clang-format off
31  // clang-format on
32 
33  template <typename T>
34  class SlidingPlanarExponential : public BaseExponential<SlidingPlanarExponential<T>>,
35  public T {
36 
38 
39  public:
40  SlidingPlanarExponential(Point const& p0, MassDensityType const rho0,
41  LengthType const lambda, NuclearComposition const& nuclComp,
42  LengthType const referenceHeight = LengthType::zero());
43 
44  MassDensityType getMassDensity(Point const& point) const override;
45 
46  NuclearComposition const& getNuclearComposition() const override;
47 
48  GrammageType getIntegratedGrammage(BaseTrajectory const& line) const override;
49 
50  LengthType getArclengthFromGrammage(BaseTrajectory const& line,
51  GrammageType const grammage) const override;
52 
53  private:
54  NuclearComposition const nuclComp_;
55  };
56 
57 } // namespace corsika
58 
59 #include <corsika/detail/media/SlidingPlanarExponential.inl>
Import and extend the phys::units package.
This class provides the grammage/length conversion functionality for (locally) flat exponential atmos...
The SlidingPlanarExponential models mass density as: For grammage/length conversion, the density distribution is approximated as locally flat at the starting point of the trajectory with the axis pointing from to .
class "quantity" is the heart of the library.
Definition: quantity.hpp:54
`, since they are used everywhere as integral part of the framework.
static constexpr quantity zero()
We need a "zero" of each type – for comparisons, to initialize running totals, etc.
Definition: quantity.hpp:359
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...
Interface to particle properties.