Fóton sem flechas usando feynmp-auto

Sep 08 2020

Eu tenho este MWE criado com 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}

Mas o fóton não tem setas como esta imagem?

Eu li as documentações: fmfman, fmfsamplese latex_feynman [CMS Wiki Pages]mas todos os fótons estão sem setas (esquerda ou direita).

Respostas

2 Thruston Sep 09 2020 at 15:57

Adicionar um wiggly_arrowestilo é fácil, mas (a) parece horrível e (b) não acho que isso tenha qualquer significado em um 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}

Segunda tentativa

Isso parece melhor, mas ainda me preocupo que não "signifique" nada em um 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

O que está acontecendo aqui?

  • o feynmppacote fornece a \fmfcmdsequência de controle que permite inserir bits arbitrários de código Metapost em seus diagramas.

  • Usei um \fmfcmdpara definir algumas novas macros de "estilo".

  • Podemos definir macros de "estilo" usando a style_defmacro fornecida pelo feynmppacote. style_deffunciona como um, vardefmas também configura alguns comandos de desenho e as definições que permitem usar um nome de estilo com uma \fmfsequência de controle.

  • Meu primeiro se chamava "wiggly_arrow" e usava dois comandos fornecidos por feynmp: cdrawe cfillpara desenhar o caminho e colocar uma ponta de seta no meio dele. O caminho a ser desenhado é representado pelo parâmetro pe a definição o modifica usando a wigglymacro antes dele, que retorna uma, er, versão irregular do caminho.

  • A segunda tentativa abandona os comandos cdrawe fornecidos e cfillvolta para a drawarrowmacro MP simples

  • A complicação é que estou tentando fazer a flecha ficar bonita. Para fazer isso, vou aplicar wiggly apenas na parte principal do caminho e estou tentando deixar os últimos milímetros retos para que a seta pareça melhor.

  • O comprimento do caminho pem pontos éarclength p

  • O comprimento de uma ponta de seta simples MP é ahlength

  • Então, o comprimento do caminho que eu quero mexer é arclength p - 2.4 ahlength

  • Então, queremos mexer subpath (0, arctime a of p) of ponde aestá o comprimento acima.

  • e queremos conectar suavemente ao fim normal de p, então conectamos o subcaminho wiggly a.. {direction infinity of p} point infinity of p

  • mas, finalmente, queremos parar um pouco, para que a ponta da ponta da seta seja mais facilmente visível, cortamos o caminho para desenhar após a borda de um círculo completo dimensionado para 2pt e deslocado para a extremidade de p.

  • Percebido?

2 staircase27 Nov 11 2020 at 18:08

Todas as vezes que vi uma flecha anexada a uma linha de fóton (ou glúon), a flecha é desenhada deslocada conforme mostrado em verde em seu exemplo.

Para o meu doutorado, adicionei alguns estilos de seta ao feynmp e os incluí abaixo. Existem 3 tipos de setas e dois lados da linha para um total de 6 novos estilos de linha. Os estilos 'seta' e 'far_arrow' desenham apenas uma ponta de seta, mas deslocados da linha original, o estilo 'line_arrow' desenha uma seta completa com haste que cobre a metade do meio da linha em que se baseia (de 1/4 a 3/4), mas mudou novamente.

Você vai querer usar \ fmffreeze ou tension = 0, pois eles vão querer ser desenhados assim como a linha do fóton ou do glúon.

Aqui está o código incluindo exemplos dos três tipos (em cores diferentes para torná-lo 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}