3#include <mp-units/systems/hep.h>
23inline constexpr auto mm = mp_units::si::milli<mp_units::si::metre>;
24inline constexpr auto cm = mp_units::si::centi<mp_units::si::metre>;
25inline constexpr auto m = mp_units::si::metre;
28inline constexpr auto ns = mp_units::si::nano<mp_units::si::second>;
29inline constexpr auto s = mp_units::si::second;
32inline constexpr auto rad = mp_units::si::radian;
35inline constexpr auto MeV = mp_units::hep::unit_symbols::MeV;
36inline constexpr auto GeV = mp_units::hep::unit_symbols::GeV;
41inline constexpr auto c = mp_units::hep::speed_of_light;
51inline constexpr auto tesla = mp_units::si::tesla;
56using Length = mp_units::quantity<units::mm, double>;
57using Time = mp_units::quantity<units::ns, double>;
58using Energy = mp_units::quantity<units::GeV, double>;
59using Momentum = mp_units::quantity<units::GeV_per_c, double>;
60using Mass = mp_units::quantity<units::GeV_per_c2, double>;
61using Angle = mp_units::quantity<units::rad, double>;
65using Vec3 = std::array<Q, 3>;
70 return v * Q::reference;
76 return q.numerical_value_in(Q::unit);
82 return {
v[0] * Q::reference,
v[1] * Q::reference,
v[2] * Q::reference};
88 return {
v[0].numerical_value_in(Q::unit),
v[1].numerical_value_in(Q::unit),
89 v[2].numerical_value_in(Q::unit)};
constexpr auto MeV
Definition Units.hpp:35
constexpr auto s
Definition Units.hpp:29
constexpr auto cm
Definition Units.hpp:24
constexpr auto GeV_per_c2
Definition Units.hpp:45
constexpr auto GeV
Definition Units.hpp:36
constexpr auto ns
Definition Units.hpp:28
constexpr auto mm
Definition Units.hpp:23
constexpr auto GeV_per_c
Definition Units.hpp:44
constexpr auto m
Definition Units.hpp:25
constexpr auto c
Definition Units.hpp:41
constexpr auto mm_per_c
Definition Units.hpp:48
constexpr auto tesla
Definition Units.hpp:51
constexpr auto rad
Definition Units.hpp:32
Canonical ShipSoft unit vocabulary.
Definition QuantityView.hpp:15
mp_units::quantity< units::rad, double > Angle
Definition Units.hpp:61
mp_units::quantity< units::mm, double > Length
Canonical quantity types: double representation, storage unit baked in.
Definition Units.hpp:56
mp_units::quantity< units::GeV, double > Energy
Definition Units.hpp:58
mp_units::quantity< units::tesla, double > MagneticField
Definition Units.hpp:62
mp_units::quantity< units::GeV_per_c, double > Momentum
Definition Units.hpp:59
std::array< Q, 3 > Vec3
Definition Units.hpp:65
constexpr Q quantityOf(double v)
Wrap a raw scalar, interpreting it in Q's canonical unit (bitwise).
Definition Units.hpp:69
constexpr Vec3< Q > vecOf(std::array< double, 3 > const &v)
Wrap a raw 3-vector, interpreting it in Q's canonical unit (bitwise).
Definition Units.hpp:81
constexpr double raw(Q q)
Unwrap a scalar quantity to a raw double in Q's canonical unit (bitwise).
Definition Units.hpp:75
mp_units::quantity< units::ns, double > Time
Definition Units.hpp:57
mp_units::quantity< units::GeV_per_c2, double > Mass
Definition Units.hpp:60