import matplotlib.pyplot as plt
import numpy as np
import requests
from scipy.interpolate import interp1d
According to a simple parton model, the cross-section for an inelastic proton-proton collision should be 3/2 of a pion-proton collision. In this picture, only the valence quarks matter. We know that at high energies most of the collisions involve sea quarks and gluons, so another theory says that the cross-sections might become equal at high energies.
I check this here by downloading cross-section data from the Particle Data Group, interpolating the data points and then plot the ratio. We get indeed a ratio of about 3/2=1.5. In reality, it is a bit larger, about 1.6. There is no visible trend that it does down to 1 with energy.
def read(url):
= requests.get(url)
r = r.text
tab = []
xy = 11
skip for line in tab.strip().split("\n"):
if skip:
-= 1
skip continue
= line.split()
items = float(items[3])
xi = float(items[4])
yi = (0.5 * sum(float(i) ** 2 for i in items[5:9])) ** 0.5
yei
xy.append((xi, yi, yei))=lambda p: p[0])
xy.sort(keyreturn np.transpose(xy)
= read("https://pdg.lbl.gov/2020/hadronic-xsections/rpp2020-pimp_total.dat")
pim_p = read("https://pdg.lbl.gov/2020/hadronic-xsections/rpp2020-pipp_total.dat")
pip_p = read("https://pdg.lbl.gov/2020/hadronic-xsections/rpp2020-pp_total.dat") p_p
=(10, 6))
plt.figure(figsize*pim_p, fmt="o", label="pi- p")
plt.errorbar(*pip_p, fmt="s", label="pi+ p")
plt.errorbar(*p_p, fmt="D", label="p p")
plt.errorbar(r"$p_\mathrm{lab}$ / GeVc$^{-1}$")
plt.xlabel(r"inelastic cross-section / mb")
plt.ylabel(
plt.loglog(); plt.legend()
= interp1d(*pip_p[:2])
l_pip_p = interp1d(*p_p[:2])
l_p_p = np.geomspace(1, 1e4)
x
plt.figure()/ l_pip_p(x))
plt.plot(x, l_p_p(x) 3/2, ls="--", color="0.5")
plt.axhline(; plt.semilogx()