Welcome to Reaction Kinematics

This is a Python library for calculating relativistic two-body nuclear reaction kinematics.

This package is designed for students and researchers working in nuclear and particle physics who need fast, reliable kinematic calculations for reactions of the form:

projectile + target → ejectile + recoil

This code can do:

  • Relativistic two-body kinematics
  • Automatic unit handling
  • Center-of-mass and lab-frame quantities
  • Energy, angle, momentum, and velocity calculations
  • Support for multi-valued kinematic solutions
  • Simple plotting and data export

About

The main interface is the Reaction class.

from reaction_kinematics import Reaction

Create a reaction by specifying the four particle masses. The beam energy is passed separately to each calculation method.

Reaction

We define a reaction with these variables

  • m1 (Projectile)
  • m2 (Target)
  • m3 (Ejectile)
  • m4 (Recoil)

All masses are converted internally to MeV. Kinetic energy is assumed in MeV unless specified otherwise.

For example if you wanted to do p(3H, n)3He:

from reaction_kinematics import Reaction

rxn = Reaction("p", "3H", "n", "3He")


Units

  • Masses are internally stored in MeV/c²
  • Energies are in MeV by default
  • Velocities are given as fractions of c
  • Angles are in radians

Compute Arrays

To generate arrays of kinematic quantities over all center-of-mass angles, use kinematics_table_at_beam_energy().

data = rxn.kinematics_table_at_beam_energy(4.0)

This will return a dictionary containing the following:

  • coscm : cos(θ_CM)
  • theta_cm: CM angle (rad)
  • theta3 : Ejectile lab angle (rad)
  • theta4 : Recoil lab angle (rad)
  • e3 : Ejectile energy (MeV)
  • e4 : Recoil energy (MeV)
  • v3 : Ejectile velocity (c)
  • v4 : Recoil velocity (c)
See Plotting Example for How to Plot