Rivet analyses referenceOPAL_1993_I342766A Measurement of $K^{*\pm}$ (892) production in hadronic Z0 decaysExperiment: OPAL (LEP) Inspire ID: 342766 Status: VALIDATED Authors:
Beam energies: (45.6, 45.6) GeV Run details:
OPAL measurement of the inclusive cross section for $K^{*\pm} (892) $production in hadronic decays of the Z0 Source code: OPAL_1993_I342766.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/ChargedFinalState.hh"
5#include "Rivet/Projections/UnstableParticles.hh"
6#include "Rivet/Projections/Beam.hh"
7
8namespace Rivet {
9
10
11 /// @brief A Measurement of K*+- (892) production in hadronic Z0 decays
12 /// @author Simone Amoroso
13 class OPAL_1993_I342766 : public Analysis {
14 public:
15
16 /// Constructor
17 RIVET_DEFAULT_ANALYSIS_CTOR(OPAL_1993_I342766);
18
19
20 /// @name Analysis methods
21 /// @{
22
23 /// Book histograms and initialise projections before the run
24 void init() {
25 // Initialise and register projections
26 declare(Beam(), "Beams");
27 declare(ChargedFinalState(), "FS");
28 declare(UnstableParticles(), "UFS");
29 // Book histograms
30 book(_histXeKStar892, 1, 1, 1);
31 book(_histMeanKStar892, 2, 1, 1);
32 }
33
34
35 /// Perform the per-event analysis
36 void analyze(const Event& event) {
37
38 const FinalState& fs = apply<FinalState>(event, "FS");
39 const size_t numParticles = fs.particles().size();
40
41 // Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
42 if (numParticles < 2) {
43 MSG_DEBUG("Failed leptonic event cut");
44 vetoEvent;
45 }
46 MSG_DEBUG("Passed leptonic event cut");
47
48 // Get beams and average beam momentum
49 const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
50 const double meanBeamMom = 0.5*(beams.first.p3().mod() + beams.second.p3().mod());
51 MSG_DEBUG("Avg beam momentum = " << meanBeamMom);
52
53 // Final state of unstable particles to get particle spectra
54 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
55
56 for (const Particle& p : ufs.particles(Cuts::abspid==323)) {
57 const double xp = p.p3().mod()/meanBeamMom;
58 _histXeKStar892->fill(xp);
59 _histMeanKStar892->fill(Ecm);
60 }
61 }
62
63
64 /// Normalise histograms etc., after the run
65 void finalize() {
66 scale(_histXeKStar892, 1./sumOfWeights());
67 scale(_histMeanKStar892, 1./sumOfWeights());
68 }
69
70 /// @}
71
72
73 private:
74
75 /// @name Histograms
76 Histo1DPtr _histXeKStar892;
77 BinnedHistoPtr<string> _histMeanKStar892;
78 const string Ecm = "91.2";
79
80 };
81
82
83
84 RIVET_DECLARE_PLUGIN(OPAL_1993_I342766);
85
86
87}
|