Rivet analyses


title: L3_1992_I336180

Measurement of inclusive eta production in hadronic decays of the Z0

Experiment: L3 (LEP)

Inspire ID: 336180

Status: VALIDATED

Authors: - Simone Amoroso

References: - Phys.Lett. B286 (1992) 403-412 - DOI: 10.1016/0370-2693(92)91795-B

Beams: e+ e-

Beam energies: (45.6, 45.6)GeV

Run details: - electron positron collisions at the Z0 peak, with hadronic decays.

L3 measurement of the inclusive momentum distribution of the eta meson in hadronic decays of the Z0 normalized to the total hadronic cross-section.

Source code:L3_1992_I336180.cc

```c++ // -- C++ --

include "Rivet/Analysis.hh"

include "Rivet/Projections/Beam.hh"

include "Rivet/Projections/ChargedFinalState.hh"

include "Rivet/Projections/FinalState.hh"

include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {

/// @brief L3 inclusive eta production in hadronic Z0 decays /// @author Simone Amoroso class L3_1992_I336180 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(L3_1992_I336180);


/// @name Analysis methods
/// @{

/// Book histograms and initialise projections before the run
void init() {

  // Initialise and register projections
  declare(Beam(), "Beams");
  declare(ChargedFinalState(), "FS");
  declare(UnstableParticles(), "UFS");

  // Book histograms
  book(_histXpEta, 1, 1, 1);
  book(_histLnXpEta, 2, 1, 1);
}


/// Perform the per-event analysis
void analyze(const Event& event) {

  // Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
  const FinalState& fs = apply<FinalState>(event, "FS");
  if (fs.particles().size() < 2) {
    MSG_DEBUG("Failed ncharged cut");
    vetoEvent;
  }
  MSG_DEBUG("Passed ncharged cut");

  // Get beams and average beam momentum
  const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
  const double meanBeamMom = (beams.first.p3().mod() + beams.second.p3().mod()) / 2.0;
  MSG_DEBUG("Avg beam momentum = " << meanBeamMom);

  // Final state of unstable particles to get particle spectra
  const Particles& etas = apply<UnstableParticles>(event, "UFS").particles(Cuts::abspid == PID::ETA);

  for (const Particle& p : etas) {
    double xp = p.p3().mod() / meanBeamMom;
    MSG_DEBUG("Eta xp = " << xp);
    _histXpEta->fill(xp);
    _histLnXpEta->fill(log(1. / xp));
  }
}

/// Normalise histograms etc., after the run
void finalize() {
  scale(_histXpEta, 1. / sumOfWeights());
  scale(_histLnXpEta, 1. / sumOfWeights());
}

/// @}

private:

Histo1DPtr _histXpEta;
Histo1DPtr _histLnXpEta;

};

RIVET_DECLARE_PLUGIN(L3_1992_I336180);

} ```