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