rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

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: 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
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/FinalState.hh"
 4#include "Rivet/Projections/Beam.hh"
 5#include "Rivet/Projections/ChargedFinalState.hh"
 6#include "Rivet/Projections/UnstableParticles.hh"
 7
 8namespace Rivet {
 9
10
11  /// @brief L3 inclusive eta production in hadronic Z0 decays
12  /// @author Simone Amoroso
13  class L3_1992_I336180 : public Analysis {
14  public:
15
16    /// Constructor
17    RIVET_DEFAULT_ANALYSIS_CTOR(L3_1992_I336180);
18
19
20    /// @name Analysis methods
21    /// @{
22
23    /// Book histograms and initialise projections before the run
24    void init() {
25
26      // Initialise and register projections
27      declare(Beam(), "Beams");
28      declare(ChargedFinalState(), "FS");
29      declare(UnstableParticles(), "UFS");
30
31      // Book histograms
32      book(_histXpEta , 1, 1, 1);
33      book(_histLnXpEta , 2, 1, 1);
34
35    }
36
37
38    /// Perform the per-event analysis
39    void analyze(const Event& event) {
40
41      // Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
42      const FinalState& fs = apply<FinalState>(event, "FS");
43      if (fs.particles().size() < 2) {
44	MSG_DEBUG("Failed ncharged cut");
45	vetoEvent;
46      }
47      MSG_DEBUG("Passed ncharged cut");
48
49      // Get beams and average beam momentum
50      const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
51      const double meanBeamMom = ( beams.first.p3().mod() + beams.second.p3().mod() ) / 2.0;
52      MSG_DEBUG("Avg beam momentum = " << meanBeamMom);
53
54      // Final state of unstable particles to get particle spectra
55      const Particles& etas = apply<UnstableParticles>(event, "UFS").particles(Cuts::abspid==PID::ETA);
56
57      for (const Particle& p : etas) {
58	double xp = p.p3().mod()/meanBeamMom;
59        MSG_DEBUG("Eta xp = " << xp);
60        _histXpEta->fill(xp);
61        _histLnXpEta->fill(log(1./xp));
62      }
63    }
64
65    /// Normalise histograms etc., after the run
66    void finalize() {
67      scale(_histXpEta, 1./sumOfWeights());
68      scale(_histLnXpEta, 1./sumOfWeights());
69    }
70
71    /// @}
72
73
74  private:
75
76    Histo1DPtr _histXpEta;
77    Histo1DPtr _histLnXpEta;
78
79  };
80
81
82
83  RIVET_DECLARE_PLUGIN(L3_1992_I336180);
84
85
86}