OPAL (Object Oriented Parallel Accelerator Library)
2021.1.99
OPAL
|
#include <OpalElement.h>
Public Types | |
enum | { TYPE , APERT , LENGTH , ELEMEDGE , WAKEF , PARTICLEMATTERINTERACTION , ORIGIN , ORIENTATION , X , Y , Z , THETA , PHI , PSI , DX , DY , DZ , DTHETA , DPHI , DPSI , OUTFN , COMMON } |
The common attributes for all elements. More... | |
![]() | |
enum | ReferenceType { IS_ENTRY , IS_CENTRE , IS_EXIT } |
Reference for element positioning. More... | |
Public Member Functions | |
virtual | ~OpalElement () |
virtual double | getLength () const |
Return element length. More... | |
const std::string | getTypeName () const |
Return the element's type name. More... | |
std::pair< ElementBase::ApertureType, std::vector< double > > | getApert () const |
const std::string | getWakeF () const |
Return the element's type name. More... | |
const std::string | getParticleMatterInteraction () const |
const std::string | getWMaterial () const |
const std::string | getWakeGeom () const |
std::vector< double > | getWakeParam () const |
const std::string | getWakeConductivity () const |
virtual void | parse (Statement &) |
Parse the element. More... | |
virtual void | print (std::ostream &) const |
Print the object. More... | |
virtual void | update () |
Update the embedded CLASSIC element. More... | |
virtual void | updateUnknown (ElementBase *) |
Transmit the `‘unknown’' (not known to OPAL) attributes to CLASSIC. More... | |
![]() | |
virtual | ~Element () |
virtual bool | canReplaceBy (Object *object) |
Test if replacement is allowed. More... | |
virtual const std::string | getCategory () const |
Return the object category as a string. More... | |
virtual bool | shouldTrace () const |
Trace flag. More... | |
virtual bool | shouldUpdate () const |
Update flag. More... | |
virtual double | getEntrance (ReferenceType) const |
Return arc length from origin to entrance (negative !). More... | |
virtual double | getExit (ReferenceType) const |
Return arc length from origin to exit (positive !). More... | |
virtual void | setShared (bool) |
Set shared flag. More... | |
ElementBase * | getElement () const |
Return the embedded CLASSIC element. More... | |
void | setElement (ElementBase *) |
Assign new CLASSIC element. More... | |
![]() | |
virtual | ~Object () |
virtual Object * | clone (const std::string &name)=0 |
Return a clone. More... | |
void | copyAttributes (const Object &) |
Copy attributes from another object. More... | |
virtual void | execute () |
Execute the command. More... | |
virtual Attribute * | findAttribute (const std::string &name) |
Find an attribute by name. More... | |
virtual const Attribute * | findAttribute (const std::string &name) const |
Find an attribute by name. More... | |
virtual Object * | makeTemplate (const std::string &, TokenStream &, Statement &) |
Macro handler function. More... | |
virtual Object * | makeInstance (const std::string &name, Statement &, const Parser *) |
Macro handler function. More... | |
virtual void | parseShortcut (Statement &, bool eval=true) |
Parser for single-attribute commands. More... | |
virtual void | printValue (std::ostream &) const |
virtual void | printHelp (std::ostream &) const |
Print help. More... | |
virtual void | replace (Object *oldObject, Object *newObject) |
Replace references. More... | |
bool | isBuiltin () const |
True, if [b]this[/b] is a built-in object. More... | |
virtual bool | isShared () const |
Shared flag. More... | |
void | setDirty (bool) |
Set/reset the [b]modified[/b] flag. More... | |
bool | isDirty () const |
True, if the [b]modified[/b] flag is set. More... | |
void | setFlag (bool) |
Flag/unflag this object, e. g. to control output of objects for. More... | |
bool | isFlagged () const |
True, if [b]this[/b] is flagged by setFlag(true). More... | |
const Object * | getBaseObject () const |
Return the object's base type object. More... | |
const std::string & | getOpalName () const |
Return object name. More... | |
Object * | getParent () const |
Return parent pointer. More... | |
bool | isTreeMember (const Object *subTree) const |
Test for tree membership. More... | |
void | setOpalName (const std::string &name) |
Set object name. More... | |
void | setParent (Object *) |
Set parent object. More... | |
void | clear () |
Clear the occurrence counter. More... | |
int | increment () |
Increment and return the occurrence counter. More... | |
int | occurrenceCount () |
Return the occurrence counter. More... | |
void | registerReference (Invalidator *a) |
Register a reference to this object. More... | |
void | unregisterReference (Invalidator *a) |
Unegister a reference to this object. More... | |
void | registerOwnership (const AttributeHandler::OwnerType &itsClass) const |
![]() | |
int | addReference () const |
Increment reference count. More... | |
int | removeReference () const |
Decrement the reference count. More... | |
bool | isShared () const |
Test for sharing. More... | |
Protected Member Functions | |
OpalElement (int size, const char *name, const char *help) | |
Exemplar constructor. More... | |
OpalElement (const std::string &name, OpalElement *parent) | |
Clone constructor. More... | |
void | registerOwnership () const |
![]() | |
Element (int size, const char *name, const char *help) | |
Constructor for exemplars. More... | |
Element (const std::string &name, Element *parent) | |
Constructor for clones. More... | |
![]() | |
Object (int size, const char *name, const char *help) | |
Constructor for exemplars. More... | |
Object (const std::string &name, Object *parent) | |
Constructor for clones. More... | |
![]() | |
RCObject () | |
Default constructor. More... | |
RCObject (const RCObject &) | |
Copy constructor. More... | |
virtual | ~RCObject ()=0 |
RCObject & | operator= (const RCObject &right) |
Static Protected Member Functions | |
static void | printMultipoleStrength (std::ostream &os, int order, int &len, const std::string &sName, const std::string &tName, const Attribute &length, const Attribute &vNorm, const Attribute &vSkew) |
Print multipole components in OPAL-8 format. More... | |
static void | printAttribute (std::ostream &os, const std::string &name, const std::string &image, int &len) |
Print an attribute with a OPAL-8 name (as an expression). More... | |
static void | printAttribute (std::ostream &os, const std::string &name, double value, int &len) |
Print an attribute with a OPAL-8 name (as a constant). More... | |
Private Member Functions | |
OpalElement () | |
void | operator= (const OpalElement &) |
Private Attributes | |
int | itsSize |
Additional Inherited Members | |
![]() | |
static Element * | find (const std::string &name) |
Find named Element. More... | |
![]() | |
std::vector< Attribute > | itsAttr |
The object attributes. More... | |
![]() | |
bool | builtin |
Built-in flag. More... | |
bool | modified |
Dirty flag. More... | |
bool | flagged |
Object flag. More... | |
Definition at line 28 of file OpalElement.h.
anonymous enum |
The common attributes for all elements.
Enumerator | |
---|---|
TYPE | |
APERT | |
LENGTH | |
ELEMEDGE | |
WAKEF | |
PARTICLEMATTERINTERACTION | |
ORIGIN | |
ORIENTATION | |
X | |
Y | |
Z | |
THETA | |
PHI | |
PSI | |
DX | |
DY | |
DZ | |
DTHETA | |
DPHI | |
DPSI | |
OUTFN | |
COMMON |
Definition at line 33 of file OpalElement.h.
|
virtual |
Definition at line 128 of file OpalElement.cpp.
|
protected |
Exemplar constructor.
Definition at line 40 of file OpalElement.cpp.
References AttributeHandler::addAttributeOwner(), APERT, COMMON, DPHI, DPSI, DTHETA, DX, DY, DZ, ELEMEDGE, AttributeHandler::ELEMENT, end(), Object::itsAttr, LENGTH, Attributes::makePredefinedString(), Attributes::makeReal(), Attributes::makeRealArray(), Attributes::makeString(), ORIENTATION, ORIGIN, OUTFN, PARTICLEMATTERINTERACTION, PHI, PSI, THETA, TYPE, WAKEF, X, Y, and Z.
|
protected |
Clone constructor.
Definition at line 123 of file OpalElement.cpp.
|
private |
std::pair< ElementBase::ApertureType, std::vector< double > > OpalElement::getApert | ( | ) | const |
Definition at line 132 of file OpalElement.cpp.
References APERT, ElementBase::CONIC_ELLIPTICAL, ElementBase::CONIC_RECTANGULAR, ElementBase::ELLIPTICAL, Attributes::getString(), Object::itsAttr, and ElementBase::RECTANGULAR.
Referenced by update().
|
virtual |
Return element length.
Implements Element.
Definition at line 285 of file OpalElement.cpp.
References Attributes::getReal(), Object::itsAttr, and LENGTH.
Referenced by OpalMultipole::update().
const std::string OpalElement::getParticleMatterInteraction | ( | ) | const |
Definition at line 303 of file OpalElement.cpp.
References Object::findAttribute(), and Attributes::getString().
const std::string OpalElement::getTypeName | ( | ) | const |
Return the element's type name.
Definition at line 290 of file OpalElement.cpp.
References Object::findAttribute(), and Attributes::getString().
Referenced by Selector::handleElement().
const std::string OpalElement::getWakeConductivity | ( | ) | const |
const std::string OpalElement::getWakeF | ( | ) | const |
Return the element's type name.
Functions to get the wake field parametes
Definition at line 298 of file OpalElement.cpp.
References Object::findAttribute(), and Attributes::getString().
const std::string OpalElement::getWakeGeom | ( | ) | const |
std::vector<double> OpalElement::getWakeParam | ( | ) | const |
const std::string OpalElement::getWMaterial | ( | ) | const |
|
private |
|
virtual |
Parse the element.
Reimplemented from Object.
Definition at line 308 of file OpalElement.cpp.
References Statement::delimiter(), Object::findAttribute(), name, Attribute::parse(), Attribute::parseComponent(), Expressions::parseDelimiter(), Expressions::parseRealConst(), Expressions::parseString(), and Attribute::setDefault().
|
virtual |
Print the object.
Reimplemented from Object.
Reimplemented in OpalMultipoleTStraight, OpalMultipoleTCurvedVarRadius, OpalMultipoleTCurvedConstRadius, OpalMultipoleT, OpalSplineTimeDependence, OpalSextupole, OpalRingDefinition, OpalRBend3D, OpalQuadrupole, OpalPolynomialTimeDependence, OpalOffset::OpalLocalCylindricalOffset, OpalOffset::OpalLocalCartesianOffset, OpalOffset::OpalGlobalCylindricalOffset, OpalOffset::OpalGlobalCartesianOffset, OpalOctupole, OpalMultipole, OpalMarker, and OpalBend.
Definition at line 343 of file OpalElement.cpp.
References endl(), Object::getOpalName(), and Object::getParent().
Referenced by OpalBend::print(), OpalMarker::print(), OpalMultipole::print(), OpalOctupole::print(), OpalOffset::OpalGlobalCartesianOffset::print(), OpalOffset::OpalGlobalCylindricalOffset::print(), OpalOffset::OpalLocalCartesianOffset::print(), OpalOffset::OpalLocalCylindricalOffset::print(), OpalPolynomialTimeDependence::print(), OpalQuadrupole::print(), OpalRBend3D::print(), OpalRingDefinition::print(), OpalSextupole::print(), OpalSplineTimeDependence::print(), OpalMultipoleT::print(), OpalMultipoleTCurvedConstRadius::print(), OpalMultipoleTCurvedVarRadius::print(), and OpalMultipoleTStraight::print().
|
staticprotected |
Print an attribute with a OPAL-8 name (as an expression).
Definition at line 568 of file OpalElement.cpp.
References name.
Referenced by printAttribute(), and printMultipoleStrength().
|
staticprotected |
Print an attribute with a OPAL-8 name (as a constant).
Definition at line 580 of file OpalElement.cpp.
References name, and printAttribute().
|
staticprotected |
Print multipole components in OPAL-8 format.
Definition at line 358 of file OpalElement.cpp.
References atan2(), Attribute::getBase(), Attribute::getImage(), Attributes::getReal(), AttributeBase::isExpression(), Physics::pi, printAttribute(), and sqrt().
|
protected |
Definition at line 588 of file OpalElement.cpp.
References AttributeHandler::addAttributeOwner(), COMMON, AttributeHandler::ELEMENT, end(), Object::getOpalName(), Object::getParent(), Object::itsAttr, itsSize, and name.
Referenced by OpalCavity::OpalCavity(), OpalCCollimator::OpalCCollimator(), OpalCyclotron::OpalCyclotron(), OpalDegrader::OpalDegrader(), OpalDrift::OpalDrift(), OpalECollimator::OpalECollimator(), OpalFlexibleCollimator::OpalFlexibleCollimator(), OpalOffset::OpalGlobalCartesianOffset::OpalGlobalCartesianOffset(), OpalOffset::OpalGlobalCylindricalOffset::OpalGlobalCylindricalOffset(), OpalHKicker::OpalHKicker(), OpalKicker::OpalKicker(), OpalOffset::OpalLocalCartesianOffset::OpalLocalCartesianOffset(), OpalOffset::OpalLocalCylindricalOffset::OpalLocalCylindricalOffset(), OpalMonitor::OpalMonitor(), OpalMultipole::OpalMultipole(), OpalMultipoleT::OpalMultipoleT(), OpalMultipoleTCurvedConstRadius::OpalMultipoleTCurvedConstRadius(), OpalMultipoleTCurvedVarRadius::OpalMultipoleTCurvedVarRadius(), OpalMultipoleTStraight::OpalMultipoleTStraight(), OpalOctupole::OpalOctupole(), OpalPepperPot::OpalPepperPot(), OpalPolynomialTimeDependence::OpalPolynomialTimeDependence(), OpalProbe::OpalProbe(), OpalQuadrupole::OpalQuadrupole(), OpalRBend::OpalRBend(), OpalRBend3D::OpalRBend3D(), OpalRCollimator::OpalRCollimator(), OpalRingDefinition::OpalRingDefinition(), OpalSBend::OpalSBend(), OpalSBend3D::OpalSBend3D(), OpalScalingFFAMagnet::OpalScalingFFAMagnet(), OpalSeptum::OpalSeptum(), OpalSextupole::OpalSextupole(), OpalSlit::OpalSlit(), OpalSolenoid::OpalSolenoid(), OpalSource::OpalSource(), OpalSplineTimeDependence::OpalSplineTimeDependence(), OpalStripper::OpalStripper(), OpalTravelingWave::OpalTravelingWave(), OpalUndulator::OpalUndulator(), OpalVacuum::OpalVacuum(), OpalVariableRFCavity::OpalVariableRFCavity(), OpalVariableRFCavityFringeField::OpalVariableRFCavityFringeField(), OpalVerticalFFAMagnet::OpalVerticalFFAMagnet(), and OpalVKicker::OpalVKicker().
|
virtual |
Update the embedded CLASSIC element.
Reimplemented from Object.
Reimplemented in OpalVKicker, OpalVerticalFFAMagnet, OpalVariableRFCavityFringeField, OpalVariableRFCavity, OpalVacuum, OpalUndulator, OpalTravelingWave, OpalStripper, OpalSplineTimeDependence, OpalSource, OpalSolenoid, OpalSlit, OpalSextupole, OpalSeptum, OpalScalingFFAMagnet, OpalSBend3D, OpalSBend, OpalRingDefinition, OpalRCollimator, OpalRBend3D, OpalRBend, OpalQuadrupole, OpalProbe, OpalPolynomialTimeDependence, OpalPepperPot, OpalOffset::OpalLocalCylindricalOffset, OpalOffset::OpalLocalCartesianOffset, OpalOffset::OpalGlobalCylindricalOffset, OpalOffset::OpalGlobalCartesianOffset, OpalOctupole, OpalMultipoleTStraight, OpalMultipoleTCurvedVarRadius, OpalMultipoleTCurvedConstRadius, OpalMultipoleT, OpalMultipole, OpalMonitor, OpalMarker, OpalKicker, OpalHKicker, OpalFlexibleCollimator, OpalECollimator, OpalDrift, OpalDegrader, OpalCyclotron, OpalCCollimator, and OpalCavity.
Definition at line 467 of file OpalElement.cpp.
References Quaternion::conjugate(), cos(), DPHI, DPSI, DTHETA, DX, DY, DZ, ELEMEDGE, ElementBase::fixPosition(), getApert(), Element::getElement(), Attributes::getReal(), Attributes::getRealArray(), Object::itsAttr, ORIENTATION, ORIGIN, PHI, PSI, ElementBase::setAperture(), ElementBase::setCSTrafoGlobal2Local(), ElementBase::setElementPosition(), ElementBase::setMisalignment(), ElementBase::setRotationAboutZ(), sin(), THETA, X, Y, and Z.
Referenced by OpalCavity::update(), OpalCCollimator::update(), OpalDegrader::update(), OpalDrift::update(), OpalECollimator::update(), OpalFlexibleCollimator::update(), OpalHKicker::update(), OpalKicker::update(), OpalMonitor::update(), OpalMultipole::update(), OpalMultipoleT::update(), OpalMultipoleTCurvedConstRadius::update(), OpalMultipoleTCurvedVarRadius::update(), OpalMultipoleTStraight::update(), OpalOctupole::update(), OpalPepperPot::update(), OpalProbe::update(), OpalQuadrupole::update(), OpalRBend::update(), OpalRBend3D::update(), OpalRCollimator::update(), OpalSBend::update(), OpalSeptum::update(), OpalSextupole::update(), OpalSlit::update(), OpalSolenoid::update(), OpalSource::update(), OpalStripper::update(), OpalTravelingWave::update(), OpalUndulator::update(), OpalVacuum::update(), OpalVariableRFCavity::update(), OpalVariableRFCavityFringeField::update(), and OpalVKicker::update().
|
virtual |
Transmit the `‘unknown’' (not known to OPAL) attributes to CLASSIC.
Definition at line 559 of file OpalElement.cpp.
References Attribute::getName(), Attributes::getReal(), Object::itsAttr, itsSize, and ElementBase::setAttribute().
Referenced by OpalCavity::update(), OpalCCollimator::update(), OpalCyclotron::update(), OpalDegrader::update(), OpalDrift::update(), OpalECollimator::update(), OpalFlexibleCollimator::update(), OpalHKicker::update(), OpalKicker::update(), OpalMarker::update(), OpalMonitor::update(), OpalMultipole::update(), OpalMultipoleT::update(), OpalMultipoleTCurvedConstRadius::update(), OpalMultipoleTCurvedVarRadius::update(), OpalMultipoleTStraight::update(), OpalOctupole::update(), OpalPepperPot::update(), OpalProbe::update(), OpalQuadrupole::update(), OpalRBend::update(), OpalRBend3D::update(), OpalRCollimator::update(), OpalSBend::update(), OpalSeptum::update(), OpalSextupole::update(), OpalSlit::update(), OpalSolenoid::update(), OpalSource::update(), OpalStripper::update(), OpalTravelingWave::update(), OpalUndulator::update(), OpalVacuum::update(), and OpalVKicker::update().
|
private |
Definition at line 138 of file OpalElement.h.
Referenced by registerOwnership(), and updateUnknown().