50 "The \"MULTIPOLETCURVEDCONSTRADIUS\" element defines a curved combined function multipole magnet of constant curvature.") {
52 (
"TP",
"Transverse Profile derivatives in m^(-k)");
54 (
"LFRINGE",
"The length of the left end field in m");
56 (
"RFRINGE",
"The length of the right end field in m");
58 (
"HAPERT",
"The aperture width in m");
60 (
"VAPERT",
"The aperture height in m");
62 (
"ANGLE",
"The azimuthal angle of the magnet in ring (rad)");
64 (
"EANGLE",
"The entrance angle (rad)");
67 "Number of terms used in each field component");
70 "Number of terms used in polynomial expansions");
73 "Rotation angle about its axis for skew elements (rad)");
76 "Distance between centre of magnet and entrance in m");
113 std::ostringstream ss;
115 std::string orderString = ss.str();
116 std::string attrName =
"TP" + orderString;
153 const std::vector<double> transProfile =
155 std::size_t transSize = transProfile.size();
156 if (transSize == 0) {
175 for(std::size_t comp = 0; comp < transSize; comp++) {
virtual ElementBase * removeAlignWrapper()
Remove align wrapper.
double getEntranceAngle() const
Interface for basic beam line object.
std::vector< double > getFringeLength() const
virtual void fillRegisteredAttributes(const ElementBase &, ValueFlag)
Fill in all registered attributes.
bool setFringeField(const double &s0, const double &lambda_left, const double &lambda_right)
ValueFlag
Switch for value desired on ATTLIST command.
void setAperture(const double &vertAp, const double &horizAp)
A simple arc in the XZ plane.
virtual ElementBase * removeWrappers()
Return the design element.
virtual void fillRegisteredAttributes(const ElementBase &, ValueFlag)
std::size_t getMaxXOrder() const
virtual void setElementLength(double length)
Set design length.
virtual void setBendAngle(const double &angle) override
std::vector< Attribute > itsAttr
The object attributes (see Attribute.hh).
void setMaxXOrder(const std::size_t &maxXOrder)
std::size_t getTransMaxOrder() const
void setTransProfile(const std::size_t &n, const double &Bn)
PlanarArcGeometry & getGeometry() override
double getRotation() const
OpalMultipoleTCurvedConstRadius()
virtual ElementBase * makeWrappers()
Allow errors.
void setTransMaxOrder(const std::size_t &transMaxOrder)
void setEntranceAngle(const double &entranceAngle)
virtual ~OpalMultipoleTCurvedConstRadius()
Base class for all beam line elements.
std::vector< double > getRealArray(const Attribute &attr)
Get array value.
void setLength(const double &length)
void setElement(ElementBase *)
Assign new CLASSIC element.
void registerOwnership() const
void setBoundingBoxLength(const double &boundingBoxLength)
virtual double getBendAngle() const override
virtual void update()
Update the embedded CLASSIC element.
virtual void updateUnknown(ElementBase *)
Transmit the ``unknown'' (not known to OPAL) attributes to CLASSIC.
ElementBase * getElement() const
Return the embedded CLASSIC element.
std::size_t getMaxOrder() const
Attribute makeRealArray(const std::string &name, const std::string &help)
Create real array attribute.
void print(std::ostream &os) const
Print the object.
void setRotation(const double &rot)
double getBoundingBoxLength() const
double getReal(const Attribute &attr)
Return real value.
virtual void setMaxOrder(const std::size_t &maxOrder) override
Attribute makeReal(const std::string &name, const std::string &help)
Make real attribute.
static AttCell * registerRealAttribute(const std::string &name)
Register a ``real'' element attribute.
std::vector< double > getAperture() const
virtual OpalMultipoleTCurvedConstRadius * clone(const std::string &name)
virtual void print(std::ostream &) const
Print the object.
virtual void setReal(double)
Store the value.
double getTransProfile(const std::size_t &n) const