This Feynman diagram contains two propagators forming a loop carrying the external energy . denote the masses of the propagators and their decay width which, for an expansion in Minkowski space, are non-zero only around a real and positive on-shell frequency .
\documentclass[tikz,svgnames]{standalone}
\begin{document}
\begin{tikzpicture}[very thick,q0/.style={->,DarkBlue,semithick,yshift=5pt,shorten >=5pt,shorten <=5pt}]
% Loop
\def\radius{1.5}
\draw (0,0) circle (\radius);
\node[above] (1) at (0,\radius) {$m_1^2$, $\gamma_1^2$};
\node[below] (2) at (0,-\radius) {$m_2^2$, $\gamma_2^2$};
\draw[q0] (140:0.75*\radius) arc (140:40:0.75*\radius) node[midway,below] {$q_0$};
% External lines
\filldraw
(-2*\radius,0) -- (-\radius,0) circle (2pt)
(\radius,0) circle (2pt) -- (2*\radius,0);
\draw[q0] (-2*\radius,0) -- (-\radius,0) node[midway,above] {$q_0$};
\draw[q0] (\radius,0) -- (2*\radius,0) node[midway,above] {$q_0$};
\end{tikzpicture}
\end{document}
#import "@preview/cetz:0.3.2": canvas, draw
#set page(width: auto, height: auto, margin: 8pt)
#canvas({
import draw: line, content, circle, arc
// Define styles and constants
let radius = 1.5
let dark-blue = rgb("#4040d9")
let arrow-style = (
mark: (end: "stealth", fill: dark-blue, scale: .5),
stroke: (paint: dark-blue, thickness: 0.75pt),
)
// Draw loop circle
circle((0, 0), radius: radius, name: "loop")
// Add labels for masses/widths
content("loop.0%", $m_1^2, gamma_1^2$, anchor: "south", padding: 3pt)
content("loop.50%", $m_2^2, gamma_2^2$, anchor: "north", padding: 3pt)
// Draw momentum arrow on loop
arc(
(rel: (.23, 0), to: "loop.15%"),
radius: 0.85 * radius,
start: 140deg,
stop: 40deg,
..arrow-style,
name: "momentum-arrow",
)
content(
"momentum-arrow.mid",
text(fill: dark-blue)[$q_0$],
anchor: "north",
)
// Draw external lines
let ext-len = 2.2 * radius
// Left external line
circle("loop.25%", radius: 2pt, fill: black, name: "left-vertex")
line((-ext-len, 0), "left-vertex", stroke: 1pt, name: "left-line")
// Right external line
circle("loop.75%", radius: 2pt, fill: black, name: "right-vertex")
line("right-vertex", (ext-len, 0), stroke: 1pt, name: "right-line")
// Add momentum arrows on external lines
line(
(rel: (0.15, 0.15), to: "left-line.start"),
(rel: (-0.15, 0.15), to: "left-line.end"),
..arrow-style,
name: "left-momentum",
)
content("left-momentum", text(fill: dark-blue)[$q_0$], anchor: "south", padding: 3pt)
line(
(rel: (0.15, 0.15), to: "right-line.start"),
(rel: (-0.15, 0.15), to: "right-line.end"),
..arrow-style,
name: "right-momentum",
)
content("right-momentum", text(fill: dark-blue)[$q_0$], anchor: "south", padding: 3pt)
})