1 #ifndef MAD_IdealMapper_HH
2 #define MAD_IdealMapper_HH
26 template <
class T,
int M,
int N>
class FMatrix;
79 bool revBeam,
bool revTrack);
121 (
double length,
double refLength,
const BMultipoleField &field,
double scale);
125 (
double length,
double refLength,
double h,
150 void applyLinearMap(
double length,
double kx,
double ks,
double ky);
153 static void makeFocus(
double k,
double L,
double &
c,
double &s);
156 #endif // MAD_IdealMapper_HH
virtual void visitPatch(const Patch &pat)
Apply the algorithm to a patch.
virtual void visitCorrectorWrapper(const CorrectorWrapper &)
Apply the algorithm to an corrector wrapper..
virtual void visitSeparator(const Separator &)
Apply the algorithm to a Separator.
virtual void visitCorrector(const Corrector &)
Apply the algorithm to a Corrector.
A templated representation for matrices.
virtual void setMatrix(const FMatrix< double, 6, 6 > &)
Reset the linear part of the accumulated map for restart.
virtual void applyThinSBend(const BMultipoleField &field, double scale, double h)
Thin SBend kick.
Interface for electrostatic separator.
Build a map using the linear map around the design orbit for each element.
Define the position of a misaligned element.
virtual void visitMultipoleWrapper(const MultipoleWrapper &)
Apply the algorithm to an multipole wrapper..
Interface for general corrector.
Representation of a perturbed multipole.
Build a map using a linear map for each element.
void applyLinearMap(double length, double kx, double ks, double ky)
Apply linear map, defined by the linear coefficients.
virtual void applyTransform(const Euclid3D &, double refLength)
Apply transform.
void operator=(const IdealMapper &)
constexpr double c
The velocity of light in m/s.
Displacement and rotation in space.
virtual void visitRBendWrapper(const RBendWrapper &)
Apply the algorithm to an RBend wrapper..
virtual void applyThinMultipole(const BMultipoleField &field, double factor)
Thin multipole kick.
virtual void getMatrix(FMatrix< double, 6, 6 > &) const
Return the linear part of the accumulated map.
Representation of a perturbed sector bend.
An abstract sequence of beam line components.
Representation for a perturbed closed orbit corrector.
virtual void applyMultipoleBody(double length, double refLength, const BMultipoleField &field, double scale)
The magnetic field of a multipole.
virtual void visitAlignWrapper(const AlignWrapper &)
Apply the algorithm to an offset beamline object wrapper.
virtual void applySBendBody(double length, double refLength, double h, const BMultipoleField &field, double scale)
virtual void visitSBendWrapper(const SBendWrapper &)
Apply the algorithm to an SBend wrapper..
Interface for a geometric patch.
Representation of a perturbed rectangular bend.
static void makeFocus(double k, double L, double &c, double &s)
Helper function for finding first-order coefficients.