rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ARGUS_1994_I354224

$K^0_s$ production in B decays
Experiment: ARGUS (DORIS)
Inspire ID: 354224
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Z.Phys. C62 (1994) 371-382, 1994
Beams: * *
Beam energies: ANY
Run details:
  • In principle any process producing $B^\pm$ and $B^0,\bar{B}^0$, bot original at Upsilon 4S

Measurement of the spectrum for $K^0_S$ production in $B$ decays. The original measurement was done by ARGUS at the $\Upsilon(4S)$ resonance and therefore represents that admixture of $B^\pm$ and $B^0,\bar{B}^0$.

Source code: ARGUS_1994_I354224.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/FinalState.hh"
 4#include "Rivet/Projections/UnstableParticles.hh"
 5
 6namespace Rivet {
 7
 8
 9  /// @brief k0s in b decays
10  class ARGUS_1994_I354224 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1994_I354224);
15
16
17    /// @name Analysis methods
18    /// @{
19
20    /// Book histograms and initialise projections before the run
21    void init() {
22
23      // Initialise and register projections
24      declare(UnstableParticles(), "UFS");
25
26      // Book histograms
27      book(_est_K, 1, 1, 1);
28      book(_h_K, "_hK", refData(1, 1, 1));
29      book(_nB,  "TMP/nB");
30    }
31
32    void analyzeDecay(Particle mother, Particles & kaons) {
33      for (const Particle & p : mother.children()) {
34        if (p.pid()==310) {
35          kaons.push_back(p);
36        }
37        else if (!p.children().empty()) {
38          analyzeDecay(p,kaons);
39        }
40      }
41    }
42
43    /// Perform the per-event analysis
44    void analyze(const Event& event) {
45      for (const Particle& p : apply<UnstableParticles>(event, "UFS").particles(Cuts::abspid==511 or Cuts::abspid==521)) {
46        if (!p.children().empty()) {
47          if (p.children()[0].pid()==p.pid()) continue;
48        }
49        FourMomentum pB = p.momentum();
50        const LorentzTransform B_boost = LorentzTransform::mkFrameTransformFromBeta(pB.betaVec());
51        _nB->fill();
52        Particles kaons;
53        analyzeDecay(p,kaons);
54        for (const Particle& kaon : kaons) {
55          FourMomentum pKaon = B_boost.transform(kaon.momentum());
56          _h_K->fill(pKaon.p3().mod());
57        }
58      }
59    }
60
61
62    /// Normalise histograms etc., after the run
63    void finalize() {
64
65      scale(_h_K, 1./ *_nB);
66      barchart(_h_K, _est_K);
67
68    }
69
70    /// @}
71
72
73    /// @name Histograms
74    /// @{
75    Histo1DPtr _h_K;
76    Estimate1DPtr _est_K;
77    CounterPtr _nB;
78    /// @}
79
80
81  };
82
83
84  RIVET_DECLARE_PLUGIN(ARGUS_1994_I354224);
85
86
87}