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 RZBuilder(
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 * (RZBuilder::*MakeSolidFunctionPtr_)(
const G4String &name) =
nullptr;
280 std::vector<G4double> z_;
281 std::vector<G4double> IR_;
282 std::vector<G4double> OR_;
284 RZBuilder() =
default;
285 RZBuilder(RZBuilder &&) noexcept = delete;
Builder class for RZ mult-plane defined solids.
G4VSolid * SolidConstructor(const G4String &name) override
The polymorphic Solid constructor.
A polymorphic, type-erased builder referencing any specialized builder.
VolumeBuilder: Common functionality for volume builder classes.
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.
RZPlane(G4double u, G4double ir, G4double or_, G4double z_)