Rivet analyses referenceCLEO_2012_I1094160Dalitz plot analysis of $D^0\to K^0_SK^\pm\pi^\mp$Experiment: CLEO (CESR) Inspire ID: 1094160 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of Kinematic distributions in the decays $D^0\to K^0_SK^\pm\pi^\mp$. The data were read from the plots in the paper. Resolution/acceptance effects have been not unfolded. Given the agreement with the model in the paper this analysis should only be used for qualitative studies. Source code: CLEO_2012_I1094160.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 K+/- pi-/+
10 class CLEO_2012_I1094160 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_2012_I1094160);
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<2;++ix) {
33 book(_h_K0Km [ix],1,1,1+3*ix);
34 book(_h_K0pip[ix],1,1,2+3*ix);
35 book(_h_Kmpip[ix],1,1,3+3*ix);
36 book(_h_K0Kp [ix],2,1,1+3*ix);
37 book(_h_K0pim[ix],2,1,2+3*ix);
38 book(_h_Kppim[ix],2,1,3+3*ix);
39 book(_dalitz [ix],"dalitz_"+toString(ix+1),50,0.3,2.0,50,0.3,2.);
40 }
41 }
42
43 /// Perform the per-event analysis
44 void analyze(const Event& event) {
45 static const map<PdgId,unsigned int> & mode = { { 321,1},{-211,1}, { 310,1}};
46 static const map<PdgId,unsigned int> & modeCC = { {-321,1},{ 211,1}, { 310,1}};
47 DecayedParticles D0 = apply<DecayedParticles>(event, "D0");
48 // loop over particles
49 for(unsigned int ix=0;ix<D0.decaying().size();++ix) {
50 if( !D0.modeMatches(ix,3,mode ) &&
51 !D0.modeMatches(ix,3,modeCC) ) continue;
52 const Particles & K0 = D0.decayProducts()[ix].at(310);
53 int sign = D0.decaying()[ix].pid()/421;
54 const Particles & pip= D0.decayProducts()[ix].find( sign*211) == D0.decayProducts()[ix].end() ?
55 Particles() : D0.decayProducts()[ix].at( sign*211);
56 const Particles & pim= D0.decayProducts()[ix].find(-sign*211) == D0.decayProducts()[ix].end() ?
57 Particles() : D0.decayProducts()[ix].at(-sign*211);
58 const Particles & Kp = D0.decayProducts()[ix].find( sign*321) == D0.decayProducts()[ix].end() ?
59 Particles() : D0.decayProducts()[ix].at( sign*321);
60 const Particles & Km = D0.decayProducts()[ix].find(-sign*321) == D0.decayProducts()[ix].end() ?
61 Particles() : D0.decayProducts()[ix].at(-sign*321);
62 // K0S K- pi+
63 if( Km.size()==1 && pip.size()==1) {
64 double mK0pip = (K0[0].momentum()+pip[0].momentum() ).mass2();
65 double mKmpip = (Km[0].momentum()+pip[0].momentum() ).mass2();
66 double mKK = (K0[0].momentum()+Km [0].momentum() ).mass2();
67 for(unsigned int ix=0;ix<2;++ix) {
68 _h_K0Km [ix]->fill(mKK );
69 _h_K0pip[ix]->fill(mK0pip);
70 _h_Kmpip[ix]->fill(mKmpip);
71 }
72 _dalitz[0]->fill(mKmpip,mK0pip);
73 }
74 // K0S K+ pi-
75 else if( Kp.size()==1 && pim.size()==1) {
76 double mK0pim = (K0[0].momentum()+pim[0].momentum() ).mass2();
77 double mKppim = (Kp[0].momentum()+pim[0].momentum() ).mass2();
78 double mKK = (K0[0].momentum()+Kp [0].momentum() ).mass2();
79 for(unsigned int ix=0;ix<2;++ix) {
80 _h_K0Kp [ix]->fill(mKK );
81 _h_K0pim[ix]->fill(mK0pim);
82 _h_Kppim[ix]->fill(mKppim);
83 }
84 _dalitz[1]->fill(mKppim,mK0pim);
85 }
86 }
87 }
88
89
90 /// Normalise histograms etc., after the run
91 void finalize() {
92 for(unsigned int ix=0;ix<2;++ix) {
93 normalize(_h_K0Km [ix]);
94 normalize(_h_K0pip[ix]);
95 normalize(_h_Kmpip[ix]);
96 normalize(_h_K0Kp [ix]);
97 normalize(_h_K0pim[ix]);
98 normalize(_h_Kppim[ix]);
99 normalize(_dalitz [ix]);
100 }
101 }
102
103 /// @}
104
105
106 /// @name Histograms
107 /// @{
108 Histo1DPtr _h_Kmpip[2], _h_K0pip[2], _h_K0Km[2];
109 Histo1DPtr _h_Kppim[2], _h_K0pim[2], _h_K0Kp[2];
110 Histo2DPtr _dalitz[2];
111 /// @}
112
113
114 };
115
116
117 RIVET_DECLARE_PLUGIN(CLEO_2012_I1094160);
118
119}
|