[Tex/LaTex] Creating a Feynman loop diagram with feynmf

feynmf

I try to draw this Feynman diagram with feynmf in LaTeX:

Feynman diagram wanted to draw

Here is my code:

\begin{fmffile}{edm_neutrino}    
\begin{fmfchar*}(50,40)
\fmfkeep{vlm1}
\fmfleft{o}\fmflabel{$\nu_\tau$}{o}
\fmfright{i}\fmflabel{$\nu_\tau$}{i}
\fmftop{g}\fmflabel{$\gamma_\mu$}{g}
\fmf{plain, tension=1.5}{i,v1} \fmflabel{$Y_{ib}$}{v1}
\fmf{phantom, label=$\tau_j$, tension=0.8, left=1.0,tag=1}{v2,v1}
\fmf{dashes_arrow, label=$W^+$, left=-1.0, tension=0.4}{v2,v1}
\fmf{plain, tension=2.5}{v2,o}
\fmfposition
\fmfipath{p[]}
\fmfiset{p1}{vpath1(__v2,__v1)}
\fmfi{fermion}{subpath (0,2length(p1)/3) of p1}
\fmfi{fermion}{subpath (2length(p1)/3,length(p1)) of p1}
\fmfi{photon}{point length(p1)/3 of p1 -- point 2length(p1)/3 of p1}
%should go to g
\end{fmfchar*}

\end{fmffile}

But I don't know how to connect the point on the W^- line to the external point g. Is there any possibility to write something like that?

 \fmfi{photon}{point 2length(p1)/3 of p1 -- point g}

This line is not correct, I know. But how to fix?

Thank you very much for reading!
matthias

Best Answer

You are beyond the powers of the feynmf automatic layout routine so you need to use "immediate" mode to place your nodes.

However at that point, it usually become easier to draw the diagram directly in Metapost, using the feynmp macros. Like this:

enter image description here

prologues := 3;
outputtemplate := "%j%c.eps";
input feynmp;
beginfig(1);

path ring; ring = fullcircle scaled 78;
z1 = -z2 = 78 left; z3 = z2 rotated -24;

label.top(btex $\tau_j$ etex, point 2 of ring);
label.bot(btex $W^+$    etex, point 6 of ring);
label.top(btex $\nu_\tau$ etex, z1);
label.top(btex $\nu_\tau$ etex, z2);
label.rt(btex $\gamma_\mu$ etex, z3);

draw fermion z1 -- point 4 of ring;
draw fermion subpath(4,0) of ring;
draw fermion point 0 of ring -- z2;
draw_dashes_arrow subpath(4,8) of ring;
draw photon origin -- z3 cutbefore ring;

endfig;
end.

(Note that a fullcircle path has 8 points on it running anticlockwise from the 3 o'clock position.)

The interface is quite neat: feynmp defines a number of macros as path decorators, that take a path as the right argument and return a decorated path. For example fermion above. Unfortunately the set of decorators is not quite complete, so for the dashed arrow we have to call the draw_dashes_arrow macro directly. The only documentation that I've ever found is the Metapost source file, but fmfman.pdf is still useful.

Related Question