Balanced homodyne detection workaround

At the time of writing this entry, the way to do balanced homodyne detection is not yet fully implemented in Finesse3 as the example shows it here. The issue is the -3dB limitation of the squeezing level which comes from the fact that the beamsplitter is 50/50, so half of squeezing is lost before reaching the qnoised. When I try to put a qnoised at each output port of the HD, I cannot substract the quantum noise from both detectors and get convincing results. After discussing with Dan, it seems that the readout_dc does not handle operations on quantum noise yet either.

There is however a workaround to measure the correct level of squeezing in the current configuration by decreasing the level of squeezing that is lost on the unused output port of the BS and increasing the LO power as a consequence :

import finesse
import numpy as np
import matplotlib.pyplot as plt
finesse.configure(plotting=True)

kat = finesse.Model()
kat.parse(
    """
    l l1 P=1e6
    s s1 l1.p1 bs1.p4 L=1
    sq sq1 db=10
    s s2 sq1.p1 bs1.p1
    bs bs1 T=1e-6 L=0 alpha=45

    # Set a signal frequency to activate the signal simulation
    # (needed for squeezing effects to be observed)
    fsig(1)

    # Output the pure shot noise along with the qnoised detector
    # measuring the effects of the squeezing
    qnoised sqzd_noise bs1.p2.o
    qshot shot_noise bs1.p2.o

    xaxis(l1.phase, lin, -90, 90, 360)
    """
)

# run the script
out = kat.run()

# plot the solution in squeezing dB scale
plt.plot(out.x[0], 20*np.log10(out['sqzd_noise']/out['shot_noise']))
plt.xlabel('Local oscillator phase [degrees]')
plt.ylabel('Squeezing level [dB]')

Leave a Reply