6#ifndef HPGESIM_VOLUMEBUIDLERSUNITTYPES_HH
7#define HPGESIM_VOLUMEBUIDLERSUNITTYPES_HH
16 template <
class T,
class NativeType>
53 is_dimensioned_ =
false;
62 auto vec = G4ThreeVector(
x,
y,
z);
63 if (!is_dimensioned_) {
76 bool is_dimensioned_ =
true;
Typesafe units, for VolumeBuilders, Geant, ETC !! No accidental mixing values and units.
A 3 vector that is scalable with/to Units.
CRTP base methods for Unit classes.
std::optional< G4ThreeVector > NativeValue_
A 3D vector that manages unit policy for parameter passing If constructed with a unit,...
ThreeVecDimensioner(double x, double y, double z, const Length &u)
ThreeVecDimensioner()=default
ThreeVecDimensioner(G4ThreeVector v, const Length &u)
ThreeVecDimensioner(const ThreeVecDimensioner &)=delete
G4ThreeVector apply_units(const Length dflt_unit) const
ThreeVecDimensioner(double x, double y, double z)
ThreeVecDimensioner(Length3Vec v)
ThreeVecDimensioner & operator=(const ThreeVecDimensioner &)=delete
ThreeVecDimensioner(G4ThreeVector v)
void SetGlobalDefaultUnit(T unit)
Set the global default unit.