Operator matrix element Feynman diagrams

feynmanfeynmffeynmpfeynmp-autotikz-feynman

I am trying to draw the following cutted diagram
enter image description here

but I don't know how to do it.

I am using feynmf for the Feynman diagrams for my thesis since tikz-feynman requires lualatex and it gives enormous compiling times.

On a more general note, I would like to know these Wick contraction diagrams are usually made

enter image description here

As far as I know, there isn't any specific package to do them beside tikz which is a bit cumbersome and I really would like to avoid it!

Best Answer

Here is a way to do it with tikz.

The code below shows your 4 types, and your sketch at the end. With the following it's easy to create other diagrams of similar complexity, step-by-step, in a kind of modular way:

\usetikzlibrary{decorations.markings}

% ~~~ PROCEDURE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%   0. use or include the `\tikzset` statement below
%   1. put coordinates
%   2. put nodes with labels, using the text styles tl, tr
%   3. draw one path
%   3a. use normal `--` first
%   3b. replace as needed, e.g. by `to [bend left]` etc.
%   4. turn `\draw` into `\draw[postaction={decorate}]`
%   5. copy decoration style and adjust the `mark=at position` statements as needed


\tikzset{
    mat/.style={circle,draw,inner sep=2pt},% matrix element
    tl/.style={xshift=-2.5mm},%              shift text to left
    tr/.style={xshift= 2.5mm},%              shift text to right
    lp/.style={min distance=12mm},%          loop style
}

Kindly recognize that the single path sometimes skips drawing a line.

And yes, you can still improve on the pi-banana ;-)

results

\documentclass[10pt,border=3mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}

% ~~~ PROCEDURE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%   0. use or include the `\tikzset` statement below
%   1. put coordinates
%   2. put nodes with labels, using the text styles tl, tr
%   3. draw one path
%   3a. use normal `--` first
%   3b. replace as needed, e.g. by `to [bend left]` etc.
%   4. turn `\draw` into `\draw[postaction={decorate}]`
%   5. copy decoration style and adjust the `mark=at position` statements as needed


\tikzset{
    mat/.style={circle,draw,inner sep=2pt},% matrix element
    tl/.style={xshift=-2.5mm},%              shift text to left
    tr/.style={xshift= 2.5mm},%              shift text to right
    lp/.style={min distance=12mm},%          loop style
}

\begin{document}
 % ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  \begin{tikzpicture}%                  type 1
    [decoration={
        markings,
        mark=at position 0.1  with {\arrow{stealth}},
        mark=at position 0.25 with {\arrow{stealth}},
        mark=at position 0.4 with {\arrow{stealth}},
        mark=at position 0.6 with {\arrow{stealth}},
        mark=at position 0.9 with {\arrow{stealth}},
    }]
    \coordinate (K)  at (  0,0);
    \coordinate (P1) at ( 20:4);
    \coordinate (P2) at (-10:4);
    \coordinate (M)  at ( 10:2);    
    
    \node[tl]            at (K)     {$K$};
    \node[tr,yshift=1mm] at (P1)    {$\pi$};
    \node[tr]            at (P2)    {$\pi$};
    \node[mat]           at (M)     {}; 
    
    \draw[postaction={decorate}] 
        (K) to [bend left] (M) 
            to [bend left] (P1) to [bend left] (M)
            to [bend right] (P2) to [bend left] (K);
  \end{tikzpicture}
 
 % ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  \begin{tikzpicture}%                  type 2
    [decoration={
        markings,
        mark=at position 0.1 with {\arrow{stealth}},
        mark=at position 0.33 with {\arrow{stealth}},
        mark=at position 0.5 with {\arrow{stealth}},
        mark=at position 0.7 with {\arrow{stealth}},
        mark=at position 0.9 with {\arrow{stealth}},
    }]
    \coordinate (K)  at (0,0);
    \coordinate (P1) at ( 10:2);
    \coordinate (P2) at (-10:2);
    \coordinate (M)  at (0:1);  
    
    \node[tl] at (K)  {$K$};
    \node[tr] at (P1) {$\pi$};
    \node[tr] at (P2) {$\pi$};
    \node[mat] at (M) {};   
    
    \draw[postaction={decorate}] (K) to [bend left] (M) to [bend right] (P2) to [bend left] (P1) to [bend right] (M) to [bend left] (K);
  \end{tikzpicture}
 
 % ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  \begin{tikzpicture}%                  type 3
    [decoration={
        markings,
        mark=at position 0.1 with {\arrow{stealth}},
        mark=at position 0.24 with {\arrow{stealth}},
        mark=at position 0.4 with {\arrow{stealth}},
        mark=at position 0.55 with {\arrow{stealth}},
        mark=at position 0.8 with {\arrow{stealth}},
    }]
    \coordinate (K)         at (  0,0);
    \coordinate (P1)        at ( 20:4);
    \coordinate (P2)        at (-10:4);
    \coordinate (M)         at ( 10:2);
        
    \node[tl] at (K)        {$K$};
    \node[tr] at (P1)       {$\pi$};
    \node[tr] at (P2)       {$\pi$};
    \node[mat] at (M)       {}; 
    
    % loop WAS missing
    \draw[postaction={decorate}] 
        (K) to [bend left] (M) 
            to [out=-20,in=-150,lp] (M)
            to [bend left] (P1) to [bend right] (P2) to [bend left] (K);
  \end{tikzpicture}
 
 % ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  \begin{tikzpicture}%                  type 4
    [decoration={
        markings,
        mark=at position 0.1 with {\arrow{stealth}},
        mark=at position 0.36 with {\arrow{stealth}},
        mark=at position 0.53 with {\arrow{stealth}},
        mark=at position 0.73 with {\arrow{stealth}},
        mark=at position 0.89 with {\arrow{stealth}},
    }]
    \coordinate (K)  at (0,0);
    \coordinate (P1) at ( 10:4);
    \coordinate (P2) at (-10:4);
    \coordinate (M)  at ( 0:2); 
  
    \node[tl] at (K)        {$K$};
    \node[tr] at (P1)       {$\pi$};
    \node[tr] at (P2)       {$\pi$};
    \node[mat] at (M)   {};     
    
    \draw[postaction={decorate}] 
            (K) to [bend left] (M) 
                to [out=-20,in=20,lp] (M)
                to [bend left] (K) 
            (P1) to [bend right] (P2) to [out=180,in=180] (P1);
  \end{tikzpicture}

  % ~~~ sketch ~~~~~~~~~~~~~~~~~~~
  \begin{tikzpicture}
    [decoration={
        markings,
        mark=at position 0.2 with {\arrow{stealth}},
        mark=at position 0.45 with {\arrow{stealth}},
        mark=at position 0.77 with {\arrow{stealth}},
        mark=at position 0.9 with {\arrow{stealth}},
    }]
    \coordinate (K) at (0,0);
    \coordinate (P0) at (3,0);
    \coordinate (Pp) at (3,2);
    \coordinate (H)  at (30:2.5);

    \node[tl] at (K)    {$K^+$};
    \node[tr] at (P0)   {$\pi^0$};
    \node[tr,yshift=2mm] at (Pp)    {$\pi^+$};
    
    \draw[postaction={decorate}]  
            (K) to [bend left] (P0) 
                to [bend left] (K)
            (H) to [bend left] (Pp) to [bend left] (H);
    
    \draw[dashed] (1.5,.5) to [bend left] (H);
    
    \draw[red,line width=1.5pt] (.9,1.0) to [bend left] (2.5,.6);
    
  \end{tikzpicture}    
  
\end{document}