BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
Class that provides the magnetic field due to a cylinder of current. More...
#include <BDSFieldMagSolenoidSheet.hh>
Public Member Functions | |
BDSFieldMagSolenoidSheet (BDSMagnetStrength const *strength, G4double radiusIn) | |
BDSFieldMagSolenoidSheet (G4double fullLength, G4double sheetRadius, G4double B0) | |
More reasonable constructor for the internal parameterisation. | |
virtual G4ThreeVector | GetField (const G4ThreeVector &position, const G4double t=0) const |
Calculate the field value. | |
![]() | |
BDSFieldMag () | |
BDSFieldMag (G4Transform3D transformIn) | |
virtual 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 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) |
void | SetModulator (BDSModulator *modulatorIn) |
Set the optional modulator. | |
G4bool | FiniteStrength () const |
Accessor. | |
Static Public Member Functions | |
static G4double | CEL (G4double kc, G4double p, G4double c, G4double s, G4int nIterationLimit=1000) |
Generalised Complete Elliptical Integral. | |
Private Member Functions | |
G4double | OnAxisBz (G4double zp, G4double zm) const |
Private Attributes | |
G4double | a |
G4double | halfLength |
G4double | B0 |
G4double | spatialLimit |
G4double | normalisation |
Additional Inherited Members | |
![]() | |
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;. | |
Class that provides the magnetic field due to a cylinder of current.
This follows the parameterisation and uses the algorithm for the generalised complete elliptical integral as described in:
Cylindrical Magnets and ideal Solenoids, N. Derby and S. Olbert, American Journal of Physics 78, 229 (2010); https://doi.org/10.1119/1.3256157 and also at https://arxiv.org/abs/0909.3880.
The field is calculated in cylindrical coordinates. A complete description is in the manual.
Definition at line 44 of file BDSFieldMagSolenoidSheet.hh.
BDSFieldMagSolenoidSheet::BDSFieldMagSolenoidSheet | ( | BDSMagnetStrength const * | strength, |
G4double | radiusIn | ||
) |
This constructor uses the "field" and "length" parameters from the BDSMagnetStrength instance and forwards to the next constructor.
Definition at line 33 of file BDSFieldMagSolenoidSheet.cc.
BDSFieldMagSolenoidSheet::BDSFieldMagSolenoidSheet | ( | G4double | fullLength, |
G4double | sheetRadius, | ||
G4double | B0 | ||
) |
More reasonable constructor for the internal parameterisation.
Definition at line 38 of file BDSFieldMagSolenoidSheet.cc.
References BDSFieldMag::finiteStrength, BDS::IsFinite(), and OnAxisBz().
|
inlinevirtual |
Definition at line 57 of file BDSFieldMagSolenoidSheet.hh.
|
static |
Generalised Complete Elliptical Integral.
Definition at line 119 of file BDSFieldMagSolenoidSheet.cc.
References BDS::IsFinite().
Referenced by GetField().
|
virtual |
Calculate the field value.
Implements BDSFieldMag.
Definition at line 56 of file BDSFieldMagSolenoidSheet.cc.
References CEL(), and OnAxisBz().
|
private |
Approximation for rho=0 Bz field. Brho=0 by definition. zp and zm are z+halfLength and z-halfLength. Returns Bz.
Definition at line 177 of file BDSFieldMagSolenoidSheet.cc.
Referenced by BDSFieldMagSolenoidSheet(), and GetField().
|
private |
Definition at line 75 of file BDSFieldMagSolenoidSheet.hh.
|
private |
Definition at line 77 of file BDSFieldMagSolenoidSheet.hh.
|
private |
Definition at line 76 of file BDSFieldMagSolenoidSheet.hh.
|
private |
Definition at line 79 of file BDSFieldMagSolenoidSheet.hh.
|
private |
Definition at line 78 of file BDSFieldMagSolenoidSheet.hh.