BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
BDSMagnetOuterFactory Class Reference

The main interface for using the magnet outer factories. More...

#include <BDSMagnetOuterFactory.hh>

Collaboration diagram for BDSMagnetOuterFactory:
Collaboration graph

Public Member Functions

BDSMagnetOuterCreateMagnetOuter (BDSMagnetType magnetType, BDSMagnetOuterInfo *outerInfo, G4double outerLength, G4double chordLength, BDSBeamPipe *beampipe)
 

Static Public Member Functions

static BDSMagnetOuterFactoryInstance ()
 Singleton accessor.
 

Private Member Functions

BDSMagnetOuterFactoryBaseGetAppropriateFactory (BDSMagnetGeometryType magnetTypeIn)
 Get the appropriate derived factory for the required magnet style.
 
BDSMagnetOuterCreateExternal (const G4String &name, BDSMagnetOuterInfo *info, G4double length, G4double magnetContainerLength, BDSBeamPipe *beampipe)
 
BDSGeometryComponentCreateContainerForExternal (const G4String &name, G4double length, BDSGeometryExternal *external, BDSBeamPipe *beampipe)
 
void CheckOuterBiggerThanBeamPipe (const G4String &name, const BDSMagnetOuterInfo *outerInfo, const BDSBeamPipe *beamPipe) const
 

Private Attributes

G4double lengthSafetyLarge
 
G4bool sensitiveOuter
 Cache of global option.
 
BDSMagnetOuterFactoryBasenone
 Factory instance.
 
BDSMagnetOuterFactoryBasecylindrical
 Factory instance.
 
BDSMagnetOuterFactoryBasepolescircular
 Factory instance.
 
BDSMagnetOuterFactoryBasepolessquare
 Factory instance.
 
BDSMagnetOuterFactoryBasepolesfacet
 Factory instance.
 
BDSMagnetOuterFactoryBasepolesfacetcrop
 Factory instance.
 
BDSMagnetOuterFactoryBaselhcright
 Factory instance.
 
BDSMagnetOuterFactoryBaselhcleft
 Factory instance.
 

Static Private Attributes

static BDSMagnetOuterFactoryinstance = nullptr
 Singleton instance.
 

Detailed Description

The main interface for using the magnet outer factories.

Each function in this class mirrors one in BDSMagnetOuterFactoryBase but with the addition of a BDSMagnetGeometryType enum as an argument. This factory dispatches the call to the correct factory and should be the only one used by the caller.

Author
Laurie Nevay

Definition at line 45 of file BDSMagnetOuterFactory.hh.

Constructor & Destructor Documentation

◆ ~BDSMagnetOuterFactory()

BDSMagnetOuterFactory::~BDSMagnetOuterFactory ( )

Definition at line 78 of file BDSMagnetOuterFactory.cc.

◆ BDSMagnetOuterFactory()

BDSMagnetOuterFactory::BDSMagnetOuterFactory ( )
private

Definition at line 64 of file BDSMagnetOuterFactory.cc.

Member Function Documentation

◆ CheckOuterBiggerThanBeamPipe()

void BDSMagnetOuterFactory::CheckOuterBiggerThanBeamPipe ( const G4String &  name,
const BDSMagnetOuterInfo outerInfo,
const BDSBeamPipe beamPipe 
) const
private

Definition at line 324 of file BDSMagnetOuterFactory.cc.

◆ CreateContainerForExternal()

BDSGeometryComponent * BDSMagnetOuterFactory::CreateContainerForExternal ( const G4String &  name,
G4double  length,
BDSGeometryExternal external,
BDSBeamPipe beampipe 
)
private

Create a container based on an external geometry component. Exists here as the using the external factory exists here and doesn't belong in a derived factory. Uses the beam pipe instance to get the surface normals as the container must match. Here, length is the full length of the final object desired.

Definition at line 274 of file BDSMagnetOuterFactory.cc.

References BDSGeometryComponent::GetExtent(), BDSMaterials::GetMaterial(), BDSBeamPipe::InputFaceNormal(), BDSGlobalConstants::Instance(), BDSMaterials::Instance(), BDSExtent::MaximumAbsTransverse(), BDSBeamPipe::OutputFaceNormal(), BDSExtent::XNeg(), BDSExtent::XPos(), BDSExtent::YNeg(), and BDSExtent::YPos().

Referenced by CreateExternal().

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

◆ CreateExternal()

BDSMagnetOuter * BDSMagnetOuterFactory::CreateExternal ( const G4String &  name,
BDSMagnetOuterInfo info,
G4double  length,
G4double  magnetContainerLength,
BDSBeamPipe beampipe 
)
private

Create the magnet yoke from externally provided geometry and create a suitable magnet container solid.

Definition at line 227 of file BDSMagnetOuterFactory.cc.

References BDSGeometryFactory::BuildGeometry(), CreateContainerForExternal(), BDSColours::GetColour(), BDSGeometryComponent::GetExtent(), BDSGeometryComponent::GetInnerExtent(), BDSColours::Instance(), BDSGeometryFactory::Instance(), sensitiveOuter, and BDSExtent::TransverselyLessThan().

