1 #ifndef _EULERIAN4C_VERTICAL_GEOMETRY_H
2 #define _EULERIAN4C_VERTICAL_GEOMETRY_H
6 #include "axe_rotation.h"
7 #include "HKLException.h"
9 namespace hkl
{ namespace twoC
{ namespace vertical
{ class Geometry
; } } }
10 namespace hkl
{ namespace kappa4C
{ namespace vertical
{ class Geometry
; } } }
11 namespace hkl
{ namespace eulerian6C
{ class Geometry
; } }
12 namespace hkl
{ namespace kappa6C
{ class Geometry
; } }
16 namespace eulerian4C
{
20 class Geometry
: public hkl::Geometry
{
22 hkl::axe::Rotation
* _omega
;
24 hkl::axe::Rotation
* _chi
;
26 hkl::axe::Rotation
* _phi
;
28 hkl::axe::Rotation
* _tth
;
33 * @brief Default constructor
38 * @brief Another constructor.
39 * @param omega the first angle value.
40 * @param chi the second angle value.
41 * @param phi the third angle value.
42 * @param tth the fourth angle value.
44 Geometry(double omega
, double chi
, double phi
, double tth
);
49 * @brief Copy Constructor.
51 Geometry(const Geometry
& geometry
);
54 * @brief Get the _omega Axe.
55 * @return A pointer on the _omega Axe.
57 hkl::axe::Rotation
* omega();
60 * @brief Get the _chi Axe.
61 * @return A pointer on the _chi Axe.
63 hkl::axe::Rotation
* chi();
66 * @brief Get the _phi Axe.
67 * @return A pointer on the _phi Axe.
69 hkl::axe::Rotation
* phi();
72 * @brief Get the _tth Axe.
73 * @return A pointer on the _tth Axe.
75 hkl::axe::Rotation
* tth();
78 * @brief Get the _omega Axe.
79 * @return A pointer on the _omega Axe.
81 const hkl::axe::Rotation
* omega() const;
84 * @brief Get the _chi Axe.
85 * @return A pointer on the _chi Axe.
87 const hkl::axe::Rotation
* chi() const;
90 * @brief Get the _phi Axe.
91 * @return A pointer on the _phi Axe.
93 const hkl::axe::Rotation
* phi() const;
96 * @brief Get the _tth Axe.
97 * @return A pointer on the _tth Axe.
99 const hkl::axe::Rotation
* tth() const;
102 * @brief Set the angles of the eulerian4CD::Vertical geometry.
103 * @param omega The value of the "omega" Axe.
104 * @param chi The value of the "chi" Axe.
105 * @param phi The value of the "phi" Axe.
106 * @param tth The value of the "tth" Axe.
108 void set_angles(double omega
, double chi
, double phi
, double tth
);
111 * @brief Set the angles of the eulerian4CD::Vertical geometry.
112 * @param omega The value of the "omega" Axe.
113 * @param chi The value of the "chi" Axe.
114 * @param phi The value of the "phi" Axe.
115 * @param tth The value of the "tth" Axe.
117 void set_angles_consign(double omega
, double chi
, double phi
, double tth
);
120 * @brief Set an eulerian4C::Vertical Geometry from another Geometry.
121 * @param geometry The hkl::twoC::vertical::Geometry.
122 * @param strict false or true if we must not care of the strictness of the conversion.
123 * @throw HKLException
125 void setFromGeometry(const hkl::twoC::vertical::Geometry
& geometry
, bool strict
) throw(hkl::HKLException
);
128 * @brief Set an eulerian4C::Vertical Geometry from another Geometry.
129 * @param geometry The hkl::kappa4C::vertical::Geometry.
130 * @param strict false or true if we must not care of the strictness of the conversion.
131 * @throw HKLException
133 void setFromGeometry(const hkl::kappa4C::vertical::Geometry
& geometry
, bool strict
) throw(hkl::HKLException
);
136 * @brief Set an eulerian4C::Vertical Geometry from another Geometry.
137 * @param geometry The hkl::eulerian6C::Geometry.
138 * @param strict false or true if we must not care of the strictness of the conversion.
139 * @throw HKLException
141 void setFromGeometry(const hkl::eulerian6C::Geometry
& geometry
, bool strict
) throw(hkl::HKLException
);
144 * @brief Set an eulerian4C::Vertical Geometry from another Geometry.
145 * @param geometry The hkl::kappa6C::Geometry.
146 * @param strict false or true if we must not care of the strictness of the conversion.
147 * @throw HKLException
149 void setFromGeometry(const hkl::kappa6C::Geometry
& geometry
, bool strict
) throw(hkl::HKLException
);
153 } // namespace hkl::eulerian4C::vertical
155 } // namespace hkl::eulerian4C