Physical information in components

Let's look at the physical information of 'dcm' from P08.

haspp08% nxsconfig geometry -s haspp08mono:10000/p08/nxsconfigserver/haspp08 dcm

    Component: 'dcm'

nexus_path                                             source_name units trans_type  trans_vector trans_offset depends_on
------------------------------------------------------ ----------- ----- ----------- ------------ ------------ -------------------------------
scan/instrument/dcm/crystal1/usage
scan/instrument/dcm/crystal1/type
scan/instrument/dcm/crystal1/reflection
scan/instrument/dcm/crystal1/depends_on                                                                        [transformations/dcm_lat]
scan/instrument/dcm/crystal1/transformations/dcm_lat   goni_lat    mm    translation 1 0 0                     dcm_yaw
scan/instrument/dcm/crystal1/transformations/dcm_yaw   goni_yaw    mm    rotation    0 1 0                     ../../transformations/dcm_bragg
scan/instrument/dcm/crystal2/usage
scan/instrument/dcm/crystal2/type
scan/instrument/dcm/crystal2/reflection
scan/instrument/dcm/crystal2/depends_on                                                                        [transformations/dcm_roll2]
scan/instrument/dcm/crystal2/transformations/dcm_roll2 c2_roll     deg   rotation    0 0 1                     dcm_pitch
scan/instrument/dcm/crystal2/transformations/dcm_pitch c2_pitch    deg   rotation    -1 0 0                    dcm_perp
scan/instrument/dcm/crystal2/transformations/dcm_perp  c2_perp     mm    translation 0 1 0                     dcm_para
scan/instrument/dcm/crystal2/transformations/dcm_para  c2_para     mm    translation 0 0 1                     ../../transformations/dcm_bragg
scan/instrument/dcm/transformations/dcm_bragg          dcm_bragg   deg   rotation    -1 0 0                    dcm_z1
scan/instrument/dcm/transformations/dcm_z1             jack_1      mm    translation 0 1 0
scan/instrument/dcm/transformations/dcm_z2             jack_2      mm    translation 0 1 0
scan/instrument/dcm/transformations/dcm_z3             jack_3      mm    translation 0 1 0
scan/instrument/dcm/energy                             energyfmb   eV

According to NeXus standard to read the order of transformations we start from a 'depends_on' field, i.e. the most top motor, and we go down reading the next motors from 'depends_on' attributes, i.e in the depends_on column.

E.g. for 'dcm' we can start from

    scan/instrument/dcm/crystal1/depends_on

which points the following chain

    transformations/dcm_lat
    dcm_yaw
    ../../transformations/dcm_bragg
    dcm_z1

Moreover, each motor corresponds to a transformation, i.e. a translation or rotation from the trans_type column, in the direction of trans_vector in the NeXus coordinate frame. The transformations are performed from bottom. Firstly, we move our coordinate system up (according to 'dcm_z1'), next on our coordinate system we perform the 'dcm_bragg' rotation, then the 'dcm_yaw' rotation and finally the 'dcm_lat' translation. Additionally, before each transformation we can perform a offset translation given by trans_offset.9.3

2019-11-13