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