25 std::string(
"The \"VerticalFFAMagnet\" element defines a vertical FFA ") +
26 std::string(
"magnet, which has a field that increases in the vertical ") +
27 std::string(
"direction while maintaining similar orbits.");
33 (
"B0",
"The nominal dipole field of the magnet at zero height [T].");
36 (
"FIELD_INDEX",
"Exponent term in the field index [m^(-1)].");
40 "The full width of the magnet. Particles moving more than WIDTH/2 horizontally, "
41 "in either direction, are out of the aperture.");
44 (
"MAX_HORIZONTAL_POWER",
45 "The maximum power in horizontal coordinate that will be considered in the field expansion.");
48 (
"END_LENGTH",
"The end length of the FFA fringe field [m].");
51 (
"CENTRE_LENGTH",
"The centre length of the FFA (i.e. length of the flat top) [m].");
55 "Determines the length of the bounding box. Magnet is situated "
56 "symmetrically in the bounding box. [m]");
60 "Height of the magnet above z=0. Particles moving upwards more than "
61 "HEIGHT_POS_EXTENT are out of the aperture [m].");
65 "Height of the magnet below z=0. Particles moving downwards more than "
66 "HEIGHT_NEG_EXTENT are out of the aperture [m].");
108 endField->
setX0(centre_length / 2.);
Attribute makeReal(const std::string &name, const std::string &help)
Make real attribute.
void setPositiveVerticalExtent(double positiveExtent)
void setFieldIndex(double index)
void setEndField(endfieldmodel::EndFieldModel *endField)
void setLambda(double lambda)
static const std::string docstring_m
void setElement(ElementBase *)
Assign new CLASSIC element.
endfieldmodel::EndFieldModel * getEndField() const
void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField)
ElementBase * getElement() const
Return the embedded CLASSIC element.
virtual OpalVerticalFFAMagnet * clone(const std::string &name)
void setWidth(double width)
std::vector< Attribute > itsAttr
The object attributes.
void setBBLength(double bbLength)
virtual ~OpalVerticalFFAMagnet()
double getReal(const Attribute &attr)
Return real value.
void setNegativeVerticalExtent(double negativeExtent)
void setMaxOrder(size_t maxOrder)
PETE_TUTree< FnFloor, typename T::PETE_Expr_t > floor(const PETE_Expr< T > &l)
static void setTanhDiffIndices(size_t n)
void registerOwnership() const
item[EANGLE] Entrance edge counterclockwise This enables to obtain skew at each point along the magnet