Referenced by CreateMagnetOuter().

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

◆ CreateMagnetOuter()

BDSMagnetOuter * BDSMagnetOuterFactory::CreateMagnetOuter ( BDSMagnetType  magnetType,
BDSMagnetOuterInfo outerInfo,
G4double  outerLength,
G4double  chordLength,
BDSBeamPipe beampipe 
)

Main interface to creating a magnet outer piece of geometry. Specified by magnet type, the recipe, the length of the magnet outer section, the length of the appropriately fitting container volume that's also constructed and w.r.t. an already constructed beam pipe.

Definition at line 121 of file BDSMagnetOuterFactory.cc.

References BDSMagnetOuterFactoryBase::CreateDecapole(), CreateExternal(), BDSMagnetOuterFactoryBase::CreateKicker(), BDSMagnetOuterFactoryBase::CreateMultipole(), BDSMagnetOuterFactoryBase::CreateMuonSpoiler(), BDSMagnetOuterFactoryBase::CreateOctupole(), BDSMagnetOuterFactoryBase::CreateQuadrupole(), BDSMagnetOuterFactoryBase::CreateRectangularBend(), BDSMagnetOuterFactoryBase::CreateRfCavity(), BDSMagnetOuterFactoryBase::CreateSectorBend(), BDSMagnetOuterFactoryBase::CreateSextupole(), BDSMagnetOuterFactoryBase::CreateSolenoid(), BDSExtent::DZ(), GetAppropriateFactory(), BDSGeometryComponent::GetExtent(), and BDSTypeSafeEnum< def, inner >::underlying().

Referenced by BDSMagnet::BuildOuter().

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

◆ GetAppropriateFactory()

BDSMagnetOuterFactoryBase * BDSMagnetOuterFactory::GetAppropriateFactory ( BDSMagnetGeometryType  magnetTypeIn)
private

Get the appropriate derived factory for the required magnet style.

Definition at line 91 of file BDSMagnetOuterFactory.cc.

References cylindrical, lhcleft, lhcright, none, polescircular, polesfacet, polesfacetcrop, polessquare, and BDSTypeSafeEnum< def, inner >::underlying().

Referenced by CreateMagnetOuter().

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

◆ Instance()

BDSMagnetOuterFactory * BDSMagnetOuterFactory::Instance ( )
static

Singleton accessor.

Definition at line 57 of file BDSMagnetOuterFactory.cc.

References instance.

Referenced by BDSMagnet::BuildOuter().

Here is the caller graph for this function:

Field Documentation

◆ cylindrical

BDSMagnetOuterFactoryBase* BDSMagnetOuterFactory::cylindrical
private

Factory instance.

Definition at line 93 of file BDSMagnetOuterFactory.hh.

Referenced by GetAppropriateFactory().

◆ instance

BDSMagnetOuterFactory * BDSMagnetOuterFactory::instance = nullptr
staticprivate

Singleton instance.

Definition at line 64 of file BDSMagnetOuterFactory.hh.

Referenced by Instance().

◆ lengthSafetyLarge

G4double BDSMagnetOuterFactory::lengthSafetyLarge
private

Cache of global constant.

Definition at line 90 of file BDSMagnetOuterFactory.hh.

◆ lhcleft

BDSMagnetOuterFactoryBase* BDSMagnetOuterFactory::lhcleft
private

Factory instance.

Definition at line 99 of file BDSMagnetOuterFactory.hh.

Referenced by GetAppropriateFactory().

◆ lhcright

BDSMagnetOuterFactoryBase* BDSMagnetOuterFactory::lhcright
private

Factory instance.

Definition at line 98 of file BDSMagnetOuterFactory.hh.

Referenced by GetAppropriateFactory().

◆ none

BDSMagnetOuterFactoryBase* BDSMagnetOuterFactory::none
private

Factory instance.

Definition at line 92 of file BDSMagnetOuterFactory.hh.

Referenced by GetAppropriateFactory().

◆ polescircular

BDSMagnetOuterFactoryBase* BDSMagnetOuterFactory::polescircular
private

Factory instance.

Definition at line 94 of file BDSMagnetOuterFactory.hh.

Referenced by GetAppropriateFactory().

◆ polesfacet

BDSMagnetOuterFactoryBase* BDSMagnetOuterFactory::polesfacet
private

Factory instance.

Definition at line 96 of file BDSMagnetOuterFactory.hh.

Referenced by GetAppropriateFactory().

◆ polesfacetcrop

BDSMagnetOuterFactoryBase* BDSMagnetOuterFactory::polesfacetcrop
private

Factory instance.

Definition at line 97 of file BDSMagnetOuterFactory.hh.

Referenced by GetAppropriateFactory().

◆ polessquare

BDSMagnetOuterFactoryBase* BDSMagnetOuterFactory::polessquare
private

Factory instance.

Definition at line 95 of file BDSMagnetOuterFactory.hh.

Referenced by GetAppropriateFactory().

◆ sensitiveOuter

G4bool BDSMagnetOuterFactory::sensitiveOuter
private

Cache of global option.

Definition at line 101 of file BDSMagnetOuterFactory.hh.

Referenced by CreateExternal().


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