CORSIKA  @c8_version@
The framework to simulate particle cascades for astroparticle physics
ZHS.hpp
1 /*
2  * (c) Copyright 2022 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 #pragma once
9 
10 #include <corsika/modules/radio/RadioProcess.hpp>
11 #include <corsika/framework/geometry/QuantityVector.hpp>
13 
14 namespace corsika {
15 
19  template <typename TRadioDetector, typename TPropagator>
20  class ZHS final : public RadioProcess<TRadioDetector, ZHS<TRadioDetector, TPropagator>,
21  TPropagator> {
22 
23  public:
24  // an identifier for which algorithm was used
25  static constexpr auto algorithm = "ZHS";
26 
34  template <typename... TArgs>
35  ZHS(TRadioDetector& detector, TArgs&&... args)
36  : RadioProcess<TRadioDetector, ZHS, TPropagator>(detector, args...) {}
37 
47  template <typename Particle>
49  static constexpr auto emConstant_{1.0 / (4.0 * M_PI) / (constants::epsilonZero) /
50  constants::c};
51 
52  private:
53  using Base =
55  using Base::antennas_;
56 
57  }; // END: class ZHS
58 
59 } // namespace corsika
60 
61 #include <corsika/detail/modules/radio/ZHS.inl>
ZHS(TRadioDetector &detector, TArgs &&... args)
Construct a new ZHS instance.
Definition: ZHS.hpp:35
Import and extend the phys::units package.
A concrete implementation of the ZHS algorithm.
Definition: ZHS.hpp:20
`, since they are used everywhere as integral part of the framework.
ProcessReturn simulate(Step< Particle > const &step)
Simulate the radio emission from a particle across a track.
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 "|="
The base interface for radio emission processes.