% Isotopes
sys.isotopes={'E','14N'};
% Magnet field
sys.magnet=3.35;
% Interactions
inter.zeeman.matrix=cell(1,2);
inter.zeeman.matrix{1}=[2.01045 0.00000 0.00000
0.00000 2.00641 0.00000
0.00000 0.00000 2.00211];
inter.coupling.matrix=cell(2,2);
inter.coupling.matrix{1,2}=[1.2356 0.0000 0.6322
0.0000 1.1266 0.0000
0.6322 0.0000 8.2230]*1e7;

% Basis set
bas.formalism='sphten-liouv';
bas.approximation='none';

% Spinach housekeeping
spin_system=create(sys,inter);
spin_system=basis(spin_system,bas);

% Sequence parameters
parameters.spins={'E'}; % Working spins
parameters.rho0=state(spin_system,'Lz','E'); % Initial condition
parameters.coil=state(spin_system,'L+','E'); % Detection state
parameters.decouple={}; % Decoupling
parameters.offset=-2e8; % Transmitter offset, Hz
parameters.sweep=8e8; % Sweep width, Hz
parameters.npoints=400;
parameters.tau=400e-9; %Separation between the two pulses
parameters.zerofill=512; % Zerofilling
parameters.axis_units='MHz'; % Axis units
parameters.grid='rep_2ang_6400pts_sph'; % Spherical grid
parameters.derivative=0; % Plot zeroth derivative
parameters.invert_axis=0; % Plot from left to right

% Soft pulse parameters
parameters.pulse_rnk=2;
parameters.pulse_phi=pi/2;
parameters.method='expm';
parameters.pulse_dur=6.5e-9;
parameters.pulse_pwr=2*pi/4*1e8;
parameters.pulse_frq=-200e6; 

%%
% Obtain trajectery using the hahn_echo experiment
traj=powder(spin_system,@hahn_echo,parameters,'esr');

time=linspace(0,parameters.tau*2+parameters.tau/parameters.npoints,parameters.npoints*2+1)/1e-9;

% Plot the trajectory after the second pulse
figure(); hold on;
plot(time,real(sum(traj.tau2,1)),'r-');
plot(time,imag(sum(traj.tau2,1)),'b-');
legend({'Real','Imaginary'});

%% Diagnosis section for checking spin system and pulse using holeburn experiment
parameters.npoints=128; % FID point count
% Reduce grid to make computation easier for diagnosis
parameters.grid='rep_2ang_200pts_sph';
% Soft pulse simulation
fid_a=powder(spin_system,@holeburn,parameters,'esr');
% Simulation with soft pulse off
parameters.pulse_pwr=0;
fid_b=powder(spin_system,@holeburn,parameters,'esr');

% Apodization
fid_a=apodization(fid_a,'exp-1d',6);
fid_b=apodization(fid_b,'exp-1d',6);
% Fourier transform
spectrum_a=fftshift(fft(fid_a,parameters.zerofill));
spectrum_b=fftshift(fft(fid_b,parameters.zerofill));
% Plotting
figure(); hold on;
plot_1d(spin_system,real(spectrum_a),parameters,'r-');
plot_1d(spin_system,real(spectrum_b),parameters,'b-');
legend({'soft pulse','reference'});
title('pi pulse');

