feynlag.pheno.kinematics.TwoToTwoKinematics¶
- class feynlag.pheno.kinematics.TwoToTwoKinematics(m1, m2, m3, m4, names=('k1', 'k2', 'k3', 'k4'))[source]¶
On-shell kinematics of
1(k₁) + 2(k₂) → 3(k₃) + 4(k₄).Parametrised by the Mandelstam invariants
s = (k₁+k₂)² = (k₃+k₄)²andt = (k₁−k₃)² = (k₂−k₄)²(the third,u = (k₁−k₄)² = (k₂−k₃)², is fixed bys+t+u = m₁²+m₂²+m₃²+m₄²and is a derived property here, not a free symbol — momentum conservation then holds by construction rather than by assertion).sandtare kept as the primary symbols rather than(s, cosθ): thedottable below is linear ins, t, uwith no radicals, while acosθparametrization would drag√λ_i√λ_finto every table entry and hence into every Dirac trace — the same reasonThreeBodyKinematicsconfines its radicals tos12_bounds().tis negative throughout the physical region, so it is declaredreal=True, notpositive=True.k₄is not an independent momentum (k₄ = k₁+k₂−k₃), but it is still given its ownmomentum()head rather than being rewritten inline: momentum conservation then becomes a testable invariant of thedottable instead of expression-level algebra that would interact badly withTensAddexpansion insidedirac_trace().Names default to
k1..k4— deliberately distinct from thep1, p2, p3defaults ofTwoBodyKinematics/ThreeBodyKinematics, sincemomentum()caches heads globally by name anddot()dispatches on that name: a foreignp1head leaking into a 2→2 expression must raise a loudKeyError, never silently answer with the wrong table.- __init__(m1, m2, m3, m4, names=('k1', 'k2', 'k3', 'k4'))¶
Methods
__init__(m1, m2, m3, m4[, names])allowed()Whether the final state
3+4is open at this√s(Noneif undecidable symbolically).cos_theta()The CM scattering angle implied by this object's
t.dot(head_a, head_b)k_a·k_bfor two momentum heads.dsigma_dcos_factor()√λ_final/(32π s √λ_initial)— multiply by the spin/colour- summed|M|²to getdσ/dcosθ.dsigma_dt_factor()1/(16π λ_initial)— multiply by the spin/colour-summed|M|²to getdσ/dt.flux_factor()1/(2√λ(s,m₁²,m₂²))— from the flux identity4E₁E₂|v₁−v₂| = 4√s·p_i = 2√λ_i.lambda_final()λ(s, m₃², m₄²)— the final-state Källén function.lambda_initial()λ(s, m₁², m₂²)— the initial-state Källén function.p_cm_final()CM three-momentum magnitude of either final particle.
p_cm_initial()CM three-momentum magnitude of either initial particle.
t_bounds()(t_min, t_max)at fixeds— thecosθ = ∓1endpoints.t_of_cos(c)tat a givencosθ = c, fixeds— inverse ofcos_theta().Attributes
k1k2k3k4namesstuu = m₁²+m₂²+m₃²+m₄² − s − t— derived, never a free symbol.m1m2m3m4