Rivet analyses referenceBESIII_2016_I1411448$J/\psi\to p \bar{p}\phi$Experiment: BESIII (BEPC) Inspire ID: 1411448 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the mass distributions in the decay $J/\psi\to p \bar{p}\phi$. 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_2016_I1411448.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 -> p pbar phi
10 class BESIII_2016_I1411448 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2016_I1411448);
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==443);
23 declare(ufs, "UFS");
24 DecayedParticles psi(ufs);
25 psi.addStable(PID::PI0);
26 psi.addStable(PID::K0S);
27 psi.addStable(PID::ETA);
28 psi.addStable(PID::ETAPRIME);
29 psi.addStable(PID::OMEGA);
30 psi.addStable(PID::PHI);
31 declare(psi, "psi");
32 for(unsigned int ix=0;ix<6;++ix)
33 book(_h[ix],1,1,1+ix);
34 book(_dalitz, "dalitz",50,3.5,5.,50,3.5,5.);
35 }
36
37
38 /// Perform the per-event analysis
39 void analyze(const Event& event) {
40 static const map<PdgId,unsigned int> & mode = { { 2212,1}, {-2212,1}, { 333,1} };
41 DecayedParticles psi = apply<DecayedParticles>(event, "psi");
42 // loop over particles
43 for(unsigned int ix=0;ix<psi.decaying().size();++ix) {
44 if(!psi.modeMatches(ix,3,mode)) continue;
45 const Particles & phi = psi.decayProducts()[ix].at( 333);
46 const Particles & pp = psi.decayProducts()[ix].at( 2212);
47 const Particles & pbar = psi.decayProducts()[ix].at(-2212);
48 double mminus = (pbar[0].momentum()+phi [0].momentum()).mass2();
49 double mplus = (pp [0].momentum()+phi [0].momentum()).mass2();
50 double mneut = (pp [0].momentum()+pbar[0].momentum()).mass2();
51 _h[1]->fill(sqrt(mplus ));
52 _h[4]->fill(sqrt(mplus ));
53 _h[0]->fill(sqrt(mneut ));
54 _h[3]->fill(sqrt(mneut ));
55 _h[2]->fill(sqrt(mminus));
56 _h[5]->fill(sqrt(mminus));
57 _dalitz->fill(mplus,mminus);
58 }
59 }
60
61
62 /// Normalise histograms etc., after the run
63 void finalize() {
64 for(unsigned int ix=0;ix<6;++ix)
65 normalize(_h[ix]);
66 normalize(_dalitz);
67 }
68
69 /// @}
70
71
72 /// @name Histograms
73 /// @{
74 Histo1DPtr _h[6];
75 Histo2DPtr _dalitz;
76 /// @}
77
78
79 };
80
81
82 RIVET_DECLARE_PLUGIN(BESIII_2016_I1411448);
83
84}
|