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(_h_K, "TMP/h_K", refData(1, 1, 1));
28      book(_nB,  "TMP/nB");
29    }
30
31    void analyzeDecay(Particle mother, Particles & kaons) {
32      for (const Particle & p : mother.children()) {
33        if (p.pid()==310) {
34          kaons.push_back(p);
35        }
36        else if (!p.children().empty()) {
37          analyzeDecay(p,kaons);
38        }
39      }
40    }
41
42    /// Perform the per-event analysis
43    void analyze(const Event& event) {
44      for (const Particle& p : apply<UnstableParticles>(event, "UFS").particles(Cuts::abspid==511 or Cuts::abspid==521)) {
45        if (!p.children().empty()) {
46          if (p.children()[0].pid()==p.pid()) continue;
47        }
48        FourMomentum pB = p.momentum();
49        const LorentzTransform B_boost = LorentzTransform::mkFrameTransformFromBeta(pB.betaVec());
50        _nB->fill();
51        Particles kaons;
52        analyzeDecay(p,kaons);
53        for (const Particle& kaon : kaons) {
54          FourMomentum pKaon = B_boost.transform(kaon.momentum());
55          _h_K->fill(pKaon.p3().mod());
56        }
57      }
58    }
59
60
61    /// Normalise histograms etc., after the run
62    void finalize() {
63
64      scale(_h_K, 1./ *_nB);
65      Estimate1DPtr tmp;
66      book(tmp,1,1,1);
67      barchart(_h_K,tmp);
68
69    }
70
71    /// @}
72
73
74    /// @name Histograms
75    /// @{
76    Histo1DPtr _h_K;
77    Estimate1DPtr _est_K;
78    CounterPtr _nB;
79    /// @}
80
81
82  };
83
84
85  RIVET_DECLARE_PLUGIN(ARGUS_1994_I354224);
86
87
88}