23#include "BDSAcceleratorComponent.hh"
24#include "BDSFieldInfo.hh"
25#include "BDSMagnetType.hh"
Abstract class that represents a component of an accelerator.
const G4String name
Const protected member variable that may not be changed by derived classes.
const G4String type
Const protected member variable that may not be changed by derived classes.
G4double angle
Protected member variable that can be modified by derived classes.
BDSBeamPipeInfo * beamPipeInfo
Optional beam pipe recipe that is written out to the survey if it exists.
Holder class for all information required to describe a beam pipe model.
A holder class for a piece of beam pipe geometry.
All info required to build complete field of any type.
BDSMagnetStrength * MagnetStrength() const
Accessor.
Holder struct of all information required to create the outer geometry of a magnet.
An object for both the returned magnet outer body but also a tight fitting container for the whole ma...
Efficient storage of magnet strengths.
Abstract base class that implements features common to all magnets.
virtual void SetOutputFaceNormal(const G4ThreeVector &output)
Update face normal and also to beam pipe and magnet outer.
G4Transform3D beamPipePlacementTransform
BDSFieldInfo * vacuumFieldInfo
Field information for vacuum field.
G4bool isThin
Boolean to store if the element is thin - will have no geometry constructed.
G4double horizontalWidth
For outer volume construction.
BDSMagnetType magnetType
Magnet type.
BDSMagnetOuterInfo * magnetOuterInfo
Model information for the outer volume construction.
virtual void SetFieldUsePlacementWorldTransform()
Override function as we have different field recipe objects.
BDSBeamPipe * beampipe
The constructed beampipe.
virtual void BuildBeampipe()
virtual void BuildVacuumField()
Construct the field for the vacuum and attach it.
virtual void BuildContainerLogicalVolume()
BDSFieldInfo * outerFieldInfo
Field information for outer magnetic field (optional)
BDSMagnet()=delete
Private default constructor to force the use of the supplied one.
virtual G4bool HasAField() const
Override for a magnet - test on either field definition.
BDSMagnetOuter * outer
The assembled outer magnet geometry.
virtual G4String Material() const
Accessor to outer material if it exists.
virtual void BuildOuter()
static G4String DetermineScalingKey(BDSMagnetType typeIn)
G4ThreeVector magnetOuterOffset
void SetOuterField(BDSFieldInfo *outerFieldInfoIn)
@ { Delete existing field info and replace.
virtual void SetInputFaceNormal(const G4ThreeVector &input)
Update face normal and also to beam pipe and magnet outer.
BDSMagnet(BDSMagnet &)=delete
Assignment and copy constructor not implemented nor used.
virtual void BuildOuterField()
Construct the magnetic field for the outer magnet geometry.
virtual void PlaceComponents()
BDSMagnet & operator=(const BDSMagnet &)=delete
Assignment and copy constructor not implemented nor used.