Rivet analyses referenceBESIII_2019_I1709205$J/\psi$ and $\psi(2S)\to p \bar{p}\eta^\prime$Experiment: BESIII (BEPC) Inspire ID: 1709205 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the mass distributions in the decay $J/\psi$ or $\psi(2S)\to p \bar{p}\eta^\prime$. The data were read from the plots in the paper. It is also not clear that any resolution effects have been unfolded. Source code: BESIII_2019_I1709205.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4#include "Rivet/Projections/DecayedParticles.hh"
5
6
7namespace Rivet {
8
9
10 /// @brief J/psi psi(2S) -> p pbar eta'
11 class BESIII_2019_I1709205 : public Analysis {
12 public:
13
14 /// Constructor
15 RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2019_I1709205);
16
17
18 /// @name Analysis methods
19 /// @{
20
21 /// Book histograms and initialise projections before the run
22 void init() {
23 UnstableParticles ufs = UnstableParticles(Cuts::pid==443 or Cuts::pid==100443);
24 declare(ufs, "UFS");
25 DecayedParticles psi(ufs);
26 psi.addStable(PID::PI0);
27 psi.addStable(PID::K0S);
28 psi.addStable(PID::ETA);
29 psi.addStable(PID::ETAPRIME);
30 declare(psi, "psi");
31 for(unsigned int ix=0;ix<2;++ix) {
32 for(unsigned int iy=0;iy<6;++iy) {
33 book(_h[ix][iy],1+ix,1,1+iy);
34 }
35 }
36 book(_dalitz[0], "dalitz_1",50,3.,8.,50,3.,8.);
37 book(_dalitz[1], "dalitz_2",50,3.5,5.,50,3.5,5.);
38 }
39
40
41 /// Perform the per-event analysis
42 void analyze(const Event& event) {
43 static const map<PdgId,unsigned int> & mode = { { 2212,1}, {-2212,1}, { 331,1} };
44 DecayedParticles psi = apply<DecayedParticles>(event, "psi");
45 // loop over particles
46 for(unsigned int ix=0;ix<psi.decaying().size();++ix) {
47 if(!psi.modeMatches(ix,3,mode)) continue;
48 const Particles & etap = psi.decayProducts()[ix].at( 331);
49 const Particles & pp = psi.decayProducts()[ix].at( 2212);
50 const Particles & pbar = psi.decayProducts()[ix].at(-2212);
51 double mminus = (pbar[0].momentum()+etap[0].momentum()).mass2();
52 double mplus = (pp [0].momentum()+etap[0].momentum()).mass2();
53 double mneut = (pp [0].momentum()+pbar[0].momentum()).mass2();
54 unsigned int iloc = psi.decaying()[ix].pid()==443 ? 1 : 0;
55 for(unsigned int ix=0;ix<4;ix+=3) {
56 _h[iloc][ix+2]->fill(sqrt(mneut ));
57 _h[iloc][ix+0]->fill(sqrt(mplus ));
58 _h[iloc][ix+1]->fill(sqrt(mminus));
59 }
60 _dalitz[iloc]->fill(mplus,mminus);
61 }
62 }
63
64
65 /// Normalise histograms etc., after the run
66 void finalize() {
67 for(unsigned int ix=0;ix<2;++ix) {
68 normalize(_dalitz[ix]);
69 for(unsigned int iy=0;iy<6;++iy) {
70 normalize(_h[ix][iy]);
71 }
72 }
73 }
74
75 /// @}
76
77
78 /// @name Histograms
79 /// @{
80 Histo1DPtr _h[2][6];
81 Histo2DPtr _dalitz[2];
82 /// @}
83
84
85 };
86
87
88 RIVET_DECLARE_PLUGIN(BESIII_2019_I1709205);
89
90}
|