#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