From e3db1b1dbc4fe12fa09079bd82369b34462c59f2 Mon Sep 17 00:00:00 2001
From: Maximilian Reininghaus <maximilian.reininghaus@kit.edu>
Date: Mon, 13 May 2019 15:49:00 -0300
Subject: [PATCH] NuclearCompostion: avg. mass number also for non-nuclei

(e.g. for p-composition instead of H)
---
 Environment/NuclearComposition.h | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/Environment/NuclearComposition.h b/Environment/NuclearComposition.h
index 491f25a25..d97ba3808 100644
--- a/Environment/NuclearComposition.h
+++ b/Environment/NuclearComposition.h
@@ -64,9 +64,13 @@ namespace corsika::environment {
         , fComponents(pComponents)
         , fAvgMassNumber(std::inner_product(
               pComponents.cbegin(), pComponents.cend(), pFractions.cbegin(), 0.,
-              [](double x, double y) { return x + y; },
-              [](auto const& compID, auto const& fraction) {
-                return corsika::particles::GetNucleusA(compID) * fraction;
+              std::plus<double>(), [](auto const compID, auto const fraction) -> double {
+                if (particles::IsNucleus(compID)) {
+                  return particles::GetNucleusA(compID) * fraction;
+                } else {
+                  return particles::GetMass(compID) /
+                         units::si::ConvertSIToHEP(units::constants::u) * fraction;
+                }
               })) {
       assert(pComponents.size() == pFractions.size());
       auto const sumFractions =
-- 
GitLab