1 #ifndef DataFormats_Math_GeantUnits_h
2 #define DataFormats_Math_GeantUnits_h
11 namespace geant_units {
14 constexpr
double joule(6.24150
e+12);
31 constexpr
double operator"" _mm(
long double length) {
return length * 1.; }
32 constexpr
double operator"" _cm(
long double length) {
return length * 10.; }
33 constexpr
double operator"" _m(
long double length) {
return length * 1000.; }
34 constexpr
double operator"" _cm3(
long double length) {
return length * 1._cm * 1._cm * 1._cm; }
35 constexpr
double operator"" _m3(
long double length) {
return length * 1._m * 1._m * 1._m; }
36 constexpr
double operator"" _mm(
unsigned long long int length) {
return length * 1; }
37 constexpr
double operator"" _cm(
unsigned long long int length) {
return length * 10; }
40 constexpr
double operator"" _s(
long double x) {
return x *
seconds; }
41 constexpr
double operator"" _ns(
long double x) {
return x *
nanoseconds; }
44 constexpr
double operator"" _MeV(
long double energy) {
return energy * 1.; }
45 constexpr
double operator"" _eV(
long double energy) {
return energy * 1.e-6_MeV; }
46 constexpr
double operator"" _TeV(
long double energy) {
return energy * 1.e6_MeV; }
47 constexpr
double operator"" _GeV(
long double energy) {
return energy * 1000._MeV; }
50 constexpr
double operator"" _kg(
long double mass) {
51 return mass * (1._eV / 1.602176487e-19) * 1._s * 1._s / (1._m * 1._m);
53 constexpr
double operator"" _g(
long double mass) {
return mass * 1.e-3_kg; }
54 constexpr
double operator"" _mg(
long double mass) {
return mass * 1.e-3_g; }
55 constexpr
double operator"" _mole(
long double mass) {
return mass * 1.; }
58 constexpr
double operator"" _mg_per_cm3(
long double density) {
return density * 1._mg / 1._cm3; }
59 constexpr
double operator"" _g_per_cm3(
long double density) {
return density * 1._g / 1._cm3; }
60 constexpr
double operator"" _g_per_mole(
long double mass) {
return mass * 1._g / 1._mole; }
62 template <
class NumType>
65 return (millimeters / 10.);
68 template <
class NumType>
71 return (centimeters * 10.);
74 template <
class NumType>
77 return (centimeters * 100.);
80 template <
class NumType>
86 template <
class NumType>
92 template <
class NumType>
99 template <
class NumType>
101 return (val / desiredUnits);
constexpr NumType convertCm2ToMm2(NumType centimeters)
constexpr double convertDegToRad(NumType degrees)
constexpr NumType convertMeVToGeV(NumType mev)
constexpr double joule(6.24150e+12)
constexpr NumType convertRadToDeg(NumType radians)
std::enable_if<!std::numeric_limits< NumType >::is_integer, bool >::type almostEqual(NumType x, NumType y, int ulp)
constexpr NumType convertGeVToMeV(NumType gev)
constexpr NumType convertUnitsTo(double desiredUnits, NumType val)
constexpr double seconds(1.e+9)
constexpr NumType convertCmToMm(NumType centimeters)
constexpr double piRadians(M_PI)
constexpr NumType convertMm3ToM3(NumType mm3)
constexpr NumType convertMmToCm(NumType millimeters)
constexpr double nanoseconds(1.)