BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
Factory that produces cylindrical magnet geometry. More...
#include <BDSMagnetOuterFactoryCylindrical.hh>
Public Member Functions | |
virtual void | CleanUp () |
Empty containers for next use - factories are never deleted so can't rely on scope. | |
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. | |
Private Member Functions | |
void | CreateCylindricalSolids (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double magnetContainerLength, G4double boxSize) |
Only really one function needed for this factory private to this factory only. | |
void | CreateCylindricalSolidsAngled (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double magnetContainerLength, G4double boxSize) |
BDSMagnetOuter * | CommonFinalConstructor (G4String name, G4double length, const BDSMagnetOuterInfo *recipe) |
void | TestInputParameters (const BDSBeamPipe *beamPipe, G4double &horizontalWidthIn) |
test inputs for no null pointers or overlapping volumes due to poorly defined sizes | |
Private Attributes | |
G4double | magnetContainerRadius |
Additional Inherited Members | |
![]() | |
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. | |
![]() | |
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. | |
Factory that produces cylindrical magnet geometry.
Definition at line 37 of file BDSMagnetOuterFactoryCylindrical.hh.
BDSMagnetOuterFactoryCylindrical::BDSMagnetOuterFactoryCylindrical | ( | ) |
Definition at line 49 of file BDSMagnetOuterFactoryCylindrical.cc.
|
inlinevirtual |
Definition at line 41 of file BDSMagnetOuterFactoryCylindrical.hh.
|
virtual |
Empty containers for next use - factories are never deleted so can't rely on scope.
Reimplemented from BDSMagnetOuterFactoryBase.
Definition at line 53 of file BDSMagnetOuterFactoryCylindrical.cc.
References BDSMagnetOuterFactoryBase::CleanUp().
Referenced by CreateDecapole(), CreateKicker(), CreateMultipole(), CreateMuonSpoiler(), CreateOctupole(), CreateQuadrupole(), CreateRectangularBend(), CreateRfCavity(), CreateSectorBend(), CreateSextupole(), and CreateSolenoid().
|
private |
Only the solids are unique, once we have those, the logical volumes and placement in the container are the same. Group all this functionality together
Definition at line 427 of file BDSMagnetOuterFactoryCylindrical.cc.
References BDSFactoryBase::checkOverlaps, BDSMagnetOuterFactoryBase::CreateLogicalVolumes(), BDSMaterials::GetMaterial(), BDSGlobalConstants::Instance(), BDSMaterials::Instance(), BDSGeometryComponent::RegisterLogicalVolume(), BDSGeometryComponent::RegisterPhysicalVolume(), BDSGeometryComponent::RegisterSensitiveVolume(), BDSGeometryComponent::RegisterSolid(), BDSGeometryComponent::RegisterVisAttributes(), BDSMagnetOuterFactoryBase::sensitiveOuter, BDSMagnetOuterFactoryBase::SetFaceNormals(), and BDSMagnetOuterFactoryBase::SetUserLimits().
Referenced by CreateDecapole(), CreateKicker(), CreateMultipole(), CreateMuonSpoiler(), CreateOctupole(), CreateQuadrupole(), CreateRectangularBend(), CreateRfCavity(), CreateSectorBend(), CreateSextupole(), and CreateSolenoid().
|
private |
Only really one function needed for this factory private to this factory only.
functions below here are private to this particular factory
Definition at line 278 of file BDSMagnetOuterFactoryCylindrical.cc.
References BDSMagnetOuterFactoryBase::BuildMagnetContainerSolidStraight(), BDSBeamPipe::ContainerIsCircular(), BDSBeamPipe::GetContainerRadius(), BDSBeamPipe::GetContainerSubtractionSolid(), BDSFactoryBase::lengthSafety, BDSFactoryBase::lengthSafetyLarge, and BDSMagnetOuterFactoryBase::yokeSolid.
Referenced by CreateDecapole(), CreateKicker(), CreateMultipole(), CreateMuonSpoiler(), CreateOctupole(), CreateQuadrupole(), CreateRectangularBend(), CreateRfCavity(), CreateSectorBend(), CreateSextupole(), and CreateSolenoid().
|
private |
Definition at line 338 of file BDSMagnetOuterFactoryCylindrical.cc.
|
virtual |
decapole outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 165 of file BDSMagnetOuterFactoryCylindrical.cc.
References CleanUp(), CommonFinalConstructor(), and CreateCylindricalSolids().
|
virtual |
horizontal and vertical kicker outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 262 of file BDSMagnetOuterFactoryCylindrical.cc.
References CleanUp(), CommonFinalConstructor(), and CreateCylindricalSolids().
|
virtual |
general multipole outer volume - could be any 2N order multipole
Implements BDSMagnetOuterFactoryBase.
Definition at line 226 of file BDSMagnetOuterFactoryCylindrical.cc.
References CleanUp(), CommonFinalConstructor(), and CreateCylindricalSolids().
|
virtual |
muon spoiler outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 250 of file BDSMagnetOuterFactoryCylindrical.cc.
References CleanUp(), CommonFinalConstructor(), and CreateCylindricalSolids().
|
virtual |
octupole outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 153 of file BDSMagnetOuterFactoryCylindrical.cc.
References CleanUp(), CommonFinalConstructor(), and CreateCylindricalSolids().
|
virtual |
quadrupole outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 129 of file BDSMagnetOuterFactoryCylindrical.cc.
References CleanUp(), CommonFinalConstructor(), and CreateCylindricalSolids().
|
virtual |
rectangular bend outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 93 of file BDSMagnetOuterFactoryCylindrical.cc.
References BDSMagnetOuterFactoryBase::BuildMagnetContainerSolidAngled(), BDSMagnetOuterFactoryBase::BuildMagnetContainerSolidStraight(), BDS::CalculateFaces(), CleanUp(), CommonFinalConstructor(), CreateCylindricalSolids(), BDS::IsFinite(), and TestInputParameters().
|
virtual |
RF cavity outer volume.
Implements BDSMagnetOuterFactoryBase.
Definition at line 238 of file BDSMagnetOuterFactoryCylindrical.cc.
References CleanUp(), CommonFinalConstructor(), and CreateCylindricalSolids().
|
virtual |
sector bend outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 59 of file BDSMagnetOuterFactoryCylindrical.cc.
References BDSMagnetOuterFactoryBase::BuildMagnetContainerSolidAngled(), BDSMagnetOuterFactoryBase::BuildMagnetContainerSolidStraight(), BDS::CalculateFaces(), CleanUp(), CommonFinalConstructor(), CreateCylindricalSolids(), BDS::IsFinite(), and TestInputParameters().
|
virtual |
sextupole outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 141 of file BDSMagnetOuterFactoryCylindrical.cc.
References CleanUp(), CommonFinalConstructor(), and CreateCylindricalSolids().
|
virtual |
solenoid outer volume
Implements BDSMagnetOuterFactoryBase.
Definition at line 177 of file BDSMagnetOuterFactoryCylindrical.cc.
References BDSFactoryBase::checkOverlaps, CleanUp(), CommonFinalConstructor(), CreateCylindricalSolids(), BDSColours::GetColour(), BDSBeamPipe::GetContainerRadius(), BDSColours::Instance(), and BDSFactoryBase::lengthSafetyLarge.
|
private |
test inputs for no null pointers or overlapping volumes due to poorly defined sizes
Definition at line 403 of file BDSMagnetOuterFactoryCylindrical.cc.
References BDSBeamPipe::ContainerIsCircular(), BDSExtent::DX(), BDSExtent::DY(), BDSBeamPipe::GetContainerRadius(), and BDSGeometryComponent::GetExtent().
Referenced by CreateRectangularBend(), and CreateSectorBend().
|
private |
Definition at line 148 of file BDSMagnetOuterFactoryCylindrical.hh.