CORSIKA  @c8_version@
The framework to simulate particle cascades for astroparticle physics
InteractionModel.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 
9 #pragma once
10 
14 #include <corsika/modules/sibyll/HadronInteractionModel.hpp>
15 #include <corsika/modules/sibyll/NuclearInteractionModel.hpp>
16 
17 namespace corsika::sibyll {
25  public:
27 
28  template <typename TEnvironment>
29  InteractionModel(TEnvironment const&);
30 
31  CrossSectionType getCrossSection(Code, Code, FourMomentum const&,
32  FourMomentum const&) const;
33 
34  template <typename TSecondaries>
35  void doInteraction(TSecondaries&, Code, Code, FourMomentum const&,
36  FourMomentum const&);
37 
38  HadronInteractionModel& getHadronInteractionModel();
39  HadronInteractionModel const& getHadronInteractionModel() const;
40  nuclear_model_type& getNuclearInteractionModel();
41  nuclear_model_type const& getNuclearInteractionModel() const;
42 
43  private:
44  HadronInteractionModel hadronSibyll_;
45  nuclear_model_type nuclearSibyll_;
46  };
47 } // namespace corsika::sibyll
48 
49 #include <corsika/detail/modules/sibyll/InteractionModel.inl>
This class combines sibyll::HadronInteractionModel, which can only handle hadron projectiles, and sibyll::NuclearInteractionModel, which can handle only nucleus projectile, into a single process.
Import and extend the phys::units package.
Provides the SIBYLL hadron-nucleus interaction model.
Description of physical four-vectors.
Definition: FourVector.hpp:51
Interface to particle properties.
General FourVector object.