Modification of fermionic propagator in UFO

Asked by Rohan Pramanick on 2020-10-03

Hello,

I am trying to modify the propagator (obtained from FeynRules) in "propagators.py" file generated within the UFO model. I have named it as F2 and used it as the propagator of a specific particle in the "particles.py" file by the command " propagator = prop.F2 ".

The fermionic propagator already defined in the file is as follows

-------------- Fermionic Propagator --------------
F = Propagator(name = "F",
numerator = "(Gamma('mu', 1, 2) * P('mu', id) + Mass(id) * Identity(1, 2))",
denominator = denominator
)

denominator = "P('mu', id) * P('mu', id) - Mass(id) * Mass(id) + complex(0,1) * Mass(id) * Width(id)"
------------------------------------------------------------------

I want to modify the denominator keeping the numerator (\slashed{p} + m) same. The modification of the denominator ( new variable "denominator2") is given below

-------------- Modified Fermionic Propagator --------------
F2 = Propagator(name = "F2",
numerator = "(Gamma('mu', 1, 2) * P('mu', id) + Mass(id) * Identity(1, 2))",
denominator = denominator2
)

denominator2 = "P('mu', id) * P('mu', id) - Mass(id) * Mass(id) + complex(0,1) * (%s)" % factor
------------------------------------------------------------------

where the "factor" variable contains a Heaviside Theta function of the four-momentum p. To implement the theta function, I have used the command "cond" (in "function_library.py" file generated by FeynRules itself)

-------------- "cond" command --------------
cond = Function(name = 'cond',
arguments = ('condition','ExprTrue','ExprFalse'),
expression = '(ExprTrue if condition.real >= 0.0 else ExprFalse)')
------------------------------------------------------------------

The "factor" is given below

-------------- factor --------------
factor = "cond(P('mu', id) * P('mu', id) * P('mu', id) * P('mu', id) + MT*MT*MT*MT + Mps*Mps*Mps*Mps - 2*P('mu', id) * P('mu', id)*MT*MT - 2*P('mu', id) * P('mu', id)*Mps*Mps - 2*Mps*Mps*MT*MT, gstar*gstar/(50.29) * sqrt(P('mu', id) * P('mu', id) * P('mu', id) * P('mu', id) + MT*MT*MT*MT + Mps*Mps*Mps*Mps - 2*P('mu', id) * P('mu', id)*MT*MT - 2*P('mu', id) * P('mu', id)*Mps*Mps - 2*Mps*Mps*MT*MT)* (P('mu', id) * P('mu', id) + MT*MT - Mps*Mps + 2*MX*MT) / (P('mu', id) * P('mu', id)), Mass(id) * Width(id))"
------------------------------------------------------------------

I have tried using 0 if the condition is false and it results in an immensely large unphysical cross-section. So I used the usual "Mass(id) * Width(id)" expression to avoid unphysical cross-sections while calculation. In this case, the condition never gets satisfied (resulting in the False condition) and I get a similar result if I have used the default propagator.

Kindly guide me through the necessary changes to be made in the modified propagator.

Thanks,
Rohan

Question information

Language:
English Edit question
Status:
Solved
For:
Assignee:
No assignee Edit question
Solved by:
Olivier Mattelaer
Solved:
2020-10-07
Last query:
2020-10-07
2020-10-07

This question was reopened

 Olivier Mattelaer (olivier-mattelaer) said on 2020-10-05: #1

Hi,

> Kindly guide me through the necessary changes to be made in the modified propagator.

Looks like you have modified the propagator. So I'm not sure to understand what your question is.

CHeers,

Olivier

 Rohan Pramanick (rohanpramanick25) said on 2020-10-05: #2

Hello Olivier,

I would like to modify the denominator of the fermionic propagator from

"p^2 - m^2 + i * \Gamma*m " to "p^2 - m^2 + i * factor"

where the "factor" contains a heaviside theta function given below

factor = \theta ( p^4 + MT^4 + Mps^4 - 2 * p^2 * MT^2 - 2 * p^2 * Mps^2 - 2 * MT^2 * Mps^2 ) * (gstar*gstar/(50.29)) * \sqrt( p^4 + MT^4 + Mps^4 - 2 * p^2 * MT^2 - 2 * p^2 * Mps^2 - 2 * MT^2 * Mps^2 ) * (p^2 + MT^2 - Mps^2 + 2 * MX * MT ) / (p^2)

where p is the four-momentum of the particle x having mass MX.

In order to implement the theta function, I have used the "cond" command, I see no changes in the result as the theta function is not working within the "cond" command. I have also used a heavyside theta function defined earlier by you but it also did not work. Results indicate that the argument of the theta function is not actually getting implemented within the propagator.

It would be helpful if you can guide me how to properly implement the desired "factor" within the propagator with the theta function mentioned above.

Thanks,
Rohan

 Olivier Mattelaer (olivier-mattelaer) said on 2020-10-06: #3

I will try to look at this tomorrow.

Cheers,

Olivier

 Olivier Mattelaer (olivier-mattelaer) said on 2020-10-07: #4

Are you sure that you are using a recent enough version of the code?
I have no issue on my side to use cond for propagator.

Cheers,

Olivier

 Rohan Pramanick (rohanpramanick25) said on 2020-10-07: #5

Yes, Madgraph is running in the most recent version available. The first argument of the "cond" function is not at all satisfied. Is there any reason behind this ?

Regards,
Rohan

 Olivier Mattelaer (olivier-mattelaer) said on 2020-10-07: #6

Ah, I see that you modified cond in the UFO file, this might be the reason, if you define it as cond2 this might be better.
We also use the cond function internally for some of our code and the definition matched the default one.
If you change that function it is likely that your change to the function is not applied.
you can check in Source/MODEL/model_function.f the fortran definition of the function.

Cheers,

Olivier

 Rohan Pramanick (rohanpramanick25) said on 2020-10-07: #7

Thanks, Olivier. Keeping everything same, redefining the command "cond" as "cond2" solved the probem.

Thanks a lot,
Rohan

 Rohan Pramanick (rohanpramanick25) said on 2020-10-07: #8

Thanks Olivier Mattelaer, that solved my question.