diff --git a/.readthedocs.yaml b/.readthedocs.yaml
index fe110f1895..b9ed680f19 100644
--- a/.readthedocs.yaml
+++ b/.readthedocs.yaml
@@ -1,9 +1,9 @@
version: 2
build:
- os: ubuntu-22.04
+ os: ubuntu-24.04
tools:
- python: "3.12"
+ python: "3.14"
commands:
- pip install -r requirements.txt
- make prepare
diff --git a/applications/NXxas.nxdl.xml b/applications/NXxas.nxdl.xml
deleted file mode 100644
index f076e9bb42..0000000000
--- a/applications/NXxas.nxdl.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-
-
-
-
- The symbol(s) listed here will be used below to coordinate datasets with the same shape.
-
-
- Number of points
-
-
-
- This is an application definition for raw data from an X-ray absorption spectroscopy experiment.
-
- This is essentially a scan on energy versus incoming/
- absorbed beam.
-
-
-
-
-
- Official NeXus NXDL schema to which this file conforms
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This data corresponds to the sample signal.
-
-
-
-
-
-
-
-
- Descriptive name of sample
-
-
-
-
-
- Count to a preset value based on either clock time (timer)
- or received monitor counts (monitor).
-
-
-
-
-
-
-
- preset value for time or monitor
-
-
- This field could be a link to ``/NXentry/NXinstrument/incoming_beam:NXdetector/data``
-
-
-
-
-
-
-
-
-
- Detection method used for observing the sample absorption (pick one from the enumerated list and spell exactly)
-
-
-
-
-
-
-
-
-
-
-
diff --git a/base_classes/NXelement.nxdl.xml b/base_classes/NXelement.nxdl.xml
deleted file mode 100644
index 19237a8d29..0000000000
--- a/base_classes/NXelement.nxdl.xml
+++ /dev/null
@@ -1,171 +0,0 @@
-
-
-
-
- Definition of a chemical element.
-
-
- For each symbol, 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
-
-
-
- The charge number *Z* of the atomic nucleus.
-
-
-
- *Relative atomic mass* of the element in *amu*. It can be but is not restricted to the
- *standard atomic weight* (using the natural abundance of isotopes).
-
-
-
- The charge of the atom after ionic approximation of its heteronuclear bonds.
-
-
diff --git a/base_classes/NXxas_mode.nxdl.xml b/base_classes/NXxas_mode.nxdl.xml
deleted file mode 100644
index 02da979ea5..0000000000
--- a/base_classes/NXxas_mode.nxdl.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-
-
-
-
- XAS measurement mode
-
-
- X-ray absorption spectroscopy (XAS) is a technique that measures the absorption coefficient :math:`\mu(E)` of a material as a function of energy.
-
- The name of the XAS mode indicates the type of process being monitored to obtain the spectrum. Below is a description of the available modes, with emphasis on the expected values for the `intensity` and `monitor` fields.
-
- 1. Transmission
-
- The absorption coefficient is obtained by measuring the intensity of the incident :math:`I_0` and transmitted beam :math:`I`.
-
- .. math::
- \mu(E) = -\ln(I/I_0)
-
- 2. Total fluorescence yield (TFY)
-
- The absorption coefficient is obtained by measuring the intensity of the emitted fluorescence :math:`I_f` and the incident beam :math:`I_0`.
-
- .. math::
- \mu(E) \propto I_f/I_0
-
- 3. Partial fluorescence yield (PFY)
-
- 4. Inverse partial fluorescence yield (IPFY)
-
- 5. High-energy resolution fluorescence detection (HERFD)
-
- 6. Total electron yield (TEY)
-
- 7. Partial electron yield (PEY)
-
- 8. Electron energy loss (EELS)
-
- 9. X-ray Raman Scattering (XRS)
-
- 10. Diffraction Anomalous Fine Structure (DAFS)
-
- 11. X-ray Excited Optical Luminescence (XEOL)
-
- 12. Grazing Angle Reflection Extended X-ray Absorption Fine Structure (ReflEXAFS)
-
- 13. Other
-
-
-
-
- Transmission
-
-
-
-
- Total Fluorescence Yield
-
-
-
-
- Partial Fluorescence Yield
-
-
-
-
- Inverse Partial Fluorescence Yield
-
-
-
-
- High Energy Resolution Fluorescence Detected
-
-
-
-
- Total Electron Yield
-
-
-
-
- Partial Electron Yield
-
-
-
-
- Electron Energy Loss
-
-
-
-
- X-ray Raman Scattering
-
-
-
-
- Diffraction Anomalous Fine Structure
-
-
-
-
- X-ray Excited Optical Luminescence
-
-
-
-
- Grazing Angle Reflection Extended X-ray Absorption Fine Structure
-
-
-
-
- Other
-
-
-
-
-
-
- Collection of emission lines detected or used in this measurement.
-
-
-
-
-
diff --git a/base_classes/NXedge.nxdl.xml b/contributed_definitions/NXabsorption_edge.nxdl.xml
similarity index 54%
rename from base_classes/NXedge.nxdl.xml
rename to contributed_definitions/NXabsorption_edge.nxdl.xml
index ef8a3e61ae..389483d147 100644
--- a/base_classes/NXedge.nxdl.xml
+++ b/contributed_definitions/NXabsorption_edge.nxdl.xml
@@ -21,83 +21,89 @@
#
# For further information, see http://www.nexusformat.org
-->
-
An absorption edge is a sharp discontinuity in the X-ray absorption spectrum
- of an element that occurs when the incident photon energy equals the binding
- energy of a core electron, enabling photoionization of that shell.
+ of an atom that occurs when the incident photon energy reaches the threshold
+ energy for exciting the atom from its neutral ground state to a core-vacancy
+ state.
- Name of the absorption edge specified using
- `IUPAC notation`_ (e.g., ``K``, ``L2``, ``M5``), which identifies the
- shell and sub-shell from which the electron is ejected.
-
- Correspondence between IUPAC and electronic level notations:
+ Name of the absorption edge using `IUPAC notation`_ (e.g., ``K``,
+ ``L2``, ``M5``), which identifies the core-vacancy state of the
+ atom.
+
+ Correspondence between IUPAC notation and electron configuration,
+ expressed as vacancy notation (superscript :math:`-1`):
.. list-table::
:header-rows: 1
* - IUPAC
- - Electronic level
+ - Electron configuration
* - K
- - 1s
+ - :math:`1s^{-1}`
* - L1
- - 2s
+ - :math:`2s^{-1}`
* - L2
- - :math:`2p_{1/2}`
+ - :math:`2p_{1/2}^{-1}`
* - L3
- - :math:`2p_{3/2}`
+ - :math:`2p_{3/2}^{-1}`
* - M1
- - 3s
+ - :math:`3s^{-1}`
* - M2
- - :math:`3p_{1/2}`
+ - :math:`3p_{1/2}^{-1}`
* - M3
- - :math:`3p_{3/2}`
+ - :math:`3p_{3/2}^{-1}`
* - M4
- - :math:`3d_{3/2}`
+ - :math:`3d_{3/2}^{-1}`
* - M5
- - :math:`3d_{5/2}`
+ - :math:`3d_{5/2}^{-1}`
* - N1
- - 4s
+ - :math:`4s^{-1}`
* - N2
- - :math:`4p_{1/2}`
+ - :math:`4p_{1/2}^{-1}`
* - N3
- - :math:`4p_{3/2}`
+ - :math:`4p_{3/2}^{-1}`
* - N4
- - :math:`4d_{3/2}`
+ - :math:`4d_{3/2}^{-1}`
* - N5
- - :math:`4d_{5/2}`
+ - :math:`4d_{5/2}^{-1}`
* - N6
- - :math:`4f_{5/2}`
+ - :math:`4f_{5/2}^{-1}`
* - N7
- - :math:`4f_{7/2}`
+ - :math:`4f_{7/2}^{-1}`
* - O1
- - 5s
+ - :math:`5s^{-1}`
* - O2
- - :math:`5p_{1/2}`
+ - :math:`5p_{1/2}^{-1}`
* - O3
- - :math:`5p_{3/2}`
+ - :math:`5p_{3/2}^{-1}`
* - O4
- - :math:`5d_{3/2}`
+ - :math:`5d_{3/2}^{-1}`
* - O5
- - :math:`5d_{5/2}`
+ - :math:`5d_{5/2}^{-1}`
* - O6
- - :math:`5f_{5/2}`
+ - :math:`5f_{5/2}^{-1}`
* - O7
- - :math:`5f_{7/2}`
+ - :math:`5f_{7/2}^{-1}`
* - P1
- - 6s
+ - :math:`6s^{-1}`
* - P2
- - :math:`6p_{1/2}`
+ - :math:`6p_{1/2}^{-1}`
* - P3
- - :math:`6p_{3/2}`
+ - :math:`6p_{3/2}^{-1}`
* - P4
- - :math:`6d_{3/2}`
+ - :math:`6d_{3/2}^{-1}`
* - P5
- - :math:`6d_{5/2}`
+ - :math:`6d_{5/2}^{-1}`
+
+ Per IUPAC, subscripts may be dropped when unknown or irrelevant.
+ When two spin-orbit split levels are not distinguished, they may be
+ written together (e.g. ``L2,3``).
.. _IUPAC notation: https://doi.org/10.1002/xrs.1300200308
@@ -106,35 +112,56 @@
+
+
+
+
+
+
+
+
+
+
+
-
+
Energy of the absorption edge.
+
+
+ The atom whose core electron is excited at this absorption edge.
+
+
+
+ Chemical symbol of the element (e.g. ``Fe``, ``Cu``).
+
+
+
diff --git a/base_classes/NXemission_line.nxdl.xml b/contributed_definitions/NXemission_line.nxdl.xml
similarity index 97%
rename from base_classes/NXemission_line.nxdl.xml
rename to contributed_definitions/NXemission_line.nxdl.xml
index 12c11aa89f..eae46ab01f 100644
--- a/base_classes/NXemission_line.nxdl.xml
+++ b/contributed_definitions/NXemission_line.nxdl.xml
@@ -3,7 +3,7 @@
+
+
+ A container for grouping multiple emission lines.
+
+ Each child :ref:`NXemission_line` group describes a single emission line.
+
+
+
+ An emission line described by this collection.
+
+
+
diff --git a/contributed_definitions/NXxas.nxdl.xml b/contributed_definitions/NXxas.nxdl.xml
new file mode 100644
index 0000000000..2e607da818
--- /dev/null
+++ b/contributed_definitions/NXxas.nxdl.xml
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+ The symbol(s) listed here will be used below to coordinate datasets
+ with the same shape.
+
+
+ Number of energy data points
+
+
+
+ This is a generic application definition for X-ray absorption
+ spectroscopy. Technique-specific application definitions extend this base
+ definition.
+
+
+
+ Official NeXus NXDL schema to which this file conforms.
+
+
+
+
+
+
+ The atom whose core electron is excited by the incident X-rays.
+
+
+
+
+
+ The absorption edge being probed, defined by the principal
+ quantum number and orbital symmetry of the photoionized electron
+ (e.g. K, L1, L2, L3, L2,3). Together with the absorber uniquely
+ identifies probed electronic transition.
+
+
+
+
+ Specify if the data comes from an experiment. Use ``true`` for
+ data acquired at a beamline or laboratory instrument, and
+ ``false`` for spectra calculated/simulated using a
+ computational tool, reconstructed from a linear combination
+ of reference components, etc.
+
+
+
+
+ The energy axis of the spectrum.
+
+
+
+
+
+
+
+ The intensity of the spectrum. The precise definition of what is
+ meant by intensity depends on the acquisition mode, and will be
+ specified by each subclass application definition.
+
+
+
+
+
+
+
+ The errors associated with the intensity of the spectrum.
+
+
+
+
+
+
+
+ Descriptive name of the sample
+
+
+
+ Plot of the X-ray absorption intensity versus energy
+
+
+
+
+
diff --git a/contributed_definitions/NXxas_herfd.nxdl.xml b/contributed_definitions/NXxas_herfd.nxdl.xml
new file mode 100644
index 0000000000..498da8e60b
--- /dev/null
+++ b/contributed_definitions/NXxas_herfd.nxdl.xml
@@ -0,0 +1,550 @@
+
+
+
+
+
+ High-energy resolution fluorescence detection (HERFD) is a particular
+ case of partial fluorescence yield measured with a crystal analyzer
+ spectrometer with an energy bandwidth of approximately 1-2 eV.
+
+ The HERFD spectrum corresponds to a constant-emission-energy cut
+ through the Resonant Inelastic X-ray Scattering (RIXS) plane.
+ The spectral shape depends on the emission energy, making the
+ emission line and emission energy mandatory metadata.
+
+ The top-level :ref:`intensity </NXxas/ENTRY/intensity-field>`
+ field stores the ratio :math:`I_f/I_0`, where :math:`I_f` is the
+ fluorescence intensity diffracted by the crystal analyzer(s) and
+ :math:`I_0` is the incident beam intensity. This ratio is
+ proportional to the absorption coefficient:
+
+ .. math:: \mu(E) \propto I_f/I_0
+
+ The spectrometer uses Rowland circle geometry (Johann or Johansson
+ type). Multiple crystal analyzers may be arranged at different
+ horizontal angles around the sample to increase solid angle coverage.
+
+
+
+ Official NeXus NXDL schema to which this file conforms.
+
+
+
+
+
+
+ The ratio :math:`I_f/I_0`, where :math:`I_f` is the
+ fluorescence intensity diffracted by the crystal analyzer(s)
+ and :math:`I_0` is the incident beam intensity.
+
+
+
+
+
+
+
+ The emission line at which the HERFD spectrum is measured.
+
+
+
+
+ The emission energy at which the spectrometer is set.
+
+
+
+
+ Beamline coordinate system with the sample at the origin:
+ x along the beam, y horizontal, z opposite to gravity.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Should point to
+ ``transformations/beam``.
+
+
+
+
+ Two rotations relating the beamline frame to
+ the NeXus laboratory frame, plus direction
+ vectors labeling beam and gravity.
+
+
+
+ Direction of the incident beam in the beamline
+ coordinate system.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Direction of gravity in the beamline coordinate
+ system.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Active rotation moving gravity from the
+ beamline direction (-z) to the NeXus direction (-y).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Active rotation moving the beam from the
+ beamline direction (+x) to the NeXus direction (+z).
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Should point to ``.`` (the NeXus laboratory
+ frame).
+
+
+
+
+
+
+
+
+ The sample is at the origin of the beamline
+ coordinate system. Should point to
+ ``/entry/beamline_coordinate_system``.
+
+
+
+
+
+ The incident X-ray beam.
+
+
+ Should point to
+ ``beam/transformations/beam_direction``.
+
+
+
+
+
+ Beam direction in the beamline coordinate
+ system. The beam travels along +x.
+
+
+
+
+
+
+
+
+ Should point to
+ ``/entry/beamline_coordinate_system``
+ or to ``/entry/sample``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Detector measuring the incident beam intensity
+ :math:`I_0`, positioned upstream of the sample along
+ the beam direction.
+
+
+
+
+
+
+
+
+ Should point to
+ ``i0/transformations/i0_distance``.
+
+
+
+
+
+ Distance from the sample to the I0 detector,
+ measured upstream along the beam (negative x
+ direction in the beamline frame).
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Should point to ``/entry/sample``.
+
+
+
+
+
+
+
+ Crystal analyzer on the Rowland circle. For
+ multi-crystal spectrometers, use one group per
+ crystal (e.g. ``analyzer1``, ``analyzer2``).
+
+
+
+ Type or material of the analyzer crystal
+ (Si, Ge, etc.).
+
+
+
+
+ Miller indices (hkl) values of the nominal
+ reflection.
+
+
+
+
+
+
+
+ The spacing between crystal planes of the
+ reflection.
+
+
+
+
+ Bragg angle :math:`\theta_B` of the nominal
+ reflection.
+
+
+
+
+ Bending radius of the spherically bent crystal
+ analyzer. In Johann geometry this is :math:`2R_R`
+ (twice the Rowland radius).
+
+
+
+
+ Radius of the Rowland circle :math:`R_R`. The
+ sample, crystal center, and detector focus all
+ lie on this circle.
+
+
+
+
+ The energy bandwidth or resolution of the crystal
+ analyzer.
+
+
+
+
+ The type of crystal analyzer geometry.
+
+
+
+
+
+
+
+
+ Diameter of the crystal analyzer wafer.
+
+
+
+
+ Should point to the last transformation in the
+ chain, i.e.
+ ``transformations/analyzer_distance``.
+
+
+
+
+ Transformation chain placing the analyzer relative
+ to the sample: azimuthal angle, polar angle,
+ then distance.
+
+
+
+ Sample-to-analyzer distance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Polar angle of the analyzer in the vertical
+ Rowland plane. Elevation from the horizontal
+ beam plane to the sample-analyzer direction.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Azimuthal (horizontal) angle of the
+ spectrometer arm from the incident beam
+ direction. Rotation around the vertical
+ z-axis. Typically around 90 degrees to
+ minimize elastic scattering.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Should point to ``/entry/sample``.
+
+
+
+
+
+
+
+ Detector measuring the fluorescence intensity
+ :math:`I_f` diffracted by the crystal analyzer(s).
+
+
+
+
+
+
+
+
+ Should point to the last transformation in the
+ chain, i.e.
+ ``transformations/if_distance``.
+
+
+
+
+ Transformation chain placing the detector relative
+ to the sample: azimuthal angle, polar angle,
+ then distance.
+
+
+
+ Distance from the sample to the detector.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Polar angle of the detector in the vertical
+ Rowland plane.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Azimuthal (horizontal) angle of the detector
+ from the incident beam direction. Should
+ match the analyzer azimuthal angle for
+ on-Rowland focusing.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Should point to ``/entry/sample``.
+
+
+
+
+
+
+
+
+ Description of how :ref:`intensity
+ </NXxas/ENTRY/intensity-field>` was obtained from
+ the raw detector data (i0, if).
+
+
+ Name of the program used for processing.
+
+
+ Version of the program used for processing.
+
+
+ Date and time of processing.
+
+
+
+
diff --git a/contributed_definitions/NXxas_pey.nxdl.xml b/contributed_definitions/NXxas_pey.nxdl.xml
new file mode 100644
index 0000000000..f9338e572d
--- /dev/null
+++ b/contributed_definitions/NXxas_pey.nxdl.xml
@@ -0,0 +1,109 @@
+
+
+
+
+
+ In partial electron yield (PEY), the XAS spectrum is measured by
+ collecting electrons above a certain kinetic energy threshold. A
+ retarding voltage (bias) is applied to discriminate against
+ low-energy secondary electrons, selecting only higher-energy Auger
+ or photoelectrons:
+
+ .. math:: \mu(E) \propto I_{ey}/I_0
+
+ By selecting a specific energy range, PEY can enhance the surface
+ sensitivity and selectivity compared to total electron yield.
+
+ The top-level :ref:`intensity </NXxas/ENTRY/intensity-field>`
+ field stores the ratio :math:`I_{ey}/I_0`. When the raw
+ detector data and processing steps are available, they can be stored
+ in the optional ``NXinstrument`` and ``NXprocess`` groups,
+ enabling full reproducibility of the data reduction.
+
+
+
+ Official NeXus NXDL schema to which this file conforms.
+
+
+
+
+
+
+ The absorption coefficient :math:`\mu(E) \propto I_{ey}/I_0`,
+ where :math:`I_{ey}` is the partial electron yield signal
+ above the retarding voltage threshold.
+
+
+
+
+
+
+
+
+ Detector measuring the incident beam intensity
+ :math:`I_0`.
+
+
+
+
+
+
+
+
+
+ Detector measuring the partial electron yield
+ :math:`I_{ey}`.
+
+
+
+
+
+
+
+
+ The retarding voltage (bias) applied to select
+ electrons above a kinetic energy threshold.
+
+
+
+
+
+
+ Description of how :ref:`intensity
+ </NXxas/ENTRY/intensity-field>` was obtained from
+ the raw detector data (i0, iey).
+
+
+ Name of the program used for processing.
+
+
+ Version of the program used for processing.
+
+
+ Date and time of processing.
+
+
+
+
diff --git a/contributed_definitions/NXxas_pfy.nxdl.xml b/contributed_definitions/NXxas_pfy.nxdl.xml
new file mode 100644
index 0000000000..c713545f24
--- /dev/null
+++ b/contributed_definitions/NXxas_pfy.nxdl.xml
@@ -0,0 +1,583 @@
+
+
+
+
+
+
+ The symbol(s) listed here will be used below to coordinate datasets
+ with the same shape.
+
+
+ Number of energy data points
+
+
+
+ Number of selected detector channels within the
+ emission energy window
+
+
+
+
+ Number of pixel rows in the region of interest (ROI)
+ on the grating-based spectrometer
+
+
+
+
+ Number of pixel columns in the region of interest (ROI)
+ on the grating-based spectrometer
+
+
+
+
+ In partial fluorescence yield (PFY), only a selected portion of the
+ fluorescence emission is detected, typically around a specific
+ fluorescence line of the absorbing element (e.g. :math:`K\alpha`).
+ Experimentally, this energy selectivity can be achieved in several ways:
+
+ * **Energy-dispersive detector** (e.g. silicon-drift diode,
+ high-purity Ge detector, superconducting tunnel junction, etc.):
+ the detector bins photons by emission energy into channels; the
+ fluorescence line is isolated by selecting a channel range.
+ * **Grating spectrometer**: a diffraction grating disperses the
+ emitted photons by energy onto a 2D detector, providing
+ higher energy resolution.
+
+ The top-level :ref:`intensity </NXxas/ENTRY/intensity-field>`
+ field stores the ratio :math:`I_f/I_0`, where :math:`I_f` is the
+ selected fluorescence intensity and :math:`I_0` is the incident beam
+ intensity. This ratio is proportional to the absorption coefficient:
+
+ .. math:: \mu(E) \propto I_f/I_0
+
+ PFY may be affected by detector dead-time and self-absorption effects.
+ When the raw detector data and processing steps are available, they can be
+ stored in the optional ``NXinstrument``, ``NXcollection``, and
+ ``NXprocess`` groups, enabling full reproducibility of the data reduction.
+
+
+
+ Official NeXus NXDL schema to which this file conforms.
+
+
+
+
+
+
+ The ratio :math:`I_f/I_0`, where :math:`I_f` is the selected
+ fluorescence intensity and :math:`I_0` is the incident beam
+ intensity.
+
+
+
+
+
+
+
+ The emission line(s) selected for the partial fluorescence
+ yield measurement, whether via a channel range or a
+ grating-based spectrometer.
+
+
+
+
+ The lower and upper bounds :math:`[e_{min}, e_{max}]` of the
+ detected emission energy window. This is the energy range
+ over which fluorescence photons are accepted, whether
+ defined by a detector channel range or a spectrometer
+ region of interest.
+
+
+
+
+
+
+
+ Beamline coordinate system with the sample at the origin:
+ x along the beam, y horizontal, z opposite to gravity.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Should point to
+ ``transformations/beam``.
+
+
+
+
+ Two rotations relating the beamline frame to
+ the NeXus laboratory frame, plus direction
+ vectors labeling beam and gravity.
+
+
+
+ Direction of the incident beam in the beamline
+ coordinate system.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Direction of gravity in the beamline coordinate
+ system.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Active rotation moving gravity from the
+ beamline direction (-z) to the NeXus direction (-y).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Active rotation moving the beam from the
+ beamline direction (+x) to the NeXus direction (+z).
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Should point to ``.`` (the NeXus laboratory
+ frame).
+
+
+
+
+
+
+
+
+ The sample is at the origin of the beamline
+ coordinate system. Should point to
+ ``/entry/beamline_coordinate_system``.
+
+
+
+
+
+ The incident X-ray beam.
+
+
+ Should point to
+ ``beam/transformations/beam_direction``.
+
+
+
+
+
+ Beam direction in the beamline coordinate
+ system. The beam travels along +x.
+
+
+
+
+
+
+
+
+ Should point to
+ ``/entry/beamline_coordinate_system``
+ or to ``/entry/sample``.
+
+
+
+
+
+
+
+ Detector measuring the incident beam intensity :math:`I_0`.
+
+
+
+
+
+
+
+
+ Should point to
+ ``i0/transformations/i0_distance``.
+
+
+
+
+
+ Distance from the sample to the I0 detector,
+ measured upstream along the beam (negative x
+ direction in the beamline frame).
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Should point to ``/entry/sample``.
+
+
+
+
+
+
+
+ Diffraction grating used to select the emission energy
+ in a grating-based spectrometer. Present only when a grating
+ spectrometer is used instead of an energy-dispersive
+ detector.
+
+ The grating lies on the line connecting the sample and
+ the fluorescence detector (``if``): the azimuthal and
+ polar angles must therefore match those of
+ ``if/transformations``, and only the distance differs.
+
+
+
+ Should point to the last transformation in the
+ chain, i.e.
+ ``transformations/grating_distance``.
+
+
+
+
+ Transformation chain placing the grating relative
+ to the sample. The azimuthal and polar angles must
+ be equal to those of the fluorescence detector
+ (``if``) to ensure colinearity.
+
+
+
+ Distance from the sample to the grating along
+ the sample-to-detector direction.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Polar (elevation) angle of the grating above
+ the horizontal beam plane. Must equal
+ ``if/transformations/if_polar_angle``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Azimuthal (horizontal) angle of the grating
+ from the incident beam direction. Must equal
+ ``if/transformations/if_azimuthal_angle``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Should point to ``/entry/sample``.
+
+
+
+
+
+
+
+ Fluorescence detector measuring :math:`I_f`. When using an
+ energy-dispersive detector, ``data`` holds the intensity
+ integrated over the selected detector channels. When using a
+ grating-based spectrometer, ``data`` holds the ROI integrated
+ on the spectrometer detector. In both cases the data may be
+ corrected for dead-time and self-absorption.
+
+
+
+
+
+
+
+ Detector dead time per energy point.
+
+
+
+
+
+
+ Detector live time per energy point.
+
+
+
+
+
+
+
+ Should point to the last transformation in the
+ chain, i.e.
+ ``transformations/if_distance``.
+
+
+
+
+ Transformation chain placing the fluorescence
+ detector relative to the sample: azimuthal angle,
+ polar angle, then distance. These angles are
+ required to compute self-absorption corrections.
+
+
+
+ Distance from the sample to the fluorescence
+ detector (or spectrometer entrance).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Polar (elevation) angle of the detector above
+ the horizontal beam plane. A value of 0 means
+ the detector is in the horizontal plane; 90
+ degrees means it is directly above the sample.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Azimuthal (horizontal) angle of the detector
+ from the incident beam direction. Rotation
+ around the vertical z-axis. Typically around
+ 90 degrees to minimize elastic scattering
+ background.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Should point to ``/entry/sample``.
+
+
+
+
+
+
+
+
+ Raw data as written by the acquisition software,
+ preserved without modification to allow independent
+ reprocessing. Either ``detector_channels`` or ``detector_roi``
+ will be present depending on the detector type used;
+ not both simultaneously.
+
+
+
+ Raw channel counts per incident energy point for the
+ selected channels of an energy-dispersive detector.
+ Only the channels within the emission energy window
+ are stored. Axis 0 is the energy scan axis; axis 1
+ enumerates the selected channels. Each value is the
+ count in that channel for one energy point.
+
+
+
+
+
+
+
+
+ Raw detector image within the ROI per incident energy point.
+ Axis 0 is the energy scan axis; axes 1 and 2 span the 2D
+ pixel grid of the downstream detector (nY rows, nX columns).
+
+
+
+
+
+
+
+
+
+
+ Description of how :ref:`intensity
+ </NXxas/ENTRY/intensity-field>` was obtained from
+ the raw detector data (i0, if), including any applied correction,
+ e.g., dead-time or self-absorption.
+
+
+ Name of the program used for processing.
+
+
+ Version of the program used for processing.
+
+
+ Date and time of processing.
+
+
+
+
diff --git a/contributed_definitions/NXxas_tey.nxdl.xml b/contributed_definitions/NXxas_tey.nxdl.xml
new file mode 100644
index 0000000000..3fea61a58e
--- /dev/null
+++ b/contributed_definitions/NXxas_tey.nxdl.xml
@@ -0,0 +1,102 @@
+
+
+
+
+
+ In total electron yield (TEY), the XAS spectrum is measured by
+ collecting all secondary electrons emitted from the sample surface.
+ The drain current or total electron current :math:`I_{ey}` is
+ proportional to the absorption coefficient:
+
+ .. math:: \mu(E) \propto I_{ey}/I_0
+
+ TEY is inherently surface-sensitive because electrons are readily
+ absorbed by most materials, limiting the probing depth to a few
+ nanometers.
+
+ The top-level :ref:`intensity </NXxas/ENTRY/intensity-field>`
+ field stores the ratio :math:`I_{ey}/I_0`. When the raw
+ detector data and processing steps are available, they can be stored
+ in the optional ``NXinstrument`` and ``NXprocess`` groups,
+ enabling full reproducibility of the data reduction.
+
+
+
+ Official NeXus NXDL schema to which this file conforms.
+
+
+
+
+
+
+ The absorption coefficient :math:`\mu(E) \propto I_{ey}/I_0`,
+ where :math:`I_{ey}` is the total electron yield signal.
+
+
+
+
+
+
+
+
+ Detector measuring the incident beam intensity
+ :math:`I_0`.
+
+
+
+
+
+
+
+
+
+ Detector measuring the total electron yield
+ :math:`I_{ey}` (drain current).
+
+
+
+
+
+
+
+
+
+
+ Description of how :ref:`intensity
+ </NXxas/ENTRY/intensity-field>` was obtained from
+ the raw detector data (i0, iey).
+
+
+ Name of the program used for processing.
+
+
+ Version of the program used for processing.
+
+
+ Date and time of processing.
+
+
+
+
diff --git a/contributed_definitions/NXxas_tfy.nxdl.xml b/contributed_definitions/NXxas_tfy.nxdl.xml
new file mode 100644
index 0000000000..732b4ac64e
--- /dev/null
+++ b/contributed_definitions/NXxas_tfy.nxdl.xml
@@ -0,0 +1,100 @@
+
+
+
+
+
+ In total fluorescence yield (TFY), the absorption coefficient
+ :math:`\mu(E)` is proportional to the ratio of the total fluorescence
+ intensity :math:`I_f` and the incident beam intensity :math:`I_0`:
+
+ .. math:: \mu(E) \propto I_f/I_0
+
+ The total fluorescence signal is measured with a detector such as a
+ photodiode that collects all emitted fluorescence without energy
+ discrimination.
+
+ The top-level :ref:`intensity </NXxas/ENTRY/intensity-field>`
+ field contains the processed absorption coefficient. When the raw
+ detector data and processing steps are available, they can be stored
+ in the optional ``NXinstrument`` and ``NXprocess`` groups,
+ enabling full reproducibility of the data reduction.
+
+
+
+ Official NeXus NXDL schema to which this file conforms.
+
+
+
+
+
+
+ The absorption coefficient :math:`\mu(E) \propto I_f/I_0`.
+
+
+
+
+
+
+
+
+ Detector measuring the incident beam intensity
+ :math:`I_0`.
+
+
+
+
+
+
+
+
+
+ Detector measuring the total fluorescence emission
+ :math:`I_f`.
+
+
+
+
+
+
+
+
+
+
+ Description of how :ref:`intensity
+ </NXxas/ENTRY/intensity-field>` was obtained from
+ the raw detector data (i0, if).
+
+
+ Name of the program used for processing.
+
+
+ Version of the program used for processing.
+
+
+ Date and time of processing.
+
+
+
+
diff --git a/applications/NXxas_new.nxdl.xml b/contributed_definitions/NXxas_trans.nxdl.xml
similarity index 52%
rename from applications/NXxas_new.nxdl.xml
rename to contributed_definitions/NXxas_trans.nxdl.xml
index 1c2df512ee..3908195251 100644
--- a/applications/NXxas_new.nxdl.xml
+++ b/contributed_definitions/NXxas_trans.nxdl.xml
@@ -2,9 +2,9 @@
-
-
-
- The symbol(s) listed here will be used below to coordinate datasets with the same shape.
-
-
- Number of energy data points
-
-
- Number of electronic transitions
-
-
- This is an application definition for X-ray absorption spectroscopy.
+ In transmission, the linear attenuation coefficient or absorption
+ coefficient :math:`\mu(E)` is given by the Beer-Lambert law:
+
+ .. math:: \mu(E)t = -\ln(I/I_0)
+
+ where :math:`I` is the intensity of the transmitted beam, :math:`I_0` is
+ the intensity of the incident beam, and :math:`t` is the thickness of the
+ sample.
+
+ The top-level :ref:`intensity </NXxas/ENTRY/intensity-field>`
+ field contains the processed absorption coefficient. When the raw
+ detector data and processing steps are available, they can be stored
+ in the optional ``NXinstrument`` and ``NXprocess`` groups,
+ enabling full reproducibility of the data reduction.
- Official NeXus NXDL schema to which this file conforms. TODO: replace NXxas
+ Official NeXus NXDL schema to which this file conforms.
-
+
-
-
-
-
- Excited element
-
-
- Absorption edge
-
-
- Specify if the data commes from a calculation
-
-
- TODO
-
-
-
-
- TODO
-
-
-
-
-
- TODO
+
+ The absorption coefficient :math:`\mu(E)t = -\ln(I/I_0)`.
+
-
-
- Descriptive name of the sample
-
-
-
-
- Description on how :ref:`energy </NXxas_new/ENTRY/energy-field>`
- and :ref:`intensity </NXxas_new/ENTRY/intensity-field>` were obtained
- from the raw data.
-
-
@@ -103,12 +71,15 @@
-
+
- spacing between crystal planes of the reflection
+ The spacing between crystal planes of the reflection
- Type or material of monochromating substance (Si, Ge, Multilayer).
+
+ Type or material of monochromating substance
+ (Si, Ge, Multilayer).
+ Miller indices (hkl) values of nominal reflection
@@ -118,45 +89,57 @@
-
+
+
+ Detector measuring the incident beam intensity
+ :math:`I_0`.
+
-
+
+
+ Detector measuring the transmitted beam intensity
+ :math:`I`.
+
-
-
- XAS intensity versus energy plot
-
-
-
-
-
- Table like data structure common in the XAS domain.
+
+
+ Detector measuring the reference intensity
+ :math:`I_{ref}`, placed after a reference sample
+ (typically a metal foil).
+
-
-
-
-
-
-
-
-
-
-
+
+
+ Description of how :ref:`intensity
+ </NXxas/ENTRY/intensity-field>` was obtained from the raw
+ detector data (i0, itrans, and iref). When present, it allows a
+ third party to fully reproduce the data reduction.
+
+
+ Name of the program used for processing.
+
+
+ Version of the program used for processing.
+
+
+ Date and time of processing.
+
+