18#include "BDSBeamPipeFactory.hh"
19#include "BDSBeamPipeFactoryBase.hh"
20#include "BDSBeamPipeFactoryCircular.hh"
21#include "BDSBeamPipeFactoryCircularVacuum.hh"
22#include "BDSBeamPipeFactoryClicPCL.hh"
23#include "BDSBeamPipeFactoryElliptical.hh"
24#include "BDSBeamPipeFactoryRectangular.hh"
25#include "BDSBeamPipeFactoryLHC.hh"
26#include "BDSBeamPipeFactoryLHCDetailed.hh"
27#include "BDSBeamPipeFactoryOctagonal.hh"
28#include "BDSBeamPipeFactoryPointsFile.hh"
29#include "BDSBeamPipeFactoryRaceTrack.hh"
30#include "BDSBeamPipeFactoryRectEllipse.hh"
31#include "BDSBeamPipeFactoryRhombus.hh"
32#include "BDSBeamPipeInfo.hh"
33#include "BDSBeamPipeType.hh"
35#include "BDSGlobalConstants.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;
124 return CreateBeamPipe(BDSBeamPipeType::circularvacuum,
136BDSBeamPipe* BDSBeamPipeFactory::CreateBeamPipe(
const G4String& name,
175 const G4String& name,
181 G4Material* vacuumMaterial,
182 G4double beamPipeThickness,
183 G4Material* beamPipeMaterial,
184 const G4String& pointsFileIn,
185 const G4String& pointsUnitIn)
188 return factory->
CreateBeamPipe(name,length,aper1,aper2,aper3,aper4,
189 vacuumMaterial,beamPipeThickness,beamPipeMaterial,
190 pointsFileIn,pointsUnitIn);
194 const G4String& name,
196 const G4ThreeVector& inputFaceNormal,
197 const G4ThreeVector& outputFaceNormal,
202 G4Material* vacuumMaterial,
203 G4double beamPipeThickness,
204 G4Material* beamPipeMaterial,
205 const G4String& pointsFileIn,
206 const G4String& pointsUnitIn)
209 return factory->
CreateBeamPipe(name,length,inputFaceNormal,outputFaceNormal,aper1,
210 aper2,aper3,aper4,vacuumMaterial,beamPipeThickness,
211 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)