« home

Two Point No Cutoff

physicsquantum field theoryrenormalizationcetztikz

Two-point propagator flow without cutoff derivative


Two Point No Cutoff

  Download

PNGPDFSVG

  Code

  LaTeX

two-point-no-cutoff.tex (56 lines)

\documentclass[tikz]{standalone}

\usetikzlibrary{patterns,decorations.markings}

\tikzset{
  dressed/.style={fill=white,postaction={pattern=north east lines}},
  momentum/.style={->,semithick,yshift=5pt,shorten >=5pt,shorten <=5pt},
  loop/.style 2 args={thick,decoration={markings,mark=at position {#1} with {\arrow{>},\node[anchor=\pgfdecoratedangle-90,font=\footnotesize] {$p_{#2}$};}},postaction={decorate}},
  label/.style={thin,gray,shorten <=-1ex}
}

\def\lrad{1}
\def\mrad{0.175*\lrad}
\def\srad{0.15*\lrad}

\begin{document}

% Diagram 1
\begin{tikzpicture}
  % Loop
  \draw[loop/.list={{0.125}{1},{0.125*3}{2},{0.125*5}{3},{0.125*7}{4}}] (0,0) circle (\lrad);
  \draw[dressed] (0,\lrad) circle (\srad) node[above=2pt] {$G_{k,ij}(p_1,p_2)$};
  \draw[dressed] (0,-\lrad) circle (\srad) node[below=3pt] {$G_{k,kl}(p_3,p_4)$};

  % External lines
  \draw (-2*\lrad,0) coordinate (xl) -- (-\lrad,0) node[pos=0.4,below] {$\varphi_a$};
  \draw[momentum] (-2*\lrad,0) -- (-1.25*\lrad,0) node[midway,above] {$q_1$};
  \draw (\lrad,0) -- (2*\lrad,0) coordinate (xr) node[pos=0.6,below] {$\varphi_b$};
  \draw[momentum] (1.25*\lrad,0) -- (2*\lrad,0) node[midway,above] {$q_2$};

  % Vertices
  \node at (-2.1*\lrad,\lrad) (Gkajk) {$\Gamma_{k,ajk}^{(3)}(q_1,p_2,-p_3)$};
  \draw[label] (Gkajk.-30) -- (-\lrad,0);
  \draw[dressed] (-\lrad,0) circle (\mrad);
  \node at (2.1*\lrad,\lrad) (Gkbli) {$\Gamma_{k,bli}^{(3)}(-q_2,-p_1,p_4)$};
  \draw[label] (Gkbli.-150) -- (\lrad,0);
  \draw[dressed] (\lrad,0) circle (\mrad);
\end{tikzpicture}

% Diagram 2
\begin{tikzpicture}
  % Loop
  \draw[loop/.list={{0}{1},{0.125*4}{2}}] (0,0) circle (\lrad);
  \draw[dressed] (0,\lrad,0) circle (\srad) node[above=2pt] {$G_{k,ij}(p_1,p_2)$};

  % External lines
  \draw (-2*\lrad,-\lrad) node[left] {$\varphi_a$} -- (2*\lrad,-\lrad) node[right] {$\varphi_b$};
  \draw[momentum] (-2*\lrad,-\lrad) -- (-\lrad,-\lrad) node[midway,above] {$q_1$};
  \draw[momentum] (\lrad,-\lrad) -- (2*\lrad,-\lrad) node[midway,above] {$q_2$};

  % Vertices
  \draw[dressed] (0,-\lrad) circle (\mrad) node[below] {$\Gamma_{k,abji}^{(4)}(q_1,-q_2,-p_1,p_2)$};
\end{tikzpicture}

\end{document}

  Typst

two-point-no-cutoff.typ (213 lines)

#import "@preview/cetz:0.3.4": canvas, draw
#import "@preview/modpattern:0.1.0": modpattern
#import draw: line, content, circle, mark

#set page(width: auto, height: auto, margin: 8pt)

// Define styles and constants
#let radius = 1.25
#let med-rad = 0.175 * radius
#let small-rad = 0.15 * radius

// Create hatched pattern for vertices
#let hatched = modpattern(
  (.1cm, .1cm),
  std.line(start: (0%, 100%), end: (100%, 0%), stroke: 0.5pt),
  background: white,
)

// Helper function for dressed vertices
#let dressed-vertex(pos, label: none, rel-label: (0, 0), name: none, radius: small-rad, ..rest) = {
  circle(pos, radius: radius, fill: hatched, name: name, stroke: 0.5pt)
  if label != none {
    let label-pos = if rel-label != none { (rel: rel-label, to: pos) } else { pos }
    content(label-pos, $#label$, ..rest)
  }
}

#canvas({
  // First diagram
  // Main loop
  circle((0, 0), radius: radius, stroke: 1pt, name: "loop")

  // Add momentum arrows and labels around loop
  for (ii, pos) in ((1, "0.125"), (2, "0.375"), (3, "0.625"), (4, "0.875")) {
    let angle = float(pos) * 360
    let label-angle = (angle - 3) * 1deg

    // Add momentum labels
    let rel-pos = (0.75 * radius * calc.cos(label-angle), 0.75 * radius * calc.sin(label-angle))
    content(
      (rel: rel-pos, to: "loop"),
      $p_#ii$,
      size: 8pt,
    )

    // Add arrow marks
    mark(
      symbol: "stealth",
      (name: "loop", anchor: angle * 1deg),
      (name: "loop", anchor: (angle + 1) * 1deg),
      ..(width: .25, length: .15, stroke: .7pt, angle: 60deg, scale: .7, fill: black),
    )
  }

  // Add dressed vertices with propagators
  dressed-vertex(
    (0, radius),
    label: $G_(k,i j)(p_1,p_2)$,
    rel-label: (0, 0.2),
    name: "vertex-top",
    anchor: "south",
  )

  dressed-vertex(
    (0, -radius),
    label: $G_(k,k l)(p_3,p_4)$,
    rel-label: (0, -0.3),
    name: "vertex-bottom",
    anchor: "north",
  )

  // External lines
  line((-2 * radius, 0), (-radius, 0), stroke: 1pt, name: "left-external")
  line((radius, 0), (2 * radius, 0), stroke: 1pt, name: "right-external")

  // External line labels
  content("left-external.start", $phi_a$, anchor: "east", padding: 0.1)
  content("right-external.end", $phi_b$, anchor: "west", padding: 0.1)

  // External momentum arrows
  let arrow-style = (
    mark: (end: "stealth", fill: black, scale: .5),
    stroke: (thickness: 0.75pt),
  )
  line(
    (-1.9 * radius, 0.15),
    (-1.3 * radius, 0.15),
    ..arrow-style,
    name: "q1-arrow",
  )
  content((rel: (0, 0.3), to: "q1-arrow.mid"), $q_1$)

  line(
    (1.3 * radius, 0.15),
    (1.9 * radius, 0.15),
    ..arrow-style,
    name: "q2-arrow",
  )
  content((rel: (0, 0.3), to: "q2-arrow.mid"), $q_2$)

  // Vertex labels with connecting lines
  let label-style = (stroke: gray + 0.3pt)
  content(
    (-2.1 * radius, radius),
    $Gamma_(k,a j k)^((3))(q_1,p_2,-p_3)$,
    name: "left-gamma",
  )
  line(
    "left-gamma",
    (-radius, 0),
    ..label-style,
  )

  content(
    (2.1 * radius, radius),
    $Gamma_(k,b l i)^((3))(-q_2,-p_1,p_4)$,
    name: "right-gamma",
  )
  line(
    "right-gamma",
    (radius, 0),
    ..label-style,
  )

  // External vertices
  dressed-vertex(
    (-radius, 0),
    radius: med-rad,
    name: "vertex-left-external",
  )
  dressed-vertex(
    (radius, 0),
    radius: med-rad,
    name: "vertex-right-external",
  )
})

