Load
FeynCalc and the necessary add-ons or other packages
This example uses a custom QCD model created with FeynRules. Please
evaluate the file FeynCalc/Examples/FeynRules/QCD/GenerateModelQCD.m
before running it for the first time.
description = "GhGl - Gh, QCD, only UV divergences, 1-loop" ;
If [ $FrontEnd === Null ,
$FeynCalcStartupMessages = False ;
Print [ description] ;
] ;
If [ $Notebooks === False ,
$FeynCalcStartupMessages = False
] ;
$LoadAddOns = { "FeynArts" } ;
<< FeynCalc`
$FAVerbose = 0 ;
FCCheckVersion[ 9 , 3 , 1 ] ;
FeynCalc 10.0.0 (dev version, 2023-12-20 22:40:59 +01:00, dff3b835). For help, use the online documentation ‾ , check out the wiki ‾ or visit the forum . ‾ \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}.} FeynCalc 10.0.0 (dev version, 2023-12-20 22:40:59 +01:00, dff3b835). For help, use the online documentation , check out the wiki or visit the forum .
Please check our FAQ ‾ for answers to some common FeynCalc questions and have a look at the supplied examples . ‾ \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}.} Please check our FAQ for answers to some common FeynCalc questions and have a look at the supplied examples .
If you use FeynCalc in your research, please evaluate FeynCalcHowToCite[] to learn how to cite this software. \text{If you use FeynCalc in your
research, please evaluate FeynCalcHowToCite[] to learn how to cite this
software.} If you use FeynCalc in your research, please evaluate FeynCalcHowToCite[] to learn how to cite this software.
Please keep in mind that the proper academic attribution of our work is crucial to ensure the future development of this package! \text{Please keep in mind that the proper
academic attribution of our work is crucial to ensure the future
development of this package!} Please keep in mind that the proper academic attribution of our work is crucial to ensure the future development of this package!
FeynArts 3.11 (3 Aug 2020) patched for use with FeynCalc, for documentation see the manual ‾ or visit www . feynarts . de . ‾ \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}.} FeynArts 3.11 (3 Aug 2020) patched for use with FeynCalc, for documentation see the manual or visit www . feynarts . de .
If you use FeynArts in your research, please cite \text{If you use FeynArts in your
research, please cite} If you use FeynArts in your research, please cite
∙ T. Hahn, Comput. Phys. Commun., 140, 418-431, 2001, arXiv:hep-ph/0012260 \text{ $\bullet $ T. Hahn, Comput. Phys.
Commun., 140, 418-431, 2001, arXiv:hep-ph/0012260} ∙ T. Hahn, Comput. Phys. Commun., 140, 418-431, 2001, arXiv:hep-ph/0012260
We keep scaleless B0 functions, since otherwise the UV part would not
come out right.
$KeepLogDivergentScalelessIntegrals = True ;
FAPatch[ PatchModelsOnly -> True ] ;
(*Successfully patched FeynArts.*)
Generate Feynman diagrams
Nicer typesetting
MakeBoxes [ mu, TraditionalForm ] := " \[ Mu]" ;
MakeBoxes [ nu, TraditionalForm ] := " \[ Nu]" ;
MakeBoxes [ rho, TraditionalForm ] := " \[ Rho]" ;
template = insertFields[ createTopologies[ 1 , 1 -> 2 ,
ExcludeTopologies -> { Tadpoles, WFCorrections,
WFCorrectionCTs, SelfEnergies}], { U [ 5 ]} ->
{ V [ 5 ], U [ 5 ]}, InsertionLevel -> { Particles},
Model -> FileNameJoin [{ "QCD" , "QCD" }],
GenericModel -> FileNameJoin [{ "QCD" , "QCD" }]] ;
diags = template /. createTopologies -> CreateTopologies /.
insertFields -> InsertFields;
diagsCT = template /. createTopologies -> CreateCTTopologies /.
insertFields -> InsertFields;
Paint[ diags, ColumnsXRows -> { 2 , 1 }, SheetHeader -> None ,
Numbering -> Simple, ImageSize -> { 512 , 256 }] ;
Paint[ diagsCT, ColumnsXRows -> { 2 , 1 }, SheetHeader -> None ,
Numbering -> Simple, ImageSize -> { 512 , 256 }] ;
Obtain the amplitudes
The 1/(2Pi)^D prefactor is implicit. We keep the full gauge
dependence.
amp1[ 0 ] = FCFAConvert[ CreateFeynAmp[ DiagramExtract[ diags, { 1 , 2 }],
Truncated -> True , GaugeRules -> {}, PreFactor -> 1 ],
IncomingMomenta -> { p1}, OutgoingMomenta -> { p2, p3},
LorentzIndexNames -> { mu, nu, rho}, DropSumOver -> True ,
SUNIndexNames -> { a , b , c }, LoopMomenta -> { l }, UndoChiralSplittings -> True ,
ChangeDimension -> D , List -> False , SMP -> True ,
FinalSubstitutions -> { SMP[ "m_u" ] -> SMP[ "m_q" ]}]
i g s 2 p3 Lor5 f a Glu4 Glu5 f c Glu5 Glu6 ( l − p2 − p3 ) ν ( g s g Lor4 ρ ( p2 − l ) μ f b Glu4 Glu6 + g s g Lor4 μ ( l − p2 ) ρ f b Glu4 Glu6 + g s l Lor4 g μ ρ f b Glu4 Glu6 − g s l μ g Lor4 ρ f b Glu4 Glu6 + g s p2 Lor4 g μ ρ f b Glu4 Glu6 − g s p2 ρ g Lor4 μ f b Glu4 Glu6 ) ( ( 1 − ξ G ) g ν ρ ( p2 − l ) Lor4 ( l − p2 ) Lor5 l 2 . ( l − p2 ) 4 . ( l − p2 − p3 ) 2 − ( 1 − ξ G ) l ν l ρ g Lor4 Lor5 ( l 2 ) 2 . ( l − p2 ) 2 . ( l − p2 − p3 ) 2 + − ( 1 − ξ G ) 2 l ν l ρ ( p2 − l ) Lor4 ( l − p2 ) Lor5 ( l 2 ) 2 . ( l − p2 ) 4 . ( l − p2 − p3 ) 2 + g Lor4 Lor5 g ν ρ l 2 . ( l − p2 ) 2 . ( l − p2 − p3 ) 2 ) − i g s 3 l ν p3 ρ ( p2 − l ) μ f a Glu4 Glu5 f b Glu4 Glu6 f c Glu5 Glu6 ( ( 1 − ξ G ) ( l − p2 − p3 ) ν ( − l + p2 + p3 ) ρ l 2 . ( l − p2 ) 2 . ( l − p2 − p3 ) 4 + g ν ρ l 2 . ( l − p2 ) 2 . ( l − p2 − p3 ) 2 ) i g_s^2 \;\text{p3}^{\text{Lor5}}
f^{a\text{Glu4}\;\text{Glu5}} f^{c\text{Glu5}\;\text{Glu6}}
(l-\text{p2}-\text{p3})^{\nu } \left(g_s g^{\text{Lor4}\rho }
(\text{p2}-l)^{\mu } f^{b\text{Glu4}\;\text{Glu6}}+g_s g^{\text{Lor4}\mu
} (l-\text{p2})^{\rho } f^{b\text{Glu4}\;\text{Glu6}}+g_s
l^{\text{Lor4}} g^{\mu \rho } f^{b\text{Glu4}\;\text{Glu6}}-g_s l^{\mu }
g^{\text{Lor4}\rho } f^{b\text{Glu4}\;\text{Glu6}}+g_s
\;\text{p2}^{\text{Lor4}} g^{\mu \rho }
f^{b\text{Glu4}\;\text{Glu6}}-g_s \;\text{p2}^{\rho } g^{\text{Lor4}\mu
} f^{b\text{Glu4}\;\text{Glu6}}\right) \left(\frac{\left(1-\xi
_{\text{G}}\right) g^{\nu \rho } (\text{p2}-l)^{\text{Lor4}}
(l-\text{p2})^{\text{Lor5}}}{l^2.(l-\text{p2})^4.(l-\text{p2}-\text{p3})^2}-\frac{\left(1-\xi
_{\text{G}}\right) l^{\nu } l^{\rho }
g^{\text{Lor4}\;\text{Lor5}}}{\left(l^2\right)^2.(l-\text{p2})^2.(l-\text{p2}-\text{p3})^2}+-\frac{\left(1-\xi
_{\text{G}}\right){}^2 l^{\nu } l^{\rho } (\text{p2}-l)^{\text{Lor4}}
(l-\text{p2})^{\text{Lor5}}}{\left(l^2\right)^2.(l-\text{p2})^4.(l-\text{p2}-\text{p3})^2}+\frac{g^{\text{Lor4}\;\text{Lor5}}
g^{\nu \rho }}{l^2.(l-\text{p2})^2.(l-\text{p2}-\text{p3})^2}\right)-i
g_s^3 l^{\nu } \;\text{p3}^{\rho } (\text{p2}-l)^{\mu }
f^{a\text{Glu4}\;\text{Glu5}} f^{b\text{Glu4}\;\text{Glu6}}
f^{c\text{Glu5}\;\text{Glu6}} \left(\frac{\left(1-\xi _{\text{G}}\right)
(l-\text{p2}-\text{p3})^{\nu } (-l+\text{p2}+\text{p3})^{\rho
}}{l^2.(l-\text{p2})^2.(l-\text{p2}-\text{p3})^4}+\frac{g^{\nu \rho
}}{l^2.(l-\text{p2})^2.(l-\text{p2}-\text{p3})^2}\right) i g s 2 p3 Lor5 f a Glu4 Glu5 f c Glu5 Glu6 ( l − p2 − p3 ) ν ( g s g Lor4 ρ ( p2 − l ) μ f b Glu4 Glu6 + g s g Lor4 μ ( l − p2 ) ρ f b Glu4 Glu6 + g s l Lor4 g μ ρ f b Glu4 Glu6 − g s l μ g Lor4 ρ f b Glu4 Glu6 + g s p2 Lor4 g μ ρ f b Glu4 Glu6 − g s p2 ρ g Lor4 μ f b Glu4 Glu6 ) ( l 2 . ( l − p2 ) 4 . ( l − p2 − p3 ) 2 ( 1 − ξ G ) g ν ρ ( p2 − l ) Lor4 ( l − p2 ) Lor5 − ( l 2 ) 2 . ( l − p2 ) 2 . ( l − p2 − p3 ) 2 ( 1 − ξ G ) l ν l ρ g Lor4 Lor5 + − ( l 2 ) 2 . ( l − p2 ) 4 . ( l − p2 − p3 ) 2 ( 1 − ξ G ) 2 l ν l ρ ( p2 − l ) Lor4 ( l − p2 ) Lor5 + l 2 . ( l − p2 ) 2 . ( l − p2 − p3 ) 2 g Lor4 Lor5 g ν ρ ) − i g s 3 l ν p3 ρ ( p2 − l ) μ f a Glu4 Glu5 f b Glu4 Glu6 f c Glu5 Glu6 ( l 2 . ( l − p2 ) 2 . ( l − p2 − p3 ) 4 ( 1 − ξ G ) ( l − p2 − p3 ) ν ( − l + p2 + p3 ) ρ + l 2 . ( l − p2 ) 2 . ( l − p2 − p3 ) 2 g ν ρ )
Counter-term
amp2[ 0 ] = FCFAConvert[ CreateFeynAmp[ diagsCT,
Truncated -> True , GaugeRules -> {}, PreFactor -> 1 ],
IncomingMomenta -> { p1}, OutgoingMomenta -> { p2, p3},
LorentzIndexNames -> { mu, nu, rho}, SUNIndexNames -> { a , b , c },
DropSumOver -> True , LoopMomenta -> { l }, UndoChiralSplittings -> True ,
ChangeDimension -> D , List -> False , SMP -> True ,
FinalSubstitutions -> { SMP[ "m_u" ] -> SMP[ "m_q" ],
ZA -> SMP[ "Z_A" ], Zg -> SMP[ "Z_g" ], Zu -> SMP[ "Z_u" ]}]
g s ( − p3 μ ) f a b c ( Z A Z g Z u − 1 ) g_s \left(-\text{p3}^{\mu }\right) f^{abc}
\left(\sqrt{Z_A} Z_g Z_u-1\right) g s ( − p3 μ ) f ab c ( Z A Z g Z u − 1 )
Calculate the amplitudes
Ghost-gluon vertex
AbsoluteTiming [ amp1[ 1 ] = TID[ (FCE[ amp1[ 0 ]] /. { - p2 - p3 -> - p1} ), l ,
UsePaVeBasis -> True , ToPaVe -> True ] ;]
{ 5.11524 , Null } \{5.11524,\text{Null}\} { 5.11524 , Null }
amp1Div[ 0 ] = amp1[ 1 ] // PaVeUVPart[ #, Prefactor -> 1 / (2 Pi )^ D ] &;
amp1Div[ 1 ] = amp1Div[ 0 ] // SUNSimplify[ #, Explicit -> True ] & // ReplaceAll [ #,
SUNTrace[ x__ ] :> SUNTrace[ x , Explicit -> True ]] & //
FCReplaceD[ #, D -> 4 - 2 Epsilon] & // Series [ #, { Epsilon, 0 , 0 }] & //
Normal // FCHideEpsilon // SelectNotFree2[ #, SMP[ "Delta" ]] & // FCE //
Collect2[ #, MTD, Factoring -> Function [ x , MomentumCombine[ Factor [ x ]]]] &
− Δ C A ξ G g s 3 p3 μ f a b c 32 π 2 -\frac{\Delta C_A \xi _{\text{G}} g_s^3
\;\text{p3}^{\mu } f^{abc}}{32 \pi ^2} − 32 π 2 Δ C A ξ G g s 3 p3 μ f ab c
Counter-term
amp2[ 1 ] = amp2[ 0 ] // ReplaceAll [ #, { SMP[ "Z_A" ] -> 1 + alpha SMP[ "d_A" ],
SMP[ "Z_u" ] -> 1 + alpha SMP[ "d_u" ],
SMP[ "Z_g" ] -> 1 + alpha SMP[ "d_g" ]}] & // Series [ #, { alpha, 0 , 1 }] & //
Normal // ReplaceAll [ #, alpha -> 1 ] & // ExpandScalarProduct // FCE //
Collect2[ #, MTD, GaugeXi, Factoring -> Function [ x , MomentumCombine[ Factor [ x ]]]] &
− 1 2 g s p3 μ f a b c ( δ A + 2 δ g + 2 δ u ) -\frac{1}{2} g_s \;\text{p3}^{\mu }
f^{abc} \left(\delta _A+2 \delta _g+2 \delta _u\right) − 2 1 g s p3 μ f ab c ( δ A + 2 δ g + 2 δ u )
Check the cancellation of the UV divergences in the MSbar scheme. The
renormalization constants are obtained from another example calculation,
“Renormalization.m”
renormalizationConstants = {
SMP[ "d_A" ] -> SMP[ "alpha_s" ] / (4 Pi ) SMP[ "Delta" ] (1 / 2 CA (13 / 3 - GaugeXi[ "G" ] ) - 2 / 3 Nf),
SMP[ "d_g" ] -> ((- 11 * CA* SMP[ "alpha_s" ] )/ (24 Pi ) SMP[ "Delta" ] + (Nf* SMP[ "alpha_s" ] )/ (12 * Pi ) SMP[ "Delta" ] ),
SMP[ "d_u" ] -> SMP[ "alpha_s" ] / (4 Pi ) CA SMP[ "Delta" ] (3 - GaugeXi[ "G" ] )/ 4
} /. SMP[ "alpha_s" ] -> SMP[ "g_s" ] ^ 2 / (4 Pi );
uvDiv[ 0 ] = ExpandScalarProduct[ amp1Div[ 1 ] + amp2[ 1 ]] // Simplify
− g s p3 μ f a b c ( Δ C A ξ G g s 2 + 16 π 2 δ A + 32 π 2 δ g + 32 π 2 δ u ) 32 π 2 -\frac{g_s \;\text{p3}^{\mu } f^{abc}
\left(\Delta C_A \xi _{\text{G}} g_s^2+16 \pi ^2 \delta _A+32 \pi ^2
\delta _g+32 \pi ^2 \delta _u\right)}{32 \pi ^2} − 32 π 2 g s p3 μ f ab c ( Δ C A ξ G g s 2 + 16 π 2 δ A + 32 π 2 δ g + 32 π 2 δ u )
uvDiv[ 1 ] = (uvDiv[ 0 ] /. renormalizationConstants) // Simplify
0 0 0
FCCompareResults[ uvDiv[ 1 ], 0 ,
Text -> { " \t The UV divergence of the ghost-gluon vertex at 1-loop is cancelled by the counter-term :" ,
"CORRECT." , "WRONG!" }, Interrupt -> { Hold [ Quit [ 1 ]], Automatic }] ;
\ tThe UV divergence of the ghost-gluon vertex at 1-loop is cancelled by the counter-term : CORRECT. \text{$\backslash $tThe UV divergence of
the ghost-gluon vertex at 1-loop is cancelled by the counter-term :}
\;\text{CORRECT.} \tThe UV divergence of the ghost-gluon vertex at 1-loop is cancelled by the counter-term : CORRECT.
Check the final results
knownResult =
- I (- I SMP[ "g_s" ] FVD[ p3, mu] SUNF[ a , b , c ] ( SMP[ "g_s" ] ^ 2 / (4 Pi )^ 2 CA*
GaugeXi[ "G" ] / 2 SMP[ "Delta" ] ));
FCCompareResults[ amp1Div[ 1 ], knownResult,
Text -> { " \t Compare to Muta, Foundations of QCD, Eq. 2.5.142:" ,
"CORRECT." , "WRONG!" }, Interrupt -> { Hold [ Quit [ 1 ]], Automatic }] ;
Print [ " \t CPU Time used: " , Round [ N [ TimeUsed [], 4 ], 0.001 ], " s." ] ;
\ tCompare to Muta, Foundations of QCD, Eq. 2.5.142: CORRECT. \text{$\backslash $tCompare to Muta,
Foundations of QCD, Eq. 2.5.142:} \;\text{CORRECT.} \tCompare to Muta, Foundations of QCD, Eq. 2.5.142: CORRECT.
\ tCPU Time used: 35.667 s. \text{$\backslash $tCPU Time used:
}35.667\text{ s.} \tCPU Time used: 35.667 s.