rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BESIII_2019_I1749793

$\phi$ momentum spectrum in $D\to\phi X$ decays
Experiment: BESIII (BEPC)
Inspire ID: 1749793
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 100 (2019) 7, 072006
Beams: e+ e-
Beam energies: (1.9, 1.9) GeV
Run details:
  • e+e- to D Dbat at psi(3770)

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}