Rivet analyses referenceCLEOII_2002_I601701Spectra of $\eta^\prime$ mesons in $\Upsilon(1S)$ decaysExperiment: CLEO-II (CESR) Inspire ID: 601701 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Measurement of the inclusive production of the $\eta^\prime$ mesons in $\Upsilon(1S)$ decays by the CLEO-II experiment. In principle this measurement is superseeded, however the newer result (CLEOIII_2006_I728679) did not include numerical values which were read from the plots and therefore we keep this measurement. Source code: CLEOII_2002_I601701.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief eta' production in Upsilon(1S) decays
9 class CLEOII_2002_I601701 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(CLEOII_2002_I601701);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 declare(UnstableParticles(), "UFS");
22
23 book(_hist, 1, 1, 3);
24 book(_mult, 2, 1, 3);
25 book(_weightSum,"TMP/weightSum");
26
27 }
28
29 /// Recursively walk the decay tree to find decay products of @a p
30 void findDecayProducts(Particle mother, Particles& unstable) {
31 for(const Particle & p: mother.children()) {
32 const int id = abs(p.pid());
33 if ( id == 331 ) {
34 unstable.push_back(p);
35 }
36 else if(!p.children().empty())
37 findDecayProducts(p, unstable);
38 }
39 }
40
41 /// Perform the per-event analysis
42 void analyze(const Event& event) {
43 // find the Upsilon(1S) mesons
44 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
45 Particles upsilons = ufs.particles(Cuts::pid==553);
46 if(upsilons.empty()) vetoEvent;
47 // loop over them
48 for (const Particle& ups : upsilons) {
49 _weightSum->fill();
50 Particles unstable;
51 // Find the decay products we want
52 findDecayProducts(ups,unstable);
53 LorentzTransform cms_boost;
54 if (ups.p3().mod() > 0.001)
55 cms_boost = LorentzTransform::mkFrameTransformFromBeta(ups.momentum().betaVec());
56 double mass = ups.mass();
57 _mult->fill(unstable.size());
58 // fill the spectrum
59 for( const Particle & p : unstable) {
60 FourMomentum p2 = cms_boost.transform(p.momentum());
61 double xp = 2.*p2.E()/mass;
62 _hist->fill(xp);
63 }
64 }
65 }
66
67
68 /// Normalise histograms etc., after the run
69 void finalize() {
70 // spectrum
71 if (_weightSum->val() > 0.)
72 scale(_hist, 1. / *_weightSum);
73 // BR
74 scale(_mult,1./ *_weightSum);
75 }
76
77 /// @}
78
79
80 /// @name Histograms
81 /// @{
82 Histo1DPtr _hist;
83 CounterPtr _mult;
84 CounterPtr _weightSum;
85 /// @}
86
87
88 };
89
90
91 RIVET_DECLARE_PLUGIN(CLEOII_2002_I601701);
92
93}
|