rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CLEO_2006_I733995

Anti-deuteron production in $\Upsilon$ decays
Experiment: CLEO (CESR)
Inspire ID: 733995
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 75 (2007) 012009
Beams: * *
Beam energies: ANY
Run details:
  • Upsilon(1S) decays (originally e+e- production)

Measurement of the anti-deuteron spectrum in $\Upsilon(1S)$ decays. The data are taken from table 2 in the paper.

Source code: CLEO_2006_I733995.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4
 5namespace Rivet {
 6
 7
 8  /// @brief anti-deuteron spectrum in upslion decays
 9  class CLEO_2006_I733995 : public Analysis {
10  public:
11
12    /// Constructor
13    RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_2006_I733995);
14
15
16    /// @name Analysis methods
17    /// @{
18
19    /// Book histograms and initialise projections before the run
20    void init() {
21      // Initialise and register projections
22      declare(UnstableParticles(), "UFS");
23      // histograms
24      book(_h_p,1,1,1);
25      book(_w_ups,"TMP/w_ups");
26    }
27
28    /// Recursively walk the decay tree to find decay products of @a p
29    void findDecayProducts(Particle mother, Particles& deut) {
30      // deuteron id code
31      static const long id = -1000010020;
32      for (const Particle& p: mother.children()) {
33        if (p.pid() == id) {
34          deut.push_back(p);
35        }
36        else if (!p.children().empty()) {
37          findDecayProducts(p, deut);
38        }
39      }
40    }
41
42    /// Perform the per-event analysis
43    void analyze(const Event& event) {
44      for (const Particle& ups : apply<UnstableParticles>(event, "UFS").particles(Cuts::pid==553) ) {
45        _w_ups->fill();
46        Particles deut;
47        findDecayProducts(ups, deut);
48        if (deut.empty()) continue;
49        LorentzTransform boost;
50        if (ups.p3().mod() > 1*MeV) {
51          boost = LorentzTransform::mkFrameTransformFromBeta(ups.mom().betaVec());
52        }
53        for (const Particle& p : deut) {
54          const double mom = boost.transform(p.mom()).p3().mod();
55          _h_p->fill(mom);
56        }
57      }
58    }
59
60
61    /// Normalise histograms etc., after the run
62    void finalize() {
63      const double fact = .817+.022;
64      scale(_h_p, 1e5/fact / *_w_ups);
65    }
66
67    /// @}
68
69
70    /// @name Histograms
71    /// @{
72    Histo1DPtr _h_p;
73    CounterPtr _w_ups;
74    /// @}
75
76
77  };
78
79
80  RIVET_DECLARE_PLUGIN(CLEO_2006_I733995);
81
82}