Isospin and momenta reduction:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![res = {} ; Do[Clear[subres, subres1, summ, suminds, sub, sums, tmpi, tmpii, tmpsum, name, tmpsub, subsum, tmpres] ; summ = amplFC1[[rep]] /. {i1 -> 6, i3 -> 3} //. {(SumOver[SUNIndex[i_]] * SUNDelta[SUNIndex[j_Integer], SUNIndex[i_]] * rest_) :> (rest /. i -> j), (SumOver[SUNIndex[i_]] * (p : HoldPattern[Plus[(SUNDelta[SUNIndex[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[SUNReduce[SUNReduce[SUNReduce[#]]]]) & /@ (tmpres = WriteOutUMatrices[(* Print["Expanding matrices and momenta"] ; *) 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 -> -p1, -p2 - p3 -> p1} ; If[! FreeQ[subsum, (SU3F | SU3D)[___, _SUNIndex, ___], Infinity], WriteString["stdout", "Still contractions left. Summing explicitly "] ; subsum = (WriteString["stdout", "."] ; SUNReduce[#, Explicit -> True, HoldSums -> False]) & /@ Expand[subsum], subsum] ; Simplify[subsum], Evaluate[sums]] // MomentumExpand // ExpandScalarProduct // Simplify) ; res = Append[res, subres] ;, {rep, 1, Length[amplFC1]}] ;](../HTMLFiles/index_262.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. Further simplification:
![rep = 0 ; res3 = CheckF[(++ rep ; WriteString["stdout", rep, " "] ; exp = Collect[#, {_FeynAmpDenominator}] ; If[Head[exp] === Plus, WriteString["stdout", Length, " ", Length[exp], " "] ; (WriteString["stdout", "."] ; OneLoop[q1, #, Dimension -> D]) & /@ exp, OneLoop[q1, exp, Dimension -> D]]) & /@ Take[ress1, {1, -1}], "KSPires3.2.m"] ;](../HTMLFiles/index_268.gif)
![]()
![]()
Higher order Passarino-Veltman symbols are reduced to B0's
![res4 = CheckF[(Collect[If[FreeQ[#, PaVe, Infinity, Heads -> True], #, PaVeReduce[#]], {(* *) Pi, _DecayConstant, _B0 (* , _CouplingConstant, _Pair, _ParticleMass *)}] & /@ res3) /. D -> Sequence[], "KSPiAmps.2.m"] ;](../HTMLFiles/index_271.gif)
![]()
![]()
Converted by Mathematica (July 10, 2003)