"""Electroweak processes; Python 3.14.4, NumPy 2.3.5, Matplotlib 3.10.7. Output is an opaque basename PNG in caller CWD; honour caller MPLCONFIGDIR. """ import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt from matplotlib.patches import Circle import numpy as np def wave(ax,a,b): a,b=np.array(a),np.array(b);d=b-a;n=np.array([-d[1],d[0]])/np.linalg.norm(d) t=np.linspace(0,1,301);points=a[:,None]+d[:,None]*t+n[:,None]*.018*np.sin(12*np.pi*t) ax.plot(*points,color='#1565c0',lw=1.6) def fermion(ax,a,b,reverse=False,lw=1.6): a,b=np.array(a),np.array(b) ax.plot([a[0],b[0]],[a[1],b[1]],color='#333333',lw=lw) u,v=(.60,.40) if reverse else (.40,.60) ax.annotate('',xy=a+v*(b-a),xytext=a+u*(b-a),arrowprops={'arrowstyle':'->','lw':1.4,'color':'#333333'}) fig,axs=plt.subplots(1,3,figsize=(13,4),layout='constrained') ax=axs[0];a=(.4,.5);b=(.69,.5) fermion(ax,(.1,.84),a);fermion(ax,(.1,.16),a,reverse=True);wave(ax,a,b) wave(ax,b,(.94,.84));ax.plot([b[0],.94],[b[1],.16],'--',color='#333333',lw=1.6) for x,y,t in [(.07,.88,r'$e^-$'),(.07,.09,r'$e^+$'),(.55,.58,r'$Z^*$'),(.95,.88,r'$Z$'),(.95,.09,r'$H$')]:ax.text(x,y,t,ha='center',fontsize=12) ax.set_title('Higgsstrahlung',fontsize=13) ax.text(.5,-.04,r'$e^+e^-\to Z^*\to ZH$',ha='center',fontsize=12) ax.plot(*a,'o',color='black',ms=3);ax.plot(*b,'o',color='black',ms=3) ax=axs[1];a=(.49,.5) wave(ax,(.05,.5),a);fermion(ax,a,(.92,.85));fermion(ax,a,(.92,.15),reverse=True) for x,y,t in [(.08,.60,r'$W^-(p)$'),(.85,.92,r'$e^-(q_1)$'),(.85,.05,r'$\bar\nu_e(q_2)$')]:ax.text(x,y,t,ha='center',fontsize=12) ax.text(.5,-.11,r'$-ig\gamma^\mu(1-\gamma_5)/(2\sqrt{2})$',ha='center',fontsize=12) ax.plot(*a,'o',color='black',ms=3);ax.set_title('Leptonic W decay',fontsize=13) ax=axs[2];a=(.48,.8);b=(.48,.32) fermion(ax,(.03,.98),a);fermion(ax,a,(.95,.98));wave(ax,a,b) fermion(ax,(.03,.32),b,lw=2.3) for end in [(.95,.09),(.97,.32),(.95,.53)]:ax.plot([b[0],end[0]],[b[1],end[1]],color='#555555',lw=1.5) ax.add_patch(Circle(b,.065,facecolor='#e0e0e0',edgecolor='black',zorder=3)) ax.text(.01,1.03,r'$e^-(p)$',ha='left',fontsize=12);ax.text(.97,1.03,r"$e^-(p')$",ha='right',fontsize=12) ax.text(.54,.59,r'$\gamma^*(q)$',fontsize=12);ax.text(.02,.40,r'$H(P)$',fontsize=12) ax.text(.99,.31,r'$X$',ha='left',fontsize=12);ax.text(.5,-.06,'Inclusive hadronic final state',ha='center',fontsize=11) ax.set_title('Deep inelastic scattering',fontsize=13);ax.plot(*a,'o',ms=3,color='black') for ax in axs:ax.set(xlim=(-.02,1.06),ylim=(-.2,1.15));ax.axis('off') fig.savefig('paper-54-processes.png',dpi=140,facecolor='white',transparent=False) plt.close(fig)