BDSMagnetOuterFactoryBase Class Reference

Abstract base class for magnet outer volume factories. More...

#include <BDSMagnetOuterFactoryBase.hh>

Inheritance diagram for BDSMagnetOuterFactoryBase:

Inheritance graph
[legend]

Public Member Functions

virtual BDSGeometryComponentCreateSectorBend (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double boxSize, G4double angle, G4Material *outerMaterial=NULL)=0
 sector bend outer volume
virtual BDSGeometryComponentCreateRectangularBend (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double boxSize, G4double angle, G4Material *outerMaterial=NULL)=0
 rectangular bend outer volume
virtual BDSGeometryComponentCreateQuadrupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double boxSize, G4Material *outerMaterial=NULL)=0
 quadrupole outer volume
virtual BDSGeometryComponentCreateSextupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double boxSize, G4Material *outerMaterial=NULL)=0
 sextupole outer volume
virtual BDSGeometryComponentCreateOctupole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double boxSize, G4Material *outerMaterial=NULL)=0
 octupole outer volume
virtual BDSGeometryComponentCreateDecapole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double boxSize, G4Material *outerMaterial=NULL)=0
 decapole outer volume
virtual BDSGeometryComponentCreateSolenoid (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double boxSize, G4Material *outerMaterial=NULL)=0
 solenoid outer volume
virtual BDSGeometryComponentCreateMultipole (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double boxSize, G4Material *outerMaterial=NULL)=0
 general multipole outer volume - could be any 2N order multipole
virtual BDSGeometryComponentCreateRfCavity (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double boxSize, G4Material *outerMaterial=NULL)=0
 RF cavity outer volume.
virtual BDSGeometryComponentCreateMuSpoiler (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double boxSize, G4Material *outerMaterial=NULL)=0
 muon spoiler outer volume
virtual BDSGeometryComponentCreateKicker (G4String name, G4double length, BDSBeamPipe *beamPipe, G4double boxSize, G4bool vertical=true, G4Material *outerMaterial=NULL)=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.

Protected Member Functions

 BDSMagnetOuterFactoryBase ()

Protected Attributes

G4double lengthSafety
G4bool checkOverlaps
G4double nSegmentsPerCircle
G4double maxStepFactor
G4VSolid * poleSolid
G4VSolid * yokeSolid
 solid for an individual pole that will be placed multiple times
G4VSolid * containerSolid
 solid for outer part that connects all poles
G4LogicalVolume * poleLV
G4LogicalVolume * yokeLV
G4LogicalVolume * containerLV

Detailed Description

Abstract base class for magnet outer volume factories.

Abstract base class that defines the interface of each factory to build any type of outer logical volume required.

Uses Geant4 default units by default, ie mm, rad (not metres)

Strictly the naming should contain 'Outer' at the end to distinguish that the function doesn't create the whole magnet, however this is implied by the factory name and omitting it will reduce the name length.

Each factory should implement a method for every type of magnet - ie for each class that inherits BDSMagnet.

Author:
Laurie Nevay <laurie.nevay@rhul.ac.uk>

Definition at line 28 of file BDSMagnetOuterFactoryBase.hh.


Member Function Documentation

virtual BDSGeometryComponent* BDSMagnetOuterFactoryBase::CreateSectorBend ( G4String  name,
G4double  length,
BDSBeamPipe beamPipe,
G4double  boxSize,
G4double  angle,
G4Material *  outerMaterial = NULL 
) [pure virtual]

sector bend outer volume

NOTE each derived class is expected to be a singleton but this can't be specified here as it'd refer to the abstract base class - must be implemented in each derived class. 'In' in argument variables is used to distinguish between that and possible internal member variables with the same name - avoiding 'itsVariable'.

Implemented in BDSMagnetOuterFactoryCylindrical, BDSMagnetOuterFactoryLHC, BDSMagnetOuterFactoryNone, and BDSMagnetOuterFactoryPolesBase.

Referenced by BDSMagnetOuterFactory::CreateSectorBend().

Here is the caller graph for this function:


The documentation for this class was generated from the following files:
Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7