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 = ( beams.first.p3().mod() +
51 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 UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
56
57 for (const Particle& p : ufs.particles(Cuts::abspid==323)) {
58 double xp = p.p3().mod()/meanBeamMom;
59 _histXeKStar892->fill(xp);
60 _histMeanKStar892->fill(_histMeanKStar892->bin(0).xMid());
61 }
62 }
63
64
65 /// Normalise histograms etc., after the run
66 void finalize() {
67 scale(_histXeKStar892, 1./sumOfWeights());
68 scale(_histMeanKStar892, 1./sumOfWeights());
69 }
70
71 //@}
72
73
74 private:
75
76 /// @name Histograms
77 Histo1DPtr _histXeKStar892;
78 Histo1DPtr _histMeanKStar892;
79
80 };
81
82
83
84 // The hook for the plugin system
85 RIVET_DECLARE_PLUGIN(OPAL_1993_I342766);
86
87
88}
|