Photon bez strzałek za pomocą feynmp-auto

Sep 08 2020

Mam ten MWE utworzony za pomocą 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}

Ale foton nie ma strzałek jak na tym obrazku?

Muszę przeczytać dokumentacje: fmfman, fmfsamplesa latex_feynman [CMS Wiki Pages]jednak wszystkie fotony są bez strzałki (lewy lub prawy).

Odpowiedzi

2 Thruston Sep 09 2020 at 15:57

Dodanie wiggly_arrowstylu jest dość łatwe, ale (a) wygląda okropnie, i (b) nie sądzę, aby miało to jakiekolwiek znaczenie w diagramie Feynmana ....

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

Drugie podejście

Wygląda to ładniej, ale nadal martwię się, że to nic „nie znaczy” na diagramie Feynmana.

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

Uwagi

Co tu się dzieje?

  • feynmppakiet zawiera \fmfcmdsekwencję sterowania, który pozwala na wstawianie dowolnych fragmentów kodu MetaPosta do swojej diagramów.

  • Użyłem an \fmfcmddo zdefiniowania kilku nowych makr „stylowych”.

  • Możemy zdefiniować makra „stylowe” za pomocą style_defmakra dostarczonego w feynmppakiecie. style_defdziała podobnie do a, vardefale także konfiguruje niektóre polecenia rysowania i definicje, które pozwalają na użycie nazwy stylu z \fmfsekwencją sterującą.

  • Mój pierwszy nazywał się „wiggly_arrow” i korzystał z dwóch poleceń dostarczonych przez feynmp: cdraworaz cfilldo narysowania ścieżki i umieszczenia grotu strzałki na jej środku. Ścieżka do narysowania jest reprezentowana przez parametr, pa definicja modyfikuje ją za pomocą znajdującego się wigglyprzed nim makra, które zwraca, er, falistą wersję ścieżki.

  • Drugi porzuca próba dostarczony cdrawi cfillpolecenia i opada na prostym MP drawarrowmakro

  • Problem w tym, że staram się, aby strzała ładnie wyglądała. Aby to zrobić, zamierzam tylko nałożyć ruchy na główną część ścieżki, a ostatnie kilka milimetrów staram się pozostawić prosto, aby strzałka wyglądała lepiej.

  • Długość ścieżki pw punktach wynosiarclength p

  • Długość zwykłego grotu strzały MP wynosi ahlength

  • Zatem długość ścieżki, którą chcę się poruszać, wynosi arclength p - 2.4 ahlength

  • Więc chcemy się poruszać, subpath (0, arctime a of p) of pgdzie ajest długość powyżej.

  • i chcemy płynnie łączyć się z normalnym końcem p, więc łączymy wiggly podścieżkę do.. {direction infinity of p} point infinity of p

  • ale w końcu chcemy zatrzymać się trochę na krótko, aby czubek grotu strzały był lepiej widoczny, przecinamy ścieżkę, aby narysować za krawędzią pełnego koła przeskalowanego do 2pkt i przesuniętego do końca p.

  • Zrozumiałeś?

2 staircase27 Nov 11 2020 at 18:08

Za każdym razem, gdy widziałem strzałkę przymocowaną do linii fotonu (lub gluonu), strzałka jest rysowana z przesunięciem, jak pokazano na zielono na twoim przykładzie.

Do mojego doktoratu dodałem kilka stylów strzał do feynmp i umieściłem je poniżej. Istnieją 3 typy strzałek i dwie strony linii, co daje łącznie 6 nowych stylów linii. Style „arrow” i „far_arrow” po prostu rysują grot strzałki, ale odsunięte od oryginalnej linii, styl „line_arrow” rysuje pełną strzałkę z rdzeniem pokrywającym środkową połowę linii, na której jest oparty (od 1/4 do 3/4), ale ponownie przesunięty.

Będziesz chciał użyć albo \ fmffreeze, albo naciągu = 0, ponieważ będą one chciały być narysowane, a także linii fotonu lub gluonu.

Oto kod zawierający przykłady trzech typów (w różnych kolorach, aby było jasne).

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