% !TEX program = pdflatexmk
% !TEX parameter = -shell-escape
% Author: Izaak Neutelings (September 24)
% Instructions: To compile via command line, run the following twice
%   pdflatex -shell-escape extract/anomalous_momentum_pp_tautau$TAG.tex
\documentclass[11pt,border=4pt]{standalone}
\usepackage{feynmp-auto}
\usepackage{xcolor}
\definecolor{collep}{rgb}{.1,.6,.1} % lepton (green)
\definecolor{colbl}{rgb}{.1,.1,.7} % vertex (dark blue)
\begin{document}
\begin{fmffile}{feyngraph}
  \fmfframe(-4,10)(8,10){ % padding (L,T)(R,B)
  \begin{fmfgraph*}(150,95) % canvas (W,H)
    % line style
    \fmfset{wiggly_len}{12} % boson wavelength
    \fmfset{wiggly_slope}{65} % boson slope of waves
    \fmfcmd{ % custom line style: double arrows for protons
      style_def proton expr p =
        save oldpen; pen oldpen; oldpen := currentpen;
        pickup oldpen scaled 1.8; % draw thick line
        cdraw p; % draw line
        cfill (arrow p) % draw arrow
          shifted -center p scaled 1.1 shifted center p; % scale arrow 
        pickup oldpen; % restore line width
      enddef;
    }
    % external vertices
    \fmfleft{iq,im,ip}
    \fmfright{oq,t2,om,t1,op}
    \fmfshift{2 down}{t1}
    \fmfshift{2 up}{t2}
    % protons
    \fmf{proton}{ip,vp,op}
    \fmf{proton}{iq,vq,oq}
    % skeleton
    \fmf{phantom,t=0.4}{ip,vp} % pull to right
    \fmf{phantom,t=0.4}{iq,vq} % pull to right
    \fmf{phantom,t=0.2}{vp,vq} % t channel
    \fmffreeze
    % mediators
    \fmf{phantom,t=0.55}{vt1,om,vt2} % pull gtt vertex to left
    \fmf{fermion,t=0.35,label=\color{collep}$\tau$,l.s=right,f=(.1,,.6,,.1)}{vt1,vt2} % t channel
    \fmf{boson,t=1,label=$\gamma$,l.d=4,l.s=right}{vp,vt1}
    \fmf{boson,t=1,label=$\gamma$,l.d=3,l.s=left}{vq,vt2}
    % taus
    \fmffreeze
    \fmf{fermion,f=(.1,,.6,,.1)}{t1,vt1} % outgoing lepton
    \fmf{fermion,f=(.1,,.6,,.1)}{vt2,t2} % outgoing lepton
    % labels
    \fmfblob{15}{vp}
    \fmfblob{15}{vq}
    \fmfv{l=p$^+$,l.a=160,l.d=5}{ip}
    \fmfv{l=p$^+$,l.a=20,l.d=6}{op}
    \fmfv{l=p$^+$,l.a=-160,l.d=5}{iq}
    \fmfv{l=p$^+$,l.a=-20,l.d=6}{oq}
    \fmfv{l=\strut\color{collep}$\tau^+$,l.a=10,l.d=5}{t1}
    \fmfv{l=\strut\color{collep}$\tau^-$,l.a=-10,l.d=5}{t2}
    \fmfv{decor.shape=circle,decor.filled=empty,decor.size=15,
          f=(.1,,.1,,.7),b=(.92,,.92,,.98),l=\large\color{colbl}$g$,l.a=0,l.d=0}{vt1}
    \fmfv{decor.shape=circle,decor.filled=empty,decor.size=15,
          f=(.1,,.1,,.7),b=(.92,,.92,,.98),l=\large\color{colbl}$g$,l.a=0,l.d=0}{vt2}
  \end{fmfgraph*}
  } % close \fmfframe
\end{fmffile}
\end{document}