#ifndef _include_PhysicalUnits_h_ #define _include_PhysicalUnits_h_ #include <corsika/units/PhysicalConstants.h> #include <phys/units/io.hpp> #include <phys/units/quantity.hpp> /** * @file PhysicalUnits * * Add units and types we need * * Define _XeV literals, etc., allowing 10_GeV in the code. */ namespace corsika::units::hep { using namespace phys::units; using namespace phys::units::literals; /// defining HEP energy, mass, momentum using energy_hep_d = phys::units::energy_d; using MassType = phys::units::quantity<energy_hep_d, double>; using MomentumType = phys::units::quantity<energy_hep_d, double>; using EnergyType = phys::units::quantity<energy_hep_d, double>; } // end namespace corsika::units::si namespace corsika::units::si { using namespace phys::units; using namespace phys::units::literals; // namespace literals = phys::units::literals; using LengthType = phys::units::quantity<phys::units::length_d, double>; using TimeType = phys::units::quantity<phys::units::time_interval_d, double>; using SpeedType = phys::units::quantity<phys::units::speed_d, double>; using FrequencyType = phys::units::quantity<phys::units::frequency_d, double>; using ElectricChargeType = phys::units::quantity<phys::units::electric_charge_d, double>; using EnergyType = phys::units::quantity<phys::units::energy_d, double>; using MassType = phys::units::quantity<phys::units::mass_d, double>; } // end namespace corsika::units::si namespace phys { namespace units { namespace literals { QUANTITY_DEFINE_SCALING_LITERALS(eV, energy_d, magnitude(corsika::units::si::constants::eV)) } // namespace literals } // namespace units } // namespace phys // we want to call the operator<< without namespace... I think using namespace phys::units::io; #endif