diff --git a/.gitignore b/.gitignore
index 1e25594542..fbf3fd897e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
# Hidden files
.*
!.github
+!.readthedocs.yaml
# Python byte / compiled / optimized
*.py[cod]
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
new file mode 100644
index 0000000000..9c77462206
--- /dev/null
+++ b/.readthedocs.yaml
@@ -0,0 +1,13 @@
+version: 2
+
+build:
+ os: ubuntu-24.04
+ tools:
+ python: "3.14"
+ commands:
+ - pip install -r requirements.txt
+ - make clean
+ - make prepare
+ - make html
+ - mkdir -p $READTHEDOCS_OUTPUT/html
+ - cp -r build/manual/build/html/* $READTHEDOCS_OUTPUT/html/
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/contributed_definitions/NXabsorption_edge.nxdl.xml b/contributed_definitions/NXabsorption_edge.nxdl.xml
new file mode 100644
index 0000000000..389483d147
--- /dev/null
+++ b/contributed_definitions/NXabsorption_edge.nxdl.xml
@@ -0,0 +1,167 @@
+
+
+
+
+
+ An absorption edge is a sharp discontinuity in the X-ray absorption spectrum
+ 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 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
+ - Electron configuration
+ * - K
+ - :math:`1s^{-1}`
+ * - L1
+ - :math:`2s^{-1}`
+ * - L2
+ - :math:`2p_{1/2}^{-1}`
+ * - L3
+ - :math:`2p_{3/2}^{-1}`
+ * - M1
+ - :math:`3s^{-1}`
+ * - M2
+ - :math:`3p_{1/2}^{-1}`
+ * - M3
+ - :math:`3p_{3/2}^{-1}`
+ * - M4
+ - :math:`3d_{3/2}^{-1}`
+ * - M5
+ - :math:`3d_{5/2}^{-1}`
+ * - N1
+ - :math:`4s^{-1}`
+ * - N2
+ - :math:`4p_{1/2}^{-1}`
+ * - N3
+ - :math:`4p_{3/2}^{-1}`
+ * - N4
+ - :math:`4d_{3/2}^{-1}`
+ * - N5
+ - :math:`4d_{5/2}^{-1}`
+ * - N6
+ - :math:`4f_{5/2}^{-1}`
+ * - N7
+ - :math:`4f_{7/2}^{-1}`
+ * - O1
+ - :math:`5s^{-1}`
+ * - O2
+ - :math:`5p_{1/2}^{-1}`
+ * - O3
+ - :math:`5p_{3/2}^{-1}`
+ * - O4
+ - :math:`5d_{3/2}^{-1}`
+ * - O5
+ - :math:`5d_{5/2}^{-1}`
+ * - O6
+ - :math:`5f_{5/2}^{-1}`
+ * - O7
+ - :math:`5f_{7/2}^{-1}`
+ * - P1
+ - :math:`6s^{-1}`
+ * - P2
+ - :math:`6p_{1/2}^{-1}`
+ * - P3
+ - :math:`6p_{3/2}^{-1}`
+ * - P4
+ - :math:`6d_{3/2}^{-1}`
+ * - P5
+ - :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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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/contributed_definitions/NXauger_line.nxdl.xml b/contributed_definitions/NXauger_line.nxdl.xml
new file mode 100644
index 0000000000..34328032b8
--- /dev/null
+++ b/contributed_definitions/NXauger_line.nxdl.xml
@@ -0,0 +1,976 @@
+
+
+
+
+
+ An Auger line. It arises from the non-radiative decay of an atom with a
+ core hole: an electron from a higher level fills the hole and another
+ electron, the Auger electron, is ejected, with a kinetic energy
+ characteristic of the atom.
+
+
+
+ The Auger line name using either the notation ``INITIAL-FINAL1FINAL2``
+ for a specific line or ``INITIAL-TOTAL`` (e.g. ``K-TOTAL``) for the
+ sum over all Auger lines originating from a given initial edge.
+
+ The initial edge is one of: K, L1-L3, M1-M5. The two final edges range
+ from L through Q.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Kinetic energy of the emitted Auger electron.
+
+
+
+
+ The element undergoing the Auger transition.
+
+
+
diff --git a/contributed_definitions/NXelement.nxdl.xml b/contributed_definitions/NXelement.nxdl.xml
new file mode 100644
index 0000000000..24400ad292
--- /dev/null
+++ b/contributed_definitions/NXelement.nxdl.xml
@@ -0,0 +1,158 @@
+
+
+
+
+
+ A chemical element of the periodic table. It is identified by its atomic
+ number, as a species and not as a specific isotope.
+
+
+
+ Chemical symbol of the element, following IUPAC notation. For each
+ symbol, the common English name, atomic number, and standard atomic
+ weight are documented.
+
+
+ name="hydrogen", atomic_number=1, standard_atomic_weight=1.0078
+ name="helium", atomic_number=2, standard_atomic_weight=4.0026
+ name="lithium", atomic_number=3, standard_atomic_weight=6.94
+ name="beryllium", atomic_number=4, standard_atomic_weight=9.0122
+ name="boron", atomic_number=5, standard_atomic_weight=10.81
+ name="carbon", atomic_number=6, standard_atomic_weight=12.011
+ name="nitrogen", atomic_number=7, standard_atomic_weight=14.007
+ name="oxygen", atomic_number=8, standard_atomic_weight=15.999
+ name="fluorine", atomic_number=9, standard_atomic_weight=18.9984
+ name="neon", atomic_number=10, standard_atomic_weight=20.1797
+ name="sodium", atomic_number=11, standard_atomic_weight=22.9898
+ name="magnesium", atomic_number=12, standard_atomic_weight=24.305
+ name="aluminum", atomic_number=13, standard_atomic_weight=26.9815
+ name="silicon", atomic_number=14, standard_atomic_weight=28.085
+ name="phosphorus", atomic_number=15, standard_atomic_weight=30.9738
+ name="sulfur", atomic_number=16, standard_atomic_weight=32.06
+ name="chlorine", atomic_number=17, standard_atomic_weight=35.453
+ name="argon", atomic_number=18, standard_atomic_weight=39.948
+ name="potassium", atomic_number=19, standard_atomic_weight=39.0983
+ name="calcium", atomic_number=20, standard_atomic_weight=40.078
+ name="scandium", atomic_number=21, standard_atomic_weight=44.9559
+ name="titanium", atomic_number=22, standard_atomic_weight=47.867
+ name="vanadium", atomic_number=23, standard_atomic_weight=50.9415
+ name="chromium", atomic_number=24, standard_atomic_weight=51.996
+ name="manganese", atomic_number=25, standard_atomic_weight=54.938
+ name="iron", atomic_number=26, standard_atomic_weight=55.845
+ name="cobalt", atomic_number=27, standard_atomic_weight=58.9332
+ name="nickel", atomic_number=28, standard_atomic_weight=58.6934
+ name="copper", atomic_number=29, standard_atomic_weight=63.546
+ name="zinc", atomic_number=30, standard_atomic_weight=65.38
+ name="gallium", atomic_number=31, standard_atomic_weight=69.72
+ name="germanium", atomic_number=32, standard_atomic_weight=72.63
+ name="arsenic", atomic_number=33, standard_atomic_weight=74.9216
+ name="selenium", atomic_number=34, standard_atomic_weight=78.971
+ name="bromine", atomic_number=35, standard_atomic_weight=79.904
+ name="krypton", atomic_number=36, standard_atomic_weight=83.798
+ name="rubidium", atomic_number=37, standard_atomic_weight=85.4678
+ name="strontium", atomic_number=38, standard_atomic_weight=87.62
+ name="yttrium", atomic_number=39, standard_atomic_weight=88.9058
+ name="zirconium", atomic_number=40, standard_atomic_weight=91.224
+ name="niobium", atomic_number=41, standard_atomic_weight=92.9064
+ name="molybdenum", atomic_number=42, standard_atomic_weight=95.95
+ name="technetium", atomic_number=43, standard_atomic_weight=97.907
+ name="ruthenium", atomic_number=44, standard_atomic_weight=101.07
+ name="rhodium", atomic_number=45, standard_atomic_weight=102.906
+ name="palladium", atomic_number=46, standard_atomic_weight=106.42
+ name="silver", atomic_number=47, standard_atomic_weight=107.868
+ name="cadmium", atomic_number=48, standard_atomic_weight=112.414
+ name="indium", atomic_number=49, standard_atomic_weight=114.818
+ name="tin", atomic_number=50, standard_atomic_weight=118.71
+ name="antimony", atomic_number=51, standard_atomic_weight=121.76
+ name="tellurium", atomic_number=52, standard_atomic_weight=127.6
+ name="iodine", atomic_number=53, standard_atomic_weight=126.905
+ name="xenon", atomic_number=54, standard_atomic_weight=131.293
+ name="cesium", atomic_number=55, standard_atomic_weight=132.905
+ name="barium", atomic_number=56, standard_atomic_weight=137.327
+ name="lanthanum", atomic_number=57, standard_atomic_weight=138.905
+ name="cerium", atomic_number=58, standard_atomic_weight=140.116
+ name="praseodymium", atomic_number=59, standard_atomic_weight=140.908
+ name="neodymium", atomic_number=60, standard_atomic_weight=144.242
+ name="promethium", atomic_number=61, standard_atomic_weight=145.0
+ name="samarium", atomic_number=62, standard_atomic_weight=150.36
+ name="europium", atomic_number=63, standard_atomic_weight=151.96
+ name="gadolinium", atomic_number=64, standard_atomic_weight=157.25
+ name="terbium", atomic_number=65, standard_atomic_weight=158.925
+ name="dysprosium", atomic_number=66, standard_atomic_weight=162.5
+ name="holmium", atomic_number=67, standard_atomic_weight=164.93
+ name="erbium", atomic_number=68, standard_atomic_weight=167.259
+ name="thulium", atomic_number=69, standard_atomic_weight=168.934
+ name="ytterbium", atomic_number=70, standard_atomic_weight=173.045
+ name="lutetium", atomic_number=71, standard_atomic_weight=174.967
+ name="hafnium", atomic_number=72, standard_atomic_weight=178.49
+ name="tantalum", atomic_number=73, standard_atomic_weight=180.948
+ name="tungsten", atomic_number=74, standard_atomic_weight=183.84
+ name="rhenium", atomic_number=75, standard_atomic_weight=186.207
+ name="osmium", atomic_number=76, standard_atomic_weight=190.23
+ name="iridium", atomic_number=77, standard_atomic_weight=192.217
+ name="platinum", atomic_number=78, standard_atomic_weight=195.084
+ name="gold", atomic_number=79, standard_atomic_weight=196.967
+ name="mercury", atomic_number=80, standard_atomic_weight=200.592
+ name="thallium", atomic_number=81, standard_atomic_weight=204.383
+ name="lead", atomic_number=82, standard_atomic_weight=207.2
+ name="bismuth", atomic_number=83, standard_atomic_weight=208.98
+ name="polonium", atomic_number=84, standard_atomic_weight=209.0
+ name="astatine", atomic_number=85, standard_atomic_weight=210.0
+ name="radon", atomic_number=86, standard_atomic_weight=222.0
+ name="francium", atomic_number=87, standard_atomic_weight=223.0
+ name="radium", atomic_number=88, standard_atomic_weight=226.0
+ name="actinium", atomic_number=89, standard_atomic_weight=227.0
+ name="thorium", atomic_number=90, standard_atomic_weight=232.038
+ name="protactinium", atomic_number=91, standard_atomic_weight=231.036
+ name="uranium", atomic_number=92, standard_atomic_weight=238.029
+ name="neptunium", atomic_number=93, standard_atomic_weight=237.048
+ name="plutonium", atomic_number=94, standard_atomic_weight=239.052
+ name="americium", atomic_number=95, standard_atomic_weight=243.0
+ name="curium", atomic_number=96, standard_atomic_weight=247.0
+ name="berkelium", atomic_number=97, standard_atomic_weight=247.0
+ name="californium", atomic_number=98, standard_atomic_weight=251.0
+ name="einsteinium", atomic_number=99, standard_atomic_weight=252
+ name="fermium", atomic_number=100, standard_atomic_weight=257
+ name="mendelevium", atomic_number=101, standard_atomic_weight=258
+ name="nobelium", atomic_number=102, standard_atomic_weight=259
+ name="lawrencium", atomic_number=103, standard_atomic_weight=266
+ name="rutherfordium", atomic_number=104, standard_atomic_weight=267
+ name="dubnium", atomic_number=105, standard_atomic_weight=268
+ name="seaborgium", atomic_number=106, standard_atomic_weight=269
+ name="bohrium", atomic_number=107, standard_atomic_weight=270
+ name="hassium", atomic_number=108, standard_atomic_weight=269
+ name="meitnerium", atomic_number=109, standard_atomic_weight=278
+ name="darmstadtium", atomic_number=110, standard_atomic_weight=281
+ name="roentgenium", atomic_number=111, standard_atomic_weight=282
+ name="copernicium", atomic_number=112, standard_atomic_weight=285
+ name="nihonium", atomic_number=113, standard_atomic_weight=286
+ name="flerovium", atomic_number=114, standard_atomic_weight=289
+ name="moscovium", atomic_number=115, standard_atomic_weight=290
+ name="livermorium", atomic_number=116, standard_atomic_weight=293
+ name="tennessine", atomic_number=117, standard_atomic_weight=294
+ name="oganesson", atomic_number=118, standard_atomic_weight=294
+
+
+
diff --git a/contributed_definitions/NXemission_line.nxdl.xml b/contributed_definitions/NXemission_line.nxdl.xml
new file mode 100644
index 0000000000..4c3d7df898
--- /dev/null
+++ b/contributed_definitions/NXemission_line.nxdl.xml
@@ -0,0 +1,632 @@
+
+
+
+
+
+ An emission line. It arises from the radiative decay of an atom with a
+ core hole: an electron from a higher level fills the hole and a photon is
+ emitted, with an energy characteristic of the atom.
+
+
+
+ The emission line name using either the `IUPAC notation`_, i.e. initial and final
+ edge separated by a hyphen (e.g. ``K-L3``), or the Latinized Siegbahn
+ notation (e.g. ``Ka1``).
+
+ Correspondence between IUPAC and Siegbahn notations:
+
+ .. list-table::
+ :header-rows: 1
+
+ * - IUPAC
+ - Siegbahn
+ - Latinized Siegbahn
+ * - K-L3
+ - :math:`K\alpha_1`
+ - Ka1
+ * - K-L2
+ - :math:`K\alpha_2`
+ - Ka2
+ * - K-L1
+ - :math:`K\alpha_3`
+ - Ka3
+ * - K-M3
+ - :math:`K\beta_1`
+ - Kb1
+ * - K-N3
+ - :math:`K\beta_2'`
+ - Kb2\'
+ * - K-N2
+ - :math:`K\beta_2''`
+ - Kb2\'\'
+ * - K-M2
+ - :math:`K\beta_3`
+ - Kb3
+ * - K-N5
+ - :math:`K\beta_4'`
+ - Kb4\'
+ * - K-N4
+ - :math:`K\beta_4''`
+ - Kb4\'\'
+ * - K-N4
+ - :math:`K\beta_{4x}`
+ - Kb4x
+ * - K-M5
+ - :math:`K\beta_5'`
+ - Kb5\'
+ * - K-M4
+ - :math:`K\beta_5''`
+ - Kb5\'\'
+ * - L3-M5
+ - :math:`L\alpha_1`
+ - La1
+ * - L3-M4
+ - :math:`L\alpha_2`
+ - La2
+ * - L2-M4
+ - :math:`L\beta_1`
+ - Lb1
+ * - L3-N5
+ - :math:`L\beta_2`
+ - Lb2
+ * - L1-M3
+ - :math:`L\beta_3`
+ - Lb3
+ * - L1-M2
+ - :math:`L\beta_4`
+ - Lb4
+ * - L3-O4,5
+ - :math:`L\beta_5`
+ - Lb5
+ * - L3-N1
+ - :math:`L\beta_6`
+ - Lb6
+ * - L3-O1
+ - :math:`L\beta_7`
+ - Lb7
+ * - L3-N6,7
+ - :math:`L\beta_7'`
+ - Lb7\'
+ * - L1-M5
+ - :math:`L\beta_9`
+ - Lb9
+ * - L1-M4
+ - :math:`L\beta_{10}`
+ - Lb10
+ * - L3-N4
+ - :math:`L\beta_{15}`
+ - Lb15
+ * - L2-M3
+ - :math:`L\beta_{17}`
+ - Lb17
+ * - L2-N4
+ - :math:`L\gamma_1`
+ - Lg1
+ * - L1-N2
+ - :math:`L\gamma_2`
+ - Lg2
+ * - L1-N3
+ - :math:`L\gamma_3`
+ - Lg3
+ * - L1-O3
+ - :math:`L\gamma_4`
+ - Lg4
+ * - L1-O2
+ - :math:`L\gamma_4'`
+ - Lg4\'
+ * - L2-N1
+ - :math:`L\gamma_5`
+ - Lg5
+ * - L2-O4
+ - :math:`L\gamma_6`
+ - Lg6
+ * - L2-O1
+ - :math:`L\gamma_8`
+ - Lg8
+ * - L2-N6,7
+ - :math:`L\gamma_8'`
+ - Lg8\'
+ * - L2-M1
+ - :math:`L\eta`
+ - Ln
+ * - L3-M1
+ - :math:`Ll`
+ - Ll
+ * - L3-M3
+ - :math:`Ls`
+ - Ls
+ * - L3-M2
+ - :math:`Lt`
+ - Lt
+ * - L3-N6,7
+ - :math:`Lu`
+ - Lu
+ * - L2-N6,7
+ - :math:`Lv`
+ - Lv
+ * - M5-N7
+ - :math:`M\alpha_1`
+ - Ma1
+ * - M5-N6
+ - :math:`M\alpha_2`
+ - Ma2
+ * - M4-N6
+ - :math:`M\beta`
+ - Mb
+ * - M3-N5
+ - :math:`M\gamma`
+ - Mg
+ * - M4,5-N2,3
+ - :math:`M\zeta`
+ - Mz
+
+ .. _IUPAC notation: https://doi.org/10.1002/xrs.1300200308
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Energy of the emission line.
+
+
+
+
+ The element that emits this line.
+
+
+
diff --git a/contributed_definitions/NXxas.nxdl.xml b/contributed_definitions/NXxas.nxdl.xml
new file mode 100644
index 0000000000..9f0620c3ec
--- /dev/null
+++ b/contributed_definitions/NXxas.nxdl.xml
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+ The symbol(s) listed here will be used below to coordinate datasets
+ with the same shape.
+
+
+
+ Number of stacked spectra (scan points). This is the growable
+ first dimension: data could be appended along it during acquisition.
+ It is absent when a single spectrum is stored.
+
+
+
+ Number of energy data points
+
+
+
+ Rank of the ``intensity`` field: 1 for a single spectrum
+ ``[nEnergy]`` or 2 for a stack of spectra ``[nP, nEnergy]``.
+
+
+
+
+ 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 element being probed 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 element 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
+
+
+
+ Sample temperature.
+
+
+
+
+
+
+
+
+ Plot of the X-ray absorption intensity versus energy.
+
+ When several spectra are stacked along ``nP`` (a time series, a
+ spatial map, an operando series, ...), the quantity that varies
+ across the stack is stored in its standard NeXus location (for
+ example ``NXsample/temperature``, ``NXsample/electric_field``,
+ an ``NXsample/NXtransformations`` axis, or an ``NXbeam``
+ polarization field) and linked here as an additional axis with
+ its ``AXISNAME_indices`` set to 0, the ``nP`` dimension. The
+ application definition does not enumerate these coordinates: any
+ of them, including ones not listed here, is declared simply by
+ adding the field in its base-class location and wiring it into
+ this group.
+
+
+
+
+
+
diff --git a/contributed_definitions/NXxas_herfd.nxdl.xml b/contributed_definitions/NXxas_herfd.nxdl.xml
new file mode 100644
index 0000000000..f804b50d84
--- /dev/null
+++ b/contributed_definitions/NXxas_herfd.nxdl.xml
@@ -0,0 +1,636 @@
+
+
+
+
+
+
+ The symbol(s) listed here will be used below to coordinate datasets
+ with the same shape.
+
+
+ Number of energy data points
+
+
+ Number of crystal analyzers in the spectrometer
+
+
+
+ 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.
+
+ 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
+ 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, rotated about the vertical
+ axis. Should point to
+ ``transformations/sample_rotation``.
+
+
+
+
+ Orientation of the sample in the beamline
+ coordinate system.
+
+
+
+ Rotation of the sample about the vertical axis,
+ orienting the sample surface between the incident beam
+ and the crystal analyzers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Should point to
+ ``/entry/beamline_coordinate_system``.
+
+
+
+
+
+
+
+ The incident X-ray beam.
+
+
+ Should point to
+ ``transformations/beam_direction``.
+
+
+
+
+
+ Beam direction in the beamline coordinate
+ system. The beam travels along +x.
+
+
+
+
+
+
+
+
+ Should point to
+ ``/entry/beamline_coordinate_system``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Detector measuring the incident beam intensity
+ :math:`I_0`, positioned upstream of the sample along
+ the beam direction.
+
+
+
+
+
+
+
+
+ Should point to
+ ``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/beamline_coordinate_system``.
+
+
+
+
+
+
+
+ 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/beamline_coordinate_system``.
+
+
+
+
+
+
+
+ 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/beamline_coordinate_system``.
+
+
+
+
+
+
+
+
+ Raw data as written by the acquisition software,
+ preserved without modification to allow independent
+ reprocessing.
+
+
+
+ Raw fluorescence counts per incident energy point for
+ each crystal analyzer, before normalization by the
+ incident beam intensity and summation over analyzers.
+ Axis 0 is the energy scan axis; axis 1 enumerates the
+ crystal analyzers, in the same order as the
+ ``analyzerCRYSTAL`` groups.
+
+
+
+
+
+
+
+
+
+ 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.
+
+
+
+ Python code reproducing the top-level :ref:`intensity
+ </NXxas/ENTRY/intensity-field>` from the raw
+ data.
+
+
+ Mime content type of the note data field.
+
+
+
+
+
+ The Python code.
+
+
+
+
+
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..1aace935f7
--- /dev/null
+++ b/contributed_definitions/NXxas_pfy.nxdl.xml
@@ -0,0 +1,627 @@
+
+
+
+
+
+
+ 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. For multiple lines use one
+ group per line (e.g. ``ka1_emission_line``,
+ ``kb1_emission_line``).
+
+
+
+
+
+ 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, rotated about the vertical
+ axis. Should point to
+ ``transformations/sample_rotation``.
+
+
+
+
+ Orientation of the sample in the beamline
+ coordinate system.
+
+
+
+ Rotation of the sample about the vertical axis,
+ orienting the sample surface between the incident beam
+ and the fluorescence detector.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Should point to
+ ``/entry/beamline_coordinate_system``.
+
+
+
+
+
+
+
+ The ``data`` field of each detector below holds the intensity
+ used in the analysis and may already include corrections (for
+ example dead-time, self-absorption, or detector-channel or ROI
+ integration). If the uncorrected values are kept, they are
+ archived in the ``NXcollection`` group and the corrections are
+ described in ``NXprocess``.
+
+
+ The incident X-ray beam.
+
+
+ Should point to
+ ``transformations/beam_direction``.
+
+
+
+
+
+ Beam direction in the beamline coordinate
+ system. The beam travels along +x.
+
+
+
+
+
+
+
+
+ Should point to
+ ``/entry/beamline_coordinate_system``.
+
+
+
+
+
+
+
+ Detector measuring the incident beam intensity :math:`I_0`.
+
+
+
+
+
+
+
+
+ Should point to
+ ``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/beamline_coordinate_system``.
+
+
+
+
+
+
+
+ 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/beamline_coordinate_system``.
+
+
+
+
+
+
+
+ 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/beamline_coordinate_system``.
+
+
+
+
+
+
+
+
+ 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..1717517bc7
--- /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/contributed_definitions/NXxas_trans.nxdl.xml b/contributed_definitions/NXxas_trans.nxdl.xml
new file mode 100644
index 0000000000..95c18aa950
--- /dev/null
+++ b/contributed_definitions/NXxas_trans.nxdl.xml
@@ -0,0 +1,219 @@
+
+
+
+
+
+ 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``, ``NXcollection``, 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)t = -\ln(I/I_0)`.
+
+
+
+
+
+
+
+
+ The ``data`` field of each detector below holds the intensity
+ used to compute the absorption coefficient and may already
+ include corrections. If the uncorrected values are kept, they
+ are archived in the ``NXcollection`` group and the corrections
+ are described in ``NXprocess``.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The spacing between crystal planes of the reflection
+
+
+
+ Type or material of monochromating substance
+ (Si, Ge, Multilayer).
+
+
+
+ Miller indices (hkl) values of nominal reflection
+
+
+
+
+
+
+
+
+ Detector measuring the incident beam intensity
+ :math:`I_0`.
+
+
+
+
+
+
+
+
+
+
+ Detector measuring the transmitted beam intensity
+ :math:`I`.
+
+
+
+
+
+
+
+
+
+
+ Detector measuring the reference intensity
+ :math:`I_{ref}`, placed after a reference sample
+ (typically a metal foil). For a reference that is an
+ independent spectrum probing a different absorbing
+ element or absorption edge, use the ``reference``
+ subentry instead.
+
+
+
+
+
+
+
+
+
+
+
+ An independent reference spectrum, for example a metal-foil
+ standard used for energy calibration. Use this group instead
+ of the ``iref`` detector when the reference is a complete
+ spectrum in its own right, in particular when it probes a
+ different absorbing element or absorption edge, so that the
+ element, edge, energy axis, and intensity of the reference
+ can be described in full.
+
+ Provide the ``iref`` detector when the reference is a
+ simultaneous transmission channel that shares the main energy
+ axis. Provide this ``reference`` subentry when the reference
+ is an independent measurement. Do not provide both for the
+ same reference.
+
+
+
+ Official NeXus NXDL schema to which this subentry conforms.
+ Should be an ``NXxas``-family definition (for example
+ ``NXxas`` or ``NXxas_trans``).
+
+
+
+
+
+ Raw data as written by the acquisition software,
+ preserved without modification to allow independent
+ reprocessing.
+
+
+
+
+ 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.
+
+
+
+ Order of this step when several NXprocess groups
+ describe a sequence of corrections.
+
+
+
+
+ Validated parameters of the corrections applied, for
+ example energy calibration, deglitching, incident-beam
+ normalization, or scan merging. Each parameter should
+ carry a units attribute where applicable.
+
+
+
+
+ Code or notes reproducing the top-level :ref:`intensity
+ </NXxas/ENTRY/intensity-field>` from the raw data.
+
+
+ Mime content type of the note data field.
+
+
+
+
+
+ The reproduction code or notes.
+
+
+
+
+