Esta sección describe los fondos, las formas de línea, el ajuste con restricciones, la cuantificación con factores de sensibilidad y la calibración de carga que implementa MatLens para XPS. Todas las energías son energías de enlace (BE, eV) en orden ascendente dentro de los arreglos. Las áreas se expresan en cps·eV.
Magnitudes, unidades y flujo de trabajo
| Símbolo | Significado | Unidades |
|---|---|---|
| E, E_B | energía de enlace | eV |
| E_K | energía cinética del fotoelectrón, h\nu - E_B (sin función de trabajo) | eV |
| h\nu | energía del fotón: 1486.6 eV (Al Kα, por defecto) o 1253.6 eV (Mg Kα), valores fijados en el código | eV |
| y | intensidad | cps (o cuentas, véase count_rate_factor) |
| A | área de un componente o región | cps·eV |
| w | FWHM | eV |
Flujo habitual: (1) calibración de carga del eje de BE; (2) fondo (Shirley, smart, Tougaard, lineal); (3) ajuste de componentes con restricciones físicas; (4) cuantificación por regiones o sobre un survey. Cada paso está descrito abajo con las funciones que lo ejecutan.
Niveles de los extremos
Código: matlens/core/xps.py::_ends.
Todos los fondos usan como niveles de referencia I_\mathrm{lo} e I_\mathrm{hi}, que son las medias de los primeros y los últimos k puntos, con k = \max(1, \min(n_\mathrm{end}, \lfloor N/4 \rfloor)) y n_\mathrm{end} = 5 por defecto. El extremo de BE baja es I_\mathrm{lo} y el de BE alta es I_\mathrm{hi}.
Fondo de Shirley
Código: matlens/core/xps.py::shirley_background.
- y(E): intensidad medida (cps).
- B(E): fondo (cps).
- E: energía de enlace (eV).
Las integrales se calculan con la regla del trapecio acumulada. La iteración termina cuando \max|B^{(k+1)} - B^{(k)}| < 10^{-6}\,\mathrm{ptp}(y), o tras 200 iteraciones.
Variante «smart» (matlens/core/xps.py::smart_background):
- Si I_\mathrm{hi} \le I_\mathrm{lo}, se usa un fondo lineal entre los extremos en lugar de Shirley.
- En todos los casos el fondo se limita a \min(B, \tilde{y}), donde \tilde{y} es el dato suavizado con una media móvil de 5 puntos.
Fondo lineal (matlens/core/xps.py::linear_background): recta que pasa por (\bar{x}_\mathrm{lo}, I_\mathrm{lo}) y (\bar{x}_\mathrm{hi}, I_\mathrm{hi}), donde \bar{x} son las medias de las energías de los mismos k puntos de cada extremo.
Origen y límites. Shirley (1972) supone que cada electrón que sale del pico pierde energía con una probabilidad independiente de la energía, de modo que el fondo en un punto es proporcional al área del pico a menor BE (mayor energía cinética). Es un modelo fenomenológico: no describe la forma real de las pérdidas (que sí intenta Tougaard) y su resultado depende de dónde se tomen los extremos (n_\mathrm{end} y la ventana). Falla, o sesga el área, cuando la ventana corta colas del pico, cuando hay satélites o picos vecinos dentro de la ventana y cuando I_\mathrm{hi} < I_\mathrm{lo} (por eso la variante «smart» pasa a fondo lineal).
Referencia: implementación propia. Para el método original: Shirley, Phys. Rev. B 5 (1972) 4709, citado en matlens/core/spectra.py.
Ejemplo resuelto
Caso sintético (C 1s): dos componentes SGL(30) de FWHM 1.2 eV en 284.8 eV (área 6000 cps·eV) y 286.3 eV (área 2000 cps·eV) sobre un escalón de 200 a 260 cps proporcional al área acumulada, paso 0.05 eV entre 280 y 293 eV, ruido de Poisson (semilla fija). Área total verdadera: 8000 cps·eV.
| Magnitud | Valor |
|---|---|
| I_\mathrm{lo}, I_\mathrm{hi} (5 puntos) | 225.8, 262.8 cps |
| Fondo Shirley en 280 / 293 eV | 225.8 / 262.8 cps |
Área sobre Shirley (region_area) | 7611 cps·eV |
| Área sobre fondo lineal | 7658 cps·eV |
| Área verdadera dentro de 280–293 eV (trapecio de los picos sin ruido) | 7808 cps·eV |
Las colas lorentzianas (30 %) que quedan fuera de la ventana y se confunden con el fondo en los extremos explican que ambas áreas queden por debajo de 8000.
Fondo de Tougaard (sección eficaz universal)
Código: matlens/core/xps.py::tougaard_background, matlens/core/xps.py::_tougaard_basis.
- T = E_i - E_j: energía perdida (eV); solo se suman los términos con T > 0, es decir, las pérdidas desplazan intensidad hacia BE más alta.
- C: parámetro de la sección eficaz universal, 1643 eV² por defecto.
- B_T: amplitud (eV²). Si no se da, se ajusta para que el fondo coincida con I_\mathrm{hi}: B_T = (I_\mathrm{hi} - I_\mathrm{lo}) / \overline{\mathrm{base}}_\mathrm{hi}, donde el denominador es la media de la suma en los últimos k puntos.
- \Delta E_j: paso local, calculado con
np.gradient.
Nota (diferencia con la literatura): la sección eficaz universal de Tougaard suele usarse con B \approx 2866 eV² fijo. MatLens, en cambio, ajusta B_T por defecto para cerrar el fondo en el extremo de BE alta, y resta I_\mathrm{lo} como nivel base antes de la convolución.
Referencia: implementación propia.
Formas de línea
Código: matlens/core/xps.py::profile, matlens/core/xps.py::unit_profile, matlens/core/xps.py::_convolved_grid.
Todas las formas se normalizan a área unidad en la variable u = (E - E_0)/w. El pico se escribe como P(E) = \frac{A}{w}\,f(u)/\int f\,du.
- E_0: centro (eV).
- w: FWHM (eV).
- A: área (cps·eV).
- m: porcentaje lorentziano en GL/SGL (0 = gaussiana pura). En LA/DS, m es en cambio la FWHM (eV) de la gaussiana de convolución.
GL(m), producto:
El área se integra numéricamente en u \in [-60, 60] con 24001 puntos. En los límites, el área es \sqrt{\pi/(4\ln 2)} para m = 0 y \pi/2 para m = 100.
SGL(m), suma:
LA(α, β, m), lorentziana asimétrica (aproximación propia de la forma LA de CasaXPS):
- \alpha: exponente de la cola de BE baja; se fuerza \alpha \ge 0.3.
- \beta: exponente de la cola de BE alta; se fuerza \beta \ge 0.3.
DS(α, g), Doniach–Šunjić:
- \alpha: índice de asimetría, limitado a [0, 0.95].
- La FWHM lorentziana es w, es decir, \gamma = w/2.
Las formas LA y DS se convolucionan (por FFT) con una gaussiana de FWHM m (eV) sobre una malla u \in [-30, 30] con paso 0.02. Su área se define en esa ventana de ±30 FWHM.
Nota (diferencia con la literatura): la forma LA de CasaXPS no está publicada en forma cerrada; la definición de las colas es propia de MatLens. El centro E_0 es el ápice de la línea sin ensanchar. Las colas LA/DS no son integrables hasta el infinito, por lo que el área depende de la ventana de ±30 FWHM.
Referencia: implementación propia (nomenclatura de CasaXPS).
Ajuste de componentes con restricciones
Código: matlens/core/xps.py::fit_components, matlens/core/xps.py::make_doublet.
Función objetivo. Se minimiza por mínimos cuadrados no lineales (lmfit, Levenberg–Marquardt leastsq, como máximo 400 evaluaciones):
- c:
counts_scale, factor que convierte cps a cuentas.
Restricciones y valores iniciales:
-
Centro: puede variar dentro de \pm
center_tol(1 eV por defecto) alrededor de su valor inicial, y siempre dentro del rango de datos. -
FWHM: debe quedar en
fwhm_range= (0.3, 6.0) eV. -
Parámetro de forma m: fijo por defecto; si se libera, queda en [0, 100] para GL/SGL y en [0, 5] eV para LA/DS.
-
Área: debe ser positiva o nula. Su valor inicial es A_0 = 1.06\,h\,w, donde h es el máximo de y - B a menos de w/2 del centro.
-
Enlaces entre componentes:
- centro: E_{0,k} = E_{0,p} + \Delta;
- FWHM: w_k = r_w\,w_p;
- área: A_k = r_A\,A_p.
Con
vary_link, \Delta puede moverse ±1 eV y las razones ±50 %. -
Dobletes espín-órbita (
make_doublet): la separación \Delta E se toma de la tablaSPIN_ORBIT. La razón de áreas (componente de BE alta entre componente de BE baja) es 1/2 para p, 2/3 para d y 3/4 para f.
Fondo durante el ajuste. Si refine está activo, el fondo se reajusta junto con los picos:
- Shirley/smart: B(E) = b_0 + b_k \int_{E_\mathrm{min}}^{E} \sum_k P_k\,dE', con b_k \ge 0.
- Tougaard: b_0 + b_t\cdot\mathrm{base}, con b_t \ge 0.
- Lineal y constante: sus parámetros quedan libres.
Si refine no está activo, el fondo se calcula una sola vez y queda fijo.
Algoritmo de fit_components, paso a paso:
- Aplicar las restricciones físicas (
xps_physics.apply_constraints) salvophysics=False. - Tomar valores iniciales y banderas de refinado del árbol de parámetros, si se da.
- Exigir al menos 5 puntos y un componente.
- Calcular el fondo inicial con
BackgroundSpec.compute; conrefine, crear sus parámetros libres. - Crear los parámetros de lmfit con los límites y enlaces descritos (los enlaces son expresiones: el hijo no es libre).
- Minimizar con
leastsq(Levenberg–Marquardt de MINPACK), como máximomax_nfev= 400 evaluaciones; la convergencia es la de MINPACK con las tolerancias por defecto de lmfit. - Construir la tabla de componentes, \chi^2_\mathrm{P}, \chi^2_\nu, R^2, el informe físico (
check_fit) y la validez.
Estadísticos e incertidumbre (k = 1).
- \hat{y}_i: envolvente ajustada (picos más fondo).
- N: número de puntos; N_\mathrm{var}: número de parámetros libres.
El \chi^2 que se informa usa siempre la varianza de Poisson de la envolvente, aunque el ajuste se haya hecho sin pesos. Las incertidumbres de posición, FWHM y área son los errores estándar de lmfit, obtenidos de la matriz de covarianza; lmfit los escala por defecto con \sqrt{\chi^2_\nu} del propio ajuste. El porcentaje de área de cada componente es 100\,A_k/\sum A y se informa sin incertidumbre.
Referencia: separaciones espín-órbita tomadas de Moulder et al., Handbook of X-ray Photoelectron Spectroscopy (Perkin-Elmer, 1992); C. D. Wagner et al., NIST XPS Database SRD 20; M. C. Biesinger et al., Appl. Surf. Sci. 257 (2010) 887 y 257 (2011) 2717.
Lo que la incertidumbre no incluye. Los errores estándar suponen un modelo correcto y residuos aproximadamente normales e independientes; no incluyen la elección del número de componentes, de la forma de línea ni del tipo de fondo y sus extremos, ni la calibración del eje de BE. Los parámetros enlazados heredan la incertidumbre de su padre. Son k = 1; multiplíquense por 2 para k = 2 (aprox. 95 %, supuesta normalidad). No hay Monte Carlo.
Ejemplo resuelto
Mismo espectro. Valores iniciales 284.6 y 286.0 eV, FWHM 1.4 eV, m = 30 fijo; fondo Shirley refinado con los picos y pesos de Poisson (fit_components(..., BackgroundSpec("shirley", refine=True), weighted=True)). Incertidumbres k = 1 de la covarianza de lmfit:
| Componente | Posición (eV) | FWHM (eV) | Área (cps·eV) | % área |
|---|---|---|---|---|
| C-C | 284.81 ± 0.0031 | 1.201 ± 0.0067 | 6007 ± 32 | 75.49 |
| C-O | 286.31 ± 0.008 | 1.184 ± 0.016 | 1950 ± 29 | 24.51 |
\chi^2_\nu = 0.9034, R^2 = 0.99938, N_\mathrm{var} = 8, validez: warning. Motivos:
- C-C: Sin estado químico asignado: componente sin justificación física
- C-O: Sin estado químico asignado: componente sin justificación física
Un buen \chi^2_\nu no basta: sin estado químico asignado la justificación física de cada componente queda en aviso.
Restricciones físicas y validez del ajuste
Código: matlens/core/xps_physics.py::PhysicsConfig, matlens/core/xps_physics.py::apply_constraints, matlens/core/xps_physics.py::check_fit, matlens/core/xps_physics.py::justify_components.
Un ajuste puede reproducir los datos (χ² bajo, R^2 \approx 1) y no tener sentido físico. Por eso cada ajuste aplica restricciones físicas y devuelve un informe por restricción (pass, warn, fail o skip). La validez del resultado sale de ese informe: con algún fail es invalid; con algún warn, warning; solo sin avisos es ok. Un buen χ² nunca convierte en ok un ajuste con componentes físicamente inválidos.
Todas las restricciones están activas por defecto. Cada componente puede llevar un rol (principal, doblete o satélite), un estado químico asignado (CHEM_STATES) y una familia. El usuario puede desactivar o cambiar cualquier restricción; cada cambio se registra como override en physics.overrides del resultado (y en los metadatos physics_overrides de la hoja), y aparece en el informe como warn.
Dobletes espín-órbita.
- Razón de áreas fijada por la degeneración 2j+1: A(j=l-\tfrac12)/A(j=l+\tfrac12) = l/(l+1), es decir, 1:2 para p, 2:3 para d y 3:4 para f.
- Desdoblamiento \Delta E fijado al valor de la tabla
SPLITTINGS, por elemento, orbital y, si se conoce, tipo de estado. Si solo hay valor para el metal y el estado asignado es otro, se usa ese valor con aviso. Si el elemento no está en la tabla, se usa la tabla heredadaSPIN_ORBITy el informe avisa de que el valor no está verificado. - FWHM enlazada (razón 1). Excepción: en los niveles 2p de los metales 3d (Sc–Zn) la componente 2p1/2 está ensanchada por desintegración Coster–Kronig, y la razón de FWHM 2p1/2/2p3/2 queda libre con la condición \ge 1.
- Se avisa cuando falta el compañero espín-órbita de un componente y su posición cae dentro del rango ajustado.
| Nivel | \Delta E (eV) | Estado |
|---|---|---|
| Si 2p | 0.63 | — |
| Ti 2p | 6.1 / 6.0 / 5.7 | metal / nitruro / óxido |
| Fe 2p | 13.1 | metal |
| Co 2p | 14.99 | metal |
| Ni 2p | 17.3 | metal |
| Cu 2p | 19.75 | — |
| Zn 2p | 23.0 | metal (la fuente da «23 eV») |
| Mo 3d | 3.15 | — |
| Ag 3d | 6.0 | metal |
| Au 4f | 3.7 | — |
| W 4f | 2.17 | metal |
| S 2p | 1.16 | — |
| Sn 3d | 8.4 | metal |
Fuente de todos los valores: Thermo Scientific XPS Knowledge Base, páginas de cada elemento (thermofisher.com, periodic table). Coster–Kronig: Major et al. (2020) y la página de Ti de la misma base.
FWHM.
- Límite inferior: la resolución del instrumento, si el usuario la da. Sin ella, solo se exige que la FWHM sea al menos 2 pasos de datos (criterio de muestreo de MatLens, no de la literatura; si no se cumple, la regla da
fail). - Límite superior: el que fije el usuario. No hay un valor por defecto con fuente; queda sin límite (más allá de
fwhm_range). - Familias: los componentes de una misma familia comparten la FWHM dentro de ±10 % o ±0.1 eV (lo mayor), la regla práctica de Major et al. (2020).
Formas de línea. GL/SGL (pseudo-Voigt) por defecto. Las formas asimétricas (LA, DS) solo se aceptan en estados metálicos o grafíticos. Con un estado no conductor asignado (p. ej. TiO₂) la regla da fail; sin estado asignado, o con una ventana que mezcla metal y compuesto, da warn.
Posiciones. Si el usuario asigna un estado químico, el centro queda acotado a la ventana de ese estado en CHEM_STATES, con su referencia. El compañero de un doblete sigue al principal.
Satélites. Los satélites de shake-up se reconocen como satélites, no como estados químicos: no necesitan estado asignado ni entran en la justificación de componentes. Ventanas tabuladas: Cu²⁺ 940–944 eV (Biesinger et al. 2010); Co²⁺ ≈ 786 eV (Thermo Knowledge Base), con una tolerancia de ±1 eV elegida por MatLens; π–π* del C sp² 290.0–292.5 eV (Beamson & Briggs 1992; la base de Thermo lo sitúa unos 6 eV por encima del C 1s principal). Un componente sin asignar dentro de una de estas ventanas se marca como «probable satélite».
Fondo. Shirley por defecto, calculado una vez o refinado junto con los picos (refine). El tipo de fondo se registra siempre. Un fondo lineal, constante o nulo con un estado metálico asignado da fail: según Major et al. (2020), un fondo lineal es incorrecto en metales y semiconductores.
Número de componentes. Cada componente principal se justifica de dos formas, y el informe da la comparación:
- Estadística: se compara el modelo completo con el modelo sin ese componente (y sin su compañero de doblete):
El componente está justificado si \Delta\mathrm{BIC} = \mathrm{BIC}_1 - \mathrm{BIC}_2 > 2 (evidencia positiva, Kass & Raftery 1995) y p_F < 0.05. También se informa \Delta\mathrm{AICc}.
-
Física: el componente tiene un estado químico asignado.
Si cumple ambas,
pass; si solo una,warn; si ninguna,fail. -
\mathrm{RSS}: suma de cuadrados de residuos minimizada (ponderada si el ajuste es ponderado).
-
k: parámetros libres; N: puntos.
Referencias: G. H. Major et al., «Practical guide for curve fitting in X-ray photoelectron spectroscopy», J. Vac. Sci. Technol. A 38 (2020) 061203; M. C. Biesinger et al., Appl. Surf. Sci. 257 (2010) 887 y 257 (2011) 2717; Thermo Scientific XPS Knowledge Base; G. Schwarz, Ann. Stat. 6 (1978) 461; R. E. Kass y A. E. Raftery, J. Am. Stat. Assoc. 90 (1995) 773; C. M. Hurvich y C.-L. Tsai, Biometrika 76 (1989) 297.
Valores omitidos por falta de fuente verificable: el satélite de Ni²⁺, el desdoblamiento de los óxidos de Fe, Co, Ni, Zn, Ag, W y Sn, y un límite superior de FWHM por defecto.
Validez del ajuste, reglas tal como las evalúa check_fit (validity_of: algún fail → invalid; algún warn → warning):
fail: FWHM menor que 2 pasos de datos (mediana de |\Delta E|); FWHM menor que la resolución declarada; FWHM mayor que el máximo declarado; forma asimétrica (LA/DS) con un estado no conductor asignado; centro fuera de la ventana del estado químico asignado; razón de áreas de un doblete distinta de l/(l+1); desdoblamiento distinto del valor con fuente; fondo lineal, constante o nulo con un estado metálico asignado.warn: restricciones físicas desactivadas (physics=False) o modificadas (override); forma asimétrica sin estado asignado o en una ventana mixta; estado asignado no tabulado; componente sin asignar dentro de una ventana de satélite («probable satélite»); componente principal sin estado químico asignado; desdoblamiento sin valor de fuente verificada; razón de FWHM del doblete distinta de 1 (o menor que 1 en Coster–Kronig); falta el compañero espín-órbita dentro del rango; FWHM de una familia fuera de la tolerancia.
La comparación estadística (\Delta\mathrm{BIC}, p_F) la hace justify_components, que reajusta el modelo sin cada componente; es una llamada aparte del ajuste.
Nota (código frente a documentación anterior): con fwhm_bounds activo, una FWHM menor que 2 pasos de datos da fail, no solo una comprobación informativa.
Área de una región
Código: matlens/core/xps.py::region_area.
La integral se calcula con la regla del trapecio. El fondo B se calcula solo con los datos de la ventana, y se exigen al menos 3 puntos.
Cuantificación con factores de sensibilidad
Código: matlens/core/xps.py::quantify, matlens/core/xps.py::effective_rsf, matlens/core/xps.py::scofield_rsf, matlens/core/xps.py::imfp, matlens/core/xps.py::transmission.
- A_i: área de la subcapa completa (cps·eV); en dobletes se suman ambos componentes. Si la región está en cuentas brutas (VAMAS, ISO 14976), el área se divide por t_{\mathrm{dwell}}\,N_{\mathrm{scans}} de esa región (
matlens/core/xps.py::count_rate_factor), como hace CasaXPS: regiones medidas con distinto número de barridos no son comparables en cuentas. - \sigma_i: sección eficaz de Scofield para Al Kα, relativa a C 1s = 1. Si el usuario da un RSF propio, este sustituye a \sigma_i, pero se le siguen aplicando las correcciones \lambda\,T. Un nivel tipo
3d5/2usa el valor de3d. - h\nu: energía del fotón, 1486.6 eV por defecto (Al Kα); Mg Kα = 1253.6 eV.
- E_B: energía de enlace del centro del pico (eV).
- E_K: energía cinética (eV); se desprecia la función de trabajo.
- T(E_K) = E_K^{-n}: transmisión del analizador, con n = 1 por defecto (modo FAT ideal).
- \lambda(E_K): camino libre medio inelástico (IMFP), con dos modelos:
E07(por defecto): \lambda \propto E_K^{0.7}, en unidades relativas.TPP2M: fórmula de Tanuma–Powell–Penn, en Å:
- \rho: densidad (g/cm³), 2.0 por defecto.
- N_v: electrones de valencia por molécula, 4 por defecto.
- E_g: gap (eV), 0 por defecto.
- M: masa molar (g/mol), 12 por defecto.
Validez: se supone una muestra homogénea, sin corrección de asimetría angular ni de difracción de fotoelectrones. Para Mg Kα se usan las razones de Al Kα, con un error típico menor del 10 %. Si un elemento no está tabulado se produce un error; nunca se descarta en silencio. No se propaga incertidumbre a los % at.
Referencias: J. H. Scofield, J. Electron Spectrosc. Relat. Phenom. 8 (1976) 129–137; C. D. Wagner et al., Surf. Interface Anal. 3 (1981) 211; Tanuma, Powell y Penn, Surf. Interface Anal. 21 (1994) 165.
Algoritmo de quantify: para cada ítem, E_K = \max(h\nu - E_B, 10), S_i = \sigma_i\lambda(E_K)T(E_K) (effective_rsf), A_i/S_i, y normalización a 100 %. No hay ajuste ni iteración. Incertidumbre: no se propaga; la de las áreas del ajuste no se transmite a los % at, y las de \sigma, \lambda y T (típicamente las dominantes, sobre todo la transmisión real del analizador y la homogeneidad de la muestra) no se estiman.
Ejemplo resuelto
Áreas elegidas solo para ilustrar el cálculo (no son de una muestra real); Al Kα (h\nu = 1486.6 eV), IMFP E07, T = E_K^{-1}. Resultado de quantify:
| Nivel | BE (eV) | Área | σ (Scofield, C 1s = 1) | S_i efectivo | % at |
|---|---|---|---|---|---|
| C 1s | 284.8 | 8000 | 1 | 0.1191 | 61.91 |
| O 1s | 532 | 1.2e+04 | 2.93 | 0.374 | 29.58 |
| Ti 2p | 458.8 | 9000 | 7.81 | 0.9752 | 8.509 |
Cuantificación sobre un survey
Código: matlens/core/xps_physics.py::quantify_survey, matlens/core/xps_physics.py::survey_windows, matlens/recipes/ops.py::xps_quantify.
Se integra una ventana por elemento dentro de un único espectro survey, con la misma ecuación y los mismos factores S_i = \sigma_i\,\lambda\,T que la cuantificación por regiones (enfoque de ISO 18118 para materiales homogéneos):
- E_i: energía del nivel principal del elemento, de la tabla
CORE_LEVELS(Moulder et al. 1992; NIST SRD 20). - \Delta E_i: desdoblamiento espín-órbita (
SPLITTINGS, oSPIN_ORBITsi falta), para que la ventana contenga la subcapa completa. - B_i: fondo Shirley (o lineal) calculado solo dentro de la ventana.
- Los márgenes de 4 y 6 eV son valores por defecto de MatLens, no de la literatura; el usuario puede cambiar cada ventana.
Si no se indican elementos, se usan los que identifica identify_survey y tienen sección eficaz tabulada. Se avisa de las ventanas que se solapan y de los elementos omitidos. En una sola medida, el factor de tiempo de adquisición es común a todas las ventanas y se cancela.
La operación xps.quantify usa el survey cuando la muestra no tiene regiones de alta resolución (source = auto) o cuando se pide (source = survey). La tarjeta de validación xps_quantification acepta un survey como entrada solo a partir de la ronda 5; las rondas 1–4 no se vuelven a puntuar.
Calibración de carga
Código: matlens/core/xps.py::calibration_shift, matlens/core/xps.py::peak_position.
- E_\mathrm{ref}: energía de referencia, 284.8 eV por defecto (carbono adventicio C 1s).
- E_\mathrm{pico}: posición del máximo de los datos, suavizados con una media móvil de 5 puntos, dentro de la ventana de búsqueda (280–292 eV por defecto). Se refina con una parábola por tres puntos.
- \delta E: paso entre los dos primeros puntos de la ventana (se supone malla uniforme).
- \Delta E: desplazamiento (eV) que hay que sumar a todo el eje de BE.
No se calcula incertidumbre.
Referencia: implementación propia. El docstring del código menciona la norma ISO 15472 y la práctica habitual para el valor de 284.8 eV.
Ejemplo resuelto
El mismo C 1s desplazado +1.37 eV por carga. peak_position (media móvil de 5 puntos y parábola por 3 puntos) da E_\mathrm{pico} = 286.205 eV y calibration_shift da \Delta E = -1.4052 eV (referencia 284.8 eV). El máximo de la envolvente no coincide exactamente con el centro del componente C–C porque el componente C–O lo desplaza hacia BE alta.
Referencia de carga: métodos y advertencia
Código: matlens/core/xps_physics.py::charge_reference, matlens/core/xps_physics.py::fermi_edge.
Hay tres métodos, y el resultado registra el método, el valor medido, la referencia y el desplazamiento (ISO 19318):
- Carbono adventicio (por defecto): C 1s → 284.8 eV. Advertencia de Greczynski y Hultman (2020): la posición del C 1s adventicio depende de la función de trabajo de la muestra, porque se alinea con el nivel de vacío, y puede desviarse más de 1 eV. Es una convención, no una referencia fiable.
- Pico interno conocido: el máximo en una ventana se lleva al valor de referencia que da el usuario.
- Nivel de Fermi (conductores): se ajusta el borde de la banda de valencia con
en la ventana [-3, 3] eV por defecto.
Referencias: G. Greczynski y L. Hultman, «X-ray photoelectron spectroscopy: Towards reliable binding energy referencing», Prog. Mater. Sci. 107 (2020) 100591; ISO 19318.
Referencias sin DOI comprobado en esta revisión: D. A. Shirley, Phys. Rev. B 5 (1972) 4709; S. Tougaard (sección eficaz universal); J. H. Scofield (1976); S. Tanuma, C. J. Powell y D. R. Penn (1994); G. H. Major et al. (2020); G. Greczynski y L. Hultman (2020); M. C. Biesinger et al. (2010, 2011). Se citan por revista, volumen y página.