Domain: Physics — High-energy particle physics

Problem:
Consider a theoretical model describing the normalized differential distribution of an event shape observable, \(\tau\), in high-energy particle collisions. This distribution, \(P_{\text{hadron}}(\tau)\), is obtained by convolving a perturbative parton-level distribution, \(P_{\text{parton}}(\tau)\), with a non-perturbative shape function, \(F(\epsilon)\), according to the integral:

\[ P_{\text{hadron}}(\tau) = \int_{0}^{\tau} P_{\text{parton}}(\tau - \epsilon) F(\epsilon) \, d\epsilon \]

The non-perturbative shape function \(F(\epsilon)\), valid for \(\epsilon > 0\), is modeled as a modified Gamma distribution:

\[ F(\epsilon) = \frac{\beta^{\beta \Omega_1}}{\Gamma(\beta \Omega_1)} \epsilon^{\beta \Omega_1 - 1} \exp(-\beta \epsilon) \]

The parton-level distribution \(P_{\text{parton}}(\tau)\) is derived from a cumulative function \(C(\tau) = \exp[R(\tau)]\), such that \(P_{\text{parton}}(\tau) = \exp[R(\tau)] \frac{dR}{d\tau}\). The exponent \(R(\tau)\) and its derivative \(\frac{dR}{d\tau}\) are defined using the logarithm \(L(\tau) = \log(1/\tau)\) as:

\[ R(\tau) = -C_F \frac{\alpha_S}{\pi} L(\tau)^2 - B_0 \frac{\alpha_S^2}{2\pi^2} L(\tau)^3 \]

\[ \frac{dR}{d\tau} = \frac{1}{\tau} \left( 2 C_F \frac{\alpha_S}{\pi} L(\tau) + \frac{3}{2} B_0 \frac{\alpha_S^2}{\pi^2} L(\tau)^2 \right) \]

To solve this, use the following parameters: strong coupling \(\alpha_S = 0.118\); color factors \(C_F = 4/3\) and \(N_c = 3\); number of quark flavors \(n_f = 5\); and shape function parameters \(\Omega_1 = 0.0035\) and \(\beta = 1.5\). The constant \(B_0\) is derived from the other parameters as \(B_0 = (11 N_c - 2 n_f) / 6\).

Calculate the numerical value of the hadron-level distribution \(P_{\text{hadron}}(\tau_0)\) at the specific point \(\tau_0 = 0.05\). Provide your final answer rounded to 3 decimal places.

Answer: 4.43

Solution code:
import numpy as np
from scipy.special import gamma
from scipy.integrate import quad

# --- 1. Define Constants ---
ALPHA_S = 0.118
C_F = 4.0 / 3.0
N_C = 3.0
N_F = 5.0
OMEGA_1 = 0.0035
BETA = 1.5
PI = np.pi
TAU_0 = 0.05

# --- 2. Define Derived Constant ---
# B_0 = (11 * 3 - 2 * 5) / 6 = (33 - 10) / 6 = 23/6
B_0 = (11.0 * N_C - 2.0 * N_F) / 6.0

# --- 3. Define Core Functions ---

def L(tau):
    """ Calculates L(tau) = log(1/tau) """
    # Handle the edge case where tau is 0 (L -> inf)
    if tau <= 0:
        return np.inf
    return np.log(1.0 / tau)

def R(tau):
    """ Calculates the exponent R(tau) """
    if tau <= 0:
        # If tau is 0, L is inf, so R is -inf
        return -np.inf

    L_tau = L(tau)

    # R(tau) = -C_F * (alpha_S/pi) * L(tau)^2
    term1 = -C_F * (ALPHA_S / PI) * (L_tau**2)

    # - B_0 * (alpha_S^2 / (2*pi^2)) * L(tau)^3
    term2 = -B_0 * (ALPHA_S**2 / (2.0 * PI**2)) * (L_tau**3)

    return term1 + term2

def dR_dtau(tau):
    """ Calculates the derivative dR/dtau """
    if tau <= 0:
        # This would be infinite, but P_parton(0) will be 0
        return np.inf

    L_tau = L(tau)

    # 2 * C_F * (alpha_S/pi) * L(tau)
    term1 = 2.0 * C_F * (ALPHA_S / PI) * L_tau

    # (3/2) * B_0 * (alpha_S^2 / pi^2) * L(tau)^2
    term2 = (3.0 / 2.0) * B_0 * (ALPHA_S**2 / PI**2) * (L_tau**2)

    return (1.0 / tau) * (term1 + term2)

def P_parton(tau):
    """ Calculates the parton-level distribution P_parton(tau) """
    if tau <= 0:
        # The exponential term exp(R(tau) -> -inf) goes to 0
        # faster than the dR_dtau term goes to inf.
        return 0.0

    val_R = R(tau)

    # If R is -inf, exp(R) is 0
    if val_R == -np.inf:
        return 0.0

    val_dR_dtau = dR_dtau(tau)

    return np.exp(val_R) * val_dR_dtau

def F(epsilon):
    """ Calculates the non-perturbative shape function F(epsilon) """
    if epsilon <= 0:
        return 0.0

    # This is the exponent in the Gamma distribution
    exp_arg = BETA * OMEGA_1

    # Coefficient: beta^(beta*Omega_1) / Gamma(beta*Omega_1)
    coeff = (BETA**exp_arg) / gamma(exp_arg)

    # F(eps) = Coeff * eps^(exp_arg - 1) * exp(-beta * eps)
    term1 = epsilon**(exp_arg - 1.0)
    term2 = np.exp(-BETA * epsilon)

    return coeff * term1 * term2

def integrand(epsilon):
    """ Defines the integrand for the convolution at tau_0 = 0.05 """
    tau_shifted = TAU_0 - epsilon

    # Integrand is P_parton(tau_0 - epsilon) * F(epsilon)
    return P_parton(tau_shifted) * F(epsilon)

# --- 4. Perform the Integration ---
# We integrate from 0 to tau_0.
# scipy.integrate.quad is used as it can handle the
# integrable singularity of F(epsilon) at epsilon = 0.
result, error = quad(integrand, 0, TAU_0)

# --- 5. Print the Final Answer ---
print(f"The calculated value of P_hadron(0.05) is: {result}")
print(f"The value rounded to 3 decimal places is: {result:.3f}")