FeynCalc / feyncalc

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

Bug on OneLoop? #11

Closed olcyr closed 7 years ago

olcyr commented 7 years ago

Hi,

I'm performing the following computation with FeynCalc 9.0.1

num=Spinor[ps].DiracMatrix[mu].DiracSlash[k].PR.Spinor[pb].Spinor[
  p1].DiracSlash[k].DiracMatrix[mu].PL.Spinor[p2]

num*FeynAmpDenominator[PropagatorDenominator[k, mt], 
 PropagatorDenominator[k, 0], PropagatorDenominator[k, mHp], 
 PropagatorDenominator[k, mW]]

Simplify[OneLoop[k, %] /. D -> 4]

For some strange reason, Feyncalc changes the order of the spinors from (s)(b)(1)(2) to (s)(1)(b)(2) -- which is not manifestly Lorentz invariant. How can I prevent this type of behavior?

Many thanks in advance. O.

vsht commented 7 years ago

Hi,

first of all, what are PR and PL? Are they the standard chiral projectors? Then you should use GA[6] and GA[7]. If you want to leave them arbitrary, they should be declared as non-commutative objects first:

DeclareNonCommutative[PR, PL];

Second, if the calculation is meant to be done entirely in D-dimensions, use the proper input. Third, do not do D->4. Your output contains UV divergent 1-point functions and the 1/Epsilon poles will mix with Epsilon in every factor of D. By setting D to 4 you are loosing finite parts of the result.

num = Spinor[ps].GAD[mu].GSD[k].PR.Spinor[pb] Spinor[p1].GSD[k].GAD[
   mu].PL.Spinor[p2]
num*FAD[{k, mt}, k, {k, mhP}, {k, mW}] // ChangeDimension[#, D] &
res=Simplify[OneLoop[k, %]]

Finally, can you provide your output, where the order of spinors is changed? For me the order remains as in the original expression.

Last but not least: OneLoop is actually more or less a legacy function that I would not recommend using on new projects. In most cases it can be replaced by TID:

