[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