Rivet analyses referenceBELLE_2022_I2131772Mass distributions in $B^+\to\pi^+\pi^0\pi^0$Experiment: BELLE (KEKB) Inspire ID: 2131772 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the $\pi^+\pi^0$ and $\pi^0\pi^0$ mass distributions in $B^+\to\pi^+\pi^0\pi^0$. The background subtracted, corrected data was read from the plots in the paper Source code: BELLE_2022_I2131772.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 B+ -> pi+ pi0 pi0
10 class BELLE_2022_I2131772 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2022_I2131772);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 // projections
23 UnstableParticles ufs = UnstableParticles(Cuts::abspid==521);
24 declare(ufs, "UFS");
25 DecayedParticles BP(ufs);
26 BP.addStable( 111);
27 declare(BP, "BP");
28 // histos
29 for (unsigned int ix=0;ix<2;++ix) {
30 book(_h[ix],1,1,1+ix);
31 }
32 }
33
34
35 /// Perform the per-event analysis
36 void analyze(const Event& event) {
37 DecayedParticles BP = apply<DecayedParticles>(event, "BP");
38 for (unsigned int ix=0; ix<BP.decaying().size(); ++ix) {
39 int sign = 1;
40 if (BP.decaying()[ix].pid()>0 && BP.modeMatches(ix,3,mode)) sign= 1;
41 else if (BP.decaying()[ix].pid()<0 && BP.modeMatches(ix,3,modeCC)) sign=-1;
42 else continue;
43 const Particle & pip = BP.decayProducts()[ix].at( sign*211)[0];
44 const Particles& pi0 = BP.decayProducts()[ix].at( 111);
45 double mpip[2] = {(pip.mom()+pi0[0].mom()).mass(),
46 (pip.mom()+pi0[1].mom()).mass()};
47 _h[0]->fill(min(mpip[0],mpip[1]));
48 _h[1]->fill((pi0[0].mom()+pi0[1].mom()).mass());
49 }
50 }
51
52
53 /// Normalise histograms etc., after the run
54 void finalize() {
55 normalize(_h, 1.0, false);
56 }
57
58 /// @}
59
60
61 /// @name Histograms
62 /// @{
63 Histo1DPtr _h[2];
64 const map<PdgId,unsigned int> mode = { { 211,1}, { 111,2}};
65 const map<PdgId,unsigned int> modeCC = { {-211,1}, { 111,2}};
66 /// @}
67
68
69 };
70
71
72 RIVET_DECLARE_PLUGIN(BELLE_2022_I2131772);
73
74}
|