From 03a6c79591a96c3644dc9cb7212af503bb26e696 Mon Sep 17 00:00:00 2001
From: Felix Riehn <felix@matilda>
Date: Wed, 18 Jan 2023 18:44:41 +0100
Subject: [PATCH] fix off-shell target nucleons in hadronic photon

---
 corsika/detail/modules/proposal/HadronicPhotonModel.inl | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/corsika/detail/modules/proposal/HadronicPhotonModel.inl b/corsika/detail/modules/proposal/HadronicPhotonModel.inl
index f4707a0a4..e60712e86 100644
--- a/corsika/detail/modules/proposal/HadronicPhotonModel.inl
+++ b/corsika/detail/modules/proposal/HadronicPhotonModel.inl
@@ -97,6 +97,9 @@ namespace corsika::proposal {
       corsika::default_prng_type& rng =
           corsika::RNGManager<>::getInstance().getRandomStream("proposal");
       Code const nucleonId = (nucleonChannelDist(rng) ? Code::Neutron : Code::Proton);
+      // target passed to SOPHIA needs to be exactly on-shell!
+      FourMomentum const nucleonP4(get_mass(nucleonId),
+                                   MomentumVector(labCS, {0_GeV, 0_GeV, 0_GeV}));
       CORSIKA_LOGGER_DEBUG(logger_,
                            "selected {} as target nucleon (f_proton, f_neutron)={},{}",
                            nucleonId, fProtons, fNeutrons);
@@ -113,7 +116,7 @@ namespace corsika::proposal {
         return ProcessReturn::Ok;
       }
       leHadronicInteraction_.doInteraction(photon_secondaries, Code::Photon, nucleonId,
-                                           photonP4, targetP4 / get_nucleus_A(targetId));
+                                           photonP4, nucleonP4);
     }
     for (const auto& pSec : photon_secondaries) {
       auto const p3lab = pSec.getMomentum();
-- 
GitLab