|
BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
Interface for BDSIM electro-magnetic fields that may or may not be local. More...
#include <BDSFieldEM.hh>


Public Member Functions | |
| BDSFieldEM () | |
| BDSFieldEM (G4Transform3D transformIn) | |
| virtual std::pair< G4ThreeVector, G4ThreeVector > | GetField (const G4ThreeVector &position, const G4double t=0) const =0 |
| virtual G4bool | TimeVarying () const |
| virtual void | GetFieldValue (const G4double point[4], G4double *field) const |
| virtual std::pair< G4ThreeVector, G4ThreeVector > | GetFieldTransformed (const G4ThreeVector &position, const G4double t) const |
| Get the field value after applying transform for local offset. | |
| virtual void | SetTransform (const G4Transform3D &transformIn) |
| virtual G4bool | DoesFieldChangeEnergy () const |
| Required overload by Geant4. | |
| void | SetModulator (BDSModulator *modulatorIn) |
| Set the optional modulator. | |
| G4bool | FiniteStrength () const |
| Accessor. | |
Protected Attributes | |
| G4bool | finiteStrength |
| Flag to cache whether finite nor not. | |
| G4Transform3D | transform |
| Transform to apply for the field relative to the local coordinates of the geometry. | |
| G4bool | transformIsNotIdentity |
| Cache of whether to use transform at all. | |
| BDSModulator * | modulator |
| Optional modulator;. | |
Private Attributes | |
| G4Transform3D | inverseTransform |
| The complimentary transform used to initially rotate the point of query. | |
Interface for BDSIM electro-magnetic fields that may or may not be local.
Defines abstract interface for all derived electro-magnetic fields. More common to use G4ThreeVectors than arrays so provides common functionality.
Definition at line 39 of file BDSFieldEM.hh.
| BDSFieldEM::BDSFieldEM | ( | ) |
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 BDSFieldEM.cc.
|
explicit |
Definition at line 35 of file BDSFieldEM.cc.
|
inlinevirtual |
Definition at line 48 of file BDSFieldEM.hh.
|
inlinevirtual |
Required overload by Geant4.
Reimplemented in BDSFieldEMGlobal, and BDSFieldEMGlobalPlacement.
Definition at line 78 of file BDSFieldEM.hh.
|
inline |
|
pure virtual |
Get the field - local coordinates. First G4ThreeVector is B field, second is E Field x,y,z respectively.
Implemented in BDSFieldEMZero, BDSFieldEMGlobal, BDSFieldEMGlobalPlacement, BDSFieldEMMuonCooler, BDSFieldEMRFCavity, BDSFieldGaborLens, BDSFieldEMInterpolated1D, BDSFieldEMInterpolated2D, BDSFieldEMInterpolated3D, BDSFieldEMInterpolated4D, and BDSFieldEMVectorSum.
Referenced by BDSFieldEMMuonCooler::GetField(), and GetFieldTransformed().

|
virtual |
Get the field value after applying transform for local offset.
Reimplemented in BDSFieldEMGlobal, and BDSFieldEMGlobalPlacement.
Definition at line 43 of file BDSFieldEM.cc.
References BDSModulator::Factor(), finiteStrength, GetField(), modulator, transform, and transformIsNotIdentity.
Referenced by BDSFieldEMGlobal::GetField(), BDSFieldEMGlobalPlacement::GetField(), and GetFieldValue().


|
virtual |
Implement interface to this class's GetField to fulfill G4ElectroMagneticField inheritance and allow a BDSFieldEM 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.
Definition at line 75 of file BDSFieldEM.cc.
References GetFieldTransformed().

|
inline |
Set the optional modulator.
Definition at line 81 of file BDSFieldEM.hh.
References modulator.
Referenced by BDSFieldFactory::CreateFieldEM().

|
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.
Definition at line 87 of file BDSFieldEM.cc.
References inverseTransform, transform, and transformIsNotIdentity.
Referenced by BDSFieldFactory::CreateFieldEM().

|
inlinevirtual |
Each derived class should override this if needs be. Used to warn about time modulation with a time-varying field.
Reimplemented in BDSFieldEMInterpolated, and BDSFieldEMRFCavity.
Definition at line 57 of file BDSFieldEM.hh.
Referenced by BDSFieldFactory::CreateFieldEM().

|
protected |
Flag to cache whether finite nor not.
Definition at line 87 of file BDSFieldEM.hh.
Referenced by FiniteStrength(), GetFieldTransformed(), BDSFieldEMGlobal::GetFieldTransformed(), and BDSFieldEMGlobalPlacement::GetFieldTransformed().
|
private |
The complimentary transform used to initially rotate the point of query.
Definition at line 97 of file BDSFieldEM.hh.
Referenced by SetTransform().
|
protected |
Optional modulator;.
Definition at line 93 of file BDSFieldEM.hh.
Referenced by GetFieldTransformed(), and SetModulator().
|
protected |
Transform to apply for the field relative to the local coordinates of the geometry.
Definition at line 90 of file BDSFieldEM.hh.
Referenced by GetFieldTransformed(), and SetTransform().
|
protected |
Cache of whether to use transform at all.
Definition at line 92 of file BDSFieldEM.hh.
Referenced by GetFieldTransformed(), and SetTransform().