rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2023_I2663731

mass and angular distributions in $B^0\to p(\bar\Lambda^0,\bar\Sigma^0)\pi^-$ decays
Experiment: BELLE (KEKB)
Inspire ID: 2663731
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References: Beams: * *
Beam energies: ANY
Run details:
  • Any process producing B0, originally Upsilon(4S) decays

Measurement of the differential branching ratio with respect to the baryon pair invariant mass for $B^0\to p(\bar\Lambda^0,\bar\Sigma^0)\pi^-$. The differential branching ratio with respect to the proton helicity angle is also measured in the threshold region, i.e. for the baryon pair mass <2.8 GeV. The data were read from the tables in the paper.

Source code: BELLE_2023_I2663731.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4#include "Rivet/Projections/DecayedParticles.hh"
 5
 6namespace Rivet {
 7
 8
 9  /// @brief B0 -> lambdabar/Sigmabar0 p pi-
10  class BELLE_2023_I2663731 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2023_I2663731);
15
16
17    /// @name Analysis methods
18    /// @{
19
20    /// Book histograms and initialise projections before the run
21    void init() {
22      // Initialise and register projections
23      UnstableParticles ufs = UnstableParticles(Cuts::pid==511);
24      declare(ufs, "UFS");
25      DecayedParticles B0(ufs);
26      B0.addStable( 3122);
27      B0.addStable(-3122);
28      B0.addStable( 3212);
29      B0.addStable(-3212);
30      declare(B0, "B0");
31      // histos
32      for (unsigned int ix=0;ix<2;++ix) {
33        book(_h_m    [ix],1,1,1+ix);
34        book(_h_theta[ix],2,1,1+ix);
35      }
36      book(_cB,"/TMP/nB");
37    }
38
39
40    /// Perform the per-event analysis
41    void analyze(const Event& event) {
42      DecayedParticles B0 = apply<DecayedParticles>(event, "B0");
43      // loop over particles
44      for (unsigned int ix=0; ix<B0.decaying().size(); ++ix) {
45        _cB->fill();
46        unsigned int imode=0;
47        if      (B0.modeMatches(ix,3,mode1)) imode=0;
48        else if (B0.modeMatches(ix,3,mode2)) imode=1;
49        else continue;
50        const Particle & pp     = B0.decayProducts()[ix].at( 2212)[0];
51        const Particle & ppim   = B0.decayProducts()[ix].at(- 211)[0];
52        const Particle & LamBar = B0.decayProducts()[ix].at(imode==0 ? -3122 : -3212)[0];
53        double mBB =  (pp.mom()+LamBar.mom()).mass();
54        _h_m[imode]->fill(mBB);
55        if (mBB>2.8) continue;
56        // boost to B rest frame
57        LorentzTransform boost =
58          LorentzTransform::mkFrameTransformFromBeta(B0.decaying()[ix].mom().betaVec());
59        FourMomentum pLam    = boost.transform(LamBar.mom());
60        FourMomentum pProton = boost.transform(pp    .mom());
61        Vector3 axis1 =  boost.transform(ppim.mom()).p3().unit();
62        LorentzTransform boost2 = LorentzTransform::mkFrameTransformFromBeta((pLam+pProton).betaVec());
63        Vector3 axis2 = boost2.transform(pProton).p3().unit();
64        _h_theta[imode]->fill(axis1.dot(axis2));
65      }
66    }
67
68
69    /// Normalise histograms etc., after the run
70    void finalize() {
71      scale(_h_m    , 1.e6/ *_cB);
72      scale(_h_theta, 1.e6/ *_cB);
73    }
74
75    /// @}
76
77
78    /// @name Histograms
79    /// @{
80    Histo1DPtr _h_m[2],_h_theta[2];
81    CounterPtr _cB;
82    const map<PdgId,unsigned int> mode1   = { { 2212,1},{-3122,1}, {-211,1}};
83    const map<PdgId,unsigned int> mode2   = { { 2212,1},{-3212,1}, {-211,1}};
84    /// @}
85
86
87  };
88
89
90  RIVET_DECLARE_PLUGIN(BELLE_2023_I2663731);
91
92}