= "El Ael -> Mu Amu, QED, Born-virtual, 1-loop";
description If[ $FrontEnd === Null,
= False;
$FeynCalcStartupMessages Print[description];
];
If[ $Notebooks === False,
= False
$FeynCalcStartupMessages ];
= {"FeynArts"};
$LoadAddOns
<< FeynCalc`= 0;
$FAVerbose
[9, 3, 1]; FCCheckVersion
\text{FeynCalc }\;\text{10.0.0 (dev version, 2023-12-20 22:40:59 +01:00, dff3b835). For help, use the }\underline{\text{online} \;\text{documentation}}\;\text{, check out the }\underline{\text{wiki}}\;\text{ or visit the }\underline{\text{forum}.}
\text{Please check our }\underline{\text{FAQ}}\;\text{ for answers to some common FeynCalc questions and have a look at the supplied }\underline{\text{examples}.}
\text{If you use FeynCalc in your research, please evaluate FeynCalcHowToCite[] to learn how to cite this software.}
\text{Please keep in mind that the proper academic attribution of our work is crucial to ensure the future development of this package!}
\text{FeynArts }\;\text{3.11 (3 Aug 2020) patched for use with FeynCalc, for documentation see the }\underline{\text{manual}}\;\text{ or visit }\underline{\text{www}.\text{feynarts}.\text{de}.}
\text{If you use FeynArts in your research, please cite}
\text{ $\bullet $ T. Hahn, Comput. Phys. Commun., 140, 418-431, 2001, arXiv:hep-ph/0012260}
Nicer typesetting
MakeBoxes[p1, TraditionalForm] := "\!\(\*SubscriptBox[\(p\), \(1\)]\)";
MakeBoxes[p2, TraditionalForm] := "\!\(\*SubscriptBox[\(p\), \(2\)]\)";
MakeBoxes[k1, TraditionalForm] := "\!\(\*SubscriptBox[\(k\), \(1\)]\)";
MakeBoxes[k2, TraditionalForm] := "\!\(\*SubscriptBox[\(k\), \(2\)]\)";
= InsertFields[CreateTopologies[0, 2 -> 2,
diagsTree -> {Tadpoles, WFCorrections}], {F[2, {1}], -F[2, {1}]} ->
ExcludeTopologies {F[2, {2}], -F[2, {2}]}, InsertionLevel -> {Particles},
-> QEDOnly, ExcludeParticles -> {F[1 | 3 | 4, _], F[2, {3}]}];
Restrictions [diagsTree, ColumnsXRows -> {2, 1}, Numbering -> Simple,
Paint-> None, ImageSize -> {1024, 256}]; SheetHeader
= InsertFields[CreateTopologies[1, 2 -> 2,
diagsLoop -> {Tadpoles, WFCorrections}], {F[2, {1}], -F[2, {1}]} ->
ExcludeTopologies {F[2, {2}], -F[2, {2}]}, InsertionLevel -> {Particles},
-> QEDOnly, ExcludeParticles -> {F[1 | 3 | 4, _], F[2, {3}]}];
Restrictions [DiagramExtract[diagsLoop, 1 .. 5], ColumnsXRows -> {5, 1}, Numbering -> Simple,
Paint-> None, ImageSize -> {1024, 196}]; SheetHeader
= InsertFields[CreateCTTopologies[1, 2 -> 2, ExcludeTopologies -> {Tadpoles, WFCorrectionCTs}],
diagsLoopCT {F[2, {1}], -F[2, {1}]} -> {F[2, {2}], -F[2, {2}]}, InsertionLevel -> {Particles},
-> QEDOnly, ExcludeParticles -> {F[1 | 3 | 4, _], F[2, {3}]}];
Restrictions
[diagsLoopCT, ColumnsXRows -> {3, 1}, Numbering -> Simple,
Paint-> None, ImageSize -> {1024, 196}]; SheetHeader
[0] = FCFAConvert[CreateFeynAmp[diagsLoopCT, Truncated -> False, PreFactor -> 1] //.
ampLoopCT{(h : dZfL1 | dZfR1)[z__] :> dZf1[z], Conjugate[(h : dZfL1 | dZfR1)[z__]] :> dZf1[z], dZZA1 -> 0},
-> {p1, p2}, OutgoingMomenta -> {k1, k2}, LoopMomenta -> {l}, ChangeDimension -> D,
IncomingMomenta -> True, UndoChiralSplittings -> True, SMP -> True,
DropSumOver -> {SMP["m_e"] -> 0, SMP["m_mu"] -> 0}]; FinalSubstitutions
[0] = FCFAConvert[CreateFeynAmp[DiagramExtract[diagsLoop, 1 .. 5],
ampLoop-> False, PreFactor -> 1], IncomingMomenta -> {p1, p2},OutgoingMomenta -> {k1, k2},
Truncated -> {q}, ChangeDimension -> D, DropSumOver -> True, UndoChiralSplittings -> True,
LoopMomenta -> True, FinalSubstitutions -> {SMP["m_e"] -> 0, SMP["m_mu"] -> 0}]; SMP
[0] = FCFAConvert[CreateFeynAmp[diagsTree, Truncated -> False, PreFactor -> 1],
ampTree-> {p1, p2}, OutgoingMomenta -> {k1, k2},
IncomingMomenta -> D, DropSumOver -> True, UndoChiralSplittings -> True,
ChangeDimension -> True, FinalSubstitutions -> {SMP["m_e"] -> 0, SMP["m_mu"] -> 0}]; SMP
[];
FCClearScalarProducts[s, t, u, p1, p2, -k1, -k2, 0, 0, 0, 0]; SetMandelstam
= True; $KeepLogDivergentScalelessIntegrals
[1] =
ampLoop/@ DotSimplify[#, Expanding -> False] & /@ Join[ampLoop[0][[1 ;; 4]], Nf ampLoop[0][[5 ;; 5]]]); (FCTraceFactor
[1] =
ampTree/@ DotSimplify[#, Expanding -> False] & /@ ampTree[0]); (FCTraceFactor
[1] =
ampLoopCT/@ DotSimplify[#, Expanding -> False] & /@ ampLoopCT[0]); (FCTraceFactor
[ex_] := ex // Contract // DiracSimplify // TID[#, q, ToPaVe -> True] & //
evalFuSimple// Contract // ReplaceAll[#, (h : A0 | B0 | C0 | D0)[x__] :>
DiracSimplify [h[x], {s, t, u, 0}]] & //
TrickMandelstam// Collect2[#, {A0, B0, C0, D0},
FeynAmpDenominatorExplicit -> Function[x, Factor2[TrickMandelstam[x, {s, t, u, 0}]]]] &; Factoring
(*about 50 seconds*)
AbsoluteTiming[ampLoop[2] = evalFuSimple /@ ampLoop[1];]
\{34.7495,\text{Null}\}
[2] = (Total[ampTree[1]] // Contract // DiracSimplify) // FeynAmpDenominatorExplicit //
ampTree[#, LorentzIndexNames -> {mu}] & FCCanonicalizeDummyIndices
-\frac{i \;\text{e}^2 \left(\varphi (k_1)\right).\gamma ^{\text{mu}}.\left(\varphi (-k_2)\right) \left(\varphi (-p_2)\right).\gamma ^{\text{mu}}.\left(\varphi (p_1)\right)}{s}
Obtain the Born-virtual interference term
(*about 3 seconds*)
AbsoluteTiming[bornVirtualUnrenormalized[0] =
[Total[ampLoop[2]], Spinor, LorentzIndex, IsolateNames -> KK] *
Collect2[ampTree[2]] //
ComplexConjugate[#, ExtraFactor -> 1/2^2] & // DiracSimplify //
FermionSpinSum// TrickMandelstam[#, {s, t, u, 0}] & // Collect2[#, B0, C0, D0] &;] FRH
\{3.91418,\text{Null}\}
The explicit expressions for the PaVe functions can be obtained e.g. using Package-X / PaXEvaluate
= {
PaVeEvalRules [0, 0, 0] -> -1/(16*EpsilonIR*Pi^4) + 1/(16*EpsilonUV*Pi^4),
B0[s_, 0, 0] :> 1/(16*EpsilonUV*Pi^4) - (-2 + EulerGamma - Log[4*Pi] - Log[-(ScaleMu^2/s)])/
B016*Pi^4),
([0, s_, 0, 0, 0, 0] :> C0[0, 0, s, 0, 0, 0],
C0[0, 0, s_, 0, 0, 0] :> 1/(16*EpsilonIR^2*Pi^4*s) -
C0EulerGamma - Log[4*Pi] - Log[-(ScaleMu^2/s)])/(16*EpsilonIR*Pi^4*s) -
(-6*EulerGamma^2 + Pi^2 + 12*EulerGamma*Log[4*Pi] - 6*Log[4*Pi]^2 +
(12*EulerGamma*Log[-(ScaleMu^2/s)] - 12*Log[4*Pi]*Log[-(ScaleMu^2/s)] -
6*Log[-(ScaleMu^2/s)]^2)/(192*Pi^4*s),
[0, 0, 0, 0, s_, t_, 0, 0, 0, 0] :> 1/(4*EpsilonIR^2*Pi^4*s*t) -
D02*EulerGamma - 2*Log[4*Pi] - Log[-(ScaleMu^2/s)] - Log[-(ScaleMu^2/t)])/
(8*EpsilonIR*Pi^4*s*t) - (-3*EulerGamma^2 + 2*Pi^2 + 6*EulerGamma*Log[4*Pi] -
(3*Log[4*Pi]^2 + 3*EulerGamma*Log[-(ScaleMu^2/s)] - 3*Log[4*Pi]*Log[-(ScaleMu^2/s)] +
3*EulerGamma*Log[-(ScaleMu^2/t)] - 3*Log[4*Pi]*Log[-(ScaleMu^2/t)] -
3*Log[-(ScaleMu^2/s)]*Log[-(ScaleMu^2/t)])/(24*Pi^4*s*t)
};
[1] = bornVirtualUnrenormalized[0] //. PaVeEvalRules; bornVirtualUnrenormalized
Put together the counter-term contribution and the residue pole contribution
= {
MSbarRC ["dZ_psi"] -> - SMP["e"]^2/(16 Pi^2) 1/EpsilonUV,
SMP["dZ_A"] -> - Nf SMP["e"]^2/(12 Pi^2) 1/EpsilonUV
SMP};
= {
RuleRS -> - 1/2 SMP["dZ_A"],
dZe1 -> SMP["dZ_A"],
dZAA1 | dZf2)[__] -> SMP["dZ_psi"]
(dZf1 };
= 1 + SMP["e"]^2/(4 Pi)*1/(4 Pi) 1/EpsilonIR; legResidueContrib
= (Total[ampLoopCT[1]] /. RuleRS /. MSbarRC) // FeynAmpDenominatorExplicit // Contract //
aux0 // FCCanonicalizeDummyIndices[#, LorentzIndexNames -> {mu}] &; DiracSimplify
= (aux0/ampTree[2]) // Simplify; ctContrib
[0] = (ctContrib + (4*1/2) (legResidueContrib - 1)) ampTree[2] fullCTAndResidue
-\frac{i \;\text{e}^2 \left(\frac{\text{e}^2 \left(2 N_f-3\right)}{24 \pi ^2 \varepsilon _{\text{UV}}}+\frac{\text{e}^2}{8 \pi ^2 \varepsilon _{\text{IR}}}\right) \left(\varphi (k_1)\right).\gamma ^{\text{mu}}.\left(\varphi (-k_2)\right) \left(\varphi (-p_2)\right).\gamma ^{\text{mu}}.\left(\varphi (p_1)\right)}{s}
Now get the interference of the counter term and residue contribution with the Born amplitude
[0] = fullCTAndResidue[0] ComplexConjugate[ampTree[2]] //
bornCTAndResidue[#, ExtraFactor -> 1/2^2] & // DiracSimplify // Simplify //
FermionSpinSum[#, {s, t, u, 0}] & TrickMandelstam
-\frac{\text{e}^6 \left(D s^2-2 t^2-8 t u-2 u^2\right) \left(-2 N_f \varepsilon _{\text{IR}}+3 \varepsilon _{\text{IR}}-3 \varepsilon _{\text{UV}}\right)}{24 \pi ^2 s^2 \varepsilon _{\text{IR}} \varepsilon _{\text{UV}}}
For convenience, let us pull out an overall prefactor to get rid of ScaleMu, EulerGamma and some Pi’s
= FCSplit[bornCTAndResidue[0], {EpsilonUV}] //
aux1 ReplaceAll[#, {EpsilonIR -> 1/SMP["Delta_IR"], EpsilonUV -> 1/SMP["Delta_UV"]}] &;
[1] = (FCReplaceD[1/Exp[EpsilonIR (Log[4 Pi] - EulerGamma)] aux1[[1]], D -> 4 - 2 EpsilonIR] +
bornCTAndResidue[1/Exp[EpsilonUV (Log[4 Pi] - EulerGamma)] aux1[[2]], D -> 4 - 2 EpsilonUV]) //
FCReplaceD// Series[#, {EpsilonUV, 0, 0}] & //
FCShowEpsilon Normal // Series[#, {EpsilonIR, 0, 0}] & // Normal // Collect2[#, EpsilonUV, EpsilonIR] &
\frac{\text{e}^6 \left(2 N_f-3\right) \left(2 s^2-t^2-4 t u-u^2\right)}{12 \pi ^2 s^2 \varepsilon _{\text{UV}}}-\frac{\text{e}^6 N_f}{6 \pi ^2}+\frac{\text{e}^6 \left(2 s^2-t^2-4 t u-u^2\right)}{4 \pi ^2 s^2 \varepsilon _{\text{IR}}}
= FCSplit[bornVirtualUnrenormalized[1], {EpsilonUV}];
aux2 [2] = FCReplaceD[1/ScaleMu^(2 EpsilonIR)*
bornVirtualUnrenormalized1/Exp[EpsilonIR (Log[4 Pi] - EulerGamma)] aux2[[1]],
D -> 4 - 2 EpsilonIR] + FCReplaceD[1/ScaleMu^(2 EpsilonUV)*
1/Exp[EpsilonUV (Log[4 Pi] - EulerGamma)] aux2[[2]], D -> 4 - 2 EpsilonUV] //
[#, EpsilonUV, EpsilonIR] & // Normal // Series[#, {EpsilonUV, 0, 0}] & //
Collect2Normal // Series[#, {EpsilonIR, 0, 0}] & // Normal //
ReplaceAll[#, Log[-ScaleMu^2/(h : s | t | u)] :> 2 Log[ScaleMu] - Log[-h]] & //
[#, {s, t, u, 0}] & // Collect2[#, EpsilonUV, EpsilonIR] &; TrickMandelstam
Finally, we obtain the UV-finite but IR-divergent Born-virtual interference term
[0] = (bornVirtualUnrenormalized[2] + bornCTAndResidue[1]) //
bornVirtualRenormalized[#, {s, t, u, 0}] & // Collect2[#, EpsilonUV, EpsilonIR] & TrickMandelstam
\frac{1}{72 \pi ^2 s^2}\;\text{e}^6 \left(12 t^2 N_f \log (-s)+12 u^2 N_f \log (-s)-20 t^2 N_f-20 u^2 N_f+18 t^2 \log (-s) \log (-u)+36 t^2 \log (-s)-54 t^2 \log (-s) \log (-t)-18 u^2 \log (-s) \log (-t)-72 t u \log (-s)-18 s t \log (-u)+18 s u \log (-t)+36 s t \log (-t)-36 u^2 \log ^2(-s)+54 u^2 \log (-s) \log (-u)-36 s u \log (-u)+9 t^2 \log ^2(-u)+21 \pi ^2 t^2-90 t^2+9 t^2 \log ^2(-t)-9 u^2 \log ^2(-t)+108 t u-15 \pi ^2 u^2-90 u^2-9 u^2 \log ^2(-u)\right)-\frac{\text{e}^6 \left(t^2+u^2\right)}{2 \pi ^2 s^2 \varepsilon _{\text{IR}}^2}+\frac{\text{e}^6 \left(2 t^2 \log (-s)+2 u^2 \log (-s)-2 t^2 \log (-u)-t^2+2 t^2 \log (-t)+2 u^2 \log (-t)+4 t u-u^2-2 u^2 \log (-u)\right)}{4 \pi ^2 s^2 \varepsilon _{\text{IR}}}
We can compare our O(eps^0) result to Eq. 2.22 in arXiv:hep-ph/0010075
ClearAll[LitA, LitATilde, auxBox6, Box6Eval, TriEval];
= PolyLog[4, #1] &;
Li4 = {LitV -> Log[-s/u], LitW -> Log[-t/u], v -> s/u, w -> t/u}; ruleLit
= (
LitA 4*GaugeXi*(1 - 2 Epsilon)*u/s^2 ((2 - 3*Epsilon) u^2 - 6*Epsilon*t*u + 3 (2 - Epsilon) t^2)*Box6[s, t]
- 4 GaugeXi/(1 - 2 Epsilon)*t/s^2*((4 - 12*Epsilon + 7*Epsilon^2) t^2 -
6*Epsilon*(1 - 2*Epsilon)*t*u + (4 - 10*Epsilon + 5*Epsilon^2)*u^2)*Tri[t]
- 8/((1 - 2*Epsilon) (3 - 2*Epsilon))*1/s*(2 Epsilon (1 - Epsilon)*t*((1 - Epsilon)*t - Epsilon*u)*Nf -
3 - 2*Epsilon)*(2 - Epsilon + 2*Epsilon^2)*t*u +
Epsilon (1 - Epsilon) (3 - 2*Epsilon) (2 - (1 - GaugeXi)*Epsilon + 2 Epsilon^2) t^2)*Tri[s]); (
= (1/2 ((LitV - LitW)^2 + Pi^2) + 2*Epsilon*(Li3[-v] - LitV Li2[-v] - 1/3 LitV^3 - Pi^2/2 LitV)
auxBox6 - 2 Epsilon^2 (Li4[-v] + LitW Li3[-v] - 1/2 LitV^2 Li2[-v] - 1/8 LitV^4 -
1/6 LitV^3 LitW + 1/4*LitV^2*LitW^2 - Pi^2/4 LitV^2 - Pi^2/3 LitV LitW - 2 Zeta4));
[s, t] = u^(-1 - Epsilon)/(2 (1 - 2*Epsilon)) (1 - Pi^2/12 Epsilon^2) (
Box6Eval+ (auxBox6 /. {LitW -> LitV, LitV -> LitW, v -> w, w -> v}));
auxBox6
[s, u] = Box6Eval[s, t] /. ruleLit /. {t -> u, u -> t};
Box6Eval
[s_] := -(-s)^(-1 - Epsilon)/Epsilon^2 (1 - Pi^2/12 Epsilon^2 -
TriEval7/3 Zeta[3] Epsilon^3 - 47/16 Zeta4 Epsilon^4)
= (( 2/3 Nf/Epsilon*8 ((t^2 + u^2)/s^2 - Epsilon)
knownResult
+ ((LitA /. {Tri -> TriEval, Box6 -> Box6Eval} /. ruleLit) +
/. {Tri -> TriEval, Box6 -> Box6Eval} /.
(LitA {GaugeXi -> -GaugeXi} /. ruleLit /. {t -> u, u -> t})) /. GaugeXi -> 1));
knownResult is the 1-loop result. Notice that is also an implicit overall prefactor prefLit from Eq. 2.8
= 32 Pi^2/SMP["e"]^6; prefLit
= Series[knownResult -
diff [0] /. EpsilonIR -> Epsilon), {Epsilon, 0, 0}] // Normal //
prefLit (bornVirtualRenormalized[#, {s, t, u, 0}] & // PowerExpand // SimplifyPolyLog // TrickMandelstam[#, {s, t, u, 0}] & TrickMandelstam
0
```mathematica FCCompareResults[0, diff, Text -> {“to arXiv:hep-ph/0010075:”, “CORRECT.”, “WRONG!”}, Interrupt -> {Hold[Quit[1]], Automatic}]; Print[“Time used:”, Round[N[TimeUsed[], 4], 0.001], ” s.”];
```mathematica
\text{$\backslash $tCompare to arXiv:hep-ph/0010075:} \;\text{CORRECT.}
\text{$\backslash $tCPU Time used: }65.187\text{ s.}