From 54eb6341e1cdcb7c234cabde544838aa155ad95c Mon Sep 17 00:00:00 2001
From: Felix Riehn <felix@matilda>
Date: Thu, 22 Sep 2022 18:59:02 +0100
Subject: [PATCH] allow Lead-Lead interactions in epos

---
 corsika/detail/modules/epos/InteractionModel.inl | 11 +++++++----
 corsika/modules/epos/InteractionModel.hpp        |  3 +--
 tests/modules/testEpos.cpp                       |  2 +-
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/corsika/detail/modules/epos/InteractionModel.inl b/corsika/detail/modules/epos/InteractionModel.inl
index 14ad756e9..f5cd77c48 100644
--- a/corsika/detail/modules/epos/InteractionModel.inl
+++ b/corsika/detail/modules/epos/InteractionModel.inl
@@ -21,6 +21,7 @@
 #include <string>
 #include <tuple>
 #include <cmath>
+#include "corsika/framework/core/ParticleProperties.hpp"
 
 namespace corsika::epos {
 
@@ -64,7 +65,8 @@ namespace corsika::epos {
     if (!is_nucleus(targetId) && targetId != Code::Neutron && targetId != Code::Proton) {
       return false;
     }
-    if (is_nucleus(targetId) && (get_nucleus_A(targetId) >= maxTargetMassNumber_)) {
+    if (is_nucleus(targetId) &&
+        (get_nucleus_A(targetId) >= get_nucleus_A(maxNucleus_))) {
       return false;
     }
     if ((minEnergyCoM_ > sqrtS) || (sqrtS > maxEnergyCoM_)) { return false; }
@@ -141,9 +143,10 @@ namespace corsika::epos {
     strcpy(::epos::fname_.fncs, CS.data);
     ::epos::nfname_.nfncs = CS.length;
 
-    // initialiazes maximum energy and mass
-    initializeEventCoM(Code::Lead, Lead::nucleus_A, Lead::nucleus_Z, Code::Lead,
-                       Lead::nucleus_A, Lead::nucleus_Z, 1_PeV);
+    // initializes maximum energy and mass
+    initializeEventCoM(
+        maxNucleus_, get_nucleus_A(maxNucleus_), get_nucleus_Z(maxNucleus_), maxNucleus_,
+        get_nucleus_A(maxNucleus_), get_nucleus_Z(maxNucleus_), maxEnergyCoM_);
   }
 
   inline void InteractionModel::initializeEventCoM(Code const idBeam, int const iBeamA,
diff --git a/corsika/modules/epos/InteractionModel.hpp b/corsika/modules/epos/InteractionModel.hpp
index b6701bfb5..3b2d50126 100644
--- a/corsika/modules/epos/InteractionModel.hpp
+++ b/corsika/modules/epos/InteractionModel.hpp
@@ -109,8 +109,7 @@ namespace corsika::epos {
     std::shared_ptr<spdlog::logger> logger_ = get_logger("corsika_epos_Interaction");
     HEPEnergyType const minEnergyCoM_ = 6 * 1e9 * electronvolt;
     HEPEnergyType const maxEnergyCoM_ = 2.e6 * 1e9 * electronvolt;
-    static unsigned int constexpr maxTargetMassNumber_ = 20;
-    static unsigned int constexpr minNuclearTargetA_ = 4;
+    static Code constexpr maxNucleus_ = Code::Lead;    
   };
 
 } // namespace corsika::epos
diff --git a/tests/modules/testEpos.cpp b/tests/modules/testEpos.cpp
index 2c9c079c1..ac643d9e6 100644
--- a/tests/modules/testEpos.cpp
+++ b/tests/modules/testEpos.cpp
@@ -148,7 +148,7 @@ TEST_CASE("Epos", "modules") {
     CHECK_FALSE(model.isValid(Code::Proton, Code::Electron, 100_GeV));
     CHECK(model.isValid(Code::Proton, Code::Hydrogen, 100_GeV));
     CHECK(model.isValid(Code::Proton, Code::Helium, 100_GeV));
-    CHECK_FALSE(model.isValid(Code::Proton, Code::Iron, 100_GeV));
+    CHECK_FALSE(model.isValid(Code::Proton, Code::Iron, 10_EeV));
     CHECK(model.isValid(Code::Proton, Code::Oxygen, 100_GeV));
   }
 
-- 
GitLab