0

I have this MWE created with feynmp-auto,


enter image description here


\documentclass[a4paper,12pt]{article}
\usepackage{mathtools,amssymb}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{draw}
 \begin{fmfgraph*}(100,100)
       \fmfleft{i}
       \fmfright{o}
       \fmfv{label=$p$,l.a=60}{i}
       \fmfv{label=$p$,l.a=120}{o}
       \fmf{photon,tension=1,l.side=right}{i,v1}
       \fmf{photon,tension=1}{v2,o}
       \fmf{fermion,left,tension=0.4,label=$p-k$}{v1,v2}
       \fmf{fermion,left,tension=0.4,label=$k$}{v2,v1}
\end{fmfgraph*}
\end{fmffile}   
    
\end{document}

But the photon have not the arrows like this image?

enter image description here

I have read the documentations: fmfman, fmfsamples and latex_feynman [CMS Wiki Pages] but all the photons are without arrows (left or right).

2
  • 1
    You want a photon with a wiggly arrow?
    – Thruston
    Sep 8, 2020 at 15:23
  • Hi, an arrow in the two photons. You are free to put any ideas. Thank you for your help. I have read the documentations but I have not found nothing.
    – Sebastiano
    Sep 8, 2020 at 19:05

2 Answers 2

2

Adding a wiggly_arrow style is easy enough but (a) it looks horrible, and (b) I don't think this has any meaning in a Feynman diagram....

enter image description here

\documentclass[a4paper,12pt]{article}
\usepackage{mathtools,amssymb}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{draw}
     \fmfcmd{style_def wiggly_arrow expr p = 
        cdraw wiggly p; 
        cfill (arrow wiggly p);
     enddef;} 
     \begin{fmfgraph*}(100,100)
       \fmfleft{i}
       \fmfright{o}
       \fmfv{label=$p$,l.a=60}{i}
       \fmfv{label=$p$,l.a=120}{o}
       \fmf{wiggly_arrow,tension=1}{i,v1}
       \fmf{wiggly_arrow,tension=1}{v2,o}
       \fmf{fermion,left,tension=0.4,label=$p-k$}{v1,v2}
       \fmf{fermion,left,tension=0.4,label=$k$}{v2,v1}
     \end{fmfgraph*}
\end{fmffile}       
\end{document}

Second attempt

This looks nicer but I still worry that it does not "mean" anything in a Feynman diagram.

enter image description here

\documentclass[border=5mm]{standalone}
\usepackage{mathtools,amssymb}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{draw}
     \fmfcmd{style_def wiggly_arrow expr p = 
        draw wiggly p withcolor 3/4 [foreground, background]; 
        cfill (arrow wiggly p);
     enddef;} 
     \fmfcmd{style_def directed_photon expr p = 
        interim ahangle := 30;
        drawarrow (wiggly subpath (0, arctime arclength p - 2.4 ahlength of p) of p) 
            .. {direction infinity of p} point infinity of p 
            cutafter fullcircle scaled 2 shifted point infinity of p
            withcolor foreground; 
     enddef;} 
     \begin{fmfgraph*}(100,100)
       \fmfleft{i}
       \fmfright{o}
       \fmfv{label=$p$,l.a=60}{i}
       \fmfv{label=$p$,l.a=120}{o}
       \fmf{directed_photon,tension=1}{i,v1}
       \fmf{directed_photon,tension=1}{v2,o}
       \fmf{fermion,left,tension=0.4,label=$p-k$}{v1,v2}
       \fmf{fermion,left,tension=0.4,label=$k$}{v2,v1}
     \end{fmfgraph*}
\end{fmffile}   
\end{document}

Notes

