# How can I draw this Feynman diagram?

I wonder how to draw this Feynman diagram.

I read the document about tikz-Feynman, but it seems that the document does not explain the above somewhat complicated diagram.

• Please show what you have done, for example a half-done complete example. Also, you can point out which part of the diagram is hard to you. Jun 9, 2020 at 0:08

## 3 Answers

It it also rather simple to do with tikz-feynman if the coordinates of the vertices are specified manually.

\documentclass{article}
\usepackage{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\vertex (a) at (-2,2);
\vertex (b) at (2,2);
\vertex (c) at (0,0);
\vertex (d1) at (-0.4,-0.4);
\vertex (d2) at (-1.6,-1.6);
\vertex (d3) at (-2,-2);
\vertex (e) at (2,-2);
\diagram*{
(a) -- [fermion] (c),
(b) -- [anti fermion] (c),
(c) -- [scalar] (d1),
(d1) -- [anti charged scalar] (d2),
(d1) -- [fermion, half left] (d2),
(d1) -- [anti fermion, half right] (d2),
(d2) -- [scalar] (d3),
(c) -- [charged scalar] (e)
};
\end{feynman}
\end{tikzpicture}
\end{document}


It is very simple with pstricks: I define vertices as empty nodes, using polar coordinates, and connect them with \pslines, using the ArrowInside key then add two complementary elliptic arcs.

\documentclass[x11names, 12pt, border=6pt]{standalone}
\usepackage{pst-node, pst-plot}
\usepackage{pst-arrow}

\begin{document}

\psset{plotstyle=curve, linejoin=1, arrowinset=0, arrowsize=6pt, ArrowInside=->}
\begin{pspicture}(-3,-3)(3,3)
\pnodes(0,0){O}(4;135){A}(4;45){B}(4;-45){C}(4;-135){D}(2;-135){I}
\psline(A)(O)(B)
\psline[linestyle=dashed, dash=5pt 5pt](D)(O)(C)
\pscustom{\rotate{45}%
\psellipticarcn[arrows=->](I)(1.2,0.7){90}{-105}%\psellipse(I)(1.2,0.6)
\psellipticarcn[arrows=->](I)(1.2,0.7){270}{435}
}%
\end{pspicture}

\end{document}


For compare purpose.

Compile with Asymptote.

unitsize(1.5cm);
size(300);
draw((0,0)--(1,1),MidArrow(5bp));
draw((-1,1)--(0,0),MidArrow(5bp));
draw((-1,-1)--(0,0),dashed,MidArrow(5bp));
draw((0,0)--(1,-1),dashed,MidArrow(5bp));
pair M=relpoint((-1,-1)--(0,0),.5);
path Ellipse=rotate(degrees(dir((-1,-1)--(0,0))),M)*ellipse(M,.4,.2);
draw(reverse(Ellipse),Arrow(5bp,FillDraw(),reltime(Ellipse,.3)));
draw(reverse(Ellipse),p=invisible,Arrow(5bp,FillDraw(black,black),reltime(Ellipse,.79)));