diff --git a/corsika/detail/modules/proposal/HadronicPhotonModel.inl b/corsika/detail/modules/proposal/HadronicPhotonModel.inl index f4707a0a4855951e6a34c7274c3c75f57a3814df..e60712e86a5209114eb7f2c8a708fefdc9f9bc92 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();