Rivet analyses referenceDELPHI_1995_I394716Strange baryon production in $Z$ hadronic decays at DelphiExperiment: DELPHI (LEP 1) Inspire ID: 394716 Status: VALIDATED Authors:
Beam energies: (45.6, 45.6) GeV Run details:
Measurement of the $\Xi^-$ and $\Sigma^+(1385)/\Sigma^-(1385)$ scaled momentum distributions by DELPHI at LEP 1. The paper also has the production cross-sections of these particles, but that's not implemented in Rivet. Source code: DELPHI_1995_I394716.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/Beam.hh"
4#include "Rivet/Projections/FinalState.hh"
5#include "Rivet/Projections/ChargedFinalState.hh"
6#include "Rivet/Projections/UnstableParticles.hh"
7
8namespace Rivet {
9
10
11 /// @brief DELPHI strange baryon paper
12 ///
13 /// @author Hendrik Hoeth
14 class DELPHI_1995_I394716 : public Analysis {
15 public:
16
17 RIVET_DEFAULT_ANALYSIS_CTOR(DELPHI_1995_I394716);
18
19
20 /// @name Analysis methods
21 /// @{
22
23 void init() {
24 declare(Beam(), "Beams");
25 declare(ChargedFinalState(), "FS");
26 declare(UnstableParticles(), "UFS");
27
28 book(_histXpXiMinus ,2, 1, 1);
29 book(_histXpSigma1385Plus ,3, 1, 1);
30 book(_weightedTotalNumXiMinus, "_weightedTotalNumXiMinus");
31 book(_weightedTotalNumSigma1385Plus, "_weightedTotalNumSigma1385Plus");
32
33 }
34
35
36 void analyze(const Event& e) {
37 // First, veto on leptonic events by requiring at least 4 charged FS particles
38 const FinalState& fs = apply<FinalState>(e, "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>(e, "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>(e, "UFS");
56
57 for (const Particle& p : ufs.particles()) {
58 const int id = p.abspid();
59 switch (id) {
60 case 3312:
61 _histXpXiMinus->fill(p.p3().mod()/meanBeamMom);
62 _weightedTotalNumXiMinus->fill();
63 break;
64 case 3114: case 3224:
65 _histXpSigma1385Plus->fill(p.p3().mod()/meanBeamMom);
66 _weightedTotalNumSigma1385Plus->fill();
67 break;
68 }
69 }
70
71 }
72
73
74 /// Finalize
75 void finalize() {
76 normalize(_histXpXiMinus , dbl(*_weightedTotalNumXiMinus)/sumOfWeights());
77 normalize(_histXpSigma1385Plus , dbl(*_weightedTotalNumSigma1385Plus)/sumOfWeights());
78 }
79
80 /// @}
81
82
83 private:
84
85 /// Store the weighted sums of numbers of charged / charged+neutral
86 /// particles - used to calculate average number of particles for the
87 /// inclusive single particle distributions' normalisations.
88 CounterPtr _weightedTotalNumXiMinus;
89 CounterPtr _weightedTotalNumSigma1385Plus;
90
91 Histo1DPtr _histXpXiMinus;
92 Histo1DPtr _histXpSigma1385Plus;
93
94 };
95
96
97
98 RIVET_DECLARE_ALIASED_PLUGIN(DELPHI_1995_I394716, DELPHI_1995_S3137023);
99
100}
|