Fotón sin flechas usando feynmp-auto

Sep 08 2020

Tengo este MWE creado con 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}

¿Pero el fotón no tiene las flechas como esta imagen?

He leído las documentaciones: fmfman, fmfsamplesy latex_feynman [CMS Wiki Pages]aunque todos los fotones son sin flechas (izquierda o derecha).

Respuestas

2 Thruston Sep 09 2020 at 15:57

Agregar un wiggly_arrowestilo es bastante fácil, pero (a) se ve horrible y (b) no creo que esto tenga ningún significado en un diagrama 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}

Segundo intento

Esto se ve mejor, pero todavía me preocupa que no "signifique" nada en un diagrama 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}

Notas

¿Que esta pasando aqui?

  • el feynmppaquete proporciona la \fmfcmdsecuencia de control que le permite insertar bits arbitrarios de código Metapost en sus diagramas.

  • He utilizado un \fmfcmdpara definir un par de macros de "estilo" nuevas.

  • Podemos definir macros de "estilo" usando la style_defmacro proporcionada por el feynmppaquete. style_deffunciona de forma muy parecida a, vardefpero también configura algunos comandos de dibujo y las definiciones que le permiten utilizar un nombre de estilo con una \fmfsecuencia de control.

  • Mi primero se llamó "wiggly_arrow" y usó dos comandos proporcionados por feynmp: cdrawy cfillpara dibujar el camino y poner una punta de flecha en el medio. La ruta a dibujar está representada por el parámetro py la definición la modifica utilizando la wigglymacro anterior, que devuelve una, er, versión ondulada de la ruta.

  • El segundo intento abandona los comandos y proporcionados cdrawy cfillrecurre a la drawarrowmacro MP simple

  • La complicación es que estoy tratando de hacer que la flecha se vea bien. Para hacer esto, solo voy a aplicar meneando a la parte principal del camino, y estoy tratando de dejar rectos los últimos milímetros para que la flecha se vea mejor.

  • La longitud del camino pen puntos esarclength p

  • La longitud de una punta de flecha MP simple es ahlength

  • Entonces, la longitud del camino que quiero mover es arclength p - 2.4 ahlength

  • Así que queremos movernos subpath (0, arctime a of p) of pdonde aestá la longitud de arriba.

  • y queremos conectarnos sin problemas al final normal de p, por lo que conectamos la subruta ondulada a.. {direction infinity of p} point infinity of p

  • pero finalmente queremos detenernos un poco, para que la punta de la punta de la flecha sea más visible, cortamos el camino para dibujar después del borde de un círculo completo escalado a 2 puntos y desplazado al extremo más alejado de p.

  • ¿Lo tengo?

2 staircase27 Nov 11 2020 at 18:08

Todas las veces que he visto una flecha unida a una línea de fotones (o gluones), la flecha se dibuja desplazada como se muestra en verde en su ejemplo.

Para mi doctorado, agregué bastantes estilos de flechas a feynmp y los incluí a continuación. Hay 3 tipos de flechas y dos lados de la línea para un total de 6 nuevos estilos de línea. Los estilos 'flecha' y 'far_arrow' simplemente dibujan una punta de flecha pero desplazada de la línea original, el estilo 'line_arrow' dibuja una flecha completa con un tallo que cubre la mitad central de la línea en la que se basa (de 1/4 a 3/4) pero nuevamente cambiado.

Querrá usar \ fmffreeze o tension = 0, ya que querrán que se dibujen al igual que la línea de fotones o gluones.

Aquí está el código que incluye ejemplos de los tres tipos (en diferentes colores para que quede claro).

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