KAHIBARO
Discord Login Register

Angular Distributions

Table of Contents

Theta

In particle and nuclear physics, angular distributions describe how often particles are emitted in different directions. One of the most important angles is the polar angle, usually called $\theta$. It is defined with respect to a chosen axis, typically the beam axis or the $z$ axis of your coordinate system.

In a standard right handed coordinate system, the $z$ axis points along the beam, the $x$ axis is horizontal, and the $y$ axis is vertical. The polar angle $\theta$ is the angle between the particle’s momentum vector and the $z$ axis. It takes values between $0$ and $\pi$:
$$
\theta = 0 \quad \text{forward direction, along +z}
$$
$$
\theta = \pi \quad \text{backward direction, along -z}
$$

In many analyses you do not work directly with $\theta$, but you still need to understand what it represents. Detector acceptance is often strongly dependent on $\theta$. Forward detectors, for instance, cover very small $\theta$, while central detectors cover $\theta$ around $\pi/2$.

When you have the momentum components of a particle, for example $(p_x, p_y, p_z)$ in a TTree, you can compute $\theta$ using
$$
\theta = \arccos\left( \frac{p_z}{|\vec{p}|} \right), \qquad |\vec{p}| = \sqrt{p_x^2 + p_y^2 + p_z^2}.
$$

Important: The polar angle $\theta$ is always defined from an axis, not from a plane. In a typical collider analysis $\theta$ is defined from the beam axis ($z$). Many formulae and distributions, such as differential cross sections $d\sigma/d\Omega$, depend explicitly on $\theta$.

In ROOT, if you work with a TLorentzVector or TVector3, you normally do not need to implement this formula yourself. These classes provide a method Theta() that returns the polar angle. For example, if p is a TLorentzVector representing a particle, p.Theta() gives $\theta$ in radians. You can fill a histogram of $\theta$ with p.Theta() inside your event loop, or directly with TTree::Draw() using an expression that calls Theta().

The shape of the $\theta$ distribution contains physical information. For example, an isotropic decay in the rest frame of a particle produces a constant distribution in $\cos\theta$, not in $\theta$ itself. When you analyze angular distributions, it is often more appropriate to histogram $\cos\theta$ and not $\theta$, especially when you compare your data with theoretical predictions that are written as a function of $\cos\theta$.

Phi

The second standard angle is the azimuthal angle $\phi$. It measures the rotation around the $z$ axis. In cylindrical or spherical coordinates, $\phi$ describes the direction of the momentum in the plane transverse to the beam.

Using the same $(x, y, z)$ coordinates, $\phi$ is defined by
$$
\phi = \arctan2(y, x),
$$
where $\arctan2$ is the two argument variant of the arctangent that returns an angle in the correct quadrant. The usual range is $-\pi < \phi \le \pi$ or $0 \le \phi < 2\pi$, depending on convention.

Many detectors are symmetric in $\phi$, so in an ideal detector with no inefficiencies, the true physical distribution might be flat in $\phi$. Deviations from flatness may point to detector non uniformities, inefficiencies, or non trivial physics such as azimuthal anisotropies.

As with $\theta$, TLorentzVector and TVector3 provide a Phi() method that returns the azimuthal angle in radians. If you have a TTree with transverse momentum components, you can check azimuthal symmetry by drawing a histogram of phi:

cpp
tree->Draw("phi>>hphi(64,-3.2,3.2)");

where phi is either a stored branch or an expression like atan2(py,px) or vec.Phi().

A common use of $\phi$ in collider physics is the definition of the separation between two objects in the $\eta$–$\phi$ plane, via $\Delta\phi$. Although pseudorapidity is covered elsewhere, you will often need to look at distributions in $\phi$ differences, for example the angle between jets or between a lepton and missing transverse momentum. In practice, you frequently fold $\Delta\phi$ into the range $[0,\pi]$ to study only the relative orientation in the transverse plane.

Important: When you compute the difference of two azimuthal angles, you must handle the periodicity correctly. A naive subtraction can give a value outside the interval $[-\pi,\pi]$. Always bring $\Delta\phi$ back into a standard range before using it for cuts or histograms.

In ROOT C++ code, a typical pattern is:

cpp
double dphi = phi1 - phi2;
if (dphi >  M_PI) dphi -= 2*M_PI;
if (dphi < -M_PI) dphi += 2*M_PI;

You can then fill histograms of fabs(dphi) or dphi to study azimuthal correlations. Angular distributions in $\phi$ and $\Delta\phi$ are essential when you investigate rotational symmetries, spin correlations, or flow phenomena in heavy ion collisions.

Opening angles

The opening angle is the angle between two particles or two momentum vectors. Instead of measuring each angle with respect to the beam, you look at how far apart the two directions are from each other. The opening angle is a very common observable in decay studies and in analyses that reconstruct composite objects from their decay products.

Given two three dimensional momentum vectors, $\vec{p}_1$ and $\vec{p}_2$, the opening angle $\alpha$ between them is defined through the scalar product,
$$
\cos\alpha = \frac{\vec{p}_1 \cdot \vec{p}_2}{|\vec{p}_1|\,|\vec{p}_2|},
$$
so that
$$
\alpha = \arccos\left( \frac{\vec{p}_1 \cdot \vec{p}_2}{|\vec{p}_1|\,|\vec{p}_2|} \right).
$$

Important: The opening angle is always defined between two directions. It is independent of the choice of coordinate system. As long as both momenta are expressed in the same frame, the value of the opening angle does not change when you rotate your axes.

In ROOT, if you have two TVector3 objects, for example p1 and p2, you can obtain the opening angle through:

cpp
double alpha = p1.Angle(p2);

This gives the angle in radians between the two vectors. TLorentzVector has a Vect() method that returns the spatial momentum as a TVector3, so you can write:

cpp
double alpha = p4_1.Vect().Angle(p4_2.Vect());

Opening angles are especially useful in the study of two body decays. In the rest frame of the parent particle, the decay products are back to back, so the opening angle is $\alpha = \pi$. In the laboratory frame, the opening angle is typically smaller than $\pi$ because the parent particle is boosted. By studying the distribution of opening angles for a pair of particles, you can gain insight into the boost and production kinematics.

A simple ROOT analysis might compute the opening angle between two identified tracks or clusters for each event and fill a histogram. For example, in a two photon decay of a neutral meson, the distribution of the opening angle between the photons, possibly together with their energies, provides a handle on the invariant mass reconstruction and on background rejection.

In collider physics, a related but distinct concept is $\Delta R$ in the $\eta$–$\phi$ space, which is defined as
$$
\Delta R = \sqrt{(\Delta\eta)^2 + (\Delta\phi)^2}.
$$
This is not the full three dimensional opening angle, but a measure of separation in the detector’s natural coordinates. The true opening angle in three dimensions and $\Delta R$ are both used to study the angular structure of jets, isolation cones around leptons, and correlations between particles.

To summarize, theta and phi describe single particle directions relative to a chosen axis, while opening angles characterize relative directions between pairs of particles. ROOT provides direct methods to work with all of them. By filling histograms of these quantities, you can explore angular distributions, reveal symmetries in the production process, and test theoretical predictions that are expressed in terms of angular variables.

Views: 10

Comments

Please login to add a comment.

Don't have an account? Register now!