diff --git a/beamtime/nappBackground.m b/beamtime/nappBackground.m index e8003d8..d239273 100644 --- a/beamtime/nappBackground.m +++ b/beamtime/nappBackground.m @@ -109,8 +109,9 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1) 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(1) p.Results.energyStart(2)] ); + excludedPointsDrei = excludedata( xData, yData, 'domain',[p.Results.energyEnd(2) xData(end)] ); + excludedPoints = excludedPointsEins & excludedPointsZwei & excludedPointsDrei; end opts = fitoptions( 'Method', 'NonlinearLeastSquares','Exclude', ~excludedPoints ); @@ -121,7 +122,7 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1) if contains(p.Results.showFigures,'on') % Plot fit with data. figure( 'Name', 'untitled fit 1' ); - plot( fitresult, xData, yData, excludedPoints ); + plot( fitresult, xData, yData, ~excludedPoints ); % legend( h, 'y vs. x', 'Excluded y vs. x', 'untitled fit 1', 'Location', 'NorthEast', 'Interpreter', 'none' ); % Label axes xlabel( 'kinetic energy [eV]', 'Interpreter', 'none' ); diff --git a/beamtime/nappFitGaussXps.m b/beamtime/nappFitGaussXps.m index 9228ea6..9d9fd80 100644 --- a/beamtime/nappFitGaussXps.m +++ b/beamtime/nappFitGaussXps.m @@ -199,7 +199,7 @@ if matches(p.Results.mode,'position') p.Results.FitParameter.peakAreaLowerBond(1,2) p.Results.FitParameter.peakWidthLowerBond(1,2) ... % Gauss peak 2 p.Results.FitParameter.peakAreaLowerBond(1,3) p.Results.FitParameter.peakWidthLowerBond(1,3) ... % Gauss peak 3 p.Results.FitParameter.peakAreaLowerBond(1,4) p.Results.FitParameter.peakWidthLowerBond(1,4) ... % Gauss peak 4 - 0 0]; % linear background + -Inf 0]; % linear background % upper bond ub = [p.Results.FitParameter.peakAreaUpperBond(1,1) p.Results.FitParameter.peakWidthUpperBond(1,1) p.Results.FitParameter.peakPosUpperBond(1,1) ... % Gauss peak 1 p.Results.FitParameter.peakAreaUpperBond(1,2) p.Results.FitParameter.peakWidthUpperBond(1,2) ... % Gauss peak 2 @@ -225,7 +225,7 @@ elseif matches(p.Results.mode,'unconstrained') p.Results.FitParameter.peakAreaLowerBond(1,2) p.Results.FitParameter.peakWidthLowerBond(1,2) p.Results.FitParameter.peakPosLowerBond(1,2)... % Gauss peak 2 p.Results.FitParameter.peakAreaLowerBond(1,3) p.Results.FitParameter.peakWidthLowerBond(1,3) p.Results.FitParameter.peakPosLowerBond(1,3)... % Gauss peak 3 p.Results.FitParameter.peakAreaLowerBond(1,4) p.Results.FitParameter.peakWidthLowerBond(1,4) p.Results.FitParameter.peakPosLowerBond(1,4)... % Gauss peak 4 - 0 0]; % linear background + -Inf 0]; % linear background % upper bond ub = [p.Results.FitParameter.peakAreaUpperBond(1,1) p.Results.FitParameter.peakWidthUpperBond(1,1) p.Results.FitParameter.peakPosUpperBond(1,1) ... % Gauss peak 1 p.Results.FitParameter.peakAreaUpperBond(1,2) p.Results.FitParameter.peakWidthUpperBond(1,2) p.Results.FitParameter.peakPosUpperBond(1,2)... % Gauss peak 2 @@ -254,7 +254,7 @@ elseif matches(p.Results.mode,'widthPosition') p.Results.FitParameter.peakAreaLowerBond(1,3) ... % Gauss peak 3 p.Results.FitParameter.peakAreaLowerBond(1,4) ... p.Results.FitParameter.peakAreaLowerBond(1,5) ... % Gauss peak 5 - 0 0]; % linear background + -Inf -Inf]; % linear background % upper bond ub = [p.Results.FitParameter.peakAreaUpperBond(1,1) p.Results.FitParameter.peakWidthUpperBond(1,1) p.Results.FitParameter.peakPosUpperBond(1,1) ... % Gauss peak 1 p.Results.FitParameter.peakAreaUpperBond(1,2) ... % Gauss peak 2 @@ -278,15 +278,15 @@ elseif matches(p.Results.mode,'width') 0 0]; % linear background % lower bonds lb = [p.Results.FitParameter.peakAreaLowerBond(1,1) p.Results.FitParameter.peakWidthLowerBond(1,1) p.Results.FitParameter.peakPosLowerBond(1,1) ... % Gauss peak 1 - p.Results.FitParameter.peakAreaLowerBond(1,2) p.Results.FitParameter.peakWidthLowerBond(1,2) ... % Gauss peak 2 - p.Results.FitParameter.peakAreaLowerBond(1,3) p.Results.FitParameter.peakWidthLowerBond(1,3) ... % Gauss peak 3 - p.Results.FitParameter.peakAreaLowerBond(1,4) p.Results.FitParameter.peakWidthLowerBond(1,4) ... % Gauss peak 4 - 0 0]; % linear background + p.Results.FitParameter.peakAreaLowerBond(1,2) p.Results.FitParameter.peakPos(1,2) ... % Gauss peak 2 + p.Results.FitParameter.peakAreaLowerBond(1,3) p.Results.FitParameter.peakPos(1,3) ... % Gauss peak 3 + p.Results.FitParameter.peakAreaLowerBond(1,4) p.Results.FitParameter.peakPos(1,4) ... % Gauss peak 4 + -Inf -Inf]; % linear background % upper bond ub = [p.Results.FitParameter.peakAreaUpperBond(1,1) p.Results.FitParameter.peakWidthUpperBond(1,1) p.Results.FitParameter.peakPosUpperBond(1,1) ... % Gauss peak 1 - p.Results.FitParameter.peakAreaUpperBond(1,2) p.Results.FitParameter.peakWidthUpperBond(1,2) ... % Gauss peak 2 - p.Results.FitParameter.peakAreaUpperBond(1,3) p.Results.FitParameter.peakWidthUpperBond(1,3) ... % Gauss peak 3 - p.Results.FitParameter.peakAreaUpperBond(1,4) p.Results.FitParameter.peakWidthUpperBond(1,4) ... % Gauss peak 4 + p.Results.FitParameter.peakAreaUpperBond(1,2) p.Results.FitParameter.peakPos(1,2) ... % Gauss peak 2 + p.Results.FitParameter.peakAreaUpperBond(1,3) p.Results.FitParameter.peakPos(1,3) ... % Gauss peak 3 + p.Results.FitParameter.peakAreaUpperBond(1,4) p.Results.FitParameter.peakPos(1,4) ... % Gauss peak 4 Inf Inf]; % linear background elseif matches(p.Results.mode,'unconstrainedAndWidthPosition') % Novum, also the distance between peaks is a fit parameter. [Gauss = area/(width*sqrt(pi/2)) * exp(-2*(x-position)^2/width^2)] @@ -312,7 +312,7 @@ elseif matches(p.Results.mode,'unconstrainedAndWidthPosition') % Novum, also the p.Results.FitParameter.peakAreaLowerBond(1,3) p.Results.FitParameter.peakWidthLowerBond(1,2) p.Results.FitParameter.peakPosLowerBond(1,3) ... % Gauss peak 3 p.Results.FitParameter.peakAreaLowerBond(1,4) p.Results.FitParameter.peakPosLowerBond(1,4) ... p.Results.FitParameter.peakAreaLowerBond(1,5) p.Results.FitParameter.peakPosLowerBond(1,5) ...% Gauss peak 4 - 0 0 ... % linear background + -Inf -Inf ... % linear background p.Results.FitParameter.peakPosLowerBond(1,1)]; % upper bond @@ -340,7 +340,7 @@ elseif matches(p.Results.mode,'unconstrainedAndWidthPosition') % Novum, also the p.Results.FitParameter.peakArea(1,3) p.Results.FitParameter.peakWidth(1,2) p.Results.FitParameter.peakPos(1,3)... % Gauss peak 3 p.Results.FitParameter.peakArea(1,4) p.Results.FitParameter.peakPos(1,4)... % Gauss peak 4 p.Results.FitParameter.peakArea(1,5) p.Results.FitParameter.peakPos(1,5)... % Gauss peak 5 - 1 0 ... % linear background + 0 0 ... % linear background p.Results.FitParameter.peakPos(1,1)]; % lower bonds lb = [p.Results.FitParameter.peakAreaLowerBond(1,1) p.Results.FitParameter.peakWidthLowerBond(1,1) p.Results.FitParameter.peakPosLowerBond(1,2) ... % Gauss peak 1 @@ -440,9 +440,9 @@ for ii = 1:size(DataTable(p.Results.tableSelection,:),1) elseif matches(p.Results.mode,'width') B = [tmpB(1) tmpB(2) tmpB(3)... tmpB(4) tmpB(2) tmpB(5)... - tmpB(6) tmpB(2) tmpB(8)... - tmpB(9) tmpB(2) tmpB(10)... - tmpB(11) tmpB(12)... + tmpB(6) tmpB(2) tmpB(7)... + tmpB(8) tmpB(2) tmpB(9)... + tmpB(10) tmpB(11)... NaN NaN NaN]; elseif matches(p.Results.mode,'unconstrainedAndWidthPosition') B = [tmpB(1) tmpB(2) tmpB(3)+tmpB(14)... @@ -585,7 +585,7 @@ for ii = 1:size(DataTable(p.Results.tableSelection,:),1) resultsPeakPos(ii,:) = [B(3), B(6), B(9), B(12), B(16)] ; %#ok<*AGROW> resultsPeakFWHW(ii,:) = [B(2).*sqrt(log(4)), B(5).*sqrt(log(4)), B(8).*sqrt(log(4)), B(11).*sqrt(log(4)), B(17).*sqrt(log(4))] ; resultsPeakArea(ii,:) = [B(1), B(4), B(7), B(10) B(15)] ; - % resultsBkgrd(ii,:) = [B(13), B(14)] ; + resultsBkgrd(ii,:) = [B(13), B(14)] ; % close the fiting progess window fh = findobj( 'Type', 'Figure', 'Name', 'GlobalSearch'); close(fh) @@ -606,11 +606,16 @@ try if ~any(existColumn) DataTable.peakFWHM = NaN(size(DataTable,1),size(resultsPeakFWHW,2)); end + existColumn = strcmp('peakBackground',DataTable.Properties.VariableNames); + if ~any(existColumn) + DataTable.peakBackground = NaN(size(DataTable,1),size(resultsBkgrd,2)); + end %if contains(p.Results.energyScale,'binding') DataTable(p.Results.tableSelection,:).peakPosition = resultsPeakPos(:,:); %end DataTable(p.Results.tableSelection,:).peakFWHM = resultsPeakFWHW(:,:); DataTable(p.Results.tableSelection,:).peakArea = resultsPeakArea(:,:); + DataTable(p.Results.tableSelection,:).peakBackground = resultsBkgrd(:,:); catch disp('Could not write results to table. Writing only 4 entries') existColumn = strcmp('peakPosition',DataTable.Properties.VariableNames); @@ -625,6 +630,10 @@ catch if ~any(existColumn) DataTable.peakFWHM = NaN(size(DataTable,1),size(resultsPeakFWHW,2)); end + existColumn = strcmp('peakBackground',DataTable.Properties.VariableNames); + if ~any(existColumn) + DataTable.peakBackground = NaN(size(DataTable,1),size(resultsPeakFWHW,2)); + end %if contains(p.Results.energyScale,'binding') DataTable(p.Results.tableSelection,:).peakPosition = resultsPeakPos(:,1:4); %end