Name: Rolf Mertig Date: 08/12/05-09:05:20 PM Z
>Does anyone have a quick answer or a reference to how the >tensor
reduction formulae given by the TIDL function are >derived?
Basically it is just projection.
See page 26 of http://xxx.lanl.gov/pdf/hep-ph/9506451
where it is roughly explained.
The actual program I used (I think) is tdec (it is quite
straightforward tensor decomposition with a small trick to
“fix” the metric tensors (gfix) ):
(I am sure one could do this simpler, but it works).
BTW: It can take ages to try to get a decomposition of
higher order rank or with more external momenta!
$VeryVerbose = 1;
SetOptions[Contract, EpsContract -> False];
cc[a__] := 0 /; OddQ[Count[{a}, 0]];
Clear[gfix];
gfix[ w_Times] := 0 /; OddQ[Count[w,
pe[0,_]]];
gfix[ff_] := ff /; FreeQ[ff, pe[0,_]];
gfix[pe[0,mu_LorentzIndex]
pe[0,nu_LorentzIndex]] := Pair[mu,nu];
Literal[gfix[pe[0,mu_] f_Times]] :=
Sum[gfix[pe[0,mu] f[[i]]]
gfix[Drop[f,{i,i}]], {i, Length[f]}];
(* li = {{q1,mu}, {q2,nu}, …} pli = {p1,p2, …} *)
Clear[tdec];
Options[tdec] = {Dimension -> D};
tdec[li_List, pli_List, opt___Rule] := Block[
{tt, dim, pe, proj, proli, ccli},
dim = Dimension /. {opt} /. Options[tdec];
SetOptions[FourVector, Dimension -> dim];
pe[j_ /; j>0, muu_] :=
Pair[Momentum[pli[[j]], dim],muu];
tt =
Product[FeynCalcInternal[FourVector@@li[[i]]],
{i,Length[li]}
] ==
(Sum @@ Join[
{gfixx[ Product[pe[j[ij],
LorentzIndex[li[[ij,2]], dim]],
{ij,Length[li]}]] *
Apply[cc, Array[j, Length[li]]]
}, Array[{j[#],0,Length[pli]}&,
Length[li]]
]
) /. gfixx -> gfix;
(* build in later maybe more symmetries among the cc’s *)
ccli = Cases2[tt, cc];
proj[jj__] := gfix[
Product[pe[{jj}[[ij]],
LorentzIndex[li[[ij,2]], dim]],
{ij,Length[{jj}]}]];
proli = ccli /. cc -> proj;
Print[“contracting”];
eqli = Table[Map[Contract[#
proli[[il]]]&, tt], {il,
Length[proli]}];
solu = Solve3[eqli, Cases2[eqli, cc]];
tt = tt[[2]] /. solu;
qli = Map[First,li];
plq[yy__] := If[FreeQ2[{yy}, qli],
Plus[yy], Collect2[Plus[yy],qli]];
tt = Map[#/.Plus->plq&, tt];
tt];
(*
Example:
q123 = tdec[{{qi,mu}, {qj,nu}, {qk, rho}}, {OPEDelta,p}];
Print[“q123 = “,q123//FCF];
Write2[“q123.s”,qqq == q123];
*)