OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
AlignWrapper.cpp
Go to the documentation of this file.
1 // ------------------------------------------------------------------------
2 // $RCSfile: AlignWrapper.cpp,v $
3 // ------------------------------------------------------------------------
4 // $Revision: 1.1.1.1 $
5 // ------------------------------------------------------------------------
6 // Copyright: see Copyright.readme
7 // ------------------------------------------------------------------------
8 //
9 // Class: AlignWrapper
10 //
11 // ------------------------------------------------------------------------
12 // Class category: AbsBeamline
13 // ------------------------------------------------------------------------
14 //
15 // $Date: 2000/03/27 09:32:31 $
16 // $Author: fci $
17 //
18 // ------------------------------------------------------------------------
19 
22 
23 
24 // Class AlignWrapper
25 // ------------------------------------------------------------------------
26 
27 
28 void AlignWrapper::accept(BeamlineVisitor &visitor) const {
29  visitor.visitAlignWrapper(*this);
30 }
31 
32 
34  return new AlignWrapper(*this);
35 }
36 
37 
39  if(isSharable()) {
40  return this;
41  } else {
42  AlignWrapper *wrap = new AlignWrapper(*this);
44  return wrap;
45  }
46 }
47 
48 
50  shareFlag = true;
52 }
53 
54 
56  if(itsOffset.isIdentity()) {
57  return itsOffset;
58  } else {
60  return frame.inverse() * itsOffset * frame;
61  }
62 }
63 
64 
66  if(itsOffset.isIdentity()) {
67  return itsOffset;
68  } else {
69  Euclid3D frame = itsElement->getExitFrame();
70  return frame * Inverse(itsOffset) * Inverse(frame);
71  }
72 }
73 
74 
76  return &*itsElement;
77 }
78 
79 
81  itsElement = elem;
82 }
83 
84 
86  return itsElement->getGeometry();
87 }
88 
89 
91  return itsElement->getGeometry();
92 }
93 
94 
95 ElementBase::ElementBase::ElementType AlignWrapper::getType() const {
96  return itsElement->getType();
97 }
98 
99 
101  return itsOffset;
102 }
103 
104 
106  return this;
107 }
108 
109 
113  return this;
114 }
115 
116 
118  return &*itsElement;
119 }
120 
121 
123  return &*itsElement;
124 }
125 
126 
129 }
130 
131 
134 }
135 
136 
138  return itsElement->removeWrappers();
139 }
140 
141 
143  return itsElement->removeWrappers();
144 }
145 
146 
148  ElementBase(rhs), itsElement(rhs.itsElement), itsOffset(rhs.itsOffset) {
149  shareFlag = false;
150 }
151 
152 
154 {}
155 
156 
158  ElementBase(elem->getName()), itsElement(elem), itsOffset() {
159  shareFlag = false;
160 }
virtual ElementBase * makeFieldWrapper() override
Allow field errors.
virtual ElementBase * copyStructure() override
Make structural copy.
virtual ElementBase * getElement() const
Return the contained element.
virtual ElementBase * removeWrappers() override
Return the design element.
virtual ~AlignWrapper()
Euclid3D & offset() const
Return the offset.
Interface for basic beam line object.
Definition: ElementBase.h:128
virtual BGeometryBase & getGeometry()=0
Get geometry.
Euclid3D inverse() const
Inverse.
Definition: Euclid3D.cpp:121
virtual void setName(const std::string &name)
Set element name.
virtual ElementBase * removeWrappers()
Return the design element.
Define the position of a misaligned element.
Definition: AlignWrapper.h:39
virtual BGeometryBase & getGeometry() override
Get geometry.
virtual Euclid3D getEntranceTransform() const
Get entrance patch.
virtual ElementBase::ElementBase::ElementType getType() const override
Get element type std::string.
virtual const std::string & getName() const
Get element name.
Definition: ElementBase.cpp:95
virtual ElementBase * removeFieldWrapper()
Remove field wrapper.
virtual ElementType getType() const =0
Get element type std::string.
Euclid3D Inverse(const Euclid3D &t)
Euclidean inverse.
Definition: Euclid3D.h:204
virtual void visitAlignWrapper(const AlignWrapper &)=0
Apply the algorithm to an align wrapper.
virtual void makeSharable()
Set sharable flag.
void setElement(ElementBase *)
Replace the contained element.
Abstract base class for accelerator geometry classes.
Definition: Geometry.h:43
virtual Euclid3D getExitTransform() const
Get exit patch.
virtual void makeSharable() override
Set sharable flag.
virtual Euclid3D getEntranceFrame() const
Get transform.
Definition: ElementBase.h:543
virtual ElementBase * makeAlignWrapper() override
Disallow misalignment of an already misaligned object.
virtual Euclid3D getExitFrame() const
Get transform.
Definition: ElementBase.h:547
Displacement and rotation in space.
Definition: Euclid3D.h:68
bool isIdentity() const
Test for identity.
Definition: Euclid3D.h:233
Euclid3D itsOffset
Definition: AlignWrapper.h:158
virtual ElementBase * copyStructure()
Make a structural copy.
bool shareFlag
Definition: ElementBase.h:464
Pointer< ElementBase > itsElement
Definition: AlignWrapper.h:151
virtual void accept(BeamlineVisitor &) const override
Apply BeamlineVisitor.
virtual ElementBase * removeFieldWrapper() override
Remove field wrapper.
bool isSharable() const
Test if the element can be shared.
Definition: ElementBase.h:559
Abstract algorithm.
virtual ElementBase * removeAlignWrapper() override
Remove AlignWrapper.
virtual ElementBase * makeFieldWrapper()
Allow field errors.
virtual AlignWrapper * clone() const override
Return clone.