rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BESIII_2014_I1280710

$\chi_{c(1,2)}\to \eta^\prime K^+K^-$
Experiment: BESIII ()
Inspire ID: 1280710
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 89 (2014) 7, 074030
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing chi_c1 or chi_c2

Measurement of the mass distributions in the decays $\chi_{c(1,2)}\to \eta^\prime 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]);
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}