Guoy shift telescope for TAMA300 main cavity alignment 
~ Front Mirror

Original by Gerhard Heinzel
Interpreted by K. Arai (2001/5/6)

Constant

λ = 
        1064.*^-9 ;

Rayleigh range

R[z_] := 
      z + zr^2/z

zr =. 
zr = zr  /. Solve[R[300] == 450, zr][[2]]

q parameter at waist (q0)

q0 = I zr

Beam diameter in mm

w[q_] := 2 1000 Sqrt[Abs[(λ/(Pi Im[1/q]))]]

Guoy Shift between 00 and 01 modes in degrees

guoy[q_] := (180/π) ArcTan[Re[q]/Im[q]]

ABCD matrices

Transform q1 -> q2 by ABCD matrix (M=(({{A, B}, {C, D}})))

transf[q1_, 
        M_] := (M[[1, 1]] q1 + M[[1, 2]])/(M[[2, 1]] q1 + 
            M[[2, 2]])

ABCD Matrix for lens of focal length f

lens[f_]:={{1, 0}, {-1/f, 1}}

ABCD Matrix for vacuum distance d

dist[d_] := {{1, d}, {0, 1}}

q's and guoy shifts at each optical component

Distance from waist (front mirror) to lens1

d1 = 4. ;

q and guoy shift just before lens1
dg1 is a phase shift between the waist and lens1

q1 := transf[q0, dist[d1]]
dg1 := guoy[q1]

q just after lens1

q2 := transf[q1, lens[f1]]

q and guoy shift just before lens2 as a function of d2
d2 is a distance between lens1 and lens2
dg2 is a phase shift between lens1 and lens2

q3[d2_] := transf[q2, dist[d2]]
dg2[d2_] := guoy[q3[d2]] - guoy[q2]

q just after lens2

q4[d2_] := transf[q3[d2], lens[f2]]

q and guoy shift just before PD as a function of d2 and d3
d3 is a distance between lens2 and PD
dg3 is a phase shift between lens2 and PD

q5[d2_, d3_] := transf[q4[d2], dist[d3]]
dg3[d2_, d3_] := guoy[q5[d2, d3]] - guoy[q4[d2]]

Total quoy phase shift from the waist to PD

dg[d2_, 
        d3_] := dg1+dg2[d2]+dg3[d2, 
          d3]

Beam diameter at PD

size[d2_, d3_] := w[q5[d2, d3]]

Lens focal length & position

f1 = 
        2. ;  
d2 = 2.55;  
f2 = 1;  
d3 = 0.592;

Reporting parameters

Print["Rayleigh Range                ", 
        N[zr], " m"];
Print["lambda                        ", λ, " \
m"];
Print["d1 (waist - first lens)       ", 
        d1, " m"];
Print["d2 (first lens - second lens) ", 
        d2, " m"];
Print["d3 (second lens - detector)   ", 
        d3, " m"];
Print["f1 (focal length first lens)  ", 
        f1, " m"];
Print["f2 (focal length first lens)  ", 
        f2, " m"];
Print["Design beam diamater          ", 
        3, " mm"];
Print["Design Guoy Shift             ", 
        180, " Deg."];

Find PD position

d3 =. ;
d3 = 
      d3  /.  Chop[
          FindRoot[dg[d2, d3] == 180, {d3, 0, 1}]]

Print["d1=", d1, " f1=", f1, " d2=", d2, " f2=", 
        f2, " d3=", d3] ;

Print["dg=", dg[d2, d3], " size=", size[d2, d3]]

Combine Functions for plotting

wx[x_, d2_, d3_] := 
      w[q0 + x] /; x ≤ d1
wx[x_, d2_, d3_] := 
      w[q2 + x - d1] /; 
        x > d1 && x ≤ d1 + d2
wx[x_, d2_, d3_] := 
      w[q4[d2] + x - d1 - d2] /; x > d1 + d2
gx[x_, d2_, d3_] := 
      guoy[q0 + x] /; x ≤ d1
gx[x_, d2_, d3_] := 
      dg1 + guoy[q2 + x - d1] - guoy[q2] /; 
        x > d1 && x ≤ d1 + d2
gx[x_, d2_, d3_] := 
      dg1 + dg2[d2] + guoy[q4[d2] + x - d1 - d2] - guoy[q4[d2]] /; 
        x > d1 + d2

Plots

\(\(p1 = 
Plot[
wx[x, d2, 
            d3], 
{x, 0, 
            d1 + d2 + 
              d3}, 
FrameLabel -> {
"distance from waist[m]", 
"beam diameter [mm]"
}, 
Frame -> 
            True
];\)\)

\(\(p2 = 
Plot[
gx[x, d2, 
            d3], 
{x, 0, 
            d1 + d2 + 
              d3}, 
FrameLabel -> {
	"distance from waist[m]", 
	"Guoy Shift [degrees]"
}, 
Frame -> True
];\)\)

\(\(p3 = 
Plot[
size[d2 + shift/1000, 
            d3 - shift/1000], 
{shift, \(-10\), 
            10}, 
FrameLabel -> {
"Shift of Lens 1 [mm]", 
	"beam diameter at camera 1 [mm]"
}, 
Frame -> 
            True
];\)\)

\(\(p4 = 
Plot[
dg[d2 + shift/1000, 
            d3 - shift/1000], 
{shift, \(-10\), 
            10}, 
FrameLabel -> {
"Shift of Lens 1 [mm]", 
"Guoy shift at camera 1 [mm]"
}, 
Frame -> True
];\)\)