DeclareNonCommutative[PR, PL];
exp = Spinor[ps].GAD[mu].GSD[k].PR.Spinor[pb] Spinor[p1].GSD[k].GAD[
      mu].PL.Spinor[p2] FAD[{k, mt}, k, {k, mhP}, {k, mW}] // 
   ChangeDimension[#, D] &;
TID[exp, k] // ToPaVe[#, k] &

which gives a nice and simple result

(I \[Pi]^2 A0[
     mhP^2] Spinor[Momentum[p1, D], 0, 1].GAD[$AL$2595[2]].GAD[
      mu].PL.Spinor[Momentum[p2, D], 0, 1] Spinor[Momentum[ps, D], 0, 
      1].GAD[mu].GAD[$AL$2595[2]].PR.Spinor[Momentum[pb, D], 0, 
      1])/(D (mhP - mt) (mhP + mt) (mhP - mW) (mhP + 
      mW)) - (I \[Pi]^2 A0[
     mt^2] Spinor[Momentum[p1, D], 0, 1].GAD[$AL$2596[2]].GAD[
      mu].PL.Spinor[Momentum[p2, D], 0, 1] Spinor[Momentum[ps, D], 0, 
      1].GAD[mu].GAD[$AL$2596[2]].PR.Spinor[Momentum[pb, D], 0, 
      1])/(D (mhP - mt) (mhP + mt) (mt - mW) (mt + 
      mW)) - (I \[Pi]^2 A0[
     mW^2] Spinor[Momentum[p1, D], 0, 1].GAD[$AL$2597[2]].GAD[
      mu].PL.Spinor[Momentum[p2, D], 0, 1] Spinor[Momentum[ps, D], 0, 
      1].GAD[mu].GAD[$AL$2597[2]].PR.Spinor[Momentum[pb, D], 0, 
      1])/(D (mhP - mW) (mhP + mW) (-mt + mW) (mt + mW))

Cheers, Vladyslav

mescia commented 7 years ago

Dear Vladyslav

I am facing the same issue. The issue is about OneLoop (and DiracSimplify). It looks that these functions are trying to Fiertz the operator (psi.Gmu.Gnu.psi)(psi.Gmu.Gnu.psi).

The issue with OneLoop is the following. Starting from the Dirac stracture: Spinor[ps]....Spinor[pb] Spinor[p2]....Spinor[p1] we end up with structures like Spinor[ps]....Spinor[p1] Spinor[pb]....Spinor[p2]

Here it is my test. No issue about ChiralProjector at all.

exp = Spinor[ps].GAD[mu].GSD[k].Spinor[pb] Spinor[p1].GSD[k].GAD[ mu].Spinor[p2] FAD[{k, mt}]; OneLoop[k, exp] // Simplify

Times[Complex[0,-1],Power[D,-1],Power[mt,2],Power[Pi,2],A0[Power[mt,2]],Plus[Times[4,StandardMatrixElement[Times[Dot[Spinor[Momentum[pb],0,1],DiracGamma[7],Spinor[Momentum[p2],0,1]],Dot[Spinor[Momentum[ps],0,1],DiracGamma[6],Spinor[Momentum[p1],0,1]]]]],Times[-2,D,StandardMatrixElement[Times[Dot[Spinor[Momentum[p1],0,1],DiracGamma[6],Spinor[Momentum[p2],0,1]],Dot[Spinor[Momentum[ps],0,1],DiracGamma[6],Spinor[Momentum[pb],0,1]]]]],Times[-2,D,StandardMatrixElement[Times[Dot[Spinor[Momentum[p1],0,1],DiracGamma[7],Spinor[Momentum[p2],0,1]],Dot[Spinor[Momentum[ps],0,1],DiracGamma[6],Spinor[Momentum[pb],0,1]]]]],Times[4,StandardMatrixElement[Times[Dot[Spinor[Momentum[p1],0,1],DiracGamma[6],Spinor[Momentum[p2],0,1]],Dot[Spinor[Momentum[ps],0,1],DiracGamma[7],Spinor[Momentum[pb],0,1]]]]],Times[-2,D,StandardMatrixElement[Times[Dot[Spinor[Momentum[p1],0,1],DiracGamma[6],Spinor[Momentum[p2],0,1]],Dot[Spinor[Momentum[ps],0,1],DiracGamma[7],Spinor[Momentum[pb],0,1]]]]],Times[-2,D,StandardMatrixElement[Times[Dot[Spinor[Momentum[p1],0,1],DiracGamma[7],Spinor[Momentum[p2],0,1]],Dot[Spinor[Momentum[ps],0,1],DiracGamma[7],Spinor[Momentum[pb],0,1]]]]],StandardMatrixElement[Times[Dot[Spinor[Momentum[p1],0,1],DiracGamma[LorentzIndex[$MU[1]]],DiracGamma[LorentzIndex[$MU[2]]],DiracGamma[6],Spinor[Momentum[p2],0,1]],Dot[Spinor[Momentum[ps],0,1],DiracGamma[LorentzIndex[$MU[1]]],DiracGamma[LorentzIndex[$MU[2]]],DiracGamma[6],Spinor[Momentum[pb],0,1]]]],StandardMatrixElement[Times[Dot[Spinor[Momentum[p1],0,1],DiracGamma[LorentzIndex[$MU[1]]],DiracGamma[LorentzIndex[$MU[2]]],DiracGamma[7],Spinor[Momentum[p2],0,1]],Dot[Spinor[Momentum[ps],0,1],DiracGamma[LorentzIndex[$MU[1]]],DiracGamma[LorentzIndex[$MU[2]]],DiracGamma[7],Spinor[Momentum[pb],0,1]]]]]]

Using TID[exp, k] // ToPaVe[#, k] &
I get the operator

(1/D)I mt^2 [Pi]^2 A0[ mt^2] Spinor[Momentum[p1, D], 0, 1].DiracGamma[ LorentzIndex[$AL$6757[2], D], D].DiracGamma[LorentzIndex[mu, D], D].Spinor[Momentum[p2, D], 0, 1] Spinor[Momentum[ps, D], 0, 1].DiracGamma[LorentzIndex[mu, D], D].DiracGamma[ LorentzIndex[$AL$6757[2], D], D].Spinor[Momentum[pb, D], 0, 1]

thanks in advance. Federico.

vsht commented 7 years ago

Hi Federico,

could you please tell me, what FeynCalc version you are using? With 9.1 (latest stable) for

exp = Spinor[ps].GAD[mu].GSD[k].Spinor[pb] Spinor[p1].GSD[k].GAD[
     mu].Spinor[p2] FAD[{k, mt}];
res = OneLoop[k, exp] // FCCanonicalizeDummyIndices // Simplify;
res // FCE

I get

(1/D)I mt^2 \[Pi]^2 A0[
  mt^2] (2 D StandardMatrixElement[
     Spinor[Momentum[p1], 0, 1].GA[6].Spinor[Momentum[p2], 0, 
        1] Spinor[Momentum[ps], 0, 1].GA[6].Spinor[Momentum[pb], 0, 
        1]] + 2 D StandardMatrixElement[
     Spinor[Momentum[p1], 0, 1].GA[7].Spinor[Momentum[p2], 0, 
        1] Spinor[Momentum[ps], 0, 1].GA[6].Spinor[Momentum[pb], 0, 
        1]] + 2 D StandardMatrixElement[
     Spinor[Momentum[p1], 0, 1].GA[6].Spinor[Momentum[p2], 0, 
        1] Spinor[Momentum[ps], 0, 1].GA[7].Spinor[Momentum[pb], 0, 
        1]] + 2 D StandardMatrixElement[
     Spinor[Momentum[p1], 0, 1].GA[7].Spinor[Momentum[p2], 0, 
        1] Spinor[Momentum[ps], 0, 1].GA[7].Spinor[Momentum[pb], 0, 
        1]] - StandardMatrixElement[
    Spinor[Momentum[p1], 0, 1].GA[FCGV["li691"]].GA[FCGV["li692"]].GA[
       6].Spinor[Momentum[p2], 0, 1] Spinor[Momentum[ps], 0, 1].GA[
       FCGV["li691"]].GA[FCGV["li692"]].GA[6].Spinor[Momentum[pb], 0, 
       1]] - StandardMatrixElement[
    Spinor[Momentum[p1], 0, 1].GA[FCGV["li691"]].GA[FCGV["li692"]].GA[
       7].Spinor[Momentum[p2], 0, 1] Spinor[Momentum[ps], 0, 1].GA[
       FCGV["li691"]].GA[FCGV["li692"]].GA[6].Spinor[Momentum[pb], 0, 
       1]] - StandardMatrixElement[
    Spinor[Momentum[p1], 0, 1].GA[FCGV["li691"]].GA[FCGV["li692"]].GA[
       6].Spinor[Momentum[p2], 0, 1] Spinor[Momentum[ps], 0, 1].GA[
       FCGV["li691"]].GA[FCGV["li692"]].GA[7].Spinor[Momentum[pb], 0, 
       1]] - StandardMatrixElement[
    Spinor[Momentum[p1], 0, 1].GA[FCGV["li691"]].GA[FCGV["li692"]].GA[
       7].Spinor[Momentum[p2], 0, 1] Spinor[Momentum[ps], 0, 1].GA[
       FCGV["li691"]].GA[FCGV["li692"]].GA[7].Spinor[Momentum[pb], 0, 
       1]])

Apart from that, what OneLoop does in your case is not Fierz, it's Sirlin relations https://inspirehep.net/record/165564

Last but not least, you can just use the ReduceGamma option, if that is what you need:

exp = Spinor[ps].GAD[mu].GSD[k].Spinor[pb] Spinor[p1].GSD[k].GAD[
     mu].Spinor[p2] FAD[{k, mt}];
res1 = OneLoop[k, exp, ReduceGamma -> True] /. 
  StandardMatrixElement -> Identity
res2 = TID[exp, k] // ToPaVe[#, k] & // DiracOrder // 
  ChangeDimension[#, 4] &
(res1 - res2) // FCCanonicalizeDummyIndices
mescia commented 7 years ago

Hi

I am using FeynCalc 9.0.1. thanks very much and also for the tricks (like ReduceGamma, FCCanonicalizeDummyIndices).

Please I include my code to solve all kind of ambiguities.

PD. With the age we try to forget things. thanks again and sorry for the confusion.

On 30 August 2016 at 15:02, Vladyslav Shtabovenko notifications@github.com wrote:

Hi Federico,

could you please tell me, what FeynCalc version you are using? With 9.1 (latest stable) for

exp = Spinor[ps].GAD[mu].GSD[k].Spinor[pb] Spinor[p1].GSD[k].GAD[ mu].Spinor[p2] FAD[{k, mt}]; res = OneLoop[k, exp] // FCCanonicalizeDummyIndices // Simplify; res // FCE

I get

(1/D)I mt^2 [Pi]^2 A0[ mt^2](2 D StandardMatrixElement[ Spinor[Momentum[p1], 0, 1].GA[6].Spinor[Momentum[p2], 0, 1] Spinor[Momentum[ps], 0, 1].GA[6].Spinor[Momentum[pb], 0, 1]] + 2 D StandardMatrixElement[ Spinor[Momentum[p1], 0, 1].GA[7].Spinor[Momentum[p2], 0, 1] Spinor[Momentum[ps], 0, 1].GA[6].Spinor[Momentum[pb], 0, 1]] + 2 D StandardMatrixElement[ Spinor[Momentum[p1], 0, 1].GA[6].Spinor[Momentum[p2], 0, 1] Spinor[Momentum[ps], 0, 1].GA[7].Spinor[Momentum[pb], 0, 1]] + 2 D StandardMatrixElement[ Spinor[Momentum[p1], 0, 1].GA[7].Spinor[Momentum[p2], 0, 1] Spinor[Momentum[ps], 0, 1].GA[7].Spinor[Momentum[pb], 0, 1]] - StandardMatrixElement[ Spinor[Momentum[p1], 0, 1].GA[FCGV["li691"]].GA[FCGV["li692"]].GA[ 6].Spinor[Momentum[p2], 0, 1] Spinor[Momentum[ps], 0, 1].GA[ FCGV["li691"]].GA[FCGV["li692"]].GA[6].Spinor[Momentum[pb], 0, 1]] - StandardMatrixElement[ Spinor[Momentum[p1], 0, 1].GA[FCGV["li691"]].GA[FCGV["li692"]].GA[ 7].Spinor[Momentum[p2], 0, 1] Spinor[Momentum[ps], 0, 1].GA[ FCGV["li691"]].GA[FCGV["li692"]].GA[6].Spinor[Momentum[pb], 0, 1]] - StandardMatrixElement[ Spinor[Momentum[p1], 0, 1].GA[FCGV["li691"]].GA[FCGV["li692"]].GA[ 6].Spinor[Momentum[p2], 0, 1] Spinor[Momentum[ps], 0, 1].GA[ FCGV["li691"]].GA[FCGV["li692"]].GA[7].Spinor[Momentum[pb], 0, 1]] - StandardMatrixElement[ Spinor[Momentum[p1], 0, 1].GA[FCGV["li691"]].GA[FCGV["li692"]].GA[ 7].Spinor[Momentum[p2], 0, 1] Spinor[Momentum[ps], 0, 1].GA[ FCGV["li691"]].GA[FCGV["li692"]].GA[7].Spinor[Momentum[pb], 0, 1]])

Apart from that, what OneLoop does in your case is not Fierz, it's Sirlin relations https://inspirehep.net/record/165564

Last but not least, you can just use the ReduceGamma option, if that is what you need:

exp = Spinor[ps].GAD[mu].GSD[k].Spinor[pb] Spinor[p1].GSD[k].GAD[ mu].Spinor[p2] FAD[{k, mt}]; res1 = OneLoop[k, exp, ReduceGamma -> True] /. StandardMatrixElement -> Identity res2 = TID[exp, k] // ToPaVe[#, k] & // DiracOrder // ChangeDimension[#, 4] & (res1 - res2) // FCCanonicalizeDummyIndices

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/FeynCalc/feyncalc/issues/11#issuecomment-243431009, or mute the thread https://github.com/notifications/unsubscribe-auth/AQNCfzBYVsLKJAOK_XcSlLkoL5X9ZcLwks5qlCnzgaJpZM4Jne4u .

Aquest correu electrònic i els annexos poden contenir informació confidencial o protegida legalment i està adreçat exclusivament a la persona o entitat destinatària. Si no sou el destinatari final o la persona encarregada de rebre’l, no esteu autoritzat a llegir-lo, retenir-lo, modificar-lo, distribuir-lo, copiar-lo ni a revelar-ne el contingut. Si heu rebut aquest correu electrònic per error, us preguem que n’informeu al remitent i que elimineu del sistema el missatge i el material annex que pugui contenir. Gràcies per la vostra col·laboració.

Este correo electrónico y sus anexos pueden contener información confidencial o legalmente protegida y está exclusivamente dirigido a la persona o entidad destinataria. Si usted no es el destinatario final o la persona encargada de recibirlo, no está autorizado a leerlo, retenerlo, modificarlo, distribuirlo, copiarlo ni a revelar su contenido. Si ha recibido este mensaje electrónico por error, le rogamos que informe al remitente y elimine del sistema el mensaje y el material anexo que pueda contener. Gracias por su colaboración.

This email message and any documents attached to it may contain confidential or legally protected material and are intended solely for the use of the individual or organization to whom they are addressed. We remind you that if you are not the intended recipient of this email message or the person responsible for processing it, then you are not authorized to read, save, modify, send, copy or disclose any of its contents. If you have received this email message by mistake, we kindly ask you to inform the sender of this and to eliminate both the message and any attachments it carries from your account. Thank you for your collaboration.

federico


Federico Mescia skype: federico.mescia Dep. de Física Fonamental (FFN) http://www.ffn.ub.es/ and Institut de Ciencies del Cosmos (ICC) http://icc.ub.edu/ Universitat de Barcelona tel +34 9340 21161 Location: Facultat de Fisica i Quimica 4th floor, Dep. de Física Fonamental , room: 4.26 Av. Diagonal 647 - 08028 Barcelona, Spain

olcyr commented 7 years ago

Thanks, Vladyslav and Federico. The problem is solved now!

Cheers, O.

vsht commented 7 years ago

FCCanonicalizeDummyIndices is actually available since FC 9.1. It is one of my favorite functions, especially because one can use it with arbitrary index heads, like in the last line of https://github.com/FeynCalc/feyncalc/blob/master/Tests/Lorentz/FCCanonicalizeDummyIndices.test

BTW, guys, if you are computing 1-loop diagrams, you might be interested in FeynHelpers

https://github.com/FeynCalc/feynhelpers

for the automatic symbolic evaluation of PaVe-functions. Ask Hiren Patel (author of Package-X) to send you the latest beta of Package-X 2.0. The combination FC+FeynHelpers+PaX 2.0 is really a lot of fun to use.

Cheers Vladyslav