Rivet analyses referenceBESIII_2019_I1724880Charge particle multiplicity in $\eta_c$ decaysExperiment: BESIII (BEPC) Inspire ID: 1724880 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Measurement of the charged particle multiplicity distribution in $\eta_c$ decays by the BESIII collaboration. Source code: BESIII_2019_I1724880.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief Charged particle multiplicity in eta_c decays
9 class BESIII_2019_I1724880 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2019_I1724880);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21
22 // Initialise and register projections
23 declare(UnstableParticles(), "UFS");
24
25 // Book histograms
26 book(_h_n, 1, 1, 1);
27
28 }
29
30 void findChildren(const Particle & p,int & nCharged) {
31 for( const Particle &child : p.children()) {
32 if(child.children().empty()) {
33 if(PID::isCharged(child.pid())) ++nCharged;
34 }
35 else
36 findChildren(child,nCharged);
37 }
38 }
39
40 /// Perform the per-event analysis
41 void analyze(const Event& event) {
42 for (const Particle& p : apply<FinalState>(event, "UFS").particles(Cuts::pid==441)) {
43 int nCharged(0);
44 findChildren(p,nCharged);
45 _h_n->fill(min(nCharged,8));
46 }
47 }
48
49
50 /// Normalise histograms etc., after the run
51 void finalize() {
52 normalize(_h_n);
53 }
54
55 /// @}
56
57
58 /// @name Histograms
59 /// @{
60 BinnedHistoPtr<int> _h_n;
61 /// @}
62
63
64 };
65
66
67 RIVET_DECLARE_PLUGIN(BESIII_2019_I1724880);
68
69}
|