"""Show a real delayed pulse and its opposite-delay correlation ghost. Run from the media output directory. Tested with Python3.14, NumPy2, and Matplotlib3; dependencies are already declared in pyproject.toml. """ from pathlib import Path import numpy as np import matplotlib.pyplot as plt dt=0.005 # ps t=np.arange(-8,8+dt/2,dt) halfwidth=0.5 delay=4.0 epsilon=0.04 triangle=lambda x:np.maximum(1-np.abs(x)/halfwidth,0) intensity=triangle(t)+epsilon*triangle(t-delay) # For positive lag, correlate I(t+lag) against the squared gate I(t)^2. correlation=np.correlate(intensity,intensity**2,mode='full')*dt lags=np.arange(-(len(t)-1),len(t))*dt middle=len(t)-1 offset=round(delay/dt) base=np.sum(triangle(t)**3)*dt np.testing.assert_allclose(correlation[[middle-offset,middle,middle+offset]]/base, [epsilon**2,1+epsilon**3,epsilon],rtol=1e-11,atol=1e-13) assert np.max(intensity[t<-.5])<1e-12 fig,axs=plt.subplots(1,2,figsize=(7,3.1),dpi=100,layout='constrained') fig.set_facecolor('white') for ax in axs: ax.set_facecolor('white') ax.set(yscale='log',ylim=(1e-5,2),xlim=(-6,6)) ax.grid(axis='y',alpha=.2) ax.tick_params(labelsize=8) axs[0].plot(t,np.where(intensity>1e-12,intensity,np.nan),color='#246a9a',lw=2) axs[0].set(title='Actual optical intensity',xlabel='Time (ps)',ylabel='Normalized intensity') axs[0].annotate('Postpulse:0.04',(delay,epsilon),(1.1,.3),fontsize=8, arrowprops={'arrowstyle':'->','color':'#333333'}) norm=correlation/correlation[middle] axs[1].plot(lags,np.where(norm>1e-12,norm,np.nan),color='#c16a16',lw=2) axs[1].set(title='Third-order correlation',xlabel='Delay (ps)',ylabel='Normalized signal') axs[1].annotate('Ghost:0.0016',(-delay,norm[middle-offset]),(-5.5,.04),fontsize=8, arrowprops={'arrowstyle':'->','color':'#333333'}) axs[1].annotate('Real replica',(delay,norm[middle+offset]),(1.8,.35),fontsize=8, arrowprops={'arrowstyle':'->','color':'#333333'}) fig.savefig(Path.cwd()/'third-order-correlation-postpulse-ghost.png',facecolor='white') plt.close(fig)