Rivet analyses referenceBESIII_2023_I2670262Mass distributions in , decaysExperiment: BESIII (BEPC) Inspire ID: 2670262 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Mass distributions in , decays and charge conjugate decays. The data were read from the figures in the paper and the backgrounds given subtracted. Source code: BESIII_2023_I2670262.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
10 class BESIII_2023_I2670262 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2023_I2670262);
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 UnstableParticles ufs = UnstableParticles(Cuts::pid==443);
22 declare(ufs, "UFS");
23 DecayedParticles psi(ufs);
24 psi.addStable(PID::PI0);
25 psi.addStable(PID::K0S);
26 psi.addStable( 3122);
27 psi.addStable(-3122);
28 psi.addStable( 3112);
29 psi.addStable(-3112);
30 psi.addStable( 3222);
31 psi.addStable(-3222);
32 declare(psi, "psi");
33 for(unsigned int ix=0;ix<4;++ix) {
34 for (unsigned int iy=0; iy<3; ++iy)
35 book(_h[ix][iy], 1+ix, 1, 1+iy);
36 }
37 }
38
39
40 /// Perform the per-event analysis
41 void analyze(const Event& event) {
42 DecayedParticles psi = apply<DecayedParticles>(event, "psi");
43 // loop over particles
44 for (unsigned int ix=0;ix<psi.decaying().size();++ix) {
45 int isgn,ipi,isig=3112,imode;
46 if (psi.modeMatches(ix,3,mode1)) {
47 isgn = -1;
48 ipi = 1;
49 imode= 0;
50 }
51 else if(psi.modeMatches(ix,3,mode2)) {
52 isgn = 1;
53 ipi = -1;
54 imode= 1;
55 }
56 else if(psi.modeMatches(ix,3,mode3)) {
57 isgn = -1;
58 ipi = -1;
59 isig = 3222;
60 imode= 2;
61 }
62 else if(psi.modeMatches(ix,3,mode4)) {
63 isgn = 1;
64 ipi = 1;
65 isig = 3222;
66 imode= 3;
67 }
68 else continue;
69 const Particle& lam = psi.decayProducts()[ix].at( isgn*3122)[0];
70 const Particle& sig = psi.decayProducts()[ix].at(-isgn*isig)[0];
71 const Particle& pi = psi.decayProducts()[ix].at( ipi*211 )[0];
72 _h[imode][0]->fill((lam.mom()+pi .mom()).mass());
73 _h[imode][1]->fill((sig.mom()+pi .mom()).mass());
74 _h[imode][2]->fill((lam.mom()+sig.mom()).mass());
75 }
76 }
77
78
79 /// Normalise histograms etc., after the run
80 void finalize() {
81 normalize(_h);
82 }
83
84 /// @}
85
86 /// @name Histograms
87 /// @{
88 Histo1DPtr _h[4][3];
89 const map<PdgId,unsigned int> mode1 = { {-3122,1}, { 3112,1}, { 211,1} };
90 const map<PdgId,unsigned int> mode2 = { { 3122,1}, {-3112,1}, {-211,1} };
91 const map<PdgId,unsigned int> mode3 = { {-3122,1}, { 3222,1}, {-211,1} };
92 const map<PdgId,unsigned int> mode4 = { { 3122,1}, {-3222,1}, { 211,1} };
93 /// @}
94
95 };
96
97
98 RIVET_DECLARE_PLUGIN(BESIII_2023_I2670262);
99
100}
|