Professional Documents
Culture Documents
Vladyslav Shtabovenko
Physik-Department T30f
Outline
1 Motivation
QFT Automation
FeynCalc
What
Automation of QFT ≈ automatic symbolic or numeric evaluation of
Feynman diagrams
This talks: only symbolics
Why
Feynman diagrams → theoretical predictions for experimental observables:
cross-sections, decay rates etc.
Experiments are becoming more precise → theorists must reduce errors in
their predictions to keep up.
Leading order (LO) in perturbation theory is mostly not enough, need to
go at least to NLO or even higher
Need to evaluate hundreds, thousands or even millions of Feynman
diagrams
Impossible to do by pen and paper!
How
CAS or CAS-like environment: Mathematica,
Reduce, FORM, Sympy, GiNaC etc.
Specific codes running on top of it.
Challenges
Very little development between 2006 and 2014
Bugs
The performance of many functions is not optimal
dDl γν γµ l ν l µ
Z
(2π)D l 2 ((l + p)2 − m 2 )
Naive solution: Ignore the Dirac matrices. Just uncontract loop momenta and simplify the resulting
tensor integrals
In[1]:= GSD[l].GSD[l] FAD[l,{l+p,m}]
1
Out[1]:= (γ · l).(γ · l)
([l 2 ]) ([(l + p)2 − m 2 ])
In[2]:= Uncontract[%%,l]//FCLoopIsolate[#,{l}]&
$AL$2494(1) $AL$2494(2) l $AL$2494(1) l $AL$2494(2)
Out[2]:= γ .γ FCGV(LoopInt)
l 2 . ((l + p)2 − m 2 )
Clever solution: First simplify the Dirac algebra, then reduce the integrals
In[3]:= GSD[l].GSD[l] FAD[l,{l+p,m}];
In[4]:= DiracSimplify [%,l ]
l2
Out[4]:= 2
l . ((l + p)2 − m 2 )
Dirac algebra
The generalization of the Dirac algebra to D dimensions is (almost) straight-forward
[’t Hooft & Veltman, 1972]
{γ̄ µ , γ̄ ν } = 2ḡ µν , ḡ µν ḡµν = 4 → {γ µ , γ ν } = 2g µν , g µν gµν = D
So we can easily simplify the algebra and compute traces in D-dimensions
In[1]:= GAD[µ,ν]
µ µ
Out[1]= γ .γ
In[2]:= %//DiracSimplify
Out[2]= D
In[3]:= GSD[l,l ]
Out[3]= (γ · l).(γ · l)
In[4]:= %//DiracSimplify
2
Out[4]= l
In[5]:= GSD[l].GAD[µ].GSD[l]
µ
Out[5]= (γ · l).γ .(γ · l)
In[6]:= %//DiracSimplify
µ 2 µ
Out[6]= 2l γ · l − l γ
In[7]:= DiracTrace[GAD[µ].GSD[p].GAD[ν].GSD[p]
µ ν
Out[7]= tr γ .(γ · p).γ .(γ · p)
In[8]:= % /. DiracTrace −>Tr
µ ν 2 µν
Out[8]= 4 2p p − p g
In[1]:= SPD[l, p1] FVD[l, µ] FAD[{l, m0}, {l + p1, m1}, {l + p2, m2}]
µ 1
Out[1]= l (l · p1)
([l 2 − m02 ]) ([(l + p1)2 − m12 ]) ([(l + p2)2 − m22 ])
In[2]:= SPC[#,l]
Out[2]=
l µ m02 − m12 lµ
−
2 (l 2 − m02 ) . ((l − p1)2 − m12 ) . ((l − p2)2 − m22 ) 2 (l 2 − m02 ) . ((l − p2)2 − m22 )
lµ p1µ
− +
2 (l 2 − m12 ) . ((l 2 2
− p1 + p2) − m2 ) 2 (l − m1 ) . ((l − p1 + p2)2 − m22 )
2 2
dDl l µl ν
Z
= g µν B00 + pµ pν B11
(2π)D [l 2 − m 2 ][(l + p)2 − m 2 ]
dDl l2
Z
= DB00 + p2 B11
(2π) [l − m ][(l + p)2 − m 2 ]
D 2 2
dDl (l · p)2
Z
= p2 B00 + p4 B11
(2π)D [l 2 − m 2 ][(l + p)2 − m 2 ]
Solving this system we can determine the coefficients B00 and B11 .
µ ν 1
Out[1]= l l
[l 2 − m02 ]
µ 1
Out[3]:= l
([l 2 − m02 ]) ([(l + p1)2 − m12 ])
µ 2 2 2
Out[4]:= p1 B1 p1 , m0 , m1
µ ν ρ 1
Out[1]= l l l
([l 2 − m02 ]) ([(l + p1)2 − m12 ]) ([(l + p2)2 − m22 ])
Out[2]=
µ νρ ν µρ ρ µν 2 2 2 2 2 2 2
p1 g + p1 g + p1 g C001 p1 , −2(p1 · p2) + p1 + p2 , p2 , m0 , m1 , m2
µ νρ ν µρ ρ µν
2 2 2 2 2 2 2
+ p2 g + p2 g + p2 g C002 p1 , −2(p1 · p2) + p1 + p2 , p2 , m0 , m1 , m2
µ ν ρ 2 2 2 2 2 2 2
+p1 p1 p1 C111 p1 , −2(p1 · p2) + p1 + p2 , p2 , m0 , m1 , m2
ν ρ µ µ ρ ν µ ν ρ
+ p1 p1 p2 + p1 p1 p2 + p1 p1 p2
2 2 2 2 2 2 2
×C112 p1 , −2(p1 · p2) + p1 + p2 , p2 , m0 , m1 , m2
ρ µ ν ν µ ρ µ ν ρ
+ p1 p2 p2 + p1 p2 p2 + p1 p2 p2
2 2 2 2 2 2 2
×C122 p1 , −2(p1 · p2) + p1 + p2 , p2 , m0 , m1 , m2
µ ν ρ 2 2 2 2 2 2 2
+p2 p2 p2 C222 p1 , −2(p1 · p2) + p1 + p2 , p2 , m0 , m1 , m2
Partial fractioning
Even after all tensor integrals have been decomposed to scalar ones, partial
fractioning allows us to simplify some of the even further
In[1]:= FAD[{p,m1},{p,m2}]
1
Out[1]=
([p2 − m12 ]) ([p2 − m22 ])
In[2]:= Apart2[%]//Expand
1 1
Out[2]= −
(m12 − m22 ) (p2 − m12 ) (m12 − m22 ) (p2 − m22 )
As long as the kinematics inside the loop integral is general, we can write it in
terms of the 4 Passarino Veltman basis integrals A0, B0, C 0 and D0.
In[1]:= ClearScalarProducts ;
ScalarProduct[p1, p2] = 2 M^2;
ScalarProduct[p1, p1] = M^2;
ScalarProduct[p2, p2] = M^2;
FVD[l, \[Mu]] FAD[{l, m0}, {l + p1, m1}, {l + p2, m2}];
µ 1
Out[1]:= l
([l 2 − m02 ]) ([(l + p1)2 − m12 ]) ([(l + p2)2 − m22 ])
KK(147)
Out[2]:=
6M 4 (l 2 − m02 ) . ((l − p1)2 − m12 ) . ((l − p2)2 − m22 )
KK(141) KK(143)
+ +
6M 4 (l 2 − m12 ) . ((l − p1)2 − m02 ) 6M 4 (l 2 − m02 ) . ((l − p1)2 − m12 )
KK(141) KK(143)
− −
6M 4 (l 2 − m22 ) . ((l − p2)2 − m02 ) 6M 4 (l 2 − m22 ) . ((l − p1 + p2)2 − m12 )
µ 1
Out[1]:= l
([l 2 − m02 ]) ([(l + p1)2 − m12 ]) ([(l + p2)2 − m22 ])
µ 2 2 2
µ µ
2 2 2
Out[2]:= −p2 C1 0, 0, 0, m2 , m0 , m1 + p1 − p2 C2 0, 0, 0, m2 , m0 , m1
ip2µ
+ 2 2
π (l − m02 ) . ((l − p1)2 − m12 ) . ((l − p2)2 − m22 )
µ 2 2
2 µ 2 2 2
Out[3]:= p2
µ µ
−C0 0, 0, 0, m0 , m1 , m2
2 2 2
− p2 C1 0, 0, 0, m2 , m0 , m1
+ p1 − p2 C2 0, 0, 0, m2 , m0 , m1
(iγµ D µ − me )ψ = 0
in 1/me yields g = 2.
However, this is just a tree-level result. Loop corrections induce an
anomalous electric moment with g − 2 6= 0
To extract the value of electron’s g − 2 to O(α) in QED we need to
consider the 1-loop correction to the electron-photon vertex.
p1 p2
µ
We have
1
iMµ = −ieū(p2 ) γ µ (F1 (k 2 ) + F2 (k 2 )) − (p1 + p2 )µ F2 (k 2 ) u(p1 ),
2me
with
g = 2 + 2F2 (0)
In[1]:= $LoadFeynArts=True;
<<FeynCalc‘
$FAVerbose=0;
Next step is to convert the output of FeynArts into input for FeynCalc
after which we set up the kinematics, convert the obtained amplitude into a
D-dimensional one and chop off the polarization vector
In[6]:= ClearScalarProducts ;
In[7]:= ScalarProduct[p1, p1] = ME^2;
In[8]:= ScalarProduct[p2, p2] = ME^2;
In[9]:= ScalarProduct[k, k] = 0;
In[10]:= ScalarProduct[p1, p2] = ME^2;
In[11]:= ampVertex1 = (ampVertex // ChangeDimension[#, D] &)//
ReplaceAll[#, Pair [Momentum[Polarization[___], ___], ___] :> 1] &;
Now we simplify whatever we can simplify and reduce our tensor loop integrals
into scalar ones.
Remember that to extract F2 (0) we need to look only at the piece proportional to
(p1 + p2 )µ . So let us drop the γ µ -piece
The Passarino-Veltman coefficient functions C1 ,C11 and C12 that appear in the
result can be analytically evaluated using other packages (e.g. Package X). Here we
just substitute their values
ie
What we obtained so far is nothing else than (p1 + p2 )µ F2 (0)ū(p2 )u(p1 ).
2me
Dividing by the numerical prefactor and substituting e 2 = 4π 2 α yields
so that
α
F2 (0) =
2π
and
g−2 α
= + O(α2 )
2 2π
which was one of the greatest triumphs of QED in the last century
[Schwinger, 1948]
Physik-Department T30f (TUM) FeynCalc 25 / 27
Motivation
Using FeynCalc in your research
Summary and outlook
General recommendations
Use a version control system (e.g. git, mercurial)
Use a testing framework to prevent regressions (e.g. MUnit for
Mathematica, pyunit for Python, CppUnit for C++)
Summary
FeynCalc is a Mathematica package for algebraic calculations in QFT and
semi-automatic evaluation of Feynman diagrams
After a long period of low-activity the active development has been
restarted 2014
The upcoming FeynCalc 9.0 will include numerous bug fixes but also
performance enhancements and new features
TODOs:
More regression and integration tests (goal: full code coverage)
More worked out examples
Finish the manual
Stable interfaces to other useful software tools for symbolic/numeric
evaluation
Issues with γ 5
{γ 5 , γ µ } = 0
and
tr(γ 5 γ µ γ ν γ ρ γ σ ) 6= 0
Issues with γ 5
Trying to compute a chiral trace in the naive scheme produces an error message:
In[1]:= DiracTrace[GAD[µ,ν,ρ,σ,τ ,κ].GA[5]]
µ ν ρ σ τ κ 5
Out[1]= tr γ .γ .γ .γ .γ .γ .γ̄
In[2]:= % /. DiracTrace −> Tr
{γ 5 , γ µ } = 0,
Tr{γ γ γ γ ρ γ σ } 6= 0
5 µ ν
D Tr(γ 5 γ µ γ ν γ ρ γ σ ) = Tr(γ 5 γ µ γ ν γ ρ γ σ γτ γ τ )
= −2g τ µ Tr(γ 5 γ ν γ ρ γ σ γτ ) + 2g τ ν Tr(γ 5 γ µ γ ρ γ σ γτ )
− 2g τ ρ Tr(γ 5 γ µ γ ν γ σ γτ ) + 2g τ σ Tr(γ 5 γ µ γ ν γ ρ γτ )
− D Tr(γ 5 γ µ γ ν γ ρ γ σ )
= −2 Tr(γ 5 γ ν γ ρ γ σ γ µ ) + 2 Tr(γ 5 γ µ γ ρ γ σ γ ν )
− 2 Tr(γ 5 γ µ γ ν γ σ γ ρ ) + 2 Tr(γ 5 γ µ γ ν γ ρ γ σ )
− D Tr(γ 5 γ µ γ ν γ ρ γ σ )
D Tr(γ 5 γ µ γ ν γ ρ γ σ ) = (8 − D) Tr(γ 5 γ µ γ ν γ ρ γ σ )
or
(4 − D) Tr(γ 5 γ µ γ ν γ ρ γ σ ) = 0.
dim(γ µ ) = d, γ µ = γ̄ µ + γ̂ µ ,
dim(γ̄ µ ) = 4, g µν = ḡ µν + ĝ µν ,
µ
dim(γ̂ ) = d − 4. pµ = p̄µ + p̂µ .
{γ µ , γ ν } = 2g µν ,
{γ̄ µ , γ̄ ν } = {γ µ , γ̄ ν } = 2ḡ µν ,
{γ̂ µ , γ̂ ν } = {γ µ , γ̂ ν } = 2ĝ µν ,
{γ̄ µ , γ̂ ν } = 0
{γ̄ µ , γ 5 } = [γ̂ µ , γ 5 ] = 0,
{γ µ , γ 5 } = {γ̂ µ , γ 5 } = 2γ̂ µ γ 5 = 2γ 5 γ̂ µ .
Larin’s scheme
Schouten’s identity
3D space
dDq
Z
4−D 1
A0 (m0 ) = µ4−D (4π) D
2
2
iπ 2 q − m0
2
Z D
4−D d q 1
B0 (p1 , m0 , m1 ) = µ4−D (4π) 2 D 2 − m 2 )((q + p )2 − m 2 )
iπ 2 (q 0 1 1
C0 (p1 , p2 , m0 , m1 , m2 )
dDq
Z
4−D 1
= µ4−D (4π) 2
D 2 2 2
iπ 2 (q − m0 )((q + p1 ) − m1 )((q + p1 + p2 ) − m2 )
2 2 2
D0 (p1 , p2 , p3, m0 , m1 , m2 , m3 )
dDq
Z
4−D 4−D 1
=µ (4π) 2
iπ
D
2 (q 2 − m02 )((q + p1 )2 − m12 )((q + p1 + p2 )2 − m22 )
1
×
((q + p1 + p2 + p3 )2 − m32 )
Patel, H. H. (2015).
Package-X: A Mathematica package for the analytic calculation of one-loop
integrals.
Schwinger, J. (1948).
On Quantum-Electrodynamics and the Magnetic Moment of the Electron.
Phys. Rev., 73(4), 416–417.
Smirnov, A. V. (2008).
Algorithm FIRE – Feynman Integral REduction.
JHEP, 0810:107,2008.
t’Hooft, G. & Veltman, M. (1979).
Scalar one-loop integrals.
Nuclear Physics B, 153, 365–401.
Wiebusch, M. (2014).
HEPMath: A Mathematica Package for Semi-Automatic Computations in
High Energy Physics.
’t Hooft, G. & Veltman, M. (1972).
Regularization and renormalization of gauge fields.
Nuclear Physics B, 44(1), 189–213.