feynman diagram with two loops and bigger dots tikz feynman

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,

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.

• 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

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:

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

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}


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}


• 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