Rivet analyses referenceBESIII_2018_I1641075$\eta^\prime\to \pi^+\pi^-\gamma$ decaysExperiment: BESIII (BEPC) Inspire ID: 1641075 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Differential decay rates for $\eta^\prime\to \pi^+\pi^-\gamma$ decays. Data from HEPData has been manipulated to remove the background, correct for the efficiency, and normalise the distribution. Source code: BESIII_2018_I1641075.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief Add a short analysis description here
9 class BESIII_2018_I1641075 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2018_I1641075);
14
15
16 /// @name Analysis methods
17 //@{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21
22 // Initialise and register projections
23 declare(UnstableParticles(), "UFS");
24
25 // Book histograms
26 book(_h_m, 1, 1, 5);
27
28 }
29
30 void findDecayProducts(const Particle & mother, unsigned int & nstable, unsigned int & ngamma,
31 unsigned int & npip, unsigned int & npim, FourMomentum & ptot) {
32 for(const Particle & p : mother.children()) {
33 int id = p.pid();
34 if (id == PID::PIMINUS ) {
35 ++npim;
36 ++nstable;
37 ptot += p.momentum();
38 }
39 else if (id == PID::PIPLUS) {
40 ++npip;
41 ++nstable;
42 ptot += p.momentum();
43 }
44 else if ( !p.children().empty() ) {
45 findDecayProducts(p, nstable, ngamma,npip,npim,ptot);
46 }
47 else if (id == PID::GAMMA) {
48 ++ngamma;
49 ++nstable;
50 }
51 else
52 ++nstable;
53 }
54 }
55
56
57 /// Perform the per-event analysis
58 void analyze(const Event& event) {
59
60 // Loop over eta' mesons
61 for (const Particle& p : apply<UnstableParticles>(event, "UFS").particles(Cuts::pid==331)) {
62 unsigned nstable(0),ngamma(0),npip(0),npim(0);
63 FourMomentum ptot;
64 findDecayProducts(p,nstable,ngamma,npip,npim,ptot);
65 if(nstable==3 && npim==1 && npip==1 && ngamma==1)
66 _h_m->fill(ptot.mass());
67 }
68 }
69
70
71 /// Normalise histograms etc., after the run
72 void finalize() {
73
74 normalize(_h_m);
75
76 }
77
78 //@}
79
80
81 /// @name Histograms
82 //@{
83 Histo1DPtr _h_m;
84 //@}
85
86
87 };
88
89
90 // The hook for the plugin system
91 RIVET_DECLARE_PLUGIN(BESIII_2018_I1641075);
92
93
94}
|