Isospin and momenta reduction:
![]()
![]()
![]()
![]()
![]()
![]()
![Do[name = "loopS" <> ToString[fcelements[[rep]]] ; CheckF[Clear[subres, subres1, summ, suminds, sub, sums, tmpi, tmpii, tmpsum, name, tmpsub, subsum, tmpres] ; summ = amplFC1[[rep]] /. {in1 -> 7, in3 -> 3, in4 -> 3} //. {(SumOver[i_, ___] * SUNDelta[ExplicitSUNIndex[j_Integer], SUNIndex[i_]] * rest_) :> (rest /. i -> j), (SumOver[i_, ___] * (p : HoldPattern[Plus[(SUNDelta[ExplicitSUNIndex[j_Integer], SUNIndex[i_]] * _) ..]]) * rest_) :> (p * rest /. i -> j)} ; Print["Length of expression ", fcelements[[rep]], ": ", Length[summ]] ; subres = (Print["Finding summation indices"] ; suminds = (#[[1]]) & /@ Union[Cases[summ, _SumOver, Infinity]] ; sums = If[suminds === {}, {I1, 1}, Sequence @@ ((({#, If[FreeQ[summ, #], 1, 8]} & /@ suminds)))] ; Print["Sums: ", {sums}] ; tmpi = 0 ; tmpii = 0 ; Print["Summing..."] ; Sum[WriteString["stdout", (#[[1]]) & /@ {sums}] ; subsum = ( (WriteString["stdout", "+"] ; SUNReduce[#, FullReduce -> True]) & /@ (tmpres = WriteOutUMatrices[(* Print["Expanding matrices and momenta"] ; *) (SUNReduce /@ summ) (* /. p1 -> -p3 - p4 *) /. subpar /. udrules // MomentumExpand // ExpandScalarProduct // MomentumCombine (* // Expand *)] (* ; Print["Length of expression: ", Length[tmpres], ". Reducing SU(3) structures and simplifying"] *) ; tmpres) ) /. {p2 + p3 + p4 -> -p1, -p2 - p3 - p4 -> p1} ; If[! FreeQ[subsum, (SU3F | SU3D)[___, _SUNIndex, ___], Infinity], tmpsum = Expand[subsum] ; WriteString["stdout", "Still contractions left. Summing explicitly. Length=", Length[tmpsum]] ; (WriteString["stdout", "."] ; SUNReduce[#, Explicit -> True, HoldSums -> False]) & /@ tmpsum, subsum] (* // Simplify *), Evaluate[sums]] // MomentumExpand // ExpandScalarProduct // MomentumCombine // Simplify), name], {rep, 1, Length[amplFC1]}] ;](../HTMLFiles/index_168.gif)
![]()
................
![]()
![]()
![]()
![]()
![]()
Fixing the unfortunate unability of FeynArts and FeynCalc to cope with two-vertices (the PropagatorDenominator is not absorbed into FeynAmpDenominator):
![]()
The loop integrals are expressed in terms of Passarino-Veltman symbols:
![rep = 0 ; res3 = CheckF[(++ rep ; WriteString["stdout", rep, " "] ; WriteString["stdout", "Head ", h = Head[#], ". Length ", Length[#], ". "] ; If[h === Plus, OneLoop[q1, #, Dimension -> D] & /@ #, Which[FreeQ[#, FeynAmpDenominator, Infinity], #, Head[#] === Plus, OneLoop[q1, #, Dimension -> D] & /@ #, True, #] & /@ #]) & /@ ress1, "KSPiPires3.m"] ;](../HTMLFiles/index_176.gif)
![]()
![]()
Higher order Passarino-Veltman symbols are reduced to B0s
![res4 = CheckF[(Collect[If[FreeQ[#, PaVe, Infinity, Heads -> True], #, PaVeReduce[#]], {_A0, _B0, _DecayConstant, _CouplingConstant, Pi, _Pair, _ParticleMass}] & /@ res3) /. D -> Sequence[], "KSPiPiAmps.m"] ;](../HTMLFiles/index_179.gif)
![]()
![]()
Converted by Mathematica (July 10, 2003)