diff --git a/Environment/HydrogenSphere/HydrogenSphere.h b/Environment/HydrogenSphere/HydrogenSphere.h
new file mode 100644
index 0000000000000000000000000000000000000000..aaf15e89f714afdb7750f2c96b303e0b384d8785
--- /dev/null
+++ b/Environment/HydrogenSphere/HydrogenSphere.h
@@ -0,0 +1,38 @@
+#ifndef _include_HydrogenSphere_h_
+#define _include_HydrogenSphere_h_
+
+#include <corsika/geometry/CoordinateSystem.h>
+#include <corsika/particles/ParticleProperties.h>
+#include <corsika/units/PhysicalUnits.h>
+
+/**
+ * a fSphere homogeneously filled with hydrogen
+ */
+
+class HydrogenSphere {
+  CoordinateSystem const& fCS;
+  corsika::geometry::Sphere const fSphere;
+  MassDensityType const fDensity;
+
+public:
+  HydrogenSphere(corsika::geometry::CoordinateSystem const& pEnvCS, LengthType pRadius,
+                 MassDensityType pDensity)
+      : fCS(pEnvCS) fSphere(corsika::geometry::Point(pEnvCS, {0_m, 0_m, 0_m}), radius)
+      , fDensity(pDensity) {}
+
+  auto GetTargetParticle(Point const& p) const {
+    return fSphere.isInside(p) ? corsika::particles::Code::Proton
+                               : corsika::particles::Code::Unknown;
+  }
+
+  MassDensityType GetDensity(Point const& p) const { return density; };
+
+  GetMagneticField(Point const& p) {
+    QuantityVector<magnetic_flux_density_d> components{0 * corsika::units::tesla,
+                                                       0. * corsika::units::tesla,
+                                                       0. * corsika::units::tesla};
+    return Vector<magnetic_flux_density_d>(fCS, components);
+  }
+};
+
+#endif