[Tex/LaTex] TikZ-Feynman: layers and alignment

feynmantikz-feynmantikz-pgf

I'm trying to draw a gg->ttZ Feynman diagram using the TikZ-Fenyman package, and so far here's what I have:

\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage[compat=1.1.0]{tikz-feynman}

 \begin{document}

 \feynmandiagram[medium, layered layout, vertical=a to c] {
   g1 [particle=\(g\)] -- [gluon] a -- [fermion] b [particle=\(t\)],
   { [same layer] c -- [fermion, edge label=\(t\)] e -- [fermion, edge label=\(t\)] a},
   e -- [photon, edge label=\(Z\)] f,
   g [particle=\(\nu\)] -- [anti fermion] f -- [anti fermion] h [particle=\(\bar{\nu}\)],
   g2 [particle=\(g\)] -- [gluon] c -- [anti fermion] d [particle=\(\bar{t}\)],
 };
\end{document}

giving me this diagram:
ttZ

How can I do the following:

  • have the external neutrinos and tops lined up?
  • have the Z correctly splitting in a pair of neutrinos?
  • (extra) make the diagram a bit more compact by reducing the length of the internal top propagators?

Best Answer

Good to see TikZ-Feynman being put to good use!

So, the main issue here is that the layered layout (unlike most other algorithms) takes into account the order in which vertices are specified. In particular, it has a notion of layers and with:

a -- b

This tells it that a is on the layer above b and is distinct from b -- a. So in your example, you have

g [particle=\(\nu\)] 
  -- f 
  -- h [particle=\(\bar{\nu}\)]

and as a result, the neutrino at g is on the layer above f which itself is a layer above the antineutrino at h, hence why the neutrino is awkwardly sitting at the bottom of the central fermion line.

Now as to make it more compact, you can use sibling distance and layer distance to adjust the separation between vertices on the same layer or across layers respectively.

With all this, two of the three dot-points above are addressed:

\documentclass{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}

 \begin{document}

 \feynmandiagram[layered layout, vertical=a to c, sibling distance=1cm] {
   g1 [particle=\(g\)]
     -- [gluon] a
     -- [fermion] t1 [particle=\(t\)],
  { [same layer]
    c -- [fermion, edge label=\(t\)] b
      -- [fermion, edge label=\(t\)] a},
   b  -- [boson, edge label=\(Z\)] n2,
   n2 -- [anti fermion] n1 [particle=\(\overline \nu\)],
   n2 -- [fermion] n3 [particle=\(\nu\)],
   g2 [particle=\(g\)]
      -- [gluon] c
      -- [anti fermion] t2 [particle=\(\overline t\)],
 };
\end{document}

output

Finally, if you want even finer control on everything, then the algorithm won't be able to meet all your needs and you'll have to adjust things manually. You can see some example of this being done at:

How to draw Feynman diagram for Majorana particles?

Tikz-Feynman: Multiple arrows on one fermion line and alignment (0vββ)