43 bool backBeam,
bool backTrack):
45 itsReference(reference)
55 int order = field.
order();
61 Series ky = - field.
skew(order) / double(order);
64 Series kxt = x * kx - y * ky;
65 Series kyt = x * ky + y * kx;
67 kx = kxt + field.
normal(order) / double(order);
68 ky = kyt - field.
skew(order) / double(order);
71 Series As = x * kx - y * ky;
83 int order = field.
order();
103 for(
int i = order; --i >= 1;) {
104 Ae = Ae * x + field.
normal(i);
105 Ao = Ao * x - field.
skew(i);
111 Ae = + (Ae * hx1).integral(
X);
125 if(++k > order)
break;
129 Ao = Ao.derivative(
X);
132 if(++k > order)
break;
int getMaxOrder() const
Get maximum order.
double normal(int) const
Get component.
virtual ~AbstractMapper()
double skew(int) const
Get component.
FTps< double, 6 > buildSBendVectorPotential(const BMultipoleField &, double h)
Construct the vector potential for an SBend.
An abstract sequence of beam line components.
FTps derivative(int var) const
Partial derivative.
The magnetic field of a multipole.
FTps< double, 6 > buildMultipoleVectorPotential(const BMultipoleField &)
Construct the vector potential for a Multipole.
void setTruncOrder(int order)
Set truncation order.
static FTps makeVariable(int var)
Make variable.
int order() const
Return order.