DLG4::VolumeBuilders
A fluent interface for Geant4 geometry definition.
Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Functions
DLG4::VolumeBuilders::_internals_ Namespace Reference

Namespaces

namespace  PersistentObjectRegistry
 

Classes

class  AssemblyCore
 
struct  BooleanConfigs
 
struct  BooleanSolid
 
class  BoxBuilderCore
 
struct  BuilderConfigs
 
class  FromG4VSolidCore
 
class  i_shared_ptr
 
class  ISolidBuilder
 
class  IStructureBuilder
 
class  IVolumeBuilder
 
class  Linkable
 
struct  PlacementConfigs
 
class  PlacementNameRegistry
 
class  RZBuilderCore
 
class  StructureBuilderBase
 
class  StructureBuilderCore
 
class  VolumeBuilderBase
 
class  VolumeBuilderCore
 
struct  VolumeConfigs
 
struct  VolumeConfigsValueTypes
 

Typedefs

using UnitlessG4Transform3D = G4Transform3D
 
template<typename T >
using SharedPtr = i_shared_ptr< T >
 
using ISolidPtr = SharedPtr< ISolidBuilder >
 
using IStructurePtr = SharedPtr< IStructureBuilder >
 
using VolumeBuilder = SharedPtr< VolumeBuilderCore >
 
using StructureBuilder = SharedPtr< StructureBuilderCore >
 
using RZBuilder = SharedPtr< RZBuilderCore >
 
using FromG4VSolid = SharedPtr< FromG4VSolidCore >
 
using BoxBuilder = SharedPtr< BoxBuilderCore >
 
using Assembly = SharedPtr< AssemblyCore >
 
using BuilderViewList = std::vector< VolumeBuilder >
 
using StructureViewList = std::vector< StructureBuilder >
 
template<typename U >
using VolumeBuilderPtr = SharedPtr< U >
 
template<typename U >
using ENABLE_SHARED_WRAPPER = Utilities::disableable_shared_from_this< U >
 

Functions

template<typename TargetType , typename SourceType >
i_shared_ptr< TargetType > i_dynamic_pointer_cast (const i_shared_ptr< SourceType > &sourcePtr) noexcept
 
template<typename T >
std::shared_ptr< T > shared_mutable_this (const std::enable_shared_from_this< T > *obj)
 

Typedef Documentation

◆ Assembly

Pointer to Assembly type to hold Structures, ie other assemblies or buidlers.

See _internals_::Assembly.

Definition at line 93 of file VolumeBuildersTypes.hh.

◆ BoxBuilder

Shared pointer to _internals_::BoxBuilderCore.

Definition at line 86 of file VolumeBuildersTypes.hh.

◆ BuilderViewList

using BuilderViewList = std::vector<VolumeBuilder>

a user type to hold many builders

You can add to them directly with ->AddTo(yourlist) But you should be able myBuilder->AddTo(myList) to a vector of, for example, G4LogicalVolume * as well since type converting operators are defined.!!!

Definition at line 101 of file VolumeBuildersTypes.hh.

◆ ENABLE_SHARED_WRAPPER

Definition at line 116 of file VolumeBuildersTypes.hh.

◆ FromG4VSolid

Shared pointer to _internals_::FromG4VSolidCore.

Definition at line 83 of file VolumeBuildersTypes.hh.

◆ ISolidPtr

using ISolidPtr = SharedPtr<ISolidBuilder>

True polymorphic class base view for all builders Mostly for internal use.

Definition at line 52 of file VolumeBuildersTypes.hh.

◆ IStructurePtr

True polymorphic class base view for all structures Mostly for internal use.

Definition at line 58 of file VolumeBuildersTypes.hh.

◆ RZBuilder

Shared pointer to _internals_::RZBuilderCore.

Definition at line 80 of file VolumeBuildersTypes.hh.

◆ SharedPtr

template<typename T >
using SharedPtr = i_shared_ptr<T>

Definition at line 33 of file VolumeBuildersTypes.hh.

◆ StructureBuilder

Definition at line 77 of file VolumeBuildersTypes.hh.

◆ StructureViewList

using StructureViewList = std::vector<StructureBuilder>

a user type to hold many structures

You can add to them directly with ->AddTo(yourlist) But you should be able myStructure->AddTo(myList) to a vector of, for example, G4LogicalVolume * as well since type converting operators are defined.!!!

Definition at line 109 of file VolumeBuildersTypes.hh.

◆ UnitlessG4Transform3D

using UnitlessG4Transform3D = G4Transform3D

Definition at line 29 of file VolumeBuilderConfigs.hh.

◆ VolumeBuilder

Definition at line 69 of file VolumeBuildersTypes.hh.

◆ VolumeBuilderPtr

template<typename U >
using VolumeBuilderPtr = SharedPtr<U>

Definition at line 113 of file VolumeBuildersTypes.hh.

Function Documentation

◆ i_dynamic_pointer_cast()

template<typename TargetType , typename SourceType >
i_shared_ptr< TargetType > i_dynamic_pointer_cast ( const i_shared_ptr< SourceType > &  sourcePtr)
noexcept

Definition at line 151 of file i_shared_ptr.hh.

151 {
152 using SharedPtrToTarget = std::shared_ptr<TargetType>;
153 if (auto *rawPointer = dynamic_cast<typename SharedPtrToTarget::element_type *>(sourcePtr.
154 get())) {
155 return SharedPtrToTarget(sourcePtr, rawPointer);
156 }
157 return SharedPtrToTarget();
158 }

◆ shared_mutable_this()

template<typename T >
std::shared_ptr< T > shared_mutable_this ( const std::enable_shared_from_this< T > *  obj)

Definition at line 120 of file VolumeBuildersTypes.hh.

120 {
121 // Call shared_from_this() (returns shared_ptr<const T> if obj is const)
122 auto sp_const = obj->shared_from_this();
123
124 // Cast away constness safely
125 return std::const_pointer_cast<std::remove_const_t<T> >(sp_const);
126 }