|
DLG4::VolumeBuilders
A fluent interface for Geant4 geometry definition.
|
#include "G4Types.hh"#include "G4ExceptionSeverity.hh"#include "globals.hh"#include <CLHEP/Units/SystemOfUnits.h>#include <G4ThreeVector.hh>#include <optional>Go to the source code of this file.
Classes | |
| class | UnitProperties_< U, V > |
| struct | UnitTag |
| class | UnitBase< T, NativeType > |
| struct | UnitBase< T, NativeType >::Evaluator |
| struct | UnitBase< T, NativeType >::ScalableProxy< X > |
| struct | UnitBase< T, NativeType >::ScalableProxy< X >::ExpressionToken |
| struct | UnitBase< T, NativeType >::DefaultUnitsProxy |
| struct | UnitBase< T, NativeType >::NativeProxy |
| class | Length |
| class | Mass |
| class | Volume |
| class | Density |
| class | Angle |
| class | Length3Vec |
| struct | UnitOrValue< T, NativeType > |
| struct | is_valid_expr< T, typename > |
| struct | is_valid_expr< T, std::void_t< decltype(std::declval< T >()())> > |
| class | MoreTest |
Namespaces | |
| namespace | DLG4 |
| namespace | DLG4::Units |
Typedefs | |
| template<typename Dimension > | |
| using | Unit = UnitBase< Dimension, G4double > |
| using | Length3Vec = Length3Vec |
| template<typename T , typename U > | |
| using | ResultType = std::conditional_t< std::is_base_of_v< UnitTag, T >, T, U > |
| template<typename T > | |
| using | NativeType = std::conditional_t< std::is_base_of_v< Length3Vec, T >, G4ThreeVector, std::conditional_t< std::is_base_of_v< UnitTag, T >, G4double, T > > |
| using | UnitlessG4Transform3D = G4Transform3D |
Functions | |
| template<typename T > | |
| void | SetGlobalDefaultUnit (T unit) |
| Density | operator/ (const Mass &m, const Volume &v) |
| template<typename T , typename U , typename = std::enable_if_t<std::is_base_of_v<UnitTag, T> != std::is_base_of_v<UnitTag, U>>> | |
| auto | operator* (const T &a, const U &b) |
| template<typename T , typename U , typename = std::enable_if_t<std::is_base_of_v<UnitTag, T> && !std::is_base_of_v<UnitTag, U>>> | |
| auto | operator/ (const T &a, const U &b) |
| template<typename T , typename = std::enable_if_t<std::is_base_of_v<UnitTag, T> >> | |
| T | operator+ (const T &a, const T &b) |
| template<typename T , typename = std::enable_if_t<std::is_base_of_v<UnitTag, T> >> | |
| T | operator- (const T &a, const T &b) |
Variables | |
| template<typename T > | |
| G4double | global_default_unit = 1.0 |
| template<typename F > | |
| constexpr bool | is_invalid_expression = !is_valid_expr<F>::value |
Typesafe units, for VolumeBuilders, Geant, ETC !! No accidental mixing values and units.
These are type-safe, non-implicitly convertible units/measures.
Main reop and documentation moved to https://dsleonard-coding.github.io:DLG4Units
Definition in file DLG4Units.hh.