diff --git a/Processes/InteractionCounter/InteractionCounter.h b/Processes/InteractionCounter/InteractionCounter.h
index 7c4989c02fd1a14a93351ba5f8a83cd59aeeb6f6..b5e8b2d5ae85bcf8f6db0ae7af574aa3efdf5b72 100644
--- a/Processes/InteractionCounter/InteractionCounter.h
+++ b/Processes/InteractionCounter/InteractionCounter.h
@@ -81,9 +81,14 @@ namespace corsika::process::interaction_counter {
     template <typename TProjectile>
     auto DoInteraction(TProjectile& projectile) {
       using namespace units::si;
-      auto constexpr massAir = 15.994_GeV * (1.f - 0.7847) + 14.003_GeV * .7847;
-      auto const sqrtS = sqrt(projectile.GetMass() * projectile.GetMass() +
-                              massAir * massAir + 2 * projectile.GetEnergy() * massAir);
+      auto const massNumber = projectile.GetNode()
+                                  ->GetModelProperties()
+                                  .GetNuclearComposition()
+                                  .GetAverageMassNumber();
+      auto const massTarget = massNumber * ConvertSIToHEP(units::constants::u);
+      auto const massProjectile = projectile.GetMass();
+      auto const sqrtS = sqrt(massProjectile * massProjectile + massTarget * massTarget +
+                              2 * massProjectile * massTarget);
 
       if (projectile.GetPID() == corsika::particles::Code::Nucleus) {
         std::cerr << "NUCLEUS " << projectile.GetEnergy() << " "
@@ -91,7 +96,7 @@ namespace corsika::process::interaction_counter {
                   << std::endl;
         int const A = projectile.GetNuclearA();
         int const Z = projectile.GetNuclearZ();
-        int32_t pdg = 1'000'000'000l + Z * 10'000l + A * 10l;
+        int32_t const pdg = 1'000'000'000l + Z * 10'000l + A * 10l;
 
         if (nuclIntHistCMS.count(pdg) == 0) {