Rivet analyses referenceBESIII_2015_I1373915Radiative $J/\psi$ decays to $\pi^0\pi^0$Experiment: BESIII (BEPC) Inspire ID: 1373915 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the $\pi^0\pi^0$ mass distribution in the decay $J/\psi\to\gamma\pi^0\pi^0$. Plots were read from the paper and are not corrected for efficiency/acceptance, although the backgrounds given in the paper were subtracted. Source code: BESIII_2015_I1373915.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 -> gamma pi0 pi0
10 class BESIII_2015_I1373915 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2015_I1373915);
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::abspid==443);
23 declare(ufs, "UFS");
24 DecayedParticles PSI(ufs);
25 PSI.addStable(PID::PI0);
26 declare(PSI, "PSI");
27 book(_h,1,1,1);
28 }
29
30
31 /// Perform the per-event analysis
32 void analyze(const Event& event) {
33 // find the J/psi decays
34 static const map<PdgId,unsigned int> & mode = { { 111,2},{ 22,1}};
35 DecayedParticles PSI = apply<DecayedParticles>(event, "PSI");
36 if( PSI.decaying().size()!=1) vetoEvent;
37 if(!PSI.modeMatches(0,3,mode)) vetoEvent;
38 // particles
39 const Particles & pi0 = PSI.decayProducts()[0].at(111);
40 double mpipi = (pi0[0].momentum()+pi0[1].momentum()).mass();
41 _h->fill(mpipi);
42 }
43
44
45 /// Normalise histograms etc., after the run
46 void finalize() {
47 normalize(_h,1.,false);
48 }
49
50 /// @}
51
52
53 /// @name Histograms
54 /// @{
55 Histo1DPtr _h;
56 /// @}
57
58
59 };
60
61
62 RIVET_DECLARE_PLUGIN(BESIII_2015_I1373915);
63
64}
|