-
Notifications
You must be signed in to change notification settings - Fork 91
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added new function FCLoopReplaceQuadraticEikonalPropagators for
rewriting mixed quadratic-eikonal propagators in terms purely quadratic ones.
- Loading branch information
Showing
4 changed files
with
328 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
49 changes: 49 additions & 0 deletions
49
FeynCalc/Documentation/Mathematica/LoopIntegrals/FCLoopReplaceQuadraticEikonalPropagators.m
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
(* ::Package:: *) | ||
|
||
(* ::Section:: *) | ||
(*FCLoopReplaceQuadraticEikonalPropagators*) | ||
|
||
|
||
(* ::Text:: *) | ||
(*`FCLoopReplaceQuadraticEikonalPropagators[topologies]` identifies `SFAD`s and `CFAD`s in `topologies` that represent mixed quadratic-eikonal propagators, e.g. $[p^2 - 2 p \cdot q]$. Using the information on loop momenta provided by the user the routine will try to rewrite those denominators by completing the square, e.g. as in $[(p-q)^2 - q^2]$.*) | ||
|
||
|
||
(* ::Text:: *) | ||
(*This procedure is useful because one cannot easily determine the momentum flow from looking at quadratic-eikonal propagators as it is possible in the case of purely quadratic ones.*) | ||
|
||
|
||
(* ::Text:: *) | ||
(*For this to work it is crucial to specify the loop momenta via the `LoopMomenta` option as well as the kinematics (`IntermediateSubstitutions`) and the rules for completing the square (`InitialSubstitutions`) on the purely loop-momentum dependent piece of the propagator (e.g. $p_1^2 - 2 p_1 \cdot p_2 + p_2^2$ goes to $(p_1+p_2)^2$.*) | ||
|
||
|
||
(* ::Text:: *) | ||
(*Internally this routine uses `ToGFAD` and `FromGFAD`.*) | ||
|
||
|
||
(* ::Subsection:: *) | ||
(*See also*) | ||
|
||
|
||
(* ::Text:: *) | ||
(*[Overview](Extra/FeynCalc.md), [FCTopology](FCTopology.md), [GFAD](GFAD.md), [FromGFAD](FromGFAD.md), [ToGFAD](ToGFAD.md).*) | ||
|
||
|
||
(* ::Subsection:: *) | ||
(*Examples*) | ||
|
||
|
||
(DataType[#,FCVariable]=True)&/@\!\(TraditionalForm\`{gkin, meta, u0b}\); | ||
|
||
|
||
topos={FCTopology[preTopoDia1,{SFAD[{{k2,0},{0,1},1}],SFAD[{{k1,0},{0,1},1}], | ||
SFAD[{{k1+k2,0},{0,1},1}],SFAD[{{0,-k1.nb},{0,1},1}],SFAD[{{k2,-(meta*u0b*k2.nb)},{0,1},1}], | ||
SFAD[{{k1+k2,-2*gkin*meta*u0b*(k1+k2).n},{0,1},1}],SFAD[{{k1,-2*gkin*meta*k1.n+meta*u0b*k1.nb}, | ||
{2*gkin*meta^2*u0b,1},1}],SFAD[{{k1,-2*gkin*meta*u0b*k1.n+meta*u0b*k1.nb},{2*gkin*meta^2*u0b^2,1},1}]}, | ||
{k1,k2},{n,nb},{Hold[SPD][n]->0,Hold[SPD][nb]->0,Hold[SPD][n,nb]->2},{}]} | ||
|
||
|
||
FCLoopReplaceQuadraticEikonalPropagators[topos,LoopMomenta->{k1,k2}, | ||
InitialSubstitutions->{ | ||
ExpandScalarProduct[SPD[k1-k2]]->SPD[k1-k2], | ||
ExpandScalarProduct[SPD[k1+k2]]->SPD[k1+k2]}, | ||
IntermediateSubstitutions->{SPD[n]->0,SPD[nb]->0,SPD[n,nb]->0}] |
118 changes: 118 additions & 0 deletions
118
FeynCalc/LoopIntegrals/FCLoopReplaceQuadraticEikonalPropagators.m
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
(* ::Package:: *) | ||
|
||
(* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ *) | ||
|
||
(* :Title: FCLoopReplaceQuadraticEikonalPropagators *) | ||
|
||
(* | ||
This software is covered by the GNU General Public License 3. | ||
Copyright (C) 1990-2024 Rolf Mertig | ||
Copyright (C) 1997-2024 Frederik Orellana | ||
Copyright (C) 2014-2024 Vladyslav Shtabovenko | ||
*) | ||
|
||
(* :Summary: Tries to eliminate quadratic-eikonal propagators by | ||
completing the square *) | ||
|
||
(* ------------------------------------------------------------------------ *) | ||
|
||
FCLoopReplaceQuadraticEikonalPropagators::usage = | ||
"FCLoopReplaceQuadraticEikonalPropagators[exp] checks if the integral is free of eikonal | ||
propagators $\\frac{1}{p \\cdot q+x}$. If the option First is set to False, | ||
propagators that have both a quadratic and linear piece, e.g. $\\frac{1}{p^2 + | ||
p \\cdot q+x}$ will also count as eikonal propagators. The option Momentum can | ||
be used to check for the presence of eikonal propagators only with respect to | ||
particular momenta. The check is performed only for | ||
StandardPropagatorDenominator and CartesianPropagatorDenominator."; | ||
|
||
FCLoopReplaceQuadraticEikonalPropagators::failmsg = | ||
"FCLoopReplaceQuadraticEikonalPropagators has encountered a fatal problem and must abort the computation. \ | ||
The problem reads: `1`" | ||
|
||
Begin["`Package`"] | ||
End[] | ||
|
||
Begin["`FCLoopReplaceQuadraticEikonalPropagators`Private`"] | ||
|
||
rqepVerbose::usage=""; | ||
|
||
Options[FCLoopReplaceQuadraticEikonalPropagators] = { | ||
Check -> True, | ||
ExpandScalarProduct -> True, | ||
FCE -> False, | ||
FCI -> False, | ||
FCVerbose -> False, | ||
FeynAmpDenominatorExplicit -> True, | ||
InitialSubstitutions -> {}, | ||
IntermediateSubstitutions -> {}, | ||
LoopMomenta -> {}, | ||
MomentumCombine -> True, | ||
PowerExpand -> {} | ||
}; | ||
|
||
FCLoopReplaceQuadraticEikonalPropagators[topo_FCTopology, opts:OptionsPattern[]]:= | ||
FCLoopReplaceQuadraticEikonalPropagators[{topo}, opts]; | ||
|
||
FCLoopReplaceQuadraticEikonalPropagators[toposRaw:{__FCTopology}, OptionsPattern[]]:= | ||
Block[{ topos, optInitialSubstitutions, optIntermediateSubstitutions, | ||
optPowerExpand, optFeynAmpDenominatorExplicit, optLoopMomenta, | ||
props, propsConverted, repRule}, | ||
|
||
optInitialSubstitutions = OptionValue[InitialSubstitutions]; | ||
optIntermediateSubstitutions = OptionValue[IntermediateSubstitutions]; | ||
|
||
If [OptionValue[FCVerbose]===False, | ||
rqepVerbose=$VeryVerbose, | ||
If[MatchQ[OptionValue[FCVerbose], _Integer], | ||
rqepVerbose=OptionValue[FCVerbose] | ||
]; | ||
]; | ||
|
||
FCPrint[1, "FCLoopReplaceQuadraticEikonalPropagators: Entering.", FCDoControl->rqepVerbose]; | ||
FCPrint[3, "FCLoopReplaceQuadraticEikonalPropagators: Entering with: ", {toposRaw}, FCDoControl->rqepVerbose]; | ||
|
||
{optInitialSubstitutions,optIntermediateSubstitutions} = FRH[{optInitialSubstitutions,optIntermediateSubstitutions}]; | ||
|
||
If[ !OptionValue[FCI], | ||
{topos, optInitialSubstitutions, optIntermediateSubstitutions} = | ||
FCI[{toposRaw,optInitialSubstitutions, optIntermediateSubstitutions}], | ||
topos = toposRaw | ||
]; | ||
|
||
props = Union[Cases[topos, FeynAmpDenominator[(StandardPropagatorDenominator|CartesianPropagatorDenominator)[a_ /; a =!= 0, b_ /; b =!= 0, ___]], Infinity]]; | ||
|
||
If[props==={}, | ||
FCPrint[1, "FCLoopReplaceQuadraticEikonalPropagators: Nothing to do.", FCDoControl->rqepVerbose]; | ||
Return[topos] | ||
]; | ||
|
||
propsConverted = ToGFAD[props,FCI->True,FinalSubstitutions->optIntermediateSubstitutions]; | ||
|
||
FCPrint[3, "FCLoopReplaceQuadraticEikonalPropagators: After ToGFAD: ", propsConverted, FCDoControl->rqepVerbose]; | ||
|
||
propsConverted = FromGFAD[propsConverted,FCI->True, | ||
InitialSubstitutions->optInitialSubstitutions, | ||
IntermediateSubstitutions->optIntermediateSubstitutions, | ||
PowerExpand->OptionValue[PowerExpand], | ||
FeynAmpDenominatorExplicit->OptionValue[FeynAmpDenominatorExplicit], | ||
ExpandScalarProduct->OptionValue[ExpandScalarProduct], | ||
LoopMomenta->OptionValue[LoopMomenta], | ||
MomentumCombine->OptionValue[MomentumCombine], | ||
Check->OptionValue[Check]]; | ||
|
||
repRule = Thread[Rule[props,propsConverted]]; | ||
|
||
FCPrint[3, "FCLoopReplaceQuadraticEikonalPropagators: Replacement rule: ", repRule, FCDoControl->rqepVerbose]; | ||
|
||
topos = topos /. Dispatch[repRule]; | ||
|
||
FCPrint[1, "FCLoopReplaceQuadraticEikonalPropagators: Leaving.", FCDoControl->rqepVerbose]; | ||
FCPrint[3, "FCLoopReplaceQuadraticEikonalPropagators: Leaving with: ", topos, FCDoControl->rqepVerbose]; | ||
|
||
topos | ||
|
||
|
||
] | ||
|
||
FCPrint[1,"FCLoopReplaceQuadraticEikonalPropagators.m loaded."]; | ||
End[] |
160 changes: 160 additions & 0 deletions
160
Tests/LoopIntegrals/FCLoopReplaceQuadraticEikonalPropagators.test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
|
||
|
||
(* :Title: FCLoopReplaceQuadraticEikonalPropagators.test *) | ||
|
||
(* | ||
This software is covered by the GNU General Public License 3. | ||
Copyright (C) 1990-2024 Rolf Mertig | ||
Copyright (C) 1997-2024 Frederik Orellana | ||
Copyright (C) 2014-2024 Vladyslav Shtabovenko | ||
*) | ||
|
||
(* :Summary: Framework independent unit tests for FCLoopReplaceQuadraticEikonalPropagators *) | ||
|
||
(* ------------------------------------------------------------------------ *) | ||
|
||
Tests`LoopIntegrals`FCLoopReplaceQuadraticEikonalPropagators = | ||
({ | ||
{"fcstFCLoopReplaceQuadraticEikonalPropagators-ID1", | ||
"FCLoopReplaceQuadraticEikonalPropagators[FCTopology[pfrTopo226, \ | ||
{SFAD[{{k2, 0}, {0, 1}, 1}], SFAD[{{k1, 0}, {0, 1}, 1}], SFAD[{{k1 - \ | ||
(meta*nb*u0b)/2, 0}, {0, 1}, 1}], SFAD[{{k2 + gkin*meta*n*u0b, 0}, \ | ||
{0, 1}, 1}], SFAD[{{k1 - k2 - (meta*nb*u0b)/2, 0}, {0, 1}, 1}], \ | ||
SFAD[{{k1 + (meta*(2*gkin*n - nb)*u0b)/2, 0}, {2*gkin*meta^2*u0b^2, \ | ||
1}, 1}]}, | ||
{k1, k2}, {n, nb}, {Hold[SPD][n] -> 0, Hold[SPD][nb] -> 0, \ | ||
Hold[SPD][n, nb] -> 2}, {}]]", | ||
"{FCTopology[ | ||
pfrTopo226, {FeynAmpDenominator[ | ||
StandardPropagatorDenominator[Momentum[k2, D], 0, 0, {1, 1}]], | ||
FeynAmpDenominator[ | ||
StandardPropagatorDenominator[Momentum[k1, D], 0, 0, {1, 1}]], | ||
FeynAmpDenominator[ | ||
StandardPropagatorDenominator[ | ||
Momentum[k1, D] - Momentum[meta*nb*u0b, D]/2, 0, 0, {1, 1}]], | ||
FeynAmpDenominator[ | ||
StandardPropagatorDenominator[ | ||
Momentum[k2, D] + Momentum[gkin*meta*n*u0b, D], 0, 0, {1, 1}]], | ||
FeynAmpDenominator[ | ||
StandardPropagatorDenominator[ | ||
Momentum[k1, D] - Momentum[k2, D] - Momentum[meta*nb*u0b, D]/2, | ||
0, 0, {1, 1}]], | ||
FeynAmpDenominator[ | ||
StandardPropagatorDenominator[ | ||
Momentum[k1, D] + Momentum[gkin*meta*n*u0b, D] - | ||
Momentum[meta*nb*u0b, D]/2, | ||
0, -2*gkin*meta^2*u0b^2, {1, 1}]]}, {k1, k2}, {n, | ||
nb}, {Hold[SPD][n] -> 0, Hold[SPD][nb] -> 0, | ||
Hold[SPD][n, nb] -> 2}, {}]}"}, | ||
{"fcstFCLoopReplaceQuadraticEikonalPropagators-ID2", | ||
"FCLoopReplaceQuadraticEikonalPropagators[{FCTopology[pfrTopo226, \ | ||
{SFAD[{{k2, 0}, {0, 1}, 1}], SFAD[{{k1, 0}, {0, 1}, 1}], SFAD[{{k1 - \ | ||
(meta*nb*u0b)/2, 0}, {0, 1}, 1}], SFAD[{{k2 + gkin*meta*n*u0b, 0}, \ | ||
{0, 1}, 1}], SFAD[{{k1 - k2 - (meta*nb*u0b)/2, 0}, {0, 1}, 1}], \ | ||
SFAD[{{k1 + (meta*(2*gkin*n - nb)*u0b)/2, 0}, {2*gkin*meta^2*u0b^2, \ | ||
1}, 1}]}, | ||
{k1, k2}, {n, nb}, {Hold[SPD][n] -> 0, Hold[SPD][nb] -> 0, \ | ||
Hold[SPD][n, nb] -> 2}, {}],FCTopology[pfrTopo212, {SFAD[{{k2, 0}, \ | ||
{0, 1}, 1}], SFAD[{{k1, 0}, {0, 1}, 1}], SFAD[{{k2 - (meta*nb*u0b)/2, \ | ||
0}, {0, 1}, 1}], SFAD[{{k1 + gkin*meta*n*u0b, 0}, {0, 1}, 1}], \ | ||
SFAD[{{k1 - k2 + gkin*meta*n*u0b, 0}, {0, 1}, 1}], SFAD[{{k1 + \ | ||
(meta*(2*gkin*n - nb)*u0b)/2, 0}, {2*gkin*meta^2*u0b^2, 1}, 1}]}, | ||
{k1, k2}, {n, nb}, {Hold[SPD][n] -> 0, Hold[SPD][nb] -> 0, \ | ||
Hold[SPD][n, nb] -> 2}, \ | ||
{}]}]\[IndentingNewLine](DataType[#,FCVariable]=True)&/@\!\(\*FormBox[\ | ||
\({gkin, meta, u0b}\), | ||
TraditionalForm]\);FCLoopReplaceQuadraticEikonalPropagators[{\ | ||
FCTopology[preTopoDia1,{SFAD[{{k2,0},{0,1},1}],SFAD[{{k1,0},{0,1},1}],\ | ||
SFAD[{{k1+k2,0},{0,1},1}],SFAD[{{0,-k1.nb},{0,1},1}],SFAD[{{k2,-(meta*\ | ||
u0b*k2.nb)},{0,1},1}],SFAD[{{k1+k2,-2*gkin*meta*u0b*(k1+k2).n},{0,1},\ | ||
1}],SFAD[{{k1,-2*gkin*meta*k1.n+meta*u0b*k1.nb},{2*gkin*meta^2*u0b,1},\ | ||
1}],SFAD[{{k1,-2*gkin*meta*u0b*k1.n+meta*u0b*k1.nb},{2*gkin*meta^2*\ | ||
u0b^2,1},1}]},{k1,k2},{n,nb},{Hold[SPD][n]->0,Hold[SPD][nb]->0,Hold[\ | ||
SPD][n,nb]->2},{}]},\[IndentingNewLine]LoopMomenta->{k1,k2},\ | ||
InitialSubstitutions->{ExpandScalarProduct[SPD[k1-k2]]->SPD[k1-k2], | ||
ExpandScalarProduct[SPD[k1+k2]]->SPD[k1+k2]},\ | ||
IntermediateSubstitutions->{SPD[n]->0,SPD[nb]->0,SPD[n,nb]->0}]", | ||
"{FCTopology[preTopoDia1, \ | ||
{FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k2, D], 0, \ | ||
0, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1, D], 0, \ | ||
0, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1, D] + \ | ||
Momentum[k2, D], 0, 0, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[0, \ | ||
-Pair[Momentum[k1, D], Momentum[nb, D]], 0, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k2, D] - \ | ||
(meta*u0b*Momentum[nb, D])/2, 0, 0, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1 + k2, D] \ | ||
- gkin*meta*u0b*Momentum[n, D], 0, 0, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1, D] - \ | ||
(meta*Momentum[2*gkin*n - nb*u0b, D])/2, 0, -2*gkin*meta^2*u0b, {1, \ | ||
1}]], FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1, \ | ||
D] - (meta*u0b*Momentum[2*gkin*n - nb, D])/2, 0, \ | ||
-2*gkin*meta^2*u0b^2, {1, 1}]]}, {k1, k2}, {n, nb}, {Hold[SPD][n] -> \ | ||
0, Hold[SPD][nb] -> 0, Hold[SPD][n, nb] -> 2}, {}]}"}, | ||
{"fcstFCLoopReplaceQuadraticEikonalPropagators-ID3", | ||
"FCLoopReplaceQuadraticEikonalPropagators[{FCTopology[preTopoDia2,{\ | ||
SFAD[{{k2,0},{0,1},1}],SFAD[{{k1,0},{0,1},1}],SFAD[{{0,k2.nb},{2*gkin*\ | ||
meta,1},1}],SFAD[{{0,(k1+k2).nb},{2*gkin*meta,1},1}],SFAD[{{k1,-(meta*\ | ||
u0b*k1.nb)},{0,1},1}],SFAD[{{k1,-2*gkin*meta*u0b*k1.n},{0,1},1}],SFAD[\ | ||
{{k1+k2,-2*gkin*meta*(k1+k2).n},{0,1},1}],SFAD[{{k2,-2*gkin*meta*k2.n+\ | ||
2*gkin*meta*u0b*k2.n},{0,1},1}]},{k1,k2},{n,nb},{Hold[SPD][n]->0,Hold[\ | ||
SPD][nb]->0,Hold[SPD][n,nb]->2},{}]},\[IndentingNewLine]LoopMomenta->{\ | ||
k1,k2},InitialSubstitutions->{ExpandScalarProduct[SPD[k1-k2]]->SPD[k1-\ | ||
k2], | ||
ExpandScalarProduct[SPD[k1+k2]]->SPD[k1+k2]},\ | ||
IntermediateSubstitutions->{SPD[n]->0,SPD[nb]->0,SPD[n,nb]->0}]", | ||
"{FCTopology[preTopoDia2, \ | ||
{FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k2, D], 0, \ | ||
0, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1, D], 0, \ | ||
0, {1, 1}]], FeynAmpDenominator[StandardPropagatorDenominator[0, \ | ||
Pair[Momentum[k2, D], Momentum[nb, D]], -2*gkin*meta, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[0, Pair[Momentum[k1, \ | ||
D] + Momentum[k2, D], Momentum[nb, D]], -2*gkin*meta, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1, D] - \ | ||
(meta*u0b*Momentum[nb, D])/2, 0, 0, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1, D] - \ | ||
gkin*meta*u0b*Momentum[n, D], 0, 0, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1 + k2, D] \ | ||
- gkin*meta*Momentum[n, D], 0, 0, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k2, D] - \ | ||
gkin*meta*Momentum[n*(1 - u0b), D], 0, 0, {1, 1}]]}, {k1, k2}, {n, \ | ||
nb}, {Hold[SPD][n] -> 0, Hold[SPD][nb] -> 0, Hold[SPD][n, nb] -> 2}, \ | ||
{}]}"}, | ||
{"fcstFCLoopReplaceQuadraticEikonalPropagators-ID4", | ||
"FCLoopReplaceQuadraticEikonalPropagators[{FCTopology[preTopoDia3,{\ | ||
SFAD[{{k2,0},{0,1},1}],SFAD[{{k1,0},{0,1},1}],SFAD[{{0,k2.nb},{2*gkin*\ | ||
meta,1},1}],SFAD[{{0,k1.nb},{2*gkin*meta*u0b,1},1}],SFAD[{{k1,-(meta*\ | ||
u0b*k1.nb)},{0,1},1}],SFAD[{{k1,-2*gkin*meta*u0b*k1.n},{0,1},1}],SFAD[\ | ||
{{k1,2*gkin*meta*k1.n-2*gkin*meta*u0b*k1.n-meta*u0b*k1.nb},{2*gkin*\ | ||
meta^2*u0b-2*gkin*meta^2*u0b^2,1},1}],SFAD[{{k1-k2,2*gkin*meta*k1.n-2*\ | ||
gkin*meta*u0b*k1.n-2*gkin*meta*k2.n+2*gkin*meta*u0b*k2.n+meta*u0b*(-\ | ||
k1+k2).nb},{2*gkin*meta^2*u0b-2*gkin*meta^2*u0b^2,1},1}]},{k1,k2},{n,\ | ||
nb},{Hold[SPD][n]->0,Hold[SPD][nb]->0,Hold[SPD][n,nb]->2},{}]},\ | ||
\[IndentingNewLine]LoopMomenta->{k1,k2},InitialSubstitutions->{\ | ||
ExpandScalarProduct[SPD[k1-k2]]->SPD[k1-k2], | ||
ExpandScalarProduct[SPD[k1+k2]]->SPD[k1+k2]},\ | ||
IntermediateSubstitutions->{SPD[n]->0,SPD[nb]->0,SPD[n,nb]->0}]", | ||
"{FCTopology[preTopoDia3, \ | ||
{FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k2, D], 0, \ | ||
0, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1, D], 0, \ | ||
0, {1, 1}]], FeynAmpDenominator[StandardPropagatorDenominator[0, \ | ||
Pair[Momentum[k2, D], Momentum[nb, D]], -2*gkin*meta, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[0, Pair[Momentum[k1, \ | ||
D], Momentum[nb, D]], -2*gkin*meta*u0b, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1, D] - \ | ||
(meta*u0b*Momentum[nb, D])/2, 0, 0, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1, D] - \ | ||
gkin*meta*u0b*Momentum[n, D], 0, 0, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1, D] + \ | ||
(meta*Momentum[2*gkin*n - 2*gkin*n*u0b - nb*u0b, D])/2, 0, \ | ||
-2*gkin*meta^2*u0b + 2*gkin*meta^2*u0b^2, {1, 1}]], \ | ||
FeynAmpDenominator[StandardPropagatorDenominator[Momentum[k1 - k2, D] \ | ||
+ (meta*Momentum[2*gkin*n - 2*gkin*n*u0b - nb*u0b, D])/2, 0, \ | ||
-2*gkin*meta^2*u0b + 2*gkin*meta^2*u0b^2, {1, 1}]]}, {k1, k2}, {n, \ | ||
nb}, {Hold[SPD][n] -> 0, Hold[SPD][nb] -> 0, Hold[SPD][n, nb] -> 2}, \ | ||
{}]}"} | ||
}) |