Rivet analyses referenceL3_1997_I427107$\eta^\prime$ and $\omega$ spectra at 91 GeVExperiment: L3 (LEP) Inspire ID: 427107 Status: VALIDATED Authors:
Beam energies: (45.6, 45.6) GeV Run details:
Measurement of the momentum distribution of the $\eta^\prime$ and $\omega$ mesons at 91.2 GeV in $e^+e^-$ collisions. Source code: L3_1997_I427107.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/Beam.hh"
4#include "Rivet/Projections/ChargedFinalState.hh"
5#include "Rivet/Projections/UnstableParticles.hh"
6
7namespace Rivet {
8
9
10 /// @brief eta' and omega production at mz
11 class L3_1997_I427107 : public Analysis {
12 public:
13
14 /// Constructor
15 RIVET_DEFAULT_ANALYSIS_CTOR(L3_1997_I427107);
16
17
18 /// @name Analysis methods
19 /// @{
20
21 /// Book histograms and initialise projections before the run
22 void init() {
23
24 // Initialise and register projections
25 declare(Beam(), "Beams");
26 declare(ChargedFinalState(), "FS");
27 declare(UnstableParticles(), "UFS");
28
29 // // Book histograms
30 book(_histXpOmega , 5, 1, 1);
31 book(_histLnXpOmega, 6, 1, 1);
32 book(_histXpEtaP1 , 7, 1, 1);
33 book(_histLnXpEtaP1, 8, 1, 1);
34 book(_histXpEtaP2 , 9, 1, 1);
35 book(_histLnXpEtaP2, 10, 1, 1);
36
37 }
38
39
40 /// Perform the per-event analysis
41 void analyze(const Event& event) {
42
43 // Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
44 const FinalState& fs = apply<FinalState>(event, "FS");
45 if (fs.particles().size() < 2) {
46 MSG_DEBUG("Failed ncharged cut");
47 vetoEvent;
48 }
49 MSG_DEBUG("Passed ncharged cut");
50
51 // Get beams and average beam momentum
52 const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
53 const double meanBeamMom = ( beams.first.p3().mod() + beams.second.p3().mod() ) / 2.0;
54 MSG_DEBUG("Avg beam momentum = " << meanBeamMom);
55
56 // Final state of unstable particles to get particle spectra
57 const Particles& mesons = apply<UnstableParticles>(event, "UFS").particles(Cuts::pid==PID::ETAPRIME or
58 Cuts::pid==PID::OMEGA);
59
60 for (const Particle& p : mesons) {
61 double xp = p.p3().mod()/meanBeamMom;
62 double xi = log(1./xp);
63 if(p.pid()==PID::ETAPRIME) {
64 _histXpEtaP1->fill(xp);
65 _histLnXpEtaP1->fill(xi);
66 _histXpEtaP2->fill(xp);
67 _histLnXpEtaP2->fill(xi);
68 }
69 else {
70 _histXpOmega->fill(xp);
71 _histLnXpOmega->fill(xi);
72 }
73 }
74 }
75
76
77 /// Normalise histograms etc., after the run
78 void finalize() {
79 scale(_histXpEtaP1 , 1./sumOfWeights());
80 scale(_histLnXpEtaP1, 1./sumOfWeights());
81 scale(_histXpEtaP2 , 1./sumOfWeights());
82 scale(_histLnXpEtaP2, 1./sumOfWeights());
83 scale(_histXpOmega , 1./sumOfWeights());
84 scale(_histLnXpOmega, 1./sumOfWeights());
85 }
86
87 /// @}
88
89
90 /// @name Histograms
91 /// @{
92 Histo1DPtr _histXpEtaP1,_histXpEtaP2;
93 Histo1DPtr _histLnXpEtaP1,_histLnXpEtaP2;
94 Histo1DPtr _histXpOmega;
95 Histo1DPtr _histLnXpOmega;
96 /// @}
97
98
99 };
100
101
102 RIVET_DECLARE_PLUGIN(L3_1997_I427107);
103
104
105}
|