Rivet analyses referenceBESIII_2020_I1763897$\chi_{c(0,1,2)}\to \phi\phi\eta$Experiment: BESIII (BEPC) Inspire ID: 1763897 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the mass distributions in the decays $\chi_{c(0,1,2)}\to \phi\phi\eta$. The data were read from the plots in the paper and may not be corrected for efficiency or background. Source code: BESIII_2020_I1763897.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_c -> phi phi eta
10 class BESIII_2020_I1763897 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2020_I1763897);
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 or
23 Cuts::pid==445 or
24 Cuts::pid==10441);
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 chi.addStable( PID::PHI);
32 declare(chi, "chi");
33 for(unsigned int ix=0;ix<3;++ix) {
34 book(_dalitz[ix], "dalitz_"+toString(ix+1),50,2.,7.,50,2.,7.);
35 for(unsigned int iy=0;iy<2;++iy) {
36 book(_h[ix][iy],1+ix,1,1+iy);
37 }
38 }
39 }
40
41
42 /// Perform the per-event analysis
43 void analyze(const Event& event) {
44 static const map<PdgId,unsigned int> & mode = { {333,2}, {221,1}};
45 DecayedParticles chi = apply<DecayedParticles>(event, "chi");
46 // loop over particles
47 for(unsigned int ix=0;ix<chi.decaying().size();++ix) {
48 if(!chi.modeMatches(ix,3,mode)) continue;
49 unsigned int iloc = chi.decaying()[ix].pid()==10441 ? 0 : chi.decaying()[ix].pid()==445 ? 2 : 1;
50 const Particle & eta = chi.decayProducts()[ix].at(221)[0];
51 const Particles & phi = chi.decayProducts()[ix].at(333);
52 _h[iloc][0]->fill((phi[0].momentum()+phi[1].momentum()).mass());
53 double mPhiEta[2]={(phi[0].momentum()+eta.momentum()).mass2(),
54 (phi[1].momentum()+eta.momentum()).mass2()};
55 _h[iloc][1]->fill(sqrt(mPhiEta[0]));
56 _h[iloc][1]->fill(sqrt(mPhiEta[1]));
57 _dalitz[iloc]->fill(mPhiEta[0],mPhiEta[1]);
58 _dalitz[iloc]->fill(mPhiEta[1],mPhiEta[0]);
59 }
60 }
61
62
63 /// Normalise histograms etc., after the run
64 void finalize() {
65 for(unsigned int ix=0;ix<3;++ix) {
66 normalize(_dalitz[ix]);
67 for(unsigned int iy=0;iy<2;++iy) {
68 normalize(_h[ix][iy],1.,false);
69 }
70 }
71 }
72
73 /// @}
74
75
76 /// @name Histograms
77 /// @{
78 Histo1DPtr _h[3][2];
79 Histo2DPtr _dalitz[3];
80 /// @}
81
82
83 };
84
85
86 RIVET_DECLARE_PLUGIN(BESIII_2020_I1763897);
87
88}
|