diff --git a/corsika/detail/modules/pythia8/Interaction.inl b/corsika/detail/modules/pythia8/Interaction.inl index 61bee857ca971c7895ca8bfa182df5c3fb82871d..c8e42c011bc09c6e72e21559d16339efa0562b58 100644 --- a/corsika/detail/modules/pythia8/Interaction.inl +++ b/corsika/detail/modules/pythia8/Interaction.inl @@ -31,37 +31,34 @@ namespace corsika::pythia8 { std::cout << "Pythia::Interaction n=" << count_ << std::endl; // initialize Pythia - if (!initialized_) { - - pythia_.readString("Print:quiet = off"); - pythia_.readString("Check:particleData = on"); // during init - pythia_.readString("Check:event = on"); // default: on - pythia_.readString("Check:levelParticleData = 12"); // 1 is default - // TODO: proper process initialization for MinBias needed - pythia_.readString("HardQCD:all = on"); - pythia_.readString("ProcessLevel:resonanceDecays = off"); - - pythia_.init(); - - // any decays in pythia? if yes need to define which particles - if (internalDecays_) { - // define which particles are passed to corsika, i.e. which particles make it into - // history even very shortlived particles like charm or pi0 are of interest here - const std::vector<Code> HadronsWeWantTrackedByCorsika = { - Code::PiPlus, Code::PiMinus, Code::Pi0, Code::KMinus, - Code::KPlus, Code::K0Long, Code::K0Short, Code::SigmaPlus, - Code::SigmaMinus, Code::Lambda0, Code::Xi0, Code::XiMinus, - Code::OmegaMinus, Code::DPlus, Code::DMinus, Code::D0, - Code::D0Bar}; - - Interaction::setStable(HadronsWeWantTrackedByCorsika); - } - - // basic initialization of cross section routines - sigma_.init(&pythia_.info, pythia_.settings, &pythia_.particleData, &pythia_.rndm); - initialized_ = true; + pythia_.readString("Print:quiet = off"); + pythia_.readString("Check:particleData = on"); // during init + pythia_.readString("Check:event = on"); // default: on + pythia_.readString("Check:levelParticleData = 12"); // 1 is default + // TODO: proper process initialization for MinBias needed + pythia_.readString("HardQCD:all = on"); + pythia_.readString("ProcessLevel:resonanceDecays = off"); + + if (!pythia_.init()) + throw std::runtime_error("Pythia::Interaction: Initialization failed!"); + + // any decays in pythia? if yes need to define which particles + if (internalDecays_) { + // define which particles are passed to corsika, i.e. which particles make it into + // history even very shortlived particles like charm or pi0 are of interest here + const std::vector<Code> HadronsWeWantTrackedByCorsika = { + Code::PiPlus, Code::PiMinus, Code::Pi0, Code::KMinus, + Code::KPlus, Code::K0Long, Code::K0Short, Code::SigmaPlus, + Code::SigmaMinus, Code::Lambda0, Code::Xi0, Code::XiMinus, + Code::OmegaMinus, Code::DPlus, Code::DMinus, Code::D0, + Code::D0Bar}; + + Interaction::setStable(HadronsWeWantTrackedByCorsika); } + + // basic initialization of cross section routines + sigma_.init(&pythia_.info, pythia_.settings, &pythia_.particleData, &pythia_.rndm); } void Interaction::setStable(std::vector<Code> const& particleList) { @@ -106,7 +103,9 @@ namespace corsika::pythia8 { // target at rest pythia_.readString("Beams:eB = 0."); // initialize this config - pythia_.init(); + + if (!pythia_.init()) + throw std::runtime_error("Pythia::Interaction: Initialization failed!"); } bool Interaction::canInteract(Code const pCode) { diff --git a/corsika/modules/pythia8/Interaction.hpp b/corsika/modules/pythia8/Interaction.hpp index 08c1d429bebc47887a7b18f224f00936c9c4f6d7..9370ffd570fafb9539200720c74e90fee4340284 100644 --- a/corsika/modules/pythia8/Interaction.hpp +++ b/corsika/modules/pythia8/Interaction.hpp @@ -30,7 +30,6 @@ namespace corsika::pythia8 { void setUnstable(const Code); void setStable(const Code); - bool wasInitialized() { return initialized_; } bool isValidCoMEnergy(HEPEnergyType ecm) { return (10_GeV < ecm) && (ecm < 1_PeV); } bool canInteract(const Code); @@ -56,7 +55,6 @@ namespace corsika::pythia8 { Pythia8::SigmaTotal sigma_; const bool internalDecays_ = true; int count_ = 0; - bool initialized_ = false; bool print_listing_ = false; }; diff --git a/modules/data b/modules/data index 8b76a9ca2599cd0ce1f204b17362eb06bbcf5277..15ca93e3b9a766ba93aa40e626f41ba5bcbfa0b8 160000 --- a/modules/data +++ b/modules/data @@ -1 +1 @@ -Subproject commit 8b76a9ca2599cd0ce1f204b17362eb06bbcf5277 +Subproject commit 15ca93e3b9a766ba93aa40e626f41ba5bcbfa0b8 diff --git a/modules/pythia/CMakeLists.txt b/modules/pythia/CMakeLists.txt index 980e42375a04347de5b8fd96cad79f6526d66a8a..711d397867649f926b997e3f6f3138a85f9274b4 100644 --- a/modules/pythia/CMakeLists.txt +++ b/modules/pythia/CMakeLists.txt @@ -43,10 +43,15 @@ else () URL ${CMAKE_CURRENT_SOURCE_DIR}/pythia${_C8_Pythia8_VERSION}-stripped.tar.bz2 URL_MD5 83132880c0594b808bd7fd37fb642606 SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/pythia8/source - INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/pythia8/install - CONFIGURE_COMMAND ./configure --cxx-common=-Wno-deprecated-copy --prefix=${CMAKE_CURRENT_BINARY_DIR}/pythia8/install + INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/external/pythia8 + LOG_DIR ${CMAKE_CURRENT_BINARY_DIR}/pythia8/log + CONFIGURE_COMMAND ./configure --cxx-common=\\"-Wall -pedantic -Wextra -Wno-ignored-qualifiers -O0 -DNDEBUG -Wno-nonportable-include-path -g -std=c++17 -Wno-deprecated-copy -fPIC\\" --prefix=${CMAKE_INSTALL_PREFIX}/external/pythia8 BUILD_IN_SOURCE ON EXCLUDE_FROM_ALL TRUE + LOG_CONFIGURE TRUE + LOG_BUILD TRUE + LOG_INSTALL TRUE + LOG_MERGED_STDOUTERR TRUE ) set (Pythia8_FOUND 1 PARENT_SCOPE) ExternalProject_Get_Property (pythia8 INSTALL_DIR) @@ -77,3 +82,4 @@ endif () ##### add pythia8 to CORSIKA8 build add_dependencies (CORSIKA8 C8::ext::pythia8) target_link_libraries (CORSIKA8 INTERFACE C8::ext::pythia8) +