Due to the potential occurrence of looping transitions (several resonance fields for a given pair of levels and a given spectrometer frequency), it is nontrivial to construct a simple list of resonance fields as a function of frequency. However, the inverse - resonance frequencies as a function of magnetic field - is much easier.
Here is a script that does it. It uses a
for
loop and calls
resfreqs_matrix
for each magnetic field value. The key is to ask it to calculate frequencies and intensities for
all transitions using
Opt.Transitions='all'
. Otherwise, EasySpin will automatically select only transitions with non-negligible intensities - and this subset might depend on the magnetic field.
In the second step, the script eliminates transitions that are too weak to be of relevance.
Code: Select all
% Generate a field-frequency plot, i.e. a 2D plot of resonance frequencies as
% a magnetic field.
%
% This plot is sometimes called a "Florida plot" in reference to the high-magnetic
% field laboratory in Florida, where this type of data is very often measured.
clear, clc, clf
%=======================================================================
% Spin system parameters and crystal orientation
Sys.S = 3/2;
Sys.g = 2;
Sys.D = 30e3*[1 0.1]; % MHz
Exp.CrystalOrientation = [30 40 0]*pi/180;
% Field range parameters
Bmax = 14; % maximum field, T
nPoints = 301; % number of points along field axis
% Plotting parameters
numax = 700; % maximum frequency, GHz
Threshold = 0.01; % lower transition intensity threshold (max. intensity is 1)
%=======================================================================
B = linspace(0,Bmax,nPoints); % field range vector, T
Opt.Transitions = 'all'; % calculate all orientations
% Calculate frequencies for all transitions for all fields
for iB = numel(B):-1:1
Exp.Field = B(iB)*1e3;
[nu(:,iB),Int(:,iB),~,Trans] = resfreqs_matrix(Sys,Exp,Opt);
end
nu = nu/1e3; % MHz -> GHz
% Remove transitions with intensities below threshold
if (Threshold>0)
rmv = max(Int,[],2)<Threshold*max(Int(:));
nu(rmv,:) = [];
Int(rmv,:) = [];
Trans(rmv,:) = [];
end
% Plot resonances
plot(B,nu);
xlabel('magnetic field (T)');
ylabel('frequency (GHz)');
ylim([0 numax]);
% Annotate transitions with level pairs
for t = 1:size(nu,1)
txt = sprintf(' %d-%d',Trans(t,1),Trans(t,2));
if nu(t,end)<numax
text(max(B),nu(t,end),txt);
else
[~,idx] = min(abs(nu(t,:)-numax));
h = text(B(idx),numax,txt);
set(h,'VerticalAl','bottom','HorizontalAl','center');
end
end