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 "BDSBeamPipeInfo.hh"
33#include "BDSBeamPipeType.hh"
62BDSBeamPipeFactory::~BDSBeamPipeFactory()
82 case BDSBeamPipeType::circular:
84 case BDSBeamPipeType::elliptical:
86 case BDSBeamPipeType::rectangular:
88 case BDSBeamPipeType::lhc:
90 case BDSBeamPipeType::lhcdetailed:
92 case BDSBeamPipeType::rectellipse:
94 case BDSBeamPipeType::racetrack:
96 case BDSBeamPipeType::octagonal:
98 case BDSBeamPipeType::circularvacuum:
100 case BDSBeamPipeType::clicpcl:
102 case BDSBeamPipeType::pointsfile:
106 G4cout << __METHOD_NAME__ <<
"unknown type \"" << type <<
"\" - circular beampipe factory by default" << G4endl;
113BDSBeamPipe* BDSBeamPipeFactory::CreateBeamPipe(
const G4String& name,
152 const G4String& name,
158 G4Material* vacuumMaterial,
159 G4double beamPipeThickness,
160 G4Material* beamPipeMaterial,
161 const G4String& pointsFileIn,
162 const G4String& pointsUnitIn)
165 return factory->
CreateBeamPipe(name,length,aper1,aper2,aper3,aper4,
166 vacuumMaterial,beamPipeThickness,beamPipeMaterial,
167 pointsFileIn,pointsUnitIn);
171 const G4String& name,
173 const G4ThreeVector& inputFaceNormal,
174 const G4ThreeVector& outputFaceNormal,
179 G4Material* vacuumMaterial,
180 G4double beamPipeThickness,
181 G4Material* beamPipeMaterial,
182 const G4String& pointsFileIn,
183 const G4String& pointsUnitIn)
186 return factory->
CreateBeamPipe(name,length,inputFaceNormal,outputFaceNormal,aper1,
187 aper2,aper3,aper4,vacuumMaterial,beamPipeThickness,
188 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.
The main interface for using the beam pipe factories.
BDSBeamPipeFactoryBase * racetrack
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)