diff --git a/Environment/NuclearComposition.h b/Environment/NuclearComposition.h
index 3678b1305bb6b0e2bb29dae4ac18917afd0fa5fc..a96abd40220f3370b4e5bbfaaa0da65b72d7997e 100644
--- a/Environment/NuclearComposition.h
+++ b/Environment/NuclearComposition.h
@@ -24,12 +24,19 @@ namespace corsika::environment {
     std::vector<corsika::particles::Code> const
         fComponents; //!< particle codes of consitutents
 
+    double const fAvgMassNumber;
+
   public:
     NuclearComposition(std::vector<corsika::particles::Code> pComponents,
                        std::vector<float> pFractions)
         : fNumberFractions(pFractions)
-        , fComponents(pComponents) {
-
+        , 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;
+              })) {
       assert(pComponents.size() == pFractions.size());
       auto const sumFractions =
           std::accumulate(pFractions.cbegin(), pFractions.cend(), 0.f);
@@ -43,6 +50,7 @@ namespace corsika::environment {
 
     auto const& GetFractions() const { return fNumberFractions; }
     auto const& GetComponents() const { return fComponents; }
+    auto const GetAverageMassNumber() const { return fAvgMassNumber; }
   };
 
 } // namespace corsika::environment