Physics:Sphericity tensor
The sphericity tensor is the basis for calculation of sphericity and aplanarity, two event shape observables particularly suited for [math]\displaystyle{ e^+ e^- \rightarrow Z^0/\gamma* \rightarrow q\bar{q} }[/math], and routinely used in several LEP analyses.
Definition
The sphericity tensor is defined as:
[math]\displaystyle{ S^{ab} = \frac{\sum_i p_i^a p_i^b}{\sum_i |p_i|^2}. }[/math]
Here [math]\displaystyle{ p_i }[/math] are the four-momenta of all particles in an event. Superscript a and b indicates spatial components, and the sphericity tensor can thus be represented as a 3-by-3 matrix. As such, three eigenvalues can be found. If they are ordered as [math]\displaystyle{ \lambda_1 \geq \lambda_2 \geq \lambda_3 }[/math], the sphericity is defined as:
[math]\displaystyle{ S = \frac{3}{2}(\lambda_2 + \lambda_3). }[/math]
The similar quantity aplanarity is defined as:
[math]\displaystyle{ A = \frac{3}{2}\lambda_1 }[/math]
Physical meaning
The eigenvector corresponding to [math]\displaystyle{ \lambda_1 }[/math] is called the sphericity axis. S measures the amount of [math]\displaystyle{ p_\perp^2 }[/math] with respect to that axis, and is constrained to values [math]\displaystyle{ 1 \geq S \geq 0 }[/math]. An event with sphericity 0 is a clean dijet event, and sphericity 1 signifies an isotropic event.
The eigenvectors corresponding to [math]\displaystyle{ \lambda_2 }[/math] and [math]\displaystyle{ \lambda_3 }[/math] spans a plane, the so-called sphericity plane. Aplanarity measures the [math]\displaystyle{ p_\perp }[/math] out of that plane, is constrained to [math]\displaystyle{ 0.5 \geq A \geq 0 }[/math]. Similarly to S, A is used to signify the isotropicity of the event.
Sphericity is not an infrared safe quantity. Since it is quadratic in particle momenta, its value will change if a particle splits up into two collinear particles.
Data and description
Sphericity and aplanarity was measured in all the LEP experiments, and the data are particularly important for tuning of parton showers. Measurements and comparisons to event generators can be found at MCplots for sphericity and aplanarity.
The [math]\displaystyle{ p_\perp }[/math] out of the sphericity plane is a particularly interesting observable, as it has been problematic to describe for all the standard parton shower generators, see e.g. the measurement by ALEPH in the figure.
In Rivet
In the Rivet framework, projections are in place to calculate the sphericity tensor, its eigenvalues and corresponding eigenvectors. Below example code is shown for calculating them all. The example is a full Rivet analysis in itself, which can be compiled with rivet-buildplugin RivetSphericityExample.so SphericityExample.cc --std=c++11
. The example just calculates the quantities. One should then fill histograms as needed, etc.
// -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Projections/ChargedFinalState.hh" #include "Rivet/Projections/Sphericity.hh" namespace Rivet { /// @brief Sphericity example calculation class SphericityExample : public Analysis { public: /// Constructor SphericityExample() : Analysis("SphericityExample") { } /// @name Analysis methods //@{ void init() { // Projection containing charged particles of the event const ChargedFinalState cfs; addProjection(cfs, "CFS"); // The sphericity projection addProjection(Sphericity(cfs), "Sphericity"); } /// Perform the per-event analysis void analyze(const Event& event) { // The charged final state particles const ChargedFinalState& cfs = applyProjection<ChargedFinalState>(event, "CFS"); // Apply the projection const Sphericity& sphericity = applyProjection<Sphericity>(event, "Sphericity"); // Calculate the sphericity const double sph = sphericity.sphericity(); // Calculate the aplanarity const double apl = sphericity.aplanarity(); // We now loop over the charged particles for(const Particle& p : cfs.particles()){ // We calculated the particle pT wrt. the axes of the sphericity plane // First pTout const double pTout = dot(p.p3(),sphericity.sphericityMinorAxis()); // Then pTin const double pTin = dot(p.p3(),sphericity.sphericityMajorAxis()); } } void finalize() { } //@} }; // The hook for the plugin system DECLARE_RIVET_PLUGIN(SphericityExample); }