What is going on here?

  • the feynmp package provides the \fmfcmd control sequence that lets you insert arbitrary bits of Metapost code into your diagrams.

  • I have used an \fmfcmd to define a couple of new "style" macros.

  • We can define "style" macros using the style_def macro provided by the feynmp package. style_def works much like a vardef but also sets up some drawing commands, and the definitions that let you use a style name with an \fmf control sequence.

  • My first one was called "wiggly_arrow" and it used two commands provided by feynmp: cdraw and cfill to draw the path and put an arrowhead in the middle of it. The path to draw is represented by the parameter p and the definition modifies it by using the wiggly macro before it, which returns a, er, wiggly version of the path.

  • The second attempt abandons the provided cdraw and cfill commands and falls back on the plain MP drawarrow macro

  • The complication is that I am trying to make the arrow look nice. To do this, I am only going to apply wiggly to the main part of the path, and I am trying to leave the last few millimetres straight so that the arrow looks better.

  • The length of the path p in points is arclength p

  • The length of a plain MP arrow head is ahlength

  • So the length of path that I want to wiggle is arclength p - 2.4 ahlength

  • So we want to wiggle subpath (0, arctime a of p) of p where a is the length above.

  • and we want to connect smoothly to the normal end of p, so we connect the wiggly subpath to .. {direction infinity of p} point infinity of p

  • but finally we want to stop a little short, so that the tip of the arrow head is more easily visible, we cut the path to draw after the edge of a full circle scaled to 2pt and shifted to the far end of p.

  • Got that?

6
  • It is vary ugly. But to put a triangle left or right or a < or > is it better? In meantime thank you very very much. Can you add another alternative, please?
    – Sebastiano
    Sep 9, 2020 at 11:35
  • My severe problem it to not understood the metapost code. But do not exist a procedure with this package to put an arrow (> or < or \triangleblackleft or right) in the center of the photon?
    – Sebastiano
    Sep 9, 2020 at 19:23
  • What is unclear about the code?
    – Thruston
    Sep 9, 2020 at 22:04
  • How to shift your arrows :-( excuse me very much.
    – Sebastiano
    Sep 10, 2020 at 8:23
  • When I get some more time, I will try to get something better. But don;t hold your breath while you wait.
    – Thruston
    Sep 10, 2020 at 9:21
2

All times I have seen an arrow attached to a photon (or gluon) line the arrow is drawn shifted as shown in green on your example.

For my PhD I added quite a few arrow styles to feynmp and have included them below. There are 3 arrow types and two sides of the line for a total of 6 new line styles. The 'arrow' and 'far_arrow' styles just draw an arrow head but offset from the original line, the 'line_arrow' style draws a full arrow with stem that covers the middle half of the line it is based on (from 1/4 to 3/4) but again shifted.

You will want to use either \fmffreeze or tension=0 as they will want to be drawn as well as the photon or gluon line.

Here is the code including examples of the three types (in different colours to make it clear).

\documentclass[class=minimal,border=20pt]{standalone}
\usepackage{mathtools,amssymb}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{draw}
     \fmfcmd{
vardef middir(expr p,ang) =
  dir(angle direction length(p)/2 of p + ang)
enddef;
style_def arrow_left expr p =
  shrink(.7);
    cfill(arrow p
      shifted(4thick*middir(p,90)));
  endshrink
enddef;
style_def arrow_right expr p =
  shrink(.7);
    cfill(arrow p
      shifted(4thick*middir(p,-90)));
  endshrink
enddef;
style_def far_arrow_left expr p =
  shrink(.7);
    cfill(arrow p
      shifted(8thick*middir(p,90)));
  endshrink
enddef;
style_def far_arrow_right expr p =
  shrink(.7);
    cfill(arrow p
      shifted(8thick*middir(p,-90)));
  endshrink
enddef;
style_def line_arrow_right expr p = 
  drawarrow subpath (1/4, 3/4) of p shifted 6 middir(p,-90) withpen pencircle scaled 0.4;
enddef;
style_def line_arrow_left expr p = 
  drawarrow subpath (1/4, 3/4) of p shifted 6 middir(p,90) withpen pencircle scaled 0.4;
enddef;} 
     \begin{fmfgraph*}(100,100)
       \fmfleft{i}
       \fmfright{o}
       \fmfv{label=$p$,l.a=60}{i}
       \fmfv{label=$p$,l.a=120}{o}
       \fmf{wiggly,tension=1}{i,v1}
       \fmf{wiggly,tension=1}{v2,o}
       \fmf{fermion,left,tension=0.4,label=$p-k$}{v1,v2}
       \fmf{fermion,left,tension=0.4,label=$k$}{v2,v1}
       \fmf{arrow_right,tension=0,foreground=green}{i,v1}
       \fmf{far_arrow_right,tension=0,foreground=red}{i,v1}
       \fmf{line_arrow_right,tension=0}{v2,o}
     \end{fmfgraph*}
\end{fmffile}       
\end{document}

Feynman Diagrams with arrows on photons

1
  • Excuse very much...I have forgotten of upvote you....thank you very much.
    – Sebastiano
    Nov 12, 2020 at 0:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.