6#ifndef HPGESIM_VOLUMEBUIDLERSUNITTYPES_HH
7#define HPGESIM_VOLUMEBUIDLERSUNITTYPES_HH
54 is_dimensioned_ =
false;
63 auto vec = G4ThreeVector(
x,
y,
z);
64 if (!is_dimensioned_) {
77 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.
std::optional< G4ThreeVector > NativeVec_
CRTP base methods for Unit classes.
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 & operator=(const ThreeVecDimensioner &)=delete
ThreeVecDimensioner(G4ThreeVector v)
ThreeVecDimensioner(Unit3Vec v)
void SetGlobalDefaultUnit(T unit)
Set the default unit for all VolumeBuilder methods.