Commit 03e46008 authored by ulrich_y's avatar ulrich_y
Browse files

Improved comparison

parent 87955c9e
......@@ -154,29 +154,35 @@ flo, glo, tlo = getfandg(lfunclo, 'lo')
fnlo, gnlo, tnlo = getfandg(lfuncnlo, 'nlo')
fnnlo, gnnlo, tnnlo = getfandg(lfuncnnlo, 'nnlo')
Ee = flo[:, 0]
mask = (Mel < Ee) & (Ee < Mmu/2 + Mel**2/Mmu**2)
flo = flo[mask]
glo = glo[mask]
fnlo = fnlo[mask]
gnlo = gnlo[mask]
fnnlo = fnnlo[mask]
gnnlo = gnnlo[mask]
F = addplots(flo, addplots(fnlo, fnnlo))
G = addplots(glo, addplots(gnlo, gnnlo))
###########################################################}}}
##########################################################################}}}
## Compare at LO and NLO{{{
# Here we compare the results with Arbuzov [hep-ph/0110047]
Ee = flo[:, 0]
## Compare at LO, NLO, and NNLO{{{
# Here we compare the results with Arbuzov
Ee = Ee[mask]
xe = 2*Ee/Mmu
beta = sqrt(1-Mel**2/Ee**2)
### Compare at LO{{{
fLOref = 2/Mmu * xe**2*beta * (3-2*xe+xe/4*(3*xe-4)*(1-beta**2))
gLOref = 2/Mmu * xe**2*beta * ((1-2*xe)*beta + 3*xe**2/4 * beta * (1-beta**2))
fLOref[Ee < Mel] = 0.
gLOref[Ee < Mel] = 0.
fLOref[Ee > Mmu/2 + Mel**2/Mmu**2] = 0.
gLOref[Ee > Mmu/2 + Mel**2/Mmu**2] = 0.
twopanel(
"$E_e$", labupleft="$f_0$",
upleft=[flo, np.column_stack((Ee, fLOref, np.zeros((4000))))],
upleft=[flo, np.column_stack((Ee, fLOref, np.zeros(Ee.shape)))],
downleft=[np.column_stack((Ee, 1-flo[:, 1]/fLOref, flo[:, 2]/fLOref))]
)
ylim(-1e-3, 1e-3)
......@@ -184,7 +190,7 @@ ylim(-1e-3, 1e-3)
twopanel(
"$E_e$", labupleft="$g_0$",
upleft=[glo, np.column_stack((Ee, gLOref, np.zeros((4000))))],
upleft=[glo, np.column_stack((Ee, gLOref, np.zeros(Ee.shape)))],
downleft=[np.column_stack((Ee, 1-glo[:, 1]/gLOref, glo[:, 2]/gLOref))]
)
ylim(-5e-2, 5e-2)
......@@ -192,31 +198,39 @@ ylim(-5e-2, 5e-2)
### Compare at NLO{{{
fNLOref = alpha/(2*pi) * 2/Mmu * xe**2*beta * arbuzov.fnlo(xe, Mel/Mmu)
gNLOref = alpha/(2*pi) * 2/Mmu * xe**2*beta * arbuzov.gnlo(xe, Mel/Mmu)
fNLOref[Ee < Mel] = 0.
gNLOref[Ee < Mel] = 0.
fNLOref[Ee > Mmu/2 + Mel**2/Mmu**2] = 0.
gNLOref[Ee > Mmu/2 + Mel**2/Mmu**2] = 0.
twopanel(
"$E_e$", labupleft="$f_1$",
upleft=[fnlo, np.column_stack((Ee, fNLOref, np.zeros((4000))))],
upleft=[fnlo, np.column_stack((Ee, fNLOref, np.zeros(Ee.shape)))],
downleft=[np.column_stack((Ee, 1-fnlo[:, 1]/fNLOref, fnlo[:, 2]/fNLOref))]
)
ylim(-2e-3, 2e-3)
twopanel(
"$E_e$", labupleft="$g_1$",
upleft=[gnlo, np.column_stack((Ee, gNLOref, np.zeros((4000))))],
upleft=[gnlo, np.column_stack((Ee, gNLOref, np.zeros(Ee.shape)))],
downleft=[np.column_stack((Ee, 1-gnlo[:, 1]/gNLOref, gnlo[:, 2]/gNLOref))]
)
ylim(-2e-3, 2e-3)
###########################################################}}}
### Compare at NNLO{{{
fNNLOref = (alpha/(2*pi))**2 * 2/Mmu * (np.log(Mmu**2/Mel**2)-1)**2/2 * arbuzov.f2LL(xe) # nopep8
gNNLOref = (alpha/(2*pi))**2 * 2/Mmu * (np.log(Mmu**2/Mel**2)-1)**2/2 * arbuzov.g2LL(xe) # nopep8
fNNLOref[Ee < Mel] = 0.
gNNLOref[Ee < Mel] = 0.
fNNLOref[Ee > Mmu/2 + Mel**2/Mmu**2] = 0.
gNNLOref[Ee > Mmu/2 + Mel**2/Mmu**2] = 0.
L = np.log(Mmu**2/Mel**2)
pref2loop = (alpha/(2*pi))**2 * 2/Mmu
fNNLOref = pref2loop * (0.5*L**2*arbuzov.f2LL(xe) + L*arbuzov.f2NLL(xe))
gNNLOref = pref2loop * (0.5*L**2*arbuzov.g2LL(xe) + L*arbuzov.g2NLL(xe))
figure()
plot(Ee, fNNLOref)
errorband(fnnlo)
ylim(-2e-5, 5e-5)
xlabel("$E_e$")
ylabel("$f_2$")
figure()
plot(Ee, gNNLOref)
errorband(gnnlo)
ylim(-2e-5, 5e-5)
xlabel("$E_e$")
ylabel("$g_2$")
###########################################################}}}
##########################################################################}}}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment