feynmp-auto 线长和角度

feynmp-auto 线长和角度

我制作了 W' 生成的费曼图,显示了传入和传出的部分子:

\begin{fmffile}{feynmanW_partons}
\begin{fmfgraph*}(150,100)
    % External vertices on the left
    \fmfleft{i1,i2}
    % External vertices on the right
    \fmfright{o1,o2,o3,o4}

    % protons > blob
    \fmf{fermion,tension=0}{i2,v3}
    \fmf{fermion,tension=0}{i1,v1}
    \fmffreeze

    % quarks blob > VB > blob
    \fmf{fermion,label=$q$,label.side=right, tension=0.5}{v3,v4}
    \fmf{fermion,label=$\bar{q}$,label.side=right,tension=0.5}{v4,v1}

    % tension between protons and blob
    \fmf{phantom, tension=2}{i2,v3}
    \fmf{phantom, tension=2}{i1,v1}

    % tension between blob and extra quarks
    \fmf{phantom, tension=1}{v1,o1}
    \fmf{phantom, tension=1}{v3,o4}

    % Labels on external vertices
    \fmf{plain,straight}{i2,v3,o4}
    \fmf{plain}{i2,v3,v4,v1,i1}

    \fmf{plain}{o3,v2,o2}
    \fmf{plain,straight}{i1,v1,o1}

    \fmfblob{.12w}{v1}
    \fmfblob{.12w}{v3}
    \fmflabel{\(p\)}{i1}
    \fmflabel{\(p\)}{i2}

    % \fmflabel{\(o1\)}{o1}
    \fmflabel{$\bar{\nu}_{\ell} / \nu_{\ell}$}{o2}
    \fmflabel{$\ell^{-} / \ell^{+}$}{o3}
    \fmf{boson,label=$\wpmin / \wpplu$}{v4,v2}
    \fmffreeze

    % bottom lhs vertex
    \fmfi{plain}{vpath (__i1,__v1) shifted (thick*(-0.5,2))}
    \fmfi{plain}{vpath (__i1,__v1) shifted (thick*(0.5,-2))}

    % top lhs vertex
    \fmfi{plain}{vpath (__i2,__v3) shifted (thick*(0.5,2))}
    \fmfi{plain}{vpath (__i2,__v3) shifted (thick*(-0.5,-2))}

    % top rhs vertex
    \fmfi{plain}{vpath (__v3,__o4) shifted (thick*(-0.5,2))}
    % bottom rhs vertex
    \fmfi{plain}{vpath (__v1,__o1) shifted (thick*(0.5,2))}

\end{fmfgraph*}
\end{fmffile}

我花了一段时间研究这个问题,希望缩短输出部分子的线条,也许可以添加箭头。我想我还希望输入粒子只有水平线,而不是倾斜线。有人知道我该如何实现吗?

在此处输入图片描述

答案1

如果你知道(或者你愿意学习)元帖子,还有另一种使用feynmp宏来制作图表的方法。您只需input feynmp在顶部执行,然后直接使用 Metapost 布局所有内容,而不是依赖于 中的自动布局引擎feynmp,然后使用宏绘制符号feynmp,如下所示。

这是使用该技术的图表版本。

在此处输入图片描述

这使您可以在重要时更好地控制精确的布局。

prologues := 3;
outputtemplate := "%j%c.eps";

input feynmp;