#pagebreak()

#canvas({
  // Second diagram
  // Main loop
  circle((0, 0), radius: radius, stroke: 1pt, name: "loop")

  // Add momentum arrows and labels around loop
  for (ii, pos) in ((1, "0"), (2, "0.5")) {
    let angle = float(pos) * 360
    let label-angle = (angle - 3) * 1deg

    // Add momentum labels
    let rel-pos = (0.75 * radius * calc.cos(label-angle), 0.75 * radius * calc.sin(label-angle))
    content(
      (rel: rel-pos, to: "loop"),
      $p_#ii$,
      size: 8pt,
    )

    // Add arrow marks
    mark(
      symbol: "stealth",
      (name: "loop", anchor: angle * 1deg),
      (name: "loop", anchor: (angle + 1) * 1deg),
      ..(width: .25, length: .15, stroke: .7pt, angle: 60deg, scale: .7, fill: black),
    )
  }

  // Add dressed vertex with propagator
  dressed-vertex(
    (0, radius),
    label: $G_(k,i j)(p_1,p_2)$,
    rel-label: (0, 0.2),
    name: "vertex-top",
    anchor: "south",
  )

  // External line
  line((-2 * radius, -radius), (2 * radius, -radius), stroke: 1pt, name: "external")

  // External line labels
  content((rel: (-0.1, 0), to: "external.start"), $phi_a$, anchor: "east")
  content((rel: (0.1, 0), to: "external.end"), $phi_b$, anchor: "west")

  // External momentum arrows
  let arrow-style = (
    mark: (end: "stealth", fill: black, scale: .5),
    stroke: (thickness: 0.75pt),
  )
  line(
    (-1.9 * radius, -radius + 0.15),
    (-1.3 * radius, -radius + 0.15),
    ..arrow-style,
    name: "q1-arrow",
  )
  content((rel: (0, 0.3), to: "q1-arrow.mid"), $q_1$)

  line(
    (1.3 * radius, -radius + 0.15),
    (1.9 * radius, -radius + 0.15),
    ..arrow-style,
    name: "q2-arrow",
  )
  content((rel: (0, 0.3), to: "q2-arrow.mid"), $q_2$)

  // Four-vertex with label
  dressed-vertex(
    (0, -radius),
    label: $Gamma_(k,a b j i)^((4))(q_1,-q_2,-p_1,p_2)$,
    rel-label: (0, -0.3),
    radius: med-rad,
    anchor: "north",
  )
})