Rivet analyses referenceBELLE_2023_I2663731mass and angular distributions in $B^0\to p(\bar\Lambda^0,\bar\Sigma^0)\pi^-$ decaysExperiment: BELLE (KEKB) Inspire ID: 2663731 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
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}
|