13 #include <corsika/framework/random/RNGManager.hpp> 14 #include <corsika/framework/process/InteractionProcess.hpp> 20 std::string data_path_;
21 unsigned int count_ = 0;
25 Interaction(std::string
const& dataPath =
"",
bool const epos_printout_on =
false);
33 Code
const,
int const,
int const, Code
const,
int const,
int const,
39 Code
const,
int const,
int const, Code
const,
HEPEnergyType const)
const;
45 Code
const,
int const,
int const, Code
const,
int const,
int const,
48 template <
typename TParticle>
49 GrammageType getInteractionLength(TParticle
const&)
const;
55 template <
typename TSecondaries>
59 return (minEnergyCoM_ <= ecm) && (ecm <= maxEnergyCoM_);
66 void initialize()
const;
67 void initializeEventCoM(Code
const,
int const,
int const, Code
const,
int const,
69 void initializeEventLab(Code
const,
int const,
int const, Code
const,
int const,
71 void configureParticles(Code
const,
int const,
int const, Code
const,
int const,
73 void setParticlesStable()
const;
77 std::shared_ptr<spdlog::logger> logger_ =
get_logger(
"corsika_epos_Interaction");
79 HEPEnergyType const maxEnergyCoM_ = 2.e6 * 1e9 * electronvolt;
80 int const maxTargetMassNumber_ = 20;
81 int const minNuclearTargetA_ = 4;
86 #include <corsika/detail/modules/epos/Interaction.inl>
Import and extend the phys::units package.
std::tuple< CrossSectionType, CrossSectionType > calcCrossSectionCoM(Code const, int const, int const, Code const, int const, int const, HEPEnergyType const) const
returns production and elastic cross section for hadrons in epos. Inputs are: CorsikaId of beam parti...
std::tuple< CrossSectionType, CrossSectionType > readCrossSectionTableLab(Code const, int const, int const, Code const, HEPEnergyType const) const
returns production and elastic cross section for hadrons in epos by reading pre-calculated tables fro...
std::tuple< CrossSectionType, CrossSectionType > getCrossSectionLab(Code const, int const, int const, Code const, int const, int const, HEPEnergyType const) const
returns production and elastic cross section. Allowed configurations are hadron-nucleon, hadron-nucleus and nucleus-nucleus. Inputs are particle id's mass and charge numbers and total energy in the lab.
std::shared_ptr< spdlog::logger > get_logger(std::string const &name, bool const defaultlog=false)
Get a smart pointer to an existing logger.
void doInteraction(TSecondaries &)
In this function EPOSLHC is called to produce one event.
bool isValidTarget(Code const) const
eposlhc only accepts nuclei with X<=A<=Y as targets, or protons aka Hydrogen or neutrons (p...
Interface to particle properties.
Process describing the interaction of particles.
prng_type & getRandomStream(string_type const &streamName)