Hello there! I am trying to simulate an EPR spectrum for an Fe(III) high spin complex (spin 5/2). I'm noticing that the simulated plot don't match the reported g values. For example,
My window is from 20 mT to 620 mT, and the frequency was 9.64 GHz.
A g value of 3.8 at this frequency should correspond to around 1800 Gauss (180 mT), a g value of 4.82 should correspond to around 1430 Gauss (143 mT), and a g value of 7.27 should correspond to around 945 Gauss (94.5 mT). Yet, the features on the simulation are all shifted to the left of what one would expect. The shift is pretty big; just by eyeballing my plot, the features are coming in at 30 mT (vs 94.5) and 80 mT (vs 140-180 mT).
But the shape of the simulation looks very accurate, and the g values themselves are logical.
Has anyone encountered a problem like this? If so, how did y'all fix it? Thanks in advance!
FWIW, I'm also getting a "** Looping transitions found. Artifacts at coalescence points possible." error.
Here's my code:
clear;
[B1,spc1,par1]=eprload('file.DSC');
% experimental spectrum
exp.mwFreq = par1.MWFQ*10-9;
centerfield = erase(par1.CenterField,' G');% extract the value from string including unit
centerfield = str2num(centerfield); % extract the value from string including unit
sweepwidth = erase(par1.SweepWidth,' G');
sweepwidth = str2num(sweepwidth); % extract the value from string including unit
exp.Range = [centerfield-sweepwidth/2, centerfield+sweepwidth/2];% extract the value from string including unit
% initial guess for fitting
sys.g=[7.09 4.31 4.19];
sys.D_ = [11779 0.146241];
sys.lw=3.5; %mT
sys.S=5/2;
sys.Nucs = 'Fe';
sys.A = [0 0 0];
spc2fit = spc1;
exp2fit = exp;
% changing variables
%vary.D_ = [2000 0.01];
vary.g = [1 1 1];
% set fitting range
range2fit = [200, 6200]; % in G
spc_lowlimit = round((range2fit(1)-exp.Range(1))/(exp.Range(2)-exp.Range(1))(par1.A1RS-1))+1;
spc_highlimit = round((range2fit(2)-exp.Range(1))/(exp.Range(2)-exp.Range(1))(par1.A1RS-1))+1;
spc2fit = spc2fit(spc_lowlimit:spc_highlimit);
range2fit(1)=exp.Range(1)+spc_lowlimit(exp.Range(2)-exp.Range(1))/(par1.A1RS-1);
range2fit(2)=exp.Range(1)+spc_highlimit(exp.Range(2)-exp.Range(1))/(par1.A1RS-1);
exp2fit.Range = range2fit/10; % converted into mT
FitOpt.Method = 'montecarlo fcn'; % montecarlo algorithm, data as is target funtion
esfit(spc2fit,@pepper,{sys,exp2fit},{vary},FitOpt);