Skip to content

Commit

Permalink
Fixed a severe bug in the implementation of the Larin scheme
Browse files Browse the repository at this point in the history
(Issue #283, thanks to ygtw1)
  • Loading branch information
vsht committed Oct 2, 2024
1 parent e965c08 commit 188d341
Show file tree
Hide file tree
Showing 3 changed files with 186 additions and 187 deletions.
20 changes: 18 additions & 2 deletions FeynCalc/Dirac/DiracTrace.m
Original file line number Diff line number Diff line change
Expand Up @@ -703,8 +703,8 @@ we define it is a function (traceNo5fun) so that the result can be retrieved ver
]/; EvenQ[Length[{x,y}]];



spur5LarinMVV[x__DiracGamma, y:DiracGamma[_[_,dim_],dim_], DiracGamma[5]]:=
(*Implements Eq.10 from 1506.04517 *)
spur5LarinMVVold[x__DiracGamma, y:DiracGamma[_[_,dim_],dim_], DiracGamma[5]]:=
Block[{inds, epsInds, gInds, indPartitions, res, signs},
inds = First/@{x};
epsInds = Subsets[inds, {3}];
Expand All @@ -718,6 +718,22 @@ we define it is a function (traceNo5fun) so that the result can be retrieved ver
fastExpand[res]
]/; EvenQ[Length[{x,y}]] && Length[{x,y}]>=4;

(*Implements Eq.11 from 1506.04517 *)
spur5LarinMVV[x__DiracGamma, y : DiracGamma[_[_, dim_], dim_], DiracGamma[5]] :=
Block[{inds, epsInds, gInds, indPartitions, res, signs},
inds = First /@ {x, y};
epsInds = Subsets[inds, {4}];
gInds = SelectFree[inds, #] & /@ epsInds;
indPartitions = MapThread[Join[#1, #2] &, {gInds, epsInds}];
signs = Signature /@ (indPartitions /. Thread[Rule[inds, Range[Length[inds]]]]);

res =
Total[MapThread[$LeviCivitaSign*
I*#2*((traceNo5Wrap @@ #1[[;; -5]]))*
Apply[Eps, #1[[-4 ;;]]] &, {indPartitions, signs}]];
fastExpand[res]
] /; EvenQ[Length[{x, y}]] && Length[{x, y}] >= 4;

spur5BMHVWest[x__DiracGamma, DiracGamma[5]]:=
Block[{spx = {x,DiracGamma[5]},spt,res},
res = 2/(Length[spx]-5) Sum[(-1)^(i+j+1) FCUseCache[ExpandScalarProduct,{Pair[spx[[i]][[1]],spx[[j]][[1]]]},{FCI->False}] *
Expand Down
20 changes: 20 additions & 0 deletions FeynCalc/Documentation/Markdown/Extra/Gamma5.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,3 +113,23 @@ FeynCalc implement the so-called Moch-Vermaseren-Vogt MVV formula from [Moch:201
```mathematica
FCSetDiracGammaScheme["Larin"]
```

The usage of this scheme implies that all axial-vector matrices from the Feynman rules $ \gamma^\mu \gamma^5$ should be entered as
\begin{equation}
\gamma^\mu \gamma^5 \to \frac{1}{2} \left ( \gamma^\mu \gamma^5 - \gamma^5 \gamma^\mu \right )
\end{equation}

If the trace contains more than one $\gamma^5$, the code will insert
\begin{equation}
\gamma^\mu \gamma^5 = \frac{i}{6} \, \texttt{\$LeviCivitaSign} \, \varepsilon^{\mu \nu \rho \sigma} \gamma_\nu \gamma_\rho \gamma_\sigma
\end{equation}
for all but the right-most $\gamma^5$. Then the resulting trace will be evaluated according to Eq.(11) from [Moch:2015usa](https://arxiv.org/pdf/1506.04517.pdf)
\begin{equation}
\mathrm{Tr}(\gamma^{\mu_1} \ldots \gamma^{\mu_{2m}} \gamma^5) = 4 i \, \texttt{\$LeviCivitaSign} \, g^{\mu_1 \mu_2} \ldots g^{\mu_{2m-5} \mu_{2m-4}} \varepsilon^{\mu_{2m-3} \mu_{2m-2} \mu_{2m-1} \mu_{2m}} + \textrm{permutations of} \quad \mu_{1} \ldots {\mu_{2m}}
\end{equation}

Notice that according to [Moch:2015usa](https://arxiv.org/pdf/1506.04517.pdf) one should distinguish between Levi-Civita tensors appearing in the calculating from traces over axial-vector matrices and those introduced e.g. via projectors. The "axial-vector" Levi-Civitas should be contracted first to avoid incorrect results.

Since FeynCalc has no way to know the origin of $\varepsilon$-tensors in the input expression, it is advised to rename the unrelated Levi-Civitas to something else while doing the trace calculations and reintroduce them after the traces have been succesfully evaluated.


Loading

0 comments on commit 188d341

Please sign in to comment.