20 enum class QgsjetIICode : int8_t;
21 using QgsjetIICodeIntType = std::underlying_type<QgsjetIICode>::type;
26 enum class QgsjetIIXSClass : int8_t {
32 using QgsjetIIXSClassIntType = std::underlying_type<QgsjetIIXSClass>::type;
37 enum class QgsjetIIHadronType : int8_t {
51 NeutralLightMesonType = 101,
53 using QgsjetIIHadronTypeIntType = std::underlying_type<QgsjetIIHadronType>::type;
57 #include <corsika/modules/qgsjetII/Generated.inc> 61 QgsjetIICode constexpr convertToQgsjetII(Code
const pCode) {
62 return corsika2qgsjetII[
static_cast<CodeIntType
>(pCode)];
65 Code constexpr convertFromQgsjetII(QgsjetIICode
const code) {
66 auto const codeInt =
static_cast<QgsjetIICodeIntType
>(code);
67 auto const corsikaCode = qgsjetII2corsika[codeInt - minQgsjetII];
68 if (corsikaCode == Code::Unknown) {
69 throw std::runtime_error(std::string(
"QGSJETII/CORSIKA conversion of pCodeInt=")
71 .append(
" impossible"));
76 QgsjetIICodeIntType constexpr convertToQgsjetIIRaw(Code
const code) {
77 return static_cast<QgsjetIICodeIntType
>(convertToQgsjetII(code));
80 QgsjetIIXSClass constexpr getQgsjetIIXSCode(Code
const code) {
81 return is_nucleus(code) ? QgsjetIIXSClass::Baryons
82 : corsika2qgsjetIIXStype[
static_cast<CodeIntType
>(code)];
85 QgsjetIIXSClassIntType constexpr getQgsjetIIXSCodeRaw(Code
const code) {
87 ?
static_cast<QgsjetIIXSClassIntType
>(QgsjetIIXSClass::Baryons)
88 : static_cast<QgsjetIIXSClassIntType>(getQgsjetIIXSCode(code));
91 bool constexpr canInteract(Code
const code) {
93 return getQgsjetIIXSCode(code) != QgsjetIIXSClass::CannotInteract;
96 QgsjetIIHadronType constexpr getQgsjetIIHadronType(Code
const code) {
97 if (
is_nucleus(code))
return QgsjetIIHadronType::NucleusType;
98 return corsika2qgsjetIIHadronType[
static_cast<CodeIntType
>(code)];
std::string to_string(long double const value)
string representation of value.
bool constexpr is_nucleus(Code const)
Checks if Code corresponds to a nucleus.
Interface to particle properties.