BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
The base factory for the LHC magnet geometry factory. More...
#include <BDSMagnetOuterFactoryLHC.hh>
Public Member Functions | |
BDSMagnetOuterFactoryLHC (G4bool isLeftOffset) | |
virtual BDSMagnetOuter * | CreateSectorBend (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe) |
sector bend outer volume | |
virtual BDSMagnetOuter * | CreateRectangularBend (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe) |
rectangular bend outer volume | |
virtual BDSMagnetOuter * | CreateQuadrupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe) |
quadrupole outer volume | |
virtual BDSMagnetOuter * | CreateSextupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe) |
sextupole outer volume | |
virtual BDSMagnetOuter * | CreateOctupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe) |
octupole outer volume | |
virtual BDSMagnetOuter * | CreateDecapole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe) |
decapole outer volume | |
virtual BDSMagnetOuter * | CreateSolenoid (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe) |
solenoid outer volume | |
virtual BDSMagnetOuter * | CreateMultipole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe) |
general multipole outer volume - could be any 2N order multipole | |
virtual BDSMagnetOuter * | CreateRfCavity (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe) |
RF cavity outer volume. | |
virtual BDSMagnetOuter * | CreateMuonSpoiler (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe) |
muon spoiler outer volume | |
virtual BDSMagnetOuter * | CreateKicker (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe, G4bool vertical) |
horizontal and vertical kicker outer volume | |
![]() | |
virtual BDSMagnetOuter * | CreateSectorBend (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0 |
sector bend outer volume | |
virtual BDSMagnetOuter * | CreateRectangularBend (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0 |
rectangular bend outer volume | |
virtual BDSMagnetOuter * | CreateQuadrupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0 |
quadrupole outer volume | |
virtual BDSMagnetOuter * | CreateSextupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0 |
sextupole outer volume | |
virtual BDSMagnetOuter * | CreateOctupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0 |
octupole outer volume | |
virtual BDSMagnetOuter * | CreateDecapole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0 |
decapole outer volume | |
virtual BDSMagnetOuter * | CreateSolenoid (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0 |
solenoid outer volume | |
virtual BDSMagnetOuter * | CreateMultipole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0 |
general multipole outer volume - could be any 2N order multipole | |
virtual BDSMagnetOuter * | CreateRfCavity (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0 |
RF cavity outer volume. | |
virtual BDSMagnetOuter * | CreateMuonSpoiler (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0 |
muon spoiler outer volume | |
virtual BDSMagnetOuter * | CreateKicker (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe, G4bool vertical)=0 |
horizontal and vertical kicker outer volume | |
virtual void | CleanUp () |
Empty containers for next use - factories are never deleted so can't rely on scope. | |
void | CleanUpBase () |
Non-virtual clean up that can be used in the constructor. | |
virtual | ~BDSMagnetOuterFactoryBase () |
Virtual base destructor. | |
![]() | |
virtual void | FactoryBaseCleanUp () |
Empty containers for next use - factories are never deleted so can't rely on scope. | |
Static Public Attributes | |
static const G4double | beamSeparation = 194.00*CLHEP::mm |
Used in many places - make it a constant in the code and put here as most relevant. | |
Protected Member Functions | |
G4bool | IsLeftOffset () |
![]() | |
virtual void | CreateLogicalVolumes (const G4String &name, G4Colour *colour, G4Material *outerMaterial) |
virtual void | SetUserLimits () |
Attach default user limits to all logical volumes. | |
void | BuildMagnetContainerSolidAngled (const G4String &name, G4double magnetContainerLength, G4double magnetContainerRadius, G4bool flatFaces=false) |
void | BuildMagnetContainerSolidStraight (const G4String &name, G4double magnetContainerLength, G4double magnetContainerRadius) |
void | CreateMagnetContainerComponent () |
void | SetFaceNormals (BDSMagnetOuter *outer) |
Copy face normals from members to an instance of outer. | |
Protected Attributes | |
G4bool | isLeftOffset |
![]() | |
G4VSolid * | poleSolid |
Solid for an individual pole that will be placed multiple times. | |
G4VSolid * | yokeSolid |
Solid for outer part that connects all poles. | |
G4VSolid * | containerSolid |
G4VSolid * | magnetContainerSolid |
G4LogicalVolume * | poleLV |
G4LogicalVolume * | yokeLV |
G4LogicalVolume * | containerLV |
G4LogicalVolume * | magnetContainerLV |
G4VPhysicalVolume * | yokePV |
G4VisAttributes * | outerVisAttributes |
BDSExtent | magContExtent |
BDSGeometryComponent * | magnetContainer |
G4ThreeVector | inputFaceNormal |
G4ThreeVector | outputFaceNormal |
G4bool | sensitiveOuter |
Cache of global constants variable. | |
![]() | |
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. | |
Private Types | |
enum class | YokeColour { dipole , kicker } |
Enum up front for yoke colouring. More... | |
Private Member Functions | |
BDSMagnetOuter * | CreateLHCDipole (const G4String &name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe, YokeColour colourIn) |
void | TestInputParameters (const BDSBeamPipe *beamPipe, G4double &horizontalWidthIn) |
test inputs for no null pointers or overlapping volumes due to poorly defined sizes | |
Private Attributes | |
BDSMagnetOuterFactoryBase * | cylindrical |
Default factory to fall back to. | |
The base factory for the LHC magnet geometry factory.
This class is not a singleton unlike the other factories as it will be constructed twice by each derived class
Definition at line 38 of file BDSMagnetOuterFactoryLHC.hh.
|
strongprivate |
Enum up front for yoke colouring.
Definition at line 42 of file BDSMagnetOuterFactoryLHC.hh.
|
explicit |
Definition at line 63 of file BDSMagnetOuterFactoryLHC.cc.
|
virtual |
Definition at line 69 of file BDSMagnetOuterFactoryLHC.cc.
|
virtual |
decapole outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 1592 of file BDSMagnetOuterFactoryLHC.cc.
References BDSMagnetOuterFactoryBase::CreateDecapole(), and cylindrical.
|
virtual |
horizontal and vertical kicker outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 1637 of file BDSMagnetOuterFactoryLHC.cc.
References CreateLHCDipole().
|
private |
Our own function in this class that has the yoke colour so we can reuse the code for kickers
Definition at line 83 of file BDSMagnetOuterFactoryLHC.cc.
References beamSeparation, BDSMagnetOuterFactoryBase::BuildMagnetContainerSolidAngled(), BDS::CalculateFaces(), BDS::CalculateOrientation(), BDSFactoryBase::checkOverlaps, BDSMagnetOuterFactoryBase::CleanUp(), BDSBeamPipe::ContainerIsCircular(), BDSFactoryBase::containerVisAttr, BDSFactoryBase::defaultUserLimits, BDSColours::GetColour(), BDSGeometryComponent::GetContainerLogicalVolume(), BDSBeamPipe::GetContainerRadius(), BDSBeamPipe::GetContainerSubtractionSolid(), BDSMaterials::GetMaterial(), BDSBeamPipeFactory::Instance(), BDSColours::Instance(), BDSGlobalConstants::Instance(), BDSMaterials::Instance(), BDS::IsFinite(), BDSFactoryBase::lengthSafety, BDSFactoryBase::lengthSafetyLarge, BDSFactoryBase::nSegmentsPerCircle, BDSGeometryComponent::RegisterDaughter(), BDSGeometryComponent::RegisterLogicalVolume(), BDSGeometryComponent::RegisterPhysicalVolume(), BDSGeometryComponent::RegisterSensitiveVolume(), BDSGeometryComponent::RegisterVisAttributes(), BDSMagnetOuterFactoryBase::SetFaceNormals(), TestInputParameters(), BDSBeamPipeInfo::vacuumMaterial, and BDSMagnetOuterFactoryBase::yokeSolid.
Referenced by CreateKicker(), and CreateSectorBend().
|
virtual |
general multipole outer volume - could be any 2N order multipole
Implements BDSMagnetOuterFactoryBase.
Definition at line 1610 of file BDSMagnetOuterFactoryLHC.cc.
References BDSMagnetOuterFactoryBase::CreateMultipole(), and cylindrical.
|
virtual |
muon spoiler outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 1628 of file BDSMagnetOuterFactoryLHC.cc.
References BDSMagnetOuterFactoryBase::CreateMuonSpoiler(), and cylindrical.
|
virtual |
octupole outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 1583 of file BDSMagnetOuterFactoryLHC.cc.
References BDSMagnetOuterFactoryBase::CreateOctupole(), and cylindrical.
|
virtual |
quadrupole outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 996 of file BDSMagnetOuterFactoryLHC.cc.
References beamSeparation, BDSMagnetOuterFactoryBase::BuildMagnetContainerSolidStraight(), BDSFactoryBase::checkOverlaps, BDSMagnetOuterFactoryBase::CleanUp(), BDSBeamPipe::ContainerIsCircular(), BDSFactoryBase::containerVisAttr, BDSFactoryBase::defaultUserLimits, BDSGeometryComponent::GetContainerLogicalVolume(), BDSBeamPipe::GetContainerRadius(), BDSBeamPipe::GetContainerSubtractionSolid(), BDSMaterials::GetMaterial(), BDSBeamPipeFactory::Instance(), BDSColours::Instance(), BDSGlobalConstants::Instance(), BDSMaterials::Instance(), BDSFactoryBase::lengthSafety, BDSFactoryBase::lengthSafetyLarge, BDSFactoryBase::nSegmentsPerCircle, BDSGeometryComponent::RegisterDaughter(), BDSGeometryComponent::RegisterLogicalVolume(), BDSGeometryComponent::RegisterPhysicalVolume(), BDSGeometryComponent::RegisterRotationMatrix(), BDSGeometryComponent::RegisterSolid(), BDSGeometryComponent::RegisterVisAttributes(), BDSMagnetOuterFactoryBase::SetFaceNormals(), TestInputParameters(), BDSBeamPipeInfo::vacuumMaterial, and BDSMagnetOuterFactoryBase::yokeSolid.
|
virtual |
rectangular bend outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 987 of file BDSMagnetOuterFactoryLHC.cc.
References CreateSectorBend().
|
virtual |
RF cavity outer volume.
Implements BDSMagnetOuterFactoryBase.
Definition at line 1619 of file BDSMagnetOuterFactoryLHC.cc.
References BDSMagnetOuterFactoryBase::CreateRfCavity(), and cylindrical.
|
virtual |
sector bend outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 74 of file BDSMagnetOuterFactoryLHC.cc.
References CreateLHCDipole().
Referenced by CreateRectangularBend().
|
virtual |
sextupole outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 1574 of file BDSMagnetOuterFactoryLHC.cc.
References BDSMagnetOuterFactoryBase::CreateSextupole(), and cylindrical.
|
virtual |
solenoid outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 1601 of file BDSMagnetOuterFactoryLHC.cc.
References BDSMagnetOuterFactoryBase::CreateSolenoid(), and cylindrical.
|
inlineprotected |
Definition at line 139 of file BDSMagnetOuterFactoryLHC.hh.
|
private |
test inputs for no null pointers or overlapping volumes due to poorly defined sizes
functions below here are private to this particular factory
Definition at line 1648 of file BDSMagnetOuterFactoryLHC.cc.
Referenced by CreateLHCDipole(), and CreateQuadrupole().
|
static |
Used in many places - make it a constant in the code and put here as most relevant.
Beam pipe axis separation at 1.9K.
Definition at line 55 of file BDSMagnetOuterFactoryLHC.hh.
Referenced by BDSMagnet::BuildOuterField(), BDSFieldFactory::CreateFieldMagRaw(), CreateLHCDipole(), and CreateQuadrupole().
|
private |
Default factory to fall back to.
Definition at line 146 of file BDSMagnetOuterFactoryLHC.hh.
Referenced by CreateDecapole(), CreateMultipole(), CreateMuonSpoiler(), CreateOctupole(), CreateRfCavity(), CreateSextupole(), and CreateSolenoid().
|
protected |
Definition at line 138 of file BDSMagnetOuterFactoryLHC.hh.