ACCELERATOR PHYSICS GROUP

class ElementBase : public RCObject

(Return to index)

Interface for basic beam line object.

This class defines the abstract interface for all objects which can be contained in a beam line. ElementBase forms the base class for two distinct but related hierarchies of objects:

  1. A set of concrete accelerator element classes, which compose the standard accelerator component library (SACL).
  2. A second hierarchy which parallels the SACL, acting as container or wrapper-like objects. These latter classes are used to construct beam-lines composed of referenced ``design'' components, together with beam-line position dependent extrinsic state (e. g. errors). These wrapper objects are by default unique.
Also derived from ElementBase there is a class AlignWrapper, which can be used to store misalignment errors or deliberate displacements. Any element can have only one AlignWrapper and one FieldWrapper. To be processed in the correct order, the AlignWrapper must be the outermost.
AlignWrapper --> FieldWrapper --> Element
To ensure this structure, wrapper elements cannot be constructed directly, one should rather call one of:
makeAlignWrapper()
make an align wrapper.
makeFieldWrapper()
make a field wrapper.
makeWrappers()
make both wrappers.
An existing wrapper can be removed by
removeAlignWrapper()
remove align wrapper.
removeFieldWrapper()
remove field wrapper.
Instances of the concrete classes for single elements are by default sharable. Instances of beam lines, wrappers and integrators are by default non-sharable, but they may be made sharable by a call to makeSharable().

An ElementBase object can return two lengths, which may be different:

  1. The arc length along the geometry.
  2. The design length, often measured along a straight line.
Class ElementBase contains a map of name versus value for user-defined attributes (see file AbsBeamline/AttributeSet.hh). The map is primarily intended for processes that require algorithm-specific data in the accelerator model.

The class ElementBase has as base class the abstract class RCObject. Virtual derivation is used to make multiple inheritance possible for derived concrete classes. ElementBase implements three copy modes:

  1. Copy by reference: Call RCObject::addReference() and use this.
  2. Copy structure: use ElementBase::copyStructure(). During copying of the structure, all sharable items are re-used, while all non-sharable ones are cloned.
  3. Copy by cloning: use ElementBase::clone(). This returns a full deep copy.

Type: Abstract
Superclasses: public RCObject
Include file: ./AbsBeamline/ElementBase.hh

Inheritance

Synopsis (including inherited members):

Documentation:


Documentation generated by fci on Mon Feb 7 11:41:37 2000