BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
Abstract base class for beampipe factory classes. More...
#include <BDSBeamPipeFactoryBase.hh>
Public Member Functions | |
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 | |
virtual BDSBeamPipe * | CreateBeamPipe (const G4String &nameIn, G4double lengthIn, const G4ThreeVector &inputFaceNormalIn, const G4ThreeVector &outputFaceNormalIn, 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 |
virtual | ~BDSBeamPipeFactoryBase () |
Virtual base destructor. | |
![]() | |
virtual void | FactoryBaseCleanUp () |
Empty containers for next use - factories are never deleted so can't rely on scope. | |
Protected Member Functions | |
BDSBeamPipeFactoryBase () | |
base constructor | |
void | CleanUpBase () |
virtual void | CleanUp () |
void | CommonConstruction (const G4String &nameIn, G4Material *vacuumMaterialIn, G4Material *beamPipeMaterialIn, G4double length) |
finalise beampipe construction | |
BDSBeamPipe * | BuildBeamPipeAndRegisterVolumes (BDSExtent extent, G4double containerRadius, G4bool containerIsCircular=false) |
build beampipe and register logical volumes | |
virtual void | BuildLogicalVolumes (const G4String &nameIn, G4Material *vacuumMaterialIn, G4Material *beamPipeMaterialIn) |
build logical volumes | |
virtual void | SetVisAttributes (G4Material *beamPipeMaterialIn, G4Material *vacuumMaterialIn) |
Set visual attributes. | |
virtual void | SetUserLimits (G4double length) |
Set user limits. | |
virtual void | PlaceComponents (const G4String &nameIn) |
Place volumes. | |
Static Protected Member Functions | |
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 | |
Protected Attributes | |
G4bool | sensitiveBeamPipe |
Whether the beam pipe will record energy deposition. | |
G4bool | sensitiveVacuum |
Whether the vacuum will record any energy deposition. | |
G4bool | storeApertureImpacts |
Whether to store aperture impacts. | |
G4VSolid * | vacuumSolid |
G4VSolid * | beamPipeSolid |
G4VSolid * | containerSolid |
G4VSolid * | containerSubtractionSolid |
Longer (in length) version of container solid for unambiguous subtraction. | |
G4LogicalVolume * | vacuumLV |
G4LogicalVolume * | beamPipeLV |
G4LogicalVolume * | containerLV |
G4PVPlacement * | vacuumPV |
G4PVPlacement * | beamPipePV |
G4ThreeVector | inputFaceNormal |
For recording the face normals in the finished pipe component. | |
G4ThreeVector | outputFaceNormal |
For recording the face normals in the finished pipe component. | |
![]() | |
std::set< G4LogicalVolume * > | allLogicalVolumes |
std::set< G4VPhysicalVolume * > | allPhysicalVolumes |
std::set< G4RotationMatrix * > | allRotationMatrices |
std::set< G4UserLimits * > | allUserLimits |
std::set< G4VSolid * > | allSolids |
std::set< G4VisAttributes * > | allVisAttributes |
G4double | lengthSafety |
Cache of global constants variable. | |
G4double | lengthSafetyLarge |
Cache of global constants variable. | |
G4bool | checkOverlaps |
Cache of global constants variable. | |
G4bool | visDebug |
Cache of global constants variable. | |
G4int | nSegmentsPerCircle |
Cache of global constants variable. | |
G4VisAttributes * | containerVisAttr |
Cache of global constants variable. | |
G4UserLimits * | defaultUserLimits |
Cache of global constants variable. | |
Abstract base class for beampipe factory classes.
Abstract base class that defines the interface of each factory to build any type of beampipe required. There are four general possibilities apart from the shape (each derived class will give a different cross-section) and these dictate the angled faces.
Uses Geant4 default units by default, ie mm, rad (not metres)
Note, any type of aperture (in MADX) requires up to 4 parameters
Default values in constructors result in global defaults being used ie beampipe material will be steel - the default from options.
'In' in argument variables is used to distinguish between that and possible internal member variables with the same name - avoiding 'itsVariable'
Definition at line 57 of file BDSBeamPipeFactoryBase.hh.
|
inlinevirtual |
Virtual base destructor.
Definition at line 92 of file BDSBeamPipeFactoryBase.hh.
|
protected |
base constructor
Definition at line 40 of file BDSBeamPipeFactoryBase.cc.
References CleanUpBase(), BDSGlobalConstants::Instance(), sensitiveBeamPipe, sensitiveVacuum, and storeApertureImpacts.
|
protected |
build beampipe and register logical volumes
Definition at line 181 of file BDSBeamPipeFactoryBase.cc.
References containerSubtractionSolid, inputFaceNormal, outputFaceNormal, BDSGeometryComponent::RegisterLogicalVolume(), BDSGeometryComponent::RegisterPhysicalVolume(), BDSGeometryComponent::RegisterSensitiveVolume(), BDSGeometryComponent::RegisterSolid(), BDSGeometryComponent::RegisterUserLimits(), BDSGeometryComponent::RegisterVisAttributes(), sensitiveBeamPipe, sensitiveVacuum, and storeApertureImpacts.
Referenced by BDSBeamPipeFactoryLHCDetailed::CommonFinalConstruction(), BDSBeamPipeFactoryCircularVacuum::CommonFinalConstruction(), BDSBeamPipeFactoryClicPCL::CommonFinalConstruction(), BDSBeamPipeFactoryPoints::CommonFinalConstruction(), BDSBeamPipeFactoryRectangular::CommonFinalConstruction(), BDSBeamPipeFactoryCircular::CommonFinalConstruction(), BDSBeamPipeFactoryElliptical::CommonFinalConstruction(), BDSBeamPipeFactoryLHC::CommonFinalConstruction(), and BDSBeamPipeFactoryRectEllipse::CommonFinalConstruction().
|
protectedvirtual |
build logical volumes
Reimplemented in BDSBeamPipeFactoryLHCDetailed.
Definition at line 88 of file BDSBeamPipeFactoryBase.cc.
References BDSMaterials::GetMaterial(), BDSGlobalConstants::Instance(), and BDSMaterials::Instance().
Referenced by BDSBeamPipeFactoryLHCDetailed::BuildLogicalVolumes(), and CommonConstruction().
|
staticprotected |
check if a beam pipe volume with angled faces can be constructed
Definition at line 212 of file BDSBeamPipeFactoryBase.cc.
References BDS::WillIntersect().
Referenced by BDSBeamPipeFactoryCircularVacuum::CreateBeamPipe(), BDSBeamPipeFactoryRectEllipse::CreateGeneralAngledSolids(), BDSBeamPipeFactoryRectangular::CreateGeneralAngledSolids(), BDSBeamPipeFactoryElliptical::CreateGeneralAngledSolids(), BDSBeamPipeFactoryCircular::CreateGeneralAngledSolids(), and BDSBeamPipeFactoryPoints::CreateSolidsAngled().
|
protectedvirtual |
Reimplemented in BDSBeamPipeFactoryClicPCL, BDSBeamPipeFactoryLHCDetailed, and BDSBeamPipeFactoryPoints.
Definition at line 49 of file BDSBeamPipeFactoryBase.cc.
|
protected |
Initialiser and can be used to reset factory pointers after use. Non-virtual as it's used in the constructor to avoid duplication of code, but it can't be virtual there.
Definition at line 54 of file BDSBeamPipeFactoryBase.cc.
References containerSubtractionSolid, BDSFactoryBase::FactoryBaseCleanUp(), inputFaceNormal, and outputFaceNormal.
Referenced by BDSBeamPipeFactoryBase().
|
protected |
finalise beampipe construction
build logical volumes
set visual attributes
set user limits
place volumes
Definition at line 71 of file BDSBeamPipeFactoryBase.cc.
References BuildLogicalVolumes(), PlaceComponents(), SetUserLimits(), and SetVisAttributes().
Referenced by BDSBeamPipeFactoryLHCDetailed::CommonFinalConstruction(), BDSBeamPipeFactoryClicPCL::CommonFinalConstruction(), BDSBeamPipeFactoryPoints::CommonFinalConstruction(), BDSBeamPipeFactoryRectangular::CommonFinalConstruction(), BDSBeamPipeFactoryCircular::CommonFinalConstruction(), BDSBeamPipeFactoryElliptical::CommonFinalConstruction(), BDSBeamPipeFactoryLHC::CommonFinalConstruction(), and BDSBeamPipeFactoryRectEllipse::CommonFinalConstruction().
|
pure virtual |
Create a beam pipe with angled faces as described by unit normal vectors. The input face normal vector must have a negative z component and the output face a positive z component.
Implemented in BDSBeamPipeFactoryCircular, BDSBeamPipeFactoryCircularVacuum, BDSBeamPipeFactoryElliptical, BDSBeamPipeFactoryLHC, BDSBeamPipeFactoryLHCDetailed, BDSBeamPipeFactoryRectangular, BDSBeamPipeFactoryRectEllipse, and BDSBeamPipeFactoryPoints.
|
pure virtual |
create a flat ended beampipe
Implemented in BDSBeamPipeFactoryCircular, BDSBeamPipeFactoryCircularVacuum, BDSBeamPipeFactoryElliptical, BDSBeamPipeFactoryLHC, BDSBeamPipeFactoryLHCDetailed, BDSBeamPipeFactoryRectangular, BDSBeamPipeFactoryRectEllipse, and BDSBeamPipeFactoryPoints.
|
protectedvirtual |
Place volumes.
Reimplemented in BDSBeamPipeFactoryLHCDetailed.
Definition at line 155 of file BDSBeamPipeFactoryBase.cc.
References BDSFactoryBase::checkOverlaps.
Referenced by CommonConstruction(), and BDSBeamPipeFactoryLHCDetailed::PlaceComponents().
|
protectedvirtual |
Set user limits.
Reimplemented in BDSBeamPipeFactoryLHCDetailed.
Definition at line 135 of file BDSBeamPipeFactoryBase.cc.
References BDS::CreateUserLimits(), and BDSGlobalConstants::Instance().
Referenced by CommonConstruction(), and BDSBeamPipeFactoryLHCDetailed::SetUserLimits().
|
protectedvirtual |
Set visual attributes.
Reimplemented in BDSBeamPipeFactoryLHCDetailed.
Definition at line 109 of file BDSBeamPipeFactoryBase.cc.
References BDSColourFromMaterial::Instance(), BDSColours::Instance(), BDSGlobalConstants::Instance(), and BDSFactoryBase::nSegmentsPerCircle.
Referenced by CommonConstruction(), and BDSBeamPipeFactoryLHCDetailed::SetVisAttributes().
|
protected |
Definition at line 147 of file BDSBeamPipeFactoryBase.hh.
|
protected |
Definition at line 150 of file BDSBeamPipeFactoryBase.hh.
|
protected |
Definition at line 142 of file BDSBeamPipeFactoryBase.hh.
|
protected |
Definition at line 148 of file BDSBeamPipeFactoryBase.hh.
|
protected |
Definition at line 143 of file BDSBeamPipeFactoryBase.hh.
|
protected |
Longer (in length) version of container solid for unambiguous subtraction.
Definition at line 145 of file BDSBeamPipeFactoryBase.hh.
Referenced by BuildBeamPipeAndRegisterVolumes(), CleanUpBase(), BDSBeamPipeFactoryCircularVacuum::CommonFinalConstruction(), BDSBeamPipeFactoryRectangular::CommonFinalConstruction(), BDSBeamPipeFactoryCircular::CommonFinalConstruction(), BDSBeamPipeFactoryElliptical::CommonFinalConstruction(), BDSBeamPipeFactoryLHCDetailed::CreateBeamPipe(), BDSBeamPipeFactoryLHC::CreateContainerSubtractionSolid(), BDSBeamPipeFactoryLHCDetailed::CreateGeneralAngledSolids(), and BDSBeamPipeFactoryPoints::CreateSolids().
|
protected |
For recording the face normals in the finished pipe component.
Definition at line 153 of file BDSBeamPipeFactoryBase.hh.
Referenced by BuildBeamPipeAndRegisterVolumes(), CleanUpBase(), BDSBeamPipeFactoryCircular::CreateBeamPipe(), BDSBeamPipeFactoryCircularVacuum::CreateBeamPipe(), BDSBeamPipeFactoryElliptical::CreateBeamPipe(), BDSBeamPipeFactoryLHC::CreateBeamPipe(), BDSBeamPipeFactoryLHCDetailed::CreateBeamPipe(), BDSBeamPipeFactoryRectangular::CreateBeamPipe(), BDSBeamPipeFactoryRectEllipse::CreateBeamPipe(), and BDSBeamPipeFactoryPoints::CreateBeamPipe().
|
protected |
For recording the face normals in the finished pipe component.
Definition at line 154 of file BDSBeamPipeFactoryBase.hh.
Referenced by BuildBeamPipeAndRegisterVolumes(), CleanUpBase(), BDSBeamPipeFactoryCircular::CreateBeamPipe(), BDSBeamPipeFactoryCircularVacuum::CreateBeamPipe(), BDSBeamPipeFactoryElliptical::CreateBeamPipe(), BDSBeamPipeFactoryLHC::CreateBeamPipe(), BDSBeamPipeFactoryLHCDetailed::CreateBeamPipe(), BDSBeamPipeFactoryRectangular::CreateBeamPipe(), BDSBeamPipeFactoryRectEllipse::CreateBeamPipe(), and BDSBeamPipeFactoryPoints::CreateBeamPipe().
|
protected |
Whether the beam pipe will record energy deposition.
Definition at line 138 of file BDSBeamPipeFactoryBase.hh.
Referenced by BDSBeamPipeFactoryBase(), BuildBeamPipeAndRegisterVolumes(), and BDSBeamPipeFactoryLHCDetailed::CommonFinalConstruction().
|
protected |
Whether the vacuum will record any energy deposition.
Definition at line 139 of file BDSBeamPipeFactoryBase.hh.
Referenced by BDSBeamPipeFactoryBase(), and BuildBeamPipeAndRegisterVolumes().
|
protected |
Whether to store aperture impacts.
Definition at line 140 of file BDSBeamPipeFactoryBase.hh.
Referenced by BDSBeamPipeFactoryBase(), and BuildBeamPipeAndRegisterVolumes().
|
protected |
Definition at line 146 of file BDSBeamPipeFactoryBase.hh.
|
protected |
Definition at line 149 of file BDSBeamPipeFactoryBase.hh.
|
protected |
Definition at line 141 of file BDSBeamPipeFactoryBase.hh.