Guoy shift telescope for TAMA300 main cavity alignment 
~ End Mirror

Original by Gerhard Heinzel
Interpreted by K. Arai (2001/5/6)

Constant

λ = 
        1064.*^-9 ;

Rayleigh range

R[z_] := 
      z + zr^2/z

zr =. 
zr = zr  /. Solve[R[300] == 450, zr][[2]]

q parameter at waist (q0)

q0 = I zr

Beam diameter in mm

w[q_] := 2 1000 Sqrt[Abs[(λ/(Pi Im[1/q]))]]

Guoy Shift between 00 and 01 modes in degrees

guoy[q_] := (180/π) ArcTan[Re[q]/Im[q]]

ABCD matrices

Transform q1 -> q2 by ABCD matrix (M=(({{A, B}, {C, D}})))

transf[q1_, 
        M_] := (M[[1, 1]] q1 + M[[1, 2]])/(M[[2, 1]] q1 + 
            M[[2, 2]])

ABCD Matrix for lens of focal length f

lens[f_]:={{1, 0}, {-1/f, 1}}

ABCD Matrix for vacuum distance d

dist[d_] := {{1, d}, {0, 1}}

q's and guoy shifts at each optical component

Distance from waist (front mirror) to lens1

d1 = 4. ;

q and guoy shift just before lens1
dg1 is a phase shift between the waist and lens1

q1 := transf[q0, dist[d1]]
dg1 := guoy[q1]

q just after lens1

q2 := transf[q1, lens[f1]]

q and guoy shift just before lens2 as a function of d2
d2 is a distance between lens1 and lens2
dg2 is a phase shift between lens1 and lens2

q3[d2_] := transf[q2, dist[d2]]
dg2[d2_] := guoy[q3[d2]] - guoy[q2]

q just after lens2

q4[d2_] := transf[q3[d2], lens[f2]]

q and guoy shift just before PD as a function of d2 and d3
d3 is a distance between lens2 and PD
dg3 is a phase shift between lens2 and PD

q5[d2_, d3_] := transf[q4[d2], dist[d3]]
dg3[d2_, d3_] := guoy[q5[d2, d3]] - guoy[q4[d2]]

Total quoy phase shift from the waist to PD

dg[d2_, d3_]:=Mod[dg1 + dg2[d2] + dg3[d2, d3], 
        180]

Beam diameter at PD

size[d2_, d3_] := w[q5[d2, d3]]

Lens focal length & position

f1 = 
        2. ;  
d2 = 2.1998;  
f2 =  .2;  
d3 = 3.25;

Reporting parameters

Print["Rayleigh Range                ", 
        N[zr], " m"];
Print["lambda                        ", λ, " \
m"];
Print["d1 (waist - first lens)       ", 
        d1, " m"];
Print["d2 (first lens - second lens) ", 
        d2, " m"];
Print["d3 (second lens - detector)   ", 
        d3, " m"];
Print["f1 (focal length first lens)  ", 
        f1, " m"];
Print["f2 (focal length first lens)  ", 
        f2, " m"];
Print["Design beam diamater          ", 
        3, " mm"];
Print["Design Guoy Shift             ", 
        55, " Deg."];

Find lens2 position

d2 = 
      d2  /. Chop[
          FindRoot[
            dg[d2, d3] == 55. , {d2, f1 + f2 -  .02, 
              f1 + f2 +  .01}]]

Print["d1=", d1, " f1=", f1, " d2=", d2, " f2=", 
        f2, " d3=", d3] ;

Print["dg=", dg[d2, d3], " size=", 
      size[d2, d3]]

Combine Functions for plotting

wx[x_, d2_, d3_] := 
      w[q0 + x] /; x ≤ d1
wx[x_, d2_, d3_] := 
      w[q2 + x - d1] /; 
        x > d1 && x ≤ d1 + d2
wx[x_, d2_, d3_] := 
      w[q4[d2] + x - d1 - d2] /; x > d1 + d2
gx[x_, d2_, d3_] := 
      guoy[q0 + x] /; x ≤ d1
gx[x_, d2_, d3_] := 
      dg1 + guoy[q2 + x - d1] - guoy[q2] /; 
        x > d1 && x ≤ d1 + d2
gx[x_, d2_, d3_] := 
      dg1 + dg2[d2] + guoy[q4[d2] + x - d1 - d2] - guoy[q4[d2]] /; 
        x > d1 + d2

Plots

\(\(p1 = 
Plot[
wx[x, d2, 
            d3], 
{x, 0, 
            d1 + d2 + 
              d3}, 
FrameLabel -> {
"distance from waist[m]", 
"beam diameter [mm]"
}, 
Frame -> 
            True
];\)\)

\(\(p2 = 
Plot[
Mod[
gx[x, d2, d3], 180], 
{x, 0, 
            d1 + d2 + 
              d3}, 
FrameLabel -> {
	"distance from waist[m]", 
	"Guoy Shift [degrees]"
}, 
Frame -> True
];\)\)

\(\(p3 = 
Plot[
size[d2 + shift/1000, 
            d3 - shift/1000], 
{shift, \(-10\), 
            10}, 
FrameLabel -> {
"Shift of Lens 2 [mm]", 
	"beam diameter at camera 2 [mm]"
}, 
Frame -> 
            True
];\)\)

\(\(p4 = 
Plot[
dg[d2 + shift/1000, 
            d3 - shift/1000], 
{shift, \(-10\), 
            10}, 
FrameLabel -> {
"Shift of Lens 2 [mm]", 
"Guoy shift at camera 2 [mm]"
}, 
Frame -> True
];\)\)