codexpast-exam-of-the-laser-science-and-quantum-information-processing-course-of-the-university-of-oxford20108-ghz-mode-network.py
past-exam-of-the-laser-science-and-quantum-information-processing-course-of-the-university-of-oxford/2010/8-ghz-mode-network.py
"""Original pedagogical mode diagram; write the PNG in the working directory."""
from pathlib import Path
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from matplotlib.patches import FancyArrowPatch, FancyBboxPatch
fig, ax = plt.subplots(figsize=(10.5, 6.1), dpi=120)
fig.patch.set_facecolor('white'); ax.set_facecolor('white')
ax.set(xlim=(-.7, 10.3), ylim=(-2.75, 3.05)); ax.axis('off')
blue='#176a8a'; gold='#ad6818'; ink='#222b35'
def box(x,y,text,w=1.25,h=.58):
ax.add_patch(FancyBboxPatch((x-w/2,y-h/2),w,h,boxstyle='round,pad=.045',facecolor='#eef2f5',edgecolor=ink,lw=1.4,zorder=3))
ax.text(x,y,text,ha='center',va='center',fontsize=11,color=ink,zorder=4)
def arrow(start,end,text='',offset=(0,.15),color=blue):
ax.add_patch(FancyArrowPatch(start,end,arrowstyle='-|>',mutation_scale=13,lw=1.7,color=color,zorder=1))
if text:ax.text((start[0]+end[0])/2+offset[0],(start[1]+end[1])/2+offset[1],text,ha='center',va='center',fontsize=11,color=color)
box(.3,0,'BBO',1.1,.75);box(2.5,1.15,'PBS a');box(2.5,-1.15,'50:50 BS');box(4.7,1.15,r'$\lambda/2$',.9);box(6.6,0,'Final PBS',1.35,.7)
arrow((-.4,0),(-.25,0),color=gold);ax.text(-.35,.45,'UV',ha='center',fontsize=11,color=gold)
arrow((.85,.2),(1.84,1.1),'a');arrow((.85,-.2),(1.84,-1.1),'b',offset=(0,-.15))
arrow((2.5,1.5),(3.1,2.2),r'$H_a$',offset=(-.23,.1));box(3.35,2.45,'T',.55,.4)
arrow((3.16,1.15),(4.2,1.15),r'$c:V$');arrow((5.2,1.1),(5.96,.25),r"$c'$",offset=(.12,.1))
arrow((3.17,-1.1),(5.98,-.2),'d',offset=(0,-.13));arrow((2.5,-1.5),(4.0,-2.05));box(4.4,-2.2,r'$D_3$',.7,.4)
arrow((7.31,.18),(8.8,1.1));box(9.15,1.3,r'$D_1$',.7,.4);arrow((7.31,-.18),(8.8,-1.1));box(9.15,-1.3,r'$D_2$',.7,.4)
ax.text(6.25,2.6,'Fourfold coincidence: T + D₁ + D₂ + D₃',ha='center',fontsize=13,fontweight='bold',color=ink)
ax.text(6.2,1.95,r'$V_c\ \to\ (H_{c\prime}+V_{c\prime})/\sqrt{2}$',ha='center',fontsize=12,color=blue)
ax.text(7.1,-2.15,r'$HH\to H_1H_2$'+'\n'+r'$VV\to V_1V_2$',ha='center',va='center',fontsize=12,color=ink)
fig.suptitle('Photonic GHZ preparation: ideal mode routing',fontsize=16,y=.97,color=ink)
fig.subplots_adjust(left=.035,right=.985,bottom=.05,top=.9)
fig.savefig(Path.cwd()/(Path(__file__).stem+'.png'),facecolor='white',metadata={'Software':'codex-wiki original figure'})
plt.close(fig)