From 29ec2618cba1bac4691511bf2dc755ab7e5ab0fe Mon Sep 17 00:00:00 2001
From: Felix Riehn <felix@matilda>
Date: Fri, 15 Apr 2022 12:50:33 +0100
Subject: [PATCH] add convenience function to calculate center-of-mass energy

---
 corsika/framework/core/EnergyMomentumOperations.hpp | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/corsika/framework/core/EnergyMomentumOperations.hpp b/corsika/framework/core/EnergyMomentumOperations.hpp
index c7abc940e..b7e44e77c 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
-- 
GitLab