From dd63346b9e9548589c9bbdf8c004e471d19267e2 Mon Sep 17 00:00:00 2001 From: Florian Dobener Date: Fri, 5 Jul 2024 13:53:12 +0200 Subject: [PATCH] Use central pynx mechanism for tests (#18) * Use central pynx mechanism for tests * Update example file * Add example regeneration script * Update file to newest definitions * Track nxs files with lfs * Readd example file * Enable lfs in workflow --- .gitattributes | 1 + .github/workflows/pytest.yml | 1 + scripts/regenerate_examples.sh | 13 + tests/data/Ref_nexus_mpes.log | 7166 -------------------------------- tests/data/example.nxs | 3 + tests/test_reader.py | 117 +- 6 files changed, 32 insertions(+), 7269 deletions(-) create mode 100644 .gitattributes create mode 100755 scripts/regenerate_examples.sh delete mode 100644 tests/data/Ref_nexus_mpes.log create mode 100644 tests/data/example.nxs diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..4ecce6d --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.nxs filter=lfs diff=lfs merge=lfs -text diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 2080283..eadf521 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -22,6 +22,7 @@ jobs: with: fetch-depth: 0 submodules: recursive + lfs: true - name: Set up Python ${{ matrix.python_version }} uses: actions/setup-python@v4 with: diff --git a/scripts/regenerate_examples.sh b/scripts/regenerate_examples.sh new file mode 100755 index 0000000..f7295b9 --- /dev/null +++ b/scripts/regenerate_examples.sh @@ -0,0 +1,13 @@ +#!/bin/bash +READER=mpes +NXDL=NXmpes + +function update_mpes_example { + echo "Update mpes example" + dataconverter xarray_saved_small_calibration.h5 config_file.json --reader $READER --nxdl $NXDL --output example.nxs +} + +project_dir=$(dirname $(dirname $(realpath $0))) +cd $project_dir/tests/data + +update_mpes_example \ No newline at end of file diff --git a/tests/data/Ref_nexus_mpes.log b/tests/data/Ref_nexus_mpes.log deleted file mode 100644 index fd825cf..0000000 --- a/tests/data/Ref_nexus_mpes.log +++ /dev/null @@ -1,7166 +0,0 @@ -DEBUG - ===== GROUP (//entry [NXmpes::/NXentry]): -DEBUG - classpath: ['NXentry'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY -NXentry.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY): -DEBUG - -DEBUG - documentation (NXentry.nxdl.xml:): -DEBUG - - (**required**) :ref:`NXentry` describes the measurement. - - The top-level NeXus group which contains all the data and associated - information that comprise a single measurement. - It is mandatory that there is at least one - group of this type in the NeXus file. - -DEBUG - ===== ATTRS (//entry@NX_class) -DEBUG - value: NXentry -DEBUG - classpath: ['NXentry'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY -NXentry.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== ATTRS (//entry@default) -DEBUG - value: data -DEBUG - classpath: ['NXentry'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY -NXentry.nxdl.xml: -DEBUG - NXmpes.nxdl.xml:/ENTRY@default - [NX_CHAR] -DEBUG - NXentry.nxdl.xml:@default - [NX_CHAR] -DEBUG - documentation (NXentry.nxdl.xml:/default): -DEBUG - - .. index:: find the default plottable data - .. index:: plotting - .. index:: default attribute value - - Declares which :ref:`NXdata` group contains the data - to be shown by default. - It is used to resolve ambiguity when - one :ref:`NXdata` group exists. - The value :ref:`names ` a child group. If that group - itself has a ``default`` attribute, continue this chain until an - :ref:`NXdata` group is reached. - - For more information about how NeXus identifies the default - plottable data, see the - :ref:`Find Plottable Data, v3 ` - section. - -DEBUG - ===== FIELD (//entry/collection_time): -DEBUG - value: 2317.343 -DEBUG - classpath: ['NXentry', 'NX_FLOAT'] -DEBUG - classes: -NXentry.nxdl.xml:/collection_time -DEBUG - <> -DEBUG - documentation (NXentry.nxdl.xml:/collection_time): -DEBUG - - Time transpired actually collecting data i.e. taking out time when collection was - suspended due to e.g. temperature out of range - -DEBUG - ===== ATTRS (//entry/collection_time@units) -DEBUG - value: s -DEBUG - classpath: ['NXentry', 'NX_FLOAT'] -DEBUG - classes: -NXentry.nxdl.xml:/collection_time -DEBUG - NXentry.nxdl.xml:/collection_time@units [NX_TIME] -DEBUG - ===== GROUP (//entry/data [NXmpes::/NXentry/NXdata]): -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/data): -DEBUG - - The default NXdata field containing a view on the measured data. - This NXdata field contains a collection of the main relevant fields (axes). - If you want to provide additional views on your data, you can additionally use - the generic NXdata group of NXentry. - - In NXmpes, it is recommended to provide an energy axis. - - Fields should be named according to the following convention: - - - **energy**: Calibrated energy (kinetic or binding energy). Unit category: NX_ENERGY (e.g., eV). - - **kx**: Calibrated x axis in k-space. Unit category: NX_ANY (e.g., 1/Angström). - - **ky**: Calibrated y axis in k-space. Unit category: NX_ANY (1/Angström). - - **kz**: Calibrated z axis in k-space. Unit category: NX_ANY (1/Angström). - - **angular0**: Fast-axis angular coordinate (or second slow axis if angularly integrated). - Unit category: NX_ANGLE - - **angular1**: Slow-axis angular coordinate (or second fast axis if simultaneously dispersed in 2 dimensions) - Unit category: NX_ANGLE - - **spatial0**: Fast-axis spatial coordinate (or second slow axis if spatially integrated) - Unit category: NX_LENGTH - - **spatial1**: Slow-axis spatial coordinate (or second fast axis if simultaneously dispersed in 2 dimensions) - Unit category: NX_LENGTH - - **delay**: Calibrated delay time. Unit category: NX_TIME (s). - - **polarization_angle**: Linear polarization angle of the incoming or - outgoing beam. This could be a link to - /entry/instrument/beam/incident_polarization_angle or - /entry/instrument/beam/final_polarization_angle if they exist. - Unit category: NX_ANGLE (° or rad) - - **ellipticity**: Ellipticity of the incoming or outgoing beam. - Could be a link to /entry/instrument/beam/incident_ellipticity or - /entry/instrument/beam/final_ellipticity if they exist. - Unit category: NX_ANGLE (° or rad) - -DEBUG - documentation (NXentry.nxdl.xml:/DATA): -DEBUG - - The data group - - .. note:: Before the NIAC2016 meeting [#]_, at least one - :ref:`NXdata` group was required in each :ref:`NXentry` group. - At the NIAC2016 meeting, it was decided to make :ref:`NXdata` - an optional group in :ref:`NXentry` groups for data files that - do not use an application definition. - It is recommended strongly that all NeXus data files provide - a NXdata group. - It is permissable to omit the NXdata group only when - defining the default plot is not practical or possible - from the available data. - - For example, neutron event data may not have anything that - makes a useful plot without extensive processing. - - Certain application definitions override this decision and - require an :ref:`NXdata` group - in the :ref:`NXentry` group. The ``minOccurs=0`` attribute - in the application definition will indicate the - :ref:`NXdata` group - is optional, otherwise, it is required. - - .. [#] NIAC2016: - https://www.nexusformat.org/NIAC2016.html, - https://github.com/nexusformat/NIAC/issues/16 - -DEBUG - documentation (NXdata.nxdl.xml:): -DEBUG - - :ref:`NXdata` describes the plottable data and related dimension scales. - - .. index:: plotting - - It is strongly recommended that there is at least one :ref:`NXdata` - group in each :ref:`NXentry` group. - Note that the fields named ``AXISNAME`` and ``DATA`` - can be defined with different names. - (Upper case is used to indicate that the actual name is left to the user.) - The ``signal`` and ``axes`` attributes of the - ``data`` group define which items - are plottable data and which are *dimension scales*, respectively. - - :ref:`NXdata` is used to implement one of the basic motivations in NeXus, - to provide a default plot for the data of this :ref:`NXentry`. The actual data - might be stored in another group and (hard) linked to the :ref:`NXdata` group. - - * Each :ref:`NXdata` group will define one field as the default - plottable data. The value of the ``signal`` attribute names this field. - Additional fields may be used to describe the dimension scales and - uncertainities. - The ``auxiliary_signals`` attribute is a list of the other fields - to be plotted with the ``signal`` data. - * The plottable data may be of arbitrary rank up to a maximum - of ``NX_MAXRANK=32`` (for compatibility with backend file formats). - * The plottable data will be named as the value of - the group ``signal`` attribute, such as:: - - data:NXdata - @signal = "counts" - @axes = "mr" - @mr_indices = 0 - counts: float[100] --> the default dependent data - mr: float[100] --> the default independent data - - The field named in the ``signal`` attribute **must** exist, either - directly as a NeXus field or defined through a link. - - * The group ``axes`` attribute will name the - *dimension scale* associated with the plottable data. - - If available, the standard deviations of the data are to be - stored in a data set of the same rank and dimensions, with the name ``errors``. - - * For each data dimension, there should be a one-dimensional array - of the same length. - * These one-dimensional arrays are the *dimension scales* of the - data, *i.e*. the values of the independent variables at which the data - is measured, such as scattering angle or energy transfer. - - .. index:: link - .. index:: axes (attribute) - - The preferred method to associate each data dimension with - its respective dimension scale is to specify the field name - of each dimension scale in the group ``axes`` attribute as a string list. - Here is an example for a 2-D data set *data* plotted - against *time*, and *pressure*. (An additional *temperature* data set - is provided and could be selected as an alternate for the *pressure* axis.):: - - data_2d:NXdata - @signal="data" - @axes=["time", "pressure"] - @pressure_indices=1 - @temperature_indices=1 - @time_indices=0 - data: float[1000,20] - pressure: float[20] - temperature: float[20] - time: float[1000] - - .. rubric:: Old methods to identify the plottable data - - There are two older methods of associating - each data dimension to its respective dimension scale. - Both are now out of date and - should not be used when writing new data files. - However, client software should expect to see data files - written with any of these methods. - - * One method uses the ``axes`` - attribute to specify the names of each *dimension scale*. - - * The oldest method uses the ``axis`` attribute on each - *dimension scale* to identify - with an integer the axis whose value is the number of the dimension. - - .. index: !plot; axis label - plot, axis units - units - dimension scale - - Each axis of the plot may be labeled with information from the - dimension scale for that axis. The optional ``@long_name`` attribute - is provided as the axis label default. If ``@long_name`` is not - defined, then use the name of the dimension scale. A ``@units`` attribute, - if available, may be added to the axis label for further description. - See the section :ref:`Design-Units` for more information. - - .. index: !plot; axis title - - The optional ``title`` field, if available, provides a suggested - title for the plot. If no ``title`` field is found in the :ref:`NXdata` - group, look for a ``title`` field in the parent :ref:`NXentry` group, - with a fallback to displaying the path to the :ref:`NXdata` group. - - NeXus is about how to find and annotate the data to be plotted - but not to describe how the data is to be plotted. - (https://www.nexusformat.org/NIAC2018Minutes.html#nxdata-plottype--attribute) - -DEBUG - ===== ATTRS (//entry/data@NX_class) -DEBUG - value: NXdata -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== ATTRS (//entry/data@axes) -DEBUG - value: ['kx' 'ky' 'energy' 'delay'] -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - NXdata.nxdl.xml:@axes - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXdata.nxdl.xml:/axes): -DEBUG - - .. index:: plotting - - Array of strings holding the :ref:`names ` of - the independent data fields used in the default plot for all of - the dimensions of the :ref:`signal ` - as well as any :ref:`auxiliary signals `. - - One name is provided for every dimension in the *signal* or *auxiliary signal* fields. - - The *axes* values are the names of fields or links that *must* exist and be direct - children of this NXdata group. - - An axis slice is specified using a field named ``AXISNAME_indices`` - as described below (where the text shown here as ``AXISNAME`` is to be - replaced by the actual field name). - - When no default axis is available for a particular dimension - of the plottable data, use a "." in that position. - Such as:: - - @axes=["time", ".", "."] - - Since there are three items in the list, the *signal* field - must be a three-dimensional array (rank=3). The first dimension - is described by the values of a one-dimensional array named ``time`` - while the other two dimensions have no fields to be used as dimension scales. - - See examples provided on the NeXus wiki: - https://www.nexusformat.org/2014_axes_and_uncertainties.html - - If there are no axes at all (such as with a stack of images), - the axes attribute can be omitted. - -DEBUG - ===== ATTRS (//entry/data@delay_indices) -DEBUG - value: 3 -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - @delay_indices - IS NOT IN SCHEMA -DEBUG - -DEBUG - ===== ATTRS (//entry/data@energy_indices) -DEBUG - value: 2 -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - @energy_indices - IS NOT IN SCHEMA -DEBUG - -DEBUG - ===== ATTRS (//entry/data@kx_indices) -DEBUG - value: 0 -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - @kx_indices - IS NOT IN SCHEMA -DEBUG - -DEBUG - ===== ATTRS (//entry/data@ky_indices) -DEBUG - value: 1 -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - @ky_indices - IS NOT IN SCHEMA -DEBUG - -DEBUG - ===== ATTRS (//entry/data@signal) -DEBUG - value: data -DEBUG - classpath: ['NXentry', 'NXdata'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data -NXentry.nxdl.xml:/DATA -NXdata.nxdl.xml: -DEBUG - NXmpes.nxdl.xml:/ENTRY/data@signal - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/data/signal): -DEBUG - -> data -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/data/signal): -DEBUG - -DEBUG - NXdata.nxdl.xml:@signal - [NX_CHAR] -DEBUG - documentation (NXdata.nxdl.xml:/signal): -DEBUG - - .. index:: find the default plottable data - .. index:: plotting - .. index:: signal attribute value - - Declares which NeXus field is the default. - The value is the :ref:`name ` of the data field to be plotted. - This field or link *must* exist and be a direct child of this NXdata group. - - It is recommended (as of NIAC2014) to use this attribute - rather than adding a signal attribute to the field. - See https://www.nexusformat.org/2014_How_to_find_default_data.html - for a summary of the discussion. - -DEBUG - ===== FIELD (//entry/data/data): -DEBUG - value: [[[1.14760e+04 1.64560e+04 1.55440e+04 1.48940e+04 1.08810e+04] ... -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data/data -NXdata.nxdl.xml:/DATA -DEBUG - <> -DEBUG - Dataset referenced as NXdata SIGNAL -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/data/data): -DEBUG - - Represents a measure of one- or more-dimensional photoemission counts, where the - varied axis may be for example energy, momentum, spatial coordinate, pump-probe - delay, spin index, temperature, etc. The axes traces should be linked to the - actual encoder position in NXinstrument or calibrated axes in NXprocess. - -DEBUG - documentation (NXdata.nxdl.xml:/DATA): -DEBUG - - .. index:: plotting - - This field contains the data values to be used as the - NeXus *plottable data*. - Client is responsible for defining the dimensions of the data. - The name of this field may be changed to fit the circumstances. - Standard NeXus client tools will use the attributes to determine - how to use this field. - -DEBUG - ===== ATTRS (//entry/data/data@units) -DEBUG - value: counts -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data/data -NXdata.nxdl.xml:/DATA -DEBUG - NXmpes.nxdl.xml:/ENTRY/data/data@units [NX_ANY] -DEBUG - NXdata.nxdl.xml:/DATA@units - REQUIRED, but undefined unit category -DEBUG - ===== FIELD (//entry/data/delay): -DEBUG - value: [-2000. 125. 2250. 4375. 6500.] -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXdata.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - Dataset referenced as NXdata AXIS #3 -DEBUG - documentation (NXdata.nxdl.xml:/AXISNAME): -DEBUG - - Dimension scale defining an axis of the data. - Client is responsible for defining the dimensions of the data. - The name of this field may be changed to fit the circumstances. - Standard NeXus client tools will use the attributes to determine - how to use this field. - -DEBUG - ===== ATTRS (//entry/data/delay@units) -DEBUG - value: ps -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXdata.nxdl.xml:/AXISNAME -DEBUG - NXdata.nxdl.xml:/AXISNAME@units - REQUIRED, but undefined unit category -DEBUG - ===== FIELD (//entry/data/energy): -DEBUG - value: [-4. -3.44444444 -2.88888889 -2.33333333 -1.77777778 -1.22222222 ... -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data/energy -NXdata.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - Dataset referenced as NXdata AXIS #2 -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/data/energy): -DEBUG - - Calibrated energy axis. - - This could be a link to either - /entry/process/energy_calibration/calibrated_axis or - /entry/process/energy_correction/calibrated_axis. - -DEBUG - documentation (NXdata.nxdl.xml:/AXISNAME): -DEBUG - - Dimension scale defining an axis of the data. - Client is responsible for defining the dimensions of the data. - The name of this field may be changed to fit the circumstances. - Standard NeXus client tools will use the attributes to determine - how to use this field. - -DEBUG - ===== ATTRS (//entry/data/energy@type) -DEBUG - value: binding -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data/energy -NXdata.nxdl.xml:/AXISNAME -DEBUG - NXmpes.nxdl.xml:/ENTRY/data/energy@type - [NX_CHAR] -DEBUG - <> -DEBUG - Dataset referenced as NXdata AXIS #2 -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/data/energy/type): -DEBUG - -DEBUG - ===== ATTRS (//entry/data/energy@units) -DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/data/energy -NXdata.nxdl.xml:/AXISNAME -DEBUG - NXmpes.nxdl.xml:/ENTRY/data/energy@units [NX_ENERGY] -DEBUG - NXdata.nxdl.xml:/AXISNAME@units - REQUIRED, but undefined unit category -DEBUG - ===== FIELD (//entry/data/kx): -DEBUG - value: [-1.5 -1.16666667 -0.83333333 -0.5 -0.16666667 0.16666667 ... -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXdata.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - Dataset referenced as NXdata AXIS #0 -DEBUG - documentation (NXdata.nxdl.xml:/AXISNAME): -DEBUG - - Dimension scale defining an axis of the data. - Client is responsible for defining the dimensions of the data. - The name of this field may be changed to fit the circumstances. - Standard NeXus client tools will use the attributes to determine - how to use this field. - -DEBUG - ===== ATTRS (//entry/data/kx@units) -DEBUG - value: 1/A -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXdata.nxdl.xml:/AXISNAME -DEBUG - NXdata.nxdl.xml:/AXISNAME@units - REQUIRED, but undefined unit category -DEBUG - ===== FIELD (//entry/data/ky): -DEBUG - value: [-1.5 -1.16666667 -0.83333333 -0.5 -0.16666667 0.16666667 ... -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXdata.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - Dataset referenced as NXdata AXIS #1 -DEBUG - documentation (NXdata.nxdl.xml:/AXISNAME): -DEBUG - - Dimension scale defining an axis of the data. - Client is responsible for defining the dimensions of the data. - The name of this field may be changed to fit the circumstances. - Standard NeXus client tools will use the attributes to determine - how to use this field. - -DEBUG - ===== ATTRS (//entry/data/ky@units) -DEBUG - value: 1/A -DEBUG - classpath: ['NXentry', 'NXdata', 'NX_NUMBER'] -DEBUG - classes: -NXdata.nxdl.xml:/AXISNAME -DEBUG - NXdata.nxdl.xml:/AXISNAME@units - REQUIRED, but undefined unit category -DEBUG - ===== FIELD (//entry/definition): -DEBUG - value: b'NXmpes' -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/definition -NXentry.nxdl.xml:/definition -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/definition): -DEBUG - -> NXmpes -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/definition): -DEBUG - -DEBUG - documentation (NXentry.nxdl.xml:/definition): -DEBUG - - (alternate use: see same field in :ref:`NXsubentry` for preferred) - - Official NeXus NXDL schema to which this entry conforms which must be - the name of the NXDL file (case sensitive without the file extension) - that the NXDL schema is defined in. - - For example the ``definition`` field for a file that conformed to the - *NXarpes.nxdl.xml* definition must contain the string **NXarpes**. - - This field is provided so that :ref:`NXentry` can be the overlay position - in a NeXus data file for an application definition and its - set of groups, fields, and attributes. - - *It is advised* to use :ref:`NXsubentry`, instead, as the overlay position. - -DEBUG - ===== ATTRS (//entry/definition@URL) -DEBUG - value: https://github.com/FAIRmat-NFDI/nexus_definitions/blob/a4a31dfaa -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/definition -NXentry.nxdl.xml:/definition -DEBUG - NXentry.nxdl.xml:/definition@URL - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXentry.nxdl.xml:/definition/URL): -DEBUG - - URL of NXDL file - -DEBUG - ===== ATTRS (//entry/definition@version) -DEBUG - value: None -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/definition -NXentry.nxdl.xml:/definition -DEBUG - NXmpes.nxdl.xml:/ENTRY/definition@version - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/definition/version): -DEBUG - -DEBUG - NXentry.nxdl.xml:/definition@version - [NX_CHAR] -DEBUG - documentation (NXentry.nxdl.xml:/definition/version): -DEBUG - - NXDL version number - -DEBUG - ===== FIELD (//entry/duration): -DEBUG - value: 2317 -DEBUG - classpath: ['NXentry', 'NX_INT'] -DEBUG - classes: -NXentry.nxdl.xml:/duration -DEBUG - <> -DEBUG - documentation (NXentry.nxdl.xml:/duration): -DEBUG - - Duration of measurement - -DEBUG - ===== ATTRS (//entry/duration@units) -DEBUG - value: s -DEBUG - classpath: ['NXentry', 'NX_INT'] -DEBUG - classes: -NXentry.nxdl.xml:/duration -DEBUG - NXentry.nxdl.xml:/duration@units [NX_TIME] -DEBUG - ===== FIELD (//entry/end_time): -DEBUG - value: b'2019-05-23T18:52:32+00:00' -DEBUG - classpath: ['NXentry', 'NX_DATE_TIME'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/end_time -NXentry.nxdl.xml:/end_time -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/end_time): -DEBUG - - Datetime of the end of the measurement. - Should be a ISO8601 date/time stamp. It is recommended to add an explicit time zone, - otherwise the local time zone is assumed per ISO8601. - -DEBUG - documentation (NXentry.nxdl.xml:/end_time): -DEBUG - - Ending time of measurement - -DEBUG - ===== FIELD (//entry/entry_identifier): -DEBUG - value: b'2019/2019_05/2019_05_23/Scan005' -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXentry.nxdl.xml:/entry_identifier -DEBUG - <> -DEBUG - documentation (NXentry.nxdl.xml:/entry_identifier): -DEBUG - - unique identifier for the measurement, defined by the facility. - -DEBUG - ===== FIELD (//entry/experiment_facility): -DEBUG - value: b'Time Resolved ARPES' -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXentry.nxdl.xml:/experiment_facility -DEBUG - <> -DEBUG - documentation (NXentry.nxdl.xml:/experiment_facility): -DEBUG - - Name of the experimental facility - -DEBUG - ===== FIELD (//entry/experiment_institution): -DEBUG - value: b'Fritz Haber Institute - Max Planck Society' -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXentry.nxdl.xml:/experiment_institution -DEBUG - <> -DEBUG - documentation (NXentry.nxdl.xml:/experiment_institution): -DEBUG - - Name of the institution hosting the facility - -DEBUG - ===== FIELD (//entry/experiment_laboratory): -DEBUG - value: b'Clean Room 4' -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXentry.nxdl.xml:/experiment_laboratory -DEBUG - <> -DEBUG - documentation (NXentry.nxdl.xml:/experiment_laboratory): -DEBUG - - Name of the laboratory or beamline - -DEBUG - ===== GROUP (//entry/instrument [NXmpes::/NXentry/NXinstrument]): -DEBUG - classpath: ['NXentry', 'NXinstrument'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT -NXentry.nxdl.xml:/INSTRUMENT -NXinstrument.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT): -DEBUG - - Description of the photoemission spectrometer and its individual parts. - - This concept is related to term `12.58`_ of the ISO 18115-1:2023 standard. - - .. _12.58: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.58 - -DEBUG - documentation (NXentry.nxdl.xml:/INSTRUMENT): -DEBUG - -DEBUG - documentation (NXinstrument.nxdl.xml:): -DEBUG - - Collection of the components of the instrument or beamline. - - Template of instrument descriptions comprising various beamline components. - Each component will also be a NeXus group defined by its distance from the - sample. Negative distances represent beamline components that are before the - sample while positive distances represent components that are after the sample. - This device allows the unique identification of beamline components in a way - that is valid for both reactor and pulsed instrumentation. - -DEBUG - ===== ATTRS (//entry/instrument@NX_class) -DEBUG - value: NXinstrument -DEBUG - classpath: ['NXentry', 'NXinstrument'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT -NXentry.nxdl.xml:/INSTRUMENT -NXinstrument.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/instrument/beam_probe [NXmpes::/NXentry/NXinstrument/NXbeam]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE -NXinstrument.nxdl.xml:/BEAM -NXbeam.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE): -DEBUG - - Properties of the photon beam at a given location. - Should be named with the same appendix as sourceTYPE, e.g., - for `source_probe` it should refer to `beam_probe`. - -DEBUG - documentation (NXinstrument.nxdl.xml:/BEAM): -DEBUG - -DEBUG - documentation (NXbeam.nxdl.xml:): -DEBUG - - Properties of the neutron or X-ray beam at a given location. - - This group is intended to be referenced - by beamline component groups within the :ref:`NXinstrument` group or by the :ref:`NXsample` group. This group is - especially valuable in storing the results of instrument simulations in which it is useful - to specify the beam profile, time distribution etc. at each beamline component. Otherwise, - its most likely use is in the :ref:`NXsample` group in which it defines the results of the neutron - scattering by the sample, e.g., energy transfer, polarizations. Finally, There are cases where the beam is - considered as a beamline component and this group may be defined as a subgroup directly inside - :ref:`NXinstrument`, in which case it is recommended that the position of the beam is specified by an - :ref:`NXtransformations` group, unless the beam is at the origin (which is the sample). - - Note that incident_wavelength and related fields can be a scalar values or arrays, depending on the use case. - To support these use cases, the explicit dimensionality of these fields is not specified, but it can be inferred - by the presense of and shape of accompanying fields, such as incident_wavelength_weights for a polychromatic beam. - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe@NX_class) -DEBUG - value: NXbeam -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE -NXinstrument.nxdl.xml:/BEAM -NXbeam.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/beam_probe/associated_source): -DEBUG - value: b'/entry/instrument/source_probe' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/associated_source -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/associated_source): -DEBUG - - The source that emitted this beam. - Should be named with the same appendix, e.g., - for `beam_probe` it should refer to `source_probe`. - This should be specified if an associated source exists. - - Example: - * /entry/instrument/beam_probe = /entry/instrument/source_probe - -DEBUG - ===== FIELD (//entry/instrument/beam_probe/distance): -DEBUG - value: 0.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/distance -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/distance): -DEBUG - - Distance between the point where the current NXbeam instance is evaluating - the beam properties and the point where the beam interacts with the sample. - For photoemission, the latter is the point where the the centre of the beam - touches the sample surface. - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe/distance@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/distance -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/distance@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/beam_probe/extent): -DEBUG - value: [ 80. 190.] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/extent -NXbeam.nxdl.xml:/extent -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/extent): -DEBUG - -DEBUG - documentation (NXbeam.nxdl.xml:/extent): -DEBUG - - Size of the beam entering this component. Note this represents - a rectangular beam aperture, and values represent FWHM - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe/extent@units) -DEBUG - value: µm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/extent -NXbeam.nxdl.xml:/extent -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/extent@units - REQUIRED, but undefined unit category -DEBUG - NXbeam.nxdl.xml:/extent@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/beam_probe/incident_energy): -DEBUG - value: 21.7 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy -NXbeam.nxdl.xml:/incident_energy -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy): -DEBUG - -DEBUG - documentation (NXbeam.nxdl.xml:/incident_energy): -DEBUG - - Energy carried by each particle of the beam on entering the beamline component. - - In the case of a monochromatic beam this is the scalar energy. - Several other use cases are permitted, depending on the - presence of other incident_energy_X fields. - - * In the case of a polychromatic beam this is an array of length m of energies, with the relative weights in incident_energy_weights. - * In the case of a monochromatic beam that varies shot-to-shot, this is an array of energies, one for each recorded shot. - Here, incident_energy_weights and incident_energy_spread are not set. - * In the case of a polychromatic beam that varies shot-to-shot, - this is an array of length m with the relative weights in incident_energy_weights as a 2D array. - * In the case of a polychromatic beam that varies shot-to-shot and where the channels also vary, - this is a 2D array of dimensions nP by m (slow to fast) with the relative weights in incident_energy_weights as a 2D array. - - Note, variants are a good way to represent several of these use cases in a single dataset, - e.g. if a calibrated, single-value energy value is available along with the original spectrum from which it was calibrated. - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe/incident_energy@units) -DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy -NXbeam.nxdl.xml:/incident_energy -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy@units [NX_ENERGY] -DEBUG - NXbeam.nxdl.xml:/incident_energy@units [NX_ENERGY] -DEBUG - ===== FIELD (//entry/instrument/beam_probe/incident_energy_spread): -DEBUG - value: 0.11 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy_spread -NXbeam.nxdl.xml:/incident_energy_spread -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy_spread): -DEBUG - -DEBUG - documentation (NXbeam.nxdl.xml:/incident_energy_spread): -DEBUG - - The energy spread FWHM for the corresponding energy(ies) in incident_energy. In the case of shot-to-shot variation in - the energy spread, this is a 2D array of dimension nP by m - (slow to fast) of the spreads of the corresponding - wavelength in incident_wavelength. - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe/incident_energy_spread@units) -DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy_spread -NXbeam.nxdl.xml:/incident_energy_spread -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy_spread@units [NX_ENERGY] -DEBUG - NXbeam.nxdl.xml:/incident_energy_spread@units [NX_ENERGY] -DEBUG - ===== FIELD (//entry/instrument/beam_probe/incident_polarization): -DEBUG - value: [1. 1. 0. 0.] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_polarization -NXbeam.nxdl.xml:/incident_polarization -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_polarization): -DEBUG - -DEBUG - documentation (NXbeam.nxdl.xml:/incident_polarization): -DEBUG - - Incident polarization as a Stokes vector - on entering beamline component - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe/incident_polarization@units) -DEBUG - value: V^2/mm^2 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_polarization -NXbeam.nxdl.xml:/incident_polarization -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_polarization@units [NX_ANY] -DEBUG - NXbeam.nxdl.xml:/incident_polarization@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/beam_probe/pulse_duration): -DEBUG - value: 20.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/pulse_duration -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/pulse_duration): -DEBUG - - FWHM duration of the pulses at the diagnostic point - -DEBUG - ===== ATTRS (//entry/instrument/beam_probe/pulse_duration@units) -DEBUG - value: fs -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/pulse_duration -DEBUG - NXbeam.nxdl.xml:/pulse_duration@units [NX_TIME] -DEBUG - ===== GROUP (//entry/instrument/beam_pump [NXmpes::/NXentry/NXinstrument/NXbeam]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE -NXinstrument.nxdl.xml:/BEAM -NXbeam.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE): -DEBUG - - Properties of the photon beam at a given location. - Should be named with the same appendix as sourceTYPE, e.g., - for `source_probe` it should refer to `beam_probe`. - -DEBUG - documentation (NXinstrument.nxdl.xml:/BEAM): -DEBUG - -DEBUG - documentation (NXbeam.nxdl.xml:): -DEBUG - - Properties of the neutron or X-ray beam at a given location. - - This group is intended to be referenced - by beamline component groups within the :ref:`NXinstrument` group or by the :ref:`NXsample` group. This group is - especially valuable in storing the results of instrument simulations in which it is useful - to specify the beam profile, time distribution etc. at each beamline component. Otherwise, - its most likely use is in the :ref:`NXsample` group in which it defines the results of the neutron - scattering by the sample, e.g., energy transfer, polarizations. Finally, There are cases where the beam is - considered as a beamline component and this group may be defined as a subgroup directly inside - :ref:`NXinstrument`, in which case it is recommended that the position of the beam is specified by an - :ref:`NXtransformations` group, unless the beam is at the origin (which is the sample). - - Note that incident_wavelength and related fields can be a scalar values or arrays, depending on the use case. - To support these use cases, the explicit dimensionality of these fields is not specified, but it can be inferred - by the presense of and shape of accompanying fields, such as incident_wavelength_weights for a polychromatic beam. - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump@NX_class) -DEBUG - value: NXbeam -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE -NXinstrument.nxdl.xml:/BEAM -NXbeam.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/beam_pump/associated_source): -DEBUG - value: b'/entry/instrument/source_pump' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/associated_source -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/associated_source): -DEBUG - - The source that emitted this beam. - Should be named with the same appendix, e.g., - for `beam_probe` it should refer to `source_probe`. - This should be specified if an associated source exists. - - Example: - * /entry/instrument/beam_probe = /entry/instrument/source_probe - -DEBUG - ===== FIELD (//entry/instrument/beam_pump/average_power): -DEBUG - value: 444.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/average_power -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/average_power): -DEBUG - - Average power at the diagnostic point - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/average_power@units) -DEBUG - value: mW -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/average_power -DEBUG - NXbeam.nxdl.xml:/average_power@units [NX_POWER] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/distance): -DEBUG - value: 0.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/distance -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/distance): -DEBUG - - Distance between the point where the current NXbeam instance is evaluating - the beam properties and the point where the beam interacts with the sample. - For photoemission, the latter is the point where the the centre of the beam - touches the sample surface. - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/distance@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/distance -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/distance@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/extent): -DEBUG - value: [155. 367.] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/extent -NXbeam.nxdl.xml:/extent -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/extent): -DEBUG - -DEBUG - documentation (NXbeam.nxdl.xml:/extent): -DEBUG - - Size of the beam entering this component. Note this represents - a rectangular beam aperture, and values represent FWHM - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/extent@units) -DEBUG - value: µm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/extent -NXbeam.nxdl.xml:/extent -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/extent@units - REQUIRED, but undefined unit category -DEBUG - NXbeam.nxdl.xml:/extent@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/fluence): -DEBUG - value: 1.3 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/fluence -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/fluence): -DEBUG - - Incident fluence at the diagnostic point - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/fluence@units) -DEBUG - value: mJ/cm^2 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/fluence -DEBUG - NXbeam.nxdl.xml:/fluence@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/incident_energy): -DEBUG - value: 1.2 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy -NXbeam.nxdl.xml:/incident_energy -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy): -DEBUG - -DEBUG - documentation (NXbeam.nxdl.xml:/incident_energy): -DEBUG - - Energy carried by each particle of the beam on entering the beamline component. - - In the case of a monochromatic beam this is the scalar energy. - Several other use cases are permitted, depending on the - presence of other incident_energy_X fields. - - * In the case of a polychromatic beam this is an array of length m of energies, with the relative weights in incident_energy_weights. - * In the case of a monochromatic beam that varies shot-to-shot, this is an array of energies, one for each recorded shot. - Here, incident_energy_weights and incident_energy_spread are not set. - * In the case of a polychromatic beam that varies shot-to-shot, - this is an array of length m with the relative weights in incident_energy_weights as a 2D array. - * In the case of a polychromatic beam that varies shot-to-shot and where the channels also vary, - this is a 2D array of dimensions nP by m (slow to fast) with the relative weights in incident_energy_weights as a 2D array. - - Note, variants are a good way to represent several of these use cases in a single dataset, - e.g. if a calibrated, single-value energy value is available along with the original spectrum from which it was calibrated. - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/incident_energy@units) -DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy -NXbeam.nxdl.xml:/incident_energy -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy@units [NX_ENERGY] -DEBUG - NXbeam.nxdl.xml:/incident_energy@units [NX_ENERGY] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/incident_energy_spread): -DEBUG - value: 0.05 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy_spread -NXbeam.nxdl.xml:/incident_energy_spread -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy_spread): -DEBUG - -DEBUG - documentation (NXbeam.nxdl.xml:/incident_energy_spread): -DEBUG - - The energy spread FWHM for the corresponding energy(ies) in incident_energy. In the case of shot-to-shot variation in - the energy spread, this is a 2D array of dimension nP by m - (slow to fast) of the spreads of the corresponding - wavelength in incident_wavelength. - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/incident_energy_spread@units) -DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy_spread -NXbeam.nxdl.xml:/incident_energy_spread -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_energy_spread@units [NX_ENERGY] -DEBUG - NXbeam.nxdl.xml:/incident_energy_spread@units [NX_ENERGY] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/incident_polarization): -DEBUG - value: [1 1 0 0] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_polarization -NXbeam.nxdl.xml:/incident_polarization -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_polarization): -DEBUG - -DEBUG - documentation (NXbeam.nxdl.xml:/incident_polarization): -DEBUG - - Incident polarization as a Stokes vector - on entering beamline component - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/incident_polarization@units) -DEBUG - value: V^2/mm^2 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_NUMBER'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_polarization -NXbeam.nxdl.xml:/incident_polarization -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/beamTYPE/incident_polarization@units [NX_ANY] -DEBUG - NXbeam.nxdl.xml:/incident_polarization@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/incident_wavelength): -DEBUG - value: 1030.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_wavelength -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/incident_wavelength): -DEBUG - - In the case of a monochromatic beam this is the scalar - wavelength. - - Several other use cases are permitted, depending on the - presence or absence of other incident_wavelength_X - fields. - - In the case of a polychromatic beam this is an array of - length **m** of wavelengths, with the relative weights - in ``incident_wavelength_weights``. - - In the case of a monochromatic beam that varies shot- - to-shot, this is an array of wavelengths, one for each - recorded shot. Here, ``incident_wavelength_weights`` and - incident_wavelength_spread are not set. - - In the case of a polychromatic beam that varies shot-to- - shot, this is an array of length **m** with the relative - weights in ``incident_wavelength_weights`` as a 2D array. - - In the case of a polychromatic beam that varies shot-to- - shot and where the channels also vary, this is a 2D array - of dimensions **nP** by **m** (slow to fast) with the - relative weights in ``incident_wavelength_weights`` as a 2D - array. - - Note, :ref:`variants ` are a good way - to represent several of these use cases in a single dataset, - e.g. if a calibrated, single-value wavelength value is - available along with the original spectrum from which it - was calibrated. - Wavelength on entering beamline component - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/incident_wavelength@units) -DEBUG - value: nm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/incident_wavelength -DEBUG - NXbeam.nxdl.xml:/incident_wavelength@units [NX_WAVELENGTH] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/pulse_duration): -DEBUG - value: 140.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/pulse_duration -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/pulse_duration): -DEBUG - - FWHM duration of the pulses at the diagnostic point - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/pulse_duration@units) -DEBUG - value: fs -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/pulse_duration -DEBUG - NXbeam.nxdl.xml:/pulse_duration@units [NX_TIME] -DEBUG - ===== FIELD (//entry/instrument/beam_pump/pulse_energy): -DEBUG - value: 0.889 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/pulse_energy -DEBUG - <> -DEBUG - documentation (NXbeam.nxdl.xml:/pulse_energy): -DEBUG - - Energy of a single pulse at the diagnostic point - -DEBUG - ===== ATTRS (//entry/instrument/beam_pump/pulse_energy@units) -DEBUG - value: µJ -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXbeam', 'NX_FLOAT'] -DEBUG - classes: -NXbeam.nxdl.xml:/pulse_energy -DEBUG - NXbeam.nxdl.xml:/pulse_energy@units [NX_ENERGY] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser [NXmpes::/NXentry/NXinstrument/NXelectronanalyser]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER -NXelectronanalyser.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:): -DEBUG - - Basic class for describing a electron analyzer. - - This concept is related to term `12.59`_ of the ISO 18115-1:2023 standard. - - .. _12.59: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.59 - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser@NX_class) -DEBUG - value: NXelectronanalyser -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER -NXelectronanalyser.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN -NXelectronanalyser.nxdl.xml:/COLLECTIONCOLUMN -NXcollectioncolumn.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/COLLECTIONCOLUMN): -DEBUG - - Describes the electron collection (spatial and momentum imaging) column - -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:): -DEBUG - - Subclass of NXelectronanalyser to describe the electron collection - column of a photoelectron analyser. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn@NX_class) -DEBUG - value: NXcollectioncolumn -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN -NXelectronanalyser.nxdl.xml:/COLLECTIONCOLUMN -NXcollectioncolumn.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXaperture]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/contrast_aperture -NXcollectioncolumn.nxdl.xml:/APERTURE -NXaperture.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/contrast_aperture): -DEBUG - - The size and position of the contrast aperture inserted in the column. To add - additional or other apertures use the APERTURE group of NXcollectioncolumn. - -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/APERTURE): -DEBUG - - The size and position of an aperture inserted in the column, e.g. field aperture - or contrast aperture - -DEBUG - documentation (NXaperture.nxdl.xml:): -DEBUG - - A beamline aperture. This group is deprecated, use NXslit instead. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture@NX_class) -DEBUG - value: NXaperture -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/contrast_aperture -NXcollectioncolumn.nxdl.xml:/APERTURE -NXaperture.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/ca_m3 [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXaperture/NXpositioner]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner'] -DEBUG - classes: -NXaperture.nxdl.xml:/POSITIONER -NXpositioner.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXaperture.nxdl.xml:/POSITIONER): -DEBUG - - Stores the raw positions of aperture motors. - -DEBUG - documentation (NXpositioner.nxdl.xml:): -DEBUG - - A generic positioner such as a motor or piezo-electric transducer. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/ca_m3@NX_class) -DEBUG - value: NXpositioner -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner'] -DEBUG - classes: -NXaperture.nxdl.xml:/POSITIONER -NXpositioner.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/ca_m3/value): -DEBUG - value: -11.49979350759219 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner', 'NX_NUMBER'] -DEBUG - classes: -NXpositioner.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXpositioner.nxdl.xml:/value): -DEBUG - best known value of positioner - need [n] as may be scanned -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/ca_m3/value@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner', 'NX_NUMBER'] -DEBUG - classes: -NXpositioner.nxdl.xml:/value -DEBUG - NXpositioner.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/shape): -DEBUG - value: b'open' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NX_CHAR'] -DEBUG - classes: -NXaperture.nxdl.xml:/shape -DEBUG - <> -DEBUG - enumeration (NXaperture.nxdl.xml:/shape): -DEBUG - -> straight slit -DEBUG - -> curved slit -DEBUG - -> pinhole -DEBUG - -> circle -DEBUG - -> square -DEBUG - -> hexagon -DEBUG - -> octagon -DEBUG - -> bladed -DEBUG - -> open -DEBUG - -> grid -DEBUG - documentation (NXaperture.nxdl.xml:/shape): -DEBUG - - Shape of the aperture. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/size): -DEBUG - value: nan -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NX_NUMBER'] -DEBUG - classes: -NXaperture.nxdl.xml:/size -DEBUG - <> -DEBUG - documentation (NXaperture.nxdl.xml:/size): -DEBUG - - The relevant dimension for the aperture, i.e. slit width, pinhole and iris - diameter - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/contrast_aperture/size@units) -DEBUG - value: µm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NX_NUMBER'] -DEBUG - classes: -NXaperture.nxdl.xml:/size -DEBUG - NXaperture.nxdl.xml:/size@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/extractor_current): -DEBUG - value: -0.1309711275510204 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_FLOAT'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/extractor_current -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/extractor_current): -DEBUG - - Current necessary to keep the extractor lens at a set voltage. Variations - indicate leakage, field emission or arc currents to the extractor lens. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/extractor_current@units) -DEBUG - value: µA -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_FLOAT'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/extractor_current -DEBUG - NXcollectioncolumn.nxdl.xml:/extractor_current@units [NX_CURRENT] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/extractor_voltage): -DEBUG - value: 6000.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_FLOAT'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/extractor_voltage -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/extractor_voltage): -DEBUG - - Voltage applied to the extractor lens - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/extractor_voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_FLOAT'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/extractor_voltage -DEBUG - NXcollectioncolumn.nxdl.xml:/extractor_voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/field_aperture [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXaperture]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/field_aperture -NXcollectioncolumn.nxdl.xml:/APERTURE -NXaperture.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/field_aperture): -DEBUG - - The size and position of the field aperture inserted in the column. To add - additional or other apertures use the APERTURE group of NXcollectioncolumn. - -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/APERTURE): -DEBUG - - The size and position of an aperture inserted in the column, e.g. field aperture - or contrast aperture - -DEBUG - documentation (NXaperture.nxdl.xml:): -DEBUG - - A beamline aperture. This group is deprecated, use NXslit instead. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/field_aperture@NX_class) -DEBUG - value: NXaperture -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/field_aperture -NXcollectioncolumn.nxdl.xml:/APERTURE -NXaperture.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m1 [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXaperture/NXpositioner]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner'] -DEBUG - classes: -NXaperture.nxdl.xml:/POSITIONER -NXpositioner.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXaperture.nxdl.xml:/POSITIONER): -DEBUG - - Stores the raw positions of aperture motors. - -DEBUG - documentation (NXpositioner.nxdl.xml:): -DEBUG - - A generic positioner such as a motor or piezo-electric transducer. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m1@NX_class) -DEBUG - value: NXpositioner -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner'] -DEBUG - classes: -NXaperture.nxdl.xml:/POSITIONER -NXpositioner.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m1/value): -DEBUG - value: 3.749874153422982 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner', 'NX_NUMBER'] -DEBUG - classes: -NXpositioner.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXpositioner.nxdl.xml:/value): -DEBUG - best known value of positioner - need [n] as may be scanned -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m1/value@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner', 'NX_NUMBER'] -DEBUG - classes: -NXpositioner.nxdl.xml:/value -DEBUG - NXpositioner.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m2 [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXaperture/NXpositioner]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner'] -DEBUG - classes: -NXaperture.nxdl.xml:/POSITIONER -NXpositioner.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXaperture.nxdl.xml:/POSITIONER): -DEBUG - - Stores the raw positions of aperture motors. - -DEBUG - documentation (NXpositioner.nxdl.xml:): -DEBUG - - A generic positioner such as a motor or piezo-electric transducer. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m2@NX_class) -DEBUG - value: NXpositioner -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner'] -DEBUG - classes: -NXaperture.nxdl.xml:/POSITIONER -NXpositioner.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m2/value): -DEBUG - value: -5.200156936301793 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner', 'NX_NUMBER'] -DEBUG - classes: -NXpositioner.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXpositioner.nxdl.xml:/value): -DEBUG - best known value of positioner - need [n] as may be scanned -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/fa_m2/value@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NXpositioner', 'NX_NUMBER'] -DEBUG - classes: -NXpositioner.nxdl.xml:/value -DEBUG - NXpositioner.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/shape): -DEBUG - value: b'circle' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NX_CHAR'] -DEBUG - classes: -NXaperture.nxdl.xml:/shape -DEBUG - <> -DEBUG - enumeration (NXaperture.nxdl.xml:/shape): -DEBUG - -> straight slit -DEBUG - -> curved slit -DEBUG - -> pinhole -DEBUG - -> circle -DEBUG - -> square -DEBUG - -> hexagon -DEBUG - -> octagon -DEBUG - -> bladed -DEBUG - -> open -DEBUG - -> grid -DEBUG - documentation (NXaperture.nxdl.xml:/shape): -DEBUG - - Shape of the aperture. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/size): -DEBUG - value: 200.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NX_NUMBER'] -DEBUG - classes: -NXaperture.nxdl.xml:/size -DEBUG - <> -DEBUG - documentation (NXaperture.nxdl.xml:/size): -DEBUG - - The relevant dimension for the aperture, i.e. slit width, pinhole and iris - diameter - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/field_aperture/size@units) -DEBUG - value: µm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXaperture', 'NX_NUMBER'] -DEBUG - classes: -NXaperture.nxdl.xml:/size -DEBUG - NXaperture.nxdl.xml:/size@units [NX_LENGTH] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_A [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_A@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_A/name): -DEBUG - value: b'A' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_A/voltage): -DEBUG - value: 784.58 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_A/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_B [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_B@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_B/name): -DEBUG - value: b'B' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_B/voltage): -DEBUG - value: 3253.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_B/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_C [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_C@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_C/name): -DEBUG - value: b'C' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_C/voltage): -DEBUG - value: 752.07 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_C/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_D [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_D@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_D/name): -DEBUG - value: b'D' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_D/voltage): -DEBUG - value: 682.18 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_D/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_E [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_E@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_E/name): -DEBUG - value: b'E' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_E/voltage): -DEBUG - value: 200.93 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_E/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_F [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_F@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_F/name): -DEBUG - value: b'F' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_F/voltage): -DEBUG - value: 68.557 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_F/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_Foc [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_Foc@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_Foc/name): -DEBUG - value: b'Foc' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_Foc/voltage): -DEBUG - value: 158.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_Foc/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_G [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_G@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_G/name): -DEBUG - value: b'G' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_G/voltage): -DEBUG - value: 30.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_G/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_H [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_H@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_H/name): -DEBUG - value: b'H' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_H/voltage): -DEBUG - value: 30.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_H/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_I [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_I@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_I/name): -DEBUG - value: b'I' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_I/voltage): -DEBUG - value: 44.5 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_I/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_UCA [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_UCA@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_UCA/name): -DEBUG - value: b'UCA' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_UCA/voltage): -DEBUG - value: 1200.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_UCA/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/collectioncolumn/lens_UFA [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXcollectioncolumn/NXlens_em]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/LENS_EM): -DEBUG - - Individual lenses in the collection column section - -DEBUG - documentation (NXlens_em.nxdl.xml:): -DEBUG - - Base class for an electro-magnetic lens or a compound lens. - - For :ref:`NXtransformations` the origin of the coordinate system is placed - in the center of the lens (its polepiece, pinhole, or another - point of reference). The origin should be specified in the :ref:`NXtransformations`. - - For details of electro-magnetic lenses in the literature - see e.g. `L. Reimer `_ - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_UFA@NX_class) -DEBUG - value: NXlens_em -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/LENS_EM -NXlens_em.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_UFA/name): -DEBUG - value: b'UFA' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_CHAR'] -DEBUG - classes: -NXlens_em.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/name): -DEBUG - - Given name, alias, colloquial, or short name for the lens. - For manufacturer names and identifiers use respective manufacturer fields. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_UFA/voltage): -DEBUG - value: 600.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - <> -DEBUG - documentation (NXlens_em.nxdl.xml:/voltage): -DEBUG - - Excitation voltage of the lens. - - For dipoles it is a single number. - For higher order multipoles, it is an array. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/lens_UFA/voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NXlens_em', 'NX_NUMBER'] -DEBUG - classes: -NXlens_em.nxdl.xml:/voltage -DEBUG - NXlens_em.nxdl.xml:/voltage@units [NX_VOLTAGE] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/lens_mode): -DEBUG - value: b'6kV_kmodem2.0_30VTOF_MoTe2_2340VMCP.sav' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/lens_mode -NXcollectioncolumn.nxdl.xml:/lens_mode -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/lens_mode): -DEBUG - -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/lens_mode): -DEBUG - - Labelling of the lens setting in use. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/projection): -DEBUG - value: b'reciprocal' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/projection -NXcollectioncolumn.nxdl.xml:/projection -DEBUG - <> -DEBUG - enumeration (NXcollectioncolumn.nxdl.xml:/projection): -DEBUG - -> real -DEBUG - -> reciprocal -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/projection): -DEBUG - -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/projection): -DEBUG - - The space projected in the angularly dispersive directions, real or reciprocal - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/scheme): -DEBUG - value: b'momentum dispersive' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/scheme -NXcollectioncolumn.nxdl.xml:/scheme -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/scheme): -DEBUG - -> angular dispersive -DEBUG - -> spatial dispersive -DEBUG - -> momentum dispersive -DEBUG - -> non-dispersive -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/COLLECTIONCOLUMN/scheme): -DEBUG - - Scheme of the electron collection column. - -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/scheme): -DEBUG - - Scheme of the electron collection lens, i.e. standard, deflector, PEEM, momentum - microscope, etc. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/collectioncolumn/working_distance): -DEBUG - value: 4.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_FLOAT'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/working_distance -DEBUG - <> -DEBUG - documentation (NXcollectioncolumn.nxdl.xml:/working_distance): -DEBUG - - Distance between sample and detector entrance - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/collectioncolumn/working_distance@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXcollectioncolumn', 'NX_FLOAT'] -DEBUG - classes: -NXcollectioncolumn.nxdl.xml:/working_distance -DEBUG - NXcollectioncolumn.nxdl.xml:/working_distance@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/depends_on): -DEBUG - value: b'/entry/instrument/electronanalyser/transformations/trans_z' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NX_CHAR'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/depends_on -DEBUG - <> -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/depends_on): -DEBUG - - Refers to the last transformation specifying the position of the electron analyser - in the NXtransformations chain. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/description): -DEBUG - value: b'SPECS Metis 1000 Momentum Microscope' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/description -NXelectronanalyser.nxdl.xml:/description -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/description): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/description): -DEBUG - - Free text description of the type of the detector - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/detector [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXdetector]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR -NXelectronanalyser.nxdl.xml:/DETECTOR -NXdetector.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/DETECTOR): -DEBUG - - Describes the electron detector - -DEBUG - documentation (NXdetector.nxdl.xml:): -DEBUG - - A detector, detector bank, or multidetector. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/detector@NX_class) -DEBUG - value: NXdetector -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR -NXelectronanalyser.nxdl.xml:/DETECTOR -NXdetector.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/detector/amplifier_bias): -DEBUG - value: 30.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_FLOAT'] -DEBUG - classes: -NXdetector.nxdl.xml:/amplifier_bias -DEBUG - <> -DEBUG - documentation (NXdetector.nxdl.xml:/amplifier_bias): -DEBUG - - The low voltage of the amplifier migh not be the ground. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/detector/amplifier_bias@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_FLOAT'] -DEBUG - classes: -NXdetector.nxdl.xml:/amplifier_bias -DEBUG - NXdetector.nxdl.xml:/amplifier_bias@units [NX_VOLTAGE] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/detector/amplifier_type): -DEBUG - value: b'MCP' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR/amplifier_type -NXdetector.nxdl.xml:/amplifier_type -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR/amplifier_type): -DEBUG - -> MCP -DEBUG - -> channeltron -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR/amplifier_type): -DEBUG - - Type of electron amplifier in the first amplification step. - -DEBUG - documentation (NXdetector.nxdl.xml:/amplifier_type): -DEBUG - - Type of electron amplifier, MCP, channeltron, etc. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/detector/amplifier_voltage): -DEBUG - value: 2340.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_FLOAT'] -DEBUG - classes: -NXdetector.nxdl.xml:/amplifier_voltage -DEBUG - <> -DEBUG - documentation (NXdetector.nxdl.xml:/amplifier_voltage): -DEBUG - - Voltage applied to the amplifier. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/detector/amplifier_voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_FLOAT'] -DEBUG - classes: -NXdetector.nxdl.xml:/amplifier_voltage -DEBUG - NXdetector.nxdl.xml:/amplifier_voltage@units [NX_VOLTAGE] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/detector/detector_type): -DEBUG - value: b'DLD' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR/detector_type -NXdetector.nxdl.xml:/detector_type -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR/detector_type): -DEBUG - -> DLD -DEBUG - -> Phosphor+CCD -DEBUG - -> Phosphor+CMOS -DEBUG - -> ECMOS -DEBUG - -> Anode -DEBUG - -> Multi-anode -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/DETECTOR/detector_type): -DEBUG - - Description of the detector type. - -DEBUG - documentation (NXdetector.nxdl.xml:/detector_type): -DEBUG - - Description of the detector type, DLD, Phosphor+CCD, CMOS. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/detector/detector_voltage): -DEBUG - value: 399.99712810186986 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_FLOAT'] -DEBUG - classes: -NXdetector.nxdl.xml:/detector_voltage -DEBUG - <> -DEBUG - documentation (NXdetector.nxdl.xml:/detector_voltage): -DEBUG - - Voltage applied to detector. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/detector/detector_voltage@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_FLOAT'] -DEBUG - classes: -NXdetector.nxdl.xml:/detector_voltage -DEBUG - NXdetector.nxdl.xml:/detector_voltage@units [NX_VOLTAGE] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/detector/sensor_pixels): -DEBUG - value: [1800 1800] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_INT'] -DEBUG - classes: -NXdetector.nxdl.xml:/sensor_pixels -DEBUG - <> -DEBUG - documentation (NXdetector.nxdl.xml:/sensor_pixels): -DEBUG - - Number of raw active elements in each dimension. Important for swept scans. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/detector/sensor_pixels@units) -DEBUG - value: -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXdetector', 'NX_INT'] -DEBUG - classes: -NXdetector.nxdl.xml:/sensor_pixels -DEBUG - NXdetector.nxdl.xml:/sensor_pixels@units [NX_UNITLESS] -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/device_information [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXfabrication]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXfabrication'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information -NXelectronanalyser.nxdl.xml:/FABRICATION -NXfabrication.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/FABRICATION): -DEBUG - -DEBUG - documentation (NXfabrication.nxdl.xml:): -DEBUG - - Details about a component as it is defined by its manufacturer. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/device_information@NX_class) -DEBUG - value: NXfabrication -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXfabrication'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information -NXelectronanalyser.nxdl.xml:/FABRICATION -NXfabrication.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/device_information/model): -DEBUG - value: b'Metis 1000 Momentum Microscope' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXfabrication', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information/model -NXfabrication.nxdl.xml:/model -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information/model): -DEBUG - -DEBUG - documentation (NXfabrication.nxdl.xml:/model): -DEBUG - - Version or model of the component named by the manufacturer. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/device_information/vendor): -DEBUG - value: b'SPECS GmbH' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXfabrication', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information/vendor -NXfabrication.nxdl.xml:/vendor -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/device_information/vendor): -DEBUG - -DEBUG - documentation (NXfabrication.nxdl.xml:/vendor): -DEBUG - - Company name of the manufacturer. - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/energy_resolution [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXresolution]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution -NXelectronanalyser.nxdl.xml:/energy_resolution -NXresolution.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/energy_resolution): -DEBUG - - Energy resolution of the analyser with the current setting. May be linked from an - NXcalibration. - -DEBUG - documentation (NXresolution.nxdl.xml:): -DEBUG - - Describes the resolution of a physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/energy_resolution@NX_class) -DEBUG - value: NXresolution -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution -NXelectronanalyser.nxdl.xml:/energy_resolution -NXresolution.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/energy_resolution/physical_quantity): -DEBUG - value: b'energy' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/physical_quantity -NXelectronanalyser.nxdl.xml:/energy_resolution/physical_quantity -NXresolution.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/physical_quantity): -DEBUG - -> energy -DEBUG - enumeration (NXelectronanalyser.nxdl.xml:/energy_resolution/physical_quantity): -DEBUG - -> energy -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/physical_quantity): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/energy_resolution/physical_quantity): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the resolution, e.g., - energy, momentum, time, etc. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/energy_resolution/resolution): -DEBUG - value: 110.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/resolution -NXelectronanalyser.nxdl.xml:/energy_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/resolution): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/energy_resolution/resolution): -DEBUG - - Minimum distinguishable energy separation in the energy spectra. - - This concept is related to term `10.24`_ of the ISO 18115-1:2023 standard. - - .. _10.24: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.24 - -DEBUG - documentation (NXresolution.nxdl.xml:/resolution): -DEBUG - - The resolution of the physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/energy_resolution/resolution@units) -DEBUG - value: meV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/resolution -NXelectronanalyser.nxdl.xml:/energy_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/resolution@units - REQUIRED, but undefined unit category -DEBUG - NXelectronanalyser.nxdl.xml:/energy_resolution/resolution@units [NX_ENERGY] -DEBUG - NXresolution.nxdl.xml:/resolution@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/energy_resolution/type): -DEBUG - value: b'estimated' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/type -NXresolution.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXresolution.nxdl.xml:/type): -DEBUG - -> estimated -DEBUG - -> derived -DEBUG - -> calibrated -DEBUG - -> other -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/energy_resolution/type): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/type): -DEBUG - - The process by which the resolution was determined. - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/energydispersion [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXenergydispersion]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION -NXelectronanalyser.nxdl.xml:/ENERGYDISPERSION -NXenergydispersion.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/ENERGYDISPERSION): -DEBUG - - Describes the energy dispersion section - -DEBUG - documentation (NXenergydispersion.nxdl.xml:): -DEBUG - - Subclass of NXelectronanalyser to describe the energy dispersion section of a - photoelectron analyser. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/energydispersion@NX_class) -DEBUG - value: NXenergydispersion -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION -NXelectronanalyser.nxdl.xml:/ENERGYDISPERSION -NXenergydispersion.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/energydispersion/pass_energy): -DEBUG - value: 30.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/pass_energy -NXenergydispersion.nxdl.xml:/pass_energy -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/pass_energy): -DEBUG - - Either `pass_energy` or `drift_energy` must be supplied. `pass_energy` should be used when working - with hemispherical analysers. - -DEBUG - documentation (NXenergydispersion.nxdl.xml:/pass_energy): -DEBUG - - Mean kinetic energy of the electrons in the energy-dispersive portion of the analyser. - This term should be used for hemispherical analysers. - - This concept is related to term `12.63`_ of the ISO 18115-1:2023 standard. - - .. _12.63: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.63 - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/energydispersion/pass_energy@units) -DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/pass_energy -NXenergydispersion.nxdl.xml:/pass_energy -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/pass_energy@units [NX_ENERGY] -DEBUG - NXenergydispersion.nxdl.xml:/pass_energy@units [NX_ENERGY] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/energydispersion/scheme): -DEBUG - value: b'tof' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/scheme -NXenergydispersion.nxdl.xml:/scheme -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/scheme): -DEBUG - -> tof -DEBUG - -> hemispherical -DEBUG - -> double hemispherical -DEBUG - -> cylindrical mirror -DEBUG - -> display mirror -DEBUG - -> retarding grid -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/ENERGYDISPERSION/scheme): -DEBUG - -DEBUG - documentation (NXenergydispersion.nxdl.xml:/scheme): -DEBUG - - Energy dispersion scheme employed, for example: tof, hemispherical, cylindrical, - mirror, retarding grid, etc. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/energydispersion/tof_distance): -DEBUG - value: 0.9 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion', 'NX_FLOAT'] -DEBUG - classes: -NXenergydispersion.nxdl.xml:/tof_distance -DEBUG - <> -DEBUG - documentation (NXenergydispersion.nxdl.xml:/tof_distance): -DEBUG - - Length of the tof drift electrode - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/energydispersion/tof_distance@units) -DEBUG - value: m -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXenergydispersion', 'NX_FLOAT'] -DEBUG - classes: -NXenergydispersion.nxdl.xml:/tof_distance -DEBUG - NXenergydispersion.nxdl.xml:/tof_distance@units [NX_LENGTH] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/fast_axes): -DEBUG - value: [b'kx' b'ky' b'E'] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/fast_axes -NXelectronanalyser.nxdl.xml:/fast_axes -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/fast_axes): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/fast_axes): -DEBUG - - List of the axes that are acquired simultaneously by the detector. - These refer only to the experimental variables recorded by the electron analyser. - Other variables such as temperature, manipulator angles etc. are labeled as fast or slow in the data. - - .. csv-table:: Examples - :header: "Mode", "fast_axes", "slow_axes" - - Hemispherical in ARPES mode, "['energy', 'kx']","" - "Hemispherical with channeltron, sweeping energy mode", "", [\"energy\"] - "Tof", "['energy', 'kx', 'ky']","" - "Momentum microscope, spin-resolved", "['energy', 'kx', 'ky']", "['spin up-down', 'spin left-right']" - - Axes may be less abstract than this, i.e. ['detector_x', 'detector_y']. - If energy_scan_mode=sweep, fast_axes: ['energy', 'kx']; slow_axes: ['energy'] is allowed. - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/momentum_resolution [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXresolution]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/momentum_resolution -NXresolution.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/momentum_resolution): -DEBUG - - Momentum resolution of the electron analyser (FWHM) - -DEBUG - documentation (NXresolution.nxdl.xml:): -DEBUG - - Describes the resolution of a physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/momentum_resolution@NX_class) -DEBUG - value: NXresolution -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/momentum_resolution -NXresolution.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/momentum_resolution/physical_quantity): -DEBUG - value: b'momentum' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/momentum_resolution/physical_quantity -NXresolution.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - enumeration (NXelectronanalyser.nxdl.xml:/momentum_resolution/physical_quantity): -DEBUG - -> momentum -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/momentum_resolution/physical_quantity): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the resolution, e.g., - energy, momentum, time, etc. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/momentum_resolution/resolution): -DEBUG - value: 0.08 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/momentum_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - <> -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/momentum_resolution/resolution): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/resolution): -DEBUG - - The resolution of the physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/momentum_resolution/resolution@units) -DEBUG - value: 1/angstrom -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/momentum_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - NXelectronanalyser.nxdl.xml:/momentum_resolution/resolution@units [NX_WAVENUMBER] -DEBUG - NXresolution.nxdl.xml:/resolution@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/momentum_resolution/type): -DEBUG - value: b'estimated' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXresolution.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXresolution.nxdl.xml:/type): -DEBUG - -> estimated -DEBUG - -> derived -DEBUG - -> calibrated -DEBUG - -> other -DEBUG - documentation (NXresolution.nxdl.xml:/type): -DEBUG - - The process by which the resolution was determined. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/slow_axes): -DEBUG - value: b'delay' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/slow_axes -NXelectronanalyser.nxdl.xml:/slow_axes -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/ELECTRONANALYSER/slow_axes): -DEBUG - -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/slow_axes): -DEBUG - - List of the axes that are acquired by scanning a physical parameter, listed in - order of decreasing speed. See fast_axes for examples. - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/spatial_resolution [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXresolution]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/spatial_resolution -NXresolution.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/spatial_resolution): -DEBUG - - Spatial resolution of the electron analyser (Airy disk radius) - - This concept is related to term `10.14`_ of the ISO 18115-1:2023 standard. - - .. _10.14: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.15 - -DEBUG - documentation (NXresolution.nxdl.xml:): -DEBUG - - Describes the resolution of a physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/spatial_resolution@NX_class) -DEBUG - value: NXresolution -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/spatial_resolution -NXresolution.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/spatial_resolution/physical_quantity): -DEBUG - value: b'length' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/spatial_resolution/physical_quantity -NXresolution.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - enumeration (NXelectronanalyser.nxdl.xml:/spatial_resolution/physical_quantity): -DEBUG - -> length -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/spatial_resolution/physical_quantity): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the resolution, e.g., - energy, momentum, time, etc. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/spatial_resolution/resolution): -DEBUG - value: 10.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/spatial_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - <> -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/spatial_resolution/resolution): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/resolution): -DEBUG - - The resolution of the physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/spatial_resolution/resolution@units) -DEBUG - value: µm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/spatial_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - NXelectronanalyser.nxdl.xml:/spatial_resolution/resolution@units [NX_LENGTH] -DEBUG - NXresolution.nxdl.xml:/resolution@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/spatial_resolution/type): -DEBUG - value: b'estimated' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXresolution.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXresolution.nxdl.xml:/type): -DEBUG - -> estimated -DEBUG - -> derived -DEBUG - -> calibrated -DEBUG - -> other -DEBUG - documentation (NXresolution.nxdl.xml:/type): -DEBUG - - The process by which the resolution was determined. - -DEBUG - ===== GROUP (//entry/instrument/electronanalyser/transformations [NXmpes::/NXentry/NXinstrument/NXelectronanalyser/NXtransformations]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXelectronanalyser.nxdl.xml:/TRANSFORMATIONS): -DEBUG - - Collection of axis-based translations and rotations to describe the location and - geometry of the electron analyser as a component in the instrument. Conventions - from the NXtransformations base class are used. In principle, the McStas - coordinate system is used. The first transformation has to point either to - another component of the system or "." (for pointing to the reference frame) to - relate it relative to the experimental setup. Typically, the components of a - system should all be related relative to each other and only one component - should relate to the reference coordinate system. - -DEBUG - documentation (NXtransformations.nxdl.xml:): -DEBUG - - Collection of axis-based translations and rotations to describe a geometry. - May also contain axes that do not move and therefore do not have a transformation - type specified, but are useful in understanding coordinate frames within which - transformations are done, or in documenting important directions, such as the - direction of gravity. - - A nested sequence of transformations lists the translation and rotation steps - needed to describe the position and orientation of any movable or fixed device. - - There will be one or more transformations (axes) defined by one or more fields - for each transformation. Transformations can also be described by NXlog groups when - the values change with time. The all-caps name ``AXISNAME`` designates the - particular axis generating a transformation (e.g. a rotation axis or a translation - axis or a general axis). The attribute ``units="NX_TRANSFORMATION"`` designates the - units will be appropriate to the ``transformation_type`` attribute: - - * ``NX_LENGTH`` for ``translation`` - * ``NX_ANGLE`` for ``rotation`` - * ``NX_UNITLESS`` for axes for which no transformation type is specified - - This class will usually contain all axes of a sample stage or goniometer or - a detector. The NeXus default :ref:`McSTAS coordinate frame` - is assumed, but additional useful coordinate axes may be defined by using axes for which - no transformation type has been specified. - - **Transformation chain** - - The entry point of a chain of transformations is a field called ``depends_on`` - will be outside of this class and points to a field in here. Following the chain may - also require following ``depends_on`` links to transformations outside, for example - to a common base table. If a relative path is given, it is relative to the group - enclosing the ``depends_on`` specification. - - For a chain of three transformations, where :math:`T_1` depends on :math:`T_2` - which in turn depends on :math:`T_3`, the final *active* transformation - matrix :math:`T_f` is - - .. math:: T_f = T_3 . T_2 . T_1 - - For example when positioning a flat detector, its pixel positions in the laboratory - reference frame (:ref:`McSTAS coordinate frame` by default) - can be calculated by - - .. math:: X_\text{lab} = T_f . X_\text{pixel} = T_3 . T_2 . T_1 . X_\text{pixel} - - Note that :math:`T_1` comes first in the *depends-on* chain and is also applied first - to the pixel coordinates. - - When we say transformation :math:`A` *depends on* transformation :math:`B` we mean that - the physical motor that realizes :math:`A` is *stacked on top of* the motor that realizes :math:`B`. - So the activate coordinate transformation :math:`A` needs to be applied to a coordinate - before applying :math:`B`. In other words :math:`X' = B . A . X`. - - **Transformation matrix** - - In explicit terms, the transformations are a subset of affine transformations expressed as - 4x4 active transformation matrices that act on homogeneous coordinates, :math:`X=[x,y,z,1]^T`. - - For rotation and translation, - - .. math:: T_r &= \begin{pmatrix} R & o \\ 0_3 & 1 \end{pmatrix} \\ T_t &= \begin{pmatrix} I_3 & t + o \\ 0_3 & 1 \end{pmatrix} - - where :math:`R` is the usual 3x3 rotation matrix, :math:`o` is an offset vector, - :math:`0_3` is a row of 3 zeros, :math:`I_3` is the 3x3 identity matrix and - :math:`t` is the translation vector. - - :math:`o` is given by the ``offset`` attribute, :math:`t` is given by the ``vector`` - attribute multiplied by the field value, and :math:`R` is defined as a rotation - about an axis in the direction of ``vector``, of angle of the field value. - - **Usage** - - One possible use of ``NXtransformations`` is to define the motors and - transformations for a diffractometer (goniometer). Such use is mentioned - in the ``NXinstrument`` base class. Use one ``NXtransformations`` group - for each diffractometer and name the group appropriate to the device. - Collecting the motors of a sample table or xyz-stage in an NXtransformations - group is equally possible. - - Following the section on the general description of axis in NXtransformations is a section which - documents the fields commonly used within NeXus for positioning purposes and their meaning. Whenever - there is a need for positioning a beam line component please use the existing names. Use as many fields - as needed in order to position the component. Feel free to add more axis if required. In the description - given below, only those atttributes which are defined through the name are spcified. Add the other attributes - of the full set: - - * vector - * offset - * transformation_type - * depends_on - - as needed. - - **Example 1: goniometer** - - Position a sample mounted on a goniometer in the :ref:`McSTAS coordinate frame`. - - The sample is oriented as follows - - .. math:: X_\text{lab} = R(\vec{v}_\omega, \omega) . - T(\vec{v}_z, \text{sam}_z) . - T(\vec{v}_y, \text{sam}_y) . - T(\vec{v}_x, \text{sam}_x) . - R(\vec{v}_\chi, \chi) . - R(\vec{v}_\varphi, \varphi) . X_s - - where - - * :math:`R(\vec{v},a)` is a rotation around vector :math:`\vec{v}` with angle :math:`a` - * :math:`T(\vec{u},t)` is a translation along vector :math:`\vec{u}` over a distance :math:`t` - * :math:`X_s` a coordinate in the sample reference frame. - - .. code-block:: - - entry:NXentry - sample:NXsample - depends_on=transformations/phi - transformations:NXtransformations - phi=0 - @depends_on=chi - @transformation_type=rotation - @vector=[-1 -0.0037 -0.002] - @units=degrees - chi=0 - @depends_on=sam_x - @transformation_type=rotation - @vector=[0.0046 0.0372 0.9993] - @units=degrees - sam_x=0 - @depends_on=sam_y - @transformation_type=translation - @vector=[1 0 0] - @units=mm - sam_y=0 - @depends_on=sam_z - @transformation_type=translation - @vector=[0 1 0] - @units=mm - sam_z=0 - @depends_on=omega - @transformation_type=translation - @vector=[0 0 1] - @units=mm - omega=174 - @depends_on=. - @transformation_type=rotation - @vector=[-1 0 0] - @units=degrees - - **Example 2: different coordinate system** - - Define a laboratory reference frame with the X-axis along the beam and the Z-axis opposite to the direction of gravity. - Three point detectors are positioned in this reference: - - * *transmission*: - * point detector in the beam - * 20 cm downstream from the sample (the origin of the reference frame) - * *vertical*: - * point detector 10 cm downstream from the sample - * making an angle of 5 degrees with the beam w.r.t. the sample - * positioned in the XZ-plane above the XY-plane - * *horizontal*: - * point detector 11 cm downstream from the sample - * making an angle of 6 degrees with the beam w.r.t. the sample - * positioned in the XY-plane above the XZ-plane - - The coordinates of the point detectors in the laboratory reference frame are - - * *transmission*: :math:`X_\text{lab} = T_x(20) . X_d` - * *vertical*: :math:`X_\text{lab} = R_y(-5) . T_x(10) . X_d` - * *horizontal*: :math:`X_\text{lab} = R_x(-90) . R_y(-6) . T_x(11) . X_d` - - where - - * :math:`T_x`, :math:`T_y`, :math:`T_z`: active transformation matrices for translation along the X, Y and Z axes - * :math:`R_x`, :math:`R_y`, :math:`R_z`: active transformation matrices for rotation around the X, Y and Z axes - * :math:`X_d` is a coordinate in the detector reference frame. - - Note that as these are point detectors, we only have one coordinate :math:`X_d=[0,0,0,1]^T`. - - .. code-block:: - - entry:NXentry - instrument:NXinstrument - vertical:NXdetector - depends_on=position/distance - position:NXtransformations - distance=10 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=5 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=0 # stay in the vertical plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - horizontal:NXdetector - depends_on=position/distance - position:NXtransformations - distance=11 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=6 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=90 # rotate to the horizontal plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - transmission:NXdetector - depends_on=position/distance - position:NXtransformations - distance=20 # move downstream from the sample - @depends_on=/entry/coordinate_system/beam - @units=cm - @vector=[1 0 0] - coordinate_system:NXtransformations - beam=NaN # value is never used - @depends_on=gravity - @vector=[1 0 0] # X-axis points in the beam direction - gravity=NaN # value is never used - @depends_on=. # end of the chain - @vector=[0 0 -1] # Z-axis points up - - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations@NX_class) -DEBUG - value: NXtransformations -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations'] -DEBUG - classes: -NXelectronanalyser.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/transformations/rot_y): -DEBUG - value: -115.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/rot_y@depends_on) -DEBUG - value: . -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/rot_y@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/rot_y@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/rot_y@vector) -DEBUG - value: [0 1 0] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/instrument/electronanalyser/transformations/trans_z): -DEBUG - value: 4.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/trans_z@depends_on) -DEBUG - value: rot_y -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/trans_z@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/trans_z@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/instrument/electronanalyser/transformations/trans_z@vector) -DEBUG - value: [0 0 1] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXelectronanalyser', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== GROUP (//entry/instrument/energy_resolution [NXmpes::/NXentry/NXinstrument/NXresolution]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution -NXinstrument.nxdl.xml:/RESOLUTION -NXresolution.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution): -DEBUG - - Overall energy resolution of the photoemission instrument. - -DEBUG - documentation (NXinstrument.nxdl.xml:/RESOLUTION): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:): -DEBUG - - Describes the resolution of a physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/energy_resolution@NX_class) -DEBUG - value: NXresolution -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution -NXinstrument.nxdl.xml:/RESOLUTION -NXresolution.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/energy_resolution/physical_quantity): -DEBUG - value: b'energy' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/physical_quantity -NXresolution.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/physical_quantity): -DEBUG - -> energy -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/physical_quantity): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the resolution, e.g., - energy, momentum, time, etc. - -DEBUG - ===== FIELD (//entry/instrument/energy_resolution/resolution): -DEBUG - value: 140.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/resolution): -DEBUG - - Minimum distinguishable energy separation in the energy spectra. - - This concept is related to term `10.24`_ of the ISO 18115-1:2023 standard. - - .. _10.24: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.24 - -DEBUG - documentation (NXresolution.nxdl.xml:/resolution): -DEBUG - - The resolution of the physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/energy_resolution/resolution@units) -DEBUG - value: meV -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/resolution -NXresolution.nxdl.xml:/resolution -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/resolution@units [NX_ENERGY] -DEBUG - NXresolution.nxdl.xml:/resolution@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/energy_resolution/type): -DEBUG - value: b'estimated' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/type -NXresolution.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXresolution.nxdl.xml:/type): -DEBUG - -> estimated -DEBUG - -> derived -DEBUG - -> calibrated -DEBUG - -> other -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/energy_resolution/type): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:/type): -DEBUG - - The process by which the resolution was determined. - -DEBUG - ===== GROUP (//entry/instrument/manipulator [NXmpes::/NXentry/NXinstrument/NXmanipulator]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR -NXmanipulator.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR): -DEBUG - - Manipulator for positioning of the sample. - -DEBUG - documentation (NXmanipulator.nxdl.xml:): -DEBUG - - Extension of NXpositioner to include fields to describe the use of manipulators - in photoemission experiments. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator@NX_class) -DEBUG - value: NXmanipulator -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR -NXmanipulator.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/manipulator/depends_on): -DEBUG - value: b'/entry/instrument/manipulator/transformations/trans_z' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NX_CHAR'] -DEBUG - classes: -NXmanipulator.nxdl.xml:/depends_on -DEBUG - <> -DEBUG - documentation (NXmanipulator.nxdl.xml:/depends_on): -DEBUG - - Refers to the last transformation specifying the positon of the manipulator in - the NXtransformations chain. - -DEBUG - ===== GROUP (//entry/instrument/manipulator/sample_bias_voltmeter [NXmpes::/NXentry/NXinstrument/NXmanipulator/NXsensor]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter -NXmanipulator.nxdl.xml:/sample_bias_voltmeter -NXsensor.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter): -DEBUG - -DEBUG - documentation (NXmanipulator.nxdl.xml:/sample_bias_voltmeter): -DEBUG - - Sensor measuring the voltage applied to sample and sample holder. - -DEBUG - documentation (NXsensor.nxdl.xml:): -DEBUG - - A sensor used to monitor an external condition - - The condition itself is described in :ref:`NXenvironment`. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/sample_bias_voltmeter@NX_class) -DEBUG - value: NXsensor -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter -NXmanipulator.nxdl.xml:/sample_bias_voltmeter -NXsensor.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/manipulator/sample_bias_voltmeter/measurement): -DEBUG - value: b'voltage' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/measurement -NXmanipulator.nxdl.xml:/sample_bias_voltmeter/measurement -NXsensor.nxdl.xml:/measurement -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/measurement): -DEBUG - -> voltage -DEBUG - enumeration (NXmanipulator.nxdl.xml:/sample_bias_voltmeter/measurement): -DEBUG - -> voltage -DEBUG - enumeration (NXsensor.nxdl.xml:/measurement): -DEBUG - -> temperature -DEBUG - -> pH -DEBUG - -> magnetic_field -DEBUG - -> electric_field -DEBUG - -> current -DEBUG - -> conductivity -DEBUG - -> resistance -DEBUG - -> voltage -DEBUG - -> pressure -DEBUG - -> flow -DEBUG - -> stress -DEBUG - -> strain -DEBUG - -> shear -DEBUG - -> surface_pressure -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/measurement): -DEBUG - -DEBUG - documentation (NXmanipulator.nxdl.xml:/sample_bias_voltmeter/measurement): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:/measurement): -DEBUG - - name for measured signal - -DEBUG - ===== FIELD (//entry/instrument/manipulator/sample_bias_voltmeter/name): -DEBUG - value: b'sample_bias' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/name -NXsensor.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/name): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:/name): -DEBUG - - Name for the sensor - -DEBUG - ===== FIELD (//entry/instrument/manipulator/sample_bias_voltmeter/value): -DEBUG - value: 17.799719004221362 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/value -NXmanipulator.nxdl.xml:/sample_bias_voltmeter/value -NXsensor.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/value): -DEBUG - -DEBUG - documentation (NXmanipulator.nxdl.xml:/sample_bias_voltmeter/value): -DEBUG - - In case of a single or averaged bias measurement, this is the scalar voltage measured between - sample and sample holder. It can also be an 1D array of measured voltages (without time stamps). - -DEBUG - documentation (NXsensor.nxdl.xml:/value): -DEBUG - - nominal setpoint or average value - - need [n] as may be a vector - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/sample_bias_voltmeter/value@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/value -NXmanipulator.nxdl.xml:/sample_bias_voltmeter/value -NXsensor.nxdl.xml:/value -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/sample_bias_voltmeter/value@units - REQUIRED, but undefined unit category -DEBUG - NXmanipulator.nxdl.xml:/sample_bias_voltmeter/value@units [NX_VOLTAGE] -DEBUG - NXsensor.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== GROUP (//entry/instrument/manipulator/temperature_sensor [NXmpes::/NXentry/NXinstrument/NXmanipulator/NXsensor]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor -NXmanipulator.nxdl.xml:/temperature_sensor -NXsensor.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor): -DEBUG - -DEBUG - documentation (NXmanipulator.nxdl.xml:/temperature_sensor): -DEBUG - - Temperature sensor measuring the sample temperature. - -DEBUG - documentation (NXsensor.nxdl.xml:): -DEBUG - - A sensor used to monitor an external condition - - The condition itself is described in :ref:`NXenvironment`. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/temperature_sensor@NX_class) -DEBUG - value: NXsensor -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor -NXmanipulator.nxdl.xml:/temperature_sensor -NXsensor.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/manipulator/temperature_sensor/measurement): -DEBUG - value: b'temperature' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/measurement -NXmanipulator.nxdl.xml:/temperature_sensor/measurement -NXsensor.nxdl.xml:/measurement -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/measurement): -DEBUG - -> temperature -DEBUG - enumeration (NXmanipulator.nxdl.xml:/temperature_sensor/measurement): -DEBUG - -> temperature -DEBUG - enumeration (NXsensor.nxdl.xml:/measurement): -DEBUG - -> temperature -DEBUG - -> pH -DEBUG - -> magnetic_field -DEBUG - -> electric_field -DEBUG - -> current -DEBUG - -> conductivity -DEBUG - -> resistance -DEBUG - -> voltage -DEBUG - -> pressure -DEBUG - -> flow -DEBUG - -> stress -DEBUG - -> strain -DEBUG - -> shear -DEBUG - -> surface_pressure -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/measurement): -DEBUG - -DEBUG - documentation (NXmanipulator.nxdl.xml:/temperature_sensor/measurement): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:/measurement): -DEBUG - - name for measured signal - -DEBUG - ===== FIELD (//entry/instrument/manipulator/temperature_sensor/name): -DEBUG - value: b'sample_temperature' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/name -NXsensor.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/name): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:/name): -DEBUG - - Name for the sensor - -DEBUG - ===== FIELD (//entry/instrument/manipulator/temperature_sensor/value): -DEBUG - value: 23.050763803680983 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/value -NXmanipulator.nxdl.xml:/temperature_sensor/value -NXsensor.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/value): -DEBUG - -DEBUG - documentation (NXmanipulator.nxdl.xml:/temperature_sensor/value): -DEBUG - - In case of a single or averaged temperature measurement, this is the scalar temperature measured - by the sample temperature sensor. It can also be a 1D array of measured temperatures - (without time stamps). - -DEBUG - documentation (NXsensor.nxdl.xml:/value): -DEBUG - - nominal setpoint or average value - - need [n] as may be a vector - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/temperature_sensor/value@units) -DEBUG - value: K -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/value -NXmanipulator.nxdl.xml:/temperature_sensor/value -NXsensor.nxdl.xml:/value -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/MANIPULATOR/temperature_sensor/value@units - REQUIRED, but undefined unit category -DEBUG - NXmanipulator.nxdl.xml:/temperature_sensor/value@units [NX_TEMPERATURE] -DEBUG - NXsensor.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== GROUP (//entry/instrument/manipulator/transformations [NXmpes::/NXentry/NXinstrument/NXmanipulator/NXtransformations]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations'] -DEBUG - classes: -NXmanipulator.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmanipulator.nxdl.xml:/TRANSFORMATIONS): -DEBUG - - Collection of axis-based translations and rotations to describe the location and - geometry of the manipulator as a component in the instrument. Conventions from - the NXtransformations base class are used. In principle, the McStas coordinate - system is used. The first transformation has to point either to another - component of the system or . (for pointing to the reference frame) to relate it - relative to the experimental setup. Typically, the components of a system should - all be related relative to each other and only one component should relate to - the reference coordinate system. - -DEBUG - documentation (NXtransformations.nxdl.xml:): -DEBUG - - Collection of axis-based translations and rotations to describe a geometry. - May also contain axes that do not move and therefore do not have a transformation - type specified, but are useful in understanding coordinate frames within which - transformations are done, or in documenting important directions, such as the - direction of gravity. - - A nested sequence of transformations lists the translation and rotation steps - needed to describe the position and orientation of any movable or fixed device. - - There will be one or more transformations (axes) defined by one or more fields - for each transformation. Transformations can also be described by NXlog groups when - the values change with time. The all-caps name ``AXISNAME`` designates the - particular axis generating a transformation (e.g. a rotation axis or a translation - axis or a general axis). The attribute ``units="NX_TRANSFORMATION"`` designates the - units will be appropriate to the ``transformation_type`` attribute: - - * ``NX_LENGTH`` for ``translation`` - * ``NX_ANGLE`` for ``rotation`` - * ``NX_UNITLESS`` for axes for which no transformation type is specified - - This class will usually contain all axes of a sample stage or goniometer or - a detector. The NeXus default :ref:`McSTAS coordinate frame` - is assumed, but additional useful coordinate axes may be defined by using axes for which - no transformation type has been specified. - - **Transformation chain** - - The entry point of a chain of transformations is a field called ``depends_on`` - will be outside of this class and points to a field in here. Following the chain may - also require following ``depends_on`` links to transformations outside, for example - to a common base table. If a relative path is given, it is relative to the group - enclosing the ``depends_on`` specification. - - For a chain of three transformations, where :math:`T_1` depends on :math:`T_2` - which in turn depends on :math:`T_3`, the final *active* transformation - matrix :math:`T_f` is - - .. math:: T_f = T_3 . T_2 . T_1 - - For example when positioning a flat detector, its pixel positions in the laboratory - reference frame (:ref:`McSTAS coordinate frame` by default) - can be calculated by - - .. math:: X_\text{lab} = T_f . X_\text{pixel} = T_3 . T_2 . T_1 . X_\text{pixel} - - Note that :math:`T_1` comes first in the *depends-on* chain and is also applied first - to the pixel coordinates. - - When we say transformation :math:`A` *depends on* transformation :math:`B` we mean that - the physical motor that realizes :math:`A` is *stacked on top of* the motor that realizes :math:`B`. - So the activate coordinate transformation :math:`A` needs to be applied to a coordinate - before applying :math:`B`. In other words :math:`X' = B . A . X`. - - **Transformation matrix** - - In explicit terms, the transformations are a subset of affine transformations expressed as - 4x4 active transformation matrices that act on homogeneous coordinates, :math:`X=[x,y,z,1]^T`. - - For rotation and translation, - - .. math:: T_r &= \begin{pmatrix} R & o \\ 0_3 & 1 \end{pmatrix} \\ T_t &= \begin{pmatrix} I_3 & t + o \\ 0_3 & 1 \end{pmatrix} - - where :math:`R` is the usual 3x3 rotation matrix, :math:`o` is an offset vector, - :math:`0_3` is a row of 3 zeros, :math:`I_3` is the 3x3 identity matrix and - :math:`t` is the translation vector. - - :math:`o` is given by the ``offset`` attribute, :math:`t` is given by the ``vector`` - attribute multiplied by the field value, and :math:`R` is defined as a rotation - about an axis in the direction of ``vector``, of angle of the field value. - - **Usage** - - One possible use of ``NXtransformations`` is to define the motors and - transformations for a diffractometer (goniometer). Such use is mentioned - in the ``NXinstrument`` base class. Use one ``NXtransformations`` group - for each diffractometer and name the group appropriate to the device. - Collecting the motors of a sample table or xyz-stage in an NXtransformations - group is equally possible. - - Following the section on the general description of axis in NXtransformations is a section which - documents the fields commonly used within NeXus for positioning purposes and their meaning. Whenever - there is a need for positioning a beam line component please use the existing names. Use as many fields - as needed in order to position the component. Feel free to add more axis if required. In the description - given below, only those atttributes which are defined through the name are spcified. Add the other attributes - of the full set: - - * vector - * offset - * transformation_type - * depends_on - - as needed. - - **Example 1: goniometer** - - Position a sample mounted on a goniometer in the :ref:`McSTAS coordinate frame`. - - The sample is oriented as follows - - .. math:: X_\text{lab} = R(\vec{v}_\omega, \omega) . - T(\vec{v}_z, \text{sam}_z) . - T(\vec{v}_y, \text{sam}_y) . - T(\vec{v}_x, \text{sam}_x) . - R(\vec{v}_\chi, \chi) . - R(\vec{v}_\varphi, \varphi) . X_s - - where - - * :math:`R(\vec{v},a)` is a rotation around vector :math:`\vec{v}` with angle :math:`a` - * :math:`T(\vec{u},t)` is a translation along vector :math:`\vec{u}` over a distance :math:`t` - * :math:`X_s` a coordinate in the sample reference frame. - - .. code-block:: - - entry:NXentry - sample:NXsample - depends_on=transformations/phi - transformations:NXtransformations - phi=0 - @depends_on=chi - @transformation_type=rotation - @vector=[-1 -0.0037 -0.002] - @units=degrees - chi=0 - @depends_on=sam_x - @transformation_type=rotation - @vector=[0.0046 0.0372 0.9993] - @units=degrees - sam_x=0 - @depends_on=sam_y - @transformation_type=translation - @vector=[1 0 0] - @units=mm - sam_y=0 - @depends_on=sam_z - @transformation_type=translation - @vector=[0 1 0] - @units=mm - sam_z=0 - @depends_on=omega - @transformation_type=translation - @vector=[0 0 1] - @units=mm - omega=174 - @depends_on=. - @transformation_type=rotation - @vector=[-1 0 0] - @units=degrees - - **Example 2: different coordinate system** - - Define a laboratory reference frame with the X-axis along the beam and the Z-axis opposite to the direction of gravity. - Three point detectors are positioned in this reference: - - * *transmission*: - * point detector in the beam - * 20 cm downstream from the sample (the origin of the reference frame) - * *vertical*: - * point detector 10 cm downstream from the sample - * making an angle of 5 degrees with the beam w.r.t. the sample - * positioned in the XZ-plane above the XY-plane - * *horizontal*: - * point detector 11 cm downstream from the sample - * making an angle of 6 degrees with the beam w.r.t. the sample - * positioned in the XY-plane above the XZ-plane - - The coordinates of the point detectors in the laboratory reference frame are - - * *transmission*: :math:`X_\text{lab} = T_x(20) . X_d` - * *vertical*: :math:`X_\text{lab} = R_y(-5) . T_x(10) . X_d` - * *horizontal*: :math:`X_\text{lab} = R_x(-90) . R_y(-6) . T_x(11) . X_d` - - where - - * :math:`T_x`, :math:`T_y`, :math:`T_z`: active transformation matrices for translation along the X, Y and Z axes - * :math:`R_x`, :math:`R_y`, :math:`R_z`: active transformation matrices for rotation around the X, Y and Z axes - * :math:`X_d` is a coordinate in the detector reference frame. - - Note that as these are point detectors, we only have one coordinate :math:`X_d=[0,0,0,1]^T`. - - .. code-block:: - - entry:NXentry - instrument:NXinstrument - vertical:NXdetector - depends_on=position/distance - position:NXtransformations - distance=10 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=5 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=0 # stay in the vertical plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - horizontal:NXdetector - depends_on=position/distance - position:NXtransformations - distance=11 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=6 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=90 # rotate to the horizontal plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - transmission:NXdetector - depends_on=position/distance - position:NXtransformations - distance=20 # move downstream from the sample - @depends_on=/entry/coordinate_system/beam - @units=cm - @vector=[1 0 0] - coordinate_system:NXtransformations - beam=NaN # value is never used - @depends_on=gravity - @vector=[1 0 0] # X-axis points in the beam direction - gravity=NaN # value is never used - @depends_on=. # end of the chain - @vector=[0 0 -1] # Z-axis points up - - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations@NX_class) -DEBUG - value: NXtransformations -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations'] -DEBUG - classes: -NXmanipulator.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/manipulator/transformations/rot_x): -DEBUG - value: -90.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_x@depends_on) -DEBUG - value: . -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_x@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_x@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_x@vector) -DEBUG - value: [1 0 0] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/instrument/manipulator/transformations/rot_z): -DEBUG - value: -25.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_z@depends_on) -DEBUG - value: rot_x -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_z@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_z@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/rot_z@vector) -DEBUG - value: [0 0 1] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/instrument/manipulator/transformations/trans_z): -DEBUG - value: -0.32 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/trans_z@depends_on) -DEBUG - value: rot_z -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/trans_z@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/trans_z@units) -DEBUG - value: m -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/instrument/manipulator/transformations/trans_z@vector) -DEBUG - value: [0 0 1] -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXmanipulator', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== GROUP (//entry/instrument/momentum_resolution [NXmpes::/NXentry/NXinstrument/NXresolution]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - classes: -NXinstrument.nxdl.xml:/RESOLUTION -NXresolution.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXinstrument.nxdl.xml:/RESOLUTION): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:): -DEBUG - - Describes the resolution of a physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/momentum_resolution@NX_class) -DEBUG - value: NXresolution -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - classes: -NXinstrument.nxdl.xml:/RESOLUTION -NXresolution.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/momentum_resolution/physical_quantity): -DEBUG - value: b'momentum' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXresolution.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - documentation (NXresolution.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the resolution, e.g., - energy, momentum, time, etc. - -DEBUG - ===== FIELD (//entry/instrument/momentum_resolution/resolution): -DEBUG - value: 0.08 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXresolution.nxdl.xml:/resolution -DEBUG - <> -DEBUG - documentation (NXresolution.nxdl.xml:/resolution): -DEBUG - - The resolution of the physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/momentum_resolution/resolution@units) -DEBUG - value: 1/angstrom -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXresolution.nxdl.xml:/resolution -DEBUG - NXresolution.nxdl.xml:/resolution@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/momentum_resolution/type): -DEBUG - value: b'estimated' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXresolution.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXresolution.nxdl.xml:/type): -DEBUG - -> estimated -DEBUG - -> derived -DEBUG - -> calibrated -DEBUG - -> other -DEBUG - documentation (NXresolution.nxdl.xml:/type): -DEBUG - - The process by which the resolution was determined. - -DEBUG - ===== FIELD (//entry/instrument/name): -DEBUG - value: b'Time-of-flight momentum microscope equipped delay line detector, at the endstation of the high rep-rate HHG source at FHI' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NX_CHAR'] -DEBUG - classes: -NXinstrument.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXinstrument.nxdl.xml:/name): -DEBUG - - Name of instrument - -DEBUG - ===== ATTRS (//entry/instrument/name@short_name) -DEBUG - value: TR-ARPES @ FHI -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NX_CHAR'] -DEBUG - classes: -NXinstrument.nxdl.xml:/name -DEBUG - NXinstrument.nxdl.xml:/name@short_name - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXinstrument.nxdl.xml:/name/short_name): -DEBUG - - short name for instrument, perhaps the acronym - -DEBUG - ===== GROUP (//entry/instrument/pressure_gauge [NXmpes::/NXentry/NXinstrument/NXsensor]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge -NXinstrument.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge): -DEBUG - - Device to measure the gas pressure around the sample. - -DEBUG - documentation (NXinstrument.nxdl.xml:/SENSOR): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:): -DEBUG - - A sensor used to monitor an external condition - - The condition itself is described in :ref:`NXenvironment`. - -DEBUG - ===== ATTRS (//entry/instrument/pressure_gauge@NX_class) -DEBUG - value: NXsensor -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge -NXinstrument.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/pressure_gauge/measurement): -DEBUG - value: b'pressure' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/measurement -NXsensor.nxdl.xml:/measurement -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/measurement): -DEBUG - -> pressure -DEBUG - enumeration (NXsensor.nxdl.xml:/measurement): -DEBUG - -> temperature -DEBUG - -> pH -DEBUG - -> magnetic_field -DEBUG - -> electric_field -DEBUG - -> current -DEBUG - -> conductivity -DEBUG - -> resistance -DEBUG - -> voltage -DEBUG - -> pressure -DEBUG - -> flow -DEBUG - -> stress -DEBUG - -> strain -DEBUG - -> shear -DEBUG - -> surface_pressure -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/measurement): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:/measurement): -DEBUG - - name for measured signal - -DEBUG - ===== FIELD (//entry/instrument/pressure_gauge/name): -DEBUG - value: b'sample_chamber_pressure' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/name -NXsensor.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/name): -DEBUG - -DEBUG - documentation (NXsensor.nxdl.xml:/name): -DEBUG - - Name for the sensor - -DEBUG - ===== FIELD (//entry/instrument/pressure_gauge/value): -DEBUG - value: 4.5599999999999996e-11 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/value -NXsensor.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/value): -DEBUG - - In case of a single or averaged gas pressure measurement, this is the scalar gas pressure around - the sample. It can also be an 1D array of measured pressures (without time stamps). - -DEBUG - documentation (NXsensor.nxdl.xml:/value): -DEBUG - - nominal setpoint or average value - - need [n] as may be a vector - -DEBUG - ===== ATTRS (//entry/instrument/pressure_gauge/value@units) -DEBUG - value: mbar -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/value -NXsensor.nxdl.xml:/value -DEBUG - NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/pressure_gauge/value@units [NX_PRESSURE] -DEBUG - NXsensor.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== GROUP (//entry/instrument/source_probe [NXmpes::/NXentry/NXinstrument/NXsource]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE -NXinstrument.nxdl.xml:/SOURCE -NXsource.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE): -DEBUG - - A source used to generate a beam. Properties refer strictly to parameters of the - source, not of the output beam. For example, the energy of the source is not the - optical power of the beam, but the energy of the electron beam in a synchrotron - or similar. - - Note that the uppercase notation in sourceTYPE means that multiple sources can - be provided. The uppercase part can be substituted with any string that consists - of alphanumeric characters, including both uppercase and lowercase letters from A to Z - and numerical digits from 0 to 9. For example, in pump-probe experiments, it is possible - to have both a `source_probe` and a `source_pump`. - -DEBUG - documentation (NXinstrument.nxdl.xml:/SOURCE): -DEBUG - -DEBUG - documentation (NXsource.nxdl.xml:): -DEBUG - - Radiation source emitting a beam. - - Examples include particle sources (electrons, neutrons, protons) or sources for electromagnetic radiation (photons). - This base class can also be used to describe neutron or x-ray storage ring/facilities. - -DEBUG - ===== ATTRS (//entry/instrument/source_probe@NX_class) -DEBUG - value: NXsource -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE -NXinstrument.nxdl.xml:/SOURCE -NXsource.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/source_probe/associated_beam): -DEBUG - value: b'/entry/instrument/beam_probe' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/associated_beam -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/associated_beam): -DEBUG - - A reference to a beam emitted by this source. - Should be named with the same appendix, e.g., - for `source_probe` it should refer to `beam_probe`. - - Example: - * /entry/instrument/source_probe = /entry/instrument/beam_probe - -DEBUG - ===== FIELD (//entry/instrument/source_probe/frequency): -DEBUG - value: 500.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] -DEBUG - classes: -NXsource.nxdl.xml:/frequency -DEBUG - <> -DEBUG - documentation (NXsource.nxdl.xml:/frequency): -DEBUG - - Frequency of pulsed source - -DEBUG - ===== ATTRS (//entry/instrument/source_probe/frequency@units) -DEBUG - value: kHz -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] -DEBUG - classes: -NXsource.nxdl.xml:/frequency -DEBUG - NXsource.nxdl.xml:/frequency@units [NX_FREQUENCY] -DEBUG - ===== FIELD (//entry/instrument/source_probe/mode): -DEBUG - value: b'Single Bunch' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXsource.nxdl.xml:/mode -DEBUG - <> -DEBUG - enumeration (NXsource.nxdl.xml:/mode): -DEBUG - -> Single Bunch -DEBUG - -> Multi Bunch -DEBUG - documentation (NXsource.nxdl.xml:/mode): -DEBUG - - source operating mode - -DEBUG - ===== FIELD (//entry/instrument/source_probe/name): -DEBUG - value: b'HHG @ TR-ARPES @ FHI' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/name -NXsource.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/name): -DEBUG - -DEBUG - documentation (NXsource.nxdl.xml:/name): -DEBUG - - Name of source - -DEBUG - ===== FIELD (//entry/instrument/source_probe/probe): -DEBUG - value: b'photon' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/probe -NXsource.nxdl.xml:/probe -DEBUG - <> -DEBUG - enumeration (NXsource.nxdl.xml:/probe): -DEBUG - -> neutron -DEBUG - -> photon -DEBUG - -> x-ray -DEBUG - -> muon -DEBUG - -> electron -DEBUG - -> ultraviolet -DEBUG - -> visible light -DEBUG - -> positron -DEBUG - -> proton -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/probe): -DEBUG - -DEBUG - documentation (NXsource.nxdl.xml:/probe): -DEBUG - - type of radiation probe (pick one from the enumerated list and spell exactly) - -DEBUG - ===== FIELD (//entry/instrument/source_probe/type): -DEBUG - value: b'HHG laser' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/type -NXsource.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/type): -DEBUG - -> Synchrotron X-ray Source -DEBUG - -> Rotating Anode X-ray -DEBUG - -> Fixed Tube X-ray -DEBUG - -> UV Laser -DEBUG - -> Free-Electron Laser -DEBUG - -> Optical Laser -DEBUG - -> UV Plasma Source -DEBUG - -> Metal Jet X-ray -DEBUG - -> HHG laser -DEBUG - -> UV lamp -DEBUG - -> Monochromatized electron source -DEBUG - -> other -DEBUG - enumeration (NXsource.nxdl.xml:/type): -DEBUG - -> Spallation Neutron Source -DEBUG - -> Pulsed Reactor Neutron Source -DEBUG - -> Reactor Neutron Source -DEBUG - -> Synchrotron X-ray Source -DEBUG - -> Pulsed Muon Source -DEBUG - -> Rotating Anode X-ray -DEBUG - -> Fixed Tube X-ray -DEBUG - -> UV Laser -DEBUG - -> Free-Electron Laser -DEBUG - -> Optical Laser -DEBUG - -> Ion Source -DEBUG - -> UV Plasma Source -DEBUG - -> Metal Jet X-ray -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/type): -DEBUG - -DEBUG - documentation (NXsource.nxdl.xml:/type): -DEBUG - - type of radiation source (pick one from the enumerated list and spell exactly) - -DEBUG - ===== GROUP (//entry/instrument/source_pump [NXmpes::/NXentry/NXinstrument/NXsource]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE -NXinstrument.nxdl.xml:/SOURCE -NXsource.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE): -DEBUG - - A source used to generate a beam. Properties refer strictly to parameters of the - source, not of the output beam. For example, the energy of the source is not the - optical power of the beam, but the energy of the electron beam in a synchrotron - or similar. - - Note that the uppercase notation in sourceTYPE means that multiple sources can - be provided. The uppercase part can be substituted with any string that consists - of alphanumeric characters, including both uppercase and lowercase letters from A to Z - and numerical digits from 0 to 9. For example, in pump-probe experiments, it is possible - to have both a `source_probe` and a `source_pump`. - -DEBUG - documentation (NXinstrument.nxdl.xml:/SOURCE): -DEBUG - -DEBUG - documentation (NXsource.nxdl.xml:): -DEBUG - - Radiation source emitting a beam. - - Examples include particle sources (electrons, neutrons, protons) or sources for electromagnetic radiation (photons). - This base class can also be used to describe neutron or x-ray storage ring/facilities. - -DEBUG - ===== ATTRS (//entry/instrument/source_pump@NX_class) -DEBUG - value: NXsource -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE -NXinstrument.nxdl.xml:/SOURCE -NXsource.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/source_pump/associated_beam): -DEBUG - value: b'/entry/instrument/beam_pump' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/associated_beam -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/associated_beam): -DEBUG - - A reference to a beam emitted by this source. - Should be named with the same appendix, e.g., - for `source_probe` it should refer to `beam_probe`. - - Example: - * /entry/instrument/source_probe = /entry/instrument/beam_probe - -DEBUG - ===== FIELD (//entry/instrument/source_pump/frequency): -DEBUG - value: 500.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] -DEBUG - classes: -NXsource.nxdl.xml:/frequency -DEBUG - <> -DEBUG - documentation (NXsource.nxdl.xml:/frequency): -DEBUG - - Frequency of pulsed source - -DEBUG - ===== ATTRS (//entry/instrument/source_pump/frequency@units) -DEBUG - value: kHz -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_FLOAT'] -DEBUG - classes: -NXsource.nxdl.xml:/frequency -DEBUG - NXsource.nxdl.xml:/frequency@units [NX_FREQUENCY] -DEBUG - ===== FIELD (//entry/instrument/source_pump/mode): -DEBUG - value: b'Single Bunch' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXsource.nxdl.xml:/mode -DEBUG - <> -DEBUG - enumeration (NXsource.nxdl.xml:/mode): -DEBUG - -> Single Bunch -DEBUG - -> Multi Bunch -DEBUG - documentation (NXsource.nxdl.xml:/mode): -DEBUG - - source operating mode - -DEBUG - ===== FIELD (//entry/instrument/source_pump/name): -DEBUG - value: b'OPCPA @ TR-ARPES @ FHI' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/name -NXsource.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/name): -DEBUG - -DEBUG - documentation (NXsource.nxdl.xml:/name): -DEBUG - - Name of source - -DEBUG - ===== FIELD (//entry/instrument/source_pump/probe): -DEBUG - value: b'visible light' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/probe -NXsource.nxdl.xml:/probe -DEBUG - <> -DEBUG - enumeration (NXsource.nxdl.xml:/probe): -DEBUG - -> neutron -DEBUG - -> photon -DEBUG - -> x-ray -DEBUG - -> muon -DEBUG - -> electron -DEBUG - -> ultraviolet -DEBUG - -> visible light -DEBUG - -> positron -DEBUG - -> proton -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/probe): -DEBUG - -DEBUG - documentation (NXsource.nxdl.xml:/probe): -DEBUG - - type of radiation probe (pick one from the enumerated list and spell exactly) - -DEBUG - ===== FIELD (//entry/instrument/source_pump/type): -DEBUG - value: b'Optical Laser' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXsource', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/type -NXsource.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/type): -DEBUG - -> Synchrotron X-ray Source -DEBUG - -> Rotating Anode X-ray -DEBUG - -> Fixed Tube X-ray -DEBUG - -> UV Laser -DEBUG - -> Free-Electron Laser -DEBUG - -> Optical Laser -DEBUG - -> UV Plasma Source -DEBUG - -> Metal Jet X-ray -DEBUG - -> HHG laser -DEBUG - -> UV lamp -DEBUG - -> Monochromatized electron source -DEBUG - -> other -DEBUG - enumeration (NXsource.nxdl.xml:/type): -DEBUG - -> Spallation Neutron Source -DEBUG - -> Pulsed Reactor Neutron Source -DEBUG - -> Reactor Neutron Source -DEBUG - -> Synchrotron X-ray Source -DEBUG - -> Pulsed Muon Source -DEBUG - -> Rotating Anode X-ray -DEBUG - -> Fixed Tube X-ray -DEBUG - -> UV Laser -DEBUG - -> Free-Electron Laser -DEBUG - -> Optical Laser -DEBUG - -> Ion Source -DEBUG - -> UV Plasma Source -DEBUG - -> Metal Jet X-ray -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/INSTRUMENT/sourceTYPE/type): -DEBUG - -DEBUG - documentation (NXsource.nxdl.xml:/type): -DEBUG - - type of radiation source (pick one from the enumerated list and spell exactly) - -DEBUG - ===== GROUP (//entry/instrument/temporal_resolution [NXmpes::/NXentry/NXinstrument/NXresolution]): -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - classes: -NXinstrument.nxdl.xml:/RESOLUTION -NXresolution.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXinstrument.nxdl.xml:/RESOLUTION): -DEBUG - -DEBUG - documentation (NXresolution.nxdl.xml:): -DEBUG - - Describes the resolution of a physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/temporal_resolution@NX_class) -DEBUG - value: NXresolution -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution'] -DEBUG - classes: -NXinstrument.nxdl.xml:/RESOLUTION -NXresolution.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/instrument/temporal_resolution/physical_quantity): -DEBUG - value: b'time' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXresolution.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - documentation (NXresolution.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the resolution, e.g., - energy, momentum, time, etc. - -DEBUG - ===== FIELD (//entry/instrument/temporal_resolution/resolution): -DEBUG - value: 35.0 -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXresolution.nxdl.xml:/resolution -DEBUG - <> -DEBUG - documentation (NXresolution.nxdl.xml:/resolution): -DEBUG - - The resolution of the physical quantity. - -DEBUG - ===== ATTRS (//entry/instrument/temporal_resolution/resolution@units) -DEBUG - value: fs -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_FLOAT'] -DEBUG - classes: -NXresolution.nxdl.xml:/resolution -DEBUG - NXresolution.nxdl.xml:/resolution@units [NX_ANY] -DEBUG - ===== FIELD (//entry/instrument/temporal_resolution/type): -DEBUG - value: b'estimated' -DEBUG - classpath: ['NXentry', 'NXinstrument', 'NXresolution', 'NX_CHAR'] -DEBUG - classes: -NXresolution.nxdl.xml:/type -DEBUG - <> -DEBUG - enumeration (NXresolution.nxdl.xml:/type): -DEBUG - -> estimated -DEBUG - -> derived -DEBUG - -> calibrated -DEBUG - -> other -DEBUG - documentation (NXresolution.nxdl.xml:/type): -DEBUG - - The process by which the resolution was determined. - -DEBUG - ===== GROUP (//entry/process [NXmpes::/NXentry/NXprocess_mpes]): -DEBUG - classpath: ['NXentry', 'NXprocess_mpes'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES -NXprocess_mpes.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES): -DEBUG - - Document an event of data processing, reconstruction, or analysis for this data. - The appropriate axis calibrations for a given experiment should be described using - one or more of the following NXcalibrations. The individual calibrations for a given - `AXISNAME` in `data` should be called `AXISNAME_calibration`. - -DEBUG - documentation (NXprocess_mpes.nxdl.xml:): -DEBUG - - :ref:`NXprocess_mpes` describes events of data processing, reconstruction, - or analysis for photoemission-related data. - - It extends the NXprocess class and provides a glossary of explicitly named processes - and their metadata which are typical for photoemission data. - - For now, the extension of NXprocess is performed by simply copying all existing groups, fields, - and attibute from NXprocess. In the future, it is envisioned that this extension can be solved by - base class inheritance. - -DEBUG - ===== ATTRS (//entry/process@NX_class) -DEBUG - value: NXprocess_mpes -DEBUG - classpath: ['NXentry', 'NXprocess_mpes'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES -NXprocess_mpes.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/process/distortion [NXmpes::/NXentry/NXprocess_mpes/NXdistortion]): -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXdistortion'] -DEBUG - classes: -NXprocess_mpes.nxdl.xml:/DISTORTION -NXdistortion.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXprocess_mpes.nxdl.xml:/DISTORTION): -DEBUG - - Describes the operations of image distortion correction - -DEBUG - documentation (NXdistortion.nxdl.xml:): -DEBUG - - Subclass of NXprocess to describe post-processing distortion correction. - -DEBUG - ===== ATTRS (//entry/process/distortion@NX_class) -DEBUG - value: NXdistortion -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXdistortion'] -DEBUG - classes: -NXprocess_mpes.nxdl.xml:/DISTORTION -NXdistortion.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/process/distortion/cdeform_field): -DEBUG - value: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ... -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXdistortion', 'NX_FLOAT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/cdeform_field -DEBUG - <> -DEBUG - documentation (NXdistortion.nxdl.xml:/cdeform_field): -DEBUG - - Column deformation field for general non-rigid distortion corrections. 2D matrix - holding the column information of the mapping of each original coordinate. - -DEBUG - ===== ATTRS (//entry/process/distortion/cdeform_field@units) -DEBUG - value: -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXdistortion', 'NX_FLOAT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/cdeform_field -DEBUG - NXdistortion.nxdl.xml:/cdeform_field@units [NX_UNITLESS] -DEBUG - ===== FIELD (//entry/process/distortion/original_centre): -DEBUG - value: [203. 215.] -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXdistortion', 'NX_FLOAT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/original_centre -DEBUG - <> -DEBUG - documentation (NXdistortion.nxdl.xml:/original_centre): -DEBUG - - For symmetry-guided distortion correction. Here we record the coordinates of the - symmetry centre point. - -DEBUG - ===== ATTRS (//entry/process/distortion/original_centre@units) -DEBUG - value: -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXdistortion', 'NX_FLOAT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/original_centre -DEBUG - NXdistortion.nxdl.xml:/original_centre@units [NX_UNITLESS] -DEBUG - ===== FIELD (//entry/process/distortion/original_points): -DEBUG - value: [166. 283.] -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXdistortion', 'NX_FLOAT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/original_points -DEBUG - <> -DEBUG - documentation (NXdistortion.nxdl.xml:/original_points): -DEBUG - - For symmetry-guided distortion correction. Here we record the coordinates of the - relevant symmetry points. - -DEBUG - ===== ATTRS (//entry/process/distortion/original_points@units) -DEBUG - value: -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXdistortion', 'NX_FLOAT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/original_points -DEBUG - NXdistortion.nxdl.xml:/original_points@units [NX_UNITLESS] -DEBUG - ===== FIELD (//entry/process/distortion/rdeform_field): -DEBUG - value: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ... -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXdistortion', 'NX_FLOAT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/rdeform_field -DEBUG - <> -DEBUG - documentation (NXdistortion.nxdl.xml:/rdeform_field): -DEBUG - - Row deformation field for general non-rigid distortion corrections. 2D matrix - holding the row information of the mapping of each original coordinate. - -DEBUG - ===== ATTRS (//entry/process/distortion/rdeform_field@units) -DEBUG - value: -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXdistortion', 'NX_FLOAT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/rdeform_field -DEBUG - NXdistortion.nxdl.xml:/rdeform_field@units [NX_UNITLESS] -DEBUG - ===== FIELD (//entry/process/distortion/symmetry): -DEBUG - value: 6 -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXdistortion', 'NX_INT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/symmetry -DEBUG - <> -DEBUG - documentation (NXdistortion.nxdl.xml:/symmetry): -DEBUG - - For `symmetry-guided distortion correction`_, - where a pattern of features is mapped to the regular geometric structure expected - from the symmetry. Here we record the number of elementary symmetry operations. - - .. _symmetry-guided distortion correction: https://www.sciencedirect.com/science/article/abs/pii/S0304399118303474?via%3Dihub - -DEBUG - ===== ATTRS (//entry/process/distortion/symmetry@units) -DEBUG - value: -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXdistortion', 'NX_INT'] -DEBUG - classes: -NXdistortion.nxdl.xml:/symmetry -DEBUG - NXdistortion.nxdl.xml:/symmetry@units [NX_UNITLESS] -DEBUG - ===== GROUP (//entry/process/energy_calibration [NXmpes::/NXentry/NXprocess_mpes/NXcalibration]): -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/energy_calibration -NXprocess_mpes.nxdl.xml:/energy_calibration -NXcalibration.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/energy_calibration): -DEBUG - -DEBUG - documentation (NXprocess_mpes.nxdl.xml:/energy_calibration): -DEBUG - - Calibration event on the energy axis. - - For XPS, the calibration should ideally be performed according to - `ISO 15472:2010`_ specification. - - .. _ISO 15472:2010: https://www.iso.org/standard/74811.html - -DEBUG - documentation (NXcalibration.nxdl.xml:): -DEBUG - - Subclass of NXprocess to describe post-processing calibrations. - -DEBUG - ===== ATTRS (//entry/process/energy_calibration@NX_class) -DEBUG - value: NXcalibration -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/energy_calibration -NXprocess_mpes.nxdl.xml:/energy_calibration -NXcalibration.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/process/energy_calibration/calibrated_axis): -DEBUG - value: [ 5.22069940e+01 5.10746894e+01 4.99673811e+01 4.88843387e+01 ... -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/energy_calibration/calibrated_axis -NXprocess_mpes.nxdl.xml:/energy_calibration/calibrated_axis -NXcalibration.nxdl.xml:/calibrated_axis -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/energy_calibration/calibrated_axis): -DEBUG - -DEBUG - documentation (NXprocess_mpes.nxdl.xml:/energy_calibration/calibrated_axis): -DEBUG - - This is the calibrated energy axis to be used for data plotting. - -DEBUG - documentation (NXcalibration.nxdl.xml:/calibrated_axis): -DEBUG - - A vector representing the axis after calibration, matching the data length - -DEBUG - ===== ATTRS (//entry/process/energy_calibration/calibrated_axis@units) -DEBUG - value: eV -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/energy_calibration/calibrated_axis -NXprocess_mpes.nxdl.xml:/energy_calibration/calibrated_axis -NXcalibration.nxdl.xml:/calibrated_axis -DEBUG - NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/energy_calibration/calibrated_axis@units - REQUIRED, but undefined unit category -DEBUG - NXprocess_mpes.nxdl.xml:/energy_calibration/calibrated_axis@units [NX_ENERGY] -DEBUG - NXcalibration.nxdl.xml:/calibrated_axis@units [NX_ANY] -DEBUG - ===== FIELD (//entry/process/energy_calibration/coefficients): -DEBUG - value: [ 6.33783929e-01 8.68180227e-07 -2.41647784e+01] -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/coefficients -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/coefficients): -DEBUG - - For non-linear energy calibrations, e.g. in a TOF, a polynomial function is fit - to a set of features (peaks) at well defined energy positions to determine - E(TOF). Here we can store the array of fit coefficients. - -DEBUG - ===== ATTRS (//entry/process/energy_calibration/coefficients@units) -DEBUG - value: -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/coefficients -DEBUG - NXcalibration.nxdl.xml:/coefficients@units [NX_ANY] -DEBUG - ===== FIELD (//entry/process/energy_calibration/fit_function): -DEBUG - value: b'(a0/(x0-a1))**2 + a2' -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_CHAR'] -DEBUG - classes: -NXcalibration.nxdl.xml:/fit_function -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/fit_function): -DEBUG - - For non-linear energy calibrations. Here we can store the formula of the - fit function. - - Use a0, a1, ..., an for the coefficients, corresponding to the values in the coefficients field. - - Use x0, x1, ..., xn for the nth position in the `original_axis` field. - If there is the symbol attribute specified for the `original_axis` this may be used instead of x. - If you want to use the whole axis use `x`. - Alternate axis can also be available as specified by the `input_SYMBOL` field. - The data should then be referred here by the `SYMBOL` name, e.g., for a field - name `input_my_field` it should be referred here by `my_field` or `my_field0` if - you want to read the zeroth element of the array. - - The formula should be numpy compliant. - -DEBUG - ===== FIELD (//entry/process/energy_calibration/original_axis): -DEBUG - value: [ 60027.77777778 60083.33333333 60138.88888889 60194.44444444 ... -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/original_axis -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/original_axis): -DEBUG - - Vector containing the data coordinates in the original uncalibrated axis - -DEBUG - ===== ATTRS (//entry/process/energy_calibration/original_axis@units) -DEBUG - value: ns -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/original_axis -DEBUG - NXcalibration.nxdl.xml:/original_axis@units [NX_ANY] -DEBUG - ===== FIELD (//entry/process/energy_calibration/physical_quantity): -DEBUG - value: b'energy' -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_CHAR'] -DEBUG - classes: -NXprocess_mpes.nxdl.xml:/energy_calibration/physical_quantity -NXcalibration.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - enumeration (NXprocess_mpes.nxdl.xml:/energy_calibration/physical_quantity): -DEBUG - -> energy -DEBUG - documentation (NXprocess_mpes.nxdl.xml:/energy_calibration/physical_quantity): -DEBUG - -DEBUG - documentation (NXcalibration.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the calibration, e.g., - energy, momentum, time, etc. - -DEBUG - ===== GROUP (//entry/process/kx_calibration [NXmpes::/NXentry/NXprocess_mpes/NXcalibration]): -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration -NXprocess_mpes.nxdl.xml:/kN_calibration -NXcalibration.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration): -DEBUG - -DEBUG - documentation (NXprocess_mpes.nxdl.xml:/kN_calibration): -DEBUG - - Calibration event on a k-space axis. - - It is envisioned that the individual calibrations for each coordinate are - stored as kx_calibration, ky_calibration, kz_calibration, in accordance - with the axis name definitions in NXdata_mpes. - - It is also possible to have k_parallel_calibration and k_perp_calibration if - the momentum axes are defined as k_parallel and k_perp for the parallel and - perpendicular momenta, respectively. - -DEBUG - documentation (NXcalibration.nxdl.xml:): -DEBUG - - Subclass of NXprocess to describe post-processing calibrations. - -DEBUG - ===== ATTRS (//entry/process/kx_calibration@NX_class) -DEBUG - value: NXcalibration -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration -NXprocess_mpes.nxdl.xml:/kN_calibration -NXcalibration.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/process/kx_calibration/calibrated_axis): -DEBUG - value: [-2.68021375 -2.66974416 -2.65927458 -2.64880499 -2.63833541 -2.62786582 ... -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration/calibrated_axis -NXprocess_mpes.nxdl.xml:/kN_calibration/calibrated_axis -NXcalibration.nxdl.xml:/calibrated_axis -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration/calibrated_axis): -DEBUG - -DEBUG - documentation (NXprocess_mpes.nxdl.xml:/kN_calibration/calibrated_axis): -DEBUG - - This is the calibrated k-space axis to be used for data plotting. - -DEBUG - documentation (NXcalibration.nxdl.xml:/calibrated_axis): -DEBUG - - A vector representing the axis after calibration, matching the data length - -DEBUG - ===== ATTRS (//entry/process/kx_calibration/calibrated_axis@units) -DEBUG - value: 1/angstrom -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration/calibrated_axis -NXprocess_mpes.nxdl.xml:/kN_calibration/calibrated_axis -NXcalibration.nxdl.xml:/calibrated_axis -DEBUG - NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration/calibrated_axis@units - REQUIRED, but undefined unit category -DEBUG - NXprocess_mpes.nxdl.xml:/kN_calibration/calibrated_axis@units [NX_WAVENUMBER] -DEBUG - NXcalibration.nxdl.xml:/calibrated_axis@units [NX_ANY] -DEBUG - ===== FIELD (//entry/process/kx_calibration/offset): -DEBUG - value: 256.0 -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/offset -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/offset): -DEBUG - - For linear calibration. Offset parameter. - This should yield the relation `calibrated_axis` = `scaling` * `original_axis` + `offset`. - -DEBUG - ===== ATTRS (//entry/process/kx_calibration/offset@units) -DEBUG - value: -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/offset -DEBUG - NXcalibration.nxdl.xml:/offset@units [NX_ANY] -DEBUG - ===== FIELD (//entry/process/kx_calibration/physical_quantity): -DEBUG - value: b'momentum' -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_CHAR'] -DEBUG - classes: -NXprocess_mpes.nxdl.xml:/kN_calibration/physical_quantity -NXcalibration.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - enumeration (NXprocess_mpes.nxdl.xml:/kN_calibration/physical_quantity): -DEBUG - -> momentum -DEBUG - documentation (NXprocess_mpes.nxdl.xml:/kN_calibration/physical_quantity): -DEBUG - -DEBUG - documentation (NXcalibration.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the calibration, e.g., - energy, momentum, time, etc. - -DEBUG - ===== FIELD (//entry/process/kx_calibration/scaling): -DEBUG - value: 0.01046958495673419 -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/scaling -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/scaling): -DEBUG - - For linear calibration. Scaling parameter. - This should yield the relation `calibrated_axis` = `scaling` * `original_axis` + `offset`. - -DEBUG - ===== ATTRS (//entry/process/kx_calibration/scaling@units) -DEBUG - value: -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/scaling -DEBUG - NXcalibration.nxdl.xml:/scaling@units [NX_ANY] -DEBUG - ===== GROUP (//entry/process/ky_calibration [NXmpes::/NXentry/NXprocess_mpes/NXcalibration]): -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration -NXprocess_mpes.nxdl.xml:/kN_calibration -NXcalibration.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration): -DEBUG - -DEBUG - documentation (NXprocess_mpes.nxdl.xml:/kN_calibration): -DEBUG - - Calibration event on a k-space axis. - - It is envisioned that the individual calibrations for each coordinate are - stored as kx_calibration, ky_calibration, kz_calibration, in accordance - with the axis name definitions in NXdata_mpes. - - It is also possible to have k_parallel_calibration and k_perp_calibration if - the momentum axes are defined as k_parallel and k_perp for the parallel and - perpendicular momenta, respectively. - -DEBUG - documentation (NXcalibration.nxdl.xml:): -DEBUG - - Subclass of NXprocess to describe post-processing calibrations. - -DEBUG - ===== ATTRS (//entry/process/ky_calibration@NX_class) -DEBUG - value: NXcalibration -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration -NXprocess_mpes.nxdl.xml:/kN_calibration -NXcalibration.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/process/ky_calibration/calibrated_axis): -DEBUG - value: [-2.68021375 -2.66974416 -2.65927458 -2.64880499 -2.63833541 -2.62786582 ... -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration/calibrated_axis -NXprocess_mpes.nxdl.xml:/kN_calibration/calibrated_axis -NXcalibration.nxdl.xml:/calibrated_axis -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration/calibrated_axis): -DEBUG - -DEBUG - documentation (NXprocess_mpes.nxdl.xml:/kN_calibration/calibrated_axis): -DEBUG - - This is the calibrated k-space axis to be used for data plotting. - -DEBUG - documentation (NXcalibration.nxdl.xml:/calibrated_axis): -DEBUG - - A vector representing the axis after calibration, matching the data length - -DEBUG - ===== ATTRS (//entry/process/ky_calibration/calibrated_axis@units) -DEBUG - value: 1/angstrom -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration/calibrated_axis -NXprocess_mpes.nxdl.xml:/kN_calibration/calibrated_axis -NXcalibration.nxdl.xml:/calibrated_axis -DEBUG - NXmpes.nxdl.xml:/ENTRY/PROCESS_MPES/kN_calibration/calibrated_axis@units - REQUIRED, but undefined unit category -DEBUG - NXprocess_mpes.nxdl.xml:/kN_calibration/calibrated_axis@units [NX_WAVENUMBER] -DEBUG - NXcalibration.nxdl.xml:/calibrated_axis@units [NX_ANY] -DEBUG - ===== FIELD (//entry/process/ky_calibration/offset): -DEBUG - value: 256.0 -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/offset -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/offset): -DEBUG - - For linear calibration. Offset parameter. - This should yield the relation `calibrated_axis` = `scaling` * `original_axis` + `offset`. - -DEBUG - ===== ATTRS (//entry/process/ky_calibration/offset@units) -DEBUG - value: -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/offset -DEBUG - NXcalibration.nxdl.xml:/offset@units [NX_ANY] -DEBUG - ===== FIELD (//entry/process/ky_calibration/physical_quantity): -DEBUG - value: b'momentum' -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_CHAR'] -DEBUG - classes: -NXprocess_mpes.nxdl.xml:/kN_calibration/physical_quantity -NXcalibration.nxdl.xml:/physical_quantity -DEBUG - <> -DEBUG - enumeration (NXprocess_mpes.nxdl.xml:/kN_calibration/physical_quantity): -DEBUG - -> momentum -DEBUG - documentation (NXprocess_mpes.nxdl.xml:/kN_calibration/physical_quantity): -DEBUG - -DEBUG - documentation (NXcalibration.nxdl.xml:/physical_quantity): -DEBUG - - The physical quantity of the calibration, e.g., - energy, momentum, time, etc. - -DEBUG - ===== FIELD (//entry/process/ky_calibration/scaling): -DEBUG - value: 0.01046958495673419 -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/scaling -DEBUG - <> -DEBUG - documentation (NXcalibration.nxdl.xml:/scaling): -DEBUG - - For linear calibration. Scaling parameter. - This should yield the relation `calibrated_axis` = `scaling` * `original_axis` + `offset`. - -DEBUG - ===== ATTRS (//entry/process/ky_calibration/scaling@units) -DEBUG - value: -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXcalibration', 'NX_FLOAT'] -DEBUG - classes: -NXcalibration.nxdl.xml:/scaling -DEBUG - NXcalibration.nxdl.xml:/scaling@units [NX_ANY] -DEBUG - ===== GROUP (//entry/process/registration [NXmpes::/NXentry/NXprocess_mpes/NXregistration]): -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration'] -DEBUG - classes: -NXprocess_mpes.nxdl.xml:/REGISTRATION -NXregistration.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXprocess_mpes.nxdl.xml:/REGISTRATION): -DEBUG - - Describes the operations of image registration - -DEBUG - documentation (NXregistration.nxdl.xml:): -DEBUG - - Describes image registration procedures. - -DEBUG - ===== ATTRS (//entry/process/registration@NX_class) -DEBUG - value: NXregistration -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration'] -DEBUG - classes: -NXprocess_mpes.nxdl.xml:/REGISTRATION -NXregistration.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/process/registration/depends_on): -DEBUG - value: b'/entry/process/registration/tranformations/rot_z' -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NX_CHAR'] -DEBUG - classes: -NXregistration.nxdl.xml:/depends_on -DEBUG - <> -DEBUG - documentation (NXregistration.nxdl.xml:/depends_on): -DEBUG - - Specifies the position by pointing to the last transformation in the - transformation chain in the NXtransformations group. - -DEBUG - ===== GROUP (//entry/process/registration/tranformations [NXmpes::/NXentry/NXprocess_mpes/NXregistration/NXtransformations]): -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations'] -DEBUG - classes: -NXregistration.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXregistration.nxdl.xml:/TRANSFORMATIONS): -DEBUG - - To describe the operations of image registration (combinations of rigid - translations and rotations) - -DEBUG - documentation (NXtransformations.nxdl.xml:): -DEBUG - - Collection of axis-based translations and rotations to describe a geometry. - May also contain axes that do not move and therefore do not have a transformation - type specified, but are useful in understanding coordinate frames within which - transformations are done, or in documenting important directions, such as the - direction of gravity. - - A nested sequence of transformations lists the translation and rotation steps - needed to describe the position and orientation of any movable or fixed device. - - There will be one or more transformations (axes) defined by one or more fields - for each transformation. Transformations can also be described by NXlog groups when - the values change with time. The all-caps name ``AXISNAME`` designates the - particular axis generating a transformation (e.g. a rotation axis or a translation - axis or a general axis). The attribute ``units="NX_TRANSFORMATION"`` designates the - units will be appropriate to the ``transformation_type`` attribute: - - * ``NX_LENGTH`` for ``translation`` - * ``NX_ANGLE`` for ``rotation`` - * ``NX_UNITLESS`` for axes for which no transformation type is specified - - This class will usually contain all axes of a sample stage or goniometer or - a detector. The NeXus default :ref:`McSTAS coordinate frame` - is assumed, but additional useful coordinate axes may be defined by using axes for which - no transformation type has been specified. - - **Transformation chain** - - The entry point of a chain of transformations is a field called ``depends_on`` - will be outside of this class and points to a field in here. Following the chain may - also require following ``depends_on`` links to transformations outside, for example - to a common base table. If a relative path is given, it is relative to the group - enclosing the ``depends_on`` specification. - - For a chain of three transformations, where :math:`T_1` depends on :math:`T_2` - which in turn depends on :math:`T_3`, the final *active* transformation - matrix :math:`T_f` is - - .. math:: T_f = T_3 . T_2 . T_1 - - For example when positioning a flat detector, its pixel positions in the laboratory - reference frame (:ref:`McSTAS coordinate frame` by default) - can be calculated by - - .. math:: X_\text{lab} = T_f . X_\text{pixel} = T_3 . T_2 . T_1 . X_\text{pixel} - - Note that :math:`T_1` comes first in the *depends-on* chain and is also applied first - to the pixel coordinates. - - When we say transformation :math:`A` *depends on* transformation :math:`B` we mean that - the physical motor that realizes :math:`A` is *stacked on top of* the motor that realizes :math:`B`. - So the activate coordinate transformation :math:`A` needs to be applied to a coordinate - before applying :math:`B`. In other words :math:`X' = B . A . X`. - - **Transformation matrix** - - In explicit terms, the transformations are a subset of affine transformations expressed as - 4x4 active transformation matrices that act on homogeneous coordinates, :math:`X=[x,y,z,1]^T`. - - For rotation and translation, - - .. math:: T_r &= \begin{pmatrix} R & o \\ 0_3 & 1 \end{pmatrix} \\ T_t &= \begin{pmatrix} I_3 & t + o \\ 0_3 & 1 \end{pmatrix} - - where :math:`R` is the usual 3x3 rotation matrix, :math:`o` is an offset vector, - :math:`0_3` is a row of 3 zeros, :math:`I_3` is the 3x3 identity matrix and - :math:`t` is the translation vector. - - :math:`o` is given by the ``offset`` attribute, :math:`t` is given by the ``vector`` - attribute multiplied by the field value, and :math:`R` is defined as a rotation - about an axis in the direction of ``vector``, of angle of the field value. - - **Usage** - - One possible use of ``NXtransformations`` is to define the motors and - transformations for a diffractometer (goniometer). Such use is mentioned - in the ``NXinstrument`` base class. Use one ``NXtransformations`` group - for each diffractometer and name the group appropriate to the device. - Collecting the motors of a sample table or xyz-stage in an NXtransformations - group is equally possible. - - Following the section on the general description of axis in NXtransformations is a section which - documents the fields commonly used within NeXus for positioning purposes and their meaning. Whenever - there is a need for positioning a beam line component please use the existing names. Use as many fields - as needed in order to position the component. Feel free to add more axis if required. In the description - given below, only those atttributes which are defined through the name are spcified. Add the other attributes - of the full set: - - * vector - * offset - * transformation_type - * depends_on - - as needed. - - **Example 1: goniometer** - - Position a sample mounted on a goniometer in the :ref:`McSTAS coordinate frame`. - - The sample is oriented as follows - - .. math:: X_\text{lab} = R(\vec{v}_\omega, \omega) . - T(\vec{v}_z, \text{sam}_z) . - T(\vec{v}_y, \text{sam}_y) . - T(\vec{v}_x, \text{sam}_x) . - R(\vec{v}_\chi, \chi) . - R(\vec{v}_\varphi, \varphi) . X_s - - where - - * :math:`R(\vec{v},a)` is a rotation around vector :math:`\vec{v}` with angle :math:`a` - * :math:`T(\vec{u},t)` is a translation along vector :math:`\vec{u}` over a distance :math:`t` - * :math:`X_s` a coordinate in the sample reference frame. - - .. code-block:: - - entry:NXentry - sample:NXsample - depends_on=transformations/phi - transformations:NXtransformations - phi=0 - @depends_on=chi - @transformation_type=rotation - @vector=[-1 -0.0037 -0.002] - @units=degrees - chi=0 - @depends_on=sam_x - @transformation_type=rotation - @vector=[0.0046 0.0372 0.9993] - @units=degrees - sam_x=0 - @depends_on=sam_y - @transformation_type=translation - @vector=[1 0 0] - @units=mm - sam_y=0 - @depends_on=sam_z - @transformation_type=translation - @vector=[0 1 0] - @units=mm - sam_z=0 - @depends_on=omega - @transformation_type=translation - @vector=[0 0 1] - @units=mm - omega=174 - @depends_on=. - @transformation_type=rotation - @vector=[-1 0 0] - @units=degrees - - **Example 2: different coordinate system** - - Define a laboratory reference frame with the X-axis along the beam and the Z-axis opposite to the direction of gravity. - Three point detectors are positioned in this reference: - - * *transmission*: - * point detector in the beam - * 20 cm downstream from the sample (the origin of the reference frame) - * *vertical*: - * point detector 10 cm downstream from the sample - * making an angle of 5 degrees with the beam w.r.t. the sample - * positioned in the XZ-plane above the XY-plane - * *horizontal*: - * point detector 11 cm downstream from the sample - * making an angle of 6 degrees with the beam w.r.t. the sample - * positioned in the XY-plane above the XZ-plane - - The coordinates of the point detectors in the laboratory reference frame are - - * *transmission*: :math:`X_\text{lab} = T_x(20) . X_d` - * *vertical*: :math:`X_\text{lab} = R_y(-5) . T_x(10) . X_d` - * *horizontal*: :math:`X_\text{lab} = R_x(-90) . R_y(-6) . T_x(11) . X_d` - - where - - * :math:`T_x`, :math:`T_y`, :math:`T_z`: active transformation matrices for translation along the X, Y and Z axes - * :math:`R_x`, :math:`R_y`, :math:`R_z`: active transformation matrices for rotation around the X, Y and Z axes - * :math:`X_d` is a coordinate in the detector reference frame. - - Note that as these are point detectors, we only have one coordinate :math:`X_d=[0,0,0,1]^T`. - - .. code-block:: - - entry:NXentry - instrument:NXinstrument - vertical:NXdetector - depends_on=position/distance - position:NXtransformations - distance=10 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=5 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=0 # stay in the vertical plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - horizontal:NXdetector - depends_on=position/distance - position:NXtransformations - distance=11 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=6 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=90 # rotate to the horizontal plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - transmission:NXdetector - depends_on=position/distance - position:NXtransformations - distance=20 # move downstream from the sample - @depends_on=/entry/coordinate_system/beam - @units=cm - @vector=[1 0 0] - coordinate_system:NXtransformations - beam=NaN # value is never used - @depends_on=gravity - @vector=[1 0 0] # X-axis points in the beam direction - gravity=NaN # value is never used - @depends_on=. # end of the chain - @vector=[0 0 -1] # Z-axis points up - - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations@NX_class) -DEBUG - value: NXtransformations -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations'] -DEBUG - classes: -NXregistration.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/process/registration/tranformations/rot_z): -DEBUG - value: -1.0 -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/rot_z@depends_on) -DEBUG - value: trans_y -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/rot_z@offset) -DEBUG - value: [256. 256. 0.] -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@offset - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/offset): -DEBUG - - A fixed offset applied before the transformation (three vector components). - This is not intended to be a substitute for a fixed ``translation`` axis but, for example, - as the mechanical offset from mounting the axis to its dependency. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/rot_z@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/rot_z@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/rot_z@vector) -DEBUG - value: [0. 0. 1.] -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/process/registration/tranformations/trans_x): -DEBUG - value: 43.0 -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_x@depends_on) -DEBUG - value: . -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_x@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_x@units) -DEBUG - value: pixels -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_x@vector) -DEBUG - value: [1. 0. 0.] -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/process/registration/tranformations/trans_y): -DEBUG - value: 55.0 -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_y@depends_on) -DEBUG - value: trans_x -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_y@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_y@units) -DEBUG - value: pixels -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/process/registration/tranformations/trans_y@vector) -DEBUG - value: [0. 1. 0.] -DEBUG - classpath: ['NXentry', 'NXprocess_mpes', 'NXregistration', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== GROUP (//entry/sample [NXmpes::/NXentry/NXsample]): -DEBUG - classpath: ['NXentry', 'NXsample'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE -NXentry.nxdl.xml:/SAMPLE -NXsample.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE): -DEBUG - -DEBUG - documentation (NXentry.nxdl.xml:/SAMPLE): -DEBUG - -DEBUG - documentation (NXsample.nxdl.xml:): -DEBUG - - Any information on the sample. - - This could include scanned variables that - are associated with one of the data dimensions, e.g. the magnetic field, or - logged data, e.g. monitored temperature vs elapsed time. - -DEBUG - ===== ATTRS (//entry/sample@NX_class) -DEBUG - value: NXsample -DEBUG - classpath: ['NXentry', 'NXsample'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE -NXentry.nxdl.xml:/SAMPLE -NXsample.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/sample/bias [NXmpes::/NXentry/NXsample/NXenvironment]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/bias -NXsample.nxdl.xml:/ENVIRONMENT -NXenvironment.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/bias): -DEBUG - - Bias of the sample with respect to analyser ground. - - This concept is related to term `8.41`_ of the ISO 18115-1:2023 standard. - - .. _8.41: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:8.41 - -DEBUG - documentation (NXsample.nxdl.xml:/ENVIRONMENT): -DEBUG - - Any environmental or external stimuli/measurements. - These can include, among others: - applied pressure, surrounding gas phase and gas pressure, - external electric/magnetic/mechanical fields, temperature, ... - -DEBUG - documentation (NXenvironment.nxdl.xml:): -DEBUG - - Parameters for controlling external conditions - -DEBUG - ===== ATTRS (//entry/sample/bias@NX_class) -DEBUG - value: NXenvironment -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/bias -NXsample.nxdl.xml:/ENVIRONMENT -NXenvironment.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/sample/bias/voltmeter [NXmpes::/NXentry/NXsample/NXenvironment/NXsensor]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/bias/voltmeter -NXenvironment.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/bias/voltmeter): -DEBUG - - Sensor measuring the applied voltage. - - This should be a link to /entry/instrument/manipulator/sample_bias_voltmeter. - -DEBUG - documentation (NXenvironment.nxdl.xml:/SENSOR): -DEBUG - - Any sensor used to monitor the environment. This can be linked to a sensor - defined in an NXinstrument instance. - -DEBUG - documentation (NXsensor.nxdl.xml:): -DEBUG - - A sensor used to monitor an external condition - - The condition itself is described in :ref:`NXenvironment`. - -DEBUG - ===== ATTRS (//entry/sample/bias/voltmeter@NX_class) -DEBUG - value: NXsensor -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/bias/voltmeter -NXenvironment.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/sample/bias/voltmeter/measurement): -DEBUG - value: b'voltage' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXsensor.nxdl.xml:/measurement -DEBUG - <> -DEBUG - enumeration (NXsensor.nxdl.xml:/measurement): -DEBUG - -> temperature -DEBUG - -> pH -DEBUG - -> magnetic_field -DEBUG - -> electric_field -DEBUG - -> current -DEBUG - -> conductivity -DEBUG - -> resistance -DEBUG - -> voltage -DEBUG - -> pressure -DEBUG - -> flow -DEBUG - -> stress -DEBUG - -> strain -DEBUG - -> shear -DEBUG - -> surface_pressure -DEBUG - documentation (NXsensor.nxdl.xml:/measurement): -DEBUG - - name for measured signal - -DEBUG - ===== FIELD (//entry/sample/bias/voltmeter/name): -DEBUG - value: b'sample_bias' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXsensor.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXsensor.nxdl.xml:/name): -DEBUG - - Name for the sensor - -DEBUG - ===== FIELD (//entry/sample/bias/voltmeter/value): -DEBUG - value: 17.799719004221362 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXsensor.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXsensor.nxdl.xml:/value): -DEBUG - - nominal setpoint or average value - - need [n] as may be a vector - -DEBUG - ===== ATTRS (//entry/sample/bias/voltmeter/value@units) -DEBUG - value: V -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXsensor.nxdl.xml:/value -DEBUG - NXsensor.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== FIELD (//entry/sample/depends_on): -DEBUG - value: b'/entry/sample/transformations/corrected_phi' -DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] -DEBUG - classes: -NXsample.nxdl.xml:/depends_on -DEBUG - <> -DEBUG - documentation (NXsample.nxdl.xml:/depends_on): -DEBUG - - NeXus positions components by applying a set of translations and rotations - to apply to the component starting from 0, 0, 0. The order of these operations - is critical and forms what NeXus calls a dependency chain. The depends_on - field defines the path to the top most operation of the dependency chain or the - string "." if located in the origin. Usually these operations are stored in a - NXtransformations group. But NeXus allows them to be stored anywhere. - -DEBUG - ===== FIELD (//entry/sample/description): -DEBUG - value: b'MoTe2' -DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] -DEBUG - classes: -NXsample.nxdl.xml:/description -DEBUG - <> -DEBUG - documentation (NXsample.nxdl.xml:/description): -DEBUG - - Description of the sample - -DEBUG - ===== GROUP (//entry/sample/gas_pressure [NXmpes::/NXentry/NXsample/NXenvironment]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/gas_pressure -NXsample.nxdl.xml:/ENVIRONMENT -NXenvironment.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/gas_pressure): -DEBUG - - Gas pressure surrounding the sample. - -DEBUG - documentation (NXsample.nxdl.xml:/ENVIRONMENT): -DEBUG - - Any environmental or external stimuli/measurements. - These can include, among others: - applied pressure, surrounding gas phase and gas pressure, - external electric/magnetic/mechanical fields, temperature, ... - -DEBUG - documentation (NXenvironment.nxdl.xml:): -DEBUG - - Parameters for controlling external conditions - -DEBUG - ===== ATTRS (//entry/sample/gas_pressure@NX_class) -DEBUG - value: NXenvironment -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/gas_pressure -NXsample.nxdl.xml:/ENVIRONMENT -NXenvironment.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/sample/gas_pressure/pressure_gauge [NXmpes::/NXentry/NXsample/NXenvironment/NXsensor]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/gas_pressure/pressure_gauge -NXenvironment.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/gas_pressure/pressure_gauge): -DEBUG - - Gauge measuring the gas pressure. - - This should be a link to /entry/instrument/pressure_gauge. - -DEBUG - documentation (NXenvironment.nxdl.xml:/SENSOR): -DEBUG - - Any sensor used to monitor the environment. This can be linked to a sensor - defined in an NXinstrument instance. - -DEBUG - documentation (NXsensor.nxdl.xml:): -DEBUG - - A sensor used to monitor an external condition - - The condition itself is described in :ref:`NXenvironment`. - -DEBUG - ===== ATTRS (//entry/sample/gas_pressure/pressure_gauge@NX_class) -DEBUG - value: NXsensor -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/gas_pressure/pressure_gauge -NXenvironment.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/sample/gas_pressure/pressure_gauge/measurement): -DEBUG - value: b'pressure' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXsensor.nxdl.xml:/measurement -DEBUG - <> -DEBUG - enumeration (NXsensor.nxdl.xml:/measurement): -DEBUG - -> temperature -DEBUG - -> pH -DEBUG - -> magnetic_field -DEBUG - -> electric_field -DEBUG - -> current -DEBUG - -> conductivity -DEBUG - -> resistance -DEBUG - -> voltage -DEBUG - -> pressure -DEBUG - -> flow -DEBUG - -> stress -DEBUG - -> strain -DEBUG - -> shear -DEBUG - -> surface_pressure -DEBUG - documentation (NXsensor.nxdl.xml:/measurement): -DEBUG - - name for measured signal - -DEBUG - ===== FIELD (//entry/sample/gas_pressure/pressure_gauge/name): -DEBUG - value: b'sample_chamber_pressure' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXsensor.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXsensor.nxdl.xml:/name): -DEBUG - - Name for the sensor - -DEBUG - ===== FIELD (//entry/sample/gas_pressure/pressure_gauge/value): -DEBUG - value: 4.5599999999999996e-11 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXsensor.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXsensor.nxdl.xml:/value): -DEBUG - - nominal setpoint or average value - - need [n] as may be a vector - -DEBUG - ===== ATTRS (//entry/sample/gas_pressure/pressure_gauge/value@units) -DEBUG - value: mbar -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXsensor.nxdl.xml:/value -DEBUG - NXsensor.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== GROUP (//entry/sample/history [NXmpes::/NXentry/NXsample/NXhistory]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXhistory'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/history -NXsample.nxdl.xml:/history -NXhistory.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/history): -DEBUG - - A set of activities that occurred to the sample prior to/during photoemission - experiment. - -DEBUG - documentation (NXsample.nxdl.xml:/history): -DEBUG - - A set of physical processes that occurred to the sample prior/during experiment. - -DEBUG - documentation (NXhistory.nxdl.xml:): -DEBUG - - A set of activities that occurred to a physical entity prior/during experiment. - - Ideally, a full report of the previous operations (or links to a chain of operations). - Alternatively, notes allow for additional descriptors in any format. - -DEBUG - ===== ATTRS (//entry/sample/history@NX_class) -DEBUG - value: NXhistory -DEBUG - classpath: ['NXentry', 'NXsample', 'NXhistory'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/history -NXsample.nxdl.xml:/history -NXhistory.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/sample/history/notes [NXmpes::/NXentry/NXsample/NXhistory/NXnote]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXhistory', 'NXnote'] -DEBUG - classes: -NXhistory.nxdl.xml:/notes -NXnote.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXhistory.nxdl.xml:/notes): -DEBUG - - A descriptor to keep track of the treatment of the physical entity before or during the - experiment (NXnote allows to add pictures, audio, movies). Alternatively, a - reference to the location or a unique identifier or other metadata file. In the - case these are not available, free-text description. - This should only be used in case that there is no rigorous description - using the base classes above. This field can also be used to pull in any activities - that are not well described by an existing base class definition. - -DEBUG - documentation (NXnote.nxdl.xml:): -DEBUG - - Any additional freeform information not covered by the other base classes. - - This class can be used to store additional information in a - NeXus file e.g. pictures, movies, audio, additional text logs - -DEBUG - ===== ATTRS (//entry/sample/history/notes@NX_class) -DEBUG - value: NXnote -DEBUG - classpath: ['NXentry', 'NXsample', 'NXhistory', 'NXnote'] -DEBUG - classes: -NXhistory.nxdl.xml:/notes -NXnote.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/sample/history/notes/description): -DEBUG - value: b'Cleaved' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXhistory', 'NXnote', 'NX_CHAR'] -DEBUG - classes: -NXnote.nxdl.xml:/description -DEBUG - <> -DEBUG - documentation (NXnote.nxdl.xml:/description): -DEBUG - Title of an image or other details of the note -DEBUG - ===== FIELD (//entry/sample/history/notes/type): -DEBUG - value: b'text/plain' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXhistory', 'NXnote', 'NX_CHAR'] -DEBUG - classes: -NXnote.nxdl.xml:/type -DEBUG - <> -DEBUG - documentation (NXnote.nxdl.xml:/type): -DEBUG - Mime content type of note data field e.g. image/jpeg, text/plain, text/html -DEBUG - ===== FIELD (//entry/sample/name): -DEBUG - value: b'MoTe2' -DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/name -NXsample.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/name): -DEBUG - -DEBUG - documentation (NXsample.nxdl.xml:/name): -DEBUG - - Descriptive name of sample - -DEBUG - ===== FIELD (//entry/sample/preparation_date): -DEBUG - value: b'2019-05-22T14:00:00+00:00' -DEBUG - classpath: ['NXentry', 'NXsample', 'NX_DATE_TIME'] -DEBUG - classes: -NXsample.nxdl.xml:/preparation_date -DEBUG - <> -DEBUG - documentation (NXsample.nxdl.xml:/preparation_date): -DEBUG - - Date of preparation of the sample - -DEBUG - ===== FIELD (//entry/sample/situation): -DEBUG - value: b'vacuum' -DEBUG - classpath: ['NXentry', 'NXsample', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/situation -NXsample.nxdl.xml:/situation -DEBUG - <> -DEBUG - enumeration (NXmpes.nxdl.xml:/ENTRY/SAMPLE/situation): -DEBUG - -> vacuum -DEBUG - -> inert atmosphere -DEBUG - -> oxidising atmosphere -DEBUG - -> reducing atmosphere -DEBUG - enumeration (NXsample.nxdl.xml:/situation): -DEBUG - -> air -DEBUG - -> vacuum -DEBUG - -> inert atmosphere -DEBUG - -> oxidising atmosphere -DEBUG - -> reducing atmosphere -DEBUG - -> sealed can -DEBUG - -> other -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/situation): -DEBUG - -DEBUG - documentation (NXsample.nxdl.xml:/situation): -DEBUG - - The atmosphere will be one of the components, which is where - its details will be stored; the relevant components will be - indicated by the entry in the sample_component member. - -DEBUG - ===== GROUP (//entry/sample/substance [NXmpes::/NXentry/NXsample/NXsubstance]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXsubstance'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/SUBSTANCE -NXsample.nxdl.xml:/SUBSTANCE -NXsubstance.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/SUBSTANCE): -DEBUG - - For samples containing a single pure substance. For mixtures use the - NXsample_component_set and NXsample_component group in NXsample instead. - -DEBUG - documentation (NXsample.nxdl.xml:/SUBSTANCE): -DEBUG - - If the sample is made from a pure substance and cannot be further divided using - NXsample_component. - -DEBUG - documentation (NXsubstance.nxdl.xml:): -DEBUG - - A form of matter with a constant, definite chemical composition. - - Examples can be single chemical elements, chemical compunds, or alloys. - For further information, see https://en.wikipedia.org/wiki/Chemical_substance. - -DEBUG - ===== ATTRS (//entry/sample/substance@NX_class) -DEBUG - value: NXsubstance -DEBUG - classpath: ['NXentry', 'NXsample', 'NXsubstance'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/SUBSTANCE -NXsample.nxdl.xml:/SUBSTANCE -NXsubstance.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/sample/substance/molecular_formula_hill): -DEBUG - value: b'MoTe2' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXsubstance', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/SUBSTANCE/molecular_formula_hill -NXsubstance.nxdl.xml:/molecular_formula_hill -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/SUBSTANCE/molecular_formula_hill): -DEBUG - - The chemical formula of the sample (using CIF conventions). - -DEBUG - documentation (NXsubstance.nxdl.xml:/molecular_formula_hill): -DEBUG - - The chemical formula specified using CIF conventions. - Abbreviated version of CIF standard:107 - This is the *Hill* system used by Chemical Abstracts. - - * Only recognized element symbols may be used. - * Each element symbol is followed by a 'count' number. A count of '1' may be omitted. - * A space or parenthesis must separate each cluster of (element symbol + count). - * Where a group of elements is enclosed in parentheses, the multiplier for the - group must follow the closing parentheses. That is, all element and group - multipliers are assumed to be printed as subscripted numbers. - * Unless the elements are ordered in a manner that corresponds to their chemical - structure, the order of the elements within any group or moiety depends on - whether or not carbon is present. - * If carbon is present, the order should be: - - C, then H, then the other elements in alphabetical order of their symbol. - - If carbon is not present, the elements are listed purely in alphabetic order of their symbol. - -DEBUG - ===== GROUP (//entry/sample/temperature [NXmpes::/NXentry/NXsample/NXenvironment]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/temperature -NXenvironment.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/temperature): -DEBUG - - Sample temperature (either controlled or just measured). - -DEBUG - documentation (NXenvironment.nxdl.xml:): -DEBUG - - Parameters for controlling external conditions - -DEBUG - ===== ATTRS (//entry/sample/temperature@NX_class) -DEBUG - value: NXenvironment -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/temperature -NXenvironment.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== GROUP (//entry/sample/temperature/temperature_sensor [NXmpes::/NXentry/NXsample/NXenvironment/NXsensor]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/temperature/temperature_sensor -NXenvironment.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/SAMPLE/temperature/temperature_sensor): -DEBUG - - Temperature sensor measuring the sample temperature. - This should be a link to /entry/instrument/manipulator/temperature_sensor. - -DEBUG - documentation (NXenvironment.nxdl.xml:/SENSOR): -DEBUG - - Any sensor used to monitor the environment. This can be linked to a sensor - defined in an NXinstrument instance. - -DEBUG - documentation (NXsensor.nxdl.xml:): -DEBUG - - A sensor used to monitor an external condition - - The condition itself is described in :ref:`NXenvironment`. - -DEBUG - ===== ATTRS (//entry/sample/temperature/temperature_sensor@NX_class) -DEBUG - value: NXsensor -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/SAMPLE/temperature/temperature_sensor -NXenvironment.nxdl.xml:/SENSOR -NXsensor.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/sample/temperature/temperature_sensor/measurement): -DEBUG - value: b'temperature' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXsensor.nxdl.xml:/measurement -DEBUG - <> -DEBUG - enumeration (NXsensor.nxdl.xml:/measurement): -DEBUG - -> temperature -DEBUG - -> pH -DEBUG - -> magnetic_field -DEBUG - -> electric_field -DEBUG - -> current -DEBUG - -> conductivity -DEBUG - -> resistance -DEBUG - -> voltage -DEBUG - -> pressure -DEBUG - -> flow -DEBUG - -> stress -DEBUG - -> strain -DEBUG - -> shear -DEBUG - -> surface_pressure -DEBUG - documentation (NXsensor.nxdl.xml:/measurement): -DEBUG - - name for measured signal - -DEBUG - ===== FIELD (//entry/sample/temperature/temperature_sensor/name): -DEBUG - value: b'sample_temperature' -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_CHAR'] -DEBUG - classes: -NXsensor.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXsensor.nxdl.xml:/name): -DEBUG - - Name for the sensor - -DEBUG - ===== FIELD (//entry/sample/temperature/temperature_sensor/value): -DEBUG - value: 23.050763803680983 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXsensor.nxdl.xml:/value -DEBUG - <> -DEBUG - documentation (NXsensor.nxdl.xml:/value): -DEBUG - - nominal setpoint or average value - - need [n] as may be a vector - -DEBUG - ===== ATTRS (//entry/sample/temperature/temperature_sensor/value@units) -DEBUG - value: K -DEBUG - classpath: ['NXentry', 'NXsample', 'NXenvironment', 'NXsensor', 'NX_FLOAT'] -DEBUG - classes: -NXsensor.nxdl.xml:/value -DEBUG - NXsensor.nxdl.xml:/value@units [NX_ANY] -DEBUG - ===== GROUP (//entry/sample/transformations [NXmpes::/NXentry/NXsample/NXtransformations]): -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations'] -DEBUG - classes: -NXsample.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXsample.nxdl.xml:/TRANSFORMATIONS): -DEBUG - - This is the group recommended for holding the chain of translation - and rotation operations necessary to position the component within - the instrument. The dependency chain may however traverse similar groups in - other component groups. - -DEBUG - documentation (NXtransformations.nxdl.xml:): -DEBUG - - Collection of axis-based translations and rotations to describe a geometry. - May also contain axes that do not move and therefore do not have a transformation - type specified, but are useful in understanding coordinate frames within which - transformations are done, or in documenting important directions, such as the - direction of gravity. - - A nested sequence of transformations lists the translation and rotation steps - needed to describe the position and orientation of any movable or fixed device. - - There will be one or more transformations (axes) defined by one or more fields - for each transformation. Transformations can also be described by NXlog groups when - the values change with time. The all-caps name ``AXISNAME`` designates the - particular axis generating a transformation (e.g. a rotation axis or a translation - axis or a general axis). The attribute ``units="NX_TRANSFORMATION"`` designates the - units will be appropriate to the ``transformation_type`` attribute: - - * ``NX_LENGTH`` for ``translation`` - * ``NX_ANGLE`` for ``rotation`` - * ``NX_UNITLESS`` for axes for which no transformation type is specified - - This class will usually contain all axes of a sample stage or goniometer or - a detector. The NeXus default :ref:`McSTAS coordinate frame` - is assumed, but additional useful coordinate axes may be defined by using axes for which - no transformation type has been specified. - - **Transformation chain** - - The entry point of a chain of transformations is a field called ``depends_on`` - will be outside of this class and points to a field in here. Following the chain may - also require following ``depends_on`` links to transformations outside, for example - to a common base table. If a relative path is given, it is relative to the group - enclosing the ``depends_on`` specification. - - For a chain of three transformations, where :math:`T_1` depends on :math:`T_2` - which in turn depends on :math:`T_3`, the final *active* transformation - matrix :math:`T_f` is - - .. math:: T_f = T_3 . T_2 . T_1 - - For example when positioning a flat detector, its pixel positions in the laboratory - reference frame (:ref:`McSTAS coordinate frame` by default) - can be calculated by - - .. math:: X_\text{lab} = T_f . X_\text{pixel} = T_3 . T_2 . T_1 . X_\text{pixel} - - Note that :math:`T_1` comes first in the *depends-on* chain and is also applied first - to the pixel coordinates. - - When we say transformation :math:`A` *depends on* transformation :math:`B` we mean that - the physical motor that realizes :math:`A` is *stacked on top of* the motor that realizes :math:`B`. - So the activate coordinate transformation :math:`A` needs to be applied to a coordinate - before applying :math:`B`. In other words :math:`X' = B . A . X`. - - **Transformation matrix** - - In explicit terms, the transformations are a subset of affine transformations expressed as - 4x4 active transformation matrices that act on homogeneous coordinates, :math:`X=[x,y,z,1]^T`. - - For rotation and translation, - - .. math:: T_r &= \begin{pmatrix} R & o \\ 0_3 & 1 \end{pmatrix} \\ T_t &= \begin{pmatrix} I_3 & t + o \\ 0_3 & 1 \end{pmatrix} - - where :math:`R` is the usual 3x3 rotation matrix, :math:`o` is an offset vector, - :math:`0_3` is a row of 3 zeros, :math:`I_3` is the 3x3 identity matrix and - :math:`t` is the translation vector. - - :math:`o` is given by the ``offset`` attribute, :math:`t` is given by the ``vector`` - attribute multiplied by the field value, and :math:`R` is defined as a rotation - about an axis in the direction of ``vector``, of angle of the field value. - - **Usage** - - One possible use of ``NXtransformations`` is to define the motors and - transformations for a diffractometer (goniometer). Such use is mentioned - in the ``NXinstrument`` base class. Use one ``NXtransformations`` group - for each diffractometer and name the group appropriate to the device. - Collecting the motors of a sample table or xyz-stage in an NXtransformations - group is equally possible. - - Following the section on the general description of axis in NXtransformations is a section which - documents the fields commonly used within NeXus for positioning purposes and their meaning. Whenever - there is a need for positioning a beam line component please use the existing names. Use as many fields - as needed in order to position the component. Feel free to add more axis if required. In the description - given below, only those atttributes which are defined through the name are spcified. Add the other attributes - of the full set: - - * vector - * offset - * transformation_type - * depends_on - - as needed. - - **Example 1: goniometer** - - Position a sample mounted on a goniometer in the :ref:`McSTAS coordinate frame`. - - The sample is oriented as follows - - .. math:: X_\text{lab} = R(\vec{v}_\omega, \omega) . - T(\vec{v}_z, \text{sam}_z) . - T(\vec{v}_y, \text{sam}_y) . - T(\vec{v}_x, \text{sam}_x) . - R(\vec{v}_\chi, \chi) . - R(\vec{v}_\varphi, \varphi) . X_s - - where - - * :math:`R(\vec{v},a)` is a rotation around vector :math:`\vec{v}` with angle :math:`a` - * :math:`T(\vec{u},t)` is a translation along vector :math:`\vec{u}` over a distance :math:`t` - * :math:`X_s` a coordinate in the sample reference frame. - - .. code-block:: - - entry:NXentry - sample:NXsample - depends_on=transformations/phi - transformations:NXtransformations - phi=0 - @depends_on=chi - @transformation_type=rotation - @vector=[-1 -0.0037 -0.002] - @units=degrees - chi=0 - @depends_on=sam_x - @transformation_type=rotation - @vector=[0.0046 0.0372 0.9993] - @units=degrees - sam_x=0 - @depends_on=sam_y - @transformation_type=translation - @vector=[1 0 0] - @units=mm - sam_y=0 - @depends_on=sam_z - @transformation_type=translation - @vector=[0 1 0] - @units=mm - sam_z=0 - @depends_on=omega - @transformation_type=translation - @vector=[0 0 1] - @units=mm - omega=174 - @depends_on=. - @transformation_type=rotation - @vector=[-1 0 0] - @units=degrees - - **Example 2: different coordinate system** - - Define a laboratory reference frame with the X-axis along the beam and the Z-axis opposite to the direction of gravity. - Three point detectors are positioned in this reference: - - * *transmission*: - * point detector in the beam - * 20 cm downstream from the sample (the origin of the reference frame) - * *vertical*: - * point detector 10 cm downstream from the sample - * making an angle of 5 degrees with the beam w.r.t. the sample - * positioned in the XZ-plane above the XY-plane - * *horizontal*: - * point detector 11 cm downstream from the sample - * making an angle of 6 degrees with the beam w.r.t. the sample - * positioned in the XY-plane above the XZ-plane - - The coordinates of the point detectors in the laboratory reference frame are - - * *transmission*: :math:`X_\text{lab} = T_x(20) . X_d` - * *vertical*: :math:`X_\text{lab} = R_y(-5) . T_x(10) . X_d` - * *horizontal*: :math:`X_\text{lab} = R_x(-90) . R_y(-6) . T_x(11) . X_d` - - where - - * :math:`T_x`, :math:`T_y`, :math:`T_z`: active transformation matrices for translation along the X, Y and Z axes - * :math:`R_x`, :math:`R_y`, :math:`R_z`: active transformation matrices for rotation around the X, Y and Z axes - * :math:`X_d` is a coordinate in the detector reference frame. - - Note that as these are point detectors, we only have one coordinate :math:`X_d=[0,0,0,1]^T`. - - .. code-block:: - - entry:NXentry - instrument:NXinstrument - vertical:NXdetector - depends_on=position/distance - position:NXtransformations - distance=10 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=5 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=0 # stay in the vertical plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - horizontal:NXdetector - depends_on=position/distance - position:NXtransformations - distance=11 # move downstream from the sample - @depends_on=polar - @units=cm - @vector=[1 0 0] - polar=6 # title above the horizontal plane - @depends_on=azimuth - @units=degrees - @vector=[0 -1 0] - azimuth=90 # rotate to the horizontal plane - @depends_on=/entry/coordinate_system/beam - @units=degrees - @vector=[-1 0 0] - transmission:NXdetector - depends_on=position/distance - position:NXtransformations - distance=20 # move downstream from the sample - @depends_on=/entry/coordinate_system/beam - @units=cm - @vector=[1 0 0] - coordinate_system:NXtransformations - beam=NaN # value is never used - @depends_on=gravity - @vector=[1 0 0] # X-axis points in the beam direction - gravity=NaN # value is never used - @depends_on=. # end of the chain - @vector=[0 0 -1] # Z-axis points up - - -DEBUG - ===== ATTRS (//entry/sample/transformations@NX_class) -DEBUG - value: NXtransformations -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations'] -DEBUG - classes: -NXsample.nxdl.xml:/TRANSFORMATIONS -NXtransformations.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/sample/transformations/corrected_phi): -DEBUG - value: 90.0 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/corrected_phi@depends_on) -DEBUG - value: rot_omg -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/corrected_phi@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/corrected_phi@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/corrected_phi@vector) -DEBUG - value: [0 1 0] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/sample/transformations/rot_omg): -DEBUG - value: 131.7 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_omg@depends_on) -DEBUG - value: rot_phi -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_omg@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_omg@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_omg@vector) -DEBUG - value: [1 0 0] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/sample/transformations/rot_phi): -DEBUG - value: 2.5 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_phi@depends_on) -DEBUG - value: rot_tht -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_phi@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_phi@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_phi@vector) -DEBUG - value: [0 1 0] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/sample/transformations/rot_tht): -DEBUG - value: 401.18 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_tht@depends_on) -DEBUG - value: trans_z -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_tht@transformation_type) -DEBUG - value: rotation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_tht@units) -DEBUG - value: degrees -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/rot_tht@vector) -DEBUG - value: [0 0 1] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/sample/transformations/trans_x): -DEBUG - value: 2.65 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_x@depends_on) -DEBUG - value: /entry/instrument/manipulator/transformations/trans_z -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_x@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_x@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_x@vector) -DEBUG - value: [1 0 0] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/sample/transformations/trans_y): -DEBUG - value: -4.321 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_y@depends_on) -DEBUG - value: trans_x -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_y@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_y@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_y@vector) -DEBUG - value: [0 1 0] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/sample/transformations/trans_z): -DEBUG - value: 34.82 -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME): -DEBUG - - Units need to be appropriate for translation or rotation - - The name of this field is not forced. The user is free to use any name - that does not cause confusion. When using more than one ``AXISNAME`` field, - make sure that each field name is unique in the same group, as required - by HDF5. - - The values given should be the start points of exposures for the corresponding - frames. The end points should be given in ``AXISNAME_end``. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_z@depends_on) -DEBUG - value: trans_y -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@depends_on - [NX_CHAR] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/depends_on): -DEBUG - - Points to the path to a field defining the axis on which this - depends or the string "." when at the end of the chain. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_z@transformation_type) -DEBUG - value: translation -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@transformation_type - [NX_CHAR] -DEBUG - <> -DEBUG - enumeration (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - -> translation -DEBUG - -> rotation -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/transformation_type): -DEBUG - - The transformation_type may be ``translation``, in which case the - values are linear displacements along the axis, ``rotation``, - in which case the values are angular rotations around the axis. - - If this attribute is omitted, this is an axis for which there - is no motion to be specifies, such as the direction of gravity, - or the direction to the source, or a basis vector of a - coordinate frame. - -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_z@units) -DEBUG - value: mm -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@units [NX_TRANSFORMATION] -DEBUG - ===== ATTRS (//entry/sample/transformations/trans_z@vector) -DEBUG - value: [0 0 1] -DEBUG - classpath: ['NXentry', 'NXsample', 'NXtransformations', 'NX_NUMBER'] -DEBUG - classes: -NXtransformations.nxdl.xml:/AXISNAME -DEBUG - NXtransformations.nxdl.xml:/AXISNAME@vector - [NX_NUMBER] -DEBUG - <> -DEBUG - documentation (NXtransformations.nxdl.xml:/AXISNAME/vector): -DEBUG - - Three values that define the axis for this transformation. - The axis should be normalized to unit length, making it - dimensionless. For ``rotation`` axes, the direction should be - chosen for a right-handed rotation with increasing angle. - For ``translation`` axes the direction should be chosen for - increasing displacement. For general axes, an appropriate direction - should be chosen. - -DEBUG - ===== FIELD (//entry/start_time): -DEBUG - value: b'2019-05-23T18:13:54.657000+00:00' -DEBUG - classpath: ['NXentry', 'NX_DATE_TIME'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/start_time -NXentry.nxdl.xml:/start_time -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/start_time): -DEBUG - - Datetime of the start of the measurement. - Should be a ISO8601 date/time stamp. It is recommended to add an explicit time zone, - otherwise the local time zone is assumed per ISO8601. - -DEBUG - documentation (NXentry.nxdl.xml:/start_time): -DEBUG - - Starting time of measurement - -DEBUG - ===== FIELD (//entry/title): -DEBUG - value: b'Valence Band Dynamics - 1030 nm linear p-polarized pump, 0.6 mJ/cm2 absorbed fluence' -DEBUG - classpath: ['NXentry', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/title -NXentry.nxdl.xml:/title -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/title): -DEBUG - -DEBUG - documentation (NXentry.nxdl.xml:/title): -DEBUG - - Extended title for entry - -DEBUG - ===== GROUP (//entry/user [NXmpes::/NXentry/NXuser]): -DEBUG - classpath: ['NXentry', 'NXuser'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/USER -NXentry.nxdl.xml:/USER -NXuser.nxdl.xml: -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/USER): -DEBUG - - Contact information of at least the user of the instrument or the investigator - who performed this experiment. Adding multiple users if relevant is recommended. - -DEBUG - documentation (NXentry.nxdl.xml:/USER): -DEBUG - -DEBUG - documentation (NXuser.nxdl.xml:): -DEBUG - - Contact information for a user. - - The format allows more - than one user with the same affiliation and contact information, - but a second :ref:`NXuser` group should be used if they have different - affiliations, etc. - -DEBUG - ===== ATTRS (//entry/user@NX_class) -DEBUG - value: NXuser -DEBUG - classpath: ['NXentry', 'NXuser'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/USER -NXentry.nxdl.xml:/USER -NXuser.nxdl.xml: -DEBUG - @NX_class [NX_CHAR] -DEBUG - -DEBUG - ===== FIELD (//entry/user/address): -DEBUG - value: b'Faradayweg 4-6, 14195 Berlin' -DEBUG - classpath: ['NXentry', 'NXuser', 'NX_CHAR'] -DEBUG - classes: -NXuser.nxdl.xml:/address -DEBUG - <> -DEBUG - documentation (NXuser.nxdl.xml:/address): -DEBUG - - Address of user - -DEBUG - ===== FIELD (//entry/user/affiliation): -DEBUG - value: b'Fritz Haber Institute of the Max Planck Society' -DEBUG - classpath: ['NXentry', 'NXuser', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/USER/affiliation -NXuser.nxdl.xml:/affiliation -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/USER/affiliation): -DEBUG - - Name of the affiliation of the user at the time when the experiment was - performed. - -DEBUG - documentation (NXuser.nxdl.xml:/affiliation): -DEBUG - - Affiliation of user - -DEBUG - ===== FIELD (//entry/user/email): -DEBUG - value: b'beaulieu@fhi-berlin.mpg.de' -DEBUG - classpath: ['NXentry', 'NXuser', 'NX_CHAR'] -DEBUG - classes: -NXuser.nxdl.xml:/email -DEBUG - <> -DEBUG - documentation (NXuser.nxdl.xml:/email): -DEBUG - - Email of user - -DEBUG - ===== FIELD (//entry/user/name): -DEBUG - value: b'Samuel Beaulieu' -DEBUG - classpath: ['NXentry', 'NXuser', 'NX_CHAR'] -DEBUG - classes: -NXmpes.nxdl.xml:/ENTRY/USER/name -NXuser.nxdl.xml:/name -DEBUG - <> -DEBUG - documentation (NXmpes.nxdl.xml:/ENTRY/USER/name): -DEBUG - - Name of the user. - -DEBUG - documentation (NXuser.nxdl.xml:/name): -DEBUG - - Name of user responsible for this entry - -DEBUG - ===== FIELD (//entry/user/role): -DEBUG - value: b'Principal Investigator' -DEBUG - classpath: ['NXentry', 'NXuser', 'NX_CHAR'] -DEBUG - classes: -NXuser.nxdl.xml:/role -DEBUG - <> -DEBUG - documentation (NXuser.nxdl.xml:/role): -DEBUG - - Role of user responsible for this entry. - Suggested roles are "local_contact", - "principal_investigator", and "proposer" - -DEBUG - ======================== -DEBUG - === Default Plotable === -DEBUG - ======================== -DEBUG - -DEBUG - NXentry has been identified: /entry -DEBUG - -DEBUG - NXdata group has been identified: /entry/data -DEBUG - ===== GROUP (//entry/data [NXmpes::/NXentry/NXdata]): -DEBUG - ===== ATTRS (//entry/data@NX_class) -DEBUG - value: NXdata -DEBUG - ===== ATTRS (//entry/data@axes) -DEBUG - value: ['kx' 'ky' 'energy' 'delay'] -DEBUG - ===== ATTRS (//entry/data@delay_indices) -DEBUG - value: 3 -DEBUG - ===== ATTRS (//entry/data@energy_indices) -DEBUG - value: 2 -DEBUG - ===== ATTRS (//entry/data@kx_indices) -DEBUG - value: 0 -DEBUG - ===== ATTRS (//entry/data@ky_indices) -DEBUG - value: 1 -DEBUG - ===== ATTRS (//entry/data@signal) -DEBUG - value: data -DEBUG - -DEBUG - Signal has been identified: /entry/data/data -DEBUG - ===== FIELD (//entry/data/data): -DEBUG - value: [[[1.14760e+04 1.64560e+04 1.55440e+04 1.48940e+04 1.08810e+04] ... -DEBUG - Dataset referenced as NXdata SIGNAL -DEBUG - ===== ATTRS (//entry/data/data@units) -DEBUG - value: counts -DEBUG - -DEBUG - For Axis #0, 1 axes have been identified: [] -DEBUG - -DEBUG - For Axis #1, 1 axes have been identified: [] -DEBUG - -DEBUG - For Axis #2, 1 axes have been identified: [] -DEBUG - -DEBUG - For Axis #3, 1 axes have been identified: [] diff --git a/tests/data/example.nxs b/tests/data/example.nxs new file mode 100644 index 0000000..16f3892 --- /dev/null +++ b/tests/data/example.nxs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c2a06f1fc1bb739fc73a6a7645f855c3d46a0843a19071dff15a4cd42e1ac23 +size 4375960 diff --git a/tests/test_reader.py b/tests/test_reader.py index 2354666..c3a46ad 100644 --- a/tests/test_reader.py +++ b/tests/test_reader.py @@ -2,121 +2,32 @@ Basic example based test for the stm reader """ -import logging import os -import xml.etree.ElementTree as ET from pathlib import Path import pynxtools.dataconverter.convert as dataconverter -from numpy.testing import assert_equal -from pynxtools.dataconverter.convert import get_reader -from pynxtools.dataconverter.helpers import generate_template_from_nxdl -from pynxtools.dataconverter.template import Template -from pynxtools.dataconverter.validation import validate_dict_against -from pynxtools.definitions.dev_tools.utils.nxdl_utils import get_nexus_definitions_path -from pynxtools.nexus.nexus import HandleNexus +from pynxtools.testing.nexus_conversion import ReaderTest -from pynxtools_mpes.reader import MPESReader - -def test_example_data(caplog): +def test_nexus_conversion(caplog, tmp_path): """ - Test the example data for the stm reader + Tests the conversion into nexus. """ - reader = MPESReader - assert callable(reader.read) - - def_dir = get_nexus_definitions_path() - - data_dir = Path(__file__).parent / "data" - input_files = ( - str(data_dir / "config_file.json"), - str(data_dir / "xarray_saved_small_calibration.h5"), - ) - - nxdl_file = os.path.join(def_dir, "contributed_definitions", "NXmpes.nxdl.xml") - - root = ET.parse(nxdl_file).getroot() - template = Template() - generate_template_from_nxdl(root, template) - - read_data = reader().read(template=Template(template), file_paths=input_files) - - assert isinstance(read_data, Template) - with caplog.at_level(logging.WARNING): - assert validate_dict_against("NXmpes", read_data) - - # Ensure there were no warning logs - assert not caplog.text - - -def test_mpes_writing(tmp_path): - """Check if mpes example can be reproduced""" - # dataconverter + caplog.clear() dir_path = Path(__file__).parent / "data" - dataconverter.convert( - ( + test = ReaderTest( + nxdl="NXmpes", + reader_name="mpes", + files_or_dir=[ str(dir_path / "xarray_saved_small_calibration.h5"), str(dir_path / "config_file.json"), - ), - "mpes", - "NXmpes", - os.path.join(tmp_path, "mpes.small_test.nxs"), - False, - False, - ) - # check generated nexus file - test_data = os.path.join(tmp_path, "mpes.small_test.nxs") - logger = logging.getLogger(__name__) - logger.setLevel(logging.DEBUG) - handler = logging.FileHandler(os.path.join(tmp_path, "mpes_test.log"), "w") - formatter = logging.Formatter("%(levelname)s - %(message)s") - handler.setLevel(logging.DEBUG) - handler.setFormatter(formatter) - logger.addHandler(handler) - nexus_helper = HandleNexus(logger, test_data, None, None) - nexus_helper.process_nexus_master_file(None) - with open( - os.path.join(tmp_path, "mpes_test.log"), "r", encoding="utf-8" - ) as logfile: - log = [] - for line in logfile.readlines(): - if not line.startswith( - "DEBUG - value: https://github.com/FAIRmat-NFDI/nexus_definitions/blob/" - ): - log.append(line) - with open(dir_path / "Ref_nexus_mpes.log", "r", encoding="utf-8") as logfile: - ref_log = [] - for line in logfile.readlines(): - if not line.startswith( - "DEBUG - value: https://github.com/FAIRmat-NFDI/nexus_definitions/blob/" - ): - ref_log.append(line) - assert_equal(log, ref_log) - - -def test_shows_correct_warnings(): - """ - Checks whether the read function generates the correct warnings. - """ - def_dir = get_nexus_definitions_path() - - data_dir = Path(__file__).parent / "data" - input_files = ( - str(data_dir / "config_file.json"), - str(data_dir / "xarray_saved_small_calibration.h5"), + str(dir_path / "example.nxs"), + ], + tmp_path=tmp_path, + caplog=caplog, ) - nxdl_file = os.path.join(def_dir, "contributed_definitions", "NXmpes.nxdl.xml") - - root = ET.parse(nxdl_file).getroot() - template = Template() - generate_template_from_nxdl(root, template) - - read_data = get_reader("mpes")().read( - template=Template(template), file_paths=tuple(input_files) - ) - - assert validate_dict_against("NXmpes", read_data) + test.convert_to_nexus(caplog_level="WARNING", ignore_undocumented=False) + test.check_reproducibility_of_nexus() def test_eln_data(tmp_path):