See also
Overview.
Notation for light-cone
components
FeynCalc is equipped with special symbols that facilitate
calculations involving light-cone vectors. The default n and nˉ vectors are defined via the global
variables $FCDefaultLightconeVectorN
and
$FCDefaultLightconeVectorNB
. By default those are set to
FCGV["n"]
and FCGV["nb"]
to avoid possible
conflicts with user-defined variables
{$FCDefaultLightconeVectorN, $FCDefaultLightconeVectorNB}
{FCGV(n),FCGV(nb)}
These names can be of course changed. A particularly convenient
choice is to use n
and nb
. Notice that these
commands must be evaluated at the beginning of every FeynCalc
session
$FCDefaultLightconeVectorN = n;
$FCDefaultLightconeVectorNB = nb;
Apart from this you must also explicitly define the values of the
scalar products n2, nˉ2 and n⋅nˉ
FCClearScalarProducts[]
ScalarProduct[n] = 0;
ScalarProduct[nb] = 0;
ScalarProduct[n, nb] = 2;
The Plus, Minus and peRpendicular components of 4-vectors are called
FVLP
, FVLN
and FVLR
respectively.
The plus and minus components are immediately rewritten into forms
involving n and nˉ. The perpendicular component is a
separate entity that cannot be simplified further.
{FVLP[p, \[Mu]], FVLN[p, \[Mu]], FVLR[p, \[Mu]]}
{21nbμ(n⋅p),21nμ(nb⋅p),pμ⊥}
{FVLPD[p, \[Mu]], FVLND[p, \[Mu]], FVLRD[p, \[Mu]]}
{21nbμ(n⋅p),21nμ(nb⋅p),pμ⊥}
It is also possible to specify your own symbols for the light-cone
vectors thus overriding what is set via the global variables
FVLR[p, mu, myN, myNB]
% // FCI // StandardForm
pmu⊥
(*Pair[LightConePerpendicularComponent[LorentzIndex[mu], Momentum[myN], Momentum[myNB]], LightConePerpendicularComponent[Momentum[p], Momentum[myN], Momentum[myNB]]]*)
Internally, the perpendicular component is implemented as an extra
head wrapped around such internal symbols as LorentzIndex
or Momentum
. This head is called
LightConePerpendicularComponent
and has 3 arguments. The
last two arguments specify the light-cone vectors.
?LightConePerpendicularComponent

