(You should click this button, you dont need to see the code).
In [157]:
%pylab inline
from scipy.optimize import curve_fit
from Icarus.Classes.QuantumDot import QuantumDot
from constants import Constants
In [203]:
def makeplot(data, data1, crosstau, secondary):
constants = Constants()
qd = QuantumDot(constants.xtau, constants.xxtau, constants.ptau, constants.FSS, constants.crosstau)
qd.crosstau = crosstau
fss = np.linspace(-10, 10, 500)*1e-6
fidelities = [qd.ideal_fidelity_lorentzian(f)[0] for f in fss]
ghv = qd.ideal_fidelity_lorentzian(f)[1]
fss_dat = data[:,0]
g2 = data[:, 1]
def func(x, a, b, c):
return a - np.exp(-(x/b + c))
popt, pcov = curve_fit(func, fss_dat, g2)
fig, ax = plt.subplots(figsize = (20/1.5 ,9/1.5))
axes = [ax, ax.twinx(), ax.twinx()]
fig.subplots_adjust(right=0.75)
axes[-1].spines['right'].set_position(('axes',1.))
axes[-1].set_frame_on(True)
axes[-1].patch.set_visible(False)
axes[0].plot(fss_dat, g2, 'bo', fss_dat, func(fss_dat, popt[0], popt[1], popt[2]), 'r--', markersize=3)
axes[1].plot(data1[:,0], data1[:,1], 'r-', fss/1e-6, np.array(fidelities), 'b--')
axes[0].set_ylim([0., 2.3])
axes[1].set_ylim([0., 1.])
axes[0].legend(['Anti bunching $g^{(2)}(\\tau)$', '$f(x) = a - exp( - (\\frac{FSS}{b} + c))$'], fontsize = 14, loc=1)
axes[1].legend(['Fidelity monte carlo', 'Fidelity theoretical'], fontsize = 14, loc=4)
axes[0].set_ylabel('$g^{(2)}(\\tau)$') ; axes[1].set_ylabel('Fidelity')
axes[0].set_xlabel('Fine structure splitting $(\\mu eV )$', fontsize = 14)
ax.set_xlim([0, 10])
plt.suptitle('Coherence: '+np.array(ghv).astype('|S3').tostring()+', secondary population probabilty: ' +
np.array(secondary).astype('|S4').tostring(), fontsize = 16)
plt.show()
print 'Fitted params [a, b, c]:', popt.astype('|S4')
In [211]:
makeplot(
np.loadtxt('out/2013-07-31/auto_g2_v_fss_dephase2.5e10/auto_g2_v_fidelity.txt', delimiter=','),
np.loadtxt('out/fidelity_vs_fss/xtau1/fss_v_fidelity.txt', delimiter = ','),
2.5e3,
0.00000
)
In [212]:
makeplot(
np.loadtxt('out/2013-07-31/auto_g2_v_fss_dephase2.5/auto_g2_v_fidelity.txt', delimiter=','),
np.loadtxt('out/fidelity_vs_fss/cross_dephasing2.5ns/fss_v_fidelity.txt', delimiter = ','),
2.5,
0.0000
)
In [206]:
makeplot(
np.loadtxt('out/2013-07-31/auto_g2_v_fss_dephase2.5e10secondaty0.18/auto_g2_v_fidelity.txt', delimiter=','),
np.loadtxt('out/fidelity_vs_fss/secondary_emisison_reduction-0.18/fss_v_fidelity.txt', delimiter = ','),
2.5e10,
0.18
)
In [207]:
makeplot(
np.loadtxt('out/2013-07-31/auto_g2_v_fss_dephase2.5secondaty0.2/auto_g2_v_fidelity.txt', delimiter=','),
np.loadtxt('out/fidelity_vs_fss/cross_dephasing2.5ns/fss_v_fidelity.txt', delimiter = ','),
2.5,
0.2
)
We are probably somewhere around FSS between 0 and 1. in the last graph, with secondary population and dephasing, here the auto g2 is about 1. Hence the reason we see no antibunching.
In [ ]: