19#include "BDSBeamPipeFactory.hh"
20#include "BDSBeamPipeFactoryBase.hh"
21#include "BDSBeamPipeFactoryCircular.hh"
22#include "BDSBeamPipeFactoryCircularVacuum.hh"
23#include "BDSBeamPipeFactoryClicPCL.hh"
24#include "BDSBeamPipeFactoryElliptical.hh"
25#include "BDSBeamPipeFactoryRectangular.hh"
26#include "BDSBeamPipeFactoryLHC.hh"
27#include "BDSBeamPipeFactoryLHCDetailed.hh"
28#include "BDSBeamPipeFactoryOctagonal.hh"
29#include "BDSBeamPipeFactoryPointsFile.hh"
30#include "BDSBeamPipeFactoryRaceTrack.hh"
31#include "BDSBeamPipeFactoryRectEllipse.hh"
32#include "BDSBeamPipeFactoryRhombus.hh"
33#include "BDSBeamPipeInfo.hh"
34#include "BDSBeamPipeType.hh"
36#include "BDSGlobalConstants.hh"
65BDSBeamPipeFactory::~BDSBeamPipeFactory()
86 case BDSBeamPipeType::circular:
88 case BDSBeamPipeType::elliptical:
90 case BDSBeamPipeType::rectangular:
92 case BDSBeamPipeType::lhc:
94 case BDSBeamPipeType::lhcdetailed:
96 case BDSBeamPipeType::rectellipse:
98 case BDSBeamPipeType::racetrack:
100 case BDSBeamPipeType::octagonal:
102 case BDSBeamPipeType::circularvacuum:
104 case BDSBeamPipeType::clicpcl:
106 case BDSBeamPipeType::pointsfile:
108 case BDSBeamPipeType::rhombus:
112 G4cout << __METHOD_NAME__ <<
"unknown type \"" << type <<
"\" - circular beampipe factory by default" << G4endl;
125 return CreateBeamPipe(BDSBeamPipeType::circularvacuum,
137BDSBeamPipe* BDSBeamPipeFactory::CreateBeamPipe(
const G4String& name,
176 const G4String& name,
182 G4Material* vacuumMaterial,
183 G4double beamPipeThickness,
184 G4Material* beamPipeMaterial,
185 const G4String& pointsFileIn,
186 const G4String& pointsUnitIn)
189 return factory->
CreateBeamPipe(name,length,aper1,aper2,aper3,aper4,
190 vacuumMaterial,beamPipeThickness,beamPipeMaterial,
191 pointsFileIn,pointsUnitIn);
195 const G4String& name,
197 const G4ThreeVector& inputFaceNormal,
198 const G4ThreeVector& outputFaceNormal,
203 G4Material* vacuumMaterial,
204 G4double beamPipeThickness,
205 G4Material* beamPipeMaterial,
206 const G4String& pointsFileIn,
207 const G4String& pointsUnitIn)
210 return factory->
CreateBeamPipe(name,length,inputFaceNormal,outputFaceNormal,aper1,
211 aper2,aper3,aper4,vacuumMaterial,beamPipeThickness,
212 beamPipeMaterial,pointsFileIn,pointsUnitIn);
Abstract base class for beampipe factory classes.
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="")=0
create a flat ended beampipe
Factory for vacuum-only circular volumes.
Factory for circular beam pipes.
Factory for CLIC post collision line beam pipes.
Factory for elliptical beam pipes.
Factory for detailed lhc aperture model beam pipes.
Factory for simple lhc aperture model beam pipes.
Factory for octagonal aperture model beampipes.
Factory for beam pipe made from an list of x,y points in a file.
Factory for racetrack aperture model beampipes.
Factory for rectellipse aperture model beampipes.
Factory for rectangular beam pipes.
Factory for rhombus aperture model beampipes.
The main interface for using the beam pipe factories.
BDSBeamPipeFactoryBase * racetrack
Factory instance.
BDSBeamPipeFactoryBase * rhombus
Factory instance.
BDSBeamPipeFactoryBase * elliptical
Factory instance.
static BDSBeamPipeFactory * instance
Singleton instance pointer.
BDSBeamPipe * CreateBeamPipeForVacuumIntersection(const G4String &name, G4double length, BDSBeamPipeInfo *info)
BDSBeamPipeFactoryBase * circularvacuum
Factory instance.
BDSBeamPipeFactoryBase * GetAppropriateFactory(BDSBeamPipeType beamPipeTypeIn)
Return the appropriate factory singleton pointer given a type.
static BDSBeamPipeFactory * Instance()
Singleton accessor.
BDSBeamPipeFactoryBase * rectellipse
Factory instance.
BDSBeamPipeFactoryBase * lhc
Factory instance.
BDSBeamPipeFactoryBase * clicpcl
Factory instance.
BDSBeamPipeFactoryBase * pointsfile
Factory instance.
BDSBeamPipeFactoryBase * lhcdetailed
Factory instance.
BDSBeamPipeFactory()
Private constructor as singleton pattern.
BDSBeamPipeFactoryBase * rectangular
Factory instance.
BDSBeamPipeFactoryBase * octagonal
Factory instance.
BDSBeamPipeFactoryBase * circular
Factory instance.
Holder class for all information required to describe a beam pipe model.
G4Material * beamPipeMaterial
Public member for direct access.
G4double aper3
Public member for direct access.
G4String pointsUnit
Public member for direct access.
BDSBeamPipeInfo ShrinkBy(G4double margin) const
Return a copy that's shrunk by value margin.
G4double aper1
Public member for direct access.
G4ThreeVector outputFaceNormal
Public member for direct access.
G4Material * vacuumMaterial
Public member for direct access.
G4double beamPipeThickness
Public member for direct access.
G4String pointsFileName
Public member for direct access.
G4double aper4
Public member for direct access.
G4double aper2
Public member for direct access.
BDSBeamPipeType beamPipeType
Public member for direct access.
G4ThreeVector inputFaceNormal
Public member for direct access.
A holder class for a piece of beam pipe geometry.
static BDSGlobalConstants * Instance()
Access method.
type underlying() const
return underlying value (can be used in switch statement)