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 +# # #