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"
64BDSBeamPipeFactory::~BDSBeamPipeFactory()
85 case BDSBeamPipeType::circular:
87 case BDSBeamPipeType::elliptical:
89 case BDSBeamPipeType::rectangular:
91 case BDSBeamPipeType::lhc:
93 case BDSBeamPipeType::lhcdetailed:
95 case BDSBeamPipeType::rectellipse:
97 case BDSBeamPipeType::racetrack:
99 case BDSBeamPipeType::octagonal:
101 case BDSBeamPipeType::circularvacuum:
103 case BDSBeamPipeType::clicpcl:
105 case BDSBeamPipeType::pointsfile:
107 case BDSBeamPipeType::rhombus:
111 G4cout << __METHOD_NAME__ <<
"unknown type \"" << type <<
"\" - circular beampipe factory by default" << G4endl;
118BDSBeamPipe* BDSBeamPipeFactory::CreateBeamPipe(
const G4String& name,
157 const G4String& name,
163 G4Material* vacuumMaterial,
164 G4double beamPipeThickness,
165 G4Material* beamPipeMaterial,
166 const G4String& pointsFileIn,
167 const G4String& pointsUnitIn)
170 return factory->
CreateBeamPipe(name,length,aper1,aper2,aper3,aper4,
171 vacuumMaterial,beamPipeThickness,beamPipeMaterial,
172 pointsFileIn,pointsUnitIn);
176 const G4String& name,
178 const G4ThreeVector& inputFaceNormal,
179 const G4ThreeVector& outputFaceNormal,
184 G4Material* vacuumMaterial,
185 G4double beamPipeThickness,
186 G4Material* beamPipeMaterial,
187 const G4String& pointsFileIn,
188 const G4String& pointsUnitIn)
191 return factory->
CreateBeamPipe(name,length,inputFaceNormal,outputFaceNormal,aper1,
192 aper2,aper3,aper4,vacuumMaterial,beamPipeThickness,
193 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.
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.
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.
type underlying() const
return underlying value (can be used in switch statement)