Skip to content
Snippets Groups Projects
NXstxm.nxdl.xml 9.91 KiB
Newer Older
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="nxdlformat.xsl" ?>
<!-- 
  # NeXus - Neutron and X-ray Common Data Format
  # 
  # Copyright (C) 2014-2016 NeXus International Advisory Committee (NIAC)
  # 
  # This library is free software; you can redistribute it and/or
  # modify it under the terms of the GNU Lesser General Public
  # License as published by the Free Software Foundation; either
  # version 3 of the License, or (at your option) any later version. 
  # 
  # This library is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  # Lesser General Public License for more details.
  #
  # You should have received a copy of the GNU Lesser General Public
  # License along with this library; if not, write to the Free Software
  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  #
  # For further information, see http://www.nexusformat.org 
-->
<definition name="NXstxm" extends="NXobject" type="group"
    category="application"
    xmlns="http://definition.nexusformat.org/nxdl/3.1"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd"
    version="1.1"
    >
    <symbols>
        <doc>These symbols will be used below to coordinate the shapes of the datasets.</doc>
        <symbol name="numP"><doc>total number of scan points</doc></symbol>
        <symbol name="numE"><doc>number of photon energies scanned</doc></symbol>
        <symbol name="numY"><doc>number of pixels in Y direction</doc></symbol>
        <symbol name="numX"><doc>number of pixels in X direction</doc></symbol>
    </symbols>
    <doc>
          Application definition for a STXM instrument. 
          
          The interferometer
          position measurements, monochromator photon energy values and
          detector measurements are all treated as NXdetectors and stored
          within the NXinstrument group as lists of values stored in 
          chronological order. The NXdata group then holds another version
          of the data in a regular 3D array (NumE by NumY by NumX, for a
          total of NumP points in a sample image stack type scan). The former
          data values should be stored with a minimum loss of precision, while
          the latter values can be simplified and/or approximated in order to
          fit the constraints of a regular 3D array. 'Line scans' and 'point spectra'
          are just sample_image scan types with reduced dimensions in the same way 
          as single images have reduced E dimensions compared to image 'stacks'.
    </doc>
    <group type="NXentry">
        <field name="title"/>
        <field name="start_time" type="NX_DATE_TIME"/>
        <field name="end_time" type="NX_DATE_TIME"/>
        <field name="definition" type="NX_CHAR" minOccurs="1" maxOccurs="1">
            <doc> Official NeXus NXDL schema to which this file conforms </doc>
            <enumeration>
                <item value="NXstxm"/>
            </enumeration>
        </field>
        <group type="NXinstrument" minOccurs="1" maxOccurs="1"> 
            <group type="NXsource" minOccurs="1" maxOccurs="1">
                <field name="type" minOccurs="1" maxOccurs="1"/>
                <field name="name" minOccurs="1" maxOccurs="1"/>
                <field name="probe" minOccurs="1" maxOccurs="1"/>
            </group>
            <group type="NXmonochromator" name="monochromator" minOccurs="1" maxOccurs="1">
              <field name="energy" minOccurs="1" maxOccurs="1">
                <dimensions rank="1">
                  <dim index="1" value="NumP" />
                </dimensions>
              </field>
            </group>
            <group type="NXdetector" minOccurs="1">
                <field name="data" type="NX_NUMBER">
                  <dimensions>
                    <doc> Detector data should be presented with the first dimension corresponding to the
                    scan point and subsequent dimensions corresponding to the output of the detector.
                    Detectors that provide more than one value per scan point should have
                    a data array of rank 1+d, where d is the dimensions of the array provided per
                    scan point. For example, an area detector should have an NXdetector data array
                    of 3 dimensions, with the first being the set of scan points and the latter 
                    two being the x- and y- extent of the detector </doc>
                    <dim index="1" value="NumP" />
                  </dimensions>
                </field>
            </group>
            <group type="NXdetector" name="sample_x" minOccurs="0" maxOccurs="1">
                <doc> Measurements of the sample position from the x-axis interferometer.</doc>
                <field name="data" type="NX_FLOAT">
                  <dimensions rank="1">
                    <dim index="1" value="NumP" />
                  </dimensions>
                </field>
            </group>
            <group type="NXdetector" name="sample_y" minOccurs="0" maxOccurs="1">
                <doc> Measurements of the sample position from the y-axis interferometer.</doc>
                <field name="data" type="NX_FLOAT">
                  <dimensions rank="1">
                    <dim index="1" value="NumP" />
                  </dimensions>
                </field>
            </group>
            <group type="NXdetector" name="sample_z" minOccurs="0" maxOccurs="1">
                <doc> Measurements of the sample position from the z-axis interferometer.</doc>
                <field name="data" type="NX_FLOAT">
                  <dimensions rank="1">
                    <dim index="1" value="NumP" />
                  </dimensions>
                </field>
            </group>
        </group>
        <group type="NXsample">
            <field name="rotation_angle" type="NX_FLOAT" />
        </group> 
        <group type="NXdata">
            <field name="stxm_scan_type" minOccurs="1" maxOccurs="1">
                <doc> Label for typical scan types as a convenience for humans. 
                Each label corresponds to a specific set of axes being scanned 
                to produce a data array of shape:
                
                * sample point spectrum: (photon_energy,)
                * sample line spectrum: (photon_energy, sample_y/sample_x)
                * sample image: (sample_y, sample_x)
                * sample image stack: (photon_energy, sample_y, sample_x)
                * sample focus: (zoneplate_z, sample_y/sample_x)
                * osa image: (osa_y, osa_x)
                * osa focus: (zoneplate_z, osa_y/osa_x)
                * detector image: (detector_y, detector_x)
                
                The "generic scan" string is to be used when none of the 
                other choices are appropriate.
                </doc>
                <enumeration>
                    <item value="sample point spectrum"/>
                    <item value="sample line spectrum"/>
                    <item value="sample image"/>
                    <item value="sample image stack"/>
                    <item value="sample focus"/>
                    <item value="osa image"/>
                    <item value="osa focus"/>
                    <item value="detector image"/>
                    <item value="generic scan"/>
                </enumeration>
            </field>
            <field name="data" type="NX_NUMBER" signal="1">
              <doc> Detectors that provide more than one value per scan point should be summarised
              to a single value per scan point for this array in order to simplify plotting.
              
              Note that 'Line scans' and focus type scans measure along one spatial dimension
              but are not restricted to being parallel to the X or Y axes. Such scans 
              should therefore use a single dimension for the positions along the spatial
              line. The 'sample_x' and 'sample_y' fields should then contain lists of the
              x- and y-positions and should both have the 'axis' attribute pointing to the same dimension.</doc>
            </field>
            <field name="energy" type="NX_FLOAT" minOccurs="1" maxOccurs="1">
              <doc> List of photon energies of the X-ray beam. If scanned through multiple values,
              then an 'axis' attribute will be required to link the field to the appropriate data array dimension.</doc>
              <dimensions rank="1">
                <dim index="1" value="NumE" />
              </dimensions>
            </field>
            <field name="sample_y" type="NX_FLOAT" minOccurs="1" maxOccurs="1">
              <doc> List of Y positions on the sample. If scanned through multiple values,
              then an 'axis' attribute will be required to link the field to the appropriate data array dimension.</doc>
              <dimensions rank="1">
                <dim index="1" value="NumY" />
              </dimensions>
            </field>
            <field name="sample_x" type="NX_FLOAT" minOccurs="1" maxOccurs="1">
              <doc> List of X positions on the sample. If scanned through multiple values,
              then an 'axis' attribute will be required to link the field to the appropriate data array dimension.</doc>
              <dimensions rank="1">
                <dim index="1" value="NumX" />
              </dimensions>
            </field>
        </group>
        <group type="NXmonitor" name="control" minOccurs="0" maxOccurs="1">
            <field name="data" type="NX_FLOAT">
              <doc> Values to use to normalise for time-variations in photon flux. Typically, the synchrotron storage ring
              electron beam current is used as a proxy for the X-ray beam intensity. Array must have same shape as the
              NXdata groups.</doc>
            </field>
        </group>
    </group>
</definition>