* add the SampleList and SampleFactory to bouml
[hkl.git] / include / hkl / pseudoaxeengine_kappa4C.h
blob11563ed26f354b4145f5c580d6486e5de960a9d3
1 #ifndef _PSEUDOAXEENGINE_KAPPA4C_H_
2 #define _PSEUDOAXEENGINE_KAPPA4C_H_
4 #include "pseudoaxeengine.h"
5 #include "pseudoaxeengine_twoC.h"
6 #include "pseudoaxeengine_eulerian4C.h"
7 #include "geometry_kappa4C.h"
9 using namespace std;
11 namespace hkl
13 namespace pseudoAxeEngine
15 namespace kappa4C
17 namespace vertical
20 /**
21 * @brief The kappa 4-circle diffractometer Omega pseudoAxe.
23 class Eulerians : public PseudoAxeEngineTemp<geometry::kappa4C::Vertical>
25 public:
27 Eulerians(geometry::kappa4C::Vertical &); //!< Default constructor.
29 virtual ~Eulerians(void); //!< Default destructor.
31 void initialize(void) throw (HKLException);
33 void update(void) throw (HKLException);
35 void set(void) throw (HKLException);
37 private:
38 double _alpha; //!< The alpha value.
39 Axe * _komega; //!< the komega Axe.
40 Axe * _kappa; //!< the kappa Axe.
41 Axe * _kphi; //!< the kphi Axe.
42 Parameter * _solution; //!< Switch between the two possible convert-solution.
44 Range _omega_r; //!< The read part of the omega PseudoAxe.
45 Range _omega_w; //!< The write part of the omega PseudoAxe.
46 Range _chi_r; //!< The read part of the chi PseudoAxe.
47 Range _chi_w; //!< The write part of the chi PseudoAxe.
48 Range _phi_r; //!< The read part of the phi PseudoAxe.
49 Range _phi_w; //!< The write part of the phi PseudoAxe.
51 PseudoAxe * _omega; //!< The omega PseudoAxe.
52 PseudoAxe * _chi; //!< The chi PseudoAxe.
53 PseudoAxe * _phi; //!< The phi PseudoAxe.
56 namespace twoC
59 typedef DerivedPseudoAxeEngine<pseudoAxeEngine::twoC::vertical::Th2th, geometry::kappa4C::Vertical> Th2th; //!< DerivedPseudoAxe from the twoC pseudoAxes.
60 typedef DerivedPseudoAxeEngine<pseudoAxeEngine::twoC::vertical::Q2th, geometry::kappa4C::Vertical> Q2th; //!< DerivedPseudoAxe from the twoC pseudoAxes.
61 typedef DerivedPseudoAxeEngine<pseudoAxeEngine::twoC::vertical::Q, geometry::kappa4C::Vertical> Q; //!< DerivedPseudoAxe from the twoC pseudoAxes.
63 } // namespace twoC
65 namespace eulerian4C
68 typedef DerivedPseudoAxeEngine<pseudoAxeEngine::eulerian4C::vertical::Psi, geometry::kappa4C::Vertical> Psi; //!< DerivedPseudoAxe from the eulerian4C pseudoAxes.
70 } // namespace eulerian4C
71 } // namespace vertical
72 } // namespace kappa4C
73 } // namespace pseudoAxeEngine
74 } // namespace hkl
76 #endif // _PSEUDOMULYIAXEENGINE_EULERIAN4C_H_