From a4ba16114649abe795e1c8c84a8845758d3caab9 Mon Sep 17 00:00:00 2001 From: ThorBarRa Date: Thu, 5 Mar 2026 13:04:49 +0100 Subject: [PATCH] When using linear fit, the plot somehow reversed the excluded points. This is fixed now, those data labeled excluded are indeed excluded from the fit. Second, the input is now the same for kinetic and binding energy. 2 salars define the range to be excluded (the central peak), adding additional energies add excluded regions at the edge of the spectra. --- beamtime/nappBackground.m | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/beamtime/nappBackground.m b/beamtime/nappBackground.m index c45e836..927e2d9 100644 --- a/beamtime/nappBackground.m +++ b/beamtime/nappBackground.m @@ -164,7 +164,7 @@ if ~any(existColumn) end -% repeat this for all columns in input. +% repeat this for all input. for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1) if startsWith(p.Results.mode,'linfit') @@ -240,20 +240,26 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1) % Set up fittype and options. - excludedPoints = excludedata( xData, yData, 'domain',[p.Results.energyStart(1) p.Results.energyEnd(1)] ); + 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 - excludedPointsZwei = excludedata( xData, yData, 'domain',[xData(1) p.Results.energyStart(2)] ); - excludedPoints = excludedPointsEins & excludedPointsZwei; + excludedPointsZwei = ~excludedata( xData, yData, 'domain',[xData(end) p.Results.energyStart(2)] ); + excludedPoints = excludedPointsEins | excludedPointsZwei; elseif size(p.Results.energyStart,2) ==2 && size(p.Results.energyEnd,2) ==2 excludedPointsEins = excludedPoints; clearvars excludedPoints - excludedPointsZwei = excludedata( xData, yData, 'domain',[p.Results.energyStart(2) p.Results.energyEnd(2)] ); - excludedPoints = excludedPointsEins & excludedPointsZwei; + excludedPointsZwei = ~excludedata( xData, yData, 'domain',[xData(end) p.Results.energyStart(2)] ); + excludedPointsDrei = ~excludedata( xData, yData, 'domain',[p.Results.energyEnd(2) xData(1)] ); + 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(1)] ); + excludedPoints = excludedPointsEins | excludedPointsZwei; end - opts = fitoptions( 'Method', 'NonlinearLeastSquares','Exclude', ~excludedPoints ); + opts = fitoptions( 'Method', 'NonlinearLeastSquares','Exclude', excludedPoints ); opts.Display = 'Off'; @@ -270,6 +276,8 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1) ylabel( 'PE intensity', 'Interpreter', 'none' ); grid on title(p.Results.DataTable(p.Results.tableSelection,:).name{ii},'Interpreter','none') + ax = gca; + ax.XDir = 'reverse'; end if endsWith(p.Results.mode,'divide') tmp{ii,1} = p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable){ii}./fitresult(p.Results.DataTable(p.Results.tableSelection,:).bindingEnergy_eV{ii});