51 RZPlane(G4double u, G4double ir, G4double or_, G4double z_)
88 const G4String &name,
int sides, G4double phi_start = 0., G4double phi_tot = 360);
92 const G4String &name, G4double phi_start = 0., G4double phi_tot = 360);
106 G4double endz, G4double height, G4double OR, G4double IR = 0);
119 G4double endz, G4double height, G4double OR, G4double IR = 0);
137 template <
typename T>
142 const G4String &name,
int sides, G4double phi_start, G4double phi_tot);
146 G4double endz, G4double height, G4double OR, G4double IR);
148 G4double endz, G4double height, G4double OR, G4double IR);
253 return (this->*MakeSolidFunctionPtr_)(name);
257 explicit RZBuilder(
const G4String &name, G4double init_phi_start = 0.,
258 G4double init_phi_tot = 360,
int init_sides = 4);
262 G4VSolid *MakePolycone(
const G4String &name);
264 G4VSolid *MakePolyhedra(
const G4String &name);
274 G4double phi_start_deg_{0};
275 G4double phi_tot_deg{360};
277 G4VSolid * (RZBuilder::*MakeSolidFunctionPtr_)(
const G4String &name) =
nullptr;
281 std::vector<G4double> z_;
282 std::vector<G4double> IR_;
283 std::vector<G4double> OR_;
285 RZBuilder() =
default;
286 RZBuilder(RZBuilder &&) noexcept = delete;
Builder class for RZ mult-plane defined solids.
friend RZBuilderPtr CreatePolyhedraBuilder(const G4String &name, int sides, G4double phi_start, G4double phi_tot)
Create a builder for associated IR,OR,Z defined object.
G4VSolid * SolidConstructor(const G4String &name) override
The polymorphic Solid constructor.
friend RZBuilderPtr CreateCylinderBuilder(G4double unit, const G4String &name, G4double endz, G4double height, G4double OR, G4double IR)
Create a simple cylinder builder.
friend RZBuilderPtr CreatePolyconeBuilder(const G4String &name, G4double phi_start, G4double phi_tot)
Create a builder for associated IR,OR,Z defined object.
A polymorphic, type-erased builder referencing any specialized builder.
VolumeBuilder: Common functionality for volume builder classes.
A wrapper for std::shared_ptr that allows and facilitates many implicit(i) type conversions.
RZPlane(G4double u, G4double ir, G4double or_, G4double z_)
RZBuilderPtr CreatePolyhedraBuilder(const G4String &name, int sides, G4double phi_start=0., G4double phi_tot=360)
Create a builder for associated IR,OR,Z defined object.
RZBuilderPtr CreateCylinderBuilder(G4double unit, const G4String &name, G4double endz, G4double height, G4double OR, G4double IR=0)
Create a simple cylinder builder.
RZBuilderPtr CreatePolyconeBuilder(const G4String &name, G4double phi_start=0., G4double phi_tot=360)
Create a builder for associated IR,OR,Z defined object.
RZBuilderPtr ReflectZSolidConfig()
Flip Solid Configuration.
virtual RZBuilderPtr SetNumSides(G4double N)
Set number of sides.
RZBuilderPtr AddPlane(const RZPlane &plane)
Adds a plane defining one IR,OR,Z triplet in the volume design.
RZBuilderPtr AddPlanes(const std::vector< RZPlane > &planes)
Adds multiple RZ planes each defining one unit,IR,OR,Z set in the volume design.
RZBuilderPtr FillSolidConfig()
Modifies a Solid CONFIGURATION to set all inner diameters (IDs) to 0.
RZPlane for use with global or preset units.
Struct for adding planes to GeantMultiPlane –DSLeonard 2024 Overloads make this not strictly needed.