3

I am trying to draw Feynman diagrams with two loops. I have managed to draw the following one:

\documentclass[DIV=14,headsepline]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{luainputenc}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\[
    \feynmandiagram[horizontal=a to b, layered layout]{
    a[dot]  -- c [dot] --[out=135, in=45, loop, min distance=2cm,insertion=0.5] c -- b [dot],
    };
\]
\end{document}

Which gives me,

enter image description here

I would like to add another loop just above the first one but I don't know how. I have tried using tikzpicture but I haven't arrived to any result.

Another problem I have is that I would like some dots to be bigger in order to have source terms (big dots) and vertices (small dots) but I don't know how to do it either. [big=dot] is not working.

Thank you in advance.

  • Welcome to TeX.SX! Please make your code snippet compilable by adding the documentclass, the required packages and the document environment. – TeXnician Jan 1 '18 at 18:13
  • I use scrartcl for document class and luainputenc because tikz-feyman works on Lualatex. I use the version \usepackage[compat=1.1.0]{tikz-feynman} – luciamp Jan 1 '18 at 20:52
2

The issue is that tikz-feynman implements the "insertion" option using a decoration instead of a new node. It's therefore tricky to find the position of the vertex at the top of the loop in order to draw a second loop above the first.

A good workaround is to use relative node positions:

\documentclass[DIV=14,headsepline]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{luainputenc}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\[
  \feynmandiagram[horizontal=a to b]{
    a[dot]  -- c [dot] -- b [dot],

    c --[out=135, in=185, min distance=0.6cm] d[dot, above = 2cm of c]
      --[out=355, in=45, min distance=0.6cm] c,

    d --[out=135, in=185, min distance=0.6cm]
      e[large, dot, above = 4cm of c]
      --[out=355, in=45, min distance=0.6cm] d,

    e --[out=135, in=185, min distance=0.6cm]
      f[small, blob, above = 6cm of c]
      --[out=355, in=45, min distance=0.6cm] e,
  };
\]
\end{document}

This yields the following diagram when compiled with LuaLaTeX: Feynman diagram with several loops

I've also changed the styles of two of the vertices to show you some of the options that are available.

1

Something like this?

\documentclass{article}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}[baseline=(current bounding box.north)]
\begin{feynman}
\vertex(in);
\tikzfeynmanset{every vertex={dot,minimum size=4mm}} %<- change the size of the dots here
\vertex[right=1.5cm of in] (v);
\vertex[above=1.2cm of v] (u);
\tikzfeynmanset{every vertex={empty dot,minimum size=0mm}} %<- ugly, I know
\vertex[right=1.5cm of v] (out);
\vertex[above=1.2cm of u] (w);
\diagram{(in)  -- (v) -- (out)};
\diagram{(v)  -- [half left] (u) -- [half right] (w) -- [half right] (u) -- [half left] (v)};
\end{feynman}
\end{tikzpicture}
\end{document}

enter image description here

Note that I compiled with xelatex (since I am not able to get lualatex working) and that this is my very first diagram drawn with tikz-feynman, so undoubtedly there is a lot of room for improvement.

EDIT: This is an attempt to make the diagram a bit more appealing.

\documentclass{article}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}[baseline=(current bounding box.north)]
\begin{feynman}
\vertex(in);
\vertex[right=1.5cm of in] (v);
\vertex[above=1.2cm of v] (u);
\vertex[right=1.5cm of v] (out);
\vertex[above=1.2cm of u] (w);
\diagram{(in)  -- (v) -- (out)};
\diagram{(v)  -- [half left] (u) -- [half right] (w) -- [half right] (u) -- [half left] (v)};
\draw[fill=black] (v) circle(1.5mm);
\draw[fill=black] (u) circle(1.5mm);
% \draw (1.5,0.6) circle (0.6cm); %<- uncomment this line to compare the loop toa real circle
\end{feynman}
\end{tikzpicture}
\end{document}

enter image description here

  • Yes! something like this is what I am looking for. (I wish I could draw something as good as this in my first attempt) – luciamp Jan 1 '18 at 21:31
  • Thanks to both that tried to answer! I worked out a solution now ^^ – luciamp Jan 11 '18 at 20:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.