#ifndef ULIB_MATH_UNITS_H #define ULIB_MATH_UNITS_H #ifdef HAVE_GEANT4 #include #include #else #include "CLHEP_defs.hh" #endif namespace uLib { using namespace CLHEP; inline namespace literals { constexpr double operator""_m(long double v) { return static_cast(v) * CLHEP::meter; } constexpr double operator""_cm(long double v) { return static_cast(v) * CLHEP::centimeter; } constexpr double operator""_mm(long double v) { return static_cast(v) * CLHEP::millimeter; } constexpr double operator""_um(long double v) { return static_cast(v) * CLHEP::micrometer; } constexpr double operator""_nm(long double v) { return static_cast(v) * CLHEP::nanometer; } constexpr double operator""_km(long double v) { return static_cast(v) * CLHEP::kilometer; } constexpr double operator""_m(unsigned long long v) { return static_cast(v) * CLHEP::meter; } constexpr double operator""_cm(unsigned long long v) { return static_cast(v) * CLHEP::centimeter; } constexpr double operator""_mm(unsigned long long v) { return static_cast(v) * CLHEP::millimeter; } constexpr double operator""_um(unsigned long long v) { return static_cast(v) * CLHEP::micrometer; } constexpr double operator""_nm(unsigned long long v) { return static_cast(v) * CLHEP::nanometer; } constexpr double operator""_km(unsigned long long v) { return static_cast(v) * CLHEP::kilometer; } constexpr double operator""_deg(long double v) { return static_cast(v) * CLHEP::degree; } constexpr double operator""_rad(long double v) { return static_cast(v) * CLHEP::radian; } constexpr double operator""_deg(unsigned long long v) { return static_cast(v) * CLHEP::degree; } constexpr double operator""_rad(unsigned long long v) { return static_cast(v) * CLHEP::radian; } constexpr double operator""_ns(long double v) { return static_cast(v) * CLHEP::nanosecond; } constexpr double operator""_s(long double v) { return static_cast(v) * CLHEP::second; } constexpr double operator""_ms(long double v) { return static_cast(v) * CLHEP::millisecond; } constexpr double operator""_ns(unsigned long long v) { return static_cast(v) * CLHEP::nanosecond; } constexpr double operator""_s(unsigned long long v) { return static_cast(v) * CLHEP::second; } constexpr double operator""_ms(unsigned long long v) { return static_cast(v) * CLHEP::millisecond; } constexpr double operator""_MeV(long double v) { return static_cast(v) * CLHEP::megaelectronvolt; } constexpr double operator""_eV(long double v) { return static_cast(v) * CLHEP::electronvolt; } constexpr double operator""_keV(long double v) { return static_cast(v) * CLHEP::kiloelectronvolt; } constexpr double operator""_GeV(long double v) { return static_cast(v) * CLHEP::gigaelectronvolt; } constexpr double operator""_TeV(long double v) { return static_cast(v) * CLHEP::teraelectronvolt; } constexpr double operator""_MeV(unsigned long long v) { return static_cast(v) * CLHEP::megaelectronvolt; } constexpr double operator""_eV(unsigned long long v) { return static_cast(v) * CLHEP::electronvolt; } constexpr double operator""_keV(unsigned long long v) { return static_cast(v) * CLHEP::kiloelectronvolt; } constexpr double operator""_GeV(unsigned long long v) { return static_cast(v) * CLHEP::gigaelectronvolt; } } } #endif