Fóton sem flechas usando feynmp-auto
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
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 pelofeynmppacote.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:cdrawecfillpara desenhar o caminho e colocar uma ponta de seta no meio dele. O caminho a ser desenhado é representado pelo parâmetrope a definição o modifica usando awigglymacro antes dele, que retorna uma, er, versão irregular do caminho.A segunda tentativa abandona os comandos
cdrawe fornecidos ecfillvolta para adrawarrowmacro MP simplesA 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 pO comprimento de uma ponta de seta simples MP é
ahlengthEntão, o comprimento do caminho que eu quero mexer é
arclength p - 2.4 ahlengthEntão, queremos mexer
subpath (0, arctime a of p) of pondeaestá 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 pmas, 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?
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}