20#include "BDSIntegratorCavityFringe.hh"
22#include "BDSUtilities.hh"
25#include "G4Mag_EqRhs.hh"
26#include "G4PhysicalConstants.hh"
27#include "G4SystemOfUnits.hh"
29BDSIntegratorCavityFringe::BDSIntegratorCavityFringe(
BDSMagnetStrength const* strength,
32 G4double maximumRadiusIn):
34 phase((*strength)[
"phase"]),
35 efield((*strength)[
"efield"]),
36 isentrance((*strength)[
"isentrance"]),
39 G4int acceleratingFieldDirectionFactor = BDS::Sign(brho);
40 efield /= acceleratingFieldDirectionFactor;
41 rmat11 = (*strength)[
"rmat11"];
42 rmat21 = (*strength)[
"rmat21"];
43 rmat22 = (*strength)[
"rmat22"];
44 rmat33 = (*strength)[
"rmat33"];
45 rmat43 = (*strength)[
"rmat43"];
46 rmat44 = (*strength)[
"rmat44"];
49void BDSIntegratorCavityFringe::Stepper(
const G4double yIn[],
56 G4double charge =
eq->
FCof()/(eplus*c_light);
57 G4double gammaPrime = charge*efield*std::cos(phase) * CLHEP::m;
63 if (!(G4bool)isentrance)
72 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())