Refractive Index Calculations for the Sodium FADOF
The notebook calculates, from first principles, the linear optical properties of a natural abundance (100% 23Na ;) ) Na cell, including full level structure, Zeeman effects by exact diagonalization, and Doppler shifts.  It then uses these optical properties to predict the transmission of a Sodium Faraday anomalous dispersion optical filter.

Copyright (C) 2011, 2014 Joanna A. Zielinska, Morgan W. Mitchell, Wilhelm Kiefer, Ilja Gerhardt
This program is free software : you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.You should have received a copy of the GNU General Public License along with this program.If not, see <http://www.gnu.org/licenses/> .

We would appreciate all publications using the output of this program to contain a brief acknowledgement “The authors acknowledge the courtesy of Joanna A. Zielinska, Morgan W. Mitchell (ICFO, Barcelona) and Wilhelm Kiefer, Ilja Gerhardt (MPI, Stuttgart) for permission to use this program”. Thank you.

This notebook can be compiled by pressing ”Ctrl - A” and then ”Shift - Enter”

Definitions

Conditions for the calculation

LCell = 0.1;(* Length of cell in m *)
BPlot=200;(* Magnetic field in units of mT *)
TPlot = 273+153;(* Temperature of cell in units of K *)

fStart = -15000;(* Start of the frequency offset from sodium D1 and accordingly sodium D2 line / MHz detuning from center of mass *)
fStop = +15000;(* Stop of the frequency offset from sodium D1 and accordingly sodium D2 line / MHz detuning from center of mass *)
fStep=(fStop-fStart)/300;(*Number of frequency offset steps*)

Physical constants

starttime=AbsoluteTime[];

μBohr=13.99624 ;(* Bohr Magneton in units of MHz/mT *)
h=6.62606876 (10^(-34)) ;(* Plancks constant in units of Js *)
hbar=1.054571596 (10^(-34));(* reduced Placks constant in units of Js *)
ϵ=8.854187871 (10^(-12));(* Permittivity of Vacuum in units of F/m *)
μ0=4π (10^(-7));(* Permeability of Vacuum in units of N/(A^2) *)
c=299792458;(* speed of light in units of m/s *)
k=1.3806503 (10^(-23));(* Boltzmann constant in units of J/K *)

Angular momentum operators and measured atomic parameters