beginfig(1);

    % middle
    z0 = origin;

    u = 1cm;

    y1 = y3 = y5 = -y2 = -y4 = -y6 = 2u;
    x1 = x2 = -1u;
    x3 = x4 = -3u;
    x5 = x6 = +1u;

    z7 = (2u,0);
    z8 = (3u,+u);
    z9 = (3u,-u);

    draw fermion z3--z1 cutafter  fullcircle scaled 16 shifted z1;
    draw fermion z1--z0 cutbefore fullcircle scaled 16 shifted z1;
    draw (z3--z1) shifted 4 up;
    draw (z3--z1) shifted 4 down;
    draw (z1--z5) shifted 2 up;
    draw (z1--z5) shifted 2 down;

    draw fermion z4--z2 cutafter fullcircle scaled 16 shifted z2;
    draw fermion z0--z2 cutafter fullcircle scaled 16 shifted z2;
    draw (z4--z2) shifted 4 up;
    draw (z4--z2) shifted 4 down;
    draw (z2--z6) shifted 2 up;
    draw (z2--z6) shifted 2 down;

    make_blob(z1,16);
    make_blob(z2,16);

    draw photon z0 -- z7;
    draw z7--z8;
    draw z7--z9;

    label.lft(btex $p$ etex, z3);
    label.lft(btex $p$ etex, z4);

    label.llft(btex $q$       etex, 1/2[z1,z0] shifted 2 left);
    label.ulft(btex $\bar{q}$ etex, 1/2[z2,z0] shifted 2 left);

    label.bot(btex $W'^-/W'^+$ etex, 1/2[z0,z7]);
    label.rt (btex $\ell^{-} / \ell^{+}$           etex, z8);
    label.rt (btex $\bar{\nu}_{\ell} / \nu_{\ell}$ etex, z9);

endfig;
end.

唯一的问题是它没有很好的文档记录——我依赖于阅读中的源代码../texmf-dist/metapost/feynmf

在中定义了许多有用的宏feynmp,但我在这里只使用了其中三个:

  • fermion接受主路径参数,沿其中点绘制箭头,然后返回相同路径

  • photon采用主路径参数,并返回它的波动版本。

  • make_blob(z,d)绘制一个斑点(如图所示),按直径缩放d并移动到点z

其余部分就是普通的 Metapost。

答案2

这是另一种解决方案:

\begin{fmfgraph*}(150,100)
% External vertices on the left
\fmfleft{i1,i3,i4,i2}
% External vertices on the right
\fmfright{o1,o2,o3,o4}
\fmf{phantom, tension=2}{i2,v3,o4}
\fmf{phantom, tension=2}{i1,v1,o1}

\fmffreeze
% protons > blob
\fmf{fermion,tension=0}{i2,v3}
\fmf{fermion,tension=0}{i1,v1}
\fmffreeze

% quarks blob > VB > blob
\fmf{fermion,label=$q$,label.side=right, tension=0.5}{v3,v4}
\fmf{fermion,label=$\bar{q}$,label.side=left,tension=0.5}{v1,v4}

% tension between protons and blob
\fmf{phantom, tension=2}{i2,v3}
\fmf{phantom, tension=2}{i1,v1}

% tension between blob and extra quarks
\fmf{phantom, tension=1}{v1,o1}
\fmf{phantom, tension=1}{v3,o4}

% Labels on external vertices
\fmf{plain,straight}{i2,v3,o4}
\fmf{plain}{i2,v3,v4,v1,i1}

\fmf{plain}{o3,v2,o2}
\fmf{plain,straight}{i1,v1,o1}

\fmfblob{.05w}{v1}
\fmfblob{.05w}{v3}
\fmfv{label=$p$,label.angle=200}{i1}
\fmfv{label=$p$,label.angle=160}{i2}

% \fmflabel{\(o1\)}{o1}
\fmflabel{$\bar{\nu}_{\ell} / \nu_{\ell}$}{o2}
\fmflabel{$\ell^{-} / \ell^{+}$}{o3}
\fmf{boson,label=$W^{\prime+} / W^{\prime-}$}{v4,v2}
\fmffreeze

% bottom lhs vertex
\fmfi{plain}{vpath (__i1,__v1) shifted (thick*(-0.5,2))}
\fmfi{plain}{vpath (__i1,__v1) shifted (thick*(0.5,-2))}

% top lhs vertex
\fmfi{plain}{vpath (__i2,__v3) shifted (thick*(0.5,2))}
\fmfi{plain}{vpath (__i2,__v3) shifted (thick*(-0.5,-2))}

% top rhs vertex
\fmfi{plain}{vpath (__v3,__o4) shifted (thick*(-0.5,2))}
% bottom rhs vertex
\fmfi{plain}{vpath (__v1,__o1) shifted (thick*(0.5,2))}

\end{fmfgraph*}

在此处输入图片描述

相关内容