BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Loading...
Searching...
No Matches
BDSMagnetOuterFactoryPolesFacet Class Reference

Factory class for outer volume of magnets. More...

#include <BDSMagnetOuterFactoryPolesFacet.hh>

Inheritance diagram for BDSMagnetOuterFactoryPolesFacet:
Inheritance graph
Collaboration diagram for BDSMagnetOuterFactoryPolesFacet:
Collaboration graph

Additional Inherited Members

- Public Member Functions inherited from BDSMagnetOuterFactoryPolesFacetCommon
 BDSMagnetOuterFactoryPolesFacetCommon (G4double factor)
 
- Public Member Functions inherited from BDSMagnetOuterFactoryPolesBase
 BDSMagnetOuterFactoryPolesBase (G4double poleStopFactorIn)
 
virtual BDSMagnetOuterCreateSectorBend (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 sector bend outer volume
 
virtual BDSMagnetOuterCreateRectangularBend (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 rectangular bend outer volume
 
virtual BDSMagnetOuterCreateQuadrupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 quadrupole outer volume
 
virtual BDSMagnetOuterCreateSextupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 sextupole outer volume
 
virtual BDSMagnetOuterCreateOctupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 octupole outer volume
 
virtual BDSMagnetOuterCreateDecapole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 decapole outer volume
 
virtual BDSMagnetOuterCreateSolenoid (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 solenoid outer volume
 
virtual BDSMagnetOuterCreateMultipole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 general multipole outer volume - could be any 2N order multipole
 
virtual BDSMagnetOuterCreateRfCavity (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 RF cavity outer volume.
 
virtual BDSMagnetOuterCreateMuonSpoiler (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)
 muon spoiler outer volume
 
virtual BDSMagnetOuterCreateKicker (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe, G4bool vertical)
 horizontal and vertical kicker outer volume
 
- 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
 
virtual BDSMagnetOuterCreateRectangularBend (G4String name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 rectangular bend outer volume
 
virtual BDSMagnetOuterCreateQuadrupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 quadrupole outer volume
 
virtual BDSMagnetOuterCreateSextupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 sextupole outer volume
 
virtual BDSMagnetOuterCreateOctupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 octupole outer volume
 
virtual BDSMagnetOuterCreateDecapole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 decapole outer volume
 
virtual BDSMagnetOuterCreateSolenoid (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 solenoid outer volume
 
virtual BDSMagnetOuterCreateMultipole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 general multipole outer volume - could be any 2N order multipole
 
virtual BDSMagnetOuterCreateRfCavity (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 RF cavity outer volume.
 
virtual BDSMagnetOuterCreateMuonSpoiler (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe)=0
 muon spoiler outer volume
 
virtual BDSMagnetOuterCreateKicker (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.
 
- Public Member Functions inherited from BDSFactoryBase
virtual void FactoryBaseCleanUp ()
 Empty containers for next use - factories are never deleted so can't rely on scope.
 
- Protected Member Functions inherited from BDSMagnetOuterFactoryPolesFacetCommon
virtual void CalculateStartAngles ()
 Calculate start angle of polyhedra based on order and segment angle.
 
- Protected Member Functions inherited from BDSMagnetOuterFactoryPolesBase
virtual void CleanUp ()
 Empty containers for next use - this class is never deleted so can't rely on scope.
 
void CleanUpPolesBase ()
 Non-virtual clean up to be used in constructor.
 
virtual BDSMagnetOuterCommonConstructor (const G4String &name, G4double length, BDSBeamPipe *beamPipe, G4int order, G4double magnetContainerLength, const BDSMagnetOuterInfo *recipe)
 Common construction tasks to all methods - assemble yoke and poles in container.
 
virtual void CalculatePoleAndYoke (G4double horizontalWidth, BDSBeamPipe *beamPipe, G4int order)
 
virtual void CreatePoleSolid (const G4String &name, G4double length, G4int order)
 
virtual void CreateCoilSolids (const G4String &name, G4double length)
 Create the coil solids corresponding to the pole solid.
 
virtual void CreateCoilPoints ()
 Create all the points that make up the extruded solid of the pole.
 
virtual void CreateYokeAndContainerSolid (const G4String &name, G4double length, G4int order, G4double magnetContainerLength, G4double magnetContainerRadiusIn)
 
virtual void IntersectPoleWithYoke (const G4String &name, G4double length, G4int order)
 Chop off the top of the pole to match the appropriate yoke geometry.
 
virtual void CreateLogicalVolumes (const G4String &name, G4Colour *colour, G4Material *outerMaterial)
 
virtual void CreateLogicalVolumesCoil (const G4String &name)
 
virtual void CreateEndPiece (const G4String &name)
 
virtual void PlaceComponents (const G4String &name, G4int order)
 Place the poles and yoke in the container volume.
 
virtual void PlaceComponentsCoils (const G4String &name, G4int order)
 If we're building coils, place two coils for each pole.
 
void TestCoilFractions (G4double &coilWidthFraction, G4double &coilHeightFraction)
 
void DipoleCommonPreConstruction (const G4String &name, G4double angleIn, G4double angleOut, G4double length, G4double &horizontalWidth, G4Material *&material, G4double &vhRatio)
 
void DipoleCalculations (G4bool hStyle, G4bool buildVertically, const BDSBeamPipe *beamPipe, G4double length, G4double horizontalWidth, G4double angleIn, G4double angleOut, G4double yokeThicknessFraction, G4double vhRatio, G4double coilWidthFraction, G4double coilHeightFraction, G4double &cShapeOuterEdge, G4double &poleHalfGap, G4double &poleWidth, G4double &poleHeight, G4double &yokeWidth, G4double &yokeHalfHeight, G4double &yokeThickness, G4double &yokeOverHang, G4double &coilWidth, G4double &coilHeightIn, G4double &coilToYokeGap, G4double &coilToPoleGap, G4double &sLength, G4double &containerSLength, G4double &intersectionRadius)
 
std::vector< G4ThreeVector > CalculateCoilDisplacements (G4double poleHalfWidthIn, G4double poleHalfGapIn, G4double coilWidthIn, G4double coilHeightIn, G4double cDY, G4double &coilDY)
 
BDSMagnetOuterCreateDipoleC (const G4String &name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe, G4bool buildVertically)
 
BDSMagnetOuterCreateDipoleH (const G4String &name, G4double length, const BDSBeamPipe *beamPipe, G4double containerLength, const BDSMagnetOuterInfo *recipe, G4bool buildVertically)
 Routine to construct an H shaped dipole magnet and can optionally be built vertically.
 
BDSMagnetOuterDipoleCommonConstruction (const G4String &name, G4double horizontalWidth, G4bool buildEndPiece, G4double coilWidth, G4double length, G4double containerLength, G4double sLength, G4double angleIn, G4double angleOut, G4Colour *colour, G4Material *material, std::vector< G4ThreeVector > &coilDisps, G4bool buildVertically, BDSExtent &ext, G4double poleHalfWidth, G4double poleHalfGap, G4double cDY, G4double coilDY, G4double intersectionRadius)
 
- 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.
 
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 inherited from BDSMagnetOuterFactoryPolesFacetCommon
G4double polyStartAngle
 Start angle for polyhedra.
 
G4double poleIntersectionStartAngle
 Start angle for pole intersection.
 
- Protected Attributes inherited from BDSMagnetOuterFactoryPolesBase
const G4double poleFraction
 
const G4double poleAngularFraction
 Fraction of 2pi/Npoles that the pole will occupy - always < 1.
 
const G4double poleTipFraction
 
const G4double poleAnnulusFraction
 
const G4double bendHeightFraction
 
const G4double poleStopFactor
 
G4double yokeStartRadius
 Start radius of yoke geometry from magnet cetnre.
 
G4double yokeFinishRadius
 Finish radius of yoke geometry from magnet centre - less than horizontalWidth.
 
G4double magnetContainerRadius
 Radius of the container solid for the outer geometry.
 
G4bool buildPole
 Whether or not to build poles (and therefore coils).
 
G4double poleStartRadius
 Start radius of the pole from magnet centre.
 
G4double poleFinishRadius
 Finish radius of the pole from magnet centre.
 
G4double poleSquareWidth
 Full width of pole in constant width section.
 
G4double poleSquareStartRadius
 Radius from magnet centre that constant width section starts.
 
G4double segmentAngle
 2PI / # of poles - angle per segment allocated for each pole.
 
G4double poleAngle
 The angle allowed for the pole to occupy - less than segmentAngle.
 
G4ThreeVector poleTranslation
 Offste of pole for placement from magnet centre.
 
G4double coilHeight
 Height along y for coil for coil beside 1 upgright pole aligned with y axis.
 
G4double coilCentreRadius
 Radius from magnet centre that the centre of the coils exist at.
 
G4double endPieceLength
 Length of the coil end piece along what will be curvilinear S.
 
G4double endPieceInnerR
 Inner radius for end piece container.
 
G4double endPieceOuterR
 Outer radius for end piece container.
 
G4VSolid * poleIntersectionSolid
 Solid used to chop off pole.
 
G4VSolid * coilLeftSolid
 Left coil solid for one pole built upright along y axis.
 
G4VSolid * coilRightSolid
 Right coil solid.
 
G4VSolid * endPieceContainerSolid
 End piece container solid.
 
G4LogicalVolume * coilLeftLV
 Logical volume for left coil.
 
G4LogicalVolume * coilRightLV
 Logical volume for right coil.
 
G4LogicalVolume * endPieceCoilLV
 Logical volume for end piece single coil piece.
 
G4LogicalVolume * endPieceContainerLV
 Logical volume for end piece container.
 
BDSSimpleComponentendPiece
 Fully constructed end piece.
 
std::vector< G4TwoVector > leftPoints
 Vector of 2D points for left coil.
 
std::vector< G4TwoVector > rightPoints
 Vector of 2D points for right coil.
 
std::vector< G4TwoVector > endPiecePoints
 Vector of 2D points for end piece looking from above down z.
 
BDSMagnetOuterFactoryBasecylindrical
 Default factory to fall back to.
 
- Protected Attributes inherited from BDSMagnetOuterFactoryBase
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
 
BDSGeometryComponentmagnetContainer
 
G4ThreeVector inputFaceNormal
 
G4ThreeVector outputFaceNormal
 
G4bool sensitiveOuter
 Cache of global constants variable.
 
- 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.
 
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.
 

Detailed Description

Factory class for outer volume of magnets.

Produces magnets with 2N-poles around the beampipe with a faceted yoke - the yoke is perpendiular to the pole direction where the pole joins the yoke.

Most magnets are 2N poles, but sector- and r-bends as well as muon spoilers, and h/v kickers are unique.

Author
Laurie Nevay

Definition at line 40 of file BDSMagnetOuterFactoryPolesFacet.hh.

Constructor & Destructor Documentation

◆ BDSMagnetOuterFactoryPolesFacet()

BDSMagnetOuterFactoryPolesFacet::BDSMagnetOuterFactoryPolesFacet ( )

Definition at line 21 of file BDSMagnetOuterFactoryPolesFacet.cc.

◆ ~BDSMagnetOuterFactoryPolesFacet()

virtual BDSMagnetOuterFactoryPolesFacet::~BDSMagnetOuterFactoryPolesFacet ( )
inlinevirtual

Definition at line 44 of file BDSMagnetOuterFactoryPolesFacet.hh.


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