|
|
Line 1: |
Line 1: |
− | The '''sphericity tensor''' is the basis for calculation of '''sphericity''' and '''aplanarity''', two [[event shape]] observables particularly suited for <math>e^+ e^- \rightarrow Z^0/\gamma* \rightarrow q\bar{q}</math>, and routinely used in several [[LEP]] analyses.
| + | #REDIRECT [[Sphericity tensor]] |
− | | + | |
− | == Definition ==
| + | |
− | The sphericity tensor is defined as:
| + | |
− | | + | |
− | <math>S^{ab} = \frac{\sum_i p_i^a p_i^b}{\sum_i |p_i|^2}.</math>
| + | |
− | | + | |
− | Here <math>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>\lambda_1 \geq \lambda_2 \geq \lambda_3</math>, the sphericity is defined as:
| + | |
− | | + | |
− | <math>S = \frac{3}{2}(\lambda_2 + \lambda_3).</math>
| + | |
− | | + | |
− | The similar quantity aplanarity is defined as:
| + | |
− | | + | |
− | <math>A = \frac{3}{2}\lambda_1</math>
| + | |
− | | + | |
− | == Physical meaning ==
| + | |
− | The eigenvector corresponding to <math>\lambda_1</math> is called the sphericity axis. ''S'' measures the amount of <math>p_\perp^2</math> with respect to that axis, and is constrained to values <math>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>\lambda_2</math> and <math>\lambda_3</math> spans a plane, the so-called sphericity plane. Aplanarity measures the <math>p_\perp</math> out of that plane, is constrained to <math>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 safety|infrared safe]] quantity. Since it is quadratic in particle momenta, its value will change if a particle splits up into two collinear particles.
| + | |
− | | + | |
− | [[File:ptout-aleph-mcplots.png|thumb|left|alt=The ALEPH measurement of out of plane transverse momentum.|The ALEPH measurement of out of plane transverse momentum, compared to standard event generators. From [[MCPLOTS]].]]
| + | |
− | | + | |
− | == Data and description ==
| + | |
− | Sphericity and aplanarity was measured in all the LEP experiments, and the data are particularly important for tuning of [[parton shower|parton showers]]. Measurements and comparisons to event generators can be found at MCplots for [http://mcplots.cern.ch/?query=plots,ee,zhad,S sphericity] and [http://mcplots.cern.ch/?query=plots,ee,zhad,A aplanarity].
| + | |
− | | + | |
− | The <math>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 <code>rivet-buildplugin RivetSphericityExample.so SphericityExample.cc --std=c++11</code>. The example just calculates the quantities. One should then fill histograms as needed, etc.
| + | |
− | | + | |
− | <syntaxhighlight lang="cpp">
| + | |
− | // -*- 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);
| + | |
− | | + | |
− | | + | |
− | }
| + | |
− | | + | |
− | </syntaxhighlight>
| + | |