The pattern introduced for 4-vectors can be also found when working
scalar products, metric tensors or Dirac matrices
{SPLP[p, q], SPLN[p, q], SPLR[p, q]}
{21(n⋅p)(nb⋅q),21(n⋅q)(nb⋅p),p⋅q⊥}
{SPLPD[p, q], SPLND[p, q], SPLRD[p, q]}
{21(n⋅p)(nb⋅q),21(n⋅q)(nb⋅p),p⋅q⊥}
{MTLP[\[Mu], \[Nu]], MTLN[\[Mu], \[Nu]], MTLR[\[Mu], \[Nu]]}
{21nνnbμ,21nμnbν,gˉμν⊥}
{GALP[\[Mu]], GALN[\[Mu]], GALR[\[Mu]]}
{21nbμγˉ⋅n,21nμγˉ⋅nb,γˉμ⊥}
{GSLP[\[Mu]], GSLN[\[Mu]], GSLR[\[Mu]]}
{21γˉ⋅n(nb⋅μ),21(n⋅μ)γˉ⋅nb,γˉ⋅μ⊥}
Contracting the full metric tensor with the perpendicular component
returns the latter
MT[\[Mu], \[Nu]] MTLR[\[Mu], \[Rho]]
% // Contract
gˉμνgˉμρ⊥
gˉνρ⊥
The dimensionality of the perpendicular component is 2 in 4-dimensions and D−2 in D-dimensions
MT[\[Mu], \[Nu]] MTLR[\[Mu], \[Nu]]
% // Contract
gˉμνgˉμν⊥
2
MTD[\[Mu], \[Nu]] MTLRD[\[Mu], \[Nu]]
% // Contract
gμνgμν⊥
D−2
Dirac matrices with
light-cone components
Dirac algebra involving matrices contracted to light-cone momenta or
having particular light-cone components is fully supported. The general
strategy followed by DiracSimplify
is to move all
perpendicular components to the very right of the chain.
ex1 = GALR[p] . GA[\[Mu], \[Nu]]
γˉp⊥.γˉμ.γˉν
−21nμ(γˉ⋅nb).γˉp⊥.γˉν⊥−21nbμ(γˉ⋅n).γˉp⊥.γˉν⊥+21nν(γˉ⋅nb).γˉp⊥.γˉμ⊥+41nνnbμ(γˉ⋅n).(γˉ⋅nb).γˉp⊥+21nbν(γˉ⋅n).γˉp⊥.γˉμ⊥−41nμnbν(γˉ⋅n).(γˉ⋅nb).γˉp⊥+nμnbνγˉp⊥+γˉp⊥.γˉμ⊥.γˉν⊥
ex2 = GALR[p] . GA[\[Mu], \[Nu]] . GALR[p]
γˉp⊥.γˉμ.γˉν.γˉp⊥
−2γˉμ⊥.γˉν⊥+4gˉμν⊥+21nνnbμ(γˉ⋅n).(γˉ⋅nb)−21nμnbν(γˉ⋅n).(γˉ⋅nb)+2nμnbν
Notice that when entering particular light-cone components of Dirac
matrices, the standard trick for entering multiple indices does not
work. This is because the 2nd and 3rd arguments are reserved for
user-specified light-cone vectors
GALR[mu1, myN, myNB]
% // FCI // StandardForm
γˉmu1⊥
(*DiracGamma[LightConePerpendicularComponent[LorentzIndex[mu1], Momentum[myN], Momentum[myNB]]]*)
Instead, you should put your list of indices into curly brackets
GALR[{\[Mu], \[Nu], \[Rho]}]
γˉμ⊥.γˉν⊥.γˉρ⊥
ex3 = GALR[p] . GALR[{\[Mu], \[Nu]}] . GALR[p]
γˉp⊥.γˉμ⊥.γˉν⊥.γˉp⊥
4gˉμν⊥−2γˉμ⊥.γˉν⊥
ex4 = DiracTrace[GA[\[Rho], \[Sigma]] . GALR[{\[Mu], \[Nu]}]]
tr(γˉρ.γˉσ.γˉμ⊥.γˉν⊥)
4gˉμσ⊥gˉνρ⊥−4gˉμρ⊥gˉνσ⊥+4gˉρσgˉμν⊥
ex5 = DiracTrace[GA[\[Rho], \[Sigma]] . GA[5] . GALR[{\[Mu], \[Nu]}]]
tr(γˉρ.γˉσ.γˉ5.γˉμ⊥.γˉν⊥)
2inρϵˉμ⊥ν⊥σ⊥nb+2inbρϵˉμ⊥ν⊥σ⊥n−2inσϵˉμ⊥ν⊥ρ⊥nb−inσnbρϵˉμ⊥ν⊥nnb−2inbσϵˉμ⊥ν⊥ρ⊥n+inρnbσϵˉμ⊥ν⊥nnb−4iϵˉμ⊥ν⊥ρ⊥σ⊥
In order to handle Dirac matrices involving light-cone components
effectively, one needs to define some ordering. The current (hard-coded)
choice is that the perpendicular component always get anticommuted to
the very right of each Dirac chain, while every remaining occurence of
(γ⋅nˉ)(γ⋅n)
is changed to (γ⋅n)(γ⋅nˉ).
Introducing
light-cone components by hand
In some calculations one might end up with a mixture of explicit
light-cone components and generic Lorentz tensors. If those tensors
admit a particularly simple representation in terms of light-cone
components, it can be enforced using the function
ToLightConeComponents
For example, the following expression cannot be simplified any
further
(γˉ⋅nb).(γˉ⋅vp)
Now let us suppose that (v′)μ can be actually written as
αnμ+nˉμ/(4α). We can implement this as follows
SP[vp, nb] = 2*alpha;
SP[vp, n] = 2*1/(4 alpha);
LightConePerpendicularComponent[Momentum[vp], Momentum[n], Momentum[nb]] = 0;
FV[vp, mu]
% // ToLightConeComponents
vpmu
alphanmu+4alphanbmu
However, this will not make FeynCalc automatically simplify the Dirac
chain
(γˉ⋅nb).(γˉ⋅vp)
Using ToLightConeComponents
we can explicitly rewrite
vp
in the chain in terms of the light-cone components and
hence enforce the desired simplification. In fact, the function will
also automatically simplify some common expressions such γ⋅nˉγ⋅nˉ=γ⋅nγ⋅n=0
ex6 // ToLightConeComponents
% // DiracSimplify
alpha(γˉ⋅nb).(γˉ⋅n)
4alpha−alpha(γˉ⋅n).(γˉ⋅nb)
Such simplifications inside ToLightConeComponents
can be
disabled using the option DotSimplify
ex6 // ToLightConeComponents[#, DotSimplify -> False] &
% // DiracSimplify
(γˉ⋅nb).(alphaγˉ⋅n+4alphaγˉ⋅nb)
4alpha−alpha(γˉ⋅n).(γˉ⋅nb)
Reductions
of loop integrals with numerators involving light-cone components
int = FVLRD[p, \[Mu]] SFAD[p, p - q]
(p2+iη).((p−q)2+iη)pμ⊥
2(p2+iη).((p−q)2+iη)qμ⊥
Differentiations
FourDivergence
cannot yet differentiate w.r.t light-cone
components directly. However, the same effect can be easily achieved by
first differentiating w.r.t the usual 4-momentum and then contracting
the free index with the corresponding metric tensor
ex = FV[p1, \[Mu]]/SP[p1]
p12p1μ
Differentiating w.r.t p1,+, p1,− or p1,⊥
MTLN[\[Nu], \[Rho]] FourDivergence[ex, FV[p1, \[Rho]]] // Contract
2p12nνnbμ−p14nνp1μ(nb⋅p1)
MTLP[\[Nu], \[Rho]] FourDivergence[ex, FV[p1, \[Rho]]] // Contract
2p12nμnbν−p14nbνp1μ(n⋅p1)
MTLR[\[Nu], \[Rho]] FourDivergence[ex, FV[p1, \[Rho]]] // Contract
p12gˉμν⊥−p142p1μp1ν⊥