<?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-2017 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>