[Nexus] Suggestions for NeXus from CIF
Pete R. Jemian
prjemian at gmail.com
Thu Apr 8 23:09:26 BST 2010
Two comments on the axis suggestions.
On 4/6/2010 3:02 AM, Mark Koennecke wrote:
> Axis Suggestions for NeXus ---------------------------
> 1) NeXus stays with the McStas coordinate system.
McStas is not very restrictive.
It only defines the coordinate axes.
It does not describe rotations.
For those that want to see the McStas definition,
refer to the components manual, page 11,
http://mcstas.risoe.dk/documentation/manual/mcstas-1.12a-components.pdf
"All mentioning of component geometry refer to the local coordinate
system of the individual component. The axis convention is so that the z
axis is along the neutron propagation axis, the y axis is vertical up,
and the x axis points left when looking along the z-axis, completing a
right-handed coordinate system. Most components ’position’ (as specified
in the instrument description with the AT keyword) corresponds to their
input side at the nominal beam position. However, a few components are
radial and thus positioned in their centre."
Similar information is provided in the user and programmers manual, page 70
http://mcstas.risoe.dk/documentation/manual/mcstas-1.12a-manual.pdf
"The instrument is given a global, absolute coordinate system. In
addition, every component in the instrument has its own local coordinate
system that can be given any desired position and orientation (though
the position and orientation must remain fixed for the duration of a
single simulation). By convention, the z axis points in the direction of
the beam, the x axis is perpendicular to the beam in the horizontal
plane pointing left as seen from the source, and the y axis points upwards."
>
> 2) NeXus uses the vector and offset scheme to document existing NeXus
> axis. The base of all operations is always the component, if not
> specified by an offset vector. Rotations are in degree, translations in
> milimetre.
> - rotation_angle has a vector 0 1 0, rotation around Y
> - azimuthal_angle is a rotation around Z, vector = 0 0 1
> - polar_angle is also a rotation around Y, vector 0 1 0, but as the
> rotation axis is with the previous component upstream, we have an
> offset of 0 0 -distance
*Now* I know why I have a problem with this. There is *no* description
for a rotation about the X axis. Synchrotron instruments (with a few
exceptions of course) use a rotation angle that rotates about the X axis
(in the vertical plane) because the polarization of the synchrotron
X-ray beam is in the horizontal plane. Scanning around the Y axis would
produce a very low intensity beam for scattering in the X direction!
Some lab X-ray instruments also scan in the vertical plane but this is
not because of polarization but perhaps for a liquid scattering
instrument. Most neutron instruments don't have this polarization
constraint on their design. They can use a rotation angle about the Y
axis for the very practical matter that the detectors would not have to
be raised and lowered.
To me, this definition of rotation_angle has much room for improvement.
One possible backwards-compatible improvement would be to say the
default rotation_angle has vector "0 1 0" and then specify with an
optional attribute a different vector.
Pete
--
----------------------------------------------------------
Pete R. Jemian, Ph.D. <jemian at anl.gov>
Beam line Controls and Data Acquisition, Group Leader
Advanced Photon Source, Argonne National Laboratory
Argonne, IL 60439 630 - 252 - 3189
-----------------------------------------------------------
Education is the one thing for which people
are willing to pay yet not receive.
-----------------------------------------------------------
More information about the NeXus
mailing list