Name: V. Shtabovenko Date: 03/22/18-02:41:19 PM Z
Hi,
DoPolarizationSums and FermionSpinSum can be interchanged freely but
the
results (although numerically identical) may not look the same. This
is
because the traces of Dirac matrices in 4 dimensions are not unique
due
to the Schouten’s identity (just use the search function and look for
“Schouten”, this is a recurring topic on this mailing list).
One explanation is here:
<<0859.html>>
Just a short example:
expr1 = Tr[GA[i1, i2, i3, i4, i5, i6, i7, i8, i9, i10]];
tmp1 = GA[i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] //
Chisholm;
expr2 = Tr[tmp1];
diff = expr1 - expr2 // FCI // Simplify
expr1 was computed using the internal algorithm, expr2 by first
replacing products of 3 Dirac matrices using the known identity
as in
GA[i1, i2, i3] // Chisholm
diff is in fact 0, but owing to Schouten’s identity it is extremely
difficult to prove something like that symbolically.
In your case there is a traces of 12 matrices, so that is out of question.
I’m pretty sure that your test1 and test2 are identical for the same
reason. You should be able to show this numerically by replacing each
scalar product in the difference by its numerical value. However,
the numerical values must be chosen such, that the energy-momentum
conservation is satisfied. Just plugging in some random numbers wouldn’t
do.
Coming back to the diff from the above example with 10 matrices. If
you
don’t believe that it is 0, one can show this by contracting with
p1^i1*…p10^i10 and then decomposing each scalar product into
its components:
vecs = Times @@
Table[FVD[p[i], ToExpression[“i” <>
ToString[i]]], {i, 1, 10}]
diff2 = diff vecs // Contract;
diff3 = diff2 /.
FCI[SP[p[i_], p[j_]]] :>
pComp[i, 0] pComp[j, 0] - pComp[i, 1]
pComp[j, 1] -
pComp[i, 2] pComp[j, 2] - pComp[i, 3]
pComp[j, 3];
diff3 // Expand
This yields 0 as predicted. But don’t do this in real calculations,
the
number of terms explodes so rapidly that even FORM wouldn’t handle it.
A purely numerical check is usually sufficient.
BTW, there is no Schouten’s identity in D-dimensions so the traces
there
are unique, but it still exists in every space with a finite number of
dimensions.
2D: eps^ij p^k + eps^jk p^i + eps^ki p^j = 0
3D: eps^ijk p^l - eps^jkl p^i + eps^kli p^j - eps^lij p^k = 0
and so on.
Cheers,
Vladyslav
Cheers,
Vladyslav
Am 22.03.2018 um 20:28 schrieb Alexandra:
> Hello,
>
> I faced a problem calculating matrix elements at tree level.
> It arises for the amplitudes containing more than 5 Gamma-matrices
between spinors, and more than 2 external vector bosons. The problem is,
that the result of ME calculation depends on the order of applying
functions DoPolarizationSums and FermionSpinSum, and the correct result
is obtained only if FermionSpinSum is used first, and DoPolarizationSums
– after. But for the shorter chains between spinors there is no such
difference.
>
> A model example:
>
> test=(Spinor[Momentum[k1], 0, 1] .
DiracGamma[Momentum[np]] .
> DiracGamma[Momentum[k1 - p2]] .
DiracGamma[LorentzIndex[Lor2]] .
> DiracGamma[Momentum[-k2 + p1]] .
DiracGamma[LorentzIndex[Lor1]] .
> Spinor[Momentum[nm], 0, 1]*
> Spinor[Momentum[nm], 0, 1] .
DiracGamma[Momentum[p1]] .
> DiracGamma[Momentum[k1 + k2 - p2]] .
DiracGamma[Momentum[np]] .
> DiracGamma[Momentum[k1 + k2]] .
> DiracGamma[LorentzIndex[beta]] .
Spinor[Momentum[k1], 0, 1]*
> Pair[LorentzIndex[alpha],
Momentum[nm]])*Pair[LorentzIndex[Lor1],
> Momentum[Polarization[k2, I, Transversality ->
True]]]*
> Pair[LorentzIndex[Lor2],
> Momentum[Polarization[-k1 - k2 + p1 + p2, I,
> Transversality -> True]]]*
> Pair[LorentzIndex[beta],
> Momentum[Polarization[k2, -I, Transversality ->
True]]]*
> Pair[LorentzIndex[alpha],
> Momentum[Polarization[-k1 - k2 + p1 + p2, -I,
> Transversality -> True]]]
>
> If we call
>
> test1 =
> test // FermionSpinSum // ReplaceAll[#, {DiracTrace ->
Tr}] & //
> ExpandScalarProduct //
> DoPolarizationSums[#, -k1 - k2 + p1 + p2, 0] & //
> DoPolarizationSums[#, k2, np] & //
PropagatorDenominatorExplicit //
> Simplify
>
> and
>
> test=test00 // DoPolarizationSums[#, -k1 - k2 + p1 + p2, 0]
& //
> DoPolarizationSums[#, k2, np] & // FermionSpinSum //
> ReplaceAll[#, {DiracTrace -> Tr}] & // ExpandScalarProduct
//
> PropagatorDenominatorExplicit // Simplify
>
> than test1=/=test2, and the correct result is test1.
>
> May you explain what causes this problem, or if it is
programmatically allowed in the FeynCalc to call DoPolarizationSums
before FermionSpinSum?
>