rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BABAR_2005_I686573

Mass distributions in $B^+\to p\bar{p}K^+$
Experiment: BABAR (PEP-II)
Inspire ID: 686573
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 72 (2005) 051101
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing B+- mesons, originally Upsilon(4S) decays

Measurement of mass distributions in $B^+\to p\bar{p}K^+$. The data were read from the plots in the paper and the backgrounds given subtracted.

Source code: BABAR_2005_I686573.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+ -> p pbar K+
10  class BABAR_2005_I686573 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2005_I686573);
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( 10441);
27      BP.addStable( 10443);
28      BP.addStable( 20443);
29      BP.addStable(100443);
30      BP.addStable(   441);
31      BP.addStable(   445);
32      declare(BP, "BP");
33      // histos
34      book(_h_pp,1,1,1);
35      for(unsigned int ix=0;ix<2;++ix)
36	book(_h_pK[ix],2,1,1+ix);
37      book(_c,"TMP/nB");
38    }
39
40
41    /// Perform the per-event analysis
42    void analyze(const Event& event) {
43      static const map<PdgId,unsigned int> & mode1   = { { 2212,1}, {-2212,1}, { 321,1} };
44      static const map<PdgId,unsigned int> & mode1CC = { { 2212,1}, {-2212,1}, {-321,1} };
45      DecayedParticles BP = apply<DecayedParticles>(event, "BP");
46      // loop over particles
47      for(unsigned int ix=0;ix<BP.decaying().size();++ix) {
48       	int sign=1;
49	if(BP.modeMatches(ix,3,mode1))        sign = 1;
50	else if(BP.modeMatches(ix,3,mode1CC)) sign =-1;
51	else continue;
52	_c->fill();
53	const Particle & pp   = BP.decayProducts()[ix].at( sign*2212)[0];
54	const Particle & pbar = BP.decayProducts()[ix].at(-sign*2212)[0];
55	const Particle & Kp   = BP.decayProducts()[ix].at( sign*321 )[0];
56	_h_pp->fill((pp.momentum()+pbar.momentum()).mass());
57	double mpK    = (Kp.momentum()+pp  .momentum()).mass();
58	double mpbarK = (Kp.momentum()+pbar.momentum()).mass();
59	if(mpK>mpbarK) _h_pK[0]->fill(mpK   );
60	else           _h_pK[1]->fill(mpbarK);
61      }
62    }
63
64
65    /// Normalise histograms etc., after the run
66    void finalize() {
67      scale(_h_pp,1./ *_c);
68      for(unsigned int ix=0;ix<2;++ix)
69       	scale(_h_pK[ix],1./ *_c);
70      Histo1DPtr tmp;
71      book(tmp,2,1,3);
72      *tmp = *_h_pK[0] - *_h_pK[1];
73      tmp->setPath("/"+name()+"/"+mkAxisCode(2,1,3));
74    }
75
76    /// @}
77
78
79    /// @name Histograms
80    /// @{
81    Histo1DPtr _h_pp,_h_pK[2];
82    CounterPtr _c;
83    /// @}
84
85
86  };
87
88
89  RIVET_DECLARE_PLUGIN(BABAR_2005_I686573);
90
91}