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