[Nexus] Suggestions for NeXus from CIF

Mark Koennecke Mark.Koennecke at psi.ch
Mon Apr 12 07:24:16 BST 2010


Pete,

Pete R. Jemian wrote:
> 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."
>
>
Do you mean that McStas is not well enough defined?
>>
>> 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.
I realized that there is no rotation around the X axis in NeXus and 
suggestion 6 is there to fix this.
>
> 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.
>
Mark

> Pete
>
>



More information about the NeXus mailing list