19#ifndef BDSINTEGRATORDIPOLEFRINGEBASE_H
20#define BDSINTEGRATORDIPOLEFRINGEBASE_H
22#include "BDSAuxiliaryNavigator.hh"
23#include "BDSIntegratorDipoleRodrigues2.hh"
24#include "BDSIntegratorDipoleQuadrupole.hh"
25#include "BDSIntegratorMultipoleThin.hh"
54 const G4double& tiltIn = 0);
64 virtual void Stepper(
const G4double yIn[6],
65 const G4double dydx[6],
74 const G4double dydx[6],
79 const G4double& momScaling);
85 void OneStep(
const G4ThreeVector& posIn,
86 const G4ThreeVector& momUIn,
87 G4ThreeVector& posOut,
88 G4ThreeVector& momOut,
89 const G4double& bendingRadius)
const;
94 G4double yMultipoleOut[6],
100 inline G4double GetFringeCorr() {
return fringeCorr;}
121 const G4bool finiteTilt;
Extra G4Navigator to get coordinate transforms.
Integrator that ignores the field and uses the analytical solution for a dipole kick.
G4double secondFringeCorr
Second fringe field correction term.
void OneStep(const G4ThreeVector &posIn, const G4ThreeVector &momUIn, G4ThreeVector &posOut, G4ThreeVector &momOut, const G4double &bendingRadius) const
static G4double thinElementLength
G4double rho
Nominal magnet bending radius.
G4double backupStepperMomLimit
G4double polefaceAngle
Poleface rotation angle.
G4double polefaceCurvature
Poleface curvature.
G4bool isEntrance
store if fringe is entrance or exit
BDSIntegratorDipoleFringe(BDSIntegratorDipoleFringe &)=delete
Assignment and copy constructor not implemented nor used.
G4double fringeCorr
Fringe field correction term.
const G4double fieldArcLength
Cache of the field arc length.
void BaseStepper(const G4double yIn[6], const G4double dydx[6], const G4double &h, G4double yOut[6], G4double yErr[6], const G4double &fcof, const G4double &momScaling)
BDSIntegratorDipoleFringe & operator=(const BDSIntegratorDipoleFringe &)=delete
Assignment and copy constructor not implemented nor used.
virtual void Stepper(const G4double yIn[6], const G4double dydx[6], const G4double h, G4double yOut[6], G4double yErr[6])
The stepper for integration. Calls base class stepper.
BDSIntegratorDipoleFringe()=delete
Private default constructor to enforce use of supplied constructor.
G4ThreeVector unitField
Cache of the unit field direction.
const G4double fieldAngle
Cache of the field angle.
G4double GetPolefaceAngle()
void MultipoleStep(const G4double yIn[6], G4double yMultipoleOut[6], const G4double &h)
Exact helix through pure dipole field.
G4double minimumRadiusOfCurvature
Integrator that ignores the field and uses the analytical solution to a multipole.
Efficient storage of magnet strengths.
Return either G4Tubs or G4CutTubs depending on flat face.
G4double SecondFringeFieldCorrection(BDSMagnetStrength const *strength, G4bool entranceOrExit)
Function to calculate the value of the second fringe field correction term.
G4double FringeFieldCorrection(BDSMagnetStrength const *strength, G4bool entranceOrExit)
Function to calculate the value of the fringe field correction term.