#include <BDSMagnetOuterFactoryPolesSquare.hh>
Inheritance diagram for BDSMagnetOuterFactoryPolesSquare:
Public Member Functions | |
~BDSMagnetOuterFactoryPolesSquare () | |
singleton pattern | |
Static Public Member Functions | |
static BDSMagnetOuterFactoryPolesSquare * | Instance () |
Private Member Functions | |
BDSMagnetOuterFactoryPolesSquare () | |
Private constructor as singleton - nothing special here - all in parent class. | |
virtual void | CleanUp () |
Empty containers for next use - this class is never deleted so can't rely on scope. | |
virtual void | CreatePoleSolid (G4String name, G4double length, G4int order) |
Create pole for magnet of order N where npoles = Nx2. | |
virtual void | CreateYokeAndContainerSolid (G4String name, G4double length, G4int order) |
Create yoke that connects poles and container to put them in. | |
virtual void | CreateLogicalVolumes (G4String name, G4double length, G4int order, G4Material *outerMaterial) |
Build the logical volumes from the solids assigning materials and colours and cuts. | |
virtual void | PlaceComponents (G4String name, G4int order) |
Place the poles and yoke in the container volume. | |
virtual BDSGeometryComponent * | CommonConstructor (G4String name, G4double length, BDSBeamPipe *beamPipe, G4int order, G4double outerDiameter, G4Material *outerMaterial) |
Private Attributes | |
std::vector< G4RotationMatrix * > | poleRotations |
std::vector< G4VSolid * > | poleSolids |
std::vector< G4LogicalVolume * > | poleLVs |
Static Private Attributes | |
static BDSMagnetOuterFactoryPolesSquare * | _instance = 0 |
Most magnets are 2N poles, but sector- and r-bends as well as muon spoilers, and h/v kickers are unique.
Definition at line 25 of file BDSMagnetOuterFactoryPolesSquare.hh.
BDSGeometryComponent * BDSMagnetOuterFactoryPolesSquare::CommonConstructor | ( | G4String | name, | |
G4double | length, | |||
BDSBeamPipe * | beamPipe, | |||
G4int | order, | |||
G4double | outerDiameter, | |||
G4Material * | outerMaterial | |||
) | [private, virtual] |
Common construction tasks to all methods - assemble yoke and poles in container have to override this as we have multiple pole logical volumes and they need to be registered
Reimplemented from BDSMagnetOuterFactoryPolesBase.
Definition at line 266 of file BDSMagnetOuterFactoryPolesSquare.cc.
References BDSMagnetOuterFactoryPolesBase::CommonConstructor(), poleLVs, BDSGeometryComponent::RegisterLogicalVolume(), BDSGeometryComponent::RegisterLogicalVolumes(), BDSGeometryComponent::RegisterSensitiveVolume(), BDSGeometryComponent::RegisterSensitiveVolumes(), and BDSMagnetOuterFactoryBase::yokeLV.
Here is the call graph for this function:
std::vector<G4RotationMatrix*> BDSMagnetOuterFactoryPolesSquare::poleRotations [private] |
Poles have to be different lengths to fit in a square - have to be unique therefore keep a vector of them
Definition at line 70 of file BDSMagnetOuterFactoryPolesSquare.hh.
Referenced by CleanUp(), and CreatePoleSolid().