21#include "BDSIntegratorCavityFringe.hh"
23#include "BDSUtilities.hh"
26#include "G4Mag_EqRhs.hh"
27#include "G4PhysicalConstants.hh"
28#include "G4SystemOfUnits.hh"
30BDSIntegratorCavityFringe::BDSIntegratorCavityFringe(
BDSMagnetStrength const* strength,
33 G4double maximumRadiusIn):
35 phase((*strength)[
"phase"]),
36 efield((*strength)[
"efield"]),
37 isentrance((*strength)[
"isentrance"]),
40 G4int acceleratingFieldDirectionFactor = BDS::Sign(brho);
41 efield /= acceleratingFieldDirectionFactor;
42 rmat11 = (*strength)[
"rmat11"];
43 rmat21 = (*strength)[
"rmat21"];
44 rmat22 = (*strength)[
"rmat22"];
45 rmat33 = (*strength)[
"rmat33"];
46 rmat43 = (*strength)[
"rmat43"];
47 rmat44 = (*strength)[
"rmat44"];
50void BDSIntegratorCavityFringe::Stepper(
const G4double yIn[],
57 G4double charge =
eq->
FCof()/(eplus*c_light);
58 G4double gammaPrime = charge*efield*std::cos(phase) * CLHEP::m;
64 if (!(G4bool)isentrance)
73 BDSIntegratorRMatrixThin::Stepper(yIn,0,h,yOut,yErr);
BDSMagUsualEqRhs * eq
BDSIM's eqRhs class to give access to particle properties.
Integrator that just moves the particle parallel to the s axis.
Override G4Mag_UsualEqRhs, provides BDSIM integrators access to particle attributes.
G4double TotalEnergy(const G4double y[])
Calculate total particle energy.
G4double FCof() const
Accessor to variable for normalising to charge.
Efficient storage of magnet strengths.
G4bool IsFinite(G4double value, G4double tolerance=std::numeric_limits< double >::epsilon())