Rivet analyses referenceCLEOII_1999_I504672Charged Particle Multiplicity in $\Upsilon(4S)$ decaysExperiment: CLEOII (CESR) Inspire ID: 504672 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Charged particle multiplicity in $\Upsilon(4S)$ decays measured by CLEOII. Source code: CLEOII_1999_I504672.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief Charged particle multplicity in Upsilon 4s decays
9 class CLEOII_1999_I504672 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(CLEOII_1999_I504672);
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(_n_tot , 1, 1, 1);
27 book(_n_lep , 1, 1, 2);
28 book(_n_nolep, 1, 1, 3);
29 book(_h_n , 2, 1, 1);
30 book(_n_Ups_All ,"/TMP/n_Ups_All");
31 book(_n_Ups_Lep ,"/TMP/n_Ups_Lep");
32 book(_n_Ups_NoLep,"/TMP/n_Ups_NoLep");
33 }
34
35 void findChildren(const Particle & p,int & nCharged, int & nLep) {
36 bool isBottom = PID::isBottomHadron(p.pid());
37 for( const Particle &child : p.children()) {
38 if(child.children().empty()) {
39 if(PID::isCharged(child.pid()) ) ++nCharged;
40 if(isBottom && (child.abspid()==11||child.abspid()==13)) ++nLep;
41 }
42 else
43 findChildren(child,nCharged,nLep);
44 }
45 }
46
47 /// Perform the per-event analysis
48 void analyze(const Event& event) {
49 for (const Particle& p : apply<FinalState>(event, "UFS").particles(Cuts::pid==300553)) {
50 _n_Ups_All->fill();
51 int nCharged(0),nLep(0);
52 findChildren(p,nCharged,nLep);
53 _h_n->fill(nCharged);
54 _n_tot->fill(10.1,nCharged);
55 if(nLep==2) {
56 _n_lep ->fill(10.1,nCharged);
57 _n_Ups_Lep->fill();
58 }
59 else {
60 _n_nolep->fill(10.1,nCharged);
61 _n_Ups_NoLep->fill();
62 }
63 }
64 }
65
66
67 /// Normalise histograms etc., after the run
68 void finalize() {
69 scale(_h_n , 1./ *_n_Ups_All );
70 scale(_n_tot , 1./ *_n_Ups_All );
71 scale(_n_lep , 1./ *_n_Ups_Lep );
72 scale(_n_nolep, 1./ *_n_Ups_NoLep);
73 }
74
75 //@}
76
77
78 /// @name Histograms
79 //@{
80 Histo1DPtr _h_n;
81 Histo1DPtr _n_tot,_n_lep,_n_nolep;
82 CounterPtr _n_Ups_All,_n_Ups_Lep,_n_Ups_NoLep;
83
84 //@}
85
86
87 };
88
89
90 RIVET_DECLARE_PLUGIN(CLEOII_1999_I504672);
91
92}
|