diff --git a/corsika/framework/core/EnergyMomentumOperations.hpp b/corsika/framework/core/EnergyMomentumOperations.hpp index c7abc940eeff4c5897deccb553ae4177e686eb53..b7e44e77caf2fc0b11f9d2a1559ed447efcefbbe 100644 --- a/corsika/framework/core/EnergyMomentumOperations.hpp +++ b/corsika/framework/core/EnergyMomentumOperations.hpp @@ -117,4 +117,17 @@ namespace corsika { return (sqrtS_sqr - static_pow<2>(m_proj) - static_pow<2>(m_targ)) / (2 * m_targ); } + /** + * \f[E_{com}=sqrt{2 * m_{proj} * m_{targ} * E_{lab} + m_{proj}^2 + m_{targ}^2} \f] + * + * @param E lab. energy. + * @param m particle mass. + * @return HEPEnergyType + */ + HEPEnergyType constexpr calculate_com_energy(HEPEnergyType Elab, + HEPMassType const m_proj, + HEPMassType const m_targ) { + return sqrt(2 * Elab * m_targ + static_pow<2>(m_proj) + static_pow<2>(m_targ)); + } + } // namespace corsika