Quick-start notebook for the axion module#

Importing the modules#

[1]:
#start by importing the controller and manipulate modules
from analytical.controller import *
from numerical.manipulate import *
#reimport numpy (though it is pulled by numerical) for smarter syntax highlighting in vscode
import numpy

Analytical part#

[ ]:
axion_analytical=analytical_pipeline("../../MyModels/axion/axionSM.cfg")

Numerical part#

first create the NumRate class object

[ ]:
axion_rate=NumRate(*axion_analytical,1)

Now all methods of the class are available. For illustration purposes we output the full rate at 10 values of k/T for an axion-gluon coupling only. We rescale \(f_\mathrm{PQ}\) by setting its value to 1 and we use a strong coupling \(g_3\) corresponding to \(\alpha_s=0.06\)

[4]:
k=numpy.linspace(1,10,10)
#the tuple for the couplings is the union of the gauge and other couplings
#from the output of the analytical pipeline we have
# {'gauge': ('g1', 'g2', 'g3'), 'noneq': ('fPQ',), 'others': ('c1', 'c2', 'c3', 'ct', 'ht')}
rate = axion_rate.rate(k,1.,(0.,0.,numpy.sqrt(4.*numpy.pi*0.06),0,0,1.,0,0),0)

Strict LO-scheme rate

[9]:
rate[1]
[9]:
array([6.24468720482499e-6, 2.48806377023693e-5, 3.35216329472938e-5,
       3.89866431064388e-5, 4.30820774272845e-5, 4.64391827454089e-5,
       4.93197028763330e-5, 5.18530080251627e-5, 5.41151703842284e-5,
       5.61573931901464e-5], dtype=object)

Subtracted-scheme rate

[10]:
rate[2]
[10]:
array([1.32458357276370e-5, 2.68517915080078e-5, 3.44196852859558e-5,
       3.94963238927934e-5, 4.34096375330550e-5, 4.66671741757908e-5,
       4.94874378831309e-5, 5.19815453260401e-5, 5.42167932436927e-5,
       5.62397439824078e-5], dtype=object)

Tuned-scheme rate

[11]:
rate[3]
[11]:
array([2.13516715648551e-5, 3.50716746267359e-5, 4.25672158519041e-5,
       4.74800571298319e-5, 5.12012593583113e-5, 5.42733060334197e-5,
       5.69285281412678e-5, 5.92808393892183e-5, 6.13957319484079e-5,
       6.33165674566682e-5], dtype=object)