Rivet analyses referenceCLEOC_2011_I929693$\chi_{c1}\to \eta^{(\prime)}\pi^+\pi^-$Experiment: CLEOC (CESR) Inspire ID: 929693 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY
Measurement of the mass distributions in the decays $\chi_{c1}\to \eta^{(\prime)}\pi^+\pi^-$. The data were read from the plots in the paper and may not be corrected for efficiency. Source code: CLEOC_2011_I929693.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 chi_c1 -> eta(') pi+-pi
10 class CLEOC_2011_I929693 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CLEOC_2011_I929693);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 UnstableParticles ufs = UnstableParticles(Cuts::pid==20443);
23 declare(ufs, "UFS");
24 DecayedParticles chi(ufs);
25 chi.addStable( PID::PI0);
26 chi.addStable( PID::K0S);
27 chi.addStable( PID::ETA);
28 chi.addStable( PID::ETAPRIME);
29 declare(chi, "chi");
30 for(unsigned int ix=0;ix<2;++ix)
31 for(unsigned int iy=0;iy<2;++iy)
32 book(_h[ix][iy],ix+1,1,iy+1);
33 book(_dalitz[0],"dalitz_1",50,0.,12.,50,0., 9.);
34 book(_dalitz[1],"dalitz_2",50,0.,12.,50,0., 7.);
35 }
36
37
38 /// Perform the per-event analysis
39 void analyze(const Event& event) {
40 static const map<PdgId,unsigned int> & mode1 = { { 221,1}, { 211,1}, {-211,1} };
41 static const map<PdgId,unsigned int> & mode2 = { { 331,1}, { 211,1}, {-211,1} };
42 DecayedParticles chi = apply<DecayedParticles>(event, "chi");
43 // loop over particles
44 for(unsigned int ix=0;ix<chi.decaying().size();++ix) {
45 if(chi.modeMatches(ix,3,mode1)) {
46 const Particle & eta = chi.decayProducts()[ix].at( 221)[0];
47 const Particle & pim = chi.decayProducts()[ix].at(-211)[0];
48 const Particle & pip = chi.decayProducts()[ix].at( 211)[0];
49 double m1 = (pip.momentum()+pim.momentum()).mass2();
50 double m2 = (eta.momentum()+pip.momentum()).mass2();
51 double m3 = (eta.momentum()+pim.momentum()).mass2();
52 _dalitz[0]->fill(m2,m1);
53 _h[0][1]->fill(sqrt(m1));
54 _h[0][0]->fill(sqrt(m2));
55 _h[0][0]->fill(sqrt(m3));
56 }
57 else if(chi.modeMatches(ix,3,mode2)) {
58 const Particle & eta = chi.decayProducts()[ix].at( 331)[0];
59 const Particle & pim = chi.decayProducts()[ix].at(-211)[0];
60 const Particle & pip = chi.decayProducts()[ix].at( 211)[0];
61 double m1 = (pip.momentum()+pim.momentum()).mass2();
62 double m2 = (eta.momentum()+pip.momentum()).mass2();
63 double m3 = (eta.momentum()+pim.momentum()).mass2();
64 _dalitz[1]->fill(m2,m1);
65 _h[1][1]->fill(sqrt(m1));
66 _h[1][0]->fill(sqrt(m2));
67 _h[1][0]->fill(sqrt(m3));
68 }
69 }
70 }
71
72
73 /// Normalise histograms etc., after the run
74 void finalize() {
75 for(unsigned int ix=0;ix<2;++ix) {
76 normalize(_dalitz[ix]);
77 for(unsigned int iy=0;iy<2;++iy)
78 normalize(_h[ix][iy]);
79 }
80 }
81
82 /// @}
83
84
85 /// @name Histograms
86 /// @{
87 Histo1DPtr _h[2][2];
88 Histo2DPtr _dalitz[2];
89 /// @}
90
91
92 };
93
94
95 RIVET_DECLARE_PLUGIN(CLEOC_2011_I929693);
96
97}
|