% !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/pp_hard$TAG.tex
\documentclass[11pt,border=4pt]{standalone}
\usepackage{feynmp-auto}
\usepackage{xcolor}
\definecolor{colvtx}{rgb}{0,.1,1} % LQ vertex (blue)
\begin{document}
\begin{fmffile}{feyngraph}
  \fmfframe(-2,44)(16,28){ % padding (L,T)(R,B)
  \begin{fmfgraph*}(160,90) % dimensions (WH)
    % line style
    \fmfset{arrow_len}{10} % arrow length
    \fmfset{dash_len}{8} % dashes length
    % external vertices
    \fmfleft{ip2,ip1}
    \fmfright{op2,o3,o2,o1,op1}
    \fmfshift{6 down}{o3}
    \fmfforce{(1.02w,.81h)}{o1} % exact placement
    \fmfforce{(1.02w,.51h)}{o2} % exact placement
    % internal vertices (exact placement)
    \fmfforce{(.65w,.66h)}{v1} % exact placement
    \fmfforce{(.65w,.33h)}{v2} % exact placement
    \fmfforce{(.88w,.66h)}{lq} % exact placement
    % skeleton
    \fmf{phantom}{ip1,vp1,op1} % predefine path for \fmfi
    \fmf{phantom}{ip2,vp2,op2} % predefine path for \fmfi
    \fmf{phantom,t=0.3}{vp1,ip1,ip2,vp2} % pull proton blobs to left
    \fmffreeze
    % incoming proton 1
    \fmfv{l=$\mathrm{p}^+$,l.a=180,l.d=8}{ip1}
    \fmf{phantom}{ip1,vp1}
    \fmfi{fermion}{vpath (__ip1,__vp1) shifted (-5, 6)}
    \fmfi{fermion}{vpath (__ip1,__vp1) shifted (-5, 0)}
    \fmfi{fermion}{vpath (__ip1,__vp1) shifted (-5,-6)}
    %incoming proton 2
    \fmfv{l=$\mathrm{p}^+$,l.a=180,l.d=8}{ip2}
    \fmf{phantom}{ip2,vp2}
    \fmfi{fermion}{vpath (__ip2,__vp2) shifted (-5, 6)}
    \fmfi{fermion}{vpath (__ip2,__vp2) shifted (-5, 0)}
    \fmfi{fermion}{vpath (__ip2,__vp2) shifted (-5,-6)}
    % fragmented proton X
    \fmfi{fermion}{vpath (__vp1,__op1) rotatedaround(vloc(__vp1),28) shifted (5, 4)}
    \fmfi{fermion}{vpath (__vp1,__op1) rotatedaround(vloc(__vp1),16) shifted (5, 0)}
    \fmfi{fermion}{vpath (__vp1,__op1) rotatedaround(vloc(__vp1), 4) shifted (5,-4)}
    % outgoing intact proton
    \fmfi{fermion}{vpath (__vp2,__op2) rotatedaround(vloc(__vp2),-12) shifted (9.3, 5)}
    \fmfi{fermion}{vpath (__vp2,__op2) rotatedaround(vloc(__vp2),-12) shifted (8.0,-1)}
    \fmfi{fermion}{vpath (__vp2,__op2) rotatedaround(vloc(__vp2),-12) shifted (6.7,-7)}
    % blobs (draw after \fmfi!)
    \fmfblob{24}{vp1}
    \fmfblob{24}{vp2}
    % parton & photon incoming from proton
    \fmf{fermion,l.d=3,l.s=right,label=b}{vp1,v1}
    \fmf{photon,l.d=3,l.s=left,label=$\gamma$}{vp2,v2}
    \fmf{fermion,l.d=4,l.s=right,label=$\tau$}{v1,v2} % t-channel
    % LQ -> btau
    \fmf{dashes,t=2.9,l.d=3,l.s=left,label=LQ}{v1,lq}
    \fmf{fermion,t=1.7}{o2,lq,o1}
    \fmf{fermion,t=0.3}{v2,o3}
    % vertex
    \fmfv{d.shape=circle,d.fill=full,d.si=3,f=(0,,.1,,1),
          l=\color{colvtx}$\lambda$,l.d=5,l.a=-45}{v1}
    % labels
    \fmfv{l=$\mathrm{p}^+$,l.a=-45,l.d=16}{op2}
    \fmfv{l.a=25,l.d=4,l=b}{o1}
    \fmfv{l.a=20,l.d=4,l=\vspace{-2mm}$\tau^+$}{o2}
    \fmfv{l.a=-20,l.d=5,l=$\tau^-$}{o3}
  \end{fmfgraph*}
  } % close \fmfframe
\end{fmffile}
\end{document}