diff --git a/base_classes/NXdata.nxdl.xml b/base_classes/NXdata.nxdl.xml
index 774c653253..408eb3a2e5 100644
--- a/base_classes/NXdata.nxdl.xml
+++ b/base_classes/NXdata.nxdl.xml
@@ -1,10 +1,10 @@
-
-
+
+
-
-
-
-
-
- These symbols will be used below to coordinate fields with the same shape.
- rank of the ``DATA`` field
- length of the ``AXISNAME`` field
- length of the ``x`` field
- length of the ``y`` field
- length of the ``z`` field
-
-
-
-
- .. index:: plotting
-
- Array of strings holding the :ref:`names <validItemName>` of additional
- signals to be plotted with the default :ref:`signal </NXdata@signal-attribute>`.
- These fields or links *must* exist and be direct children of this NXdata group.
-
- Each auxiliary signal needs to be of the same shape as the default signal.
-
- .. NIAC2018:
- https://www.nexusformat.org/NIAC2018Minutes.html
-
-
-
-
- .. 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 <validItemName>` 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.
-
-
-
-
- .. index:: plotting
-
- Array of strings holding the :ref:`names <validItemName>` of
- the independent data fields used in the default plot for all of
- the dimensions of the :ref:`signal </NXdata@signal-attribute>`
- as well as any :ref:`auxiliary signals </NXdata@auxiliary_signals-attribute>`.
-
- 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.
-
-
-
-
-
-
- Each ``AXISNAME_indices`` attribute indicates the dependency
- relationship of the ``AXISNAME`` field (where ``AXISNAME``
- is the name of a field that exists in this ``NXdata`` group)
- with one or more dimensions of the plottable data.
-
- Integer array that defines the indices of the *signal* field
- (that field will be a multidimensional array)
- which need to be used in the *AXISNAME* field in
- order to reference the corresponding axis value.
-
- The first index of an array is ``0`` (zero).
-
- Here, *AXISNAME* is to be replaced by the name of each
- field described in the ``axes`` attribute.
- An example with 2-D data, :math:`d(t,P)`, will illustrate::
-
- data_2d:NXdata
- @signal="data"
- @axes=["time", "pressure"]
- @time_indices=0
- @pressure_indices=1
- data: float[1000,20]
- time: float[1000]
- pressure: float[20]
-
- This attribute is to be provided in all situations.
- However, if the indices attributes are missing
- (such as for data files written before this specification),
- file readers are encouraged to make their best efforts
- to plot the data.
- Thus the implementation of the
- ``AXISNAME_indices`` attribute is based on the model of
- "strict writer, liberal reader".
-
- .. note:: Attributes potentially containing multiple values
- (axes and _indices) are to be written as string or integer arrays,
- to avoid string parsing in reading applications.
-
-
-
-
- :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)
-
-
-
- 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.
-
-
-
- A *dimension scale* must have a rank of 1 and has length ``n``.
-
-
-
- Axis label
-
-
- ``0|false``: single value,
- ``1|true``: multiple values
-
-
- Index of first good value
- Index of last good value
-
-
- Index (positive integer) identifying this specific set of numbers.
-
- N.B. The ``axis`` attribute is the old way of designating a link.
- Do not use the ``axes`` attribute with the ``axis`` attribute.
- The ``axes`` *group* attribute is now preferred.
-
-
-
-
-
- "Errors" (meaning *uncertainties* or *standard deviations*)
- associated with any field named ``FIELDNAME`` in this ``NXdata``
- group (e.g. an axis, signal or auxiliary signal).
-
- The dimensions of the ``FIELDNAME_errors`` field must match
- the dimensions of the ``FIELDNAME`` field.
-
-
-
-
- .. 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.
-
-
-
- The rank (``dataRank``) of the ``data`` must satisfy
- ``1 <= dataRank <= NX_MAXRANK=32``.
- At least one ``dim`` must have length ``n``.
-
-
-
-
- .. index:: plotting
-
- Plottable (independent) axis, indicate index number.
- Only one field in a :ref:`NXdata` group may have the
- ``signal=1`` attribute.
- Do not use the ``signal`` attribute with the ``axis`` attribute.
-
-
-
-
- Defines the names of the dimension scales
- (independent axes) for this data set
- as a colon-delimited array.
- NOTE: The ``axes`` attribute is the preferred
- method of designating a link.
- Do not use the ``axes`` attribute with the ``axis`` attribute.
-
-
-
- data label
-
-
-
-
- Standard deviations of data values -
- the data array is identified by the group attribute ``signal``.
- The ``errors`` array must have the same dimensions as ``DATA``.
- Client is responsible for defining the dimensions of the data.
-
-
-
- The ``errors`` must have
- the same rank (``dataRank``)
- as the ``data``.
- At least one ``dim`` must have length "n".
-
-
-
-
-
- The elements in data are usually float values really. For
- efficiency reasons these are usually stored as integers
- after scaling with a scale factor. This value is the scale
- factor. It is required to get the actual physical value,
- when necessary.
-
-
-
-
- An optional offset to apply to the values in data.
-
-
-
-
- Title for the plot.
-
-
-
-
- This is an array holding the values to use for the x-axis of
- data. The units must be appropriate for the measurement.
-
-
-
-
-
-
-
- This is an array holding the values to use for the y-axis of
- data. The units must be appropriate for the measurement.
-
-
-
-
-
-
-
- This is an array holding the values to use for the z-axis of
- data. The units must be appropriate for the measurement.
-
-
-
-
-
+
+
+
+
+ These symbols will be used below to coordinate fields with the same
+ shape.
+
+
+
+ rank of the ``DATA`` field
+
+
+
+
+ length of the ``AXISNAME`` field
+
+
+
+
+ length of the ``x`` field
+
+
+
+
+ length of the ``y`` field
+
+
+
+
+ length of the ``z`` field
+
+
+
+
+ :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)
+
+
+
+ .. index:: plotting
+
+ Array of strings holding the :ref:`names <validItemName>` of additional
+ signals to be plotted with the default :ref:`signal </NXdata@signal-attribute>`.
+ These fields or links *must* exist and be direct children of this NXdata group.
+
+ Each auxiliary signal needs to be of the same shape as the default signal.
+
+ .. NIAC2018:
+ https://www.nexusformat.org/NIAC2018Minutes.html
+
+
+
+
+ .. 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 <validItemName>` 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.
+
+
+
+
+ .. index:: plotting
+
+ Array of strings holding the :ref:`names <validItemName>` of
+ the independent data fields used in the default plot for all of
+ the dimensions of the :ref:`signal </NXdata@signal-attribute>`
+ as well as any :ref:`auxiliary signals </NXdata@auxiliary_signals-attribute>`.
+
+ 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.
+
+
+
+
+
+
+ Each ``AXISNAME_indices`` attribute indicates the dependency
+ relationship of the ``AXISNAME`` field (where ``AXISNAME``
+ is the name of a field that exists in this ``NXdata`` group)
+ with one or more dimensions of the plottable data.
+
+ Integer array that defines the indices of the *signal* field
+ (that field will be a multidimensional array)
+ which need to be used in the *AXISNAME* field in
+ order to reference the corresponding axis value.
+
+ The first index of an array is ``0`` (zero).
+
+ Here, *AXISNAME* is to be replaced by the name of each
+ field described in the ``axes`` attribute.
+ An example with 2-D data, :math:`d(t,P)`, will illustrate::
+
+ data_2d:NXdata
+ @signal="data"
+ @axes=["time", "pressure"]
+ @time_indices=0
+ @pressure_indices=1
+ data: float[1000,20]
+ time: float[1000]
+ pressure: float[20]
+
+ This attribute is to be provided in all situations.
+ However, if the indices attributes are missing
+ (such as for data files written before this specification),
+ file readers are encouraged to make their best efforts
+ to plot the data.
+ Thus the implementation of the
+ ``AXISNAME_indices`` attribute is based on the model of
+ "strict writer, liberal reader".
+
+ .. note:: Attributes potentially containing multiple values
+ (axes and _indices) are to be written as string or integer arrays,
+ to avoid string parsing in reading applications.
+
+
+
+
+ Points to the path of a field defining the axis on which the ``AXISNAME`` axis depends.
+
+ This concept allows to link an axis to a respective field in the NeXus hierarchy, thereby
+ defining the physical quantity it represents.
+
+ Here, *AXISNAME* is to be replaced by the name of each
+ field described in the ``axes`` attribute.
+
+ Examples:
+ If a calibration has been performed, ``@AXISNAME_depends`` links to the result of
+ that calibration:
+
+ @AXISNAME_depends: '/entry/process/calibration/calibrated_axis'
+
+ If the axis corresponds to a coordinate of a detector, ``@AXISNAME_depends`` links
+ to that detector axis:
+
+ @AXISNAME_depends: '/entry/instrument/detector/axis/some_axis' for a 2D detector
+
+ If the axis is a scanned motor, ``@AXISNAME_depends`` links to the transformation
+ describing the respective motion, e.g.:
+
+ @AXISNAME_depends: '/entry/instrument/detector/transformations/some_transformation' for a motion of the detector
+
+
+
+
+ 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.
+
+
+
+ A *dimension scale* must have a rank of 1 and has length ``n``.
+
+
+
+
+
+ Axis label
+
+
+
+
+ ``0|false``: single value,
+ ``1|true``: multiple values
+
+
+
+
+ Index of first good value
+
+
+
+
+ Index of last good value
+
+
+
+
+ Index (positive integer) identifying this specific set of numbers.
+
+ N.B. The ``axis`` attribute is the old way of designating a link.
+ Do not use the ``axes`` attribute with the ``axis`` attribute.
+ The ``axes`` *group* attribute is now preferred.
+
+
+
+
+
+ "Errors" (meaning *uncertainties* or *standard deviations*)
+ associated with any field named ``FIELDNAME`` in this ``NXdata``
+ group (e.g. an axis, signal or auxiliary signal).
+
+ The dimensions of the ``FIELDNAME_errors`` field must match
+ the dimensions of the ``FIELDNAME`` field.
+
+
+
+
+ .. 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.
+
+
+
+ The rank (``dataRank``) of the ``data`` must satisfy
+ ``1 <= dataRank <= NX_MAXRANK=32``.
+ At least one ``dim`` must have length ``n``.
+
+
+
+
+ .. index:: plotting
+
+ Plottable (independent) axis, indicate index number.
+ Only one field in a :ref:`NXdata` group may have the
+ ``signal=1`` attribute.
+ Do not use the ``signal`` attribute with the ``axis`` attribute.
+
+
+
+
+ Defines the names of the dimension scales
+ (independent axes) for this data set
+ as a colon-delimited array.
+ NOTE: The ``axes`` attribute is the preferred
+ method of designating a link.
+ Do not use the ``axes`` attribute with the ``axis`` attribute.
+
+
+
+
+ data label
+
+
+
+
+
+ Standard deviations of data values -
+ the data array is identified by the group attribute ``signal``.
+ The ``errors`` array must have the same dimensions as ``DATA``.
+ Client is responsible for defining the dimensions of the data.
+
+
+
+ The ``errors`` must have
+ the same rank (``dataRank``)
+ as the ``data``.
+ At least one ``dim`` must have length "n".
+
+
+
+
+
+ The elements in data are usually float values really. For
+ efficiency reasons these are usually stored as integers
+ after scaling with a scale factor. This value is the scale
+ factor. It is required to get the actual physical value,
+ when necessary.
+
+
+
+
+ An optional offset to apply to the values in data.
+
+
+
+
+ Title for the plot.
+
+
+
+
+ This is an array holding the values to use for the x-axis of
+ data. The units must be appropriate for the measurement.
+
+
+
+
+
+
+
+ This is an array holding the values to use for the y-axis of
+ data. The units must be appropriate for the measurement.
+
+
+
+
+
+
+
+ This is an array holding the values to use for the z-axis of
+ data. The units must be appropriate for the measurement.
+
+
+
+
+
diff --git a/base_classes/NXdetector.nxdl.xml b/base_classes/NXdetector.nxdl.xml
index 523f0916f1..d43803c732 100644
--- a/base_classes/NXdetector.nxdl.xml
+++ b/base_classes/NXdetector.nxdl.xml
@@ -8,7 +8,7 @@
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
+# version 3 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -72,14 +72,12 @@
-
+
-
+
@@ -173,14 +171,12 @@
-
+
-
+
@@ -200,14 +196,12 @@
-
+
-
+
@@ -227,14 +221,12 @@
-
+
-
+
@@ -973,6 +965,7 @@
Number of raw active elements in each dimension. Important for swept scans.
+
raw data output from the detector
diff --git a/base_classes/NXenvironment.nxdl.xml b/base_classes/NXenvironment.nxdl.xml
index 1b494e345e..1dd95974a8 100644
--- a/base_classes/NXenvironment.nxdl.xml
+++ b/base_classes/NXenvironment.nxdl.xml
@@ -1,10 +1,10 @@
-
-
+
+
-
- Parameters for controlling external conditions
+
+
+ Parameters for controlling external conditions
+
- Apparatus identification code/model number; e.g. OC100 011
+
+ Apparatus identification code/model number; e.g. OC100 011
+
- Alternative short name, perhaps for dashboard display like a present Seblock name
+
+ Alternative short name, perhaps for dashboard display like a present Seblock
+ name
+
- Type of apparatus. This could be the SE codes in scheduling database; e.g. OC/100
+
+ Type of apparatus. This could be the SE codes in scheduling database; e.g.
+ OC/100
+
- Description of the apparatus; e.g. 100mm bore orange cryostat with Roots pump
+
+ Description of the apparatus; e.g. 100mm bore orange cryostat with Roots pump
+
- Program controlling the apparatus; e.g. LabView VI name
+
+ Program controlling the apparatus; e.g. LabView VI name
+
@@ -50,25 +60,37 @@
- 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.
+ 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.
- 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.
+ 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.
- Additional information, LabView logs, digital photographs, etc
+
+ Additional information, LabView logs, digital photographs, etc
+
+
+
+
+ Any actuator used to control the environment. This can be linked to an actuator
+ defined in an NXinstrument instance.
+
+
+
+
+ Any sensor used to monitor the environment. This can be linked to a sensor
+ defined in an NXinstrument instance.
+
-
-
diff --git a/base_classes/NXinstrument.nxdl.xml b/base_classes/NXinstrument.nxdl.xml
index 7fb369f97d..2e6c8b5f73 100644
--- a/base_classes/NXinstrument.nxdl.xml
+++ b/base_classes/NXinstrument.nxdl.xml
@@ -1,10 +1,10 @@
-
+
-
-
- A sensor used to monitor an external condition
-
- The condition itself is described in :ref:`NXenvironment`.
-
-
- Sensor identification code/model number
-
-
- Name for the sensor
-
-
- Short name of sensor used e.g. on monitor display program
-
-
- where sensor is attached to ("sample" | "can")
-
-
-
- Defines the axes for logged vector quantities if they are not the global instrument axes.
-
-
-
- name for measured signal
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The type of hardware used for the measurement.
- Examples (suggestions but not restrictions):
-
- :Temperature:
- J | K | T | E | R | S | Pt100 | Rh/Fe
- :pH:
- Hg/Hg2Cl2 | Ag/AgCl | ISFET
- :Ion selective electrode:
- specify species; e.g. Ca2+
- :Magnetic field:
- Hall
- :Surface pressure:
- wilhelmy plate
-
-
-
-
- Is data collection controlled or synchronised to this quantity:
- 1=no, 0=to "value", 1=to "value_deriv1", etc.
-
-
-
-
- Upper control bound of sensor reading if using run_control
-
-
-
-
- Lower control bound of sensor reading if using run_control
-
-
-
-
- nominal setpoint or average value
- - need [n] as may be a vector
-
-
-
-
-
-
-
- Nominal/average first derivative of value
- e.g. strain rate
- - same dimensions as "value" (may be a vector)
-
-
-
-
-
-
-
- Nominal/average second derivative of value
- - same dimensions as "value" (may be a vector)
-
-
-
-
-
-
- Time history of sensor readings
-
-
- Time history of first derivative of sensor readings
-
-
- Time history of second derivative of sensor readings
-
-
-
-
-
-
-
-
-
-
-
-
- For complex external fields not satisfied by External_field_brief
-
-
-
- This group describes the shape of the sensor when necessary.
-
-
+
+
+ A sensor used to monitor an external condition
+
+ The condition itself is described in :ref:`NXenvironment`.
+
+
+
+ Sensor identification code/model number
+
+
+
+
+ Name for the sensor
+
+
+
+
+ Short name of sensor used e.g. on monitor display program
+
+
+
+
+ where sensor is attached to ("sample" | "can")
+
+
+
+
+ Defines the axes for logged vector quantities if they are not the global
+ instrument axes.
+
+
+
+
+ name for measured signal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The type of hardware used for the measurement.
+ Examples (suggestions but not restrictions):
+
+ :Temperature:
+ J | K | T | E | R | S | Pt100 | Rh/Fe
+ :pH:
+ Hg/Hg2Cl2 | Ag/AgCl | ISFET
+ :Ion selective electrode:
+ specify species; e.g. Ca2+
+ :Magnetic field:
+ Hall
+ :Surface pressure:
+ wilhelmy plate
+
+
+
+
+ Is data collection controlled or synchronised to this quantity:
+ 1=no, 0=to "value", 1=to "value_deriv1", etc.
+
+
+
+
+ Upper control bound of sensor reading if using run_control
+
+
+
+
+ Lower control bound of sensor reading if using run_control
+
+
+
+
+ nominal setpoint or average value
+ - need [n] as may be a vector
+
+
+
+
+
+
+
+ Nominal/average first derivative of value
+ e.g. strain rate
+ - same dimensions as "value" (may be a vector)
+
+
+
+
+
+
+
+ Nominal/average second derivative of value
+ - same dimensions as "value" (may be a vector)
+
+
+
+
+
+
+
+ Time history of sensor readings
+
+
+
+
+ Time history of first derivative of sensor readings
+
+
+
+
+ Time history of second derivative of sensor readings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ For complex external fields not satisfied by External_field_brief
+
+
+
+
+ This group describes the shape of the sensor when necessary.
+
+
+
- .. index:: plotting
-
- Declares which child group contains a path leading
- to a :ref:`NXdata` group.
-
- It is recommended (as of NIAC2014) to use this attribute
- to help define the path to the default dataset to be plotted.
- See https://www.nexusformat.org/2014_How_to_find_default_data.html
- for a summary of the discussion.
+ .. index:: plotting
+
+ Declares which child group contains a path leading
+ to a :ref:`NXdata` group.
+
+ It is recommended (as of NIAC2014) to use this attribute
+ to help define the path to the default dataset to be plotted.
+ See https://www.nexusformat.org/2014_How_to_find_default_data.html
+ for a summary of the discussion.
- 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.
-
- .. todo::
- Add a definition for the reference point of a sensor.
-
+ 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.
+
+ .. todo::
+ Add a definition for the reference point of a sensor.
- 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.
+ 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.
-
diff --git a/base_classes/NXsource.nxdl.xml b/base_classes/NXsource.nxdl.xml
index 3fd1f983c7..1bf03d55d4 100644
--- a/base_classes/NXsource.nxdl.xml
+++ b/base_classes/NXsource.nxdl.xml
@@ -1,10 +1,10 @@
-
+
- The neutron or x-ray storage ring/facility.
+ 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.
@@ -68,6 +71,7 @@
+
@@ -262,15 +266,16 @@
- "Engineering" location of source.
+ "Engineering" location of source.
+
This group describes the shape of the beam line component
-
+
The wavelength or energy distribution of the source
@@ -294,7 +299,7 @@
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
+ string "." if located in the origin. Usually these operations are stored in a
NXtransformations group. But NeXus allows them to be stored anywhere.
The reference point of the source plane is its center in the x and y axis. The source is considered infinitely thin in the
diff --git a/base_classes/nyaml/NXdata.yaml b/base_classes/nyaml/NXdata.yaml
index cc56a0676b..3bfbf1da82 100644
--- a/base_classes/nyaml/NXdata.yaml
+++ b/base_classes/nyaml/NXdata.yaml
@@ -117,7 +117,8 @@ doc: |
# without this attribute being set to "true".
symbols:
doc: |
- These symbols will be used below to coordinate fields with the same shape.
+ These symbols will be used below to coordinate fields with the same
+ shape.
dataRank: |
rank of the ``DATA`` field
n: |
@@ -237,6 +238,31 @@ NXdata(NXobject):
.. note:: Attributes potentially containing multiple values
(axes and _indices) are to be written as string or integer arrays,
to avoid string parsing in reading applications.
+ \@AXISNAME_depends:
+ doc: |
+ Points to the path of a field defining the axis on which the ``AXISNAME`` axis depends.
+
+ This concept allows to link an axis to a respective field in the NeXus hierarchy, thereby
+ defining the physical quantity it represents.
+
+ Here, *AXISNAME* is to be replaced by the name of each
+ field described in the ``axes`` attribute.
+
+ Examples:
+ If a calibration has been performed, ``@AXISNAME_depends`` links to the result of
+ that calibration:
+
+ @AXISNAME_depends: '/entry/process/calibration/calibrated_axis'
+
+ If the axis corresponds to a coordinate of a detector, ``@AXISNAME_depends`` links
+ to that detector axis:
+
+ @AXISNAME_depends: '/entry/instrument/detector/axis/some_axis' for a 2D detector
+
+ If the axis is a scanned motor, ``@AXISNAME_depends`` links to the transformation
+ describing the respective motion, e.g.:
+
+ @AXISNAME_depends: '/entry/instrument/detector/transformations/some_transformation' for a motion of the detector
AXISNAME(NX_NUMBER):
nameType: any
doc: |
@@ -378,14 +404,14 @@ NXdata(NXobject):
dim: [[1, nz]]
# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
-# d6fe670cbf59475c1b29039a0baddf5bfef45444afa616430ef5d73b2465788c
-#
-#
+# 5a45322e878727216a5e86464351d5b329c144c33583ace0a439ce9c6cb7bb5a
+#
+#
#
-#
-#
-#
-#
-#
-# These symbols will be used below to coordinate fields with the same shape.
-# rank of the ``DATA`` field
-# length of the ``AXISNAME`` field
-# length of the ``x`` field
-# length of the ``y`` field
-# length of the ``z`` field
-#
-#
-#
-#
-# .. index:: plotting
-#
-# Array of strings holding the :ref:`names <validItemName>` of additional
-# signals to be plotted with the default :ref:`signal </NXdata@signal-attribute>`.
-# These fields or links *must* exist and be direct children of this NXdata group.
-#
-# Each auxiliary signal needs to be of the same shape as the default signal.
-#
-# .. NIAC2018:
-# https://www.nexusformat.org/NIAC2018Minutes.html
-#
-#
-#
-#
-# .. 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 <validItemName>` 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.
-#
-#
-#
-#
-# .. index:: plotting
-#
-# Array of strings holding the :ref:`names <validItemName>` of
-# the independent data fields used in the default plot for all of
-# the dimensions of the :ref:`signal </NXdata@signal-attribute>`
-# as well as any :ref:`auxiliary signals </NXdata@auxiliary_signals-attribute>`.
-#
-# 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.
-#
-#
-#
-#
-#
-#
-# Each ``AXISNAME_indices`` attribute indicates the dependency
-# relationship of the ``AXISNAME`` field (where ``AXISNAME``
-# is the name of a field that exists in this ``NXdata`` group)
-# with one or more dimensions of the plottable data.
-#
-# Integer array that defines the indices of the *signal* field
-# (that field will be a multidimensional array)
-# which need to be used in the *AXISNAME* field in
-# order to reference the corresponding axis value.
-#
-# The first index of an array is ``0`` (zero).
-#
-# Here, *AXISNAME* is to be replaced by the name of each
-# field described in the ``axes`` attribute.
-# An example with 2-D data, :math:`d(t,P)`, will illustrate::
-#
-# data_2d:NXdata
-# @signal="data"
-# @axes=["time", "pressure"]
-# @time_indices=0
-# @pressure_indices=1
-# data: float[1000,20]
-# time: float[1000]
-# pressure: float[20]
-#
-# This attribute is to be provided in all situations.
-# However, if the indices attributes are missing
-# (such as for data files written before this specification),
-# file readers are encouraged to make their best efforts
-# to plot the data.
-# Thus the implementation of the
-# ``AXISNAME_indices`` attribute is based on the model of
-# "strict writer, liberal reader".
-#
-# .. note:: Attributes potentially containing multiple values
-# (axes and _indices) are to be written as string or integer arrays,
-# to avoid string parsing in reading applications.
-#
-#
-#
-#
-# :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)
-#
-#
-#
-# 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.
-#
-#
-#
-# A *dimension scale* must have a rank of 1 and has length ``n``.
-#
-#
-#
-# Axis label
-#
-#
-# ``0|false``: single value,
-# ``1|true``: multiple values
-#
-#
-# Index of first good value
-# Index of last good value
-#
-#
-# Index (positive integer) identifying this specific set of numbers.
-#
-# N.B. The ``axis`` attribute is the old way of designating a link.
-# Do not use the ``axes`` attribute with the ``axis`` attribute.
-# The ``axes`` *group* attribute is now preferred.
-#
-#
-#
-#
-#
-# "Errors" (meaning *uncertainties* or *standard deviations*)
-# associated with any field named ``FIELDNAME`` in this ``NXdata``
-# group (e.g. an axis, signal or auxiliary signal).
-#
-# The dimensions of the ``FIELDNAME_errors`` field must match
-# the dimensions of the ``FIELDNAME`` field.
-#
-#
-#
-#
-# .. 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.
-#
-#
-#
-# The rank (``dataRank``) of the ``data`` must satisfy
-# ``1 <= dataRank <= NX_MAXRANK=32``.
-# At least one ``dim`` must have length ``n``.
-#
-#
-#
-#
-# .. index:: plotting
-#
-# Plottable (independent) axis, indicate index number.
-# Only one field in a :ref:`NXdata` group may have the
-# ``signal=1`` attribute.
-# Do not use the ``signal`` attribute with the ``axis`` attribute.
-#
-#
-#
-#
-# Defines the names of the dimension scales
-# (independent axes) for this data set
-# as a colon-delimited array.
-# NOTE: The ``axes`` attribute is the preferred
-# method of designating a link.
-# Do not use the ``axes`` attribute with the ``axis`` attribute.
-#
-#
-#
-# data label
-#
-#
-#
-#
-# Standard deviations of data values -
-# the data array is identified by the group attribute ``signal``.
-# The ``errors`` array must have the same dimensions as ``DATA``.
-# Client is responsible for defining the dimensions of the data.
-#
-#
-#
-# The ``errors`` must have
-# the same rank (``dataRank``)
-# as the ``data``.
-# At least one ``dim`` must have length "n".
-#
-#
-#
-#
-#
-# The elements in data are usually float values really. For
-# efficiency reasons these are usually stored as integers
-# after scaling with a scale factor. This value is the scale
-# factor. It is required to get the actual physical value,
-# when necessary.
-#
-#
-#
-#
-# An optional offset to apply to the values in data.
-#
-#
-#
-#
-# Title for the plot.
-#
-#
-#
-#
-# This is an array holding the values to use for the x-axis of
-# data. The units must be appropriate for the measurement.
-#
-#
-#
-#
-#
-#
-#
-# This is an array holding the values to use for the y-axis of
-# data. The units must be appropriate for the measurement.
-#
-#
-#
-#
-#
-#
-#
-# This is an array holding the values to use for the z-axis of
-# data. The units must be appropriate for the measurement.
-#
-#
-#
-#
-#
+#
+#
+#
+#
+# These symbols will be used below to coordinate fields with the same
+# shape.
+#
+#
+#
+# rank of the ``DATA`` field
+#
+#
+#
+#
+# length of the ``AXISNAME`` field
+#
+#
+#
+#
+# length of the ``x`` field
+#
+#
+#
+#
+# length of the ``y`` field
+#
+#
+#
+#
+# length of the ``z`` field
+#
+#
+#
+#
+# :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)
+#
+#
+#
+# .. index:: plotting
+#
+# Array of strings holding the :ref:`names <validItemName>` of additional
+# signals to be plotted with the default :ref:`signal </NXdata@signal-attribute>`.
+# These fields or links *must* exist and be direct children of this NXdata group.
+#
+# Each auxiliary signal needs to be of the same shape as the default signal.
+#
+# .. NIAC2018:
+# https://www.nexusformat.org/NIAC2018Minutes.html
+#
+#
+#
+#
+# .. 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 <validItemName>` 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.
+#
+#
+#
+#
+# .. index:: plotting
+#
+# Array of strings holding the :ref:`names <validItemName>` of
+# the independent data fields used in the default plot for all of
+# the dimensions of the :ref:`signal </NXdata@signal-attribute>`
+# as well as any :ref:`auxiliary signals </NXdata@auxiliary_signals-attribute>`.
+#
+# 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.
+#
+#
+#
+#
+#
+#
+# Each ``AXISNAME_indices`` attribute indicates the dependency
+# relationship of the ``AXISNAME`` field (where ``AXISNAME``
+# is the name of a field that exists in this ``NXdata`` group)
+# with one or more dimensions of the plottable data.
+#
+# Integer array that defines the indices of the *signal* field
+# (that field will be a multidimensional array)
+# which need to be used in the *AXISNAME* field in
+# order to reference the corresponding axis value.
+#
+# The first index of an array is ``0`` (zero).
+#
+# Here, *AXISNAME* is to be replaced by the name of each
+# field described in the ``axes`` attribute.
+# An example with 2-D data, :math:`d(t,P)`, will illustrate::
+#
+# data_2d:NXdata
+# @signal="data"
+# @axes=["time", "pressure"]
+# @time_indices=0
+# @pressure_indices=1
+# data: float[1000,20]
+# time: float[1000]
+# pressure: float[20]
+#
+# This attribute is to be provided in all situations.
+# However, if the indices attributes are missing
+# (such as for data files written before this specification),
+# file readers are encouraged to make their best efforts
+# to plot the data.
+# Thus the implementation of the
+# ``AXISNAME_indices`` attribute is based on the model of
+# "strict writer, liberal reader".
+#
+# .. note:: Attributes potentially containing multiple values
+# (axes and _indices) are to be written as string or integer arrays,
+# to avoid string parsing in reading applications.
+#
+#
+#
+#
+# Points to the path of a field defining the axis on which the ``AXISNAME`` axis depends.
+#
+# This concept allows to link an axis to a respective field in the NeXus hierarchy, thereby
+# defining the physical quantity it represents.
+#
+# Here, *AXISNAME* is to be replaced by the name of each
+# field described in the ``axes`` attribute.
+#
+# Examples:
+# If a calibration has been performed, ``@AXISNAME_depends`` links to the result of
+# that calibration:
+#
+# @AXISNAME_depends: '/entry/process/calibration/calibrated_axis'
+#
+# If the axis corresponds to a coordinate of a detector, ``@AXISNAME_depends`` links
+# to that detector axis:
+#
+# @AXISNAME_depends: '/entry/instrument/detector/axis/AXISNAME' for a 2D detector
+#
+# If the axis is a scanned motor, ``@AXISNAME_depends`` links to the transformation
+# describing the respective motion, e.g.:
+#
+# @AXISNAME_depends: '/entry/instrument/detector/transformations/AXISNAME' for a motion of the detector
+#
+#
+#
+#
+# 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.
+#
+#
+#
+# A *dimension scale* must have a rank of 1 and has length ``n``.
+#
+#
+#
+#
+#
+# Axis label
+#
+#
+#
+#
+# ``0|false``: single value,
+# ``1|true``: multiple values
+#
+#
+#
+#
+# Index of first good value
+#
+#
+#
+#
+# Index of last good value
+#
+#
+#
+#
+# Index (positive integer) identifying this specific set of numbers.
+#
+# N.B. The ``axis`` attribute is the old way of designating a link.
+# Do not use the ``axes`` attribute with the ``axis`` attribute.
+# The ``axes`` *group* attribute is now preferred.
+#
+#
+#
+#
+#
+# "Errors" (meaning *uncertainties* or *standard deviations*)
+# associated with any field named ``FIELDNAME`` in this ``NXdata``
+# group (e.g. an axis, signal or auxiliary signal).
+#
+# The dimensions of the ``FIELDNAME_errors`` field must match
+# the dimensions of the ``FIELDNAME`` field.
+#
+#
+#
+#
+# .. 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.
+#
+#
+#
+# The rank (``dataRank``) of the ``data`` must satisfy
+# ``1 <= dataRank <= NX_MAXRANK=32``.
+# At least one ``dim`` must have length ``n``.
+#
+#
+#
+#
+# .. index:: plotting
+#
+# Plottable (independent) axis, indicate index number.
+# Only one field in a :ref:`NXdata` group may have the
+# ``signal=1`` attribute.
+# Do not use the ``signal`` attribute with the ``axis`` attribute.
+#
+#
+#
+#
+# Defines the names of the dimension scales
+# (independent axes) for this data set
+# as a colon-delimited array.
+# NOTE: The ``axes`` attribute is the preferred
+# method of designating a link.
+# Do not use the ``axes`` attribute with the ``axis`` attribute.
+#
+#
+#
+#
+# data label
+#
+#
+#
+#
+#
+# Standard deviations of data values -
+# the data array is identified by the group attribute ``signal``.
+# The ``errors`` array must have the same dimensions as ``DATA``.
+# Client is responsible for defining the dimensions of the data.
+#
+#
+#
+# The ``errors`` must have
+# the same rank (``dataRank``)
+# as the ``data``.
+# At least one ``dim`` must have length "n".
+#
+#
+#
+#
+#
+# The elements in data are usually float values really. For
+# efficiency reasons these are usually stored as integers
+# after scaling with a scale factor. This value is the scale
+# factor. It is required to get the actual physical value,
+# when necessary.
+#
+#
+#
+#
+# An optional offset to apply to the values in data.
+#
+#
+#
+#
+# Title for the plot.
+#
+#
+#
+#
+# This is an array holding the values to use for the x-axis of
+# data. The units must be appropriate for the measurement.
+#
+#
+#
+#
+#
+#
+#
+# This is an array holding the values to use for the y-axis of
+# data. The units must be appropriate for the measurement.
+#
+#
+#
+#
+#
+#
+#
+# This is an array holding the values to use for the z-axis of
+# data. The units must be appropriate for the measurement.
+#
+#
+#
+#
+#
#
diff --git a/base_classes/nyaml/NXdetector.yaml b/base_classes/nyaml/NXdetector.yaml
index 4caf8ef6ed..12df646e15 100644
--- a/base_classes/nyaml/NXdetector.yaml
+++ b/base_classes/nyaml/NXdetector.yaml
@@ -36,12 +36,12 @@ type: group
\@axis:
type: NX_POSINT
deprecated: |
- see: https://github.com/nexusformat/definitions/issues/436
+ see: https://github.com/nexusformat/definitions/issues/436
enumeration: [3]
\@primary:
type: NX_POSINT
deprecated: |
- see: https://github.com/nexusformat/definitions/issues/436
+ see: https://github.com/nexusformat/definitions/issues/436
enumeration: [1]
\@long_name:
doc: |
@@ -116,12 +116,12 @@ type: group
\@axis:
type: NX_POSINT
deprecated: |
- see: https://github.com/nexusformat/definitions/issues/436
+ see: https://github.com/nexusformat/definitions/issues/436
enumeration: [1]
\@primary:
type: NX_POSINT
deprecated: |
- see: https://github.com/nexusformat/definitions/issues/436
+ see: https://github.com/nexusformat/definitions/issues/436
enumeration: [1]
\@long_name:
doc: |
@@ -137,12 +137,12 @@ type: group
\@axis:
type: NX_POSINT
deprecated: |
- see: https://github.com/nexusformat/definitions/issues/436
+ see: https://github.com/nexusformat/definitions/issues/436
enumeration: [2]
\@primary:
type: NX_POSINT
deprecated: |
- see: https://github.com/nexusformat/definitions/issues/436
+ see: https://github.com/nexusformat/definitions/issues/436
enumeration: [1]
\@long_name:
doc: |
@@ -158,12 +158,12 @@ type: group
\@axis:
type: NX_POSINT
deprecated: |
- see: https://github.com/nexusformat/definitions/issues/436
+ see: https://github.com/nexusformat/definitions/issues/436
enumeration: [3]
\@primary:
type: NX_POSINT
deprecated: |
- see: https://github.com/nexusformat/definitions/issues/436
+ see: https://github.com/nexusformat/definitions/issues/436
enumeration: [1]
\@long_name:
doc: |
@@ -730,6 +730,7 @@ type: group
unit: NX_UNITLESS
doc: |
Number of raw active elements in each dimension. Important for swept scans.
+ (NXfabrication):
(NXdata):
doc: |
raw data output from the detector
@@ -752,7 +753,7 @@ type: group
other component groups.
# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
-# 6b256ef0615dca7d8faf4a3bc04d3e62f29a1745e9cd35205e5f0bb9e2c6520c
+# cf337a792e12304ca6fa5767928b3a58b6527152c48a24d0406e227efc050cb7
#
#
#
-#
-# Parameters for controlling external conditions
+#
+#
+# Parameters for controlling external conditions
+#
#
-# Apparatus identification code/model number; e.g. OC100 011
+#
+# Apparatus identification code/model number; e.g. OC100 011
+#
#
#
-# Alternative short name, perhaps for dashboard display like a present Seblock name
+#
+# Alternative short name, perhaps for dashboard display like a present Seblock
+# name
+#
#
#
-# Type of apparatus. This could be the SE codes in scheduling database; e.g. OC/100
+#
+# Type of apparatus. This could be the SE codes in scheduling database; e.g.
+# OC/100
+#
#
#
-# Description of the apparatus; e.g. 100mm bore orange cryostat with Roots pump
+#
+# Description of the apparatus; e.g. 100mm bore orange cryostat with Roots pump
+#
#
#
-# Program controlling the apparatus; e.g. LabView VI name
+#
+# Program controlling the apparatus; e.g. LabView VI name
+#
#
#
#
@@ -96,25 +115,37 @@ NXenvironment(NXobject):
#
#
#
-# 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.
+# 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.
#
#
#
#
-# 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.
+# 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.
#
#
#
-# Additional information, LabView logs, digital photographs, etc
+#
+# Additional information, LabView logs, digital photographs, etc
+#
+#
+#
+#
+# Any actuator used to control the environment. This can be linked to an actuator
+# defined in an NXinstrument instance.
+#
+#
+#
+#
+# Any sensor used to monitor the environment. This can be linked to a sensor
+# defined in an NXinstrument instance.
+#
#
-#
#
-#
diff --git a/base_classes/nyaml/NXinstrument.yaml b/base_classes/nyaml/NXinstrument.yaml
index d943f5d625..55843e9061 100644
--- a/base_classes/nyaml/NXinstrument.yaml
+++ b/base_classes/nyaml/NXinstrument.yaml
@@ -16,26 +16,7 @@ NXinstrument(NXobject):
\@short_name:
doc: |
short name for instrument, perhaps the acronym
- energy_resolution(NX_FLOAT):
- unit: NX_ENERGY
- doc: |
- Energy resolution of the experiment (FWHM or gaussian broadening)
- momentum_resolution(NX_FLOAT):
- unit: NX_WAVENUMBER
- doc: |
- Momentum resolution of the experiment (FWHM)
- angular_resolution(NX_FLOAT):
- unit: NX_ANGLE
- doc: |
- Angular resolution of the experiment (FWHM)
- spatial_resolution(NX_FLOAT):
- unit: NX_LENGTH
- doc: |
- Spatial resolution of the experiment (Airy disk radius)
- temporal_resolution(NX_FLOAT):
- unit: NX_TIME
- doc: |
- Temporal resolution of the experiment (FWHM)
+ (NXactuator):
(NXaperture):
(NXattenuator):
(NXbeam):
@@ -49,6 +30,7 @@ NXinstrument(NXobject):
(NXdetector_group):
(NXdisk_chopper):
(NXevent_data):
+ (NXfabrication):
(NXfermi_chopper):
(NXfilter):
(NXflipper):
@@ -59,6 +41,8 @@ NXinstrument(NXobject):
(NXmonochromator):
(NXpolarizer):
(NXpositioner):
+ (NXsensor):
+ (NXresolution):
(NXsource):
(NXtransformations)DIFFRACTOMETER:
(NXvelocity_selector):
@@ -76,14 +60,14 @@ NXinstrument(NXobject):
for a summary of the discussion.
# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
-# 331d6037bd4c05402a42cab90e3df4c3115b21231d57ef54b1221e1ed859584d
-#
+# e89eac143a0a1145377ca71b55368c7158a95b46f8a784ded37cc17e3c23046a
+#
#
#
-#
-# Definition of the root NeXus group.
+#
+#
+# Definition of the root NeXus group.
+#
#
#
-# The root of any NeXus data file is an ``NXroot`` class
-# (no other choice is allowed for a valid NeXus data file).
-# This attribute cements that definition.
+# The root of any NeXus data file is an ``NXroot`` class
+# (no other choice is allowed for a valid NeXus data file).
+# This attribute cements that definition.
#
#
-#
+#
#
#
#
-# Date and time file was originally created
+#
+# Date and time file was originally created
+#
#
#
-# File name of original NeXus file
+#
+# File name of original NeXus file
+#
#
#
-# Date and time of last file change at close
+#
+# Date and time of last file change at close
+#
#
#
#
-# Version of NeXus API used in writing the file.
-#
-# Only used when the NAPI has written the file.
-# Note that this is different from the version of the
-# base class or application definition version number.
+# Version of NeXus API used in writing the file.
+#
+# Only used when the NAPI has written the file.
+# Note that this is different from the version of the
+# base class or application definition version number.
+#
+#
+#
+#
+# A list of concepts in an application definition this file describes.
+# This is for partially filling an application definition.
+# If this attribute is not present the application definition is assumed
+# to be valid, if not the specified concepts/paths are assumed to be valid.
#
#
#
-# Version of HDF (version 4) library used in writing the file
+#
+# Version of HDF (version 4) library used in writing the file
+#
#
#
#
-# Version of HDF5 library used in writing the file.
-#
-# Note this attribute is spelled with uppercase "V",
-# different than other version attributes.
+# Version of HDF5 library used in writing the file.
+#
+# Note this attribute is spelled with uppercase "V",
+# different than other version attributes.
#
#
#
-# Version of XML support library used in writing the XML file
+#
+# Version of XML support library used in writing the XML file
+#
#
#
-# Version of h5py Python package used in writing the file
+#
+# Version of h5py Python package used in writing the file
+#
#
#
-# facility or program where file originated
+#
+# facility or program where file originated
+#
#
#
-# Version of facility or program used in writing the file
+#
+# Version of facility or program used in writing the file
+#
#
-#
-# entries
+#
+#
+# entries
+#
#
#
#
-# .. index:: find the default plottable data
-# .. index:: plotting
-# .. index:: default attribute value
-#
-# Declares which :ref:`NXentry` group contains
-# the data to be shown by default.
-# It is used to resolve ambiguity when
-# more than one :ref:`NXentry` group exists.
-# The value :ref:`names <validItemName>` the default :ref:`NXentry` group. The
-# value must be the name of a child of the current group. The child must be a
-# NeXus group or a link to a NeXus group.
-#
-# It is recommended (as of NIAC2014) to use this attribute
-# to help define the path to the default dataset to be plotted.
-# See https://www.nexusformat.org/2014_How_to_find_default_data.html
-# for a summary of the discussion.
+# .. index:: find the default plottable data
+# .. index:: plotting
+# .. index:: default attribute value
+#
+# Declares which :ref:`NXentry` group contains
+# the data to be shown by default.
+# It is used to resolve ambiguity when
+# more than one :ref:`NXentry` group exists.
+# The value :ref:`names <validItemName>` the default :ref:`NXentry` group. The
+# value must be the name of a child of the current group. The child must be a
+# NeXus group or a link to a NeXus group.
+#
+# It is recommended (as of NIAC2014) to use this attribute
+# to help define the path to the default dataset to be plotted.
+# See https://www.nexusformat.org/2014_How_to_find_default_data.html
+# for a summary of the discussion.
#
#
#
-#
diff --git a/base_classes/nyaml/NXsample.yaml b/base_classes/nyaml/NXsample.yaml
index dd8c7a7890..10e80fc495 100644
--- a/base_classes/nyaml/NXsample.yaml
+++ b/base_classes/nyaml/NXsample.yaml
@@ -319,6 +319,10 @@ NXsample(NXobject):
# exists: ['min', '0']
doc: |
This group describes the shape of the sample
+ physical_form:
+ doc: |
+ Physical form of the sample material.
+ Examples include single crystal, foil, pellet, powder, thin film, disc, foam, gas, liquid, amorphous.
(NXsingle_crystal):
doc: |
If the sample is a single crystal, add description of single crystal and unit
@@ -376,7 +380,7 @@ NXsample(NXobject):
other component groups.
# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
-# 359e67b69525d94347bd6db9aa776e2c77b3e87b9a30b4d6a3e90ec29253c59c
+# ac20245dbd19e3a8e9c8a002a60f8cb13541fe586265ecf52a72e691b1f28fe2
#
#
#
-#
-#
-# A sensor used to monitor an external condition
-#
-# The condition itself is described in :ref:`NXenvironment`.
-#
-#
-# Sensor identification code/model number
-#
-#
-# Name for the sensor
-#
-#
-# Short name of sensor used e.g. on monitor display program
-#
-#
-# where sensor is attached to ("sample" | "can")
-#
-#
-#
-# Defines the axes for logged vector quantities if they are not the global instrument axes.
-#
-#
-#
-# name for measured signal
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-# The type of hardware used for the measurement.
-# Examples (suggestions but not restrictions):
-#
-# :Temperature:
-# J | K | T | E | R | S | Pt100 | Rh/Fe
-# :pH:
-# Hg/Hg2Cl2 | Ag/AgCl | ISFET
-# :Ion selective electrode:
-# specify species; e.g. Ca2+
-# :Magnetic field:
-# Hall
-# :Surface pressure:
-# wilhelmy plate
-#
-#
-#
-#
-# Is data collection controlled or synchronised to this quantity:
-# 1=no, 0=to "value", 1=to "value_deriv1", etc.
-#
-#
-#
-#
-# Upper control bound of sensor reading if using run_control
-#
-#
-#
-#
-# Lower control bound of sensor reading if using run_control
-#
-#
-#
-#
-# nominal setpoint or average value
-# - need [n] as may be a vector
-#
-#
-#
-#
-#
-#
-#
-# Nominal/average first derivative of value
-# e.g. strain rate
-# - same dimensions as "value" (may be a vector)
-#
-#
-#
-#
-#
-#
-#
-# Nominal/average second derivative of value
-# - same dimensions as "value" (may be a vector)
-#
-#
-#
-#
-#
-#
-# Time history of sensor readings
-#
-#
-# Time history of first derivative of sensor readings
-#
-#
-# Time history of second derivative of sensor readings
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-# For complex external fields not satisfied by External_field_brief
-#
-#
-#
-# This group describes the shape of the sensor when necessary.
-#
-#
+#
+#
+# A sensor used to monitor an external condition
+#
+# The condition itself is described in :ref:`NXenvironment`.
+#
+#
+#
+# Sensor identification code/model number
+#
+#
+#
+#
+# Name for the sensor
+#
+#
+#
+#
+# Short name of sensor used e.g. on monitor display program
+#
+#
+#
+#
+# where sensor is attached to ("sample" | "can")
+#
+#
+#
+#
+# Defines the axes for logged vector quantities if they are not the global
+# instrument axes.
+#
+#
+#
+#
+# name for measured signal
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# The type of hardware used for the measurement.
+# Examples (suggestions but not restrictions):
+#
+# :Temperature:
+# J | K | T | E | R | S | Pt100 | Rh/Fe
+# :pH:
+# Hg/Hg2Cl2 | Ag/AgCl | ISFET
+# :Ion selective electrode:
+# specify species; e.g. Ca2+
+# :Magnetic field:
+# Hall
+# :Surface pressure:
+# wilhelmy plate
+#
+#
+#
+#
+# Is data collection controlled or synchronised to this quantity:
+# 1=no, 0=to "value", 1=to "value_deriv1", etc.
+#
+#
+#
+#
+# Upper control bound of sensor reading if using run_control
+#
+#
+#
+#
+# Lower control bound of sensor reading if using run_control
+#
+#
+#
+#
+# nominal setpoint or average value
+# - need [n] as may be a vector
+#
+#
+#
+#
+#
+#
+#
+# Nominal/average first derivative of value
+# e.g. strain rate
+# - same dimensions as "value" (may be a vector)
+#
+#
+#
+#
+#
+#
+#
+# Nominal/average second derivative of value
+# - same dimensions as "value" (may be a vector)
+#
+#
+#
+#
+#
+#
+#
+# Time history of sensor readings
+#
+#
+#
+#
+# Time history of first derivative of sensor readings
+#
+#
+#
+#
+# Time history of second derivative of sensor readings
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# For complex external fields not satisfied by External_field_brief
+#
+#
+#
+#
+# This group describes the shape of the sensor when necessary.
+#
+#
+#
#
#
-# .. index:: plotting
-#
-# Declares which child group contains a path leading
-# to a :ref:`NXdata` group.
-#
-# It is recommended (as of NIAC2014) to use this attribute
-# to help define the path to the default dataset to be plotted.
-# See https://www.nexusformat.org/2014_How_to_find_default_data.html
-# for a summary of the discussion.
+# .. index:: plotting
+#
+# Declares which child group contains a path leading
+# to a :ref:`NXdata` group.
+#
+# It is recommended (as of NIAC2014) to use this attribute
+# to help define the path to the default dataset to be plotted.
+# See https://www.nexusformat.org/2014_How_to_find_default_data.html
+# for a summary of the discussion.
#
#
#
#
-# 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.
-#
-# .. todo::
-# Add a definition for the reference point of a sensor.
-#
+# 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.
+#
+# .. todo::
+# Add a definition for the reference point of a sensor.
#
#
#
#
-# 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.
+# 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.
#
#
#
-#
diff --git a/base_classes/nyaml/NXsource.yaml b/base_classes/nyaml/NXsource.yaml
index 9c4ec8e26d..96788835f7 100644
--- a/base_classes/nyaml/NXsource.yaml
+++ b/base_classes/nyaml/NXsource.yaml
@@ -1,6 +1,9 @@
category: base
doc: |
- The neutron or x-ray storage ring/facility.
+ 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.
type: group
NXsource(NXobject):
distance(NX_FLOAT):
@@ -22,7 +25,7 @@ NXsource(NXobject):
probe:
doc: |
type of radiation probe (pick one from the enumerated list and spell exactly)
- enumeration: [neutron, x-ray, muon, electron, ultraviolet, visible light, positron, proton]
+ enumeration: [neutron, photon, x-ray, muon, electron, ultraviolet, visible light, positron, proton]
power(NX_FLOAT):
unit: NX_POWER
doc: |
@@ -162,11 +165,12 @@ NXsource(NXobject):
Use the field `depends_on` and :ref:`NXtransformations` to position the source and NXoff_geometry to describe its shape instead
doc: |
"Engineering" location of source.
+ (NXfabrication):
(NXoff_geometry):
exists: ['min', '0']
doc: |
This group describes the shape of the beam line component
- (NXdata)distribution:
+ distribution(NXdata):
doc: |
The wavelength or energy distribution of the source
\@default:
@@ -202,14 +206,14 @@ NXsource(NXobject):
other component groups.
# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
-# 19f1ee4e446868766ab035145a5835ce38e26b04d8e8ee50bf641392cb5c3525
-#
+# 0a6a307ccc9631e05a65861861127ee26e09fdb3e8b72eaa99bcc24fb0572d39
+#
#
#
#
#
-# The neutron or x-ray storage ring/facility.
+# 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.
#
#
#
@@ -273,6 +280,7 @@ NXsource(NXobject):
#
#
#
+#
#
#
#
@@ -467,15 +475,16 @@ NXsource(NXobject):
#
#
#
-# "Engineering" location of source.
+# "Engineering" location of source.
#
#
+#
#
#
# This group describes the shape of the beam line component
#
#
-#
+#
#
# The wavelength or energy distribution of the source
#
@@ -499,7 +508,7 @@ NXsource(NXobject):
# 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
+# string "." if located in the origin. Usually these operations are stored in a
# NXtransformations group. But NeXus allows them to be stored anywhere.
#
# The reference point of the source plane is its center in the x and y axis. The source is considered infinitely thin in the
diff --git a/contributed_definitions/NXactuator.nxdl.xml b/contributed_definitions/NXactuator.nxdl.xml
new file mode 100644
index 0000000000..e647a7fb82
--- /dev/null
+++ b/contributed_definitions/NXactuator.nxdl.xml
@@ -0,0 +1,114 @@
+
+
+
+
+
+ An actuator used to control an external condition.
+
+ The condition itself is described in :ref:`NXenvironment`.
+
+
+
+ Actuator identification code/model number
+
+
+
+
+ Name of the actuator
+
+
+
+
+ Short name of actuator used e.g. on monitor display program
+
+
+
+
+ Describe where the actuator is attached to.
+ This could be an instance of NXsample or a device on NXinstrument.
+
+
+
+
+ Name for the physical quantity effected by the actuation
+
+ Examples:
+ temperature | pH | magnetic_field | electric_field | current | conductivity | resistance | voltage |
+ pressure | flow | stress | strain | shear | surface_pressure
+
+
+
+
+ The type of hardware used for the actuation.
+
+ Examples (suggestions, but not restrictions):
+
+ :Temperature: laser | gas lamp | filament | resistive
+ :Pressure: anvil cell
+ :Voltage: potentiostat
+
+
+
+
+ Any output that the actuator produces.
+ For example, a heater can have the field heater_power(NX_FLOAT).
+
+
+
+
+ Time history of actuator outputs.
+
+
+
+
+ If the actuator is PID-controlled, the settings of the PID controller can be
+ stored here.
+
+
+
+ Nominal actuator setpoint.
+ Can be a scalar or a vector (of [n] actuations).
+
+
+
+
+ Time history of actuator setpoints.
+
+
+
+
+
+ Refers to the last transformation specifying the position of the actuator
+ in the NXtransformations chain.
+
+
+
+
+ This is the group recommended for holding the chain of translation
+ and rotation operations necessary to position the actuator within
+ the instrument. The dependency chain may however traverse similar groups in
+ other component groups.
+
+
+
+
diff --git a/contributed_definitions/NXcalibration.nxdl.xml b/contributed_definitions/NXcalibration.nxdl.xml
index 2cd3adaf23..d4d3ed8925 100644
--- a/contributed_definitions/NXcalibration.nxdl.xml
+++ b/contributed_definitions/NXcalibration.nxdl.xml
@@ -31,11 +31,6 @@
Number of coefficients of the calibration function
-
-
- Number of features used to fit the calibration function
-
-
Number of points of the calibrated and uncalibrated axes
@@ -52,15 +47,14 @@
- A digital persistent identifier (e.g., doi, ISO standard) referring to a detailed description of a
+ A digital persistent identifier (e.g., DOI, ISO standard) referring to a detailed description of a
calibration method but no actual calibration data.
- A digital persistent identifier (e.g., a doi) referring to a
- publicly available calibration measurement used for this instrument
- , e.g., a measurement of a known standard containing calibration information.
+ A digital persistent identifier (e.g., a DOI) referring to a publicly available calibration measurement
+ used for this instrument, e.g., a measurement of a known standard containing calibration information.
The axis values may be copied or linked in the appropriate NXcalibration fields for reference.
@@ -69,7 +63,7 @@
A file serialisation of a calibration which may not be publicly available (externally from the nexus file).
This metadata can be a documentation of the source (file) or database (entry) from which pieces
- of information have been extracted for consumption in e.g. a research data management system (RDMS).
+ of information have been extracted for consumption (e.g. in a research data management system (RDMS)).
It is also possible to include the actual file by using the `file` field.
The axis values may be copied or linked in the appropriate NXcalibration fields for reference.
@@ -166,7 +160,7 @@
This should yield the relation `calibrated_axis` = `scaling` * `original_axis` + `offset`.
-
+
Mapping data for calibration.
@@ -188,4 +182,10 @@
+
+
+ Any data acquired/used during the calibration that does not fit the `NX_FLOAT` fields above.
+ NXdata groups can be used for multidimensional data which are relevant to the calibration
+
+
diff --git a/contributed_definitions/NXcollectioncolumn.nxdl.xml b/contributed_definitions/NXcollectioncolumn.nxdl.xml
index 3117648c3a..93c6c6ba3e 100644
--- a/contributed_definitions/NXcollectioncolumn.nxdl.xml
+++ b/contributed_definitions/NXcollectioncolumn.nxdl.xml
@@ -1,10 +1,10 @@
-
+
+
+
+ :ref:`NXdata_mpes` describes the plottable data and related dimension scales in MPES
+ experiments.
+
+ It extends the NXdata class and provides a glossary of explicitly named axis names
+ which are typical for MPES data.
+
+
+
+ Calibrated energy axis.
+
+ This could be a link to either
+ /entry/process/energy_calibration/calibrated_axis or
+ /entry/process/energy_correction/calibrated_axis.
+
+
+
+ The energy can be either stored as kinetic or as binding energy.
+
+
+ -
+
+ Calibrated kinetic energy axis.
+
+ This concept is related to term `3.35`_ of the ISO 18115-1:2023 standard.
+
+ .. _3.35: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:3.35
+
+
+ -
+
+ Calibrated binding energy axis.
+
+ This concept is related to term `12.16`_ of the ISO 18115-1:2023 standard.
+
+ .. _12.16: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+
+
+
+
+
+
+
+
+
+ Calibrated x axis in k-space.
+ Units are 1/Angström.
+
+
+
+
+
+
+ Calibrated y axis in k-space.
+ Units are 1/Angström
+
+
+
+
+
+
+ Calibrated z axis in k-space.
+ Units are 1/Angström.
+
+
+
+
+
+
+ Fast-axis angular coordinate (or second slow axis if angularly integrated).
+
+
+
+
+
+
+ Slow-axis angular coordinate (or second fast axis if simultaneously dispersed in
+ 2 dimensions)
+
+
+
+
+
+
+ Fast-axis spatial coordinate (or second slow axis if spatially integrated)
+
+
+
+
+
+
+ Slow-axis spatial coordinate (or second fast axis if simultaneously dispersed in
+ 2 dimensions)
+
+
+
+
+
+
+ Calibrated delay time.
+
+
+
+
+
+
+ Linear polarization angle of the incoming or outgoing beam.
+
+ Could be a link to /entry/instrument/beam/incident_polarization_angle or
+ /entry/instrument/beam/final_polarization_angle if they exist.
+
+
+
+
+
+
+ Ellipticity of the incoming or outgoing beam.
+
+ Can be any of linear polarization angle (degrees), ellipticity (arb. units).
+ Could be a link to /entry/instrument/beam/incident_ellipticity or
+ /entry/instrument/beam/final_ellipticity if they exist.
+
+
+
+
+
diff --git a/contributed_definitions/NXdata_mpes_detector.nxdl.xml b/contributed_definitions/NXdata_mpes_detector.nxdl.xml
new file mode 100644
index 0000000000..c681b95425
--- /dev/null
+++ b/contributed_definitions/NXdata_mpes_detector.nxdl.xml
@@ -0,0 +1,189 @@
+
+
+
+
+
+ :ref:`NXdata_mpes_detector` describes the plottable data and related dimension scales
+ for raw detector data in MPES experiments.
+
+ It extends the NXdata class and provides a glossary of explicitly named axis names
+ which are typical for raw MPES data.
+
+
+
+
+
+
+
+
+ Raw data before calibration.
+
+
+
+
+ Detector pixel in x direction.
+
+
+
+
+
+
+ Detector pixel in y direction.
+
+
+
+
+
+
+ (Un)calibrated energy axis.
+
+
+
+ The energy can be either stored as kinetic or as binding energy.
+
+
+ -
+
+ (Un)calibrated kinetic energy axis.
+
+ This concept is related to term `3.35`_ of the ISO 18115-1:2023 standard.
+
+ .. _3.35: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:3.35
+
+
+ -
+
+ (Un)calibrated binding energy axis.
+
+ This concept is related to term `12.16`_ of the ISO 18115-1:2023 standard.
+
+ .. _12.16: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+
+
+
+
+
+
+
+
+
+ (Un)calibrated x axis in k-space.
+ Units are 1/Angström.
+
+
+
+
+
+
+ (Un)calibrated y axis in k-space.
+ Units are 1/Angström
+
+
+
+
+
+
+ (Un)calibrated z axis in k-space.
+ Units are 1/Angström.
+
+
+
+
+
+
+ Fast-axis angular coordinate (or second slow axis if angularly integrated).
+
+
+
+
+
+
+ Slow-axis angular coordinate (or second fast axis if simultaneously dispersed in two
+ dimensions)
+
+
+
+
+
+
+ Fast-axis spatial coordinate (or second slow axis if spatially integrated)
+
+
+
+
+
+
+ Slow-axis spatial coordinate (or second fast axis if simultaneously dispersed in two
+ dimensions)
+
+
+
+
+
+
+
+ Total time of flight
+
+
+
+
+
+
+ Time-of-flight values, analog-to-digital converted.
+
+
+
+
+
+
+ (Un)calibrated delay time.
+
+
+
+
+
+
+ Linear polarization angle of the incoming or outgoing beam.
+
+
+
+
+
+
+ Ellipticity of the incoming or outgoing beam.
+
+
+
+
+
+
+ Describes an axis which is coming from outside the detectors scope.
+
+ Think of a detector just being triggered for readout by the rest of the experimental
+ setup - it would just know that it collected N images, which would flatten the external
+ parameters to one axis, too.
+ This can then be linked, e.g. with NXcalibration, to the appropriate fields in the instrument
+ and write it to the top-level NXdata.
+
+
+
diff --git a/contributed_definitions/NXelectron_level.nxdl.xml b/contributed_definitions/NXelectron_level.nxdl.xml
new file mode 100644
index 0000000000..b39e0fd721
--- /dev/null
+++ b/contributed_definitions/NXelectron_level.nxdl.xml
@@ -0,0 +1,918 @@
+
+
+
+
+
+ Electronic level probed in X-ray spectroscopy or resonance experiments.
+
+
+
+ Symbol of the chemical element.
+
+ For each, the atomic number, common English name, and standard atomic weight are also given.
+
+
+ -
+
+ Z=1, name="hydrogen", standard_atomic_weight=1.0078
+
+
+ -
+
+ Z=2, name="helium", standard_atomic_weight=4.0026
+
+
+ -
+
+ Z=3, name="lithium", standard_atomic_weight=6.94
+
+
+ -
+
+ Z=4, name="beryllium", standard_atomic_weight=9.0122
+
+
+ -
+
+ Z=5, name="boron", standard_atomic_weight=10.81
+
+
+ -
+
+ Z=6, name="carbon", standard_atomic_weight=12.011
+
+
+ -
+
+ Z=7, name="nitrogen", standard_atomic_weight=14.007
+
+
+ -
+
+ Z=8, name="oxygen", standard_atomic_weight=15.999
+
+
+ -
+
+ Z=9, name="fluorine", standard_atomic_weight=18.9984
+
+
+ -
+
+ Z=10, name="neon", standard_atomic_weight=20.1797
+
+
+ -
+
+ Z=11, name="sodium", standard_atomic_weight=22.9898
+
+
+ -
+
+ Z=12, name="magnesium", standard_atomic_weight=24.305
+
+
+ -
+
+ Z=13, name="aluminum", standard_atomic_weight=26.9815
+
+
+ -
+
+ Z=14, name="silicon", standard_atomic_weight=28.085
+
+
+ -
+
+ Z=15, name="phosphorus", standard_atomic_weight=30.9738
+
+
+ -
+
+ Z=16, name="sulfur", standard_atomic_weight=32.06
+
+
+ -
+
+ Z=17, name="chlorine", standard_atomic_weight=35.453
+
+
+ -
+
+ Z=18, name="argon", standard_atomic_weight=39.948
+
+
+ -
+
+ Z=19, name="potassium", standard_atomic_weight=39.0983
+
+
+ -
+
+ Z=20, name="calcium", standard_atomic_weight=40.078
+
+
+ -
+
+ Z=21, name="scandium", standard_atomic_weight=44.9559
+
+
+ -
+
+ Z=22, name="titanium", standard_atomic_weight=47.867
+
+
+ -
+
+ Z=23, name="vanadium", standard_atomic_weight=50.9415
+
+
+ -
+
+ Z=24, name="chromium", standard_atomic_weight=51.996
+
+
+ -
+
+ Z=25, name="manganese", standard_atomic_weight=54.938
+
+
+ -
+
+ Z=26, name="iron", standard_atomic_weight=55.845
+
+
+ -
+
+ Z=27, name="cobalt", standard_atomic_weight=58.9332
+
+
+ -
+
+ Z=28, name="nickel", standard_atomic_weight=58.6934
+
+
+ -
+
+ Z=29, name="copper", standard_atomic_weight=63.546
+
+
+ -
+
+ Z=30, name="zinc", standard_atomic_weight=65.38
+
+
+ -
+
+ Z=31, name="gallium", standard_atomic_weight=69.72
+
+
+ -
+
+ Z=32, name="germanium", standard_atomic_weight=72.63
+
+
+ -
+
+ Z=33, name="arsenic", standard_atomic_weight=74.9216
+
+
+ -
+
+ Z=34, name="selenium", standard_atomic_weight=78.971
+
+
+ -
+
+ Z=35, name="bromine", standard_atomic_weight=79.904
+
+
+ -
+
+ Z=36, name="krypton", standard_atomic_weight=83.798
+
+
+ -
+
+ Z=37, name="rubidium", standard_atomic_weight=85.4678
+
+
+ -
+
+ Z=38, name="strontium", standard_atomic_weight=87.62
+
+
+ -
+
+ Z=39, name="yttrium", standard_atomic_weight=88.9058
+
+
+ -
+
+ Z=40, name="zirconium", standard_atomic_weight=91.224
+
+
+ -
+
+ Z=41, name="niobium", standard_atomic_weight=92.9064
+
+
+ -
+
+ Z=42, name="molybdenum", standard_atomic_weight=95.95
+
+
+ -
+
+ Z=43, name="technetium", standard_atomic_weight=97.907
+
+
+ -
+
+ Z=44, name="ruthenium", standard_atomic_weight=101.07
+
+
+ -
+
+ Z=45, name="rhodium", standard_atomic_weight=102.906
+
+
+ -
+
+ Z=46, name="palladium", standard_atomic_weight=106.42
+
+
+ -
+
+ Z=47, name="silver", standard_atomic_weight=107.868
+
+
+ -
+
+ Z=48, name="cadmium", standard_atomic_weight=112.414
+
+
+ -
+
+ Z=49, name="indium", standard_atomic_weight=114.818
+
+
+ -
+
+ Z=50, name="tin", standard_atomic_weight=118.71
+
+
+ -
+
+ Z=51, name="antimony", standard_atomic_weight=121.76
+
+
+ -
+
+ Z=52, name="tellurium", standard_atomic_weight=127.6
+
+
+ -
+
+ Z=53, name="iodine", standard_atomic_weight=126.905
+
+
+ -
+
+ Z=54, name="xenon", standard_atomic_weight=131.293
+
+
+ -
+
+ Z=55, name="cesium", standard_atomic_weight=132.905
+
+
+ -
+
+ Z=56, name="barium", standard_atomic_weight=137.327
+
+
+ -
+
+ Z=57, name="lanthanum", standard_atomic_weight=138.905
+
+
+ -
+
+ Z=58, name="cerium", standard_atomic_weight=140.116
+
+
+ -
+
+ Z=59, name="praseodymium", standard_atomic_weight=140.908
+
+
+ -
+
+ Z=60, name="neodymium", standard_atomic_weight=144.242
+
+
+ -
+
+ Z=61, name="promethium", standard_atomic_weight=145.0
+
+
+ -
+
+ Z=62, name="samarium", standard_atomic_weight=150.36
+
+
+ -
+
+ Z=63, name="europium", standard_atomic_weight=151.96
+
+
+ -
+
+ Z=64, name="gadolinium", standard_atomic_weight=157.25
+
+
+ -
+
+ Z=65, name="terbium", standard_atomic_weight=158.925
+
+
+ -
+
+ Z=66, name="dysprosium", standard_atomic_weight=162.5
+
+
+ -
+
+ Z=67, name="holmium", standard_atomic_weight=164.93
+
+
+ -
+
+ Z=68, name="erbium", standard_atomic_weight=167.259
+
+
+ -
+
+ Z=69, name="thulium", standard_atomic_weight=168.934
+
+
+ -
+
+ Z=70, name="ytterbium", standard_atomic_weight=173.045
+
+
+ -
+
+ Z=71, name="lutetium", standard_atomic_weight=174.967
+
+
+ -
+
+ Z=72, name="hafnium", standard_atomic_weight=178.49
+
+
+ -
+
+ Z=73, name="tantalum", standard_atomic_weight=180.948
+
+
+ -
+
+ Z=74, name="tungsten", standard_atomic_weight=183.84
+
+
+ -
+
+ Z=75, name="rhenium", standard_atomic_weight=186.207
+
+
+ -
+
+ Z=76, name="osmium", standard_atomic_weight=190.23
+
+
+ -
+
+ Z=77, name="iridium", standard_atomic_weight=192.217
+
+
+ -
+
+ Z=78, name="platinum", standard_atomic_weight=195.084
+
+
+ -
+
+ Z=79, name="gold", standard_atomic_weight=196.967
+
+
+ -
+
+ Z=80, name="mercury", standard_atomic_weight=200.592
+
+
+ -
+
+ Z=81, name="thallium", standard_atomic_weight=204.383
+
+
+ -
+
+ Z=82, name="lead", standard_atomic_weight=207.2
+
+
+ -
+
+ Z=83, name="bismuth", standard_atomic_weight=208.98
+
+
+ -
+
+ Z=84, name="polonium", standard_atomic_weight=209.0
+
+
+ -
+
+ Z=85, name="astatine", standard_atomic_weight=210.0
+
+
+ -
+
+ Z=86, name="radon", standard_atomic_weight=222.0
+
+
+ -
+
+ Z=87, name="francium", standard_atomic_weight=223.0
+
+
+ -
+
+ Z=88, name="radium", standard_atomic_weight=226.0
+
+
+ -
+
+ Z=89, name="actinium", standard_atomic_weight=227.0
+
+
+ -
+
+ Z=90, name="thorium", standard_atomic_weight=232.038
+
+
+ -
+
+ Z=91, name="protactinium", standard_atomic_weight=231.036
+
+
+ -
+
+ Z=92, name="uranium", standard_atomic_weight=238.029
+
+
+ -
+
+ Z=93, name="neptunium", standard_atomic_weight=237.048
+
+
+ -
+
+ Z=94, name="plutonium", standard_atomic_weight=239.052
+
+
+ -
+
+ Z=95, name="americium", standard_atomic_weight=243.0
+
+
+ -
+
+ Z=96, name="curium", standard_atomic_weight=247.0
+
+
+ -
+
+ Z=97, name="berkelium", standard_atomic_weight=247.0
+
+
+ -
+
+ Z=98, name="californium", standard_atomic_weight=251.0
+
+
+ -
+
+ Z=99, name="einsteinium", standard_atomic_weight=252
+
+
+ -
+
+ Z=100, name="fermium", standard_atomic_weight=257
+
+
+ -
+
+ Z=101, name="mendelevium", standard_atomic_weight=258
+
+
+ -
+
+ Z=102, name="nobelium", standard_atomic_weight=259
+
+
+ -
+
+ Z=103, name="lawrencium", standard_atomic_weight=266
+
+
+ -
+
+ Z=104, name="rutherfordium", standard_atomic_weight=267
+
+
+ -
+
+ Z=105, name="dubnium", standard_atomic_weight=268
+
+
+ -
+
+ Z=106, name="seaborgium", standard_atomic_weight=269
+
+
+ -
+
+ Z=107, name="bohrium", standard_atomic_weight=270
+
+
+ -
+
+ Z=108, name="hassium", standard_atomic_weight=269
+
+
+ -
+
+ Z=109, name="meitnerium", standard_atomic_weight=278
+
+
+ -
+
+ Z=110, name="darmstadtium", standard_atomic_weight=281
+
+
+ -
+
+ Z=111, name="roentgenium", standard_atomic_weight=282
+
+
+ -
+
+ Z=112, name="copernicium", standard_atomic_weight=285
+
+
+ -
+
+ Z=113, name="nihonium", standard_atomic_weight=286
+
+
+ -
+
+ Z=114, name="flerovium", standard_atomic_weight=289
+
+
+ -
+
+ Z=115, name="moscovium", standard_atomic_weight=290
+
+
+ -
+
+ Z=116, name="livermorium", standard_atomic_weight=293
+
+
+ -
+
+ Z=117, name="tennessine", standard_atomic_weight=294
+
+
+ -
+
+ Z=118, name="oganesson", standard_atomic_weight=294
+
+
+
+
+
+
+ IUPAC symbol of the electronic level.
+ For each level, the electronic orbital configuration is also given
+
+ For reference, see Jenkins, R., Manne, R., Robin, R., & Senemaud, C. (1991).
+ IUPAC—nomenclature system for x-ray spectroscopy. X-Ray Spectrometry, 20(3), 149-155.
+
+
+ -
+
+ same as 1s in level_xray
+
+
+ -
+
+ 2s
+
+
+ -
+
+ 2p_{1/2}
+
+
+ -
+
+ 2p_{3/2}
+
+
+ -
+
+ 3s
+
+
+ -
+
+ 3p_{1/2}
+
+
+ -
+
+ 3p_{3/2}
+
+
+ -
+
+ 3d_{3/2}
+
+
+ -
+
+ 3d_{5/2}
+
+
+ -
+
+ 4s
+
+
+ -
+
+ 4p_{1/2}
+
+
+ -
+
+ 4p_{3/2}
+
+
+ -
+
+ 4d_{3/2}
+
+
+ -
+
+ 4d_{5/2}
+
+
+ -
+
+ 4f_{5/2}
+
+
+ -
+
+ 4f_{7/2}
+
+
+ -
+
+ 5s
+
+
+ -
+
+ 5p_{1/2}
+
+
+ -
+
+ 5p_{3/2}
+
+
+ -
+
+ 5d_{3/2}
+
+
+ -
+
+ 5d_{5/2}
+
+
+ -
+
+ 5f_{5/2}
+
+
+ -
+
+ 5f_{7/2}
+
+
+ -
+
+ 6s
+
+
+ -
+
+ 6p_{1/2}
+
+
+ -
+
+ 6p_{3/2}
+
+
+
+
+
+
+ Electronic orbital configuration of the electronic level.
+
+
+ -
+
+ same as K in level_xray
+
+
+ -
+
+ L1
+
+
+ -
+
+ L3
+
+
+ -
+
+ M1
+
+
+ -
+
+ M2
+
+
+ -
+
+ M3
+
+
+ -
+
+ M4
+
+
+ -
+
+ M5
+
+
+ -
+
+ N1
+
+
+ -
+
+ N2
+
+
+ -
+
+ N3
+
+
+ -
+
+ N4
+
+
+ -
+
+ N5
+
+
+ -
+
+ N6
+
+
+ -
+
+ N7
+
+
+ -
+
+ O1
+
+
+ -
+
+ O2
+
+
+ -
+
+ O3
+
+
+ -
+
+ O4
+
+
+ -
+
+ O5
+
+
+ -
+
+ O6
+
+
+ -
+
+ O7
+
+
+ -
+
+ P1
+
+
+ -
+
+ P2
+
+
+ -
+
+ P3
+
+
+
+
+
+
+ description of X-ray electronic level
+
+
+
+
+ .. index:: plotting
+
+ Declares which child group contains a path leading
+ to a :ref:`NXdata` group.
+
+ It is recommended (as of NIAC2014) to use this attribute
+ to help define the path to the default dataset to be plotted.
+ See https://www.nexusformat.org/2014_How_to_find_default_data.html
+ for a summary of the discussion.
+
+
+
diff --git a/contributed_definitions/NXelectronanalyser.nxdl.xml b/contributed_definitions/NXelectronanalyser.nxdl.xml
index 821edaae2d..633920ace2 100644
--- a/contributed_definitions/NXelectronanalyser.nxdl.xml
+++ b/contributed_definitions/NXelectronanalyser.nxdl.xml
@@ -1,10 +1,10 @@
-
+
-
+
The symbols used in the schema to specify e.g. dimensions of arrays
@@ -37,9 +37,18 @@
Number of slow axes (axes acquired scanning a physical quantity)
+
+
+ Number of data points in the transmission function.
+
+
- Subclass of NXinstrument to describe a photoelectron analyser.
+ 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
@@ -56,26 +65,84 @@
-
+
- Energy resolution of the electron analyser (FWHM of gaussian broadening)
+ Work function of the electron analyser.
+
+ The work function of a uniform surface of a conductor is the minimum energy required to remove
+ an electron from the interior of the solid to a vacuum level immediately outside the solid surface.
+
+ The kinetic energy :math:`E_K` of a photoelectron emitted from an energy-level with binding energy
+ :math:`E_B` below the Fermi level is given by :math:`E_K = h\nu - E_B - e \phi_{\mathrm{sample}}`,
+ where :math:`\phi_{\mathrm{sample}}` is the work function of the sample surface. In PES measurements,
+ the sample and the spectrometer (with work function :math:`\phi_{\mathrm{spectr.}}`) are electrically
+ connected and therefore their Fermi levels are aligned. Due to the difference in local vacuum level
+ between the sample and spectrometer, there exists an electric potential difference (contact potential)
+ :math:`\Delta\phi = \phi_{\mathrm{sample}} - \phi_{\mathrm{spectr.}}`. The measured kinetic energy of
+ a photoelectron in PES is therefore given by
+ :math:`E_K^{\mathrm{meas.}} = h\nu - E_B + \Delta \phi = h\nu - E_B - e \phi_{\mathrm{spectr.}}`.
+ As a result, the measured kinetic energy :math:`E_K^{\mathrm{meas.}}` of a photoelectron is `independent`
+ of the sample work function. Nonetheless, the work function :math:`\phi_s` needs to be known to
+ accurately determine the binding energy scale.
-
+
+
+ Energy resolution of the analyser with the current setting. May be linked from an
+ NXcalibration.
+
+ 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
+
+
+
+
+
+
+
+
+
+
Momentum resolution of the electron analyser (FWHM)
-
-
+
+
+
+
+
+
+
+
+
Angular resolution of the electron analyser (FWHM)
-
-
+
+
+
+
+
+
+
+
+
Spatial resolution of the electron analyser (Airy disk radius)
+
+ This concept is related to term `10.15 ff.`_ of the ISO 18115-1:2023 standard.
+
+ .. _10.15 ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.15
-
+
+
+
+
+
+
+
+
List of the axes that are acquired simultaneously by the detector.
@@ -83,12 +150,12 @@
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"
+ :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']"
+ 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.
@@ -106,10 +173,55 @@
+
+
+ Transmission function of the electron analyser.
+
+ The transmission function (TF) specifies the detection efficiency per solid angle for electrons of
+ different kinetic energy passing through the electron analyser. It depends on the spectrometer
+ geometry as well as operation settings such as lens mode and pass energy.
+ The transmission function is usually given as relative intensity vs. kinetic energy.
+
+ The TF is used for calibration of the intensity scale in quantitative XPS. Without proper
+ transmission correction, a comparison of results measured from the same sample using different
+ operating modes for an instrument would show significant variations in atomic
+ concentrations.
+
+ This concept is related to term `7.15 ff.`_ of the ISO 18115-1:2023 standard.
+
+ .. _7.15 ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:7.15
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Kinetic energy values
+
+
+
+
+
+
+
+ Relative transmission efficiency for the given kinetic energies
+
+
+
+
+
+
- Refers to the last transformation specifying the positon of the manipulator in
- the NXtransformations chain.
+ Refers to the last transformation specifying the position of the electron analyser
+ in the NXtransformations chain.
@@ -118,7 +230,7 @@
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
+ 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.
@@ -146,12 +258,18 @@
- Deflectors outside the main optics ensambles described by the subclasses
+ Deflectors outside the main optics ensembles described by the subclasses
- Individual lenses outside the main optics ensambles described by the subclasses
+ Individual lenses outside the main optics ensembles described by the subclasses
+
+
+
+
+
+ Any other resolution not explicitly named in this base class.
diff --git a/contributed_definitions/NXenergydispersion.nxdl.xml b/contributed_definitions/NXenergydispersion.nxdl.xml
index dd283a570b..9589bdad31 100644
--- a/contributed_definitions/NXenergydispersion.nxdl.xml
+++ b/contributed_definitions/NXenergydispersion.nxdl.xml
@@ -1,10 +1,10 @@
-
+
-
+
Subclass of NXelectronanalyser to describe the energy dispersion section of a
photoelectron analyser.
@@ -36,6 +36,10 @@
Energy of the electrons on the mean path of the analyser. Pass energy for
hemispherics, drift energy for tofs.
+
+ 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
@@ -52,12 +56,6 @@
measurement point.
-
-
- Size, position and shape of a slit in dispersive analyzer, e.g. entrance and
- exit slits.
-
-
Diameter of the dispersive orbit
@@ -65,11 +63,73 @@
- Way of scanning the energy axis (fixed or sweep).
+ Way of scanning the energy axis
-
-
+ -
+
+ constant :math:`\Delta E` mode, where the electron retardation (i.e., the fraction of pass energy to
+ kinetic energy, :math:`R = (E_K - WF/E_p)`, is scanned, but the pass energy :math:`E_p` is kept constant.
+ Here, :math:`WF` is the spectrometer work function.
+ This mode is often used in XPS/UPS because the energy resolution does not change with
+ changing energy (due to the constant pass energy).
+
+ Synonyms: constant :math:`\Delta E` mode, constant analyser energy mode, CAE mode, FAT mode
+
+ This concept is related to term `12.64`_ of the ISO 18115-1:2023 standard.
+
+ .. _12.64: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.64
+
+
+ -
+
+ constant :math:`\Delta E/E` mode, where the pass energy is scanned such that the electron retardation
+ ratio is constant. In this mode, electrons of all energies are decelerated with this same
+ fixed factor. Thus, the pass energy is proportional to the kinetic energy. This mode is often
+ used in Auger electron spectroscopy (AES) to improve S/N for high-KE electrons, but this
+ leads to a changing energy resolution (:math:`\Delta E \sim E_p`) at different kinetic energies.
+ It can however also be used in XPS.
+
+ Synonyms: constant :math:`\Delta E/E` mode, constant retardation ratio mode, CRR mode, FRR mode
+
+ This concept is related to term `12.66`_ of the ISO 18115-1:2023 standard.
+
+ .. _12.66: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.66
+
+
+ -
+
+ In the fixed energy (FE) mode, the intensity for one single kinetic energy is measured for a
+ specified time. This mode is particulary useful during setup or alignment of the
+ electron analyzer, for analysis of stability of the excitation source or for sample
+ alignment.
+
+ Since the mode measures intensity as a function of time, the difference in channel signals
+ is not of interest. Therefore, the signals from all channels are summed.
+
+ Synonyms: FE mode
+
+
+ -
+
+ Snapshot mode does not involve an energy scan and instead collects data from all channels of
+ the detector without averaging. The resulting spectrum reflects the energy distribution of
+ particles passing through the analyzer using the current settings. This mode is commonly used
+ to position the detection energy at the peak of a peak and record the signal, enabling faster
+ data acquisition within a limited energy range compared to FAT. Snapshot measurements are
+ particularly suitable for CCD and DLD detectors, which have multiple channels and can accurately
+ display the peak shape. While five or nine-channel detectors can also be used for snapshot
+ measurements, their energy resolution is relatively lower.
+
+
+ -
+
+ In dither acquisition mode, the kinetic energy of the analyzer is randomly varied by a small value
+ around a central value and at fixed pass energy. This allows reducing or removing inhomogeneities
+ of the detector efficiency, such as e.g. imposed by a mesh in front of the detector.
+ Mostly relevant for CCD/DLD type of detectors.
+
+
@@ -77,6 +137,12 @@
Length of the tof drift electrode
+
+
+ Size, position and shape of a slit in dispersive analyzer, e.g. entrance and
+ exit slits.
+
+
Deflectors in the energy dispersive section
@@ -87,4 +153,23 @@
Individual lenses in the energy dispersive section
+
+
+
+ Specifies the position of the energy dispesive elemeent by pointing to the last
+ transformation in the transformation chain in the NXtransformations group.
+
+
+
+
+ Collection of axis-based translations and rotations to describe the location and
+ geometry of the energy dispersive element 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.
+
+
diff --git a/contributed_definitions/NXmanipulator.nxdl.xml b/contributed_definitions/NXmanipulator.nxdl.xml
index ad59e06205..b76ff14250 100644
--- a/contributed_definitions/NXmanipulator.nxdl.xml
+++ b/contributed_definitions/NXmanipulator.nxdl.xml
@@ -1,10 +1,10 @@
-
+
-
+
Extension of NXpositioner to include fields to describe the use of manipulators
in photoemission experiments.
@@ -41,39 +41,182 @@
Type of manipulator, Hexapod, Rod, etc.
-
+
- Is cryocoolant flowing through the manipulator?
+ Cryostat for cooling the sample.
-
-
+
+
+
+
+
+
+
+
+ In case of a fixed or averaged cooling temperature, this is the scalar temperature setpoint.
+ It can also be a 1D array of temperature setpoints (without time stamps).
+
+
+
+
+
+ In the case of an experiment in which the temperature is changed and the setpoints are
+ recorded with time stamps, this is an array of length m of temperature setpoints.
+
+
+
+
+
+
- Temperature of the cryostat (coldest point)
+ Temperature sensor measuring the sample temperature.
-
-
+
+
+
+
+
+
+
+ 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).
+
+
+
+
+
+ In the case of an experiment in which the temperature changes and is recorded with time stamps,
+ this is an array of length m of temperatures.
+
+
+
+
+
- Power in the heater for temperature control.
+ Device to heat the sample.
-
-
+
+
+
+
+
+
+
+ In case of a fixed or averaged heating power, this is the scalar heater power.
+ It can also be a 1D array of heater powers (without time stamps).
+
+
+
+
+
+ In the case of an experiment in which the heater power is changed and recorded with time stamps,
+ this is an array of length m of temperature setpoints.
+
+
+
+
+
+
+ In case of a fixed or averaged temperature, this is the scalar temperature setpoint.
+ It can also be a 1D array of temperature setpoints (without time stamps).
+
+
+
+
+
+ In the case of an experiment in which the temperature is changed and the setpoints are
+ recorded with time stamps, this is an array of length m of temperature setpoints.
+
+
+
+
+
+
- Temperature at the closest point to the sample. This field may also be found in
- NXsample if present.
+ Amperemeter measuring the drain current of the sample and sample holder.
-
-
+
+
+
+
+
+
+
+ In case of a single or averaged drain current measurement, this is the scalar drain current measured between
+ the sample and sample holder. It can also be an 1D array of measured currents (without time stamps).
+
+
+
+
+
+ In the case of an experiment in which the current changes and is recorded with
+ time stamps, this is an array of length m of currents.
+
+
+
+
+
- Current to neutralize the photoemission current. This field may also be found in
- NXsample if present.
+ Actuator applying a voltage to sample and sample holder.
-
-
+
+
+
+
+
+
+
+
+ In case of a fixed or averaged applied bias, this is the scalar voltage applied between
+ sample and sample holder. It can also be an 1D array of voltage setpoints (without time stamps).
+
+
+
+
+
+ In the case of an experiment in which the bias is changed and the setpoints are
+ recorded with time stamps, this is an array of length m of voltage setpoints.
+
+
+
+
+
+
- Possible bias of the sample with trespect to analyser ground. This field may
- also be found in NXsample if present.
+ Sensor measuring the voltage applied to sample and sample holder.
-
+
+
+
+
+
+
+
+ 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).
+
+
+
+
+
+ In the case of an experiment in which the bias changes and is recorded with
+ time stamps, this is an array of length m of voltages.
+
+
+
+
+
+
+ Any additional actuator on the manipulator used to control an external
+ condition.
+
+
+
+
+ Any additional sensors on the manipulator used to monitor an external condition.
+
+
Class to describe the motors that are used in the manipulator
@@ -97,4 +240,5 @@
the reference coordinate system.
+
diff --git a/contributed_definitions/NXmpes.nxdl.xml b/contributed_definitions/NXmpes.nxdl.xml
index 4f3083d251..4134a9c478 100644
--- a/contributed_definitions/NXmpes.nxdl.xml
+++ b/contributed_definitions/NXmpes.nxdl.xml
@@ -1,9 +1,9 @@
-
+
+
+
+ The symbols used in the schema to specify e.g. dimensions of arrays
+
+
+
+ Number of data points in the transmission function.
+
+
+
This is the most general application definition for multidimensional
photoelectron spectroscopy.
+
+ Groups and fields are named according to the
+ `ISO 18115-1:2023`_ specification as well as the `IUPAC Recommendations 2020`_.
+
+ .. _ISO 18115-1:2023: https://www.iso.org/standard/74811.html
+ .. _IUPAC Recommendations 2020: https://doi.org/10.1515/pac-2019-0404
+
+
+
+
+
+
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.
-
-
-
-
-
+
+
+ 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.
+
-
+
+
+ Name of the experimental method.
+
+ If applicable, this name should match the terms given by `Clause 11`_ of
+ the `ISO 18115-1:2023`_ specification.
+
+ Examples include:
+ * X-ray photoelectron spectroscopy (XPS)
+ * angle-resolved X-ray photoelectron spectroscopy (ARXPS)
+ * ultraviolet photoelectron spectroscopy (UPS)
+ * angle-resolved photoelectron spectroscopy (ARPES)
+ * hard X-ray photoemission spectroscopy (HAXPES)
+ * near ambient pressure X-ray photoelectron spectroscopy (NAPXPS)
+ * photoelectron emission microscopy (PEEM)
+ * electron spectroscopy for chemical analysis (ESCA)
+ * time-resolved angle-resolved X-ray photoelectron spectroscopy (trARPES)
+ * spin-resolved angle-resolved X-ray photoelectron spectroscopy (spin-ARPES)
+ * momentum microscopy
+
+ .. _ISO 18115-1:2023: https://www.iso.org/standard/74811.html
+ .. _Clause 11: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:sec:11
+
+
+
Contact information of at least the user of the instrument or the investigator
who performed this experiment. Adding multiple users if relevant is recommended.
@@ -49,37 +98,56 @@
Name of the user.
-
+
- Name of the affiliation of the user at the point in time when the experiment was
+ Name of the affiliation of the user at the time when the experiment was
performed.
-
-
- Full address (street, street number, ZIP, city, country) of the user's
- affiliation.
-
-
-
-
- Email address of the user.
-
-
-
-
- Author ID defined by https://orcid.org/.
-
-
-
-
+
+ Description of the MPES 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
+
+
+
+ Overall energy resolution of the MPES instrument
+
+ This concept is related to term `10.7 ff.`_ of the ISO 18115-1:2023 standard.
+
+ .. _10.7 ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.7
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- The source used to generate the primary photons. 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 and so on.
+ 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 source_TYPE means that multiple sources can
+ be provided. For example, in pump-probe experiments, it is possible to have both
+ a `source_probe` and a `source_pump`
@@ -92,57 +160,96 @@
+
+
+
-
-
+
- Type of probe. In photoemission it's always photons, so the full NIAC list is
- restricted.
+ Specification of type, may also go to name.
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ The beam emitted by this source.
+ Should be named with the same appendix, e.g.,
+ for `source_probe` it should refer to `beam_probe`.
+ Refers to the same concept as /NXentry/NXinstrument/beam_TYPE
+ and may be linked.
+
+
-
-
+
+
+ Properties of the photon beam at a given location.
+ Should be named with the same appendix as source_TYPE, e.g.,
+ for `source_probe` it should refer to `beam_probe`.
+
+
- Distance of the point of evaluation of the beam from the sample surface.
+ 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.
+
+
+
+ The source that emitted this beam.
+ Should be named with the same appendix, e.g.,
+ for `beam_probe` it should refer to `source_probe`.
+ Refers to the same concept as /NXentry/NXinstrument/source_TYPE
+ and may be linked.
+
+
+
+
+
+
+
-
-
- Energy resolution of the analyser with the current setting. May be linked from a
- NXcalibration.
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
Scheme of the electron collection column.
-
-
-
-
-
-
+
+
+
+
+
The size and position of the field aperture inserted in the column. To add
@@ -155,6 +262,21 @@
additional or other apertures use the APERTURE group of NXcollectioncolumn.
+
+
+ Size, position and shape of the iris inserted in the column.
+
+ The iris is an aperture in the lens with a variable diameter which can reduce the number of
+ electrons entering the analyzer.
+
+ To add additional or other slits use the APERTURE group of NXcollectioncolumn.
+
+
+
+
+
+
+
@@ -171,16 +293,23 @@
- Size, position and shape of the entrance slit in dispersive analyzers. To add
- additional or other slits use the APERTURE group of NXenergydispersion.
+ Size, position and shape of the entrance slit in dispersive analyzers.
+
+ To add additional or other slits use the APERTURE group of NXenergydispersion.
- Size, position and shape of the exit slit in dispersive analyzers. To add
- additional or other slits use the APERTURE group of NXenergydispersion.
+ Size, position and shape of the exit slit in dispersive analyzers.
+
+ To add additional or other slits use the APERTURE group of NXenergydispersion.
+
+
+
+
+
@@ -205,7 +334,46 @@
-
+
+
+
+
+
+
+
+ Contains the raw data collected by the detector before calibration.
+ The data which is considered raw might change from experiment to experiment
+ due to hardware pre-processing of the data.
+ This field ideally collects the data with the lowest level of processing
+ possible.
+
+ The naming of fields should follow a convention to ensure compatibility.
+ It is recommend to use the following field names:
+
+ - **pixel_x**: Detector pixel in x direction.
+ - **pixel_y**: Detector pixel in y direction.
+ - **energy**: (Un)calibrated energy (kinetic or binding energy). Unit category: NX_ENERGY (e.g., eV).
+ - **kx**: (Un)calibrated x axis in k-space. Unit category: NX_ANY (e.g., 1/Angström).
+ - **ky**: (Un)calibrated y axis in k-space. Unit category: NX_ANY (1/Angström).
+ - **kz**: (Un)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.
+ Unit category: NX_ANGLE (° or rad)
+ - **ellipticity**: Ellipticity of the incoming or outgoing beam.
+ Unit category: NX_ANGLE (° or rad)
+ - **time_of_flight**: Total time of flight. Unit category: NX_TIME_OF_FLIGHT
+ - **time_of_flight_adc**: Time-of-flight values, analog-to-digital converted.
+ - **external_AXIS**: Describes an axis which is coming from outside the detectors scope.
+
@@ -223,23 +391,147 @@
Manipulator for positioning of the sample.
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Device to measure the gas pressure around the sample.
+
+
+
+
+
+
+
+
+
+
+ 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).
+
+
+
+
+
+ In the case of an experiment in which the gas pressure changes and is recorded,
+ this is an array of length m of gas pressures.
+
+
+
+
+
+
+ Device to bring low-energy electrons to the sample for charge neutralization
+
+
+
+
+
+
+
+
+
+
+ In case of a fixed or averaged electron current, this is the scalar current.
+ It can also be an 1D array of output current (without time stamps).
+
+
+
+
+
+ In the case of an experiment in which the electron current is changed and
+ recorded with time stamps, this is an array of length m of current setpoints.
+
+
+
-
+
Document an event of data processing, reconstruction, or analysis for this data.
Describe the appropriate axis calibrations for your experiment using one or more
of the following NXcalibrations
-
-
- Has an energy calibration been applied?
-
-
+
+ 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
+
This is the calibrated energy axis to be used for data plotting.
@@ -247,11 +539,6 @@
-
-
- Has an angular calibration been applied?
-
-
This is the calibrated angular axis to be used for data plotting.
@@ -259,46 +546,123 @@
-
+
- Has an spatial calibration been applied?
+ This is the calibrated spatial axis to be used for data plotting.
+
+
- This is the calibrated spatial axis to be used for data plotting.
+ This is the momentum axis to be used for data plotting.
-
-
+
+
+ For energy referencing, the measured energies are corrected for the charging potential
+ (i.e., the electrical potential of the surface region of an insulating sample, caused by
+ irradiation) such that those energies correspond to a sample with no surface charge.
+ Usually, the energy axis is adjusted by shifting all energies uniformally until one
+ well-defined emission line peak (or the Fermi edge) is located at a known _correct_ energy.
+
+ This concept is related to term `12.74 ff.`_ of the ISO 18115-1:2023 standard.
+
+ .. _12.74 ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.74
+
+
+
+ Electronic core or valence level that was used for the calibration.
+
+
+
+
+ Reference peak that was used for the calibration.
+
+ For example: adventitious carbon | C-C | metallic Au | elemental Si | Fermi edge | vacuum level
+
+
+
+
+ The binding energy (in units of eV) that the specified emission line appeared at,
+ after adjusting the binding energy scale.
+
+ This concept is related to term `12.16_ ff.`_ of the ISO 18115-1:2023 standard.
+
+ .. _12.16_ ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+
+
+
- Has an momentum calibration been applied?
+ Offset between measured binding energy and calibrated binding energy of the
+ emission line.
- This is the momentum axis to be used for data plotting.
+ This is the calibrated energy axis to be used for data plotting.
+
+ This should link to /entry/data/energy.
+
+
+ In the transmission correction, each intensity measurement for electrons of a given
+ kinetic energy is multiplied by the corresponding value in the relative_intensity
+ field of the transmission_function. This calibration procedure is used to account for
+ the different tranmsission efficiencies when using different lens modes.
+
+
+
+ Transmission function of the electron analyser.
+
+ The transmission function (TF) specifies the detection efficiency for electrons of
+ different kinetic energy passing through the electron analyser.
+ This can be a link to /entry/instrument/electronanalyser/transmission_function.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Kinetic energy values
+
+
+
+
+
+
+
+ Relative transmission efficiency for the given kinetic energies
+
+
+
+
+
+
+
-
+
- The chemical formula of the sample. For mixtures use the NXsample_component
- group in NXsample instead.
-
-
-
-
- A descriptor to keep track of the treatment of the sample before entering the
- photoemission experiment. Ideally, a full report of the previous operations, in
- any format (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.
+ For samples containing a single pure substance. For mixtures use the
+ NXsample_component_set and NXsample_component group in NXsample instead.
+
+
+ The chemical formula of the sample (using CIF conventions).
+
+
@@ -308,30 +672,8 @@
elements from each component must be included in `atom_types`.
-
-
- Date of preparation of the sample for the XPS experiment (i.e. cleaving, last
- annealing).
-
-
-
-
- Description of the surface preparation technique for the XPS experiment, i.e.
- UHV cleaving, in-situ growth, sputtering/annealing etc. Ideally, a full report
- of the previous operations, in any format(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.
-
-
-
-
- In the case of a fixed temperature measurement this is the scalar temperature of
- the sample. In the case of an experiment in which the temperature is changed and
- recoded, this is an array of length m of temperatures. This should be a link to
- /entry/instrument/manipulator/sample_temperature.
-
-
-
+
+
@@ -339,14 +681,141 @@
-
-
+
- Voltage applied to sample and sample holder.
+ A set of activities that occurred to the sample prior to/during photoemission
+ experiment.
-
+
+
+ Details about the sample preparation for the MPES experiment (e.g. UHV cleaving,
+ in-situ growth, sputtering/annealing, etc.).
+
+
+
+
+
+ Details about the method of sample preparation before the MPES experiment.
+
+
+
+
+
+
+ Sample temperature (either controlled or just measured).
+
+
+
+ Temperature sensor measuring the sample temperature.
+ This should be a link to /entry/instrument/manipulator/temperature_sensor.
+
+
+
+
+ Device to heat the sample.
+ This should be a link to /entry/instrument/manipulator/sample_heater.
+
+
+
+
+ Cryostat for cooling the sample.
+ This should be a link to /entry/instrument/manipulator/cryostat.
+
+
+
+
+
+ Gas pressure surrounding the sample.
+
+
+
+ Gauge measuring the gas pressure.
+
+ This should be a link to /entry/instrument/pressure_gauge.
+
+
+
+
+
+ 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
+
+
+
+ Sensor measuring the applied voltage.
+
+ This should be a link to /entry/instrument/manipulator/sample_bias_voltmeter.
+
+
+
+
+ Actuator applying a voltage to sample and sample holder.
+
+ This should be a link to /entry/instrument/manipulator/sample_bias_potentiostat.
+
+
+
+
+
+ Drain current of the sample and sample holder.
+
+
+
+ Amperemeter measuring the drain current of the sample and sample holder.
+
+ This should be a link to /entry/instrument/manipulator/drain_current_amperemeter.
+
+
+
+
+
+ Current of low-energy electrons to the sample for charge neutralization.
+
+
+
+ Flood gun creating a current of low-energy electrons.
+
+ This should be a link to /entry/instrument/flood_gun.
+
+
+
-
+
+
+ The default NXdata field containing a view on the measured data.
+ This NXdata field contains a collection of the main relevant fields (axes).
+ In NXmpes, it is required to provide an energy axis.
+ If you want to provide additional views on your data, you can additionally use
+ the generic NXdata group of NXentry.
+ The other data fields inside this NXdata group should be named according to conventions
+ to ensure compatibility. We recommened the following field names
+ for common data fields:
+
+ - **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)
+
@@ -360,6 +829,54 @@
actual encoder position in NXinstrument or calibrated axes in NXprocess.
+
+
+ Calibrated energy axis.
+
+ This could be a link to either
+ /entry/process/energy_calibration/calibrated_axis or
+ /entry/process/energy_correction/calibrated_axis.
+
+
+
+ The energy can be either stored as kinetic or as binding energy.
+
+
+ -
+
+ Calibrated kinetic energy axis.
+
+ In case the kinetic energy axis is referenced to the Fermi level :math:`E_F`
+ (e.g., in entry/process/energy_referencing), kinetic energies :math:`E` are
+ provided as :math:`E-E_F`.
+
+ This concept is related to term `3.35`_ of the ISO 18115-1:2023 standard.
+
+ .. _3.35: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:3.35
+
+
+ -
+
+ Calibrated binding energy axis.
+
+ This concept is related to term `12.16`_ of the ISO 18115-1:2023 standard.
+
+ .. _12.16: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+
+
+
+
+
+
+
+
+ The energy can be dispersed according to different strategies. ``energy_depends`` points to
+ the path of a field defining the calibrated axis on which the energy axis depends.
+
+ For example:
+ @energy_depends: 'entry/process/energy_calibration'
+
+
diff --git a/contributed_definitions/NXpid.nxdl.xml b/contributed_definitions/NXpid.nxdl.xml
index 2be21767ed..c93ce7597e 100644
--- a/contributed_definitions/NXpid.nxdl.xml
+++ b/contributed_definitions/NXpid.nxdl.xml
@@ -1,10 +1,10 @@
-
+
-
+
Contains the settings of a PID controller.
@@ -53,6 +53,11 @@
It can also be a link to an NXsensor.value field.
+
+
+ Time log of the setpoint(s) used as an input for the PID controller.
+
+
Proportional term. The proportional term produces an output value
diff --git a/contributed_definitions/NXprocess_mpes.nxdl.xml b/contributed_definitions/NXprocess_mpes.nxdl.xml
new file mode 100644
index 0000000000..585bc972f9
--- /dev/null
+++ b/contributed_definitions/NXprocess_mpes.nxdl.xml
@@ -0,0 +1,159 @@
+
+
+
+
+
+ :ref:`NXprocess_mpes` describes events of data processing, reconstruction,
+ or analysis for MPES-related data.
+
+ It extends the NXprocess class and provides a glossary of explicitly named processes
+ and their metadata which are typical for MPES data.
+
+
+
+ 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
+
+
+
+ This is the calibrated energy axis to be used for data plotting.
+
+
+
+
+
+
+ This is the calibrated angular axis to be used for data plotting.
+
+
+
+
+
+
+ This is the calibrated spatial axis to be used for data plotting.
+
+
+
+
+
+
+ This is the momentum axis to be used for data plotting.
+
+
+
+
+
+ For energy referencing, the measured energies are corrected for the charging potential
+ (i.e., the electrical potential of the surface region of an insulating sample, caused by
+ irradiation) such that those energies correspond to a sample with no surface charge.
+ Usually, the energy axis is adjusted by shifting all energies uniformally until one
+ well-defined emission line peak (or the Fermi edge) is located at a known _correct_ energy.
+
+ This concept is related to term `12.74 ff.`_ of the ISO 18115-1:2023 standard.
+
+ .. _12.74 ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.74
+
+
+
+ Electronic core or valence level that was used for the calibration.
+
+
+
+
+ Reference peak that was used for the calibration.
+
+ For example: adventitious carbon | C-C | metallic Au | elemental Si | Fermi edge | vacuum level
+
+
+
+
+ The binding energy (in units of eV) that the specified emission line appeared at,
+ after adjusting the binding energy scale.
+
+ This concept is related to term `12.16_ ff.`_ of the ISO 18115-1:2023 standard.
+
+ .. _12.16_ ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+
+
+
+
+ Offset between measured binding energy and calibrated binding energy of the
+ emission line.
+
+
+
+
+ This is the calibrated energy axis to be used for data plotting.
+
+ This should link to /entry/data/energy.
+
+
+
+
+
+ In the transmission correction, each intensity measurement for electrons of a given
+ kinetic energy is multiplied by the corresponding value in the relative_intensity
+ field of the transmission_function. This calibration procedure is used to account for
+ the different tranmsission efficiencies when using different lens modes.
+
+
+
+ Transmission function of the electron analyser.
+
+ The transmission function (TF) specifies the detection efficiency for electrons of
+ different kinetic energy passing through the electron analyser.
+ This can be a link to /entry/instrument/electronanalyser/transmission_function.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Kinetic energy values
+
+
+
+
+
+
+
+ Relative transmission efficiency for the given kinetic energies
+
+
+
+
+
+
+
+
diff --git a/contributed_definitions/NXresolution.nxdl.xml b/contributed_definitions/NXresolution.nxdl.xml
new file mode 100644
index 0000000000..6abb5f4308
--- /dev/null
+++ b/contributed_definitions/NXresolution.nxdl.xml
@@ -0,0 +1,102 @@
+
+
+
+
+
+ Describes the resolution of a physical quantity.
+
+
+
+ The physical quantity of the resolution, e.g.,
+ energy, momentum, time, etc.
+
+
+
+
+ The process by which the resolution was determined.
+
+
+
+
+
+
+
+
+
+
+ Additional details of the estimate or description of the calibration procedure
+
+
+
+
+ The resolution of the physical quantity.
+
+
+
+
+ Standard deviation of the resolution of the physical quantity.
+
+
+
+
+ The response of the instrument or part to a infinitesimally sharp input signal
+ along the physical quantity of this group.
+ This is also sometimes called instrument response function for time resolution or
+ point spread function for spatial response.
+ The resolution is typically determined by taking the full width at half maximum (FWHM)
+ of the response function.
+
+
+
+ The input axis or grid of the response function.
+ The unit should match the one of the resolution field.
+
+
+
+
+ The magnitude of the response function corresponding to the points
+ in the input axis or grid.
+ This field should have the same dimensions as `input`.
+
+
+
+
+
+ A symbol linking to another path in this appdef to be referred to from the
+ `resolution_formula` field. This should be a valid path inside this application
+ definition, i.e., of the form /entry/instrument/my_part/my_field.
+
+
+
+
+ A resolution formula to determine the resolution from a set of symbols as
+ entered by the `formula_...` fields.
+ The output unit should match the provided unit of this field.
+
+
+
+
+ For storing details and data of a calibration to derive a resolution from data.
+
+
+
diff --git a/contributed_definitions/NXsubstance.nxdl.xml b/contributed_definitions/NXsubstance.nxdl.xml
index 7379702133..6d246ca224 100644
--- a/contributed_definitions/NXsubstance.nxdl.xml
+++ b/contributed_definitions/NXsubstance.nxdl.xml
@@ -1,10 +1,10 @@
-
+
+#
+#
+# An actuator used to control an external condition.
+#
+# The condition itself is described in :ref:`NXenvironment`.
+#
+#
+#
+# Actuator identification code/model number
+#
+#
+#
+#
+# Name of the actuator
+#
+#
+#
+#
+# Short name of actuator used e.g. on monitor display program
+#
+#
+#
+#
+# Describe where the actuator is attached to.
+# This could be an instance of NXsample or a device on NXinstrument.
+#
+#
+#
+#
+# Name for the physical quantity effected by the actuation
+#
+# Examples:
+# temperature | pH | magnetic_field | electric_field | current | conductivity | resistance | voltage |
+# pressure | flow | stress | strain | shear | surface_pressure
+#
+#
+#
+#
+# The type of hardware used for the actuation.
+#
+# Examples (suggestions, but not restrictions):
+#
+# :Temperature: laser | gas lamp | filament | resistive
+# :Pressure: anvil cell
+# :Voltage: potentiostat
+#
+#
+#
+#
+# Any output that the actuator produces.
+# For example, a heater can have the field heater_power(NX_FLOAT).
+#
+#
+#
+#
+# Time history of actuator outputs.
+#
+#
+#
+#
+# If the actuator is PID-controlled, the settings of the PID controller can be
+# stored here.
+#
+#
+#
+# Nominal actuator setpoint.
+# Can be a scalar or a vector (of [n] actuations).
+#
+#
+#
+#
+# Time history of actuator setpoints.
+#
+#
+#
+#
+#
+# Refers to the last transformation specifying the position of the actuator
+# in the NXtransformations chain.
+#
+#
+#
+#
+# This is the group recommended for holding the chain of translation
+# and rotation operations necessary to position the actuator within
+# the instrument. The dependency chain may however traverse similar groups in
+# other component groups.
+#
+#
+#
+#
diff --git a/contributed_definitions/nyaml/NXcalibration.yaml b/contributed_definitions/nyaml/NXcalibration.yaml
index eae1c60c83..4ae8d0d03b 100644
--- a/contributed_definitions/nyaml/NXcalibration.yaml
+++ b/contributed_definitions/nyaml/NXcalibration.yaml
@@ -6,8 +6,6 @@ symbols:
The symbols used in the schema to specify e.g. dimensions of arrays
ncoeff: |
Number of coefficients of the calibration function
- nfeat: |
- Number of features used to fit the calibration function
ncal: |
Number of points of the calibrated and uncalibrated axes
type: group
@@ -17,22 +15,21 @@ NXcalibration(NXobject):
A description of the procedures employed.
calibration_method(NXidentifier):
doc: |
- A digital persistent identifier (e.g., doi, ISO standard) referring to a detailed description of a
+ A digital persistent identifier (e.g., DOI, ISO standard) referring to a detailed description of a
calibration method but no actual calibration data.
calibration_reference(NXidentifier):
doc: |
- A digital persistent identifier (e.g., a doi) referring to a
- publicly available calibration measurement used for this instrument
- , e.g., a measurement of a known standard containing calibration information.
+ A digital persistent identifier (e.g., a DOI) referring to a publicly available calibration measurement
+ used for this instrument, e.g., a measurement of a known standard containing calibration information.
The axis values may be copied or linked in the appropriate NXcalibration fields for reference.
calibration_object(NXserialized):
doc: |
A file serialisation of a calibration which may not be publicly available (externally from the nexus file).
This metadata can be a documentation of the source (file) or database (entry) from which pieces
- of information have been extracted for consumption in e.g. a research data management system (RDMS).
+ of information have been extracted for consumption (e.g. in a research data management system (RDMS)).
It is also possible to include the actual file by using the `file` field.
-
+
The axis values may be copied or linked in the appropriate NXcalibration fields for reference.
last_process(NX_CHAR):
doc: |
@@ -108,7 +105,7 @@ NXcalibration(NXobject):
doc: |
For linear calibration. Offset parameter.
This should yield the relation `calibrated_axis` = `scaling` * `original_axis` + `offset`.
- MAPPING(NX_FLOAT):
+ mapping_MAPPING(NX_FLOAT):
doc: |
Mapping data for calibration.
@@ -125,16 +122,20 @@ NXcalibration(NXobject):
doc: |
The path to which this data is written, e.g., the calibrated energy.
Should be a valid NeXus path name, e.g., /entry/data/energy.
+ (NXdata):
+ doc: |
+ Any data acquired/used during the calibration that does not fit the `NX_FLOAT` fields above.
+ NXdata groups can be used for multidimensional data which are relevant to the calibration
# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
-# 7394f6136c95cdee182a96a9aff856eee0285b94b6a3e83a0175949aa9752ae3
-#
+# 6c2f680dbb28daa8ed319e3a6a06275148e93310cb1a8824ed779304d4097702
+#
#
#
-#
+#
#
#
# The symbols used in the schema to specify e.g. dimensions of arrays
@@ -161,11 +162,6 @@ NXcalibration(NXobject):
# Number of coefficients of the calibration function
#
#
-#
-#
-# Number of features used to fit the calibration function
-#
-#
#
#
# Number of points of the calibrated and uncalibrated axes
@@ -175,6 +171,35 @@ NXcalibration(NXobject):
#
# Subclass of NXprocess to describe post-processing calibrations.
#
+#
+#
+# A description of the procedures employed.
+#
+#
+#
+#
+# A digital persistent identifier (e.g., DOI, ISO standard) referring to a detailed description of a
+# calibration method but no actual calibration data.
+#
+#
+#
+#
+# A digital persistent identifier (e.g., a DOI) referring to a publicly available calibration measurement
+# used for this instrument, e.g., a measurement of a known standard containing calibration information.
+# The axis values may be copied or linked in the appropriate NXcalibration fields for reference.
+#
+#
+#
+#
+# A file serialisation of a calibration which may not be publicly available (externally from the nexus file).
+#
+# This metadata can be a documentation of the source (file) or database (entry) from which pieces
+# of information have been extracted for consumption (e.g. in a research data management system (RDMS)).
+# It is also possible to include the actual file by using the `file` field.
+#
+# The axis values may be copied or linked in the appropriate NXcalibration fields for reference.
+#
+#
#
#
# Indicates the name of the last operation applied in the NXprocess sequence.
@@ -185,6 +210,47 @@ NXcalibration(NXobject):
# Has the calibration been applied?
#
#
+#
+#
+# Vector containing the data coordinates in the original uncalibrated axis
+#
+#
+#
+#
+#
+#
+# The symbol of the axis to be used in the fit_function, e.g., `energy`, `E`.
+# This should comply to the following naming rules (similar to python's naming rules):
+#
+# * A variable name must start with a letter or the underscore character
+# * A variable name cannot start with a number
+# * A variable name can only contain alpha-numeric characters and underscores (A-z, 0-9, and _ )
+# * Variable names are case-sensitive (age, Age and AGE are three different variables)
+#
+#
+#
+#
+# The path from which this data is derived, e.g., raw detector axis.
+# Should be a valid NeXus path name, e.g., /entry/instrument/detector/raw.
+#
+#
+#
+#
+#
+# Additional input axis to be used in the formula.
+# The part after `input_` is used as the symbol to be used in the `fit_function`, i.e.,
+# if the field name is `input_my_field` you should refer to this axis by `my_field` in the `fit_function`.
+#
+#
+#
+#
+#
+#
+# The path from which this data is derived, e.g., raw detector axis.
+# Should be a valid NeXus path name, e.g., /entry/instrument/detector/raw.
+#
+#
+#
#
#
# For non-linear energy calibrations, e.g. in a TOF, a polynomial function is fit
@@ -202,7 +268,13 @@ NXcalibration(NXobject):
#
# Use a0, a1, ..., an for the coefficients, corresponding to the values in the coefficients field.
#
-# Use x0, x1, ..., xn for the variables.
+# 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.
#
@@ -210,32 +282,41 @@ NXcalibration(NXobject):
#
#
# For linear calibration. Scaling parameter.
+# This should yield the relation `calibrated_axis` = `scaling` * `original_axis` + `offset`.
#
#
#
#
# For linear calibration. Offset parameter.
+# This should yield the relation `calibrated_axis` = `scaling` * `original_axis` + `offset`.
#
#
-#
+#
#
-# A vector representing the axis after calibration, matching the data length
+# Mapping data for calibration.
+#
+# This can be used to map data points from uncalibrated to calibrated values,
+# i.e., by multiplying each point in the input axis by the corresponding point in the mapping data.
#
-#
-#
-#
#
-#
+#
#
-# Vector containing the data coordinates in the original uncalibrated axis
+# A vector representing the axis after calibration, matching the data length
#
#
#
#
+#
+#
+# The path to which this data is written, e.g., the calibrated energy.
+# Should be a valid NeXus path name, e.g., /entry/data/energy.
+#
+#
#
-#
+#
#
-# A description of the procedures employed.
+# Any data acquired/used during the calibration that does not fit the `NX_FLOAT` fields above.
+# NXdata groups can be used for multidimensional data which are relevant to the calibration
#
-#
+#
#
diff --git a/contributed_definitions/nyaml/NXcollectioncolumn.yaml b/contributed_definitions/nyaml/NXcollectioncolumn.yaml
index 102261f111..64e5714fd2 100644
--- a/contributed_definitions/nyaml/NXcollectioncolumn.yaml
+++ b/contributed_definitions/nyaml/NXcollectioncolumn.yaml
@@ -28,6 +28,20 @@ NXcollectioncolumn(NXobject):
doc: |
The space projected in the angularly dispersive directions, real or reciprocal
enumeration: [real, reciprocal]
+ angular_acceptance(NX_FLOAT):
+ unit: NX_ANGLE
+ doc:
+ - |
+ Acceptance angle of the collection column.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 7.4
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:7.4
+ spatial_acceptance(NX_FLOAT):
+ unit: NX_LENGTH
+ doc: |
+ Acceptance length or area of the collection column.
magnification(NX_FLOAT):
unit: NX_DIMENSIONLESS
doc: |
@@ -56,16 +70,17 @@ NXcollectioncolumn(NXobject):
(NXlens_em):
doc: |
Individual lenses in the collection column section
+ (NXfabrication):
# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
-# df7044a190f0f578a393b7b185e0c5068c0f538506f843192e2891a4217077c0
-#
+# dadb7b6ffb1466761253f335bf00a73741580668da2e77983b4702847426d506
+#
#
#
+#
+#
+# :ref:`NXdata_mpes` describes the plottable data and related dimension scales in MPES
+# experiments.
+#
+# It extends the NXdata class and provides a glossary of explicitly named axis names
+# which are typical for MPES data.
+#
+#
+#
+# Calibrated energy axis.
+#
+# This could be a link to either
+# /entry/process/energy_calibration/calibrated_axis or
+# /entry/process/energy_correction/calibrated_axis.
+#
+#
+#
+# The energy can be either stored as kinetic or as binding energy.
+#
+#
+# -
+#
+# Calibrated kinetic energy axis.
+#
+# This concept is related to term `3.35`_ of the ISO 18115-1:2023 standard.
+#
+# .. _3.35: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:3.35
+#
+#
+# -
+#
+# Calibrated binding energy axis.
+#
+# This concept is related to term `12.16`_ of the ISO 18115-1:2023 standard.
+#
+# .. _12.16: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# Calibrated x axis in k-space.
+# Units are 1/Angström.
+#
+#
+#
+#
+#
+#
+# Calibrated y axis in k-space.
+# Units are 1/Angström
+#
+#
+#
+#
+#
+#
+# Calibrated z axis in k-space.
+# Units are 1/Angström.
+#
+#
+#
+#
+#
+#
+# Fast-axis angular coordinate (or second slow axis if angularly integrated).
+#
+#
+#
+#
+#
+#
+# Slow-axis angular coordinate (or second fast axis if simultaneously dispersed in
+# 2 dimensions)
+#
+#
+#
+#
+#
+#
+# Fast-axis spatial coordinate (or second slow axis if spatially integrated)
+#
+#
+#
+#
+#
+#
+# Slow-axis spatial coordinate (or second fast axis if simultaneously dispersed in
+# 2 dimensions)
+#
+#
+#
+#
+#
+#
+# Calibrated delay time.
+#
+#
+#
+#
+#
+#
+# Linear polarization angle of the incoming or outgoing beam.
+#
+# Could be a link to /entry/instrument/beam/incident_polarization_angle or
+# /entry/instrument/beam/final_polarization_angle if they exist.
+#
+#
+#
+#
+#
+#
+# Ellipticity of the incoming or outgoing beam.
+#
+# Can be any of linear polarization angle (degrees), ellipticity (arb. units).
+# Could be a link to /entry/instrument/beam/incident_ellipticity or
+# /entry/instrument/beam/final_ellipticity if they exist.
+#
+#
+#
+#
+#
diff --git a/contributed_definitions/nyaml/NXdata_mpes_detector.yaml b/contributed_definitions/nyaml/NXdata_mpes_detector.yaml
new file mode 100644
index 0000000000..ccf82e6045
--- /dev/null
+++ b/contributed_definitions/nyaml/NXdata_mpes_detector.yaml
@@ -0,0 +1,336 @@
+category: base
+doc: |
+ :ref:`NXdata_mpes_detector` describes the plottable data and related dimension scales
+ for raw detector data in MPES experiments.
+
+ It extends the NXdata class and provides a glossary of explicitly named axis names
+ which are typical for raw MPES data.
+type: group
+NXdata_mpes_detector(NXdata):
+ \@signal:
+ enumeration: [raw]
+ raw(NX_NUMBER):
+ doc: |
+ Raw data before calibration.
+ pixel_x(NX_FLOAT):
+ unit: NX_ANY
+ doc: |
+ Detector pixel in x direction.
+ \@pixel_x_indices:
+ \@pixel_x_depends:
+ pixel_y(NX_FLOAT):
+ unit: NX_ANY
+ doc: |
+ Detector pixel in y direction.
+ \@pixel_y_indices:
+ \@pixel_y_depends:
+ energy(NX_NUMBER):
+ unit: NX_ENERGY
+ doc: |
+ (Un)calibrated energy axis.
+ \@type:
+ type: NX_CHAR
+ doc: |
+ The energy can be either stored as kinetic or as binding energy.
+ enumeration:
+ kinetic:
+ doc:
+ - |
+ (Un)calibrated kinetic energy axis.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 3.35
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:3.35
+ binding:
+ doc:
+ - |
+ (Un)calibrated binding energy axis.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 12.16
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+ \@energy_indices:
+ \@energy_depends:
+ kx(NX_NUMBER):
+ unit: NX_WAVENUMBER
+ doc: |
+ (Un)calibrated x axis in k-space.
+ Units are 1/Angström.
+ \@kx_indices:
+ \@kx_depends:
+ ky(NX_NUMBER):
+ unit: NX_WAVENUMBER
+ doc: |
+ (Un)calibrated y axis in k-space.
+ Units are 1/Angström
+ \@ky_indices:
+ \@ky_depends:
+ kz(NX_NUMBER):
+ unit: NX_WAVENUMBER
+ doc: |
+ (Un)calibrated z axis in k-space.
+ Units are 1/Angström.
+ \@kz_indices:
+ \@kz_depends:
+ angular0(NX_NUMBER):
+ unit: NX_ANGLE
+ doc: |
+ Fast-axis angular coordinate (or second slow axis if angularly integrated).
+ \@angular0_indices:
+ \@angular0_depends:
+ angular1(NX_NUMBER):
+ unit: NX_ANGLE
+ doc: |
+ Slow-axis angular coordinate (or second fast axis if simultaneously dispersed in two
+ dimensions)
+ \@angular1_indices:
+ \@angular1_depends:
+ spatial0(NX_NUMBER):
+ unit: NX_LENGTH
+ doc: |
+ Fast-axis spatial coordinate (or second slow axis if spatially integrated)
+ \@spatial0_indices:
+ \@spatial0_depends:
+ spatial1(NX_NUMBER):
+ unit: NX_LENGTH
+ doc: |
+ Slow-axis spatial coordinate (or second fast axis if simultaneously dispersed in two
+ dimensions)
+ \@spatial1_indices:
+ \@spatial1_depends:
+
+ # exists in NXdetector base class
+ time_of_flight(NX_FLOAT):
+ unit: NX_TIME_OF_FLIGHT
+ doc: |
+ Total time of flight
+ \@time_of_flight_indices:
+ \@time_of_flight_depends:
+ time_of_flight_adc(NX_FLOAT):
+ unit: NX_ANY
+ doc: |
+ Time-of-flight values, analog-to-digital converted.
+ \@time_of_flight_adc_indices:
+ \@time_of_flight_adc_depends:
+ delay(NX_NUMBER):
+ unit: NX_TIME
+ doc: |
+ (Un)calibrated delay time.
+ \@delay_indices:
+ \@delay_depends:
+ polarization_angle(NX_FLOAT):
+ unit: NX_ANGLE
+ doc: |
+ Linear polarization angle of the incoming or outgoing beam.
+ \@polarization_angle_indices:
+ \@polarization_angle_depends:
+ ellipticity(NX_FLOAT):
+ unit: NX_ANGLE
+ doc: |
+ Ellipticity of the incoming or outgoing beam.
+ \@ellipticity_indices:
+ \@ellipticity_depends:
+ external_AXIS(NX_NUMBER):
+ unit: NX_ANY
+ doc: |
+ Describes an axis which is coming from outside the detectors scope.
+
+ Think of a detector just being triggered for readout by the rest of the experimental
+ setup - it would just know that it collected N images, which would flatten the external
+ parameters to one axis, too.
+ This can then be linked, e.g. with NXcalibration, to the appropriate fields in the instrument
+ and write it to the top-level NXdata.
+
+# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
+# 9428309dfa7497a26a3ea053ed9dae2d45a66d718656630be27e13e20611012d
+#
+#
+#
+#
+#
+# :ref:`NXdata_mpes_detector` describes the plottable data and related dimension scales
+# for raw detector data in MPES experiments.
+#
+# It extends the NXdata class and provides a glossary of explicitly named axis names
+# which are typical for raw MPES data.
+#
+#
+#
+#
+#
+#
+#
+#
+# Raw data before calibration.
+#
+#
+#
+#
+# Detector pixel in x direction.
+#
+#
+#
+#
+#
+#
+# Detector pixel in y direction.
+#
+#
+#
+#
+#
+#
+# (Un)calibrated energy axis.
+#
+#
+#
+# The energy can be either stored as kinetic or as binding energy.
+#
+#
+# -
+#
+# (Un)calibrated kinetic energy axis.
+#
+# This concept is related to term `3.35`_ of the ISO 18115-1:2023 standard.
+#
+# .. _3.35: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:3.35
+#
+#
+# -
+#
+# (Un)calibrated binding energy axis.
+#
+# This concept is related to term `12.16`_ of the ISO 18115-1:2023 standard.
+#
+# .. _12.16: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# (Un)calibrated x axis in k-space.
+# Units are 1/Angström.
+#
+#
+#
+#
+#
+#
+# (Un)calibrated y axis in k-space.
+# Units are 1/Angström
+#
+#
+#
+#
+#
+#
+# (Un)calibrated z axis in k-space.
+# Units are 1/Angström.
+#
+#
+#
+#
+#
+#
+# Fast-axis angular coordinate (or second slow axis if angularly integrated).
+#
+#
+#
+#
+#
+#
+# Slow-axis angular coordinate (or second fast axis if simultaneously dispersed in two
+# dimensions)
+#
+#
+#
+#
+#
+#
+# Fast-axis spatial coordinate (or second slow axis if spatially integrated)
+#
+#
+#
+#
+#
+#
+# Slow-axis spatial coordinate (or second fast axis if simultaneously dispersed in two
+# dimensions)
+#
+#
+#
+#
+#
+#
+#
+# Total time of flight
+#
+#
+#
+#
+#
+#
+# Time-of-flight values, analog-to-digital converted.
+#
+#
+#
+#
+#
+#
+# (Un)calibrated delay time.
+#
+#
+#
+#
+#
+#
+# Linear polarization angle of the incoming or outgoing beam.
+#
+#
+#
+#
+#
+#
+# Ellipticity of the incoming or outgoing beam.
+#
+#
+#
+#
+#
+#
+# Describes an axis which is coming from outside the detectors scope.
+#
+# Think of a detector just being triggered for readout by the rest of the experimental
+# setup - it would just know that it collected N images, which would flatten the external
+# parameters to one axis, too.
+# This can then be linked, e.g. with NXcalibration, to the appropriate fields in the instrument
+# and write it to the top-level NXdata.
+#
+#
+#
diff --git a/contributed_definitions/nyaml/NXelectron_level.yaml b/contributed_definitions/nyaml/NXelectron_level.yaml
new file mode 100644
index 0000000000..ed9149e2fd
--- /dev/null
+++ b/contributed_definitions/nyaml/NXelectron_level.yaml
@@ -0,0 +1,1465 @@
+category: base
+doc: |
+ Electronic level probed in X-ray spectroscopy or resonance experiments.
+type: group
+NXelectron_level(NXobject):
+ element:
+ doc: |
+ Symbol of the chemical element.
+
+ For each, the atomic number, common English name, and standard atomic weight are also given.
+ enumeration:
+ H:
+ doc: |
+ Z=1, name="hydrogen", standard_atomic_weight=1.0078
+ He:
+ doc: |
+ Z=2, name="helium", standard_atomic_weight=4.0026
+ Li:
+ doc: |
+ Z=3, name="lithium", standard_atomic_weight=6.94
+ Be:
+ doc: |
+ Z=4, name="beryllium", standard_atomic_weight=9.0122
+ B:
+ doc: |
+ Z=5, name="boron", standard_atomic_weight=10.81
+ C:
+ doc: |
+ Z=6, name="carbon", standard_atomic_weight=12.011
+ N:
+ doc: |
+ Z=7, name="nitrogen", standard_atomic_weight=14.007
+ O:
+ doc: |
+ Z=8, name="oxygen", standard_atomic_weight=15.999
+ F:
+ doc: |
+ Z=9, name="fluorine", standard_atomic_weight=18.9984
+ Ne:
+ doc: |
+ Z=10, name="neon", standard_atomic_weight=20.1797
+ Na:
+ doc: |
+ Z=11, name="sodium", standard_atomic_weight=22.9898
+ Mg:
+ doc: |
+ Z=12, name="magnesium", standard_atomic_weight=24.305
+ Al:
+ doc: |
+ Z=13, name="aluminum", standard_atomic_weight=26.9815
+ Si:
+ doc: |
+ Z=14, name="silicon", standard_atomic_weight=28.085
+ P:
+ doc: |
+ Z=15, name="phosphorus", standard_atomic_weight=30.9738
+ S:
+ doc: |
+ Z=16, name="sulfur", standard_atomic_weight=32.06
+ Cl:
+ doc: |
+ Z=17, name="chlorine", standard_atomic_weight=35.453
+ Ar:
+ doc: |
+ Z=18, name="argon", standard_atomic_weight=39.948
+ K:
+ doc: |
+ Z=19, name="potassium", standard_atomic_weight=39.0983
+ Ca:
+ doc: |
+ Z=20, name="calcium", standard_atomic_weight=40.078
+ Sc:
+ doc: |
+ Z=21, name="scandium", standard_atomic_weight=44.9559
+ Ti:
+ doc: |
+ Z=22, name="titanium", standard_atomic_weight=47.867
+ V:
+ doc: |
+ Z=23, name="vanadium", standard_atomic_weight=50.9415
+ Cr:
+ doc: |
+ Z=24, name="chromium", standard_atomic_weight=51.996
+ Mn:
+ doc: |
+ Z=25, name="manganese", standard_atomic_weight=54.938
+ Fe:
+ doc: |
+ Z=26, name="iron", standard_atomic_weight=55.845
+ Co:
+ doc: |
+ Z=27, name="cobalt", standard_atomic_weight=58.9332
+ Ni:
+ doc: |
+ Z=28, name="nickel", standard_atomic_weight=58.6934
+ Cu:
+ doc: |
+ Z=29, name="copper", standard_atomic_weight=63.546
+ Zn:
+ doc: |
+ Z=30, name="zinc", standard_atomic_weight=65.38
+ Ga:
+ doc: |
+ Z=31, name="gallium", standard_atomic_weight=69.72
+ Ge:
+ doc: |
+ Z=32, name="germanium", standard_atomic_weight=72.63
+ As:
+ doc: |
+ Z=33, name="arsenic", standard_atomic_weight=74.9216
+ Se:
+ doc: |
+ Z=34, name="selenium", standard_atomic_weight=78.971
+ Br:
+ doc: |
+ Z=35, name="bromine", standard_atomic_weight=79.904
+ Kr:
+ doc: |
+ Z=36, name="krypton", standard_atomic_weight=83.798
+ Rb:
+ doc: |
+ Z=37, name="rubidium", standard_atomic_weight=85.4678
+ Sr:
+ doc: |
+ Z=38, name="strontium", standard_atomic_weight=87.62
+ Y:
+ doc: |
+ Z=39, name="yttrium", standard_atomic_weight=88.9058
+ Zr:
+ doc: |
+ Z=40, name="zirconium", standard_atomic_weight=91.224
+ Nb:
+ doc: |
+ Z=41, name="niobium", standard_atomic_weight=92.9064
+ Mo:
+ doc: |
+ Z=42, name="molybdenum", standard_atomic_weight=95.95
+ Tc:
+ doc: |
+ Z=43, name="technetium", standard_atomic_weight=97.907
+ Ru:
+ doc: |
+ Z=44, name="ruthenium", standard_atomic_weight=101.07
+ Rh:
+ doc: |
+ Z=45, name="rhodium", standard_atomic_weight=102.906
+ Pd:
+ doc: |
+ Z=46, name="palladium", standard_atomic_weight=106.42
+ Ag:
+ doc: |
+ Z=47, name="silver", standard_atomic_weight=107.868
+ Cd:
+ doc: |
+ Z=48, name="cadmium", standard_atomic_weight=112.414
+ In:
+ doc: |
+ Z=49, name="indium", standard_atomic_weight=114.818
+ Sn:
+ doc: |
+ Z=50, name="tin", standard_atomic_weight=118.71
+ Sb:
+ doc: |
+ Z=51, name="antimony", standard_atomic_weight=121.76
+ Te:
+ doc: |
+ Z=52, name="tellurium", standard_atomic_weight=127.6
+ I:
+ doc: |
+ Z=53, name="iodine", standard_atomic_weight=126.905
+ Xe:
+ doc: |
+ Z=54, name="xenon", standard_atomic_weight=131.293
+ Cs:
+ doc: |
+ Z=55, name="cesium", standard_atomic_weight=132.905
+ Ba:
+ doc: |
+ Z=56, name="barium", standard_atomic_weight=137.327
+ La:
+ doc: |
+ Z=57, name="lanthanum", standard_atomic_weight=138.905
+ Ce:
+ doc: |
+ Z=58, name="cerium", standard_atomic_weight=140.116
+ Pr:
+ doc: |
+ Z=59, name="praseodymium", standard_atomic_weight=140.908
+ Nd:
+ doc: |
+ Z=60, name="neodymium", standard_atomic_weight=144.242
+ Pm:
+ doc: |
+ Z=61, name="promethium", standard_atomic_weight=145.0
+ Sm:
+ doc: |
+ Z=62, name="samarium", standard_atomic_weight=150.36
+ Eu:
+ doc: |
+ Z=63, name="europium", standard_atomic_weight=151.96
+ Gd:
+ doc: |
+ Z=64, name="gadolinium", standard_atomic_weight=157.25
+ Tb:
+ doc: |
+ Z=65, name="terbium", standard_atomic_weight=158.925
+ Dy:
+ doc: |
+ Z=66, name="dysprosium", standard_atomic_weight=162.5
+ Ho:
+ doc: |
+ Z=67, name="holmium", standard_atomic_weight=164.93
+ Er:
+ doc: |
+ Z=68, name="erbium", standard_atomic_weight=167.259
+ Tm:
+ doc: |
+ Z=69, name="thulium", standard_atomic_weight=168.934
+ Yb:
+ doc: |
+ Z=70, name="ytterbium", standard_atomic_weight=173.045
+ Lu:
+ doc: |
+ Z=71, name="lutetium", standard_atomic_weight=174.967
+ Hf:
+ doc: |
+ Z=72, name="hafnium", standard_atomic_weight=178.49
+ Ta:
+ doc: |
+ Z=73, name="tantalum", standard_atomic_weight=180.948
+ W:
+ doc: |
+ Z=74, name="tungsten", standard_atomic_weight=183.84
+ Re:
+ doc: |
+ Z=75, name="rhenium", standard_atomic_weight=186.207
+ Os:
+ doc: |
+ Z=76, name="osmium", standard_atomic_weight=190.23
+ Ir:
+ doc: |
+ Z=77, name="iridium", standard_atomic_weight=192.217
+ Pt:
+ doc: |
+ Z=78, name="platinum", standard_atomic_weight=195.084
+ Au:
+ doc: |
+ Z=79, name="gold", standard_atomic_weight=196.967
+ Hg:
+ doc: |
+ Z=80, name="mercury", standard_atomic_weight=200.592
+ Tl:
+ doc: |
+ Z=81, name="thallium", standard_atomic_weight=204.383
+ Pb:
+ doc: |
+ Z=82, name="lead", standard_atomic_weight=207.2
+ Bi:
+ doc: |
+ Z=83, name="bismuth", standard_atomic_weight=208.98
+ Po:
+ doc: |
+ Z=84, name="polonium", standard_atomic_weight=209.0
+ At:
+ doc: |
+ Z=85, name="astatine", standard_atomic_weight=210.0
+ Rn:
+ doc: |
+ Z=86, name="radon", standard_atomic_weight=222.0
+ Fr:
+ doc: |
+ Z=87, name="francium", standard_atomic_weight=223.0
+ Ra:
+ doc: |
+ Z=88, name="radium", standard_atomic_weight=226.0
+ Ac:
+ doc: |
+ Z=89, name="actinium", standard_atomic_weight=227.0
+ Th:
+ doc: |
+ Z=90, name="thorium", standard_atomic_weight=232.038
+ Pa:
+ doc: |
+ Z=91, name="protactinium", standard_atomic_weight=231.036
+ U:
+ doc: |
+ Z=92, name="uranium", standard_atomic_weight=238.029
+ Np:
+ doc: |
+ Z=93, name="neptunium", standard_atomic_weight=237.048
+ Pu:
+ doc: |
+ Z=94, name="plutonium", standard_atomic_weight=239.052
+ Am:
+ doc: |
+ Z=95, name="americium", standard_atomic_weight=243.0
+ Cm:
+ doc: |
+ Z=96, name="curium", standard_atomic_weight=247.0
+ Bk:
+ doc: |
+ Z=97, name="berkelium", standard_atomic_weight=247.0
+ Cf:
+ doc: |
+ Z=98, name="californium", standard_atomic_weight=251.0
+ Es:
+ doc: |
+ Z=99, name="einsteinium", standard_atomic_weight=252
+ Fm:
+ doc: |
+ Z=100, name="fermium", standard_atomic_weight=257
+ Md:
+ doc: |
+ Z=101, name="mendelevium", standard_atomic_weight=258
+ "No":
+ doc: |
+ Z=102, name="nobelium", standard_atomic_weight=259
+ Lr:
+ doc: |
+ Z=103, name="lawrencium", standard_atomic_weight=266
+ Rf:
+ doc: |
+ Z=104, name="rutherfordium", standard_atomic_weight=267
+ Db:
+ doc: |
+ Z=105, name="dubnium", standard_atomic_weight=268
+ Sg:
+ doc: |
+ Z=106, name="seaborgium", standard_atomic_weight=269
+ Bh:
+ doc: |
+ Z=107, name="bohrium", standard_atomic_weight=270
+ Hs:
+ doc: |
+ Z=108, name="hassium", standard_atomic_weight=269
+ Mt:
+ doc: |
+ Z=109, name="meitnerium", standard_atomic_weight=278
+ Ds:
+ doc: |
+ Z=110, name="darmstadtium", standard_atomic_weight=281
+ Rg:
+ doc: |
+ Z=111, name="roentgenium", standard_atomic_weight=282
+ Cn:
+ doc: |
+ Z=112, name="copernicium", standard_atomic_weight=285
+ Nh:
+ doc: |
+ Z=113, name="nihonium", standard_atomic_weight=286
+ Fl:
+ doc: |
+ Z=114, name="flerovium", standard_atomic_weight=289
+ Mc:
+ doc: |
+ Z=115, name="moscovium", standard_atomic_weight=290
+ Lv:
+ doc: |
+ Z=116, name="livermorium", standard_atomic_weight=293
+ Ts:
+ doc: |
+ Z=117, name="tennessine", standard_atomic_weight=294
+ Og:
+ doc: |
+ Z=118, name="oganesson", standard_atomic_weight=294
+ level_iupac:
+ doc: |
+ IUPAC symbol of the electronic level.
+ For each level, the electronic orbital configuration is also given
+
+ For reference, see Jenkins, R., Manne, R., Robin, R., & Senemaud, C. (1991).
+ IUPAC—nomenclature system for x-ray spectroscopy. X-Ray Spectrometry, 20(3), 149-155.
+ enumeration:
+ K:
+ doc: |
+ same as 1s in level_xray
+ L1:
+ doc: |
+ 2s
+ L2:
+ doc: |
+ 2p_{1/2}
+ L3:
+ doc: |
+ 2p_{3/2}
+ M1:
+ doc: |
+ 3s
+ M2:
+ doc: |
+ 3p_{1/2}
+ M3:
+ doc: |
+ 3p_{3/2}
+ M4:
+ doc: |
+ 3d_{3/2}
+ M5:
+ doc: |
+ 3d_{5/2}
+ N1:
+ doc: |
+ 4s
+ N2:
+ doc: |
+ 4p_{1/2}
+ N3:
+ doc: |
+ 4p_{3/2}
+ N4:
+ doc: |
+ 4d_{3/2}
+ N5:
+ doc: |
+ 4d_{5/2}
+ N6:
+ doc: |
+ 4f_{5/2}
+ N7:
+ doc: |
+ 4f_{7/2}
+ O1:
+ doc: |
+ 5s
+ O2:
+ doc: |
+ 5p_{1/2}
+ O3:
+ doc: |
+ 5p_{3/2}
+ O4:
+ doc: |
+ 5d_{3/2}
+ O5:
+ doc: |
+ 5d_{5/2}
+ O6:
+ doc: |
+ 5f_{5/2}
+ O7:
+ doc: |
+ 5f_{7/2}
+ P1:
+ doc: |
+ 6s
+ P2:
+ doc: |
+ 6p_{1/2}
+ P3:
+ doc: |
+ 6p_{3/2}
+ level_electron_config:
+ doc: |
+ Electronic orbital configuration of the electronic level.
+ enumeration:
+ 1s:
+ doc: |
+ same as K in level_xray
+ 2s:
+ doc: |
+ L1
+ 2p1/2:
+ doc: |
+ L3
+ 3s:
+ doc: |
+ M1
+ 3p1/2:
+ doc: |
+ M2
+ 3p3/2:
+ doc: |
+ M3
+ 3d3/2:
+ doc: |
+ M4
+ 3d5/2:
+ doc: |
+ M5
+ 4s:
+ doc: |
+ N1
+ 4p1/2:
+ doc: |
+ N2
+ 4p3/2:
+ doc: |
+ N3
+ 4d3/2:
+ doc: |
+ N4
+ 4d5/2:
+ doc: |
+ N5
+ 4f5/2:
+ doc: |
+ N6
+ 4f7/2:
+ doc: |
+ N7
+ 5s:
+ doc: |
+ O1
+ 5p1/2:
+ doc: |
+ O2
+ 5p3/2:
+ doc: |
+ O3
+ 5d3/2:
+ doc: |
+ O4
+ 5d5/2:
+ doc: |
+ O5
+ 5f5/2:
+ doc: |
+ O6
+ 5f7/2:
+ doc: |
+ O7
+ 6s:
+ doc: |
+ P1
+ 6p1/2:
+ doc: |
+ P2
+ 6p3/2:
+ doc: |
+ P3
+ \@description:
+ doc: |
+ description of X-ray electronic level
+ \@default:
+ doc: |
+ .. index:: plotting
+
+ Declares which child group contains a path leading
+ to a :ref:`NXdata` group.
+
+ It is recommended (as of NIAC2014) to use this attribute
+ to help define the path to the default dataset to be plotted.
+ See https://www.nexusformat.org/2014_How_to_find_default_data.html
+ for a summary of the discussion.
+
+# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
+# f15a465a52ff8afca9ae40f5a19eaaa00cf0defe098ab7a0b76a3692acd4bc29
+#
+#
+#
+#
+#
+# Electronic level probed in X-ray spectroscopy or resonance experiments.
+#
+#
+#
+# Symbol of the chemical element.
+#
+# For each, the atomic number, common English name, and standard atomic weight are also given.
+#
+#
+# -
+#
+# Z=1, name="hydrogen", standard_atomic_weight=1.0078
+#
+#
+# -
+#
+# Z=2, name="helium", standard_atomic_weight=4.0026
+#
+#
+# -
+#
+# Z=3, name="lithium", standard_atomic_weight=6.94
+#
+#
+# -
+#
+# Z=4, name="beryllium", standard_atomic_weight=9.0122
+#
+#
+# -
+#
+# Z=5, name="boron", standard_atomic_weight=10.81
+#
+#
+# -
+#
+# Z=6, name="carbon", standard_atomic_weight=12.011
+#
+#
+# -
+#
+# Z=7, name="nitrogen", standard_atomic_weight=14.007
+#
+#
+# -
+#
+# Z=8, name="oxygen", standard_atomic_weight=15.999
+#
+#
+# -
+#
+# Z=9, name="fluorine", standard_atomic_weight=18.9984
+#
+#
+# -
+#
+# Z=10, name="neon", standard_atomic_weight=20.1797
+#
+#
+# -
+#
+# Z=11, name="sodium", standard_atomic_weight=22.9898
+#
+#
+# -
+#
+# Z=12, name="magnesium", standard_atomic_weight=24.305
+#
+#
+# -
+#
+# Z=13, name="aluminum", standard_atomic_weight=26.9815
+#
+#
+# -
+#
+# Z=14, name="silicon", standard_atomic_weight=28.085
+#
+#
+# -
+#
+# Z=15, name="phosphorus", standard_atomic_weight=30.9738
+#
+#
+# -
+#
+# Z=16, name="sulfur", standard_atomic_weight=32.06
+#
+#
+# -
+#
+# Z=17, name="chlorine", standard_atomic_weight=35.453
+#
+#
+# -
+#
+# Z=18, name="argon", standard_atomic_weight=39.948
+#
+#
+# -
+#
+# Z=19, name="potassium", standard_atomic_weight=39.0983
+#
+#
+# -
+#
+# Z=20, name="calcium", standard_atomic_weight=40.078
+#
+#
+# -
+#
+# Z=21, name="scandium", standard_atomic_weight=44.9559
+#
+#
+# -
+#
+# Z=22, name="titanium", standard_atomic_weight=47.867
+#
+#
+# -
+#
+# Z=23, name="vanadium", standard_atomic_weight=50.9415
+#
+#
+# -
+#
+# Z=24, name="chromium", standard_atomic_weight=51.996
+#
+#
+# -
+#
+# Z=25, name="manganese", standard_atomic_weight=54.938
+#
+#
+# -
+#
+# Z=26, name="iron", standard_atomic_weight=55.845
+#
+#
+# -
+#
+# Z=27, name="cobalt", standard_atomic_weight=58.9332
+#
+#
+# -
+#
+# Z=28, name="nickel", standard_atomic_weight=58.6934
+#
+#
+# -
+#
+# Z=29, name="copper", standard_atomic_weight=63.546
+#
+#
+# -
+#
+# Z=30, name="zinc", standard_atomic_weight=65.38
+#
+#
+# -
+#
+# Z=31, name="gallium", standard_atomic_weight=69.72
+#
+#
+# -
+#
+# Z=32, name="germanium", standard_atomic_weight=72.63
+#
+#
+# -
+#
+# Z=33, name="arsenic", standard_atomic_weight=74.9216
+#
+#
+# -
+#
+# Z=34, name="selenium", standard_atomic_weight=78.971
+#
+#
+# -
+#
+# Z=35, name="bromine", standard_atomic_weight=79.904
+#
+#
+# -
+#
+# Z=36, name="krypton", standard_atomic_weight=83.798
+#
+#
+# -
+#
+# Z=37, name="rubidium", standard_atomic_weight=85.4678
+#
+#
+# -
+#
+# Z=38, name="strontium", standard_atomic_weight=87.62
+#
+#
+# -
+#
+# Z=39, name="yttrium", standard_atomic_weight=88.9058
+#
+#
+# -
+#
+# Z=40, name="zirconium", standard_atomic_weight=91.224
+#
+#
+# -
+#
+# Z=41, name="niobium", standard_atomic_weight=92.9064
+#
+#
+# -
+#
+# Z=42, name="molybdenum", standard_atomic_weight=95.95
+#
+#
+# -
+#
+# Z=43, name="technetium", standard_atomic_weight=97.907
+#
+#
+# -
+#
+# Z=44, name="ruthenium", standard_atomic_weight=101.07
+#
+#
+# -
+#
+# Z=45, name="rhodium", standard_atomic_weight=102.906
+#
+#
+# -
+#
+# Z=46, name="palladium", standard_atomic_weight=106.42
+#
+#
+# -
+#
+# Z=47, name="silver", standard_atomic_weight=107.868
+#
+#
+# -
+#
+# Z=48, name="cadmium", standard_atomic_weight=112.414
+#
+#
+# -
+#
+# Z=49, name="indium", standard_atomic_weight=114.818
+#
+#
+# -
+#
+# Z=50, name="tin", standard_atomic_weight=118.71
+#
+#
+# -
+#
+# Z=51, name="antimony", standard_atomic_weight=121.76
+#
+#
+# -
+#
+# Z=52, name="tellurium", standard_atomic_weight=127.6
+#
+#
+# -
+#
+# Z=53, name="iodine", standard_atomic_weight=126.905
+#
+#
+# -
+#
+# Z=54, name="xenon", standard_atomic_weight=131.293
+#
+#
+# -
+#
+# Z=55, name="cesium", standard_atomic_weight=132.905
+#
+#
+# -
+#
+# Z=56, name="barium", standard_atomic_weight=137.327
+#
+#
+# -
+#
+# Z=57, name="lanthanum", standard_atomic_weight=138.905
+#
+#
+# -
+#
+# Z=58, name="cerium", standard_atomic_weight=140.116
+#
+#
+# -
+#
+# Z=59, name="praseodymium", standard_atomic_weight=140.908
+#
+#
+# -
+#
+# Z=60, name="neodymium", standard_atomic_weight=144.242
+#
+#
+# -
+#
+# Z=61, name="promethium", standard_atomic_weight=145.0
+#
+#
+# -
+#
+# Z=62, name="samarium", standard_atomic_weight=150.36
+#
+#
+# -
+#
+# Z=63, name="europium", standard_atomic_weight=151.96
+#
+#
+# -
+#
+# Z=64, name="gadolinium", standard_atomic_weight=157.25
+#
+#
+# -
+#
+# Z=65, name="terbium", standard_atomic_weight=158.925
+#
+#
+# -
+#
+# Z=66, name="dysprosium", standard_atomic_weight=162.5
+#
+#
+# -
+#
+# Z=67, name="holmium", standard_atomic_weight=164.93
+#
+#
+# -
+#
+# Z=68, name="erbium", standard_atomic_weight=167.259
+#
+#
+# -
+#
+# Z=69, name="thulium", standard_atomic_weight=168.934
+#
+#
+# -
+#
+# Z=70, name="ytterbium", standard_atomic_weight=173.045
+#
+#
+# -
+#
+# Z=71, name="lutetium", standard_atomic_weight=174.967
+#
+#
+# -
+#
+# Z=72, name="hafnium", standard_atomic_weight=178.49
+#
+#
+# -
+#
+# Z=73, name="tantalum", standard_atomic_weight=180.948
+#
+#
+# -
+#
+# Z=74, name="tungsten", standard_atomic_weight=183.84
+#
+#
+# -
+#
+# Z=75, name="rhenium", standard_atomic_weight=186.207
+#
+#
+# -
+#
+# Z=76, name="osmium", standard_atomic_weight=190.23
+#
+#
+# -
+#
+# Z=77, name="iridium", standard_atomic_weight=192.217
+#
+#
+# -
+#
+# Z=78, name="platinum", standard_atomic_weight=195.084
+#
+#
+# -
+#
+# Z=79, name="gold", standard_atomic_weight=196.967
+#
+#
+# -
+#
+# Z=80, name="mercury", standard_atomic_weight=200.592
+#
+#
+# -
+#
+# Z=81, name="thallium", standard_atomic_weight=204.383
+#
+#
+# -
+#
+# Z=82, name="lead", standard_atomic_weight=207.2
+#
+#
+# -
+#
+# Z=83, name="bismuth", standard_atomic_weight=208.98
+#
+#
+# -
+#
+# Z=84, name="polonium", standard_atomic_weight=209.0
+#
+#
+# -
+#
+# Z=85, name="astatine", standard_atomic_weight=210.0
+#
+#
+# -
+#
+# Z=86, name="radon", standard_atomic_weight=222.0
+#
+#
+# -
+#
+# Z=87, name="francium", standard_atomic_weight=223.0
+#
+#
+# -
+#
+# Z=88, name="radium", standard_atomic_weight=226.0
+#
+#
+# -
+#
+# Z=89, name="actinium", standard_atomic_weight=227.0
+#
+#
+# -
+#
+# Z=90, name="thorium", standard_atomic_weight=232.038
+#
+#
+# -
+#
+# Z=91, name="protactinium", standard_atomic_weight=231.036
+#
+#
+# -
+#
+# Z=92, name="uranium", standard_atomic_weight=238.029
+#
+#
+# -
+#
+# Z=93, name="neptunium", standard_atomic_weight=237.048
+#
+#
+# -
+#
+# Z=94, name="plutonium", standard_atomic_weight=239.052
+#
+#
+# -
+#
+# Z=95, name="americium", standard_atomic_weight=243.0
+#
+#
+# -
+#
+# Z=96, name="curium", standard_atomic_weight=247.0
+#
+#
+# -
+#
+# Z=97, name="berkelium", standard_atomic_weight=247.0
+#
+#
+# -
+#
+# Z=98, name="californium", standard_atomic_weight=251.0
+#
+#
+# -
+#
+# Z=99, name="einsteinium", standard_atomic_weight=252
+#
+#
+# -
+#
+# Z=100, name="fermium", standard_atomic_weight=257
+#
+#
+# -
+#
+# Z=101, name="mendelevium", standard_atomic_weight=258
+#
+#
+# -
+#
+# Z=102, name="nobelium", standard_atomic_weight=259
+#
+#
+# -
+#
+# Z=103, name="lawrencium", standard_atomic_weight=266
+#
+#
+# -
+#
+# Z=104, name="rutherfordium", standard_atomic_weight=267
+#
+#
+# -
+#
+# Z=105, name="dubnium", standard_atomic_weight=268
+#
+#
+# -
+#
+# Z=106, name="seaborgium", standard_atomic_weight=269
+#
+#
+# -
+#
+# Z=107, name="bohrium", standard_atomic_weight=270
+#
+#
+# -
+#
+# Z=108, name="hassium", standard_atomic_weight=269
+#
+#
+# -
+#
+# Z=109, name="meitnerium", standard_atomic_weight=278
+#
+#
+# -
+#
+# Z=110, name="darmstadtium", standard_atomic_weight=281
+#
+#
+# -
+#
+# Z=111, name="roentgenium", standard_atomic_weight=282
+#
+#
+# -
+#
+# Z=112, name="copernicium", standard_atomic_weight=285
+#
+#
+# -
+#
+# Z=113, name="nihonium", standard_atomic_weight=286
+#
+#
+# -
+#
+# Z=114, name="flerovium", standard_atomic_weight=289
+#
+#
+# -
+#
+# Z=115, name="moscovium", standard_atomic_weight=290
+#
+#
+# -
+#
+# Z=116, name="livermorium", standard_atomic_weight=293
+#
+#
+# -
+#
+# Z=117, name="tennessine", standard_atomic_weight=294
+#
+#
+# -
+#
+# Z=118, name="oganesson", standard_atomic_weight=294
+#
+#
+#
+#
+#
+#
+# IUPAC symbol of the electronic level.
+# For each level, the electronic orbital configuration is also given
+#
+# For reference, see Jenkins, R., Manne, R., Robin, R., & Senemaud, C. (1991).
+# IUPAC—nomenclature system for x-ray spectroscopy. X-Ray Spectrometry, 20(3), 149-155.
+#
+#
+# -
+#
+# same as 1s in level_xray
+#
+#
+# -
+#
+# 2s
+#
+#
+# -
+#
+# 2p_{1/2}
+#
+#
+# -
+#
+# 2p_{3/2}
+#
+#
+# -
+#
+# 3s
+#
+#
+# -
+#
+# 3p_{1/2}
+#
+#
+# -
+#
+# 3p_{3/2}
+#
+#
+# -
+#
+# 3d_{3/2}
+#
+#
+# -
+#
+# 3d_{5/2}
+#
+#
+# -
+#
+# 4s
+#
+#
+# -
+#
+# 4p_{1/2}
+#
+#
+# -
+#
+# 4p_{3/2}
+#
+#
+# -
+#
+# 4d_{3/2}
+#
+#
+# -
+#
+# 4d_{5/2}
+#
+#
+# -
+#
+# 4f_{5/2}
+#
+#
+# -
+#
+# 4f_{7/2}
+#
+#
+# -
+#
+# 5s
+#
+#
+# -
+#
+# 5p_{1/2}
+#
+#
+# -
+#
+# 5p_{3/2}
+#
+#
+# -
+#
+# 5d_{3/2}
+#
+#
+# -
+#
+# 5d_{5/2}
+#
+#
+# -
+#
+# 5f_{5/2}
+#
+#
+# -
+#
+# 5f_{7/2}
+#
+#
+# -
+#
+# 6s
+#
+#
+# -
+#
+# 6p_{1/2}
+#
+#
+# -
+#
+# 6p_{3/2}
+#
+#
+#
+#
+#
+#
+# Electronic orbital configuration of the electronic level.
+#
+#
+# -
+#
+# same as K in level_xray
+#
+#
+# -
+#
+# L1
+#
+#
+# -
+#
+# L3
+#
+#
+# -
+#
+# M1
+#
+#
+# -
+#
+# M2
+#
+#
+# -
+#
+# M3
+#
+#
+# -
+#
+# M4
+#
+#
+# -
+#
+# M5
+#
+#
+# -
+#
+# N1
+#
+#
+# -
+#
+# N2
+#
+#
+# -
+#
+# N3
+#
+#
+# -
+#
+# N4
+#
+#
+# -
+#
+# N5
+#
+#
+# -
+#
+# N6
+#
+#
+# -
+#
+# N7
+#
+#
+# -
+#
+# O1
+#
+#
+# -
+#
+# O2
+#
+#
+# -
+#
+# O3
+#
+#
+# -
+#
+# O4
+#
+#
+# -
+#
+# O5
+#
+#
+# -
+#
+# O6
+#
+#
+# -
+#
+# O7
+#
+#
+# -
+#
+# P1
+#
+#
+# -
+#
+# P2
+#
+#
+# -
+#
+# P3
+#
+#
+#
+#
+#
+#
+# description of X-ray electronic level
+#
+#
+#
+#
+# .. index:: plotting
+#
+# Declares which child group contains a path leading
+# to a :ref:`NXdata` group.
+#
+# It is recommended (as of NIAC2014) to use this attribute
+# to help define the path to the default dataset to be plotted.
+# See https://www.nexusformat.org/2014_How_to_find_default_data.html
+# for a summary of the discussion.
+#
+#
+#
diff --git a/contributed_definitions/nyaml/NXelectronanalyser.yaml b/contributed_definitions/nyaml/NXelectronanalyser.yaml
index 32c99bfb1a..66ed09a20c 100644
--- a/contributed_definitions/nyaml/NXelectronanalyser.yaml
+++ b/contributed_definitions/nyaml/NXelectronanalyser.yaml
@@ -1,6 +1,12 @@
category: base
-doc: |
- Subclass of NXinstrument to describe a photoelectron analyser.
+doc:
+- |
+ Basic class for describing a electron analyzer.
+- |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 12.59
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.59
symbols:
doc: |
The symbols used in the schema to specify e.g. dimensions of arrays
@@ -9,6 +15,8 @@ symbols:
physical quantity)
nsa: |
Number of slow axes (axes acquired scanning a physical quantity)
+ n_transmission_function: |
+ Number of data points in the transmission function.
type: group
NXelectronanalyser(NXobject):
description(NX_CHAR):
@@ -21,22 +29,75 @@ NXelectronanalyser(NXobject):
type: NX_CHAR
doc: |
Acronym or other shorthand name
- energy_resolution(NX_FLOAT):
+ work_function(NX_FLOAT):
unit: NX_ENERGY
doc: |
- Energy resolution of the electron analyser (FWHM of gaussian broadening)
- momentum_resolution(NX_FLOAT):
- unit: NX_WAVENUMBER
+ Work function of the electron analyser.
+
+ The work function of a uniform surface of a conductor is the minimum energy required to remove
+ an electron from the interior of the solid to a vacuum level immediately outside the solid surface.
+
+ The kinetic energy :math:`E_K` of a photoelectron emitted from an energy-level with binding energy
+ :math:`E_B` below the Fermi level is given by :math:`E_K = h\nu - E_B - e \phi_{\mathrm{sample}}`,
+ where :math:`\phi_{\mathrm{sample}}` is the work function of the sample surface. In PES measurements,
+ the sample and the spectrometer (with work function :math:`\phi_{\mathrm{spectr.}}`) are electrically
+ connected and therefore their Fermi levels are aligned. Due to the difference in local vacuum level
+ between the sample and spectrometer, there exists an electric potential difference (contact potential)
+ :math:`\Delta\phi = \phi_{\mathrm{sample}} - \phi_{\mathrm{spectr.}}`. The measured kinetic energy of
+ a photoelectron in PES is therefore given by
+ :math:`E_K^{\mathrm{meas.}} = h\nu - E_B + \Delta \phi = h\nu - E_B - e \phi_{\mathrm{spectr.}}`.
+ As a result, the measured kinetic energy :math:`E_K^{\mathrm{meas.}}` of a photoelectron is `independent`
+ of the sample work function. Nonetheless, the work function :math:`\phi_s` needs to be known to
+ accurately determine the binding energy scale.
+ energy_resolution(NXresolution):
+ doc:
+ - |
+ Energy resolution of the analyser with the current setting. May be linked from an
+ NXcalibration.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 10.24
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.24
+ physical_quantity:
+ enumeration: [energy]
+ resolution(NX_FLOAT):
+ unit: NX_ENERGY
+ resolution_errors(NX_FLOAT):
+ unit: NX_ENERGY
+ momentum_resolution(NXresolution):
doc: |
Momentum resolution of the electron analyser (FWHM)
- angular_resolution(NX_FLOAT):
- unit: NX_ANGLE
+ physical_quantity:
+ enumeration: [momentum]
+ resolution(NX_FLOAT):
+ unit: NX_WAVENUMBER
+ resolution_errors(NX_FLOAT):
+ unit: NX_WAVENUMBER
+ angular_resolution(NXresolution):
doc: |
Angular resolution of the electron analyser (FWHM)
- spatial_resolution(NX_FLOAT):
- unit: NX_LENGTH
- doc: |
+ physical_quantity:
+ enumeration: [angle]
+ resolution(NX_FLOAT):
+ unit: NX_ANGLE
+ resolution_errors(NX_FLOAT):
+ unit: NX_ANGLE
+ spatial_resolution(NXresolution):
+ doc:
+ - |
Spatial resolution of the electron analyser (Airy disk radius)
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 10.15 ff.
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.15
+ physical_quantity:
+ enumeration: [length]
+ resolution(NX_FLOAT):
+ unit: NX_LENGTH
+ resolution_errors(NX_FLOAT):
+ unit: NX_LENGTH
fast_axes(NX_CHAR):
doc: |
List of the axes that are acquired simultaneously by the detector.
@@ -63,17 +124,54 @@ NXelectronanalyser(NXobject):
dimensions:
rank: 1
dim: [[1, nsa]]
+ transmission_function(NXdata):
+ doc:
+ - |
+ Transmission function of the electron analyser.
+ - |
+ The transmission function (TF) specifies the detection efficiency per solid angle for electrons of
+ different kinetic energy passing through the electron analyser. It depends on the spectrometer
+ geometry as well as operation settings such as lens mode and pass energy.
+ The transmission function is usually given as relative intensity vs. kinetic energy.
+ - |
+ The TF is used for calibration of the intensity scale in quantitative XPS. Without proper
+ transmission correction, a comparison of results measured from the same sample using different
+ operating modes for an instrument would show significant variations in atomic
+ concentrations.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 7.15 ff.
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:7.15
+ \@signal:
+ enumeration: [relative_intensity]
+ \@axes:
+ enumeration: [kinetic_energy]
+ kinetic_energy(NX_FLOAT):
+ unit: NX_ENERGY
+ doc: |
+ Kinetic energy values
+ dimensions:
+ rank: 1
+ dim: [[1, n_transmission_function]]
+ relative_intensity(NX_FLOAT):
+ unit: NX_UNITLESS
+ doc: |
+ Relative transmission efficiency for the given kinetic energies
+ dimensions:
+ rank: 1
+ dim: [[1, n_transmission_function]]
depends_on(NX_CHAR):
doc: |
- Refers to the last transformation specifying the positon of the manipulator in
- the NXtransformations chain.
+ Refers to the last transformation specifying the position of the electron analyser
+ in the NXtransformations chain.
(NXtransformations):
doc: |
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
+ 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.
@@ -91,20 +189,24 @@ NXelectronanalyser(NXobject):
Describes the electron detector
(NXdeflector):
doc: |
- Deflectors outside the main optics ensambles described by the subclasses
+ Deflectors outside the main optics ensembles described by the subclasses
(NXlens_em):
doc: |
- Individual lenses outside the main optics ensambles described by the subclasses
+ Individual lenses outside the main optics ensembles described by the subclasses
+ (NXfabrication):
+ (NXresolution):
+ doc: |
+ Any other resolution not explicitly named in this base class.
# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
-# 4d6adccbc47a79bb1c1a6e54f879331198408c0f0a4503f6aa9093df58cdea12
-#
+# 77bf48ca5f3c738f3a931e2f55804a586c60b70a3306bd5ad22a5fd8d75e1e89
+#
#
#
-#
+#
#
#
# The symbols used in the schema to specify e.g. dimensions of arrays
@@ -137,9 +239,18 @@ NXelectronanalyser(NXobject):
# Number of slow axes (axes acquired scanning a physical quantity)
#
#
+#
+#
+# Number of data points in the transmission function.
+#
+#
#
#
-# Subclass of NXinstrument to describe a photoelectron analyser.
+# 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
#
#
#
@@ -156,26 +267,84 @@ NXelectronanalyser(NXobject):
#
#
#
-#
+#
#
-# Energy resolution of the electron analyser (FWHM of gaussian broadening)
+# Work function of the electron analyser.
+#
+# The work function of a uniform surface of a conductor is the minimum energy required to remove
+# an electron from the interior of the solid to a vacuum level immediately outside the solid surface.
+#
+# The kinetic energy :math:`E_K` of a photoelectron emitted from an energy-level with binding energy
+# :math:`E_B` below the Fermi level is given by :math:`E_K = h\nu - E_B - e \phi_{\mathrm{sample}}`,
+# where :math:`\phi_{\mathrm{sample}}` is the work function of the sample surface. In PES measurements,
+# the sample and the spectrometer (with work function :math:`\phi_{\mathrm{spectr.}}`) are electrically
+# connected and therefore their Fermi levels are aligned. Due to the difference in local vacuum level
+# between the sample and spectrometer, there exists an electric potential difference (contact potential)
+# :math:`\Delta\phi = \phi_{\mathrm{sample}} - \phi_{\mathrm{spectr.}}`. The measured kinetic energy of
+# a photoelectron in PES is therefore given by
+# :math:`E_K^{\mathrm{meas.}} = h\nu - E_B + \Delta \phi = h\nu - E_B - e \phi_{\mathrm{spectr.}}`.
+# As a result, the measured kinetic energy :math:`E_K^{\mathrm{meas.}}` of a photoelectron is `independent`
+# of the sample work function. Nonetheless, the work function :math:`\phi_s` needs to be known to
+# accurately determine the binding energy scale.
#
#
-#
+#
+#
+# Energy resolution of the analyser with the current setting. May be linked from an
+# NXcalibration.
+#
+# 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
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
#
# Momentum resolution of the electron analyser (FWHM)
#
-#
-#
+#
+#
+#
+#
+#
+#
+#
+#
+#
#
# Angular resolution of the electron analyser (FWHM)
#
-#
-#
+#
+#
+#
+#
+#
+#
+#
+#
+#
#
# Spatial resolution of the electron analyser (Airy disk radius)
+#
+# This concept is related to term `10.15 ff.`_ of the ISO 18115-1:2023 standard.
+#
+# .. _10.15 ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.15
#
-#
+#
+#
+#
+#
+#
+#
+#
+#
#
#
# List of the axes that are acquired simultaneously by the detector.
@@ -183,12 +352,12 @@ NXelectronanalyser(NXobject):
# 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"
+# :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']"
+# 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.
@@ -206,10 +375,55 @@ NXelectronanalyser(NXobject):
#
#
#
+#
+#
+# Transmission function of the electron analyser.
+#
+# The transmission function (TF) specifies the detection efficiency per solid angle for electrons of
+# different kinetic energy passing through the electron analyser. It depends on the spectrometer
+# geometry as well as operation settings such as lens mode and pass energy.
+# The transmission function is usually given as relative intensity vs. kinetic energy.
+#
+# The TF is used for calibration of the intensity scale in quantitative XPS. Without proper
+# transmission correction, a comparison of results measured from the same sample using different
+# operating modes for an instrument would show significant variations in atomic
+# concentrations.
+#
+# This concept is related to term `7.15 ff.`_ of the ISO 18115-1:2023 standard.
+#
+# .. _7.15 ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:7.15
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# Kinetic energy values
+#
+#
+#
+#
+#
+#
+#
+# Relative transmission efficiency for the given kinetic energies
+#
+#
+#
+#
+#
+#
#
#
-# Refers to the last transformation specifying the positon of the manipulator in
-# the NXtransformations chain.
+# Refers to the last transformation specifying the position of the electron analyser
+# in the NXtransformations chain.
#
#
#
@@ -218,7 +432,7 @@ NXelectronanalyser(NXobject):
# 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
+# 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.
@@ -246,12 +460,18 @@ NXelectronanalyser(NXobject):
#
#
#
-# Deflectors outside the main optics ensambles described by the subclasses
+# Deflectors outside the main optics ensembles described by the subclasses
#
#
#
#
-# Individual lenses outside the main optics ensambles described by the subclasses
+# Individual lenses outside the main optics ensembles described by the subclasses
+#
+#
+#
+#
+#
+# Any other resolution not explicitly named in this base class.
#
#
#
diff --git a/contributed_definitions/nyaml/NXenergydispersion.yaml b/contributed_definitions/nyaml/NXenergydispersion.yaml
index 476e8af2b3..e7c0da250b 100644
--- a/contributed_definitions/nyaml/NXenergydispersion.yaml
+++ b/contributed_definitions/nyaml/NXenergydispersion.yaml
@@ -10,9 +10,15 @@ NXenergydispersion(NXobject):
mirror, retarding grid, etc.
pass_energy(NX_FLOAT):
unit: NX_ENERGY
- doc: |
+ doc:
+ - |
Energy of the electrons on the mean path of the analyser. Pass energy for
hemispherics, drift energy for tofs.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 12.63
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.63
center_energy(NX_FLOAT):
unit: NX_ENERGY
doc: |
@@ -25,31 +31,105 @@ NXenergydispersion(NXobject):
containing the extrema of the transmitted energy window (smaller number first).
With a swept scan of m steps it is a 2xm array of windows one for each
measurement point.
- (NXaperture):
- doc: |
- Size, position and shape of a slit in dispersive analyzer, e.g. entrance and
- exit slits.
diameter(NX_FLOAT):
unit: NX_LENGTH
doc: |
Diameter of the dispersive orbit
energy_scan_mode(NX_CHAR):
- doc: |
- Way of scanning the energy axis (fixed or sweep).
- enumeration: [fixed, sweep]
+ doc:
+ - |
+ Way of scanning the energy axis
+ enumeration:
+ fixed_analyser_transmission:
+ doc:
+ - |
+ constant :math:`\Delta E` mode, where the electron retardation (i.e., the fraction of pass energy to
+ kinetic energy, :math:`R = (E_K - WF/E_p)`, is scanned, but the pass energy :math:`E_p` is kept constant.
+ Here, :math:`WF` is the spectrometer work function.
+ This mode is often used in XPS/UPS because the energy resolution does not change with
+ changing energy (due to the constant pass energy).
+
+ Synonyms: constant :math:`\Delta E` mode, constant analyser energy mode, CAE mode, FAT mode
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 12.64
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.64
+ fixed_retardation_ratio:
+ doc:
+ - |
+ constant :math:`\Delta E/E` mode, where the pass energy is scanned such that the electron retardation
+ ratio is constant. In this mode, electrons of all energies are decelerated with this same
+ fixed factor. Thus, the pass energy is proportional to the kinetic energy. This mode is often
+ used in Auger electron spectroscopy (AES) to improve S/N for high-KE electrons, but this
+ leads to a changing energy resolution (:math:`\Delta E \sim E_p`) at different kinetic energies.
+ It can however also be used in XPS.
+
+ Synonyms: constant :math:`\Delta E/E` mode, constant retardation ratio mode, CRR mode, FRR mode
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 12.66
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.66
+ fixed_energy:
+ doc: |
+ In the fixed energy (FE) mode, the intensity for one single kinetic energy is measured for a
+ specified time. This mode is particulary useful during setup or alignment of the
+ electron analyzer, for analysis of stability of the excitation source or for sample
+ alignment.
+
+ Since the mode measures intensity as a function of time, the difference in channel signals
+ is not of interest. Therefore, the signals from all channels are summed.
+
+ Synonyms: FE mode
+ snapshot:
+ doc: |
+ Snapshot mode does not involve an energy scan and instead collects data from all channels of
+ the detector without averaging. The resulting spectrum reflects the energy distribution of
+ particles passing through the analyzer using the current settings. This mode is commonly used
+ to position the detection energy at the peak of a peak and record the signal, enabling faster
+ data acquisition within a limited energy range compared to FAT. Snapshot measurements are
+ particularly suitable for CCD and DLD detectors, which have multiple channels and can accurately
+ display the peak shape. While five or nine-channel detectors can also be used for snapshot
+ measurements, their energy resolution is relatively lower.
+ dither:
+ doc: |
+ In dither acquisition mode, the kinetic energy of the analyzer is randomly varied by a small value
+ around a central value and at fixed pass energy. This allows reducing or removing inhomogeneities
+ of the detector efficiency, such as e.g. imposed by a mesh in front of the detector.
+ Mostly relevant for CCD/DLD type of detectors.
tof_distance(NX_FLOAT):
unit: NX_LENGTH
doc: |
Length of the tof drift electrode
+ (NXaperture):
+ doc: |
+ Size, position and shape of a slit in dispersive analyzer, e.g. entrance and
+ exit slits.
(NXdeflector):
doc: |
Deflectors in the energy dispersive section
(NXlens_em):
doc: |
Individual lenses in the energy dispersive section
+ (NXfabrication):
+ depends_on(NX_CHAR):
+ doc: |
+ Specifies the position of the energy dispesive elemeent by pointing to the last
+ transformation in the transformation chain in the NXtransformations group.
+ (NXtransformations):
+ doc: |
+ Collection of axis-based translations and rotations to describe the location and
+ geometry of the energy dispersive element 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.
# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
-# 165eadae7ad3081364c89bc4229eb2a01d197b0706e2c663e07201dc088a5069
+# 5ec0b4e79d6a2e0a14bf64b92d23ab4273e3ea41533960a96cf923ecaaf90fdd
#
#
#
-#
+#
#
# Subclass of NXelectronanalyser to describe the energy dispersion section of a
# photoelectron analyser.
@@ -88,6 +168,10 @@ NXenergydispersion(NXobject):
#
# Energy of the electrons on the mean path of the analyser. Pass energy for
# hemispherics, drift energy for tofs.
+#
+# Refers to Term `12.63`_ of the ISO 18115-1:2023 specification.
+#
+# .. _12.63: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.63
#
#
#
@@ -118,6 +202,11 @@ NXenergydispersion(NXobject):
#
#
# Way of scanning the energy axis (fixed or sweep).
+#
+# Refers to Terms `12.65`_ and `12.66`_ of the ISO 18115-1:2023 specification.
+#
+# .. _12.65: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.65
+# .. _12.66: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.66
#
#
#
@@ -139,4 +228,17 @@ NXenergydispersion(NXobject):
# Individual lenses in the energy dispersive section
#
#
+#
+#
+#
+# Collection of axis-based translations and rotations to describe the location and
+# geometry of the energy dispersive element 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.
+#
+#
#
diff --git a/contributed_definitions/nyaml/NXmanipulator.yaml b/contributed_definitions/nyaml/NXmanipulator.yaml
index bbdbc71ff7..eea2d55b7e 100644
--- a/contributed_definitions/nyaml/NXmanipulator.yaml
+++ b/contributed_definitions/nyaml/NXmanipulator.yaml
@@ -13,32 +13,124 @@ NXmanipulator(NXobject):
type(NX_CHAR):
doc: |
Type of manipulator, Hexapod, Rod, etc.
- cryocoolant(NX_BOOLEAN):
+ cryostat(NXactuator):
doc: |
- Is cryocoolant flowing through the manipulator?
- cryostat_temperature(NX_FLOAT):
- unit: NX_TEMPERATURE
+ Cryostat for cooling the sample.
+ physical_quantity:
+ enumeration: [temperature]
+ (NXpid):
+ setpoint(NX_FLOAT):
+ unit: NX_TEMPERATURE
+ doc: |
+ In case of a fixed or averaged cooling temperature, this is the scalar temperature setpoint.
+ It can also be a 1D array of temperature setpoints (without time stamps).
+ setpoint_log(NXlog):
+ value(NX_FLOAT):
+ unit: NX_TEMPERATURE
+ doc: |
+ In the case of an experiment in which the temperature is changed and the setpoints are
+ recorded with time stamps, this is an array of length m of temperature setpoints.
+ temperature_sensor(NXsensor):
doc: |
- Temperature of the cryostat (coldest point)
- heater_power(NX_FLOAT):
- unit: NX_POWER
+ Temperature sensor measuring the sample temperature.
+ measurement:
+ enumeration: [temperature]
+ value(NX_FLOAT):
+ unit: NX_TEMPERATURE
+ doc: |
+ 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).
+ value_log(NXlog):
+ value(NX_FLOAT):
+ unit: NX_TEMPERATURE
+ doc: |
+ In the case of an experiment in which the temperature changes and is recorded with time stamps,
+ this is an array of length m of temperatures.
+ sample_heater(NXactuator):
doc: |
- Power in the heater for temperature control.
- sample_temperature(NX_FLOAT):
- unit: NX_TEMPERATURE
+ Device to heat the sample.
+ physical_quantity:
+ enumeration: [temperature]
+ heater_power(NX_FLOAT):
+ unit: NX_POWER
+ doc: |
+ In case of a fixed or averaged heating power, this is the scalar heater power.
+ It can also be a 1D array of heater powers (without time stamps).
+ heater_power_log(NXlog):
+ value(NX_FLOAT):
+ unit: NX_POWER
+ doc: |
+ In the case of an experiment in which the heater power is changed and recorded with time stamps,
+ this is an array of length m of temperature setpoints.
+ (NXpid):
+ setpoint(NX_FLOAT):
+ unit: NX_TEMPERATURE
+ doc: |
+ In case of a fixed or averaged temperature, this is the scalar temperature setpoint.
+ It can also be a 1D array of temperature setpoints (without time stamps).
+ setpoint_log(NXlog):
+ value(NX_FLOAT):
+ unit: NX_TEMPERATURE
+ doc: |
+ In the case of an experiment in which the temperature is changed and the setpoints are
+ recorded with time stamps, this is an array of length m of temperature setpoints.
+ drain_current_amperemeter(NXsensor):
doc: |
- Temperature at the closest point to the sample. This field may also be found in
- NXsample if present.
- drain_current(NX_FLOAT):
- unit: NX_CURRENT
+ Amperemeter measuring the drain current of the sample and sample holder.
+ measurement:
+ enumeration: [current]
+ value(NX_FLOAT):
+ unit: NX_CURRENT
+ doc: |
+ In case of a single or averaged drain current measurement, this is the scalar drain current measured between
+ the sample and sample holder. It can also be an 1D array of measured currents (without time stamps).
+ value_log(NXlog):
+ value(NX_FLOAT):
+ unit: NX_CURRENT
+ doc: |
+ In the case of an experiment in which the current changes and is recorded with
+ time stamps, this is an array of length m of currents.
+ sample_bias_potentiostat(NXactuator):
doc: |
- Current to neutralize the photoemission current. This field may also be found in
- NXsample if present.
- sample_bias(NX_FLOAT):
- unit: NX_CURRENT
+ Actuator applying a voltage to sample and sample holder.
+ physical_quantity:
+ enumeration: [voltage]
+ (NXpid):
+ setpoint(NX_FLOAT):
+ unit: NX_VOLTAGE
+ doc: |
+ In case of a fixed or averaged applied bias, this is the scalar voltage applied between
+ sample and sample holder. It can also be an 1D array of voltage setpoints (without time stamps).
+ setpoint_log(NXlog):
+ value(NX_FLOAT):
+ unit: NX_VOLTAGE
+ doc: |
+ In the case of an experiment in which the bias is changed and the setpoints are
+ recorded with time stamps, this is an array of length m of voltage setpoints.
+ sample_bias_voltmeter(NXsensor):
doc: |
- Possible bias of the sample with trespect to analyser ground. This field may
- also be found in NXsample if present.
+ Sensor measuring the voltage applied to sample and sample holder.
+ measurement:
+ enumeration: [voltage]
+ value(NX_FLOAT):
+ unit: NX_VOLTAGE
+ doc: |
+ 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).
+ value_log(NXlog):
+ value(NX_FLOAT):
+ unit: NX_VOLTAGE
+ doc: |
+ In the case of an experiment in which the bias changes and is recorded with
+ time stamps, this is an array of length m of voltages.
+ (NXactuator):
+ doc: |
+ Any additional actuator on the manipulator used to control an external
+ condition.
+ (NXsensor):
+ doc: |
+ Any additional sensors on the manipulator used to monitor an external condition.
(NXpositioner):
doc: |
Class to describe the motors that are used in the manipulator
@@ -56,16 +148,17 @@ NXmanipulator(NXobject):
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.
+ (NXfabrication):
# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
-# c527776b537badfe6de69128070ba851dfa9252963bb6cbb98c4af20298483ac
-#
+# 08d47f40a1d7fee3cd364f477c76cb02e60194cdcd1c00ff53d9b4e24d025ebd
+#
#
#
-#
+#
#
# Extension of NXpositioner to include fields to describe the use of manipulators
# in photoemission experiments.
@@ -102,39 +195,182 @@ NXmanipulator(NXobject):
# Type of manipulator, Hexapod, Rod, etc.
#
#
-#
+#
#
-# Is cryocoolant flowing through the manipulator?
+# Cryostat for cooling the sample.
#
-#
-#
+#
+#
+#
+#
+#
+#
+#
+#
+# In case of a fixed or averaged cooling temperature, this is the scalar temperature setpoint.
+# It can also be a 1D array of temperature setpoints (without time stamps).
+#
+#
+#
+#
+#
+# In the case of an experiment in which the temperature is changed and the setpoints are
+# recorded with time stamps, this is an array of length m of temperature setpoints.
+#
+#
+#
+#
+#
+#
#
-# Temperature of the cryostat (coldest point)
+# Temperature sensor measuring the sample temperature.
#
-#
-#
+#
+#
+#
+#
+#
+#
+#
+# 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).
+#
+#
+#
+#
+#
+# In the case of an experiment in which the temperature changes and is recorded with time stamps,
+# this is an array of length m of temperatures.
+#
+#
+#
+#
+#
#
-# Power in the heater for temperature control.
+# Device to heat the sample.
#
-#
-#
+#
+#
+#
+#
+#
+#
+#
+# In case of a fixed or averaged heating power, this is the scalar heater power.
+# It can also be a 1D array of heater powers (without time stamps).
+#
+#
+#
+#
+#
+# In the case of an experiment in which the heater power is changed and recorded with time stamps,
+# this is an array of length m of temperature setpoints.
+#
+#
+#
+#
+#
+#
+# In case of a fixed or averaged temperature, this is the scalar temperature setpoint.
+# It can also be a 1D array of temperature setpoints (without time stamps).
+#
+#
+#
+#
+#
+# In the case of an experiment in which the temperature is changed and the setpoints are
+# recorded with time stamps, this is an array of length m of temperature setpoints.
+#
+#
+#
+#
+#
+#
#
-# Temperature at the closest point to the sample. This field may also be found in
-# NXsample if present.
+# Amperemeter measuring the drain current of the sample and sample holder.
#
-#
-#
+#
+#
+#
+#
+#
+#
+#
+# In case of a single or averaged drain current measurement, this is the scalar drain current measured between
+# the sample and sample holder. It can also be an 1D array of measured currents (without time stamps).
+#
+#
+#
+#
+#
+# In the case of an experiment in which the current changes and is recorded with
+# time stamps, this is an array of length m of currents.
+#
+#
+#
+#
+#
#
-# Current to neutralize the photoemission current. This field may also be found in
-# NXsample if present.
+# Actuator applying a voltage to sample and sample holder.
#
-#
-#
+#
+#
+#
+#
+#
+#
+#
+#
+# In case of a fixed or averaged applied bias, this is the scalar voltage applied between
+# sample and sample holder. It can also be an 1D array of voltage setpoints (without time stamps).
+#
+#
+#
+#
+#
+# In the case of an experiment in which the bias is changed and the setpoints are
+# recorded with time stamps, this is an array of length m of voltage setpoints.
+#
+#
+#
+#
+#
+#
#
-# Possible bias of the sample with trespect to analyser ground. This field may
-# also be found in NXsample if present.
+# Sensor measuring the voltage applied to sample and sample holder.
#
-#
+#
+#
+#
+#
+#
+#
+#
+# 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).
+#
+#
+#
+#
+#
+# In the case of an experiment in which the bias changes and is recorded with
+# time stamps, this is an array of length m of voltages.
+#
+#
+#
+#
+#
+#
+# Any additional actuator on the manipulator used to control an external
+# condition.
+#
+#
+#
+#
+# Any additional sensors on the manipulator used to monitor an external condition.
+#
+#
#
#
# Class to describe the motors that are used in the manipulator
@@ -158,4 +394,5 @@ NXmanipulator(NXobject):
# the reference coordinate system.
#
#
+#
#
diff --git a/contributed_definitions/nyaml/NXmpes.yaml b/contributed_definitions/nyaml/NXmpes.yaml
index 75af9af646..c2c3cd579d 100644
--- a/contributed_definitions/nyaml/NXmpes.yaml
+++ b/contributed_definitions/nyaml/NXmpes.yaml
@@ -2,17 +2,60 @@ category: application
doc: |
This is the most general application definition for multidimensional
photoelectron spectroscopy.
+
+ Groups and fields are named according to the
+ `ISO 18115-1:2023`_ specification as well as the `IUPAC Recommendations 2020`_.
+
+ .. _ISO 18115-1:2023: https://www.iso.org/standard/74811.html
+ .. _IUPAC Recommendations 2020: https://doi.org/10.1515/pac-2019-0404
+symbols:
+ doc: |
+ The symbols used in the schema to specify e.g. dimensions of arrays
+ n_transmission_function: |
+ Number of data points in the transmission function.
type: group
NXmpes(NXobject):
(NXentry):
+ definition:
+ \@version:
+ enumeration: [NXmpes]
title:
start_time(NX_DATE_TIME):
doc: |
Datetime of the start of the measurement.
- definition:
- \@version:
- enumeration: [NXmpes]
+ 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.
+ end_time(NX_DATE_TIME):
+ exists: recommended
+ doc: |
+ 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.
+ method:
+ exists: recommended
+ doc: |
+ Name of the experimental method.
+
+ If applicable, this name should match the terms given by `Clause 11`_ of
+ the `ISO 18115-1:2023`_ specification.
+
+ Examples include:
+ * X-ray photoelectron spectroscopy (XPS)
+ * angle-resolved X-ray photoelectron spectroscopy (ARXPS)
+ * ultraviolet photoelectron spectroscopy (UPS)
+ * angle-resolved photoelectron spectroscopy (ARPES)
+ * hard X-ray photoemission spectroscopy (HAXPES)
+ * near ambient pressure X-ray photoelectron spectroscopy (NAPXPS)
+ * photoelectron emission microscopy (PEEM)
+ * electron spectroscopy for chemical analysis (ESCA)
+ * time-resolved angle-resolved X-ray photoelectron spectroscopy (trARPES)
+ * spin-resolved angle-resolved X-ray photoelectron spectroscopy (spin-ARPES)
+ * momentum microscopy
+
+ .. _ISO 18115-1:2023: https://www.iso.org/standard/74811.html
+ .. _Clause 11: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:sec:11
(NXuser):
+ exists: recommended
doc: |
Contact information of at least the user of the instrument or the investigator
who performed this experiment. Adding multiple users if relevant is recommended.
@@ -20,44 +63,96 @@ NXmpes(NXobject):
doc: |
Name of the user.
affiliation:
- exists: recommended
doc: |
- Name of the affiliation of the user at the point in time when the experiment was
+ Name of the affiliation of the user at the time when the experiment was
performed.
- address:
+ (NXinstrument):
+ doc:
+ - |
+ Description of the MPES spectrometer and its individual parts.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 12.58
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.58
+ energy_resolution(NXresolution):
exists: recommended
- doc: |
- Full address (street, street number, ZIP, city, country) of the user's
- affiliation.
- email:
- doc: |
- Email address of the user.
- orcid:
+ doc:
+ - |
+ Overall energy resolution of the MPES instrument
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 10.7 ff.
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.7
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 10.24
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.24
+ physical_quantity:
+ enumeration: [energy]
+ type:
+ exists: recommended
+ resolution(NX_FLOAT):
+ unit: NX_ENERGY
+ device_information(NXfabrication):
+ exists: recommended
+ vendor:
+ exists: recommended
+ model:
+ exists: recommended
+ identifier:
+ exists: recommended
+ source_TYPE(NXsource):
exists: recommended
doc: |
- Author ID defined by https://orcid.org/.
- (NXinstrument):
- energy_resolution(NX_FLOAT):
- unit: NX_ENERGY
- (NXsource):
- doc: |
- The source used to generate the primary photons. 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 and so on.
+ 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 source_TYPE means that multiple sources can
+ be provided. For example, in pump-probe experiments, it is possible to have both
+ a `source_probe` and a `source_pump`
type:
- enumeration: [Synchrotron X-ray Source, Rotating Anode X-ray, Fixed Tube X-ray, UV Laser, Free-Electron Laser, Optical Laser, UV Plasma Source, Metal Jet X-ray, HHG laser]
+ enumeration: [Synchrotron X-ray Source, Rotating Anode X-ray, Fixed Tube X-ray, UV Laser, Free-Electron Laser, Optical Laser, UV Plasma Source, Metal Jet X-ray, HHG laser, UV lamp, Monochromatized electron source, other]
+ type_other:
+ exists: optional
+ doc: |
+ Specification of type, may also go to name.
name:
+ exists: recommended
probe:
+ exists: optional
+ device_information(NXfabrication):
+ exists: recommended
+ vendor:
+ exists: recommended
+ model:
+ exists: recommended
+ identifier:
+ exists: recommended
+ associated_beam(NXbeam):
doc: |
- Type of probe. In photoemission it's always photons, so the full NIAC list is
- restricted.
- enumeration: [x-ray, ultraviolet, visible light]
- (NXbeam):
+ The beam emitted by this source.
+ Should be named with the same appendix, e.g.,
+ for `source_probe` it should refer to `beam_probe`.
+ Refers to the same concept as /NXentry/NXinstrument/beam_TYPE
+ and may be linked.
+ beam_TYPE(NXbeam):
+ doc: |
+ Properties of the photon beam at a given location.
+ Should be named with the same appendix as source_TYPE, e.g.,
+ for `source_probe` it should refer to `beam_probe`.
distance(NX_NUMBER):
unit: NX_LENGTH
+ exists: recommended
doc: |
- Distance of the point of evaluation of the beam from the sample surface.
+ 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.
incident_energy(NX_FLOAT):
unit: NX_ENERGY
incident_energy_spread(NX_NUMBER):
@@ -66,27 +161,54 @@ NXmpes(NXobject):
incident_polarization(NX_NUMBER):
exists: recommended
unit: NX_ANY
+ extent(NX_FLOAT):
+ exists: recommended
+ associated_source(NXsource):
+ doc: |
+ The source that emitted this beam.
+ Should be named with the same appendix, e.g.,
+ for `beam_probe` it should refer to `source_probe`.
+ Refers to the same concept as /NXentry/NXinstrument/source_TYPE
+ and may be linked.
(NXelectronanalyser):
- description:
- energy_resolution(NX_FLOAT):
+ device_information(NXfabrication):
exists: recommended
+ vendor:
+ exists: recommended
+ model:
+ exists: recommended
+ identifier:
+ exists: recommended
+ description:
+ work_function(NX_FLOAT):
unit: NX_ENERGY
- doc: |
- Energy resolution of the analyser with the current setting. May be linked from a
- NXcalibration.
- fast_axes(NX_CHAR):
+ exists: recommended
+ energy_resolution(NXresolution):
+ exists: recommended
+ type:
+ exists: recommended
+ physical_quantity:
+ enumeration: [energy]
+ resolution(NX_FLOAT):
+ fast_axes:
exists: recommended
slow_axes:
exists: recommended
+ transmission_function(NXdata):
+ exists: optional
(NXcollectioncolumn):
scheme:
doc: |
Scheme of the electron collection column.
- enumeration: [Standard, Angular dispersive, Selective area, Deflector, PEEM, Momentum Microscope]
+ enumeration: [angular dispersive, spatial dispersive, non-dispersive]
mode:
exists: recommended
projection:
exists: recommended
+ angular_acceptance(NX_FLOAT):
+ exists: optional
+ spatial_acceptance(NX_FLOAT):
+ exists: optional
field_aperture(NXaperture):
exists: optional
doc: |
@@ -97,6 +219,23 @@ NXmpes(NXobject):
doc: |
The size and position of the contrast aperture inserted in the column. To add
additional or other apertures use the APERTURE group of NXcollectioncolumn.
+ iris(NXaperture):
+ exists: optional
+ doc: |
+ Size, position and shape of the iris inserted in the column.
+
+ The iris is an aperture in the lens with a variable diameter which can reduce the number of
+ electrons entering the analyzer.
+
+ To add additional or other slits use the APERTURE group of NXcollectioncolumn.
+ device_information(NXfabrication):
+ exists: recommended
+ vendor:
+ exists: recommended
+ model:
+ exists: recommended
+ identifier:
+ exists: recommended
(NXenergydispersion):
scheme:
enumeration: [tof, hemispherical, double hemispherical, cylindrical mirror, display mirror, retarding grid]
@@ -106,13 +245,23 @@ NXmpes(NXobject):
entrance_slit(NXaperture):
exists: optional
doc: |
- Size, position and shape of the entrance slit in dispersive analyzers. To add
- additional or other slits use the APERTURE group of NXenergydispersion.
+ Size, position and shape of the entrance slit in dispersive analyzers.
+
+ To add additional or other slits use the APERTURE group of NXenergydispersion.
exit_slit(NXaperture):
exists: optional
doc: |
- Size, position and shape of the exit slit in dispersive analyzers. To add
- additional or other slits use the APERTURE group of NXenergydispersion.
+ Size, position and shape of the exit slit in dispersive analyzers.
+
+ To add additional or other slits use the APERTURE group of NXenergydispersion.
+ device_information(NXfabrication):
+ exists: recommended
+ vendor:
+ exists: recommended
+ model:
+ exists: recommended
+ identifier:
+ exists: recommended
(NXdetector):
amplifier_type:
exists: recommended
@@ -124,8 +273,49 @@ NXmpes(NXobject):
doc: |
Description of the detector type.
enumeration: [DLD, Phosphor+CCD, Phosphor+CMOS, ECMOS, Anode, Multi-anode]
- (NXdata):
+ device_information(NXfabrication):
+ exists: recommended
+ vendor:
+ exists: recommended
+ model:
+ exists: recommended
+ identifier:
+ exists: recommended
+ raw_data(NXdata):
exists: recommended
+ doc: |
+ Contains the raw data collected by the detector before calibration.
+ The data which is considered raw might change from experiment to experiment
+ due to hardware pre-processing of the data.
+ This field ideally collects the data with the lowest level of processing
+ possible.
+
+ The naming of fields should follow a convention to ensure compatibility.
+ It is recommend to use the following field names:
+
+ - **pixel_x**: Detector pixel in x direction.
+ - **pixel_y**: Detector pixel in y direction.
+ - **energy**: (Un)calibrated energy (kinetic or binding energy). Unit category: NX_ENERGY (e.g., eV).
+ - **kx**: (Un)calibrated x axis in k-space. Unit category: NX_ANY (e.g., 1/Angström).
+ - **ky**: (Un)calibrated y axis in k-space. Unit category: NX_ANY (1/Angström).
+ - **kz**: (Un)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.
+ Unit category: NX_ANGLE (° or rad)
+ - **ellipticity**: Ellipticity of the incoming or outgoing beam.
+ Unit category: NX_ANGLE (° or rad)
+ - **time_of_flight**: Total time of flight. Unit category: NX_TIME_OF_FLIGHT
+ - **time_of_flight_adc**: Time-of-flight values, analog-to-digital converted.
+ - **external_AXIS**: Describes an axis which is coming from outside the detectors scope.
\@signal:
enumeration: [raw]
raw(NX_NUMBER):
@@ -135,71 +325,247 @@ NXmpes(NXobject):
exists: optional
doc: |
Manipulator for positioning of the sample.
- sample_temperature(NX_FLOAT):
+ temperature_sensor(NXsensor):
exists: recommended
- unit: NX_TEMPERATURE
- drain_current(NX_FLOAT):
+ name:
+ exists: recommended
+ measurement:
+ enumeration: [temperature]
+ type:
+ exists: optional
+ value(NX_FLOAT):
+ sample_heater(NXactuator):
+ exists: optional
+ name:
+ exists: recommended
+ physical_quantity:
+ enumeration: [temperature]
+ type:
+ exists: optional
+ heater_power(NX_FLOAT):
+ (NXpid):
+ exists: recommended
+ setpoint(NX_FLOAT):
+ exists: recommended
+ cryostat(NXactuator):
+ exists: optional
+ name:
+ exists: recommended
+ physical_quantity:
+ enumeration: [temperature]
+ type:
+ exists: optional
+ (NXpid):
+ setpoint(NX_FLOAT):
+ exists: recommended
+ drain_current_amperemeter(NXsensor):
+ exists: optional
+ name:
+ exists: recommended
+ measurement:
+ enumeration: [current]
+ type:
+ exists: optional
+ value(NX_FLOAT):
+ sample_bias_voltmeter(NXsensor):
exists: recommended
- unit: NX_CURRENT
- sample_bias(NX_FLOAT):
+ name:
+ exists: recommended
+ measurement:
+ enumeration: [voltage]
+ type:
+ exists: optional
+ value(NX_FLOAT):
+ sample_bias_potentiostat(NXactuator):
+ exists: recommended
+ name:
+ exists: recommended
+ physical_quantity:
+ enumeration: [voltage]
+ type:
+ exists: optional
+ (NXpid):
+ exists: recommended
+ setpoint(NX_FLOAT):
+ exists: recommended
+ device_information(NXfabrication):
+ exists: recommended
+ vendor:
+ exists: recommended
+ model:
+ exists: recommended
+ identifier:
+ pressure_gauge(NXsensor):
+ exists: recommended
+ doc: |
+ Device to measure the gas pressure around the sample.
+ name:
+ exists: recommended
+ measurement:
+ enumeration: [pressure]
+ type:
+ exists: optional
+ value(NX_FLOAT):
+ unit: NX_PRESSURE
+ doc: |
+ 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).
+ value_log(NXlog):
+ exists: optional
+ value(NX_NUMBER):
+ unit: NX_PRESSURE
+ doc: |
+ In the case of an experiment in which the gas pressure changes and is recorded,
+ this is an array of length m of gas pressures.
+ flood_gun(NXactuator):
+ exists: optional
+ doc: |
+ Device to bring low-energy electrons to the sample for charge neutralization
+ name:
+ exists: recommended
+ physical_quantity:
+ enumeration: [current]
+ type:
+ exists: optional
+ current(NX_FLOAT):
exists: recommended
unit: NX_CURRENT
+ doc: |
+ In case of a fixed or averaged electron current, this is the scalar current.
+ It can also be an 1D array of output current (without time stamps).
+ current_log(NXlog):
+ exists: optional
+ value(NX_NUMBER):
+ unit: NX_CURRENT
+ doc: |
+ In the case of an experiment in which the electron current is changed and
+ recorded with time stamps, this is an array of length m of current setpoints.
(NXprocess):
+ exists: recommended
doc: |
Document an event of data processing, reconstruction, or analysis for this data.
Describe the appropriate axis calibrations for your experiment using one or more
of the following NXcalibrations
energy_calibration(NXcalibration):
exists: optional
- applied(NX_BOOLEAN):
- doc: |
- Has an energy calibration been applied?
+ doc: |
+ 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
calibrated_axis(NX_FLOAT):
exists: recommended
doc: |
This is the calibrated energy axis to be used for data plotting.
angular_calibration(NXcalibration):
exists: optional
- applied(NX_BOOLEAN):
- doc: |
- Has an angular calibration been applied?
calibrated_axis(NX_FLOAT):
exists: recommended
doc: |
This is the calibrated angular axis to be used for data plotting.
spatial_calibration(NXcalibration):
exists: optional
- applied(NX_BOOLEAN):
- doc: |
- Has an spatial calibration been applied?
calibrated_axis(NX_FLOAT):
exists: recommended
doc: |
This is the calibrated spatial axis to be used for data plotting.
momentum_calibration(NXcalibration):
exists: optional
- applied(NX_BOOLEAN):
- doc: |
- Has an momentum calibration been applied?
calibrated_axis(NX_FLOAT):
exists: recommended
doc: |
This is the momentum axis to be used for data plotting.
+ energy_referencing(NXcalibration):
+ exists: optional
+ doc:
+ - |
+ For energy referencing, the measured energies are corrected for the charging potential
+ (i.e., the electrical potential of the surface region of an insulating sample, caused by
+ irradiation) such that those energies correspond to a sample with no surface charge.
+ Usually, the energy axis is adjusted by shifting all energies uniformally until one
+ well-defined emission line peak (or the Fermi edge) is located at a known _correct_ energy.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 12.74 ff.
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.74
+ level(NXelectron_level):
+ exists: recommended
+ doc: |
+ Electronic core or valence level that was used for the calibration.
+ reference_peak:
+ doc: |
+ Reference peak that was used for the calibration.
+
+ For example: adventitious carbon | C-C | metallic Au | elemental Si | Fermi edge | vacuum level
+ binding_energy(NX_FLOAT):
+ exists: recommended
+ doc:
+ - |
+ The binding energy (in units of eV) that the specified emission line appeared at,
+ after adjusting the binding energy scale.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 12.16_ ff.
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+ offset(NX_FLOAT):
+ exists: recommended
+ doc: |
+ Offset between measured binding energy and calibrated binding energy of the
+ emission line.
+ calibrated_axis(NX_FLOAT):
+ exists: recommended
+ doc: |
+ This is the calibrated energy axis to be used for data plotting.
+
+ This should link to /entry/data/energy.
+ transmission_correction(NXcalibration):
+ exists: optional
+ doc: |
+ In the transmission correction, each intensity measurement for electrons of a given
+ kinetic energy is multiplied by the corresponding value in the relative_intensity
+ field of the transmission_function. This calibration procedure is used to account for
+ the different tranmsission efficiencies when using different lens modes.
+ transmission_function(NXdata):
+ exists: recommended
+ doc: |
+ Transmission function of the electron analyser.
+
+ The transmission function (TF) specifies the detection efficiency for electrons of
+ different kinetic energy passing through the electron analyser.
+ This can be a link to /entry/instrument/electronanalyser/transmission_function.
+ \@signal:
+ enumeration: [relative_intensity]
+ \@axes:
+ enumeration: [kinetic_energy]
+ kinetic_energy(NX_FLOAT):
+ unit: NX_ENERGY
+ doc: |
+ Kinetic energy values
+ dimensions:
+ rank: 1
+ dim: [[1, n_transmission_function]]
+ relative_intensity(NX_FLOAT):
+ unit: NX_UNITLESS
+ doc: |
+ Relative transmission efficiency for the given kinetic energies
+ dimensions:
+ rank: 1
+ dim: [[1, n_transmission_function]]
(NXsample):
name:
- chemical_formula:
- exists: recommended
- doc: |
- The chemical formula of the sample. For mixtures use the NXsample_component
- group in NXsample instead.
- sample_history(NXnote):
+ (NXsubstance):
exists: recommended
doc: |
- A descriptor to keep track of the treatment of the sample before entering the
- photoemission experiment. Ideally, a full report of the previous operations, in
- any format (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.
+ For samples containing a single pure substance. For mixtures use the
+ NXsample_component_set and NXsample_component group in NXsample instead.
+ molecular_formula_hill:
+ exists: recommended
+ doc: |
+ The chemical formula of the sample (using CIF conventions).
atom_types:
exists: recommended
doc: |
@@ -207,35 +573,125 @@ NXmpes(NXobject):
that are contained in the sample.
If the sample substance has multiple components, all
elements from each component must be included in `atom_types`.
- preparation_date(NX_DATE_TIME):
+ physical_form:
+ exists: recommended
+ situation:
+ exists: recommended
+ enumeration: [vacuum, inert atmosphere, oxidising atmosphere, reducing atmosphere]
+ (NXsample_history):
+ exists: recommended
+ doc: |
+ A set of activities that occurred to the sample prior to/during photoemission
+ experiment.
+ sample_preparation(NXphysical_process):
+ exists: recommended
+ doc: |
+ Details about the sample preparation for the MPES experiment (e.g. UHV cleaving,
+ in-situ growth, sputtering/annealing, etc.).
+ start_time(NX_DATE_TIME):
+ end_time(NX_DATE_TIME):
+ exists: recommended
+ method:
+ exists: recommended
+ doc: |
+ Details about the method of sample preparation before the MPES experiment.
+ temperature(NXenvironment):
exists: recommended
doc: |
- Date of preparation of the sample for the XPS experiment (i.e. cleaving, last
- annealing).
- preparation_description(NXnote):
+ Sample temperature (either controlled or just measured).
+ temperature_sensor(NXsensor):
+ doc: |
+ Temperature sensor measuring the sample temperature.
+ This should be a link to /entry/instrument/manipulator/temperature_sensor.
+ sample_heater(NXactuator):
+ exists: optional
+ doc: |
+ Device to heat the sample.
+ This should be a link to /entry/instrument/manipulator/sample_heater.
+ cryostat(NXactuator):
+ exists: optional
+ doc: |
+ Cryostat for cooling the sample.
+ This should be a link to /entry/instrument/manipulator/cryostat.
+ gas_pressure(NXenvironment):
+ exists: recommended
doc: |
- Description of the surface preparation technique for the XPS experiment, i.e.
- UHV cleaving, in-situ growth, sputtering/annealing etc. Ideally, a full report
- of the previous operations, in any format(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.
- temperature(NX_FLOAT):
- unit: NX_TEMPERATURE
+ Gas pressure surrounding the sample.
+ pressure_gauge(NXsensor):
+ doc: |
+ Gauge measuring the gas pressure.
+
+ This should be a link to /entry/instrument/pressure_gauge.
+ bias(NXenvironment):
+ exists: recommended
+ doc:
+ - |
+ Bias of the sample with respect to analyser ground.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 8.41
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:8.41
+ voltmeter(NXsensor):
+ doc: |
+ Sensor measuring the applied voltage.
+
+ This should be a link to /entry/instrument/manipulator/sample_bias_voltmeter.
+ potentiostat(NXactuator):
+ doc: |
+ Actuator applying a voltage to sample and sample holder.
+
+ This should be a link to /entry/instrument/manipulator/sample_bias_potentiostat.
+ drain_current(NXenvironment):
+ exists: optional
doc: |
- In the case of a fixed temperature measurement this is the scalar temperature of
- the sample. In the case of an experiment in which the temperature is changed and
- recoded, this is an array of length m of temperatures. This should be a link to
- /entry/instrument/manipulator/sample_temperature.
- situation:
- enumeration: [vacuum, inert atmosphere, oxidising atmosphere, reducing atmosphere]
- gas_pressure(NX_FLOAT):
- unit: NX_PRESSURE
- bias(NX_FLOAT):
- unit: NX_VOLTAGE
+ Drain current of the sample and sample holder.
+ amperemeter(NXsensor):
+ doc: |
+ Amperemeter measuring the drain current of the sample and sample holder.
+
+ This should be a link to /entry/instrument/manipulator/drain_current_amperemeter.
+ flood_gun_current(NXenvironment):
exists: optional
doc: |
- Voltage applied to sample and sample holder.
- (NXdata):
+ Current of low-energy electrons to the sample for charge neutralization.
+ flood_gun(NXactuator):
+ doc: |
+ Flood gun creating a current of low-energy electrons.
+
+ This should be a link to /entry/instrument/flood_gun.
+ data(NXdata):
+ doc: |
+ The default NXdata field containing a view on the measured data.
+ This NXdata field contains a collection of the main relevant fields (axes).
+ In NXmpes, it is required to provide an energy axis.
+ If you want to provide additional views on your data, you can additionally use
+ the generic NXdata group of NXentry.
+ The other data fields inside this NXdata group should be named according to conventions
+ to ensure compatibility. We recommened the following field names
+ for common data fields:
+
+ - **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)
\@signal:
enumeration: [data]
data(NX_NUMBER):
@@ -245,15 +701,61 @@ NXmpes(NXobject):
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.
+ energy(NX_NUMBER):
+ unit: NX_ENERGY
+ doc: |
+ Calibrated energy axis.
+
+ This could be a link to either
+ /entry/process/energy_calibration/calibrated_axis or
+ /entry/process/energy_correction/calibrated_axis.
+ \@type:
+ type: NX_CHAR
+ doc: |
+ The energy can be either stored as kinetic or as binding energy.
+ enumeration:
+ kinetic:
+ doc:
+ - |
+ Calibrated kinetic energy axis.
+ - |
+ In case the kinetic energy axis is referenced to the Fermi level :math:`E_F`
+ (e.g., in entry/process/energy_referencing), kinetic energies :math:`E` are
+ provided as :math:`E-E_F`.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 3.35
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:3.35
+ binding:
+ doc:
+ - |
+ Calibrated binding energy axis.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 12.16
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+ \@energy_indices:
+ exists: recommended
+ \@energy_depends:
+ type: NX_CHAR
+ exists: recommended
+ doc: |
+ The energy can be dispersed according to different strategies. ``energy_depends`` points to
+ the path of a field defining the calibrated axis on which the energy axis depends.
+
+ For example:
+ @energy_depends: 'entry/process/energy_calibration'
# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
-# e618cc098656aa72e4a5bd743c85c5d9c9caa79cbe85d96b6e06fafd1d165d1b
-#
+# 1656568af6e8d53182c876b0e3517cd8331bf7d5c1fbb1ddfaa48e07f37897d8
+#
#
#
#
+#
+#
+# The symbols used in the schema to specify e.g. dimensions of arrays
+#
+#
+#
+# Number of data points in the transmission function.
+#
+#
+#
#
# This is the most general application definition for multidimensional
# photoelectron spectroscopy.
+#
+# Groups and fields are named according to the
+# `ISO 18115-1:2023`_ specification as well as the `IUPAC Recommendations 2020`_.
+#
+# .. _ISO 18115-1:2023: https://www.iso.org/standard/74811.html
+# .. _IUPAC Recommendations 2020: https://doi.org/10.1515/pac-2019-0404
#
#
+#
+#
+#
+#
+#
+#
#
#
#
# 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.
#
#
-#
-#
-#
-#
-#
+#
+#
+# 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.
+#
#
-#
+#
+#
+# Name of the experimental method.
+#
+# If applicable, this name should match the terms given by `Clause 11`_ of
+# the `ISO 18115-1:2023`_ specification.
+#
+# Examples include:
+# * X-ray photoelectron spectroscopy (XPS)
+# * angle-resolved X-ray photoelectron spectroscopy (ARXPS)
+# * ultraviolet photoelectron spectroscopy (UPS)
+# * angle-resolved photoelectron spectroscopy (ARPES)
+# * hard X-ray photoemission spectroscopy (HAXPES)
+# * near ambient pressure X-ray photoelectron spectroscopy (NAPXPS)
+# * photoelectron emission microscopy (PEEM)
+# * electron spectroscopy for chemical analysis (ESCA)
+# * time-resolved angle-resolved X-ray photoelectron spectroscopy (trARPES)
+# * spin-resolved angle-resolved X-ray photoelectron spectroscopy (spin-ARPES)
+# * momentum microscopy
+#
+# .. _ISO 18115-1:2023: https://www.iso.org/standard/74811.html
+# .. _Clause 11: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:sec:11
+#
+#
+#
#
# Contact information of at least the user of the instrument or the investigator
# who performed this experiment. Adding multiple users if relevant is recommended.
@@ -299,37 +850,56 @@ NXmpes(NXobject):
# Name of the user.
#
#
-#
+#
#
-# Name of the affiliation of the user at the point in time when the experiment was
+# Name of the affiliation of the user at the time when the experiment was
# performed.
#
#
-#
-#
-# Full address (street, street number, ZIP, city, country) of the user's
-# affiliation.
-#
-#
-#
-#
-# Email address of the user.
-#
-#
-#
-#
-# Author ID defined by https://orcid.org/.
-#
-#
#
#
-#
-#
+#
+# Description of the MPES 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
+#
+#
+#
+# Overall energy resolution of the MPES instrument
+#
+# This concept is related to term `10.7 ff.`_ of the ISO 18115-1:2023 standard.
+#
+# .. _10.7 ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:10.7
+#
+# 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
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
#
-# The source used to generate the primary photons. 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 and so on.
+# 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 source_TYPE means that multiple sources can
+# be provided. For example, in pump-probe experiments, it is possible to have both
+# a `source_probe` and a `source_pump`
#
#
#
@@ -342,57 +912,96 @@ NXmpes(NXobject):
#
#
#
+#
+#
+#
#
#
-#
-#
+#
#
-# Type of probe. In photoemission it's always photons, so the full NIAC list is
-# restricted.
+# Specification of type, may also go to name.
#
-#
-#
-#
-#
-#
#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# The beam emitted by this source.
+# Should be named with the same appendix, e.g.,
+# for `source_probe` it should refer to `beam_probe`.
+# Refers to the same concept as /NXentry/NXinstrument/beam_TYPE
+# and may be linked.
+#
+#
#
-#
-#
+#
+#
+# Properties of the photon beam at a given location.
+# Should be named with the same appendix as source_TYPE, e.g.,
+# for `source_probe` it should refer to `beam_probe`.
+#
+#
#
-# Distance of the point of evaluation of the beam from the sample surface.
+# 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.
#
#
#
#
#
+#
+#
+#
+# The source that emitted this beam.
+# Should be named with the same appendix, e.g.,
+# for `beam_probe` it should refer to `source_probe`.
+# Refers to the same concept as /NXentry/NXinstrument/source_TYPE
+# and may be linked.
+#
+#
#
#
+#
+#
+#
+#
+#
#
-#
-#
-# Energy resolution of the analyser with the current setting. May be linked from a
-# NXcalibration.
-#
-#
-#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
#
+#
#
#
#
# Scheme of the electron collection column.
#
#
-#
-#
-#
-#
-#
-#
+#
+#
+#
#
#
#
#
+#
+#
#
#
# The size and position of the field aperture inserted in the column. To add
@@ -405,6 +1014,21 @@ NXmpes(NXobject):
# additional or other apertures use the APERTURE group of NXcollectioncolumn.
#
#
+#
+#
+# Size, position and shape of the iris inserted in the column.
+#
+# The iris is an aperture in the lens with a variable diameter which can reduce the number of
+# electrons entering the analyzer.
+#
+# To add additional or other slits use the APERTURE group of NXcollectioncolumn.
+#
+#
+#
+#
+#
+#
+#
#
#
#
@@ -421,16 +1045,23 @@ NXmpes(NXobject):
#
#
#
-# Size, position and shape of the entrance slit in dispersive analyzers. To add
-# additional or other slits use the APERTURE group of NXenergydispersion.
+# Size, position and shape of the entrance slit in dispersive analyzers.
+#
+# To add additional or other slits use the APERTURE group of NXenergydispersion.
#
#
#
#
-# Size, position and shape of the exit slit in dispersive analyzers. To add
-# additional or other slits use the APERTURE group of NXenergydispersion.
+# Size, position and shape of the exit slit in dispersive analyzers.
+#
+# To add additional or other slits use the APERTURE group of NXenergydispersion.
#
#
+#
+#
+#
+#
+#
#
#
#
@@ -455,7 +1086,46 @@ NXmpes(NXobject):
#
#
#
-#
+#
+#
+#
+#
+#
+#
+#
+# Contains the raw data collected by the detector before calibration.
+# The data which is considered raw might change from experiment to experiment
+# due to hardware pre-processing of the data.
+# This field ideally collects the data with the lowest level of processing
+# possible.
+#
+# The naming of fields should follow a convention to ensure compatibility.
+# It is recommend to use the following field names:
+#
+# - **pixel_x**: Detector pixel in x direction.
+# - **pixel_y**: Detector pixel in y direction.
+# - **energy**: (Un)calibrated energy (kinetic or binding energy). Unit category: NX_ENERGY (e.g., eV).
+# - **kx**: (Un)calibrated x axis in k-space. Unit category: NX_ANY (e.g., 1/Angström).
+# - **ky**: (Un)calibrated y axis in k-space. Unit category: NX_ANY (1/Angström).
+# - **kz**: (Un)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.
+# Unit category: NX_ANGLE (° or rad)
+# - **ellipticity**: Ellipticity of the incoming or outgoing beam.
+# Unit category: NX_ANGLE (° or rad)
+# - **time_of_flight**: Total time of flight. Unit category: NX_TIME_OF_FLIGHT
+# - **time_of_flight_adc**: Time-of-flight values, analog-to-digital converted.
+# - **external_AXIS**: Describes an axis which is coming from outside the detectors scope.
+#
#
#
#
@@ -473,23 +1143,147 @@ NXmpes(NXobject):
#
# Manipulator for positioning of the sample.
#
-#
-#
-#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# Device to measure the gas pressure around the sample.
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# 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).
+#
+#
+#
+#
+#
+# In the case of an experiment in which the gas pressure changes and is recorded,
+# this is an array of length m of gas pressures.
+#
+#
+#
+#
+#
+#
+# Device to bring low-energy electrons to the sample for charge neutralization
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# In case of a fixed or averaged electron current, this is the scalar current.
+# It can also be an 1D array of output current (without time stamps).
+#
+#
+#
+#
+#
+# In the case of an experiment in which the electron current is changed and
+# recorded with time stamps, this is an array of length m of current setpoints.
+#
+#
+#
#
#
-#
+#
#
# Document an event of data processing, reconstruction, or analysis for this data.
# Describe the appropriate axis calibrations for your experiment using one or more
# of the following NXcalibrations
#
#
-#
-#
-# Has an energy calibration been applied?
-#
-#
+#
+# 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
+#
#
#
# This is the calibrated energy axis to be used for data plotting.
@@ -497,11 +1291,6 @@ NXmpes(NXobject):
#
#
#
-#
-#
-# Has an angular calibration been applied?
-#
-#
#
#
# This is the calibrated angular axis to be used for data plotting.
@@ -509,46 +1298,123 @@ NXmpes(NXobject):
#
#
#
-#
+#
#
-# Has an spatial calibration been applied?
+# This is the calibrated spatial axis to be used for data plotting.
#
#
+#
+#
#
#
-# This is the calibrated spatial axis to be used for data plotting.
+# This is the momentum axis to be used for data plotting.
#
#
#
-#
-#
+#
+#
+# For energy referencing, the measured energies are corrected for the charging potential
+# (i.e., the electrical potential of the surface region of an insulating sample, caused by
+# irradiation) such that those energies correspond to a sample with no surface charge.
+# Usually, the energy axis is adjusted by shifting all energies uniformally until one
+# well-defined emission line peak (or the Fermi edge) is located at a known _correct_ energy.
+#
+# This concept is related to term `12.74 ff.`_ of the ISO 18115-1:2023 standard.
+#
+# .. _12.74 ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.74
+#
+#
#
-# Has an momentum calibration been applied?
+# Electronic core or valence level that was used for the calibration.
+#
+#
+#
+#
+# Reference peak that was used for the calibration.
+#
+# For example: adventitious carbon | C-C | metallic Au | elemental Si | Fermi edge | vacuum level
+#
+#
+#
+#
+# The binding energy (in units of eV) that the specified emission line appeared at,
+# after adjusting the binding energy scale.
+#
+# This concept is related to term `12.16_ ff.`_ of the ISO 18115-1:2023 standard.
+#
+# .. _12.16_ ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+#
+#
+#
+#
+# Offset between measured binding energy and calibrated binding energy of the
+# emission line.
#
#
#
#
-# This is the momentum axis to be used for data plotting.
+# This is the calibrated energy axis to be used for data plotting.
+#
+# This should link to /entry/data/energy.
#
#
#
+#
+#
+# In the transmission correction, each intensity measurement for electrons of a given
+# kinetic energy is multiplied by the corresponding value in the relative_intensity
+# field of the transmission_function. This calibration procedure is used to account for
+# the different tranmsission efficiencies when using different lens modes.
+#
+#
+#
+# Transmission function of the electron analyser.
+#
+# The transmission function (TF) specifies the detection efficiency for electrons of
+# different kinetic energy passing through the electron analyser.
+# This can be a link to /entry/instrument/electronanalyser/transmission_function.
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# Kinetic energy values
+#
+#
+#
+#
+#
+#
+#
+# Relative transmission efficiency for the given kinetic energies
+#
+#
+#
+#
+#
+#
+#
#
#
#
-#
-#
-# The chemical formula of the sample. For mixtures use the NXsample_component
-# group in NXsample instead.
-#
-#
-#
+#
#
-# A descriptor to keep track of the treatment of the sample before entering the
-# photoemission experiment. Ideally, a full report of the previous operations, in
-# any format (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.
+# For samples containing a single pure substance. For mixtures use the
+# NXsample_component_set and NXsample_component group in NXsample instead.
#
+#
+#
+# The chemical formula of the sample (using CIF conventions).
+#
+#
#
#
#
@@ -558,30 +1424,8 @@ NXmpes(NXobject):
# elements from each component must be included in `atom_types`.
#
#
-#
-#
-# Date of preparation of the sample for the XPS experiment (i.e. cleaving, last
-# annealing).
-#
-#
-#
-#
-# Description of the surface preparation technique for the XPS experiment, i.e.
-# UHV cleaving, in-situ growth, sputtering/annealing etc. Ideally, a full report
-# of the previous operations, in any format(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.
-#
-#
-#
-#
-# In the case of a fixed temperature measurement this is the scalar temperature of
-# the sample. In the case of an experiment in which the temperature is changed and
-# recoded, this is an array of length m of temperatures. This should be a link to
-# /entry/instrument/manipulator/sample_temperature.
-#
-#
-#
+#
+#
#
#
#
@@ -589,14 +1433,141 @@ NXmpes(NXobject):
#
#
#
-#
-#
+#
#
-# Voltage applied to sample and sample holder.
+# A set of activities that occurred to the sample prior to/during photoemission
+# experiment.
#
-#
+#
+#
+# Details about the sample preparation for the MPES experiment (e.g. UHV cleaving,
+# in-situ growth, sputtering/annealing, etc.).
+#
+#
+#
+#
+#
+# Details about the method of sample preparation before the MPES experiment.
+#
+#
+#
+#
+#
+#
+# Sample temperature (either controlled or just measured).
+#
+#
+#
+# Temperature sensor measuring the sample temperature.
+# This should be a link to /entry/instrument/manipulator/temperature_sensor.
+#
+#
+#
+#
+# Device to heat the sample.
+# This should be a link to /entry/instrument/manipulator/sample_heater.
+#
+#
+#
+#
+# Cryostat for cooling the sample.
+# This should be a link to /entry/instrument/manipulator/cryostat.
+#
+#
+#
+#
+#
+# Gas pressure surrounding the sample.
+#
+#
+#
+# Gauge measuring the gas pressure.
+#
+# This should be a link to /entry/instrument/pressure_gauge.
+#
+#
+#
+#
+#
+# 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
+#
+#
+#
+# Sensor measuring the applied voltage.
+#
+# This should be a link to /entry/instrument/manipulator/sample_bias_voltmeter.
+#
+#
+#
+#
+# Actuator applying a voltage to sample and sample holder.
+#
+# This should be a link to /entry/instrument/manipulator/sample_bias_potentiostat.
+#
+#
+#
+#
+#
+# Drain current of the sample and sample holder.
+#
+#
+#
+# Amperemeter measuring the drain current of the sample and sample holder.
+#
+# This should be a link to /entry/instrument/manipulator/drain_current_amperemeter.
+#
+#
+#
+#
+#
+# Current of low-energy electrons to the sample for charge neutralization.
+#
+#
+#
+# Flood gun creating a current of low-energy electrons.
+#
+# This should be a link to /entry/instrument/flood_gun.
+#
+#
+#
#
-#
+#
+#
+# The default NXdata field containing a view on the measured data.
+# This NXdata field contains a collection of the main relevant fields (axes).
+# In NXmpes, it is required to provide an energy axis.
+# If you want to provide additional views on your data, you can additionally use
+# the generic NXdata group of NXentry.
+# The other data fields inside this NXdata group should be named according to conventions
+# to ensure compatibility. We recommened the following field names
+# for common data fields:
+#
+# - **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)
+#
#
#
#
@@ -610,6 +1581,54 @@ NXmpes(NXobject):
# actual encoder position in NXinstrument or calibrated axes in NXprocess.
#
#
+#
+#
+# Calibrated energy axis.
+#
+# This could be a link to either
+# /entry/process/energy_calibration/calibrated_axis or
+# /entry/process/energy_correction/calibrated_axis.
+#
+#
+#
+# The energy can be either stored as kinetic or as binding energy.
+#
+#
+# -
+#
+# Calibrated kinetic energy axis.
+#
+# In case the kinetic energy axis is referenced to the Fermi level :math:`E_F`
+# (e.g., in entry/process/energy_referencing), kinetic energies :math:`E` are
+# provided as :math:`E-E_F`.
+#
+# This concept is related to term `3.35`_ of the ISO 18115-1:2023 standard.
+#
+# .. _3.35: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:3.35
+#
+#
+# -
+#
+# Calibrated binding energy axis.
+#
+# This concept is related to term `12.16`_ of the ISO 18115-1:2023 standard.
+#
+# .. _12.16: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+#
+#
+#
+#
+#
+#
+#
+#
+# The energy can be dispersed according to different strategies. ``energy_depends`` points to
+# the path of a field defining the calibrated axis on which the energy axis depends.
+#
+# For example:
+# @energy_depends: 'entry/process/energy_calibration'
+#
+#
#
#
#
diff --git a/contributed_definitions/nyaml/NXpid.yaml b/contributed_definitions/nyaml/NXpid.yaml
index 8ba001de93..2804bf46a8 100644
--- a/contributed_definitions/nyaml/NXpid.yaml
+++ b/contributed_definitions/nyaml/NXpid.yaml
@@ -23,6 +23,9 @@ NXpid(NXobject):
The Setpoint(s) used as an input for the PID controller.
It can also be a link to an NXsensor.value field.
+ setpoint_log(NXlog):
+ doc: |
+ Time log of the setpoint(s) used as an input for the PID controller.
K_p_value(NX_NUMBER):
doc: |
Proportional term. The proportional term produces an output value
@@ -55,14 +58,14 @@ NXpid(NXobject):
time constant are related as follows I = P/T.
# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
-# 4968f689bb36aeb5edc3b4ec8880134bb1d4fb6735709e32b482405c511409d5
-#
+# aadcc7fe3aacdc2888a03ae22cc82dc7e65996a3dce2e0af4d6bd0a9fcfcecee
+#
#
#
-#
+#
#
# Contains the settings of a PID controller.
#
@@ -111,6 +114,11 @@ NXpid(NXobject):
# It can also be a link to an NXsensor.value field.
#
#
+#
+#
+# Time log of the setpoint(s) used as an input for the PID controller.
+#
+#
#
#
# Proportional term. The proportional term produces an output value
diff --git a/contributed_definitions/nyaml/NXprocess_mpes.yaml b/contributed_definitions/nyaml/NXprocess_mpes.yaml
new file mode 100644
index 0000000000..bf1833a521
--- /dev/null
+++ b/contributed_definitions/nyaml/NXprocess_mpes.yaml
@@ -0,0 +1,266 @@
+category: base
+doc: |
+ :ref:`NXprocess_mpes` describes events of data processing, reconstruction,
+ or analysis for MPES-related data.
+
+ It extends the NXprocess class and provides a glossary of explicitly named processes
+ and their metadata which are typical for MPES data.
+type: group
+NXprocess_mpes(NXprocess):
+ energy_calibration(NXcalibration):
+ doc: |
+ 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
+ calibrated_axis(NX_FLOAT):
+ doc: |
+ This is the calibrated energy axis to be used for data plotting.
+ angular_calibration(NXcalibration):
+ calibrated_axis(NX_FLOAT):
+ doc: |
+ This is the calibrated angular axis to be used for data plotting.
+ spatial_calibration(NXcalibration):
+ calibrated_axis(NX_FLOAT):
+ doc: |
+ This is the calibrated spatial axis to be used for data plotting.
+ momentum_calibration(NXcalibration):
+ exists: optional
+ calibrated_axis(NX_FLOAT):
+ doc: |
+ This is the momentum axis to be used for data plotting.
+ energy_referencing(NXcalibration):
+ doc:
+ - |
+ For energy referencing, the measured energies are corrected for the charging potential
+ (i.e., the electrical potential of the surface region of an insulating sample, caused by
+ irradiation) such that those energies correspond to a sample with no surface charge.
+ Usually, the energy axis is adjusted by shifting all energies uniformally until one
+ well-defined emission line peak (or the Fermi edge) is located at a known _correct_ energy.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 12.74 ff.
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.74
+ level(NXelectron_level):
+ doc: |
+ Electronic core or valence level that was used for the calibration.
+ reference_peak:
+ doc: |
+ Reference peak that was used for the calibration.
+
+ For example: adventitious carbon | C-C | metallic Au | elemental Si | Fermi edge | vacuum level
+ binding_energy(NX_FLOAT):
+ doc:
+ - |
+ The binding energy (in units of eV) that the specified emission line appeared at,
+ after adjusting the binding energy scale.
+ - |
+ xref:
+ spec: ISO 18115-1:2023
+ term: 12.16_ ff.
+ url: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+ offset(NX_FLOAT):
+ doc: |
+ Offset between measured binding energy and calibrated binding energy of the
+ emission line.
+ calibrated_axis(NX_FLOAT):
+ doc: |
+ This is the calibrated energy axis to be used for data plotting.
+
+ This should link to /entry/data/energy.
+ transmission_correction(NXcalibration):
+ doc: |
+ In the transmission correction, each intensity measurement for electrons of a given
+ kinetic energy is multiplied by the corresponding value in the relative_intensity
+ field of the transmission_function. This calibration procedure is used to account for
+ the different tranmsission efficiencies when using different lens modes.
+ transmission_function(NXdata):
+ doc: |
+ Transmission function of the electron analyser.
+
+ The transmission function (TF) specifies the detection efficiency for electrons of
+ different kinetic energy passing through the electron analyser.
+ This can be a link to /entry/instrument/electronanalyser/transmission_function.
+ \@signal:
+ enumeration: [relative_intensity]
+ \@axes:
+ enumeration: [kinetic_energy]
+ kinetic_energy(NX_FLOAT):
+ unit: NX_ENERGY
+ doc: |
+ Kinetic energy values
+ dimensions:
+ rank: 1
+ dim: [[1, n_transmission_function]]
+ relative_intensity(NX_FLOAT):
+ unit: NX_UNITLESS
+ doc: |
+ Relative transmission efficiency for the given kinetic energies
+ dimensions:
+ rank: 1
+ dim: [[1, n_transmission_function]]
+
+# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
+# 8c2be91055cba41fd23b23cc1ec13a132da3afa32a9fb666f8242e34c864aa68
+#
+#
+#
+#
+#
+# :ref:`NXprocess_mpes` describes events of data processing, reconstruction,
+# or analysis for MPES-related data.
+#
+# It extends the NXprocess class and provides a glossary of explicitly named processes
+# and their metadata which are typical for MPES data.
+#
+#
+#
+# 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
+#
+#
+#
+# This is the calibrated energy axis to be used for data plotting.
+#
+#
+#
+#
+#
+#
+# This is the calibrated angular axis to be used for data plotting.
+#
+#
+#
+#
+#
+#
+# This is the calibrated spatial axis to be used for data plotting.
+#
+#
+#
+#
+#
+#
+# This is the momentum axis to be used for data plotting.
+#
+#
+#
+#
+#
+# For energy referencing, the measured energies are corrected for the charging potential
+# (i.e., the electrical potential of the surface region of an insulating sample, caused by
+# irradiation) such that those energies correspond to a sample with no surface charge.
+# Usually, the energy axis is adjusted by shifting all energies uniformally until one
+# well-defined emission line peak (or the Fermi edge) is located at a known _correct_ energy.
+#
+# This concept is related to term `12.74 ff.`_ of the ISO 18115-1:2023 standard.
+#
+# .. _12.74 ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.74
+#
+#
+#
+# Electronic core or valence level that was used for the calibration.
+#
+#
+#
+#
+# Reference peak that was used for the calibration.
+#
+# For example: adventitious carbon | C-C | metallic Au | elemental Si | Fermi edge | vacuum level
+#
+#
+#
+#
+# The binding energy (in units of eV) that the specified emission line appeared at,
+# after adjusting the binding energy scale.
+#
+# This concept is related to term `12.16_ ff.`_ of the ISO 18115-1:2023 standard.
+#
+# .. _12.16_ ff.: https://www.iso.org/obp/ui/en/#iso:std:iso:18115:-1:ed-3:v1:en:term:12.16
+#
+#
+#
+#
+# Offset between measured binding energy and calibrated binding energy of the
+# emission line.
+#
+#
+#
+#
+# This is the calibrated energy axis to be used for data plotting.
+#
+# This should link to /entry/data/energy.
+#
+#
+#
+#
+#
+# In the transmission correction, each intensity measurement for electrons of a given
+# kinetic energy is multiplied by the corresponding value in the relative_intensity
+# field of the transmission_function. This calibration procedure is used to account for
+# the different tranmsission efficiencies when using different lens modes.
+#
+#
+#
+# Transmission function of the electron analyser.
+#
+# The transmission function (TF) specifies the detection efficiency for electrons of
+# different kinetic energy passing through the electron analyser.
+# This can be a link to /entry/instrument/electronanalyser/transmission_function.
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# Kinetic energy values
+#
+#
+#
+#
+#
+#
+#
+# Relative transmission efficiency for the given kinetic energies
+#
+#
+#
+#
+#
+#
+#
+#
diff --git a/contributed_definitions/nyaml/NXresolution.yaml b/contributed_definitions/nyaml/NXresolution.yaml
new file mode 100644
index 0000000000..b999a7ee73
--- /dev/null
+++ b/contributed_definitions/nyaml/NXresolution.yaml
@@ -0,0 +1,160 @@
+category: base
+doc: |
+ Describes the resolution of a physical quantity.
+type: group
+NXresolution(NXobject):
+ physical_quantity:
+ doc: |
+ The physical quantity of the resolution, e.g.,
+ energy, momentum, time, etc.
+ type:
+ doc: |
+ The process by which the resolution was determined.
+ enumeration: [estimated, derived, calibrated, other]
+ note(NXnote):
+ doc: |
+ Additional details of the estimate or description of the calibration procedure
+ resolution(NX_FLOAT):
+ unit: NX_ANY
+ doc: |
+ The resolution of the physical quantity.
+ resolution_errors(NX_FLOAT):
+ unit: NX_ANY
+ doc: |
+ Standard deviation of the resolution of the physical quantity.
+ response_function(NXdata):
+ doc: |
+ The response of the instrument or part to a infinitesimally sharp input signal
+ along the physical quantity of this group.
+ This is also sometimes called instrument response function for time resolution or
+ point spread function for spatial response.
+ The resolution is typically determined by taking the full width at half maximum (FWHM)
+ of the response function.
+ input(NX_FLOAT):
+ unit: NX_ANY
+ doc: |
+ The input axis or grid of the response function.
+ The unit should match the one of the resolution field.
+ magnitude(NX_FLOAT):
+ doc: |
+ The magnitude of the response function corresponding to the points
+ in the input axis or grid.
+ This field should have the same dimensions as `input`.
+ formula_SYMBOL(NX_CHAR):
+ doc: |
+ A symbol linking to another path in this appdef to be referred to from the
+ `resolution_formula` field. This should be a valid path inside this application
+ definition, i.e., of the form /entry/instrument/my_part/my_field.
+ resolution_formula(NX_CHAR):
+ doc: |
+ A resolution formula to determine the resolution from a set of symbols as
+ entered by the `formula_...` fields.
+ The output unit should match the provided unit of this field.
+ (NXcalibration):
+ doc: |
+ For storing details and data of a calibration to derive a resolution from data.
+
+# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
+# e450b40edd82c4031bf6e7d9195ad6a844aceb9a6effced07c8001bb25f8a01b
+#
+#
+#
+#
+#
+# Describes the resolution of a physical quantity.
+#
+#
+#
+# The physical quantity of the resolution, e.g.,
+# energy, momentum, time, etc.
+#
+#
+#
+#
+# The process by which the resolution was determined.
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# Additional details of the estimate or description of the calibration procedure
+#
+#
+#
+#
+# The resolution of the physical quantity.
+#
+#
+#
+#
+# Standard deviation of the resolution of the physical quantity.
+#
+#
+#
+#
+# The response of the instrument or part to a infinitesimally sharp input signal
+# along the physical quantity of this group.
+# This is also sometimes called instrument response function for time resolution or
+# point spread function for spatial response.
+# The resolution is typically determined by taking the full width at half maximum (FWHM)
+# of the response function.
+#
+#
+#
+# The input axis or grid of the response function.
+# The unit should match the one of the resolution field.
+#
+#
+#
+#
+# The magnitude of the response function corresponding to the points
+# in the input axis or grid.
+# This field should have the same dimensions as `input`.
+#
+#
+#
+#
+#
+# A symbol linking to another path in this appdef to be referred to from the
+# `resolution_formula` field. This should be a valid path inside this application
+# definition, i.e., of the form /entry/instrument/my_part/my_field.
+#
+#
+#
+#
+# A resolution formula to determine the resolution from a set of symbols as
+# entered by the `formula_...` fields.
+# The output unit should match the provided unit of this field.
+#
+#
+#
+#
+# For storing details and data of a calibration to derive a resolution from data.
+#
+#
+#
diff --git a/contributed_definitions/nyaml/NXsubstance.yaml b/contributed_definitions/nyaml/NXsubstance.yaml
index 49995f8ab4..046ca73848 100644
--- a/contributed_definitions/nyaml/NXsubstance.yaml
+++ b/contributed_definitions/nyaml/NXsubstance.yaml
@@ -71,14 +71,14 @@ NXsubstance(NXobject):
- If carbon is not present, the elements are listed purely in alphabetic order of their symbol.
# ++++++++++++++++++++++++++++++++++ SHA HASH ++++++++++++++++++++++++++++++++++
-# edfde06a5e9cb004cef553235a02e7a35aac1e9609544c7238f3cffdc3664760
-#
+# c7ae6e64d284340e8b3ad667882f9b7f3a31bf7c509b6cc8794529ec765cb25a
+#
#
#