BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes
BDSMagnetOuterFactoryLHC Class Reference

The base factory for the LHC magnet geometry factory. More...

#include <BDSMagnetOuterFactoryLHC.hh>

Inheritance diagram for BDSMagnetOuterFactoryLHC:
Inheritance graph
Collaboration diagram for BDSMagnetOuterFactoryLHC:
Collaboration graph

Public Member Functions

 BDSMagnetOuterFactoryLHC (G4bool isLeftOffset)
 
virtual BDSMagnetOuterCreateSectorBend (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 sector bend outer volume More...
 
virtual BDSMagnetOuterCreateRectangularBend (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 rectangular bend outer volume More...
 
virtual BDSMagnetOuterCreateQuadrupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 quadrupole outer volume More...
 
virtual BDSMagnetOuterCreateSextupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 sextupole outer volume More...
 
virtual BDSMagnetOuterCreateOctupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 octupole outer volume More...
 
virtual BDSMagnetOuterCreateDecapole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 decapole outer volume More...
 
virtual BDSMagnetOuterCreateSolenoid (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 solenoid outer volume More...
 
virtual BDSMagnetOuterCreateMultipole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 general multipole outer volume - could be any 2N order multipole More...
 
virtual BDSMagnetOuterCreateRfCavity (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 RF cavity outer volume. More...
 
virtual BDSMagnetOuterCreateMuonSpoiler (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 muon spoiler outer volume More...
 
virtual BDSMagnetOuterCreateKicker (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe, G4bool vertical)
 horizontal and vertical kicker outer volume More...
 
- Public Member Functions inherited from BDSMagnetOuterFactoryBase
virtual BDSMagnetOuterCreateSectorBend (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 sector bend outer volume More...
 
virtual BDSMagnetOuterCreateRectangularBend (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 rectangular bend outer volume More...
 
virtual BDSMagnetOuterCreateQuadrupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 quadrupole outer volume More...
 
virtual BDSMagnetOuterCreateSextupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 sextupole outer volume More...
 
virtual BDSMagnetOuterCreateOctupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 octupole outer volume More...
 
virtual BDSMagnetOuterCreateDecapole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 decapole outer volume More...
 
virtual BDSMagnetOuterCreateSolenoid (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 solenoid outer volume More...
 
virtual BDSMagnetOuterCreateMultipole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 general multipole outer volume - could be any 2N order multipole More...
 
virtual BDSMagnetOuterCreateRfCavity (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 RF cavity outer volume. More...
 
virtual BDSMagnetOuterCreateMuonSpoiler (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 muon spoiler outer volume More...
 
virtual BDSMagnetOuterCreateKicker (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe, G4bool vertical)=0
 horizontal and vertical kicker outer volume More...
 
virtual void CleanUp ()
 Empty containers for next use - factories are never deleted so can't rely on scope. More...
 
void CleanUpBase ()
 Non-virtual clean up that can be used in the constructor. More...
 
virtual ~BDSMagnetOuterFactoryBase ()
 Virtual base destructor. More...
 
- Public Member Functions inherited from BDSFactoryBase
virtual void FactoryBaseCleanUp ()
 Empty containers for next use - factories are never deleted so can't rely on scope. More...
 

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. More...
 

Protected Member Functions

G4bool IsLeftOffset ()
 
- Protected Member Functions inherited from BDSMagnetOuterFactoryBase
virtual void CreateLogicalVolumes (const G4String &name, G4Colour *colour, G4Material *outerMaterial)
 
virtual void SetUserLimits ()
 Attach default user limits to all logical volumes. More...
 
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. More...
 

Protected Attributes

G4bool isLeftOffset
 
- Protected Attributes inherited from BDSMagnetOuterFactoryBase
G4VSolid * poleSolid
 Solid for an individual pole that will be placed multiple times. More...
 
G4VSolid * yokeSolid
 Solid for outer part that connects all poles. More...
 
G4VSolid * containerSolid
 
G4VSolid * magnetContainerSolid
 
G4LogicalVolume * poleLV
 
G4LogicalVolume * yokeLV
 
G4LogicalVolume * containerLV
 
G4LogicalVolume * magnetContainerLV
 
G4VPhysicalVolume * yokePV
 
G4VisAttributes * outerVisAttributes
 
BDSExtent magContExtent
 
BDSGeometryComponentmagnetContainer
 
G4ThreeVector inputFaceNormal
 
G4ThreeVector outputFaceNormal
 
G4bool sensitiveOuter
 Cache of global constants variable. More...
 
- Protected Attributes inherited from BDSFactoryBase
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. More...
 
G4double lengthSafetyLarge
 Cache of global constants variable. More...
 
G4bool checkOverlaps
 Cache of global constants variable. More...
 
G4bool visDebug
 Cache of global constants variable. More...
 
G4double nSegmentsPerCircle
 Cache of global constants variable. More...
 
G4VisAttributes * containerVisAttr
 Cache of global constants variable. More...
 
G4UserLimits * defaultUserLimits
 Cache of global constants variable. More...
 

Private Types

enum class  YokeColour { dipole , kicker }
 Enum up front for yoke colouring. More...
 

Private Member Functions

BDSMagnetOuterCreateLHCDipole (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 More...
 

Private Attributes

BDSMagnetOuterFactoryBasecylindrical
 Default factory to fall back to. More...
 

Detailed Description

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

Author
Laurie Nevay

Definition at line 38 of file BDSMagnetOuterFactoryLHC.hh.

Member Enumeration Documentation

◆ YokeColour

enum class BDSMagnetOuterFactoryLHC::YokeColour
strongprivate

Enum up front for yoke colouring.

Definition at line 42 of file BDSMagnetOuterFactoryLHC.hh.

Constructor & Destructor Documentation

◆ BDSMagnetOuterFactoryLHC()

BDSMagnetOuterFactoryLHC::BDSMagnetOuterFactoryLHC ( G4bool  isLeftOffset)
explicit

Definition at line 63 of file BDSMagnetOuterFactoryLHC.cc.

◆ ~BDSMagnetOuterFactoryLHC()

BDSMagnetOuterFactoryLHC::~BDSMagnetOuterFactoryLHC ( )
virtual

Definition at line 69 of file BDSMagnetOuterFactoryLHC.cc.

Member Function Documentation

◆ CreateDecapole()

BDSMagnetOuter * BDSMagnetOuterFactoryLHC::CreateDecapole ( G4String  name,
G4double  length,
BDSBeamPipe beamPipe,
G4double  containerLength,
const BDSMagnetOuterInfo recipe 
)
virtual

decapole outer volume

Implements BDSMagnetOuterFactoryBase.

Definition at line 1592 of file BDSMagnetOuterFactoryLHC.cc.

References BDSMagnetOuterFactoryBase::CreateDecapole(), and cylindrical.

Here is the call graph for this function:

◆ CreateKicker()

BDSMagnetOuter * BDSMagnetOuterFactoryLHC::CreateKicker ( G4String  name,
G4double  length,
const BDSBeamPipe beamPipe,
G4double  containerLength,
const BDSMagnetOuterInfo recipe,
G4bool  vertical 
)
virtual

horizontal and vertical kicker outer volume

Implements BDSMagnetOuterFactoryBase.

Definition at line 1637 of file BDSMagnetOuterFactoryLHC.cc.

References CreateLHCDipole().

Here is the call graph for this function:

◆ CreateLHCDipole()

BDSMagnetOuter * BDSMagnetOuterFactoryLHC::CreateLHCDipole ( const G4String &  name,
G4double  length,
const BDSBeamPipe beamPipe,
G4double  containerLength,
const BDSMagnetOuterInfo recipe,
YokeColour  colourIn 
)
private

◆ CreateMultipole()

BDSMagnetOuter * BDSMagnetOuterFactoryLHC::CreateMultipole ( G4String  name,
G4double  length,
BDSBeamPipe beamPipe,
G4double  containerLength,
const BDSMagnetOuterInfo recipe 
)
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.

Here is the call graph for this function:

◆ CreateMuonSpoiler()

BDSMagnetOuter * BDSMagnetOuterFactoryLHC::CreateMuonSpoiler ( G4String  name,
G4double  length,
BDSBeamPipe beamPipe,
G4double  containerLength,
const BDSMagnetOuterInfo recipe 
)
virtual

muon spoiler outer volume

Implements BDSMagnetOuterFactoryBase.

Definition at line 1628 of file BDSMagnetOuterFactoryLHC.cc.

References BDSMagnetOuterFactoryBase::CreateMuonSpoiler(), and cylindrical.

Here is the call graph for this function:

◆ CreateOctupole()

BDSMagnetOuter * BDSMagnetOuterFactoryLHC::CreateOctupole ( G4String  name,
G4double  length,
BDSBeamPipe beamPipe,
G4double  containerLength,
const BDSMagnetOuterInfo recipe 
)
virtual

octupole outer volume

Implements BDSMagnetOuterFactoryBase.

Definition at line 1583 of file BDSMagnetOuterFactoryLHC.cc.

References BDSMagnetOuterFactoryBase::CreateOctupole(), and cylindrical.

Here is the call graph for this function:

◆ CreateQuadrupole()

BDSMagnetOuter * BDSMagnetOuterFactoryLHC::CreateQuadrupole ( G4String  name,
G4double  length,
BDSBeamPipe beamPipe,
G4double  containerLength,
const BDSMagnetOuterInfo recipe 
)
virtual

◆ CreateRectangularBend()

BDSMagnetOuter * BDSMagnetOuterFactoryLHC::CreateRectangularBend ( G4String  name,
G4double  length,
const BDSBeamPipe beamPipe,
G4double  containerLength,
const BDSMagnetOuterInfo recipe 
)
virtual

rectangular bend outer volume

Implements BDSMagnetOuterFactoryBase.

Definition at line 987 of file BDSMagnetOuterFactoryLHC.cc.

References CreateSectorBend().

Here is the call graph for this function:

◆ CreateRfCavity()

BDSMagnetOuter * BDSMagnetOuterFactoryLHC::CreateRfCavity ( G4String  name,
G4double  length,
BDSBeamPipe beamPipe,
G4double  containerLength,
const BDSMagnetOuterInfo recipe 
)
virtual

RF cavity outer volume.

Implements BDSMagnetOuterFactoryBase.

Definition at line 1619 of file BDSMagnetOuterFactoryLHC.cc.

References BDSMagnetOuterFactoryBase::CreateRfCavity(), and cylindrical.

Here is the call graph for this function:

◆ CreateSectorBend()

BDSMagnetOuter * BDSMagnetOuterFactoryLHC::CreateSectorBend ( G4String  name,
G4double  length,
const BDSBeamPipe beamPipe,
G4double  containerLength,
const BDSMagnetOuterInfo recipe 
)
virtual

sector bend outer volume

Implements BDSMagnetOuterFactoryBase.

Definition at line 74 of file BDSMagnetOuterFactoryLHC.cc.

References CreateLHCDipole().

Referenced by CreateRectangularBend().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateSextupole()

BDSMagnetOuter * BDSMagnetOuterFactoryLHC::CreateSextupole ( G4String  name,
G4double  length,
BDSBeamPipe beamPipe,
G4double  containerLength,
const BDSMagnetOuterInfo recipe 
)
virtual

sextupole outer volume

Implements BDSMagnetOuterFactoryBase.

Definition at line 1574 of file BDSMagnetOuterFactoryLHC.cc.

References BDSMagnetOuterFactoryBase::CreateSextupole(), and cylindrical.

Here is the call graph for this function:

◆ CreateSolenoid()

BDSMagnetOuter * BDSMagnetOuterFactoryLHC::CreateSolenoid ( G4String  name,
G4double  length,
BDSBeamPipe beamPipe,
G4double  containerLength,
const BDSMagnetOuterInfo recipe 
)
virtual

solenoid outer volume

Implements BDSMagnetOuterFactoryBase.

Definition at line 1601 of file BDSMagnetOuterFactoryLHC.cc.

References BDSMagnetOuterFactoryBase::CreateSolenoid(), and cylindrical.

Here is the call graph for this function:

◆ IsLeftOffset()

G4bool BDSMagnetOuterFactoryLHC::IsLeftOffset ( )
inlineprotected

Definition at line 139 of file BDSMagnetOuterFactoryLHC.hh.

◆ TestInputParameters()

void BDSMagnetOuterFactoryLHC::TestInputParameters ( const BDSBeamPipe beamPipe,
G4double &  horizontalWidthIn 
)
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().

Here is the caller graph for this function:

Field Documentation

◆ beamSeparation

const G4double BDSMagnetOuterFactoryLHC::beamSeparation = 194.00*CLHEP::mm
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().

◆ cylindrical

BDSMagnetOuterFactoryBase* BDSMagnetOuterFactoryLHC::cylindrical
private

◆ isLeftOffset

G4bool BDSMagnetOuterFactoryLHC::isLeftOffset
protected

Definition at line 138 of file BDSMagnetOuterFactoryLHC.hh.


The documentation for this class was generated from the following files: