Rivet analyses referenceCLEO_2008_I787608Mass distributions in χc→π+π−π0π0 and K±π∓K0Sπ0Experiment: CLEO (CESR) Inspire ID: 787608 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the mass distributions in the decays χc→π+π−π0π0 and K±π∓K0Sπ0$. The data were read from the plots in the paper and may not be corrected for efficiency. Source code: CLEO_2008_I787608.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 /// @briefchi_c -> pi+pi- 2pi0 and K pi K0 pi0
10 class CLEO_2008_I787608 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_2008_I787608);
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==10441 or
23 Cuts::pid==20443 or
24 Cuts::pid==445);
25 declare(ufs, "UFS");
26 DecayedParticles chi(ufs);
27 chi.addStable( PID::PI0);
28 chi.addStable( PID::K0S);
29 chi.addStable( PID::ETA);
30 chi.addStable( PID::ETAPRIME);
31 declare(chi, "chi");
32 unsigned int iK[3]={4,2,5};
33 for(unsigned int ix=0;ix<3;++ix) {
34 for(unsigned int iy=0;iy<iK[ix];++iy) {
35 // 4 pion
36 if(iy<2) book(_h_pi[ix][iy],1+ix,1,1+iy);
37 // 2 K 2 pi
38 book(_h_K[ix][iy],4+ix,1,1+iy);
39 }
40 }
41 }
42
43
44 /// Perform the per-event analysis
45 void analyze(const Event& event) {
46 static const map<PdgId,unsigned int> & mode1 = { { 211,1}, { -211,1}, {111,2} };
47 static const map<PdgId,unsigned int> & mode2 = { { 321,1}, { -211,1}, {111,1} , {310,1}};
48 static const map<PdgId,unsigned int> & mode3 = { {-321,1}, { 211,1}, {111,1} , {310,1}};
49 DecayedParticles chi = apply<DecayedParticles>(event, "chi");
50 for(unsigned int ix=0;ix<chi.decaying().size();++ix) {
51 unsigned int iloc = 0;
52 int sign=1;
53 if (chi.decaying()[ix].pid()==20443) iloc=1;
54 else if(chi.decaying()[ix].pid()==445) iloc=2;
55 if(chi.modeMatches(ix,4,mode1)) {
56 const Particle & pim = chi.decayProducts()[ix].at(-211)[0];
57 const Particle & pip = chi.decayProducts()[ix].at( 211)[0];
58 const Particles & pi0 = chi.decayProducts()[ix].at( 111);
59 for(unsigned int ix=0;ix<2;++ix) {
60 _h_pi[iloc][0]->fill((pip.momentum()+pi0[ix].momentum()).mass());
61 _h_pi[iloc][1]->fill((pim.momentum()+pi0[ix].momentum()).mass());
62 }
63 continue;
64 }
65 else if(chi.modeMatches(ix,4,mode2)) {
66 sign=1;
67 }
68 else if(chi.modeMatches(ix,4,mode3)) {
69 sign=-1;
70 }
71 else
72 continue;
73 const Particle & pim = chi.decayProducts()[ix].at(-sign*211)[0];
74 const Particle & Kp = chi.decayProducts()[ix].at( sign*321)[0];
75 const Particle & pi0 = chi.decayProducts()[ix].at( 111)[0];
76 const Particle & K0 = chi.decayProducts()[ix].at( 310)[0];
77 _h_K[iloc][0]->fill((Kp .momentum()+pim.momentum()).mass());
78 _h_K[iloc][1]->fill((pim.momentum()+pi0.momentum()).mass());
79 if (_h_K[iloc][2])
80 _h_K[iloc][2]->fill((Kp.momentum()+pi0.momentum()).mass());
81 if (_h_K[iloc][3])
82 _h_K[iloc][3]->fill((K0.momentum()+pim.momentum()).mass());
83 if (_h_K[iloc][4])
84 _h_K[iloc][4]->fill((K0.momentum()+pi0.momentum()).mass());
85 }
86 }
87
88
89 /// Normalise histograms etc., after the run
90 void finalize() {
91 unsigned int iK[3]={4,2,5};
92 for(unsigned int ix=0;ix<3;++ix) {
93 for(unsigned int iy=0;iy<iK[ix];++iy) {
94 // 4 pion
95 if(iy<2) normalize(_h_pi[ix][iy],1.,false);
96 // 2 K 2 pi
97 normalize(_h_K[ix][iy],1.,false);
98 }
99 }
100 }
101
102 /// @}
103
104
105 /// @name Histograms
106 /// @{
107 Histo1DPtr _h_pi[3][2];
108 Histo1DPtr _h_K [3][5];
109 /// @}
110
111
112 };
113
114
115 RIVET_DECLARE_PLUGIN(CLEO_2008_I787608);
116
117}
|