Photon sans flèches utilisant feynmp-auto

Sep 08 2020

J'ai créé ce MWE avec feynmp-auto,



\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}

Mais le photon n'a pas les flèches comme cette image?

J'ai lu les documentations: fmfman, fmfsampleset latex_feynman [CMS Wiki Pages]mais tous les photons sont sans flèches (gauche ou droite).

Réponses

2 Thruston Sep 09 2020 at 15:57

Ajouter un wiggly_arrowstyle est assez facile mais (a) cela a l'air horrible, et (b) je ne pense pas que cela ait de sens dans un diagramme de Feynman ...

\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}

Deuxième essai

Cela semble plus joli mais je crains toujours que cela ne "signifie" rien dans un diagramme de Feynman.

\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}

Remarques

Qu'est-ce qui se passe ici?

  • le feynmppackage fournit la \fmfcmdséquence de contrôle qui vous permet d'insérer des bits arbitraires de code Metapost dans vos diagrammes.

  • J'ai utilisé un \fmfcmdpour définir quelques nouvelles macros de "style".

  • Nous pouvons définir des macros "style" en utilisant la style_defmacro fournie par le feynmppackage. style_deffonctionne un peu comme a, vardefmais configure également certaines commandes de dessin et les définitions qui vous permettent d'utiliser un nom de style avec une \fmfséquence de contrôle.

  • Mon premier s'appelait "wiggly_arrow" et utilisait deux commandes fournies par feynmp: cdrawet cfillpour dessiner le chemin et mettre une pointe de flèche au milieu de celui-ci. Le chemin à dessiner est représenté par le paramètre pet la définition le modifie en utilisant la wigglymacro qui le précède, qui renvoie une version, euh, ondulante du chemin.

  • La deuxième tentative abandonne les commandes fournies cdrawet cfillet retombe sur la drawarrowmacro MP simple

  • La complication est que j'essaie de rendre la flèche agréable. Pour ce faire, je ne vais appliquer que sur la partie principale du chemin et j'essaie de laisser les derniers millimètres droits pour que la flèche soit meilleure.

  • La longueur du chemin pen points estarclength p

  • La longueur d'une pointe de flèche MP simple est ahlength

  • Donc, la longueur du chemin que je veux trémousser est arclength p - 2.4 ahlength

  • Nous voulons donc Wiggle subpath (0, arctime a of p) of poù aest la longueur ci - dessus.

  • et nous voulons nous connecter en douceur à l'extrémité normale de p, nous connectons donc le sous-chemin ondulé à.. {direction infinity of p} point infinity of p

  • mais finalement on veut s'arrêter un peu court, pour que la pointe de la pointe de la flèche soit plus facilement visible, on coupe le chemin à dessiner après le bord d'un cercle complet mis à l'échelle à 2pt et décalé à l'extrémité de p.

  • C'est compris?

2 staircase27 Nov 11 2020 at 18:08

Toutes les fois que j'ai vu une flèche attachée à une ligne de photon (ou de gluon), la flèche est dessinée décalée comme indiqué en vert sur votre exemple.

Pour mon doctorat, j'ai ajouté quelques styles de flèches à feynmp et je les ai inclus ci-dessous. Il existe 3 types de flèches et deux côtés de la ligne pour un total de 6 nouveaux styles de ligne. Les styles 'arrow' et 'far_arrow' dessinent simplement une tête de flèche mais décalés de la ligne d'origine, le style 'line_arrow' dessine une flèche complète avec une tige qui couvre la moitié médiane de la ligne sur laquelle elle est basée (de 1/4 à 3/4) mais à nouveau décalé.

Vous voudrez utiliser soit \ fmffreeze ou tension = 0 car ils voudront être dessinés ainsi que la ligne de photon ou de gluon.

Voici le code comprenant des exemples des trois types (dans différentes couleurs pour le rendre clair).

\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}