Rivet analyses referenceBABAR_2017_I1512302Dalitz plot analysis of $J/\psi\to\pi^+\pi^-\pi^0$, $K^+K^-\pi^0$ and $K^0_SK^\pm\pi^\mp$Experiment: BABAR (PEP-II) Inspire ID: 1512302 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the mass distributions in the decays $J/\psi\to\pi^+\pi^-\pi^0$, $K^+K^-\pi^0$ and $K^0_SK^\pm\pi^\mp$ by BaBar. The data were read from the plots in the paper and therefore for some points the error bars are the size of the point. Also the sideband background from the plots has been subtracted. It is also not clear that any resolution effects have been unfolded. Source code: BABAR_2017_I1512302.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 J/psi dalitz decays
10 class BABAR_2017_I1512302 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2017_I1512302);
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== 443);
24 declare(ufs, "UFS");
25 DecayedParticles PSI(ufs);
26 PSI.addStable(PID::PI0);
27 PSI.addStable(PID::K0S);
28 declare(PSI,"PSI");
29 // histos
30 book(_h_pippim,1,1,1);
31 book(_h_pippi0,1,1,2);
32 book(_dalitz_3pi, "dalitz_3pi",50,0.,9.,50,0.0,9.);
33 book(_h_KpKm ,2,1,1);
34 book(_h_Kppi0,2,1,2);
35 book(_dalitz_KpKmpi, "dalitz_KpKmpi",50,0.,7.,50,0.0,7.);
36 book(_h_K0Kp ,3,1,1);
37 book(_h_K0pip,3,1,2);
38 book(_h_Kppip,3,1,3);
39 book(_dalitz_K0Kppim, "dalitz_K0Kppim",50,0.,8.,50,0.,8.);
40 }
41
42 /// Perform the per-event analysis
43 void analyze(const Event& event) {
44 static const map<PdgId,unsigned int> & mode1 = { { 211,1},{-211,1}, {111,1}};
45 static const map<PdgId,unsigned int> & mode2 = { { 321,1},{-321,1}, {111,1}};
46 static const map<PdgId,unsigned int> & mode3 = { { 321,1},{-211,1}, {310,1}};
47 static const map<PdgId,unsigned int> & mode3CC = { {-321,1},{ 211,1}, {310,1}};
48 DecayedParticles PSI = apply<DecayedParticles>(event, "PSI");
49 // loop over particles
50 for(unsigned int ix=0;ix<PSI.decaying().size();++ix) {
51 if (PSI.modeMatches(ix,3,mode1)) {
52 const Particle & pip = PSI.decayProducts()[ix].at( 211)[0];
53 const Particle & pim = PSI.decayProducts()[ix].at(-211)[0];
54 const Particle & pi0 = PSI.decayProducts()[ix].at( 111)[0];
55 double mminus = (pim.momentum()+pi0.momentum()).mass2();
56 double mplus = (pip.momentum()+pi0.momentum()).mass2();
57 double mneut = (pip.momentum()+pim.momentum()).mass2();
58 _h_pippim->fill(mneut );
59 _h_pippi0->fill(mplus );
60 _h_pippi0->fill(mminus);
61 _dalitz_3pi->fill(mplus,mminus);
62 }
63 else if (PSI.modeMatches(ix,3,mode2)) {
64 const Particle & Kp = PSI.decayProducts()[ix].at( 321)[0];
65 const Particle & Km = PSI.decayProducts()[ix].at(-321)[0];
66 const Particle & pi0 = PSI.decayProducts()[ix].at( 111)[0];
67 double mminus = (Km.momentum()+pi0.momentum()).mass2();
68 double mplus = (Kp.momentum()+pi0.momentum()).mass2();
69 double mneut = (Kp.momentum()+Km.momentum()).mass2();
70 _h_KpKm->fill(mneut );
71 _h_Kppi0->fill(mplus );
72 _h_Kppi0->fill(mminus);
73 _dalitz_KpKmpi->fill(mplus,mminus);
74 }
75 else {
76 int sign =1;
77 if (PSI.modeMatches(ix,3,mode3 )) sign= 1;
78 else if(PSI.modeMatches(ix,3,mode3CC)) sign=-1;
79 else continue;
80 const Particle & Kp = PSI.decayProducts()[ix].at( sign*321)[0];
81 const Particle & pim = PSI.decayProducts()[ix].at(-sign*211)[0];
82 const Particle & K0 = PSI.decayProducts()[ix].at( 310)[0];
83 double mplus = (Kp.momentum() + K0.momentum()).mass2();
84 double mminus = (K0.momentum() + pim.momentum()).mass2();
85 double mKK = (Kp.momentum() + K0.momentum()).mass2();
86 _h_K0Kp ->fill(mKK);
87 _h_Kppip->fill(mplus);
88 _h_K0pip->fill(mminus);
89 _dalitz_K0Kppim->fill(mplus,mminus);
90 }
91 }
92 }
93
94
95 /// Normalise histograms etc., after the run
96 void finalize() {
97 normalize(_h_pippim,1.,false);
98 normalize(_h_pippi0,1.,false);
99 normalize(_dalitz_3pi);
100 normalize(_h_KpKm,1.,false);
101 normalize(_h_Kppi0,1.,false);
102 normalize(_dalitz_KpKmpi);
103 normalize(_h_Kppip);
104 normalize(_h_K0pip);
105 normalize(_h_K0Kp );
106 normalize(_dalitz_K0Kppim);
107 }
108
109 /// @}
110
111
112 /// @name Histograms
113 /// @{
114 Histo1DPtr _h_pippim,_h_pippi0;
115 Histo2DPtr _dalitz_3pi;
116 Histo1DPtr _h_KpKm,_h_Kppi0;
117 Histo2DPtr _dalitz_KpKmpi;
118 Histo1DPtr _h_Kppip,_h_K0pip,_h_K0Kp;
119 Histo2DPtr _dalitz_K0Kppim;
120 /// @}
121
122
123 };
124
125
126 RIVET_DECLARE_PLUGIN(BABAR_2017_I1512302);
127
128}
|