energyD1=508333195.8;(* sodium D1 transition in units of MHz *)
energyD2=508848716.2;(* sodium D2 transition in units of MHz *)
μD1=2.1130 (10^(-29));(* Transition dipole matrix element <J=1/2||er||J'=1/2> for sodium D1 line in units of Cm *)
μD2=2.98831 (10^(-29));(* Transition dipole matrix element <J=1/2||er||J'=3/2> for sodium D2 line in units of Cm *)
M=22.98976928;
u=1.660538921 (10^(-27));
m= M u;(* atomic mass of sodium in units of kg *)
(* Nuclear spin matrices, nuclear spin of sodium = ((3/2)) *)
P32x=(({{0, (Sqrt[3]), 0, 0}, {(Sqrt[3]), 0, 2, 0}, {0, 2, 0, (Sqrt[3])}, {0, 0, (Sqrt[3]), 0}}));
P32y=(({{0, -I (Sqrt[3]), 0, 0}, {I (Sqrt[3]), 0, -2 I, 0}, {0, 2 I, 0, -I (Sqrt[3])}, {0, 0, I (Sqrt[3]), 0}}));
P32z=(({{3, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -3}}));

gJ[J_,S_,L_]:=gL (((J(J+1)-S(S+1)+L(L+1))/(2J(J+1))))+gS(((J(J+1)+S(S+1)-L(L+1))/(2J(J+1))));(* Landé factor (Subscript[g, j]) *)
gL=1;(* Electron orbital g-factor *)
gS=2.002296;(* Electron spin g-factor *)
gI=-0.00080461080;(* Nuclear g-factor of sodium *)

As12=885.8130644 ;(* Magnetic dipole constant, (3^2)(Subscript[S, 1/2]) of sodium in units of MHz *)
Apj12:=94.44;(* Magnetic dipole constant,(3^2)(Subscript[P, 1/2]) of sodium in units of MHz *)
Apj32= 18.534;(* Magnetic dipole constant,(3^2)(Subscript[P, 3/2]) of sodium in units of MHz *)
Bpj32=2.724;(* Electric quadrupole constant, (3^2)(Subscript[P, 3/2]) of sodium in units of MHz *)

D1Lwidth=9.765;(* Natural line width (FWHM) of sodium D1 line in units of MHz *)
D2Lwidth=9.7946;(* Natural line width (FWHM) of sodium D2 line in units of MHz *)

Error message control / Set Options for the Plots

Off[ClebschGordan::phy];
Off[ClebschGordan::tri];
Off[SixJSymbol::tri];

SetOptions[{ListPlot},{Joined-> True,Axes->False,Frame->True,FrameStyle-> Thick,PlotStyle->{Thick,Black},PlotRange->All,Background-> None,ImageSize->{Large},BaseStyle->{FontFamily-> "Arial",FontSize->16},GridLines-> Automatic,GridLinesStyle-> Directive[{Red,Dashed}],Filling-> 0}];

SetOptions[
EvaluationNotebook[],
StyleDefinitions->FrontEnd`FileName[{"Report"},"StandardReport.nb",CharacterEncoding->"WindowsANSI"]]

Hamiltonians

We introduce a number of abbreviations to make the notation more compact and closer to the physics notation.

KP[A_,B_]:= KroneckerProduct[A,B];(* Kronecker product of A and B *)
OpDotProd[VA_,VB_]:= KP[VA[[1]],VB[[1]]]+KP[VA[[2]],VB[[2]]]+KP[VA[[3]],VB[[3]]] ;
P12Vec= Table[PauliMatrix[i],{i,3}];
P32Vec = {P32x,P32y,P32z};
J12Vec = P12Vec/2;
J32Vec = P32Vec/2;
ISodiumVec = P32Vec/2;
IdM[d_]:=IdentityMatrix[d];(* gives the d x d identity matrix *)
IdJ12 = IdM[2];(* gives the 2x2 identity matrix *)
IdJ32 = IdM[4];(* gives the 4x4 identity matrix *)
IdISodium = IdM[4];(* gives the 4x4 identity matrix *)
ISodium = 3/2;(* Nuclear spin of sodium *)
J12 = 1/2;(* Total electron angular momentum J=L+S, L=1, S=-1/2 *)
J32 = 3/2;(* Total electron angular momentum J=L+S, L=1, S=+1/2 *)

Hyperfine + Zeeman Hamiltonians

Hhypzeesj12[B_]:=As12 OpDotProd[J12Vec,ISodiumVec]-gJ[(1/2),(1/2),0] μBohr(B KP[J12Vec[[3]],IdISodium])-gI μBohr(B KP[IdJ12,ISodiumVec[[3]]]); (* Hyperfine + Zeeman hamiltonian for (3^2)(Subscript[S, 1/2]) ground state of sodium *)

Hhypzeepj12[B_]:=Apj12(OpDotProd[J12Vec,ISodiumVec])-gJ[(1/2),(1/2),1] μBohr (B KP[J12Vec[[3]],IdISodium])-gI μBohr(B KP[IdJ12,ISodiumVec[[3]]]);(* Hyperfine + Zeeman hamiltonian for (3^2)(Subscript[P, 1/2]) excited state of sodium *)

Hhypzeepj32[B_]:=
Apj32 (OpDotProd[J32Vec,ISodiumVec])+(1/(2 ISodium(2 ISodium-1)J32(2J32-1)))Bpj32((3/2)OpDotProd[J32Vec,ISodiumVec]+3 OpDotProd[J32Vec,ISodiumVec].OpDotProd[J32Vec,ISodiumVec] -(ISodium(ISodium+1)J32(J32+1))KP[IdJ32,IdISodium])-gJ[(3/2),(1/2),1] μBohr (B KP[J32Vec[[3]],IdISodium])-gI μBohr(B KP[IdJ32,ISodiumVec[[3]]]);(* Hyperfine + Zeeman hamiltonian for (3^2)(Subscript[P, 3/2]) excited state of sodium *)

Energy Eigenstates

s12levels[B_,T_]:=Module[{cg,hmf,eig,f,t,g,tt,norm},
hmf=Hhypzeesj12[B];
eig=Eigenvectors[hmf];
t=Table[{eig[[i]],eig[[i]]\[Conjugate].hmf.eig[[i]]},{i,1,Length[eig]}];
f[{level_,energy_}]:={level,energy, Exp[((-h energy *(10^6))/(k T))]};
tt=Map[f,t];
norm=Evaluate[Total[tt[[All,3]]]];
g[{level_,energy_,stat_}]:={level,energy,1/(1+Exp[((-h energyD2 *(10^6))/(k T))]+Exp[((-h energyD1*(10^6))/(k T))])stat/norm};
Map[g,tt]](* Energy eigenstates of (3^2)(Subscript[S, 1/2]) ground state of sodium *)

p12levels[B_,T_]:=Module[{cg,hmf,eig,f,t,g,tt,norm},
hmf=Hhypzeepj12[B];
eig=Eigenvectors[hmf];
t=Table[{eig[[i]],eig[[i]].hmf.eig[[i]]},{i,1,Length[eig]}];
f[{level_,energy_}]:={level,energy, Exp[((-h energy *(10^6))/(k T))]};
tt=Map[f,t];
norm=Evaluate[Total[tt[[All,3]]]];
g[{level_,energy_,stat_}]:={level,energy,Exp[-h energyD1*10^6/(k T)]/(1+Exp[((-h energyD2 *(10^6))/(k T))]+Exp[((-h energyD1*(10^6))/(k T))])(stat/norm)};
Map[g,tt]](* Energy eigenstates of (3^2)(Subscript[P, 1/2]) excited state of sodium *)

p32levels[B_,T_]:=Module[{cg,hmf,eig,f,t,g,tt,norm},
hmf=Hhypzeepj32[B];
eig=Eigenvectors[hmf];
t=Table[{eig[[i]],eig[[i]]\[Conjugate].hmf.eig[[i]]},{i,1,Length[eig]}];
f[{level_,energy_}]:={level,energy, Exp[((-h energy *(10^6))/(k T))]};
tt=Map[f,t];
norm=Evaluate[Total[tt[[All,3]]]];
g[{level_,energy_,stat_}]:={level,energy,Exp[((-h energyD2*(10^6))/(k T))]/(1+Exp[((-h energyD2 *(10^6))/(k T))]+Exp[((-h energyD1*(10^6))/(k T))])(stat/norm)};
Map[g,tt]](* Energy eigenstates of (3^2)(Subscript[P, 3/2]) excited state of sodium *)

Dipole Moments

computed in the J, I basis.   Note that Index order is J then I, e.g. for Sodium ground state, the states are all J = 1/2, I = 3/2, with (mJ, mI) pairs   { (-1/2, -3/2), (-1/2, -1/2), ... , (+1/2, +3/2) }

function to compute dipole matrix elements for J-J' transitions. From Steck equation 35 (which is written for F, but applies for any angular momentum, including J).  Note that the matrix element is <J,mJ | er | J',mJ' > <I, mI | I', mI' >, so that: 1) if mI is not equal to mI', the matrix element is zero.  2) J' is the *lower* state.  This agrees with Steck's notation, but not with the usual spectroscopic convention, in which a prime indicates an excited state.

JJpIIpDipole[μ_,J_,mJ_,q_,Jp_,mJp_,mI_,mIp_]:= Module[{temp},
If[mJp+q ≠ mJ,Return[0],Null,Null];
If[mIp≠ mI,Return[0],Null,Null];
temp = μ (-1)^(Jp-1+mJ)Sqrt[2 J +1] ThreeJSymbol[{Jp,mJp},{1,q},{J,-mJ}];
Return[temp];
];(* Calculation of the dipole moments with the aid of Wigner 3-j symbols *)

Dipole operators for various transitions as a matrix in the J,I representation

D1dipoleσplus=Table[JJpIIpDipole[μD1,(1/2),mJ,+1,(1/2),mJp,mI,mIp ],{mJ,-(1/2),(1/2)},{mI,-(3/2),(3/2)},{mJp,-(1/2),(1/2)},{mIp,-(3/2),(3/2)}];
D1dipoleσplus=Flatten[D1dipoleσplus,{{1,2},{3,4}}];(* Dipole operator for the (SuperPlus[σ]) transitions of sodium D1 line *)

D1dipoleσminus=Table[JJpIIpDipole[μD1,(1/2),mJ,-1,(1/2),mJp,mI,mIp ],{mJ,-(1/2),(1/2)},{mI,-(3/2),(3/2)},{mJp,-(1/2),(1/2)},{mIp,-(3/2),(3/2)}];
D1dipoleσminus=Flatten[D1dipoleσminus,{{1,2},{3,4}}];(* Dipole operator for the (SuperMinus[σ]) transitions of sodium D1 line *)

D2dipoleσplus=Table[JJpIIpDipole[μD2,(1/2),mJ,+1,(3/2),mJp,mI,mIp ],{mJ,-(1/2),(1/2)},{mI,-(3/2),(3/2)},{mJp,-(3/2),(3/2)},{mIp,-(3/2),(3/2)}];
D2dipoleσplus=Flatten[D2dipoleσplus,{{1,2},{3,4}}];(* Dipole operator for the (SuperPlus[σ]) transitions of sodium D2 line *)

D2dipoleσminus=Table[JJpIIpDipole[μD2,(1/2),mJ,-1,(3/2),mJp,mI,mIp ],{mJ,-(1/2),(1/2)},{mI,-(3/2),(3/2)},{mJp,-(3/2),(3/2)},{mIp,-(3/2),(3/2)}];
D2dipoleσminus=Flatten[D2dipoleσminus,{{1,2},{3,4}}];(* Dipole operator for the (SuperMinus[σ]) transitions of sodium D2 line *)

Transisions

computed in the J,I representation.  note:  the f[x_] := f[x] = ...  definition makes it store any computations already performed

D1transitions[B_,T_]:=D1transitions[B,T]=
Module[{transen,t,f},
transen=
Table[{
energyD1-s12levels[B,T][[j]][[2]]+p12levels[B,T][[i]][[2]],
s12levels[B,T][[j]][[1]].D1dipoleσplus.p12levels[B,T][[i]][[1]],
s12levels[B,T][[j]][[1]].D1dipoleσminus.p12levels[B,T][[i]][[1]],
s12levels[B,T][[j]][[3]]-p12levels[B,T][[i]][[3]]},
{i,1,Length[p12levels[0,10]]}, 
{j,1,Length[s12levels[0,10]]}]; 
t=DeleteCases[Flatten[transen,1],{_,0.,0.,_}]](* Sodium D1 line transitions *)

D2transitions[B_,T_]:=D2transitions[B,T]=
Module[{transen,t,f},
transen=
Table[{
energyD2-s12levels[B,T][[j]][[2]]+p32levels[B,T][[i]][[2]],
s12levels[B,T][[j]][[1]].D2dipoleσplus.p32levels[B,T][[i]][[1]],
s12levels[B,T][[j]][[1]].D2dipoleσminus.p32levels[B,T][[i]][[1]],
s12levels[B,T][[j]][[3]]-p32levels[B,T][[i]][[3]]},
{i,1,Length[p32levels[0,10]]}, 
{j,1,Length[s12levels[0,10]]}]; 
t=DeleteCases[Flatten[transen,1],{_,0.,0.,_}]](* Sodium D2 line transitions *)

Atomic Number Densities

n=Compile[{{T,_Real}},10^(71.899-(9217.2/T)+(40693000/(T^3))+ 0.0061264 T - 9.6625Log[T])133.322/(k T)];(* Vapor density of sodium in the cell *)

Lineshape

Voigt=Compile[{{decay,_Real},{det,_Real},{δ,_Real}},(1/δ)I (E^((((decay+I det))^2)/(2 (δ^2)))) (Sqrt[(π/2)]) Erfc[((decay+I det)/((Sqrt[2]) δ))]];(* Voigt equation with the error function *)

Optical Susceptibilities

computed in J,I basis

d1=D1transitions[BPlot,TPlot];(* Variable used in D1ΧR and D1ΧL calculation *)
d2=D2transitions[BPlot,TPlot];(* Variable used in D2ΧR and D2ΧL calculation *)

D1ΧR=Compile[{{T,_Real},{f,_Real}},
((1/ϵ))*(((n[T])/h)) (∑_(i=1)^(Length[d1]))d1[[i]][[4]]*((Abs[d1[[i]][[2]]])^2)Voigt[(D1Lwidth/2),(d1[[i]][[1]]-f),(((d1[[i]][[1]])/c)) (Sqrt[((k T)/m)])]
];(* Susceptibility for (SuperMinus[σ]) for D1 sodium line *)

D1ΧL=Compile[{{T,_Real},{f,_Real}},
((1/ϵ))*(((n[T])/h))(∑_(i=1)^(Length[d1]))d1[[i]][[4]]*((Abs[d1[[i]][[3]]])^2)Voigt[(D1Lwidth/2),(d1[[i]][[1]]-f),(((d1[[i]][[1]])/c))(Sqrt[((k T)/m)])]
];(* Susceptibility for (SuperPlus[σ]) for D1 sodium line *)

D2ΧR=Compile[{{T,_Real},{f,_Real}},
((1/ϵ))*(((n[T])/h)) (∑_(i=1)^(Length[d2]))d2[[i]][[4]]*((Abs[d2[[i]][[2]]])^2)Voigt[(D2Lwidth/2),(d2[[i]][[1]]-f),(((d2[[i]][[1]])/c)) (Sqrt[((k T)/m)])]
];(* Susceptibility for (SuperMinus[σ]) for sodium D2 line *)

D2ΧL=Compile[{{T,_Real},{f,_Real}},
((1/ϵ))*(((n[T])/h))(∑_(i=1)^(Length[d2]))d2[[i]][[4]]*((Abs[d2[[i]][[3]]])^2)Voigt[(D2Lwidth/2),(d2[[i]][[1]]-f),(((d2[[i]][[1]])/c))(Sqrt[((k T)/m)])]
];(* Susceptibility for (SuperPlus[σ]) for sodium D2 line *)

Calculating the susceptibilities

(* generate 4 tables for D1ΧL, D1ΧR, D2ΧL, D2ΧR to fasten calculation *)
D1ΧLTable=Parallelize[Table[{f,D1ΧL[TPlot,f+energyD1]},{f,fStart,fStop,fStep}]];
D1ΧRTable=Parallelize[Table[{f,D1ΧR[TPlot,f+energyD1]},{f,fStart,fStop,fStep}]];
D2ΧLTable=Parallelize[Table[{f,D2ΧL[TPlot,f+energyD2]},{f,fStart,fStop,fStep}]];
D2ΧRTable=Parallelize[Table[{f,D2ΧR[TPlot,f+energyD2]},{f,fStart,fStop,fStep}]];

Calculation

FADOF transmission

fadoftransd1[length_]:=Module[{EIn,EDet, nL, nR,M,Mdag,trans},
EIn={(1/(Sqrt[2])),(1/(Sqrt[2]))};
EDet={(1/(Sqrt[2])),-(1/(Sqrt[2]))};
Table[
nR=(10^6)(Sqrt[1+(10^(-6))D1ΧRTable[[xx,2]]]);nL=(10^6)(Sqrt[1+(10^(-6))D1ΧLTable[[xx,2]]]);
M={{Exp[(1/c)I nR length 2π *(D1ΧLTable[[xx,1]]+energyD1)],0},{0,Exp[(1/c)I nL length 2π *(D1ΧLTable[[xx,1]]+energyD1)]} };
{D1ΧLTable[[xx,1]],((Abs[EDet.M.EIn])^2)}
,{xx,1,Length[D1ΧLTable]}]
];

dopplertransd1[length_]:=Module[{EIn,EDet, nL, nR,M,Mdag,trans},
EIn={(1/(Sqrt[2])),(1/(Sqrt[2]))};
EDet={(1/(Sqrt[2])),-(1/(Sqrt[2]))};
Table[
nR=(10^6)(Sqrt[1+(10^(-6))D1ΧRTable[[xx,2]]]);nL=(10^6)(Sqrt[1+(10^(-6))D1ΧLTable[[xx,2]]]);
M={{Exp[((I nR length 2π *(D1ΧLTable[[xx,1]]+energyD1))/c)],0},{0,Exp[((I nL length 2π *(D1ΧLTable[[xx,1]]+energyD1))/c)]} };
{D1ΧLTable[[xx,1]],((Abs[EDet.M.EIn])^2)+((Abs[EIn.M.EIn])^2)}
,{xx,1,Length[D1ΧLTable]}]
];

fadoftransd2[length_]:=Module[{EIn,EDet, nL, nR,M,Mdag,trans},
EIn={(1/(Sqrt[2])),(1/(Sqrt[2]))};
EDet={(1/(Sqrt[2])),-(1/(Sqrt[2]))};
Table[
nR=(10^6)(Sqrt[1+(10^(-6))D2ΧRTable[[xx,2]]]);nL=(10^6)(Sqrt[1+(10^(-6))D2ΧLTable[[xx,2]]]);
M={{Exp[((I nR length 2π *(D2ΧLTable[[xx,1]]+energyD2))/c)],0},{0,Exp[((I nL length 2π *(D2ΧLTable[[xx,1]]+energyD2))/c)]} };
{D2ΧLTable[[xx,1]],((Abs[EDet.M.EIn])^2)}
,{xx,1,Length[D2ΧLTable]}]
];

dopplertransd2[length_]:=Module[{EIn,EDet, nL, nR,M,Mdag,trans},
EIn={(1/(Sqrt[2])),(1/(Sqrt[2]))};
EDet={(1/(Sqrt[2])),-(1/(Sqrt[2]))};
Table[
nR=(10^6)(Sqrt[1+(10^(-6))D2ΧRTable[[xx,2]]]);nL=(10^6)(Sqrt[1+(10^(-6))D2ΧLTable[[xx,2]]]);
M={{Exp[((I nR length 2π *(D2ΧLTable[[xx,1]]+energyD2))/c)],0},{0,Exp[((I nL length 2π *(D2ΧLTable[[xx,1]]+energyD2))/c)]} };
{D2ΧLTable[[xx,1]],((Abs[EDet.M.EIn])^2)+((Abs[EIn.M.EIn])^2)}
,{xx,1,Length[D2ΧLTable]}]
];

Results Plots

D1 Susceptibilities

ListPlot[{{(10^(-3)) #[[1]],Re [#[[2]]]}&/@D1ΧRTable,{(10^(-3)) #[[1]],Im [#[[2]]]}&/@D1ΧRTable,{(10^(-3)) #[[1]],Re [#[[2]]]}&/@D1ΧLTable,{(10^(-3)) #[[1]],Im [#[[2]]]}&/@D1ΧLTable},FrameLabel->{"Frequency offset from D1 line [GHz]"}]

D1 Rotation and Doppler spectrum

ListPlot[{Transpose[{(10^(-3))#[[1]]&/@D1ΧLTable,1(LCell((Re[#[[2]]]&/@D1ΧLTable)-(Re[#[[2]]]&/@D1ΧRTable))/4π)}],
{(10^(-3)),1}#&/@dopplertransd1[LCell]},FrameLabel->{"Frequency offset from D1 line [GHz]","D1-Doppler Transmission / Rotation [π]"}]

D1 FADOF Transmission

ListPlot[Map[{(10^(-3)),1}#&,fadoftransd1[LCell]],FrameLabel->{"Frequency offset from D1 line [GHz]","D1 FADOF Transmission"}]

D2 Susceptibilities

ListPlot[{{(10^(-3)) #[[1]],Re [#[[2]]]}&/@D2ΧRTable,{(10^(-3)) #[[1]],Im [#[[2]]]}&/@D2ΧRTable,{(10^(-3)) #[[1]],Re [#[[2]]]}&/@D2ΧLTable,{(10^(-3)) #[[1]],Im [#[[2]]]}&/@D2ΧLTable},FrameLabel->{"Frequency offset from D2 line [GHz]"}]

D2 Rotation and Doppler spectrum

ListPlot[{Transpose[{(10^(-3))#[[1]]&/@D2ΧLTable,(LCell((Re[#[[2]]]&/@D2ΧLTable)-(Re[#[[2]]]&/@D2ΧRTable))/4π)}],
{(10^(-3)),1}#&/@dopplertransd2[LCell]},FrameLabel->{"Frequency offset from D2 line [GHz]","D2-Doppler Transmission / Rotation [π]"}]

D2 FADOF Transmission

ListPlot[Map[{(10^(-3)),1}#&,fadoftransd2[LCell]],FrameLabel->{"Frequency offset from D2 line [GHz]","D2 FADOF Transmission"}]

stoptime=AbsoluteTime[];
(stoptime-starttime)/60