FeynCalc / feyncalc

Mathematica package for algebraic calculations in elementary particle physics.
https://feyncalc.github.io
GNU General Public License v3.0
316 stars 88 forks source link

Problem with PaVeUVPart[] in some special cases #34

Closed HBelusca closed 6 years ago

HBelusca commented 6 years ago

I am computing UV divergent parts of some amplitudes expressed in terms of Passarino-Veltman 1-loop functions, using the FeynCalc function PaVeUVPart[], and noticed that the returned results did not agree with the ones obtained through FeynCalc/Package-X PaXEvaluate[] or through FormCalc:

In[1]:= $LoadAddOns = {"FeynHelpers"};
In[2]:= << FeynCalc`

In[3]:= myAmp = B0[p12, 0, 0];

In[4]:= Simplify@Normal@Series[Simplify@PaVeUVPart[myAmp] /. {D -> 4 - 2 Epsilon}, {Epsilon, 0, 0}]
Out[4]= 1/Epsilon

In[5]:= Expand@PaXEvaluate[myAmp]
Out[5]= 1/Epsilon + Log[-(Mu^2/(\[Pi] p12))] - Gamma + 2

which is OK, as well as:

In[6]:= myAmp = PaVe[0, 0, {0, p12, p12}, {0, 0, 0}]; (** C00 function **)

In[7]:= Simplify@Normal@Series[Simplify@PaVeUVPart[myAmp] /. {D -> 4 - 2 Epsilon}, {Epsilon, 0, 0}]
Out[7]= 1/(4 Epsilon)

In[8]:= Expand@PaXEvaluate[myAmp]
Out[8]= 1/(4 Epsilon) + 1/4 Log[-Mu^2/(\[Pi] p12)] - Gamma/4 + 1/2

However:

In[6]:= myAmp = C0[0, p12, p12, 0, 0, 0];

In[7]:= Simplify@Normal@Series[Simplify@PaVeUVPart[myAmp] /. {D -> 4 - 2 Epsilon}, {Epsilon, 0, 0}]
Out[7]= 0

In[8]:= Expand@PaXEvaluate[myAmp]
Out[8]= -1/(Epsilon p12) - Log[-(\[Pi] Mu^2)/p12]/p12 + Gamma/p12 + 2 Log[\[Pi]]/p12

is NOT OK (PaX gives the correct result however).

Similar problem also appear for D0 functions, for example with: D0[0, p12, 0, p12, p12, p12, 0, 0, 0, 0] (PaX returns -2/(Epsilon p12^2) for the div-part, while PaVeUVPart[] returns 0).

This problem happens because the massless case of C0 and D0 (and possibly their families Cij, Dijkl etc...) is singular; this can be seen when evaluating these functions by hand using Feynman parametrization: one needs to keep the full D-dimensional dependence for the powers of the Feynman parameters, which, after integration, turn into a product of Gamma functions that depend on D. Then, by expanding over Epsilon = (4-D)/2, one obtains the 1/Epsilon poles as expected.

vsht commented 6 years ago

I'm afraid that I don't quite understand the problem. From the description of the PaVeUvPart:

PaVeUVPart[expr] replaces all occuring Passarino-Veltman functions by their explicit values, where only the UV divergent part is preserved, while possible IR divergences and the finite part are discarded.

The function uses the algorithm from "Sulyok, G., A closed expression for the UV-divergent parts of one-loop tensor integrals in dimensional regularization, Phys. Part. Nuclei Lett. (2017) 14:631, arXiv:hep-ph/0609282"

It is well-known that C0 and D0 functions are manifestly UV-finite (c.f. also Appendix A in arXiv:hep-ph/0509141). This can be seen already from the simple power-counting where we have k^4/k^6 and k^4/k^8 respectively (k being the loop momentum) so that the limit k-> Infinity does not diverge. So the output of PaVeUVPart for C0 and D0 is fully correct.

Now C0 and D0 certainly may (and often do) have IR and collinear divergences. However, PaVeUVPart is not going to tell you anything about those. This is stated in the description of the function in a very obvious way:

while possible IR divergences and the finite part are discarded

If you call Package-X in the mode where UV and IR/collinear divergences are not mixed, then you clearly see that there are no UV divergences appearing in C0:

myAmp = C0[0, p12, p12, 0, 0, 0];
PaXEvaluateUVIRSplit[myAmp]
-(1/(EpsilonIR p12)) + (
 EulerGamma + 2 Log[\[Pi]] - Log[-((\[Pi] ScaleMu^2)/p12)])/p12

Just in case you started with

FAD[p, {p - k, 0, 2}]

and then simplified it to a bubble using IBP reduction, you need to keep in mind that IBP in general mixes UV and IR/collinear divergences: you start from an IR-divergent triangle and end up with UV-divergent bubble. I mentioned this briefly at the end of Section 4.2 in arXiv:1611.06793, but AFAIK this is something well known to the practitioners. Actually, it is not a problem of the method itself, just the of the implementation, were tools like FIRE or LiteRed set all scaleless integrals to zero, including the special 1/k^4 integral.

HBelusca commented 6 years ago

Thank you very much for your explanation and for the references! So I now understand what happened: I was actually seeing the IR divergence that was generated due to the fact the mass parameters were set to zero in the loop integrals.

I thus think we can close this (non-)issue report.

vsht commented 6 years ago

You are welcome. It might be actually interesting to introduce something like IRDivergentQ returning True or False to check whether the given PaVe function contains soft or collinear singularities. This is actually quite easy at 1-loop as we only need to extract the modified Cayley matrix of the integral and check whether it's determinant is zero or not. I will think about this.