Rivet analyses
Correlations between Λ0 and Λ̄0 production in hadronic Z0 decays
Experiment: DELPHI (LEP)
Inspire ID: 360638
Status: VALIDATED
Authors: - Peter Richardson
References: - Phys.Lett. B318 (1993) 249-262, 1993
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 spectrum for the production of Λ0 and Λ̄0 in hadronic Z0 decays. Importantly the rapidity difference and cosine of the angle between Λ0 and Λ̄0 baryons is measured. This is sensitive to different models of baryon production.
Source
code:DELPHI_1993_I360638.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/Sphericity.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
#include "Rivet/Projections/UnstableParticles.hh"
namespace Rivet {
/// @brief Lambda and Lambda bar dists
class DELPHI_1993_I360638 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(DELPHI_1993_I360638);
/// @name Analysis methods
/// @{
/// Book histograms and initialise projections before the run
void init() {
// Initialise and register projections
const ChargedFinalState cfs;
declare(cfs, "FS");
declare(UnstableParticles(), "UFS");
declare(Sphericity(cfs), "Sphericity");
// Book histograms
book(_h_x , 1, 1, 1);
book(_h_rap , 3, 1, 1);
book(_h_cos , 4, 1, 1);
book(_m_single , 2, 1, 1);
book(_m_like , 5, 1, 1);
book(_m_opposite, 6, 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) vetoEvent;
const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
// lambda
Particles lambda = ufs.particles(Cuts::pid== PID::LAMBDA);
Particles lambdabar = ufs.particles(Cuts::pid==-PID::LAMBDA);
// multiplicities
_m_single->fill(Ecm, (lambda.size()+lambdabar.size()));
if (lambda.empty()&&lambdabar.empty()) vetoEvent;
for (const Particle& p : lambda) {
double xP = 2.*p.p3().mod()/sqrtS();
_h_x->fill(xP);
}
for (const Particle& p : lambdabar) {
double xP = 2.*p.p3().mod()/sqrtS();
_h_x->fill(xP);
}
if (lambda.size()>=2) {
unsigned int npair=lambda.size()/2;
_m_like->fill(Ecm, double(npair));
}
if (lambdabar.size()>=2) {
unsigned int npair=lambdabar.size()/2;
_m_like->fill(Ecm, double(npair));
}
if (lambda.size()==0 || lambdabar.size()==0) return;
_m_opposite->fill(Ecm, double(max(lambda.size(),lambdabar.size())));
const Sphericity& sphericity = apply<Sphericity>(event, "Sphericity");
for (const Particle& p : lambda) {
const Vector3 momP = p.p3();
const double enP = p.E();
const double modP = dot(sphericity.sphericityAxis(), momP);
const double rapP = 0.5 * std::log((enP + modP) / (enP - modP));
for (const Particle& pb : lambdabar) {
const Vector3 momB = pb.p3();
const double enB = pb.E();
const double modB = dot(sphericity.sphericityAxis(), momB);
const double rapB = 0.5 * std::log((enB + modB) / (enB - modB));
_h_rap->fill(abs(rapP-rapB));
_h_cos->fill(momP.unit().dot(momB.unit()));
}
}
}
/// Normalise histograms etc., after the run
void finalize() {
scale( _h_x , 1./sumOfWeights());
scale( _h_rap , 1./sumOfWeights());
scale( _h_cos , 1./sumOfWeights());
scale( _m_single , 1./sumOfWeights());
scale( _m_like , 1./sumOfWeights());
scale( _m_opposite, 1./sumOfWeights());
}
/// @}
/// @name Histograms
/// @{
Histo1DPtr _h_x, _h_rap ,_h_cos;
BinnedHistoPtr<string> _m_single, _m_like, _m_opposite;
const string Ecm = "91.2";
/// @}
};
RIVET_DECLARE_PLUGIN(DELPHI_1993_I360638);
}