Rivet analyses referenceBABAR_2018_I1668123Dalitz plot analysis of $D^0\to K^0_S\pi^+\pi^-$Experiment: BABAR and BELLE (PEP-II and KEKB) Inspire ID: 1668123 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of Kinematic distributions in the decay $D^0\to K^0_S\pi^+\pi^-$ by BABAR and BELLE. The data were read from the plots in the paper. Resolution/acceptance effects have not been unfolded. Source code: BABAR_2018_I1668123.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 D0 -> KS0 pi+ pi-
10 class BABAR_2018_I1668123 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2018_I1668123);
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==421);
24 declare(ufs, "UFS");
25 DecayedParticles D0(ufs);
26 D0.addStable(PID::PI0);
27 D0.addStable(PID::K0S);
28 D0.addStable(PID::ETA);
29 D0.addStable(PID::ETAPRIME);
30 declare(D0, "D0");
31 // Histograms
32 for(unsigned int ix=0;ix<3;++ix)
33 book(_h[ix],1,1,1+ix);
34 book(_dalitz, "dalitz",50,0.3,3.2,50,0.3,3.2);
35 }
36
37
38 /// Perform the per-event analysis
39 void analyze(const Event& event) {
40
41 // define the decay mode
42 static const map<PdgId,unsigned int> & mode = { { 310,1}, { 211,1},{-211,1}};
43 DecayedParticles D0 = apply<DecayedParticles>(event, "D0");
44 // loop over particles
45 for(unsigned int ix=0;ix<D0.decaying().size();++ix) {
46 int sign = D0.decaying()[ix].pid()/421;
47 // KS0 pi+pi-
48 if (!D0.modeMatches(ix,3,mode) ) continue;
49 const Particle & pip= D0.decayProducts()[ix].at( sign*211)[0];
50 const Particle & pim= D0.decayProducts()[ix].at(-sign*211)[0];
51 const Particle & K0 = D0.decayProducts()[ix].at( 310)[0];
52 double mminus = (pim.momentum()+K0.momentum() ).mass2();
53 double mplus = (pip.momentum()+K0.momentum() ).mass2();
54 double mpipi = (pip.momentum()+pim.momentum()).mass2();
55 _h[1]->fill(mplus);
56 _h[0]->fill(mminus);
57 _h[2]->fill(mpipi);
58 _dalitz->fill(mminus,mplus);
59 }
60 }
61
62
63 /// Normalise histograms etc., after the run
64 void finalize() {
65 for(unsigned int ix=0;ix<3;++ix)
66 normalize(_h[ix],1.,false);
67 normalize(_dalitz);
68 }
69
70 /// @}
71
72
73 /// @name Histograms
74 /// @{
75 Histo1DPtr _h[3];
76 Histo2DPtr _dalitz;
77 /// @}
78
79
80 };
81
82
83 RIVET_DECLARE_PLUGIN(BABAR_2018_I1668123);
84
85}
|