Rivet analyses referenceCLEOC_2008_I784516Pion mass distribution in $\psi(2S)\to\pi\pi J/\psi$Experiment: CLEOC (CESR) Inspire ID: 784516 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the mass distribution in $\psi(2S)\to\pi^+\pi^-J/\psi$ and $\pi^0\pi^0J/\psi$ decays by CLEO. THe data were read from the plots in the paper and may not be corrected for efficiency/acceptance. Source code: CLEOC_2008_I784516.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4#include "Rivet/Projections/DecayedParticles.hh"
5
6namespace Rivet {
7
8
9 /// @brief psi(2S) -> J/Psi pi pi
10 class CLEOC_2008_I784516 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CLEOC_2008_I784516);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 // Initialise and register projections
23 UnstableParticles ufs = UnstableParticles(Cuts::pid==100443);
24 declare(ufs, "UFS");
25 DecayedParticles psi(ufs);
26 psi.addStable(PID::PI0);
27 psi.addStable(PID::JPSI);
28 declare(psi, "psi");
29 for(unsigned int ix=0;ix<2;++ix)
30 book(_h[ix],1,1,1+ix);
31 }
32
33
34 /// Perform the per-event analysis
35 void analyze(const Event& event) {
36 static const map<PdgId,unsigned int> & mode1 = { { 211,1}, {-211,1}, { 443,1} };
37 static const map<PdgId,unsigned int> & mode2 = { { 111,2} , { 443,1} };
38 DecayedParticles psi = apply<DecayedParticles>(event, "psi");
39 // loop over particles
40 for(unsigned int ix=0;ix<psi.decaying().size();++ix) {
41 if(psi.modeMatches(ix,3,mode1)) {
42 const Particle & pip = psi.decayProducts()[ix].at( 211)[0];
43 const Particle & pim = psi.decayProducts()[ix].at(-211)[0];
44 _h[0]->fill((pip.momentum()+pim.momentum()).mass());
45 }
46 else if(psi.modeMatches(ix,3,mode2)) {
47 const Particles & pi0 = psi.decayProducts()[ix].at( 111);
48 _h[1]->fill((pi0[0].momentum()+pi0[1].momentum()).mass());
49 }
50 }
51 }
52
53
54 /// Normalise histograms etc., after the run
55 void finalize() {
56 for(unsigned int ix=0;ix<2;++ix) normalize(_h[ix]);
57 }
58
59 /// @}
60
61
62 /// @name Histograms
63 /// @{
64 Histo1DPtr _h[2];
65 /// @}
66
67
68 };
69
70
71 RIVET_DECLARE_PLUGIN(CLEOC_2008_I784516);
72
73}
|