19#include "BDSBeamPipeFactoryCircularVacuum.hh"
20#include "BDSBeamPipe.hh"
21#include "BDSExtent.hh"
22#include "BDSGlobalConstants.hh"
23#include "BDSUtilities.hh"
26#include "G4CutTubs.hh"
27#include "G4LogicalVolume.hh"
28#include "G4ThreeVector.hh"
30#include "G4UserLimits.hh"
39BDSBeamPipeFactoryCircularVacuum::BDSBeamPipeFactoryCircularVacuum()
48 G4Material* vacuumMaterialIn,
57 containerSolid =
new G4Tubs(nameIn +
"_container_solid",
71 const G4ThreeVector& inputFaceNormalIn,
72 const G4ThreeVector& outputFaceNormalIn,
77 G4Material* vacuumMaterialIn,
91 containerSolid =
new G4CutTubs(nameIn +
"_container_solid",
108 G4Material* vacuumMaterialIn,
110 G4double containerRadiusIn)
124 containerLV =
new G4LogicalVolume(containerSolid,
126 nameIn +
"_container_lv");
129 vacuumLV = containerLV;
136 {allUserLimits.insert(ul);}
137 containerLV->SetUserLimits(ul);
138 vacuumLV->SetUserLimits(ul);
G4ThreeVector outputFaceNormal
For recording the face normals in the finished pipe component.
G4ThreeVector inputFaceNormal
For recording the face normals in the finished pipe component.
BDSBeamPipe * BuildBeamPipeAndRegisterVolumes(BDSExtent extent, G4double containerRadius, G4bool containerIsCircular=false)
build beampipe and register logical volumes
static void CheckAngledVolumeCanBeBuilt(G4double length, const G4ThreeVector &inputfaceAngle, const G4ThreeVector &outputfaceAngle, G4double horizontalWidth, const G4String &name)
check if a beam pipe volume with angled faces can be constructed
G4VSolid * containerSubtractionSolid
Longer (in length) version of container solid for unambiguous subtraction.
virtual BDSBeamPipe * CreateBeamPipe(const G4String &nameIn, G4double lengthIn, G4double aper1=0, G4double aper2=0, G4double aper3=0, G4double aper4=0, G4Material *vacuumMaterialIn=nullptr, G4double beamPipeThicknessIn=0, G4Material *beamPipeMaterialIn=nullptr, const G4String &pointsFileIn="", const G4String &pointsUnitIn="")
create a flat ended beampipe
BDSBeamPipe * CommonFinalConstruction(const G4String &nameIn, G4Material *vacuumMaterialIn, G4double lengthIn, G4double containerRadiusIn)
A holder class for a piece of beam pipe geometry.
Holder for +- extents in 3 dimensions.
G4double lengthSafetyLarge
Cache of global constants variable.
static BDSGlobalConstants * Instance()
Access method.
G4UserLimits * CreateUserLimits(G4UserLimits *defaultUL, G4double length, G4double fraction=1.6)