Rivet analyses referenceBESIII_2014_I1280710χc(1,2)→η′K+K−Experiment: BESIII () Inspire ID: 1280710 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the mass distributions in the decays χc(1,2)→η′K+K−. The data were read from the plots in the paper and may not be corrected for efficiency. Source code: BESIII_2014_I1280710.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 -> eta' K+K-
10 class BESIII_2014_I1280710 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2014_I1280710);
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 Cuts::pid==445);
23 declare(ufs, "UFS");
24 DecayedParticles chi(ufs);
25 chi.addStable( PID::PI0);
26 chi.addStable( PID::K0S);
27 chi.addStable( PID::ETA);
28 chi.addStable( PID::ETAPRIME);
29 declare(chi, "chi");
30 for(unsigned int ix=0;ix<4;++ix)
31 for(unsigned int iy=0;iy<2;++iy)
32 book(_h[ix][iy],1+ix,1,1+iy);
33 for(unsigned int ix=0;ix<2;++ix)
34 book(_dalitz[ix],"dalitz_"+toString(ix+1),50,2.,10.,50,2., 10.);
35 }
36
37
38 /// Perform the per-event analysis
39 void analyze(const Event& event) {
40 static const map<PdgId,unsigned int> & mode1 = { { 331,1}, { 321,1}, {-321,1} };
41 DecayedParticles chi = apply<DecayedParticles>(event, "chi");
42 // loop over particles
43 for(unsigned int ix=0;ix<chi.decaying().size();++ix) {
44 if(!chi.modeMatches(ix,3,mode1)) continue;
45 unsigned int iloc = chi.decaying()[ix].pid()==445 ? 1 : 0;
46 const Particle & eta = chi.decayProducts()[ix].at( 331)[0];
47 const Particle & Km = chi.decayProducts()[ix].at(-321)[0];
48 const Particle & Kp = chi.decayProducts()[ix].at( 321)[0];
49 double m1 = (Kp .momentum()+Km.momentum()).mass2();
50 double m2 = (eta.momentum()+Kp.momentum()).mass2();
51 double m3 = (eta.momentum()+Km.momentum()).mass2();
52 _dalitz[iloc]->fill(m2,m3);
53 for(unsigned int ix=0;ix<2;++ix) {
54 _h[2*iloc+ix][0]->fill(sqrt(m1));
55 _h[2*iloc+ix][1]->fill(sqrt(m2));
56 _h[2*iloc+ix][1]->fill(sqrt(m3));
57 }
58 }
59 }
60
61
62 /// Normalise histograms etc., after the run
63 void finalize() {
64 for(unsigned int iy=0;iy<2;++iy) {
65 normalize(_dalitz[iy]);
66 for(unsigned int ix=0;ix<4;++ix)
67 normalize(_h[ix][iy],1.,false);
68 }
69 }
70
71 /// @}
72
73
74 /// @name Histograms
75 /// @{
76 Histo1DPtr _h[4][2];
77 Histo2DPtr _dalitz[2];
78 /// @}
79
80
81 };
82
83
84 RIVET_DECLARE_PLUGIN(BESIII_2014_I1280710);
85
86}
|