diff --git a/.gitignore b/.gitignore index df9e301f..886769ff 100644 --- a/.gitignore +++ b/.gitignore @@ -75,6 +75,7 @@ docs/source/generated # Microsoft VS Code editor .vscode/ .history/ +docs/source/_build/ # PyTest cache .pytest_cache/ diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst index 092c71b0..c08ec4ad 100644 --- a/RELEASE_NOTES.rst +++ b/RELEASE_NOTES.rst @@ -32,6 +32,7 @@ New Features and/or Enhancements * Export and restore diffractometer configuration as JSON string, YAML string, Python dictionary, or file. * Add ``user.current_diffractometer()`` function. * Add ``axes_r``, ``axes_w``, & ``axes_c`` properties to both ``calc`` & ``engine``. +* Build tables of diffractometer geometry, engines, and modes from *libhkl* API. * Export and reload diffractometer configuration as JSON string, YAML string, or Python dictionary. Fixes diff --git a/docs/make_geometry_tables.py b/docs/make_geometry_tables.py new file mode 100644 index 00000000..7c4e9a7e --- /dev/null +++ b/docs/make_geometry_tables.py @@ -0,0 +1,117 @@ +""" +(Re)create the geometry_tables.rst document. + +Run this manually, as needed:: + + python \ + ./docs/make_geometry_tables.py \ + | tee ./docs/source/geometry_tables.rst + +""" + +import sys + +import pyRestTable + +from hkl import calc + +PAGE_HEAD = f""" +.. this page created by {sys.argv[0]} + +.. _geometry_tables: + +================================= +Tables of Diffractometer Geometry +================================= + +Tables are provided for the different geometries and then, for each +geometry, the calculation engines, pseudo axes required, modes of +operation, and any additional parameters required by the mode. + +Geometries indexed by number of circles +--------------------------------------- + +The different diffractometer geometries are distinguished, primarily, by +the number of axes (circles) and the names of each. This table is +sorted first by the number of circles, and then the geometry name (as +used here in *hklpy*). + +""" + +TABLES_HEAD = """ + +.. _geometry_tables.tables: + +Tables for each geometry +------------------------ + +A table is provided for each diffractometer geometry listing the calculation +engines, pseudo axes required, modes of operation, and any additional parameters +required by the mode. + +* *engine* : Defines the names (and order) of the pseudo axes. +* *pseudo axes* : The engine performs + :meth:`~hkl.diffract.Diffractometer.forward()` (pseudo-to-real) and + :meth:`~hkl.diffract.Diffractometer.inverse()` (real-to-pseudo) + transformations between the real-space axes and the *pseudo* (typically + reciprocal-space) axes. The *engine* defines the *pseudo axes* to be used. +* *mode* : Defines which axes are used for the ``forward()`` computation. +* *axes read* : Axes used in the ``forward()`` computation. +* *axes written* : Axes computed by the ``forward()`` computation. +* *extra parameters* : Any necessary additional parameters. +""" + + +def goniometers(): + for cname in dir(calc): + if cname.startswith("Calc"): + try: + yield getattr(calc, cname)() + except TypeError: + pass + + +def print_summary_table(): + def format_name_list(names): + names = [f"``{k}``" for k in names] + return ", ".join(names) + + db = { + gonio.geometry_name: { + "real_axes": gonio.physical_axis_names, + "cname": gonio.__class__.__name__[4:], # 4 = len("Calc") as in "CalcE4CV" + } + for gonio in goniometers() + } + + def sorter(gname): + return f"{len(db[gname]['real_axes'])}-{gname}" + + table = pyRestTable.Table() + table.addLabel("#circles") + table.addLabel("geometry") + table.addLabel("real_axes") + for gname in sorted(db.keys(), key=sorter): + gname_safe = gname.replace(" ", "_") + entry = db[gname] + real_axes = entry["real_axes"] + table.addRow( + [ + len(real_axes), + f":ref:`{gname} <{gname_safe}_table>`", + format_name_list(real_axes), + ] + ) + print(table) + + +def print_geometry_tables(rst=True): + for gonio in goniometers(): + gonio.geometry_table(rst=rst) + + +if __name__ == "__main__": + print(PAGE_HEAD.lstrip()) + print_summary_table() + print(TABLES_HEAD) + print_geometry_tables(rst=True) diff --git a/docs/source/calc.rst b/docs/source/calc.rst index 15103895..7a1d6355 100644 --- a/docs/source/calc.rst +++ b/docs/source/calc.rst @@ -6,3 +6,4 @@ Module: ``calc`` .. automodule:: hkl.calc :members: + :undoc-members: diff --git a/docs/source/geometry_tables.rst b/docs/source/geometry_tables.rst index d889279d..c4850535 100644 --- a/docs/source/geometry_tables.rst +++ b/docs/source/geometry_tables.rst @@ -1,4 +1,6 @@ -.. geometry_tables: +.. this page created by ./docs/make_geometry_tables.py + +.. _geometry_tables: ================================= Tables of Diffractometer Geometry @@ -20,27 +22,32 @@ the number of axes (circles) and the names of each. This table is sorted first by the number of circles, and then the geometry name (as used here in *hklpy*). -======== ============================================================== ======================================================================== -#circles geometry real_axes -======== ============================================================== ======================================================================== -4 :ref:`E4CH ` ``omega``, ``chi``, ``phi``, ``tth`` -4 :ref:`E4CV ` ``omega``, ``chi``, ``phi``, ``tth`` -4 :ref:`K4CV ` ``komega``, ``kappa``, ``kphi``, ``tth`` -4 :ref:`Petra3_p23_4c ` ``omega_t``, ``mu``, ``gamma``, ``delta`` -4 :ref:`SoleilMars ` ``omega``, ``chi``, ``phi``, ``tth`` -4 :ref:`SoleilSixsMed1p2 ` ``pitch``, ``mu``, ``gamma``, ``delta`` -4 :ref:`Zaxis ` ``mu``, ``omega``, ``delta``, ``gamma`` -5 :ref:`SoleilSixsMed2p2 ` ``beta``, ``mu``, ``omega``, ``gamma``, ``delta`` -5 :ref:`SoleilSixsMed2p3v2 ` ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` -6 :ref:`E6C ` ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` -6 :ref:`K6C ` ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` -6 :ref:`Petra3_p09_eh2 ` ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` -6 :ref:`SoleilNanoscopiumRobot ` ``rz``, ``rs``, ``rx``, ``r``, ``delta``, ``gamma`` -6 :ref:`SoleilSiriusKappa ` ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` -6 :ref:`SoleilSiriusTurret ` ``basepitch``, ``thetah``, ``alphay``, ``alphax``, ``delta``, ``gamma`` -6 :ref:`SoleilSixsMed2p3 ` ``beta``, ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` -7 :ref:`Petra3_p23_6c ` ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` -======== ============================================================== ======================================================================== + +======== ================================================================ ======================================================================= +#circles geometry real_axes +======== ================================================================ ======================================================================= +4 :ref:`E4CH ` ``omega``, ``chi``, ``phi``, ``tth`` +4 :ref:`E4CV ` ``omega``, ``chi``, ``phi``, ``tth`` +4 :ref:`K4CV ` ``komega``, ``kappa``, ``kphi``, ``tth`` +4 :ref:`PETRA3 P23 4C ` ``omega_t``, ``mu``, ``gamma``, ``delta`` +4 :ref:`SOLEIL MARS ` ``omega``, ``chi``, ``phi``, ``tth`` +4 :ref:`SOLEIL SIXS MED1+2 ` ``pitch``, ``mu``, ``gamma``, ``delta`` +4 :ref:`ZAXIS ` ``mu``, ``omega``, ``delta``, ``gamma`` +5 :ref:`SOLEIL SIXS MED2+2 ` ``beta``, ``mu``, ``omega``, ``gamma``, ``delta`` +5 :ref:`SOLEIL SIXS MED2+3 v2 ` ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` +6 :ref:`E6C ` ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` +6 :ref:`K6C ` ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` +6 :ref:`PETRA3 P09 EH2 ` ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` +6 :ref:`SOLEIL NANOSCOPIUM ROBOT ` ``rz``, ``rs``, ``rx``, ``r``, ``delta``, ``gamma`` +6 :ref:`SOLEIL SIRIUS KAPPA ` ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` +6 :ref:`SOLEIL SIRIUS TURRET ` ``basepitch``, ``thetah``, ``alphay``, ``alphax``, ``delta``, ``gamma`` +6 :ref:`SOLEIL SIXS MED2+3 ` ``beta``, ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` +7 :ref:`PETRA3 P23 6C ` ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` +======== ================================================================ ======================================================================= + + + +.. _geometry_tables.tables: Tables for each geometry ------------------------ @@ -49,436 +56,459 @@ Tables for each geometry A table is provided for each diffractometer geometry listing the calculation engines, pseudo axes required, modes of operation, and any additional parameters -required by the :ref:`mode `. The mode defines which axes will be -computed, which will be held constant, and any relationships between axes. +required by the mode. + +* *engine* : Defines the names (and order) of the pseudo axes. +* *pseudo axes* : The engine performs + :meth:`~hkl.diffract.Diffractometer.forward()` (pseudo-to-real) and + :meth:`~hkl.diffract.Diffractometer.inverse()` (real-to-pseudo) + transformations between the real-space axes and the *pseudo* (typically + reciprocal-space) axes. The *engine* defines the *pseudo axes* to be used. +* *mode* : Defines which axes are used for the ``forward()`` computation. +* *axes read* : Axes used in the ``forward()`` computation. +* *axes written* : Axes computed by the ``forward()`` computation. +* *extra parameters* : Any necessary additional parameters. .. index:: E4CH, geometry; E4CH .. _E4CH_table: -Geometry: `E4CH` -++++++++++++++++ - -real axes: ``omega``, ``chi``, ``phi``, ``tth`` - -========= ========================== ================== =============================== -engine pseudo_axes mode parameters -========= ========================== ================== =============================== -hkl ``h``, ``k``, ``l`` bissector -hkl ``h``, ``k``, ``l`` constant_omega -hkl ``h``, ``k``, ``l`` constant_chi -hkl ``h``, ``k``, ``l`` constant_phi -hkl ``h``, ``k``, ``l`` double_diffraction ``h2``, ``k2``, ``l2`` -hkl ``h``, ``k``, ``l`` psi_constant ``h2``, ``k2``, ``l2``, ``psi`` -psi ``psi`` psi ``h2``, ``k2``, ``l2`` -q ``q`` q -incidence ``incidence``, ``azimuth`` incidence ``x``, ``y``, ``z`` -emergence ``emergence``, ``azimuth`` emergence ``x``, ``y``, ``z`` -========= ========================== ================== =============================== +Geometry: ``E4CH`` +++++++++++++++++++ + +* real axes: ``omega``, ``chi``, ``phi``, ``tth`` +* pseudo axes: depends on the engine + +========= ========================== ================== ==================================== ==================================== =============================== +engine pseudo axes mode axes read axes written extra parameters +========= ========================== ================== ==================================== ==================================== =============================== +emergence ``emergence``, ``azimuth`` emergence ``omega``, ``chi``, ``phi``, ``tth`` ``x``, ``y``, ``z`` +hkl ``h``, ``k``, ``l`` bissector ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``phi``, ``tth`` +hkl ``h``, ``k``, ``l`` constant_chi ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``phi``, ``tth`` +hkl ``h``, ``k``, ``l`` constant_omega ``omega``, ``chi``, ``phi``, ``tth`` ``chi``, ``phi``, ``tth`` +hkl ``h``, ``k``, ``l`` constant_phi ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``tth`` +hkl ``h``, ``k``, ``l`` double_diffraction ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``phi``, ``tth`` ``h2``, ``k2``, ``l2`` +hkl ``h``, ``k``, ``l`` psi_constant ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``phi``, ``tth`` ``h2``, ``k2``, ``l2``, ``psi`` +incidence ``incidence``, ``azimuth`` incidence ``omega``, ``chi``, ``phi`` ``x``, ``y``, ``z`` +psi ``psi`` psi ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``phi``, ``tth`` ``h2``, ``k2``, ``l2`` +q ``q`` q ``tth`` ``tth`` +========= ========================== ================== ==================================== ==================================== =============================== .. index:: E4CV, geometry; E4CV .. _E4CV_table: -Geometry: `E4CV` -++++++++++++++++ - -real axes: ``omega``, ``chi``, ``phi``, ``tth`` - -========= ========================== ================== =============================== -engine pseudo_axes mode parameters -========= ========================== ================== =============================== -hkl ``h``, ``k``, ``l`` bissector -hkl ``h``, ``k``, ``l`` constant_omega -hkl ``h``, ``k``, ``l`` constant_chi -hkl ``h``, ``k``, ``l`` constant_phi -hkl ``h``, ``k``, ``l`` double_diffraction ``h2``, ``k2``, ``l2`` -hkl ``h``, ``k``, ``l`` psi_constant ``h2``, ``k2``, ``l2``, ``psi`` -psi ``psi`` psi ``h2``, ``k2``, ``l2`` -q ``q`` q -incidence ``incidence``, ``azimuth`` incidence ``x``, ``y``, ``z`` -========= ========================== ================== =============================== +Geometry: ``E4CV`` +++++++++++++++++++ + +* real axes: ``omega``, ``chi``, ``phi``, ``tth`` +* pseudo axes: depends on the engine + +========= ========================== ================== ==================================== ==================================== =============================== +engine pseudo axes mode axes read axes written extra parameters +========= ========================== ================== ==================================== ==================================== =============================== +emergence ``emergence``, ``azimuth`` emergence ``omega``, ``chi``, ``phi``, ``tth`` ``x``, ``y``, ``z`` +hkl ``h``, ``k``, ``l`` bissector ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``phi``, ``tth`` +hkl ``h``, ``k``, ``l`` constant_chi ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``phi``, ``tth`` +hkl ``h``, ``k``, ``l`` constant_omega ``omega``, ``chi``, ``phi``, ``tth`` ``chi``, ``phi``, ``tth`` +hkl ``h``, ``k``, ``l`` constant_phi ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``tth`` +hkl ``h``, ``k``, ``l`` double_diffraction ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``phi``, ``tth`` ``h2``, ``k2``, ``l2`` +hkl ``h``, ``k``, ``l`` psi_constant ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``phi``, ``tth`` ``h2``, ``k2``, ``l2``, ``psi`` +incidence ``incidence``, ``azimuth`` incidence ``omega``, ``chi``, ``phi`` ``x``, ``y``, ``z`` +psi ``psi`` psi ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``phi``, ``tth`` ``h2``, ``k2``, ``l2`` +q ``q`` q ``tth`` ``tth`` +========= ========================== ================== ==================================== ==================================== =============================== .. index:: E6C, geometry; E6C .. _E6C_table: -Geometry: `E6C` -+++++++++++++++ - -real axes: ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` - -========= ========================== ============================= =============================== -engine pseudo_axes mode parameters -========= ========================== ============================= =============================== -hkl ``h``, ``k``, ``l`` bissector_vertical -hkl ``h``, ``k``, ``l`` constant_omega_vertical -hkl ``h``, ``k``, ``l`` constant_chi_vertical -hkl ``h``, ``k``, ``l`` constant_phi_vertical -hkl ``h``, ``k``, ``l`` lifting_detector_phi -hkl ``h``, ``k``, ``l`` lifting_detector_omega -hkl ``h``, ``k``, ``l`` lifting_detector_mu -hkl ``h``, ``k``, ``l`` double_diffraction_vertical ``h2``, ``k2``, ``l2`` -hkl ``h``, ``k``, ``l`` bissector_horizontal -hkl ``h``, ``k``, ``l`` double_diffraction_horizontal ``h2``, ``k2``, ``l2`` -hkl ``h``, ``k``, ``l`` psi_constant_vertical ``h2``, ``k2``, ``l2``, ``psi`` -hkl ``h``, ``k``, ``l`` psi_constant_horizontal ``h2``, ``k2``, ``l2``, ``psi`` -hkl ``h``, ``k``, ``l`` constant_mu_horizontal -psi ``psi`` psi_vertical ``h2``, ``k2``, ``l2`` -q2 ``q``, ``alpha`` q2 -qper_qpar ``qper``, ``qpar`` qper_qpar ``x``, ``y``, ``z`` -tth2 ``tth``, ``alpha`` tth2 -incidence ``incidence``, ``azimuth`` incidence ``x``, ``y``, ``z`` -emergence ``emergence``, ``azimuth`` emergence ``x``, ``y``, ``z`` -========= ========================== ============================= =============================== +Geometry: ``E6C`` ++++++++++++++++++ + +* real axes: ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` +* pseudo axes: depends on the engine + +========= ========================== ============================= ========================================================= ============================================== =============================== +engine pseudo axes mode axes read axes written extra parameters +========= ========================== ============================= ========================================================= ============================================== =============================== +emergence ``emergence``, ``azimuth`` emergence ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``x``, ``y``, ``z`` +hkl ``h``, ``k``, ``l`` bissector_horizontal ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``mu``, ``omega``, ``chi``, ``phi``, ``gamma`` +hkl ``h``, ``k``, ``l`` bissector_vertical ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``chi``, ``phi``, ``delta`` +hkl ``h``, ``k``, ``l`` constant_chi_vertical ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``phi``, ``delta`` +hkl ``h``, ``k``, ``l`` constant_mu_horizontal ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``chi``, ``phi``, ``gamma`` +hkl ``h``, ``k``, ``l`` constant_omega_vertical ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``chi``, ``phi``, ``delta`` +hkl ``h``, ``k``, ``l`` constant_phi_vertical ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``chi``, ``delta`` +hkl ``h``, ``k``, ``l`` double_diffraction_horizontal ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``mu``, ``chi``, ``phi``, ``gamma`` ``h2``, ``k2``, ``l2`` +hkl ``h``, ``k``, ``l`` double_diffraction_vertical ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``chi``, ``phi``, ``delta`` ``h2``, ``k2``, ``l2`` +hkl ``h``, ``k``, ``l`` lifting_detector_mu ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``mu``, ``gamma``, ``delta`` +hkl ``h``, ``k``, ``l`` lifting_detector_omega ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``gamma``, ``delta`` +hkl ``h``, ``k``, ``l`` lifting_detector_phi ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``phi``, ``gamma``, ``delta`` +hkl ``h``, ``k``, ``l`` psi_constant_horizontal ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``chi``, ``phi``, ``gamma`` ``h2``, ``k2``, ``l2``, ``psi`` +hkl ``h``, ``k``, ``l`` psi_constant_vertical ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``chi``, ``phi``, ``delta`` ``h2``, ``k2``, ``l2``, ``psi`` +incidence ``incidence``, ``azimuth`` incidence ``mu``, ``omega``, ``chi``, ``phi`` ``x``, ``y``, ``z`` +psi ``psi`` psi_vertical ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``chi``, ``phi``, ``delta`` ``h2``, ``k2``, ``l2`` +q2 ``q``, ``alpha`` q2 ``gamma``, ``delta`` ``gamma``, ``delta`` +qper_qpar ``qper``, ``qpar`` qper_qpar ``gamma``, ``delta`` ``gamma``, ``delta`` ``x``, ``y``, ``z`` +tth2 ``tth``, ``alpha`` tth2 ``gamma``, ``delta`` ``gamma``, ``delta`` +========= ========================== ============================= ========================================================= ============================================== =============================== .. index:: K4CV, geometry; K4CV .. _K4CV_table: -Geometry: `K4CV` -++++++++++++++++ - -real axes: ``komega``, ``kappa``, ``kphi``, ``tth`` - -========= =========================== ================== =============================== -engine pseudo_axes mode parameters -========= =========================== ================== =============================== -hkl ``h``, ``k``, ``l`` bissector -hkl ``h``, ``k``, ``l`` constant_omega ``omega`` -hkl ``h``, ``k``, ``l`` constant_chi ``chi`` -hkl ``h``, ``k``, ``l`` constant_phi ``phi`` -hkl ``h``, ``k``, ``l`` double_diffraction ``h2``, ``k2``, ``l2`` -hkl ``h``, ``k``, ``l`` psi_constant ``h2``, ``k2``, ``l2``, ``psi`` -eulerians ``omega``, ``chi``, ``phi`` eulerians ``solutions`` -psi ``psi`` psi ``h2``, ``k2``, ``l2`` -q ``q`` q -incidence ``incidence``, ``azimuth`` incidence ``x``, ``y``, ``z`` -emergence ``emergence``, ``azimuth`` emergence ``x``, ``y``, ``z`` -========= =========================== ================== =============================== +Geometry: ``K4CV`` +++++++++++++++++++ + +* real axes: ``komega``, ``kappa``, ``kphi``, ``tth`` +* pseudo axes: depends on the engine + +========= =========================== ================== ======================================== ======================================== =============================== +engine pseudo axes mode axes read axes written extra parameters +========= =========================== ================== ======================================== ======================================== =============================== +emergence ``emergence``, ``azimuth`` emergence ``komega``, ``kappa``, ``kphi``, ``tth`` ``x``, ``y``, ``z`` +eulerians ``omega``, ``chi``, ``phi`` eulerians ``komega``, ``kappa``, ``kphi`` ``komega``, ``kappa``, ``kphi`` ``solutions`` +hkl ``h``, ``k``, ``l`` bissector ``komega``, ``kappa``, ``kphi``, ``tth`` ``komega``, ``kappa``, ``kphi``, ``tth`` +hkl ``h``, ``k``, ``l`` constant_chi ``komega``, ``kappa``, ``kphi``, ``tth`` ``komega``, ``kappa``, ``kphi``, ``tth`` ``chi`` +hkl ``h``, ``k``, ``l`` constant_omega ``komega``, ``kappa``, ``kphi``, ``tth`` ``komega``, ``kappa``, ``kphi``, ``tth`` ``omega`` +hkl ``h``, ``k``, ``l`` constant_phi ``komega``, ``kappa``, ``kphi``, ``tth`` ``komega``, ``kappa``, ``kphi``, ``tth`` ``phi`` +hkl ``h``, ``k``, ``l`` double_diffraction ``komega``, ``kappa``, ``kphi``, ``tth`` ``komega``, ``kappa``, ``kphi``, ``tth`` ``h2``, ``k2``, ``l2`` +hkl ``h``, ``k``, ``l`` psi_constant ``komega``, ``kappa``, ``kphi``, ``tth`` ``komega``, ``kappa``, ``kphi``, ``tth`` ``h2``, ``k2``, ``l2``, ``psi`` +incidence ``incidence``, ``azimuth`` incidence ``komega``, ``kappa``, ``kphi`` ``x``, ``y``, ``z`` +psi ``psi`` psi ``komega``, ``kappa``, ``kphi``, ``tth`` ``komega``, ``kappa``, ``kphi``, ``tth`` ``h2``, ``k2``, ``l2`` +q ``q`` q ``tth`` ``tth`` +========= =========================== ================== ======================================== ======================================== =============================== .. index:: K6C, geometry; K6C .. _K6C_table: -Geometry: `K6C` -+++++++++++++++ - -real axes: ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` - -========= =========================== ============================= =============================================== -engine pseudo_axes mode parameters -========= =========================== ============================= =============================================== -hkl ``h``, ``k``, ``l`` bissector_vertical -hkl ``h``, ``k``, ``l`` constant_omega_vertical ``omega`` -hkl ``h``, ``k``, ``l`` constant_chi_vertical ``chi`` -hkl ``h``, ``k``, ``l`` constant_phi_vertical ``phi`` -hkl ``h``, ``k``, ``l`` lifting_detector_kphi -hkl ``h``, ``k``, ``l`` lifting_detector_komega -hkl ``h``, ``k``, ``l`` lifting_detector_mu -hkl ``h``, ``k``, ``l`` double_diffraction_vertical ``h2``, ``k2``, ``l2`` -hkl ``h``, ``k``, ``l`` bissector_horizontal -hkl ``h``, ``k``, ``l`` constant_phi_horizontal ``phi`` -hkl ``h``, ``k``, ``l`` constant_kphi_horizontal -hkl ``h``, ``k``, ``l`` double_diffraction_horizontal ``h2``, ``k2``, ``l2`` -hkl ``h``, ``k``, ``l`` psi_constant_vertical ``h2``, ``k2``, ``l2``, ``psi`` -hkl ``h``, ``k``, ``l`` constant_incidence ``x``, ``y``, ``z``, ``incidence``, ``azimuth`` -eulerians ``omega``, ``chi``, ``phi`` eulerians ``solutions`` -psi ``psi`` psi_vertical ``h2``, ``k2``, ``l2`` -q2 ``q``, ``alpha`` q2 -qper_qpar ``qper``, ``qpar`` qper_qpar ``x``, ``y``, ``z`` -incidence ``incidence``, ``azimuth`` incidence ``x``, ``y``, ``z`` -tth2 ``tth``, ``alpha`` tth2 -emergence ``emergence``, ``azimuth`` emergence ``x``, ``y``, ``z`` -========= =========================== ============================= =============================================== - -.. index:: Petra3_p09_eh2, geometry; Petra3_p09_eh2 - -.. _Petra3_p09_eh2_table: - -Geometry: `Petra3_p09_eh2` -++++++++++++++++++++++++++ - -real axes: ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` - -====== =================== =================================== ========== -engine pseudo_axes mode parameters -====== =================== =================================== ========== -hkl ``h``, ``k``, ``l`` zaxis + alpha-fixed -hkl ``h``, ``k``, ``l`` zaxis + beta-fixed -hkl ``h``, ``k``, ``l`` zaxis + alpha=beta -hkl ``h``, ``k``, ``l`` 4-circles bissecting horizontal -hkl ``h``, ``k``, ``l`` 4-circles constant omega horizontal -hkl ``h``, ``k``, ``l`` 4-circles constant chi horizontal -hkl ``h``, ``k``, ``l`` 4-circles constant phi horizontal -hkl ``h``, ``k``, ``l`` lifting detector mu -hkl ``h``, ``k``, ``l`` lifting detector omega -hkl ``h``, ``k``, ``l`` lifting detector chi -hkl ``h``, ``k``, ``l`` lifting detector phi -====== =================== =================================== ========== - -.. index:: Petra3_p23_4c, geometry; Petra3_p23_4c - -.. _Petra3_p23_4c_table: - -Geometry: `Petra3_p23_4c` -++++++++++++++++++++++++++ - -real axes: ``omega_t``, ``mu``, ``gamma``, ``delta`` - -=========== =========================== =================================== ========== -engine pseudo_axes mode parameters -=========== =========================== =================================== ========== -hkl ``h``, ``k``, ``l`` bisector vertical -hkl ``h``, ``k``, ``l`` lifting detector omega_t -hkl ``h``, ``k``, ``l`` lifting detector mu -hkl ``h``, ``k``, ``l`` bisector horizontal -hkl ``h``, ``k``, ``l`` psi constant h2, k2, l2, psi -q2 ``q``, ``alpha`` q2 -qper_qpar ``qper``, ``qpar`` qper_qpar x, y, z -tth2 ``tth``, ``alpha`` tth2 -incidence ``incidence``, ``azimuth`` incidence x, y, z -emergence ``emergence``, ``azimuth`` emergence x, y, z -=========== =========================== =================================== ========== - -.. index:: Petra3_p23_6c, geometry; Petra3_p23_6c - -.. _Petra3_p23_6c_table: - -Geometry: `Petra3_p23_6c` -++++++++++++++++++++++++++ - -real axes: ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` - -=========== =========================== =================================== ========== -engine pseudo_axes mode parameters -=========== =========================== =================================== ========== -hkl ``h``, ``k``, ``l`` bisector vertical -hkl ``h``, ``k``, ``l`` constant omega vertical -hkl ``h``, ``k``, ``l`` constant chi vertical -hkl ``h``, ``k``, ``l`` constant phi vertical -hkl ``h``, ``k``, ``l`` lifting detector phi -hkl ``h``, ``k``, ``l`` lifting detector omega -hkl ``h``, ``k``, ``l`` lifting detector mu -hkl ``h``, ``k``, ``l`` double diffraction vertical h2, k2, l2 -hkl ``h``, ``k``, ``l`` bisector horizontal -hkl ``h``, ``k``, ``l`` double diffraction horizontal h2, k2, l2 -hkl ``h``, ``k``, ``l`` psi constant vertical h2, k2, l2, psi -hkl ``h``, ``k``, ``l`` psi constant horizontal h2, k2, l2, psi -hkl ``h``, ``k``, ``l`` constant mu horizontal -psi ``psi`` psi vertical h2, k2, l2 -q2 ``q``, ``alpha`` q2 -qper_qpar ``qper``, ``qpar`` qper_qpar x, y, z -tth2 ``tth``, ``alpha`` tth2 -incidence ``incidence``, ``azimuth`` incidence x, y, z -emergence ``emergence``, ``azimuth`` emergence x, y, z -=========== =========================== =================================== ========== - -.. index:: SoleilMars, geometry; SoleilMars - -.. _SoleilMars_table: - -Geometry: `SoleilMars` -++++++++++++++++++++++ - -real axes: ``omega``, ``chi``, ``phi``, ``tth`` - -========= ========================== ================== =============================== -engine pseudo_axes mode parameters -========= ========================== ================== =============================== -hkl ``h``, ``k``, ``l`` bissector -hkl ``h``, ``k``, ``l`` constant_omega -hkl ``h``, ``k``, ``l`` constant_chi -hkl ``h``, ``k``, ``l`` constant_phi -hkl ``h``, ``k``, ``l`` double_diffraction ``h2``, ``k2``, ``l2`` -hkl ``h``, ``k``, ``l`` psi_constant ``h2``, ``k2``, ``l2``, ``psi`` -psi ``psi`` psi ``h2``, ``k2``, ``l2`` -q ``q`` q -incidence ``incidence``, ``azimuth`` incidence ``x``, ``y``, ``z`` -========= ========================== ================== =============================== - -.. index:: SoleilNanoscopiumRobot, geometry; SoleilNanoscopiumRobot - -.. _SoleilNanoscopiumRobot_table: - -Geometry: `SoleilNanoscopiumRobot` -++++++++++++++++++++++++++++++++++ - -real axes: ``rz``, ``rs``, ``rx``, ``r``, ``delta``, ``gamma`` - -========= ========================== =================== ========== -engine pseudo_axes mode parameters -========= ========================== =================== ========== -hkl ``h``, ``k``, ``l`` lifting detector rz -hkl ``h``, ``k``, ``l`` lifting detector rs -hkl ``h``, ``k``, ``l`` lifting detector rx -========= ========================== =================== ========== - -.. index:: SoleilSiriusKappa, geometry; SoleilSiriusKappa - -.. _SoleilSiriusKappa_table: - -Geometry: `SoleilSiriusKappa` -+++++++++++++++++++++++++++++ - -real axes: ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` - -========= =========================== ================================ =============================================== -engine pseudo_axes mode parameters -========= =========================== ================================ =============================================== -hkl ``h``, ``k``, ``l`` bissector_vertical -hkl ``h``, ``k``, ``l`` constant_omega_vertical ``omega`` -hkl ``h``, ``k``, ``l`` constant_chi_vertical ``chi`` -hkl ``h``, ``k``, ``l`` constant_phi_vertical ``phi`` -hkl ``h``, ``k``, ``l`` lifting_detector_kphi -hkl ``h``, ``k``, ``l`` lifting_detector_komega -hkl ``h``, ``k``, ``l`` lifting_detector_mu -hkl ``h``, ``k``, ``l`` double_diffraction_vertical ``h2``, ``k2``, ``l2`` -hkl ``h``, ``k``, ``l`` bissector_horizontal -hkl ``h``, ``k``, ``l`` constant_phi_horizontal ``phi`` -hkl ``h``, ``k``, ``l`` constant_kphi_horizontal -hkl ``h``, ``k``, ``l`` double_diffraction_horizontal ``h2``, ``k2``, ``l2`` -hkl ``h``, ``k``, ``l`` psi_constant_vertical ``h2``, ``k2``, ``l2``, ``psi`` -hkl ``h``, ``k``, ``l`` constant_incidence ``x``, ``y``, ``z``, ``incidence``, ``azimuth`` -eulerians ``omega``, ``chi``, ``phi`` eulerians ``solutions`` -psi ``psi`` psi_vertical_soleil_sirius_kappa ``h2``, ``k2``, ``l2`` -q2 ``q``, ``alpha`` q2 -qper_qpar ``qper``, ``qpar`` qper_qpar ``x``, ``y``, ``z`` -tth2 ``tth``, ``alpha`` tth2 -incidence ``incidence``, ``azimuth`` incidence ``x``, ``y``, ``z`` -emergence ``emergence``, ``azimuth`` emergence ``x``, ``y``, ``z`` -========= =========================== ================================ =============================================== - -.. index:: SoleilSiriusTurret, geometry; SoleilSiriusTurret - -.. _SoleilSiriusTurret_table: - -Geometry: `SoleilSiriusTurret` -++++++++++++++++++++++++++++++ - -real axes: ``basepitch``, ``thetah``, ``alphay``, ``alphax``, ``delta``, ``gamma`` - -========= ========================== ======================= =================== -engine pseudo_axes mode parameters -========= ========================== ======================= =================== -hkl ``h``, ``k``, ``l`` lifting_detector_thetah -q2 ``q``, ``alpha`` q2 -qper_qpar ``qper``, ``qpar`` qper_qpar ``x``, ``y``, ``z`` -tth2 ``tth``, ``alpha`` tth2 -incidence ``incidence``, ``azimuth`` incidence ``x``, ``y``, ``z`` -emergence ``emergence``, ``azimuth`` emergence ``x``, ``y``, ``z`` -========= ========================== ======================= =================== - -.. index:: SoleilSixsMed1p2, geometry; SoleilSixsMed1p2 - -.. _SoleilSixsMed1p2_table: - -Geometry: `SoleilSixsMed1p2` -++++++++++++++++++++++++++++ - -real axes: ``pitch``, ``mu``, ``gamma``, ``delta`` - -========= ========================== =========== =================== -engine pseudo_axes mode parameters -========= ========================== =========== =================== -hkl ``h``, ``k``, ``l`` pitch_fixed -hkl ``h``, ``k``, ``l`` delta_fixed -q2 ``q``, ``alpha`` q2 -qper_qpar ``qper``, ``qpar`` qper_qpar ``x``, ``y``, ``z`` -tth2 ``tth``, ``alpha`` tth2 -incidence ``incidence``, ``azimuth`` incidence ``x``, ``y``, ``z`` -emergence ``emergence``, ``azimuth`` emergence ``x``, ``y``, ``z`` -========= ========================== =========== =================== - -.. index:: SoleilSixsMed2p2, geometry; SoleilSixsMed2p2 - -.. _SoleilSixsMed2p2_table: - -Geometry: `SoleilSixsMed2p2` -++++++++++++++++++++++++++++ - -real axes: ``beta``, ``mu``, ``omega``, ``gamma``, ``delta`` - -========= ========================== =============== ================================== -engine pseudo_axes mode parameters -========= ========================== =============== ================================== -hkl ``h``, ``k``, ``l`` mu_fixed -hkl ``h``, ``k``, ``l`` reflectivity -hkl ``h``, ``k``, ``l`` emergence_fixed ``x``, ``y``, ``z``, ``emergence`` -q2 ``q``, ``alpha`` q2 -qper_qpar ``qper``, ``qpar`` qper_qpar ``x``, ``y``, ``z`` -tth2 ``tth``, ``alpha`` tth2 -incidence ``incidence``, ``azimuth`` incidence ``x``, ``y``, ``z`` -emergence ``emergence``, ``azimuth`` emergence ``x``, ``y``, ``z`` -========= ========================== =============== ================================== - -.. index:: SoleilSixsMed2p3, geometry; SoleilSixsMed2p3 - -.. _SoleilSixsMed2p3_table: +Geometry: ``K6C`` ++++++++++++++++++ -Geometry: `SoleilSixsMed2p3` +* real axes: ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` +* pseudo axes: depends on the engine + +========= =========================== ============================= ============================================================= ===================================================== =============================================== +engine pseudo axes mode axes read axes written extra parameters +========= =========================== ============================= ============================================================= ===================================================== =============================================== +emergence ``emergence``, ``azimuth`` emergence ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``x``, ``y``, ``z`` +eulerians ``omega``, ``chi``, ``phi`` eulerians ``komega``, ``kappa``, ``kphi`` ``komega``, ``kappa``, ``kphi`` ``solutions`` +hkl ``h``, ``k``, ``l`` bissector_horizontal ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma`` +hkl ``h``, ``k``, ``l`` bissector_vertical ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``komega``, ``kappa``, ``kphi``, ``delta`` +hkl ``h``, ``k``, ``l`` constant_chi_vertical ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``komega``, ``kappa``, ``kphi``, ``delta`` ``chi`` +hkl ``h``, ``k``, ``l`` constant_incidence ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``x``, ``y``, ``z``, ``incidence``, ``azimuth`` +hkl ``h``, ``k``, ``l`` constant_kphi_horizontal ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``mu``, ``komega``, ``kappa``, ``gamma`` +hkl ``h``, ``k``, ``l`` constant_omega_vertical ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``komega``, ``kappa``, ``kphi``, ``delta`` ``omega`` +hkl ``h``, ``k``, ``l`` constant_phi_horizontal ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma`` ``phi`` +hkl ``h``, ``k``, ``l`` constant_phi_vertical ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``komega``, ``kappa``, ``kphi``, ``delta`` ``phi`` +hkl ``h``, ``k``, ``l`` double_diffraction_horizontal ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma`` ``h2``, ``k2``, ``l2`` +hkl ``h``, ``k``, ``l`` double_diffraction_vertical ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``komega``, ``kappa``, ``kphi``, ``delta`` ``h2``, ``k2``, ``l2`` +hkl ``h``, ``k``, ``l`` lifting_detector_komega ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``komega``, ``gamma``, ``delta`` +hkl ``h``, ``k``, ``l`` lifting_detector_kphi ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``kphi``, ``gamma``, ``delta`` +hkl ``h``, ``k``, ``l`` lifting_detector_mu ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``mu``, ``gamma``, ``delta`` +hkl ``h``, ``k``, ``l`` psi_constant_vertical ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``komega``, ``kappa``, ``kphi``, ``delta`` ``h2``, ``k2``, ``l2``, ``psi`` +incidence ``incidence``, ``azimuth`` incidence ``mu``, ``komega``, ``kappa``, ``kphi`` ``x``, ``y``, ``z`` +psi ``psi`` psi_vertical ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``komega``, ``kappa``, ``kphi``, ``delta`` ``h2``, ``k2``, ``l2`` +q2 ``q``, ``alpha`` q2 ``gamma``, ``delta`` ``gamma``, ``delta`` +qper_qpar ``qper``, ``qpar`` qper_qpar ``gamma``, ``delta`` ``gamma``, ``delta`` ``x``, ``y``, ``z`` +tth2 ``tth``, ``alpha`` tth2 ``gamma``, ``delta`` ``gamma``, ``delta`` +========= =========================== ============================= ============================================================= ===================================================== =============================================== + +.. index:: PETRA3_P09_EH2, geometry; PETRA3_P09_EH2 + +.. _PETRA3_P09_EH2_table: + +Geometry: ``PETRA3 P09 EH2`` ++++++++++++++++++++++++++++ -real axes: ``beta``, ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` - -.. note:: Compare with :ref:`SoleilSixsMed2p3v2_table` which does not have ``beta``. - -========= ========================== =============== ================================== -engine pseudo_axes mode parameters -========= ========================== =============== ================================== -hkl ``h``, ``k``, ``l`` mu_fixed -hkl ``h``, ``k``, ``l`` gamma_fixed -hkl ``h``, ``k``, ``l`` emergence_fixed ``x``, ``y``, ``z``, ``emergence`` -q2 ``q``, ``alpha`` q2 -qper_qpar ``qper``, ``qpar`` qper_qpar ``x``, ``y``, ``z`` -tth2 ``tth``, ``alpha`` tth2 -incidence ``incidence``, ``azimuth`` incidence ``x``, ``y``, ``z`` -emergence ``emergence``, ``azimuth`` emergence ``x``, ``y``, ``z`` -========= ========================== =============== ================================== - -.. index:: SoleilSixsMed2p3v2, geometry; SoleilSixsMed2p3v2 - -.. _SoleilSixsMed2p3v2_table: - -Geometry: `SoleilSixsMed2p3v2` -++++++++++++++++++++++++++++++ - -real axes: ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` - -global parameter: `eta_a_rotation`, rotation of the detector (zaxis-like) - -.. note:: Compare with :ref:`SoleilSixsMed2p3_table` which has an additional ``beta`` rotation. - -========= ========================== =============== ================================== -engine pseudo_axes mode parameters -========= ========================== =============== ================================== -hkl ``h``, ``k``, ``l`` mu_fixed -hkl ``h``, ``k``, ``l`` gamma_fixed -hkl ``h``, ``k``, ``l`` emergence_fixed ``x``, ``y``, ``z``, ``emergence`` -q2 ``q``, ``alpha`` q2 -qper_qpar ``qper``, ``qpar`` qper_qpar ``x``, ``y``, ``z`` -tth2 ``tth``, ``alpha`` tth2 -incidence ``incidence``, ``azimuth`` incidence ``x``, ``y``, ``z`` -emergence ``emergence``, ``azimuth`` emergence ``x``, ``y``, ``z`` -========= ========================== =============== ================================== - -.. index:: Zaxis, geometry; Zaxis - -.. _Zaxis_table: - -Geometry: `Zaxis` -+++++++++++++++++ +* real axes: ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` +* pseudo axes: depends on the engine + +====== =================== =================================== ========================================================= ======================================= ================ +engine pseudo axes mode axes read axes written extra parameters +====== =================== =================================== ========================================================= ======================================= ================ +hkl ``h``, ``k``, ``l`` 4-circles bissecting horizontal ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` ``omega``, ``chi``, ``phi``, ``delta`` +hkl ``h``, ``k``, ``l`` 4-circles constant chi horizontal ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` ``omega``, ``phi``, ``delta`` +hkl ``h``, ``k``, ``l`` 4-circles constant omega horizontal ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` ``chi``, ``phi``, ``delta`` +hkl ``h``, ``k``, ``l`` 4-circles constant phi horizontal ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` ``omega``, ``chi``, ``delta`` +hkl ``h``, ``k``, ``l`` lifting detector chi ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` ``chi``, ``delta``, ``gamma`` +hkl ``h``, ``k``, ``l`` lifting detector mu ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` ``mu``, ``delta``, ``gamma`` +hkl ``h``, ``k``, ``l`` lifting detector omega ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` ``omega``, ``delta``, ``gamma`` +hkl ``h``, ``k``, ``l`` lifting detector phi ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` ``phi``, ``delta``, ``gamma`` +hkl ``h``, ``k``, ``l`` zaxis + alpha-fixed ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` ``omega``, ``delta``, ``gamma`` +hkl ``h``, ``k``, ``l`` zaxis + alpha=beta ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` ``mu``, ``omega``, ``delta``, ``gamma`` +hkl ``h``, ``k``, ``l`` zaxis + beta-fixed ``mu``, ``omega``, ``chi``, ``phi``, ``delta``, ``gamma`` ``mu``, ``delta``, ``gamma`` +====== =================== =================================== ========================================================= ======================================= ================ + +.. index:: PETRA3_P23_4C, geometry; PETRA3_P23_4C + +.. _PETRA3_P23_4C_table: + +Geometry: ``PETRA3 P23 4C`` ++++++++++++++++++++++++++++ + +* real axes: ``omega_t``, ``mu``, ``gamma``, ``delta`` +* pseudo axes: depends on the engine + +========= ========================== ======================== ========================================= ========================================= =============================== +engine pseudo axes mode axes read axes written extra parameters +========= ========================== ======================== ========================================= ========================================= =============================== +emergence ``emergence``, ``azimuth`` emergence ``omega_t``, ``mu``, ``gamma``, ``delta`` ``x``, ``y``, ``z`` +hkl ``h``, ``k``, ``l`` bissector_horizontal ``omega_t``, ``mu``, ``gamma``, ``delta`` ``omega_t``, ``mu``, ``gamma`` +hkl ``h``, ``k``, ``l`` bissector_vertical ``omega_t``, ``mu``, ``gamma``, ``delta`` ``omega_t``, ``mu``, ``delta`` +hkl ``h``, ``k``, ``l`` lifting_detector_mu ``omega_t``, ``mu``, ``gamma``, ``delta`` ``mu``, ``gamma``, ``delta`` +hkl ``h``, ``k``, ``l`` lifting_detector_omega_t ``omega_t``, ``mu``, ``gamma``, ``delta`` ``omega_t``, ``gamma``, ``delta`` +hkl ``h``, ``k``, ``l`` psi_constant ``omega_t``, ``mu``, ``gamma``, ``delta`` ``omega_t``, ``mu``, ``gamma``, ``delta`` ``h2``, ``k2``, ``l2``, ``psi`` +incidence ``incidence``, ``azimuth`` incidence ``omega_t``, ``mu`` ``x``, ``y``, ``z`` +q2 ``q``, ``alpha`` q2 ``gamma``, ``delta`` ``gamma``, ``delta`` +qper_qpar ``qper``, ``qpar`` qper_qpar ``gamma``, ``delta`` ``gamma``, ``delta`` ``x``, ``y``, ``z`` +tth2 ``tth``, ``alpha`` tth2 ``gamma``, ``delta`` ``gamma``, ``delta`` +========= ========================== ======================== ========================================= ========================================= =============================== + +.. index:: PETRA3_P23_6C, geometry; PETRA3_P23_6C + +.. _PETRA3_P23_6C_table: + +Geometry: ``PETRA3 P23 6C`` ++++++++++++++++++++++++++++ + +* real axes: ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` +* pseudo axes: depends on the engine + +========= ========================== ============================= ====================================================================== ============================================== =============================== +engine pseudo axes mode axes read axes written extra parameters +========= ========================== ============================= ====================================================================== ============================================== =============================== +emergence ``emergence``, ``azimuth`` emergence ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``x``, ``y``, ``z`` +hkl ``h``, ``k``, ``l`` bissector_horizontal ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``mu``, ``omega``, ``chi``, ``phi``, ``gamma`` +hkl ``h``, ``k``, ``l`` bissector_vertical ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``chi``, ``phi``, ``delta`` +hkl ``h``, ``k``, ``l`` constant_chi_vertical ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``phi``, ``delta`` +hkl ``h``, ``k``, ``l`` constant_mu_horizontal ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``chi``, ``phi``, ``gamma`` +hkl ``h``, ``k``, ``l`` constant_omega_vertical ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``chi``, ``phi``, ``delta`` +hkl ``h``, ``k``, ``l`` constant_phi_vertical ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``chi``, ``delta`` +hkl ``h``, ``k``, ``l`` double_diffraction_horizontal ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``mu``, ``chi``, ``phi``, ``gamma`` ``h2``, ``k2``, ``l2`` +hkl ``h``, ``k``, ``l`` double_diffraction_vertical ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``chi``, ``phi``, ``delta`` ``h2``, ``k2``, ``l2`` +hkl ``h``, ``k``, ``l`` lifting_detector_mu ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``mu``, ``gamma``, ``delta`` +hkl ``h``, ``k``, ``l`` lifting_detector_omega ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``gamma``, ``delta`` +hkl ``h``, ``k``, ``l`` lifting_detector_phi ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``phi``, ``gamma``, ``delta`` +hkl ``h``, ``k``, ``l`` psi_constant_horizontal ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``chi``, ``phi``, ``gamma`` ``h2``, ``k2``, ``l2``, ``psi`` +hkl ``h``, ``k``, ``l`` psi_constant_vertical ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``chi``, ``phi``, ``delta`` ``h2``, ``k2``, ``l2``, ``psi`` +incidence ``incidence``, ``azimuth`` incidence ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi`` ``x``, ``y``, ``z`` +psi ``psi`` psi_vertical ``omega_t``, ``mu``, ``omega``, ``chi``, ``phi``, ``gamma``, ``delta`` ``omega``, ``chi``, ``phi``, ``delta`` ``h2``, ``k2``, ``l2`` +q2 ``q``, ``alpha`` q2 ``gamma``, ``delta`` ``gamma``, ``delta`` +qper_qpar ``qper``, ``qpar`` qper_qpar ``gamma``, ``delta`` ``gamma``, ``delta`` ``x``, ``y``, ``z`` +tth2 ``tth``, ``alpha`` tth2 ``gamma``, ``delta`` ``gamma``, ``delta`` +========= ========================== ============================= ====================================================================== ============================================== =============================== + +.. index:: SOLEIL_MARS, geometry; SOLEIL_MARS + +.. _SOLEIL_MARS_table: + +Geometry: ``SOLEIL MARS`` ++++++++++++++++++++++++++ + +* real axes: ``omega``, ``chi``, ``phi``, ``tth`` +* pseudo axes: depends on the engine + +========= ========================== ================== ==================================== ==================================== =============================== +engine pseudo axes mode axes read axes written extra parameters +========= ========================== ================== ==================================== ==================================== =============================== +emergence ``emergence``, ``azimuth`` emergence ``omega``, ``chi``, ``phi``, ``tth`` ``x``, ``y``, ``z`` +hkl ``h``, ``k``, ``l`` bissector ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``phi``, ``tth`` +hkl ``h``, ``k``, ``l`` constant_chi ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``phi``, ``tth`` +hkl ``h``, ``k``, ``l`` constant_omega ``omega``, ``chi``, ``phi``, ``tth`` ``chi``, ``phi``, ``tth`` +hkl ``h``, ``k``, ``l`` constant_phi ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``tth`` +hkl ``h``, ``k``, ``l`` double_diffraction ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``phi``, ``tth`` ``h2``, ``k2``, ``l2`` +hkl ``h``, ``k``, ``l`` psi_constant ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``phi``, ``tth`` ``h2``, ``k2``, ``l2``, ``psi`` +incidence ``incidence``, ``azimuth`` incidence ``omega``, ``chi``, ``phi`` ``x``, ``y``, ``z`` +psi ``psi`` psi ``omega``, ``chi``, ``phi``, ``tth`` ``omega``, ``chi``, ``phi``, ``tth`` ``h2``, ``k2``, ``l2`` +q ``q`` q ``tth`` ``tth`` +========= ========================== ================== ==================================== ==================================== =============================== + +.. index:: SOLEIL_NANOSCOPIUM_ROBOT, geometry; SOLEIL_NANOSCOPIUM_ROBOT + +.. _SOLEIL_NANOSCOPIUM_ROBOT_table: + +Geometry: ``SOLEIL NANOSCOPIUM ROBOT`` +++++++++++++++++++++++++++++++++++++++ + +* real axes: ``rz``, ``rs``, ``rx``, ``r``, ``delta``, ``gamma`` +* pseudo axes: depends on the engine + +====== =================== =================== =================================================== ============================ ================ +engine pseudo axes mode axes read axes written extra parameters +====== =================== =================== =================================================== ============================ ================ +hkl ``h``, ``k``, ``l`` lifting detector rs ``rz``, ``rs``, ``rx``, ``r``, ``delta``, ``gamma`` ``rs``, ``delta``, ``gamma`` +hkl ``h``, ``k``, ``l`` lifting detector rx ``rz``, ``rs``, ``rx``, ``r``, ``delta``, ``gamma`` ``rx``, ``delta``, ``gamma`` +hkl ``h``, ``k``, ``l`` lifting detector rz ``rz``, ``rs``, ``rx``, ``r``, ``delta``, ``gamma`` ``rz``, ``delta``, ``gamma`` +====== =================== =================== =================================================== ============================ ================ + +.. index:: SOLEIL_SIRIUS_KAPPA, geometry; SOLEIL_SIRIUS_KAPPA + +.. _SOLEIL_SIRIUS_KAPPA_table: + +Geometry: ``SOLEIL SIRIUS KAPPA`` ++++++++++++++++++++++++++++++++++ + +* real axes: ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` +* pseudo axes: depends on the engine + +========= =========================== ================================ ============================================================= ===================================================== =============================================== +engine pseudo axes mode axes read axes written extra parameters +========= =========================== ================================ ============================================================= ===================================================== =============================================== +emergence ``emergence``, ``azimuth`` emergence ``mu``, ``komega``, ``kappa``, ``kphi``, ``gamma``, ``delta`` ``x``, ``y``, ``z`` +eulerians ``omega``, ``chi``, ``phi`` eulerians ``komega``, ``kappa``, ``kphi`` ``komega``, ``kappa``, ``kphi`` ``solutions`` +hkl ``h``, ``k``, ``l`` bissector_horizontal ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta`` +hkl ``h``, ``k``, ``l`` bissector_vertical ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``komega``, ``kappa``, ``kphi``, ``gamma`` +hkl ``h``, ``k``, ``l`` constant_chi_vertical ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``komega``, ``kappa``, ``kphi``, ``gamma`` ``chi`` +hkl ``h``, ``k``, ``l`` constant_incidence ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``x``, ``y``, ``z``, ``incidence``, ``azimuth`` +hkl ``h``, ``k``, ``l`` constant_kphi_horizontal ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``mu``, ``komega``, ``kappa``, ``delta`` +hkl ``h``, ``k``, ``l`` constant_omega_vertical ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``komega``, ``kappa``, ``kphi``, ``gamma`` ``omega`` +hkl ``h``, ``k``, ``l`` constant_phi_horizontal ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta`` ``phi`` +hkl ``h``, ``k``, ``l`` constant_phi_vertical ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``komega``, ``kappa``, ``kphi``, ``gamma`` ``phi`` +hkl ``h``, ``k``, ``l`` double_diffraction_horizontal ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta`` ``h2``, ``k2``, ``l2`` +hkl ``h``, ``k``, ``l`` double_diffraction_vertical ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``komega``, ``kappa``, ``kphi``, ``gamma`` ``h2``, ``k2``, ``l2`` +hkl ``h``, ``k``, ``l`` lifting_detector_komega ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``komega``, ``delta``, ``gamma`` +hkl ``h``, ``k``, ``l`` lifting_detector_kphi ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``kphi``, ``delta``, ``gamma`` +hkl ``h``, ``k``, ``l`` lifting_detector_mu ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``mu``, ``delta``, ``gamma`` +hkl ``h``, ``k``, ``l`` psi_constant_vertical ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``komega``, ``kappa``, ``kphi``, ``gamma`` ``h2``, ``k2``, ``l2``, ``psi`` +incidence ``incidence``, ``azimuth`` incidence ``mu``, ``komega``, ``kappa``, ``kphi`` ``x``, ``y``, ``z`` +psi ``psi`` psi_vertical_soleil_sirius_kappa ``mu``, ``komega``, ``kappa``, ``kphi``, ``delta``, ``gamma`` ``komega``, ``kappa``, ``kphi``, ``gamma`` ``h2``, ``k2``, ``l2`` +q2 ``q``, ``alpha`` q2 ``gamma``, ``delta`` ``gamma``, ``delta`` +qper_qpar ``qper``, ``qpar`` qper_qpar ``gamma``, ``delta`` ``gamma``, ``delta`` ``x``, ``y``, ``z`` +tth2 ``tth``, ``alpha`` tth2 ``gamma``, ``delta`` ``gamma``, ``delta`` +========= =========================== ================================ ============================================================= ===================================================== =============================================== + +.. index:: SOLEIL_SIRIUS_TURRET, geometry; SOLEIL_SIRIUS_TURRET + +.. _SOLEIL_SIRIUS_TURRET_table: + +Geometry: ``SOLEIL SIRIUS TURRET`` +++++++++++++++++++++++++++++++++++ -real axes: ``mu``, ``omega``, ``delta``, ``gamma`` - -========= ========================== ============ =================== -engine pseudo_axes mode parameters -========= ========================== ============ =================== -hkl ``h``, ``k``, ``l`` zaxis -hkl ``h``, ``k``, ``l`` reflectivity -q2 ``q``, ``alpha`` q2 -qper_qpar ``qper``, ``qpar`` qper_qpar ``x``, ``y``, ``z`` -tth2 ``tth``, ``alpha`` tth2 -incidence ``incidence``, ``azimuth`` incidence ``x``, ``y``, ``z`` -emergence ``emergence``, ``azimuth`` emergence ``x``, ``y``, ``z`` -========= ========================== ============ =================== +* real axes: ``basepitch``, ``thetah``, ``alphay``, ``alphax``, ``delta``, ``gamma`` +* pseudo axes: depends on the engine + +========= ========================== ======================= ======================================================================= ================================ =================== +engine pseudo axes mode axes read axes written extra parameters +========= ========================== ======================= ======================================================================= ================================ =================== +emergence ``emergence``, ``azimuth`` emergence ``basepitch``, ``thetah``, ``alphay``, ``alphax``, ``delta``, ``gamma`` ``x``, ``y``, ``z`` +hkl ``h``, ``k``, ``l`` lifting_detector_thetah ``basepitch``, ``thetah``, ``alphay``, ``alphax``, ``delta``, ``gamma`` ``thetah``, ``delta``, ``gamma`` +incidence ``incidence``, ``azimuth`` incidence ``basepitch``, ``thetah``, ``alphay``, ``alphax`` ``x``, ``y``, ``z`` +q2 ``q``, ``alpha`` q2 ``gamma``, ``delta`` ``gamma``, ``delta`` +qper_qpar ``qper``, ``qpar`` qper_qpar ``gamma``, ``delta`` ``gamma``, ``delta`` ``x``, ``y``, ``z`` +tth2 ``tth``, ``alpha`` tth2 ``gamma``, ``delta`` ``gamma``, ``delta`` +========= ========================== ======================= ======================================================================= ================================ =================== + +.. index:: SOLEIL_SIXS_MED1+2, geometry; SOLEIL_SIXS_MED1+2 + +.. _SOLEIL_SIXS_MED1+2_table: + +Geometry: ``SOLEIL SIXS MED1+2`` +++++++++++++++++++++++++++++++++ + +* real axes: ``pitch``, ``mu``, ``gamma``, ``delta`` +* pseudo axes: depends on the engine + +========= ========================== =========== ======================================= ============================ =================== +engine pseudo axes mode axes read axes written extra parameters +========= ========================== =========== ======================================= ============================ =================== +emergence ``emergence``, ``azimuth`` emergence ``pitch``, ``mu``, ``gamma``, ``delta`` ``x``, ``y``, ``z`` +hkl ``h``, ``k``, ``l`` delta_fixed ``pitch``, ``mu``, ``gamma``, ``delta`` ``pitch``, ``mu``, ``gamma`` +hkl ``h``, ``k``, ``l`` pitch_fixed ``pitch``, ``mu``, ``gamma``, ``delta`` ``mu``, ``gamma``, ``delta`` +incidence ``incidence``, ``azimuth`` incidence ``pitch``, ``mu`` ``x``, ``y``, ``z`` +q2 ``q``, ``alpha`` q2 ``gamma``, ``delta`` ``gamma``, ``delta`` +qper_qpar ``qper``, ``qpar`` qper_qpar ``gamma``, ``delta`` ``gamma``, ``delta`` ``x``, ``y``, ``z`` +tth2 ``tth``, ``alpha`` tth2 ``gamma``, ``delta`` ``gamma``, ``delta`` +========= ========================== =========== ======================================= ============================ =================== + +.. index:: SOLEIL_SIXS_MED2+2, geometry; SOLEIL_SIXS_MED2+2 + +.. _SOLEIL_SIXS_MED2+2_table: + +Geometry: ``SOLEIL SIXS MED2+2`` +++++++++++++++++++++++++++++++++ + +* real axes: ``beta``, ``mu``, ``omega``, ``gamma``, ``delta`` +* pseudo axes: depends on the engine + +========= ========================== =============== ================================================= ======================================= ================================== +engine pseudo axes mode axes read axes written extra parameters +========= ========================== =============== ================================================= ======================================= ================================== +emergence ``emergence``, ``azimuth`` emergence ``beta``, ``mu``, ``omega``, ``gamma``, ``delta`` ``x``, ``y``, ``z`` +hkl ``h``, ``k``, ``l`` emergence_fixed ``beta``, ``mu``, ``omega``, ``gamma``, ``delta`` ``mu``, ``omega``, ``gamma``, ``delta`` ``x``, ``y``, ``z``, ``emergence`` +hkl ``h``, ``k``, ``l`` mu_fixed ``beta``, ``mu``, ``omega``, ``gamma``, ``delta`` ``omega``, ``gamma``, ``delta`` +hkl ``h``, ``k``, ``l`` reflectivity ``beta``, ``mu``, ``omega``, ``gamma``, ``delta`` ``mu``, ``omega``, ``gamma``, ``delta`` +incidence ``incidence``, ``azimuth`` incidence ``beta``, ``mu``, ``omega`` ``x``, ``y``, ``z`` +q2 ``q``, ``alpha`` q2 ``gamma``, ``delta`` ``gamma``, ``delta`` +qper_qpar ``qper``, ``qpar`` qper_qpar ``gamma``, ``delta`` ``gamma``, ``delta`` ``x``, ``y``, ``z`` +tth2 ``tth``, ``alpha`` tth2 ``gamma``, ``delta`` ``gamma``, ``delta`` +========= ========================== =============== ================================================= ======================================= ================================== + +.. index:: SOLEIL_SIXS_MED2+3, geometry; SOLEIL_SIXS_MED2+3 + +.. _SOLEIL_SIXS_MED2+3_table: + +Geometry: ``SOLEIL SIXS MED2+3`` +++++++++++++++++++++++++++++++++ + +* real axes: ``beta``, ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` +* pseudo axes: depends on the engine + +========= ========================== =============== ============================================================ ======================================= ================================== +engine pseudo axes mode axes read axes written extra parameters +========= ========================== =============== ============================================================ ======================================= ================================== +emergence ``emergence``, ``azimuth`` emergence ``beta``, ``mu``, ``omega``, ``gamma``, ``delta`` ``x``, ``y``, ``z`` +hkl ``h``, ``k``, ``l`` emergence_fixed ``beta``, ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` ``mu``, ``omega``, ``gamma``, ``delta`` ``x``, ``y``, ``z``, ``emergence`` +hkl ``h``, ``k``, ``l`` gamma_fixed ``beta``, ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` ``mu``, ``omega``, ``delta`` +hkl ``h``, ``k``, ``l`` mu_fixed ``beta``, ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` ``omega``, ``gamma``, ``delta`` +incidence ``incidence``, ``azimuth`` incidence ``beta``, ``mu``, ``omega`` ``x``, ``y``, ``z`` +q2 ``q``, ``alpha`` q2 ``gamma``, ``delta`` ``gamma``, ``delta`` +qper_qpar ``qper``, ``qpar`` qper_qpar ``gamma``, ``delta`` ``gamma``, ``delta`` ``x``, ``y``, ``z`` +tth2 ``tth``, ``alpha`` tth2 ``gamma``, ``delta`` ``gamma``, ``delta`` +========= ========================== =============== ============================================================ ======================================= ================================== + +.. index:: SOLEIL_SIXS_MED2+3_v2, geometry; SOLEIL_SIXS_MED2+3_v2 + +.. _SOLEIL_SIXS_MED2+3_v2_table: + +Geometry: ``SOLEIL SIXS MED2+3 v2`` ++++++++++++++++++++++++++++++++++++ + +* real axes: ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` +* pseudo axes: depends on the engine + +========= ========================== =============== ================================================== ======================================= ================================== +engine pseudo axes mode axes read axes written extra parameters +========= ========================== =============== ================================================== ======================================= ================================== +emergence ``emergence``, ``azimuth`` emergence ``beta``, ``mu``, ``omega``, ``gamma``, ``delta`` ``x``, ``y``, ``z`` +hkl ``h``, ``k``, ``l`` emergence_fixed ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` ``mu``, ``omega``, ``gamma``, ``delta`` ``x``, ``y``, ``z``, ``emergence`` +hkl ``h``, ``k``, ``l`` gamma_fixed ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` ``mu``, ``omega``, ``delta`` +hkl ``h``, ``k``, ``l`` mu_fixed ``mu``, ``omega``, ``gamma``, ``delta``, ``eta_a`` ``omega``, ``gamma``, ``delta`` +incidence ``incidence``, ``azimuth`` incidence ``beta``, ``mu``, ``omega`` ``x``, ``y``, ``z`` +q2 ``q``, ``alpha`` q2 ``gamma``, ``delta`` ``gamma``, ``delta`` +qper_qpar ``qper``, ``qpar`` qper_qpar ``gamma``, ``delta`` ``gamma``, ``delta`` ``x``, ``y``, ``z`` +tth2 ``tth``, ``alpha`` tth2 ``gamma``, ``delta`` ``gamma``, ``delta`` +========= ========================== =============== ================================================== ======================================= ================================== + +.. index:: ZAXIS, geometry; ZAXIS + +.. _ZAXIS_table: + +Geometry: ``ZAXIS`` ++++++++++++++++++++ + +* real axes: ``mu``, ``omega``, ``delta``, ``gamma`` +* pseudo axes: depends on the engine + +========= ========================== ============ ======================================= ======================================= =================== +engine pseudo axes mode axes read axes written extra parameters +========= ========================== ============ ======================================= ======================================= =================== +emergence ``emergence``, ``azimuth`` emergence ``mu``, ``omega``, ``delta``, ``gamma`` ``x``, ``y``, ``z`` +hkl ``h``, ``k``, ``l`` reflectivity ``mu``, ``omega``, ``delta``, ``gamma`` ``mu``, ``omega``, ``delta``, ``gamma`` +hkl ``h``, ``k``, ``l`` zaxis ``mu``, ``omega``, ``delta``, ``gamma`` ``omega``, ``delta``, ``gamma`` +incidence ``incidence``, ``azimuth`` incidence ``mu``, ``omega`` ``x``, ``y``, ``z`` +q2 ``q``, ``alpha`` q2 ``gamma``, ``delta`` ``gamma``, ``delta`` +qper_qpar ``qper``, ``qpar`` qper_qpar ``gamma``, ``delta`` ``gamma``, ``delta`` ``x``, ``y``, ``z`` +tth2 ``tth``, ``alpha`` tth2 ``gamma``, ``delta`` ``gamma``, ``delta`` +========= ========================== ============ ======================================= ======================================= =================== diff --git a/hkl/calc.py b/hkl/calc.py index a2c4dde6..9594d918 100644 --- a/hkl/calc.py +++ b/hkl/calc.py @@ -143,6 +143,7 @@ class CalcRecip(object): ~forward ~forward_iter ~geometry_name + ~geometry_table ~get_path ~inverse ~inverted_axes @@ -309,6 +310,71 @@ def geometry_name(self): """Name of this geometry, as defined in **libhkl**.""" return self._geometry.name_get() + def geometry_table(self, rst=False): + """ + Describe this geometry in a table. + + Parameters + ---------- + rst : *bool* + When True, format using restructured text. Otherwise, + use a simpler representation + """ + import sys + + import pyRestTable + + def format_name_list(names): + if rst: + names = [f"``{k}``" for k in names] + return ", ".join(names) + + cname = self.__class__.__name__ + gname = self.geometry_name + engines = list(self.engines.keys()) + real_axes = format_name_list(self.physical_axis_names) + + table = pyRestTable.Table() + table.addLabel("engine") + table.addLabel("pseudo axes") + table.addLabel("mode") + table.addLabel("axes read") + table.addLabel("axes written") + table.addLabel("extra parameters") + for engine in sorted(engines): + # Engine setting is locked when class is created. Default is "hkl". + # make new goniometer with chosen engine. The "trick" here + # is to get the class from __this__ module. + # See: https://stackoverflow.com/a/7668273/1046449 + gonio = getattr(sys.modules[__name__], cname)(engine=engine) + for mode in sorted(gonio.engine.modes): + gonio.engine.mode = mode # + axes_r = format_name_list(gonio.engine._engine.axis_names_get(0)) + axes_w = format_name_list(gonio.engine._engine.axis_names_get(1)) + parameters = format_name_list(gonio.parameters) + pseudo_axes = format_name_list(gonio.pseudo_axis_names) + row = [engine, pseudo_axes, mode, axes_r, axes_w, parameters] + table.addRow(row) + + if rst: + gname_safe = gname.replace(" ", "_") + print(f".. index:: {gname_safe}, geometry; {gname_safe}") + print() + print(f".. _{gname_safe}_table:") + print() + title = f"Geometry: ``{self.geometry_name}``" + print(title) + print("+" * len(title)) + print() + print(f"* real axes: {real_axes}") + print("* pseudo axes: depends on the engine") + else: + print(f"Geometry: {self.geometry_name}") + print(f" real axes: {real_axes}") + print(" pseudo axes: depends on the engine") + print() + print(table) + def _get_sample(self, name): if isinstance(name, libhkl.Sample): return name @@ -570,10 +636,10 @@ def forward_iter(self, start, end, max_iters, *, threshold=0.99, decision_fcn=No Normalized proximity to `end` position to stop iterating decision_fcn : callable, optional Function to choose a solution from several. Defaults to picking the - first solution. The signature of the function should be as follows: + first solution. Here is the default ``decision_fcn()``:: - >> def decision(pseudo_position, solution_list): - >> return solution_list[0] + def decision(pseudo_position, solution_list): + return solution_list[0] Returns ------- diff --git a/hkl/diffract.py b/hkl/diffract.py index 390f9cfb..67bcb312 100644 --- a/hkl/diffract.py +++ b/hkl/diffract.py @@ -53,6 +53,7 @@ class Diffractometer(PseudoPositioner): ~undo_last_constraints ~pa ~wh + ~geometry_table PRIVATE API @@ -834,3 +835,11 @@ def wh(self, printing=True): print(table) return table + + def geometry_table(self): + """ + Print a table describing this diffractometer geometry. + + Calls :meth:`hkl.calc.CalcRecip.geometry_table()`. + """ + self.calc.geometry_table()