rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BABAR_2017_I1336340

Mass distributions in $B^\pm\to K^0_S \pi^\pm\pi^0$
Experiment: BABAR (PEP-II)
Inspire ID: 1336340
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 96 (2017) 7, 072001
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing B+/- originally Upsilon(4S) decays

Mass distributions in $B^\pm\to K^0_S \pi^\pm\pi^0$. The data were read from the plot in the paper and the backgrounds given subtracted, however the backgrounds are large.

Source code: BABAR_2017_I1336340.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+ -> KS0 pi+ pi0
10  class BABAR_2017_I1336340 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2017_I1336340);
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(310);
27      BP.addStable(111);
28      declare(BP, "BP");
29      // histograms
30      for(unsigned int ix=0;ix<3;++ix) {
31	book(_h_sum[ix],1,1,1+ix);
32	for(unsigned int iy=0;iy<2;++iy)
33	  book(_h_charge[iy][ix],2,1+iy,1+ix);
34      }
35    }
36
37
38    /// Perform the per-event analysis
39    void analyze(const Event& event) {
40      static const map<PdgId,unsigned int> & mode   = { { 211,1}, { 111,1}, { 310,1}};
41      static const map<PdgId,unsigned int> & modeCC = { {-211,1}, { 111,1}, { 310,1}};
42      DecayedParticles BP = apply<DecayedParticles>(event, "BP");
43      for(unsigned int ix=0;ix<BP.decaying().size();++ix) {
44      	int sign = 1;
45      	if (BP.decaying()[ix].pid()>0 && BP.modeMatches(ix,3,mode))        sign= 1;
46      	else if (BP.decaying()[ix].pid()<0 && BP.modeMatches(ix,3,modeCC)) sign=-1;
47      	else continue;
48      	const Particle & pip = BP.decayProducts()[ix].at( sign*211)[0];
49  	const Particle & pi0 = BP.decayProducts()[ix].at(      111)[0];
50  	const Particle & K0  = BP.decayProducts()[ix].at(      310)[0];
51	double mKpip = (K0 .momentum()+pip.momentum()).mass();
52	double mKpi0 = (K0 .momentum()+pi0.momentum()).mass();
53	// veto D decaysa
54	if(mKpi0>1.804 && mKpi0<1.924) continue;
55	double mpipi = (pi0.momentum()+pip.momentum()).mass();
56	_h_sum[0]->fill(mKpip);
57	_h_sum[1]->fill(mKpi0);
58	_h_sum[2]->fill(mpipi);
59	_h_charge[(1-sign)/2][0]->fill(mKpip);
60	_h_charge[(1-sign)/2][1]->fill(mKpi0);
61	_h_charge[(1-sign)/2][2]->fill(mpipi);
62      }
63    }
64
65
66    /// Normalise histograms etc., after the run
67    void finalize() {
68      for(unsigned int ix=0;ix<3;++ix) {
69	normalize(_h_sum[ix],1.,false);
70	for(unsigned int iy=0;iy<2;++iy)
71	  normalize(_h_charge[iy][ix],1.,false);
72      }
73    }
74
75    /// @}
76
77
78    /// @name Histograms
79    /// @{
80    Histo1DPtr _h_sum[3],_h_charge[2][3];
81    /// @}
82
83
84  };
85
86
87  RIVET_DECLARE_PLUGIN(BABAR_2017_I1336340);
88
89}