CORSIKA  @c8_version@
The framework to simulate particle cascades for astroparticle physics
LongitudinalProfile.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 
11 #include <corsika/media/ShowerAxis.hpp>
12 #include <corsika/framework/process/ContinuousProcess.hpp>
14 #include <corsika/framework/core/Step.hpp>
15 
16 #include <corsika/modules/writers/LongitudinalProfileWriterParquet.hpp>
17 
18 #include <array>
19 #include <fstream>
20 #include <limits>
21 #include <string>
22 
23 namespace corsika {
24 
39  template <typename TOutput>
40  class LongitudinalProfile : public ContinuousProcess<LongitudinalProfile<TOutput>>,
41  public TOutput {
42 
43  public:
44  template <typename... TArgs>
45  LongitudinalProfile(TArgs&&... args);
46 
47  template <typename TParticle>
48  ProcessReturn doContinuous(Step<TParticle> const&, bool);
49 
50  template <typename TParticle, typename TTrack>
51  LengthType getMaxStepLength(TParticle const&, TTrack const&) {
52  return meter * std::numeric_limits<double>::infinity();
53  }
54 
55  YAML::Node getConfig() const;
56  };
57 
58 } // namespace corsika
59 
60 #include <corsika/detail/modules/LongitudinalProfile.inl>
Import and extend the phys::units package.
Processes with continuous effects along a particle Trajectory.
`, since they are used everywhere as integral part of the framework.
ProcessReturn
since in a process sequence many status updates can accumulate for a single particle, this enum should define only bit-flags that can be accumulated easily with "|="