CORSIKA  @c8_version@
The framework to simulate particle cascades for astroparticle physics
UrQMD.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/random/RNGManager.hpp>
16 
17 #include <boost/filesystem/path.hpp>
18 #include <boost/multi_array.hpp>
19 
20 #include <array>
21 #include <utility>
22 #include <string>
23 
24 namespace corsika::urqmd {
25 
26  class UrQMD {
27  public:
35  UrQMD(boost::filesystem::path const path = corsika_data("UrQMD/UrQMD-1.3.1-xs.dat"),
36  int const retryFlag = 0);
37 
38  bool isValid(Code const projectileId, Code const targetId) const;
39 
40  CrossSectionType getTabulatedCrossSection(Code const, Code const,
41  HEPEnergyType const) const;
42 
43  CrossSectionType getCrossSection(Code const projectileId, Code const targetId,
44  FourMomentum const& projP4,
45  FourMomentum const& targP4) const;
46 
47  template <typename TView>
48  void doInteraction(TView&, Code const projectile, Code const targetId,
49  FourMomentum const& projP4, FourMomentum const& targP4);
50 
51  private:
52  void readXSFile(boost::filesystem::path);
53 
54  // data members
55  default_prng_type& RNG_ = RNGManager<>::getInstance().getRandomStream("urqmd");
56  std::uniform_int_distribution<int> booleanDist_{0, 1};
57  int iflb_;
58  boost::multi_array<CrossSectionType, 3> xs_interp_support_table_;
59  };
60 
61 } // namespace corsika::urqmd
62 
63 #include <corsika/detail/modules/urqmd/UrQMD.inl>
Import and extend the phys::units package.
UrQMD(boost::filesystem::path const path=corsika_data("UrQMD/UrQMD-1.3.1-xs.dat"), int const retryFlag=0)
The UrQMD interaction model.
Description of physical four-vectors.
Definition: FourVector.hpp:51
returns the full path of the file filename within the CORSIKA_DATA directory.
Interface to particle properties.
General FourVector object.
prng_type & getRandomStream(string_type const &streamName)