diff --git a/beamtime/nappBackground.m b/beamtime/nappBackground.m index 20246e8..c45e836 100644 --- a/beamtime/nappBackground.m +++ b/beamtime/nappBackground.m @@ -31,15 +31,30 @@ function DataTable = nappBackground(DataTable,varargin) % one of the following variables: 'spectrum_counts', % 'spectrum_countsPerSecond', or 'spectrum_countsNorm'. % -% energyStart numeric scalar or vector -% Lower bound(s) of energy range for background calculation. -% Scalar: single energy range. -% Vector [E1, E2]: two disjoint ranges [E1, E2] to [end] and [E2, E1]. -% Note: For binding energy scale, comparison direction reverses. +% energyStart — Start energies for excluded ranges +% Numeric scalar or vector. +% Defines the lower bound(s) of the data range(s) excluded from +% background fitting. +% +% energyEnd — End energies for excluded ranges +% Numeric scalar or vector. +% Defines the upper bound(s) of the data range(s) excluded from +% background fitting. +% +% If energyStart and energyEnd are scalars, the range between +% energyStart and energyEnd is excluded from the fit (for example, +% to exclude the main peak). +% +% If energyStart is a two-element vector, the range from the first +% data point to the second value of energyStart is additionally +% excluded. +% If energyEnd is a two-element vector, the range from the second +% value of energyEnd to the end of the dataset is additionally +% excluded. +% +% Specify vector values as comma-separated entries in brackets, +% for example [395, 407]. % -% energyEnd numeric scalar or vector -% Upper bound(s) of energy range for background calculation. -% See energyStart for vector behavior. % % NAME-VALUE PAIR ARGUMENTS (optional) % ------------------------------------ @@ -89,11 +104,6 @@ function DataTable = nappBackground(DataTable,varargin) % NOTES % ----- % - Empty or missing spectra in tableVariable will trigger an error. -% - For 'mean' mode with binding energy, energy comparisons use <= operator -% (reversed compared to kinetic energy mode). -% - Exponential fits ('exp2' type) are computed via nonlinear least squares -% excluding points outside the specified energy range. -% - Generated log entries are identical for all rows in tableSelection. % % SEE ALSO % -------- @@ -167,8 +177,8 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1) if ~startsWith(p.Results.mode,'mean') [xData, yData] = prepareCurveData(p.Results.DataTable(p.Results.tableSelection,:).scientaEkin_eV{ii},p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable){ii}); - excludedPoints = excludedata( xData, yData, 'domain',[p.Results.energyStart(1) p.Results.energyEnd(1)] ); + if size(p.Results.energyStart,2) ==2 && size(p.Results.energyEnd,2) ==1 excludedPointsEins = excludedPoints; clearvars excludedPoints @@ -180,6 +190,12 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1) excludedPointsZwei = excludedata( xData, yData, 'domain',[xData(1) p.Results.energyStart(2)] ); excludedPointsDrei = excludedata( xData, yData, 'domain',[p.Results.energyEnd(2) xData(end)] ); excludedPoints = excludedPointsEins & excludedPointsZwei & excludedPointsDrei; + elseif size(p.Results.energyStart,2) ==1 && size(p.Results.energyEnd,2) ==2 + excludedPointsEins = excludedPoints; + clearvars excludedPoints + excludedPointsZwei = excludedata( xData, yData, 'domain',[p.Results.energyEnd(2) xData(end)] ); + excludedPoints = excludedPointsEins & excludedPointsZwei; + end opts = fitoptions( 'Method', 'NonlinearLeastSquares','Exclude', ~excludedPoints ); diff --git a/beamtime/nappCombineSpectra.m b/beamtime/nappCombineSpectra.m index d3a8a64..09c171f 100644 --- a/beamtime/nappCombineSpectra.m +++ b/beamtime/nappCombineSpectra.m @@ -13,7 +13,9 @@ function combinedSpectrum = nappCombineSpectra(DataTable,varargin) % energy axis and combined spectrum plus metadata. Critically, this allows % all existing nappXXX functions to operate directly on the combined result % without conversion. Output table is named '_combined.h5' -% where originalName is from the first selected row's name field. +% where originalName is from the first selected row's name field. The +% mean of pass energy, sample temperature, ice temperature, pressure +% are added to the output. % % SYNTAX % ------