OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
RBendGeometry.h
Go to the documentation of this file.
1#ifndef OPALX_RBendGeometry_HH
2#define OPALX_RBendGeometry_HH
3
4// ------------------------------------------------------------------------
5// $RCSfile: RBendGeometry.h,v $
6// ------------------------------------------------------------------------
7// $Revision: 1.1.1.1 $
8// ------------------------------------------------------------------------
9// Copyright: see Copyright.readme
10// ------------------------------------------------------------------------
11//
12// Class: RBendGeometry
13//
14// ------------------------------------------------------------------------
15// Class category: BeamlineGeometry
16// ------------------------------------------------------------------------
17//
18// $Date: 2000/03/27 09:32:34 $
19// $Author: fci $
20//
21// ------------------------------------------------------------------------
22
24
25// Class RBendGeometry
26// ------------------------------------------------------------------------
28// It is a Geometry wrapper which adds two rotations by alpha/2 (local
29// y-axis rotations) to the entrance and exit planes of a StraightGeometry.
30// The y-rotations become part of the global geometry definition.
31// {P}
32// NOTE: in general the transformations returned include the effects of
33// the y-rotations when the required point specifies the entrance or exit
34// point. Requests for transformations within the geometry (i.e. from s1
35// to s2, where s1 and/or s2 are not the entrance or exit planes) do not
36// contain the y-rotations.
37// {P}
38// A RBendGeometry can be seen as an OffsetGeometry, whose global geometry
39// is a PlanarArcGeometry, and whose local geometry is a StraightGeometry.
40
42public:
44 // Construct an RBendGeometry from [b]length[/b] and [b]angle[/b].
45 RBendGeometry(double length, double angle);
46
48 virtual ~RBendGeometry();
50
52 // Return the length measured along a circular arc tangent to the
53 // local s-axis at entrance and exit; an approximation to the actual
54 // design orbit.
55 virtual double getArcLength() const;
56
58 // Return the total bend angle.
59 virtual double getBendAngle() const;
60
62 // Assign the bend angle.
63 void setBendAngle(double angle);
64
66 // Equivalent to getTransform(getEntrance(), getExit()).
67 // Return the transform of the local coordinate system from the
68 // entrance to the exit of the element.
70
72 // Equivalent to getTransform(0.0, getEntrance()).
73 // Return the transform of the local coordinate system from the
74 // origin to the entrance of the element.
76
78 // Equivalent to getTransform(0.0, getExit()).
79 // Return the transform of the local coordinate system from the
80 // origin to the exit of the element.
81 Euclid3D getExitFrame() const;
82
84 // Returns the entrance patch (transformation) which is used to transform
85 // the global geometry to the local geometry at entrance.
87
89 // Returns the entrance patch (transformation) which is used to transform
90 // the local geometry to the global geometry at exit.
91 Euclid3D getExitPatch() const;
92
93private:
94 double half_angle;
95};
96
97#endif // OPALX_RBendGeometry_HH
Displacement and rotation in space.
Definition Euclid3D.h:67
The geometry for a RBend element.
void setBendAngle(double angle)
Set angle.
const RBendGeometry & operator=(const RBendGeometry &)
virtual double getBendAngle() const
Get angle.
Euclid3D getExitFrame() const
Get transform.
virtual double getArcLength() const
Get arc length.
Euclid3D getEntranceFrame() const
Get transform.
Euclid3D getEntrancePatch() const
Get patch.
virtual ~RBendGeometry()
Euclid3D getExitPatch() const
Get patch.
Euclid3D getTotalTransform() const
Get transform.
A geometry representing a straight line.