30#include "gsl/gsl_sf_pow_int.h"
34 planarArcGeometry_m(1.0, 1.0) {
46 double alpha = std::atan(R[2] / (R[0] + radius));
48 R[0] = R[2] / std::sin(alpha) - radius;
49 R[2] = radius * alpha;
59 B[0] = Bx * std::cos(theta) - Bs * std::sin(theta);
60 B[2] = Bx * std::sin(theta) + Bs * std::cos(theta);
79 double ds = radius * std::sin(theta);
80 double dx = radius * (1 - std::cos(theta));
97 for (std::size_t j = 0;
101 for (std::size_t i = 0;
107 func += (
recursion_m.at(n).evaluatePolynomial(x / rho, i, j)
109 / gsl_sf_pow_int(rho, 2 *
static_cast<int>(n) -
static_cast<int>(i) -
110 2 *
static_cast<int>(j));
113 func *= gsl_sf_pow_int(-1.0,
static_cast<int>(n));
std::size_t getTransMaxOrder() const
size_t getMaxFOrder() const
double getFringeDeriv(const std::size_t &n, const double &s)
double getTransDeriv(const std::size_t &n, const double &x) const
size_t getMaxXOrder() const
double getBendAngle() const
std::vector< polynomial::RecursionRelation > recursion_m
void setMaxOrder(size_t orderZ, size_t orderX) override
Vector_t localCartesianToOpalCartesian(const Vector_t &r) override
double getFn(size_t n, double x, double s) override
double getScaleFactor(double x, double s) override
PlanarArcGeometry planarArcGeometry_m
MultipoleTCurvedConstRadius(MultipoleT *element)
void initialise() override
void transformBField(Vector_t &, const Vector_t &) override
void transformCoords(Vector_t &) override
void resizeX(const std::size_t &xDerivatives)
void truncate(std::size_t highestXorder)
void setCurvature(double)
Set curvature.
virtual void setElementLength(double)
Set length.