Rivet analyses referenceBESIII_2019_I1749793$\phi$ momentum spectrum in $D\to\phi X$ decaysExperiment: BESIII (BEPC) Inspire ID: 1749793 Status: VALIDATED NOHEPDATA Authors:
Beam energies: (1.9, 1.9) GeV Run details:
Measurement of $\phi$ momentum spectrum in $D\to\phi X$ decays. The uncorrected data was read from the figures in the paper and the small background given subtracted. Source code: BESIII_2019_I1749793.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief D -> phi X
9 class BESIII_2019_I1749793 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2019_I1749793);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 // projections
22 declare(UnstableParticles(Cuts::pid==30443), "UFS");
23 // histos
24 for (unsigned int ix=0; ix<2; ++ix) {
25 book(_h[ix], 1, 1, 1+ix);
26 }
27 }
28
29 void findChildren(const Particle & p, Particles & phi) {
30 for (const Particle& child : p.children()) {
31 if (child.pid()==333) {
32 phi.push_back(child);
33 }
34 else if (!child.children().empty()) {
35 findChildren(child,phi);
36 }
37 }
38 }
39
40 /// Perform the per-event analysis
41 void analyze(const Event& event) {
42 Particles psi = apply<UnstableParticles>(event, "UFS").particles();
43 if (psi.size()!=1) vetoEvent;
44 for (const Particle& D : psi[0].children()) {
45 int ih=-1;
46 if (D.abspid()==411) ih=0;
47 else if (D.abspid()==421) ih=1;
48 else continue;
49 Particles phi;
50 findChildren(D,phi);
51 for (const Particle& p : phi) {
52 _h[ih]->fill(p.momentum().p3().mod());
53 }
54 }
55 }
56
57
58 /// Normalise histograms etc., after the run
59 void finalize() {
60 normalize(_h, 1.0, false);
61 }
62
63 /// @}
64
65
66 /// @name Histograms
67 /// @{
68 Histo1DPtr _h[2];
69 /// @}
70
71
72 };
73
74
75 RIVET_DECLARE_PLUGIN(BESIII_2019_I1749793);
76
77}
|