BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
Interface for static magnetic fields that may or may not be local. More...
#include <BDSFieldMag.hh>
Public Member Functions | |
BDSFieldMag () | |
BDSFieldMag (G4Transform3D transformIn) | |
virtual G4ThreeVector | GetField (const G4ThreeVector &position, const G4double t=0) const =0 |
virtual void | GetFieldValue (const G4double point[4], G4double *field) const |
virtual G4ThreeVector | GetFieldTransformed (const G4ThreeVector &position, const G4double t) const |
Get the field value after applying transform for local offset. More... | |
virtual void | SetTransform (const G4Transform3D &transformIn) |
G4bool | FiniteStrength () const |
Accessor. More... | |
Protected Attributes | |
G4bool | finiteStrength |
Flag to cache whether finite nor not. More... | |
G4Transform3D | transform |
Transform to apply for the field relative to the local coordinates of the geometry. More... | |
Private Attributes | |
G4Transform3D | inverseTransform |
The complimentary transform used to initially rotate the point of query. More... | |
Interface for static magnetic fields that may or may not be local.
Defines abstract interface for all derived magnetic fields. More common to use G4ThreeVectors than arrays so provides common functionality.
Definition at line 36 of file BDSFieldMag.hh.
BDSFieldMag::BDSFieldMag | ( | ) |
Constructor takes transform in, which is inverted and applied to positions before querying the 'pure' derived field object. This allows local offset, translations, reflections and scalings to be applied if required - ie for misalignment from the local coordinates.
Definition at line 27 of file BDSFieldMag.cc.
|
explicit |
Definition at line 33 of file BDSFieldMag.cc.
|
inlinevirtual |
Definition at line 45 of file BDSFieldMag.hh.
|
inline |
Accessor.
Definition at line 71 of file BDSFieldMag.hh.
References finiteStrength.
Referenced by BDSFieldMagSkew::BDSFieldMagSkew().
|
pure virtual |
Get the magnetic field vector in local coordinates. The derived class does not need to apply the transform.
Implemented in BDSFieldMagZero, BDSFieldMagInterpolated4D, BDSFieldMagDecapole, BDSFieldMagDetectorSolenoid, BDSFieldMagDipole, BDSFieldMagDipoleQuadrupole, BDSFieldMagGlobal, BDSFieldMagGlobalPlacement, BDSFieldMagInterpolated1D, BDSFieldMagInterpolated2D, BDSFieldMagInterpolated2Layer, BDSFieldMagInterpolated3D, BDSFieldMagMultipole, BDSFieldMagMuonSpoiler, BDSFieldMagOctupole, BDSFieldMagQuadrupole, BDSFieldMagSextupole, BDSFieldMagSkew, BDSFieldMagSolenoidSheet, and BDSFieldMagUndulator.
Referenced by BDSFieldMagGradient::GetBy(), BDSFieldMagSkew::GetField(), and GetFieldTransformed().
|
virtual |
Get the field value after applying transform for local offset.
Reimplemented in BDSFieldMagGlobal, and BDSFieldMagGlobalPlacement.
Definition at line 39 of file BDSFieldMag.cc.
References finiteStrength, GetField(), inverseTransform, and transform.
Referenced by BDSFieldMagDipoleQuadrupole::GetField(), BDSFieldMagGlobal::GetField(), BDSFieldMagGlobalPlacement::GetField(), BDSFieldMagInterpolated2Layer::GetField(), and GetFieldValue().
|
virtual |
Implement interface to this class's GetField to fulfill G4MagneticField inheritance and allow a BDSFieldMag instance to be passed around in the field factory even if it's not wrapped in a BDSFieldGlobal instance and is in fact in local coordinates. This uses GetFieldTransformed.
Definition at line 55 of file BDSFieldMag.cc.
References GetFieldTransformed().
|
virtual |
Set the transform applied before evaluating the field. This can be used to account for any difference between the field coordinate system and the coordinate system of the geometry. Ie an offset aperture. This is a public interface to allow the transform to be set after construction so that derived classes don't need modified constructors.
Reimplemented in BDSFieldMagDipoleQuadrupole.
Definition at line 70 of file BDSFieldMag.cc.
References inverseTransform, and transform.
Referenced by BDSFieldFactory::CreateFieldMagRaw(), and BDSFieldMagDipoleQuadrupole::SetTransform().
|
protected |
Flag to cache whether finite nor not.
Definition at line 74 of file BDSFieldMag.hh.
Referenced by BDSFieldMagDipole::BDSFieldMagDipole(), BDSFieldMagSkew::BDSFieldMagSkew(), BDSFieldMagSolenoidSheet::BDSFieldMagSolenoidSheet(), FiniteStrength(), BDSFieldMagDipoleOuter::GetField(), BDSFieldMagDipoleOuterOld::GetField(), GetFieldTransformed(), BDSFieldMagGlobal::GetFieldTransformed(), and BDSFieldMagGlobalPlacement::GetFieldTransformed().
|
private |
The complimentary transform used to initially rotate the point of query.
Definition at line 81 of file BDSFieldMag.hh.
Referenced by GetFieldTransformed(), and SetTransform().
|
protected |
Transform to apply for the field relative to the local coordinates of the geometry.
Definition at line 77 of file BDSFieldMag.hh.
Referenced by BDSFieldMagInterpolated::Extent(), GetFieldTransformed(), and SetTransform().