19 if (!this->builder_configs_->istructure_ptr) {
20 throw std::runtime_error(
21 "Error in VolumeBuilderReference::VolumeBuilderReference::SolidConstructor(const G4String &name) \n"
22 "In VolumeBuilderReference::VolumeBuilderReference::SolidConstructor(const G4String &name): No solid configuration to construct on"
23 + this->builder_configs_->name);
25 return this->builder_configs_->istructure_ptr->SolidConstructor(name);
29 VolumeBuilderReference::VolumeBuilderReference(G4VSolid *solid) {
32 this->SetSolid_impl(solid);
33 this->
SetName(solid->GetName());
37 VolumeBuilderReference::VolumeBuilderReference(G4LogicalVolume *volume) {
39 this->SetLogicalVolume_impl(volume);
40 this->
SetName(volume->GetName());
44 VolumeBuilderReference::VolumeBuilderReference(G4VPhysicalVolume *volume) {
49 G4LogicalVolume *logical = volume->GetLogicalVolume();
51 logicvol_ptr_.LinkToRaw(logical);
54 placement_.LinkToRaw(volume);
55 this->
SetName(volume->GetName());
62 auto copy = builder_configs_->istructure_ptr->clone_impl();
64 auto builder_view = copy->ToBuilderView();
65 builder_view->StoreIStructurePtr(copy);
66 builder_view->StoreBuilderView(builder_view);
void set_shared_from_this_enabled(bool enabled)
SharedPtr< IStructureBuilder > clone_impl() const override
G4VSolid * SolidConstructor(const G4String &name) override
polymorphic access to solid construction
DerivedPtr SetName(const G4String &name)
SetName Sets name used for solid and derived product names.
A wrapper for std::shared_ptr that allows and facilitates many implicit(i) type conversions.