Rivet analyses referenceL3_1992_I336180Measurement of inclusive eta production in hadronic decays of the Z0Experiment: L3 (LEP) Inspire ID: 336180 Status: VALIDATED Authors:
Beam energies: (45.6, 45.6) GeV Run details:
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}
|