51 RZPlane(G4double u, G4double ir, G4double or_, G4double z_)
84 const G4String &name,
int sides, G4double phi_start = 0., G4double phi_tot = 360);
88 const G4String &name, G4double phi_start = 0., G4double phi_tot = 360);
102 G4double endz, G4double height, G4double OR, G4double IR = 0);
115 G4double endz, G4double height, G4double OR, G4double IR = 0);
136 template <
typename T>
141 const G4String &name,
int sides, G4double phi_start, G4double phi_tot);
145 G4double endz, G4double height, G4double OR, G4double IR);
147 G4double endz, G4double height, G4double OR, G4double IR);
252 return (this->*MakeSolidFunctionPtr_)(name);
256 explicit RZBuilderCore(
const G4String &name, G4double init_phi_start = 0.,
257 G4double init_phi_tot = 360,
int init_sides = 4);
261 G4VSolid *MakePolycone(
const G4String &name);
263 G4VSolid *MakePolyhedra(
const G4String &name);
273 G4double phi_start_deg_{0};
274 G4double phi_tot_deg{360};
276 G4VSolid * (RZBuilderCore::*MakeSolidFunctionPtr_)(
const G4String &name) =
nullptr;
280 std::vector<G4double> z_;
281 std::vector<G4double> IR_;
282 std::vector<G4double> OR_;
284 RZBuilderCore() =
default;
285 RZBuilderCore(RZBuilderCore &&) noexcept = delete;
Builder class for RZ mult-plane defined solids.
G4VSolid * SolidConstructor(const G4String &name) override
The polymorphic Solid constructor.
VolumeBuilder: Common functionality for volume builder classes.
A polymorphic, type-erased "view" of any specialized builder.
RZBuilder CreateCylinderBuilder(G4double unit, const G4String &name, G4double endz, G4double h, G4double OR, G4double IR)
Create a simple cylinder builder.
RZBuilder CreatePolyconeBuilder(const G4String &name, G4double phi_start, G4double phi_tot)
Create a builder for associated IR,OR,Z defined object.
RZBuilder CreatePolyhedraBuilder(const G4String &name, int sides, G4double phi_start, G4double phi_tot)
Create a builder for associated IR,OR,Z defined object.
RZBuilder ReflectZSolidConfig()
Flip Solid Configuration.
virtual RZBuilder SetNumSides(G4double N)
Set number of sides.
RZBuilder AddPlanes(const std::vector< RZPlane > &planes)
Adds multiple RZ planes each defining one unit,IR,OR,Z set in the volume design.
RZBuilder FillSolidConfig()
Modifies a Solid CONFIGURATION to set all inner diameters (IDs) to 0.
RZBuilder AddPlane(const RZPlane &plane)
Adds a plane defining one IR,OR,Z triplet in the volume design.
_internals_::RZBuilder RZBuilder
Shared pointer to _internals_::RZBuilderCore.
RZPlane for use with global or preset units.
Struct for adding planes to GeantMultiPlane –DSLeonard 2024 Overloads make this not strictly needed.
RZPlane(G4double u, G4double ir, G4double or_, G4double z_)