Rivet analyses
Charged particle multiplicities in different rapidity intervals
Experiment: DELPHI (LEP)
Inspire ID: 324035
Status: VALIDATED
Authors: - Peter Richardson
References: - Z.Phys. C52 (1991) 271-281, 1991
Beams: e+ e-
Beam energies: (45.6, 45.6)GeV
Run details: - $\sqrt{s} = 91.2$ GeV, e+e−− > Z0 production with hadronic decays only
The charged multiplicity distributions in hadron Z0 decays for different rapidity regions.
Source
code:DELPHI_1991_I324035.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
#include "Rivet/Projections/Thrust.hh"
namespace Rivet {
/// @brief Charged particle multiplicities in different regions
class DELPHI_1991_I324035 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(DELPHI_1991_I324035);
/// @name Analysis methods
/// @{
/// Book histograms and initialise projections before the run
void init() {
// Initialise and register projections
const ChargedFinalState cfs;
declare(cfs, "FS");
const Thrust thrust(cfs);
declare(thrust, "Thrust");
// Book histograms
book(_h_all_05, 1, 1, 1);
book(_h_all_10, 2, 1, 1);
book(_h_all_15, 3, 1, 1);
book(_h_all_20, 4, 1, 1);
book(_h_all_all, 5, 1, 1);
book(_h_hemi_05, 6, 1, 1);
book(_h_hemi_10, 7, 1, 1);
book(_h_hemi_15, 8, 1, 1);
book(_h_hemi_20, 9, 1, 1);
book(_h_hemi_30, 10, 1, 1);
book(_h_hemi_40, 11, 1, 1);
book(_h_hemi_50, 12, 1, 1);
book(_h_hemi_all, 13, 1, 1);
}
/// Perform the per-event analysis
void analyze(const Event& event) {
// First, veto on leptonic events by requiring at least 4 charged FS particles
const FinalState& fs = apply<FinalState>(event, "FS");
const size_t numParticles = fs.particles().size();
// Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
if (numParticles < 2) {
MSG_DEBUG("Failed leptonic event cut");
vetoEvent;
}
MSG_DEBUG("Passed leptonic event cut");
// Thrusts
MSG_DEBUG("Calculating thrust");
const Thrust& thrust = apply<Thrust>(event, "Thrust");
Vector3 axis = thrust.thrustAxis();
unsigned int n_all_05(0), n_all_10(0), n_all_15(0), n_all_20(0), n_all_all(0);
unsigned int n_pos_05(0), n_pos_10(0), n_pos_15(0), n_pos_20(0), n_pos_30(0), n_pos_40(0), n_pos_50(0),
n_pos_all(0);
unsigned int n_neg_05(0), n_neg_10(0), n_neg_15(0), n_neg_20(0), n_neg_30(0), n_neg_40(0), n_neg_50(0),
n_neg_all(0);
for (const Particle& p : fs.particles()) {
const Vector3 mom3 = p.p3();
const double energy = p.E();
const double momT = dot(axis, mom3);
const double rapidityT = 0.5 * std::log((energy + momT) / (energy - momT));
++n_all_all;
if (abs(rapidityT) < 0.5) {
++n_all_05;
if (rapidityT > 0)
++n_pos_05;
else
++n_neg_05;
}
if (abs(rapidityT) < 1.0) {
++n_all_10;
if (rapidityT > 0)
++n_pos_10;
else
++n_neg_10;
}
if (abs(rapidityT) < 1.5) {
++n_all_15;
if (rapidityT > 0)
++n_pos_15;
else
++n_neg_15;
}
if (abs(rapidityT) < 2.0) {
++n_all_20;
if (rapidityT > 0)
++n_pos_20;
else
++n_neg_20;
}
if (abs(rapidityT) < 3.0) {
if (rapidityT > 0)
++n_pos_30;
else
++n_neg_30;
}
if (abs(rapidityT) < 4.0) {
if (rapidityT > 0)
++n_pos_40;
else
++n_neg_40;
}
if (abs(rapidityT) < 5.0) {
if (rapidityT > 0)
++n_pos_50;
else
++n_neg_50;
}
if (rapidityT > 0)
++n_pos_all;
else
++n_neg_all;
}
_h_all_05->fill(n_all_05);
_h_all_10->fill(n_all_10);
_h_all_15->fill(n_all_15);
_h_all_20->fill(n_all_20);
_h_all_all->fill(n_all_all);
_h_hemi_05->fill(n_pos_05);
_h_hemi_10->fill(n_pos_10);
_h_hemi_15->fill(n_pos_15);
_h_hemi_20->fill(n_pos_20);
_h_hemi_30->fill(n_pos_30);
_h_hemi_40->fill(n_pos_40);
_h_hemi_50->fill(n_pos_50);
_h_hemi_all->fill(n_pos_all);
_h_hemi_05->fill(n_neg_05);
_h_hemi_10->fill(n_neg_10);
_h_hemi_15->fill(n_neg_15);
_h_hemi_20->fill(n_neg_20);
_h_hemi_30->fill(n_neg_30);
_h_hemi_40->fill(n_neg_40);
_h_hemi_50->fill(n_neg_50);
_h_hemi_all->fill(n_neg_all);
}
/// Normalise histograms etc., after the run
void finalize() {
normalize(_h_all_05, 1000.);
normalize(_h_all_10, 1000.);
normalize(_h_all_15, 1000.);
normalize(_h_all_20, 1000.);
normalize(_h_all_all, 1000.);
normalize(_h_hemi_05, 1000.);
normalize(_h_hemi_10, 1000.);
normalize(_h_hemi_15, 1000.);
normalize(_h_hemi_20, 1000.);
normalize(_h_hemi_30, 1000.);
normalize(_h_hemi_40, 1000.);
normalize(_h_hemi_50, 1000.);
normalize(_h_hemi_all, 1000.);
}
/// @}
/// @name Histograms
/// @{
BinnedHistoPtr<int> _h_all_05, _h_all_10, _h_all_15, _h_all_20, _h_all_all;
BinnedHistoPtr<int> _h_hemi_05, _h_hemi_10, _h_hemi_15, _h_hemi_20;
BinnedHistoPtr<int> _h_hemi_30, _h_hemi_40, _h_hemi_50, _h_hemi_all;
/// @}
};
RIVET_DECLARE_PLUGIN(DELPHI_1991_I324035);
}