Special contour Cᵦ used to isolate branch cut contributions in Matsubara frequency sums. The contour runs along both sides of the real axis where the sign function s(p₀) changes discontinuously, giving rise to branch cuts in the propagator. This allows separating pole and branch cut contributions.
\documentclass[tikz]{standalone}
\usepackage{mathtools}
\let\Im\relax
\DeclareMathOperator{\Im}{Im}
\let\Re\relax
\DeclareMathOperator{\Re}{Re}
\usetikzlibrary{decorations.markings,decorations.pathmorphing}
\def\xr{4}
\def\yr{1}
\begin{document}
\begin{tikzpicture}[thick]
% Axes:
\draw [decorate,decoration={zigzag,segment length=4,amplitude=1,post=lineto,post length=15}] (-1.05*\xr,0) -- (0,0);
\draw [->,decorate,decoration={zigzag,segment length=4,amplitude=1,pre=lineto,pre length=15,post=lineto,post length=3}] (0,0) -- (1.05*\xr,0) node [right] {$\Re(p_0)$};
\draw [->] (0,-\yr) -- (0,\yr) node [below right] {$\Im(p_0)$};
% Left contour line
\draw[xshift=5,blue!60!black,decoration={markings,mark=between positions 0.125 and 0.875 step 0.25 with \arrow{>}},postaction={decorate}] (\xr,-\yr/4) -- (\yr/4,-\yr/4) arc (-90:-270:\yr/4) (\yr/4,\yr/4) -- (\xr,\yr/4) node[above left] {$C_b$};
% Right contour line
\draw[xshift=-5,blue!60!black,decoration={markings,mark=between positions 0.125 and 0.875 step 0.25 with \arrow{>}},postaction={decorate}] (-\xr,\yr/4) -- (-\yr/4,\yr/4) arc (90:-90:\yr/4) (-\yr/4,-\yr/4) -- (-\xr,-\yr/4);
\end{tikzpicture}
\end{document}
#import "@preview/cetz:0.3.4": canvas, draw, decorations
#import draw: line, content, circle, arc, set-style
#set page(width: auto, height: auto, margin: 8pt)
#canvas({
// Constants
let x-range = 4
let y-range = 1
let y-offset = 0.25
let zigzag-start = 0.5
let contour-radius = y-range / 4
// Styles
let arrow-style = (mark: (end: "stealth", fill: black, scale: 0.5))
let dark-blue = blue.darken(20%)
let marc-style = (symbol: "stealth", fill: dark-blue, scale: 0.5, shorten-to: none)
let contour-style = (paint: dark-blue, thickness: 0.8pt)
let zigzag-style = (amplitude: 0.2, segment-length: 0.3)
// Helper function to draw a horizontal contour line with arrows
let draw-contour-line(start, end, name) = {
line(
start,
end,
stroke: contour-style,
mark: (
end: (
(pos: 25%, ..marc-style),
(pos: 75%, ..marc-style),
),
),
name: name,
)
}
// Helper function to draw a semicircle with given center and angles
let draw-semicircle(center, start-angle, end-angle, name) = {
arc(
center,
radius: contour-radius,
start: start-angle,
stop: end-angle,
stroke: contour-style,
name: name,
anchor: "arc-center",
)
}
// Draw x-axis with zigzag on both sides
// Center straight segment
line((-zigzag-start, 0), (zigzag-start, 0), stroke: 0.8pt, name: "x-axis-center")
// Left side zigzag
decorations.zigzag(
line((-1.05 * x-range, 0), (-zigzag-start, 0)),
..zigzag-style,
stroke: 0.8pt,
name: "x-axis-left",
)
// Right side zigzag - ending a bit earlier to make room for straight arrow
decorations.zigzag(
line((zigzag-start, 0), (1.05 * x-range - 0.4, 0)),
..zigzag-style,
stroke: 0.8pt,
name: "x-axis-right-zigzag",
)
// Straight arrow segment at the end
line(
(1.05 * x-range - 0.4, 0),
(1.05 * x-range, 0),
stroke: 0.8pt,
..arrow-style,
name: "x-axis-right-arrow",
)
content("x-axis-right-arrow.end", $"Re"(p_0)$, anchor: "west", padding: 2pt)
// Draw y-axis
line((0, -y-range), (0, y-range), ..arrow-style, name: "y-axis")
content("y-axis.end", $"Im"(p_0)$, anchor: "north-west", padding: 4pt)
// Draw left contour (C_b)
draw-semicircle((contour-radius, 0), 270deg, 90deg, "left-arc")
draw-contour-line((x-range, -contour-radius), "left-arc.start", "bottom-line")
draw-contour-line("left-arc.end", (x-range, contour-radius), "top-line")
// Add C_b label
content("top-line.end", text(fill: dark-blue)[$C_b$], anchor: "south-east", padding: 2pt)
// Draw right contour
draw-semicircle((-contour-radius, 0), -90deg, 90deg, "right-arc")
draw-contour-line((-x-range, contour-radius), "right-arc.end", "right-top-line")
draw-contour-line("right-arc.start", (-x-range, -contour-radius), "right-bottom-line")
})