Rivet analyses referenceDELPHI_2003_I628566Spectrum for $f_1(1285)$ and $f_1^\prime(1420)$ production in hadronic $Z^0$ decaysExperiment: DELPHI (LEP) Inspire ID: 628566 Status: VALIDATED NOHEPDATA Authors:
Beam energies: (45.6, 45.6) GeV Run details:
DELPHI results for the spectrum for $f_1(1285)$ and $f_1^\prime(1420)$ production in hadronic $Z^0$ decays Source code: DELPHI_2003_I628566.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 f_1 and f'_1 spectra
12 class DELPHI_2003_I628566 : public Analysis {
13 public:
14
15 /// Constructor
16 RIVET_DEFAULT_ANALYSIS_CTOR(DELPHI_2003_I628566);
17
18
19 /// @name Analysis methods
20 /// @{
21
22 /// Book histograms and initialise projections before the run
23 void init() {
24 declare(Beam(), "Beams");
25 declare(ChargedFinalState(), "FS");
26 declare(UnstableParticles(Cuts::pid==20223 || Cuts::pid==20333), "UFS");
27
28 // Book histograms
29 book(_n_f1 , 1, 1, 1);
30 book(_n_f1prime, 1, 1, 2);
31 book(_h_f1 , 2, 1, 1);
32 book(_h_f1prime, 2, 1, 2);
33 }
34
35
36 /// Perform the per-event analysis
37 void analyze(const Event& event) {
38
39 // First, veto on leptonic events by requiring at least 4 charged FS particles
40 const FinalState& fs = apply<FinalState>(event, "FS");
41 const size_t numParticles = fs.particles().size();
42
43 // Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
44 if (numParticles < 2) {
45 MSG_DEBUG("Failed leptonic event cut");
46 vetoEvent;
47 }
48 MSG_DEBUG("Passed leptonic event cut");
49
50 // Get beams and average beam momentum
51 const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
52 const double meanBeamMom = 0.5*(beams.first.p3().mod() + beams.second.p3().mod());
53 MSG_DEBUG("Avg beam momentum = " << meanBeamMom);
54
55 // Final state of unstable particles to get particle spectra
56 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
57
58 for (const Particle& p : ufs.particles()) {
59 const double xp = p.p3().mod()/meanBeamMom;
60 if (p.pid()==20223) {
61 _n_f1->fill("91.2"s);
62 _h_f1->fill(xp);
63 }
64 else {
65 _n_f1prime->fill("91.2"s);
66 _h_f1prime->fill(xp);
67 }
68 }
69 }
70
71
72 /// Normalise histograms etc., after the run
73 void finalize() {
74 scale(_n_f1 , 1./sumOfWeights());
75 scale(_n_f1prime, 1./sumOfWeights());
76 scale(_h_f1 , 1./sumOfWeights());
77 scale(_h_f1prime, 1./sumOfWeights());
78 }
79
80 /// @}
81
82
83 /// @name Histograms
84 /// @{
85 BinnedHistoPtr<string> _n_f1,_n_f1prime;
86 Histo1DPtr _h_f1,_h_f1prime;
87 /// @}
88
89
90 };
91
92
93 RIVET_DECLARE_PLUGIN(DELPHI_2003_I628566);
94
95}
|