Rivet analyses referenceBELLE_2021_I1841899Mass distributions in $B^+\to \phi\phi K^+$Experiment: BELLE (KEKB) Inspire ID: 1841899 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Mass distributions in $B^+\to \phi\phi K^+$ measured by BELLE, the data were read from the plots in the paper. Source code: BELLE_2021_I1841899.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+ -> phi phi K+
10 class BELLE_2021_I1841899 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2021_I1841899);
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::abspid==521);
24 declare(ufs, "UFS");
25 DecayedParticles BP(ufs);
26 BP.addStable(PID::PI0);
27 BP.addStable(PID::K0S);
28 BP.addStable(PID::ETA);
29 BP.addStable(PID::ETAPRIME);
30 BP.addStable(PID::PHI);
31 declare(BP, "BP");
32 // histograms
33 for(unsigned int ix=0;ix<2;++ix)
34 book(_h[ix],1,1,1+ix);
35 }
36
37
38 /// Perform the per-event analysis
39 void analyze(const Event& event) {
40 // define the decay mode
41 static const map<PdgId,unsigned int> & mode = { { 321,1},{ 333,2}};
42 static const map<PdgId,unsigned int> & modeCC = { {-321,1},{ 333,2}};
43 DecayedParticles BP = apply<DecayedParticles>(event, "BP");
44 // loop over particles
45 for(unsigned int ix=0;ix<BP.decaying().size();++ix) {
46 int sign = 1;
47 if (BP.decaying()[ix].pid()>0 && BP.modeMatches(ix,3,mode)) {
48 sign=1;
49 }
50 else if (BP.decaying()[ix].pid()<0 && BP.modeMatches(ix,3,modeCC)) {
51 sign=-1;
52 }
53 else
54 continue;
55 const Particles & Kp = BP.decayProducts()[ix].at( sign*321);
56 const Particles & phi = BP.decayProducts()[ix].at( 333);
57 _h[0]->fill((phi[0].momentum()+phi[1].momentum()).mass());
58 _h[1]->fill((Kp [0].momentum()+phi[0].momentum()).mass());
59 _h[1]->fill((Kp [0].momentum()+phi[1].momentum()).mass());
60 }
61 }
62
63
64 /// Normalise histograms etc., after the run
65 void finalize() {
66 for(unsigned int ix=0;ix<2;++ix)
67 normalize(_h[ix],1.,false);
68 }
69
70 /// @}
71
72
73 /// @name Histograms
74 /// @{
75 Histo1DPtr _h[2];
76 /// @}
77
78
79 };
80
81
82 RIVET_DECLARE_PLUGIN(BELLE_2021_I1841899);
83
84}
|