Rivet analyses referenceCLEO_2003_I633196Dalitz plot analysis of $D^0\to K^0_S\pi^+\pi^-$Experiment: CLEO (CESR) Inspire ID: 633196 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Kinematic distributions in the decay $D^0\to K^0_S\pi^+\pi^-$ Source code: CLEO_2003_I633196.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 CLEO_2003_I633196 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_2003_I633196);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22
23 // Initialise and register projections
24 UnstableParticles ufs = UnstableParticles(Cuts::abspid==421);
25 declare(ufs, "UFS");
26 DecayedParticles D0(ufs);
27 D0.addStable(PID::PI0);
28 D0.addStable(PID::K0S);
29 D0.addStable(PID::ETA);
30 D0.addStable(PID::ETAPRIME);
31 declare(D0, "D0");
32
33 // Histograms
34 book(_h_Kpim,1,1,1);
35 book(_h_pipi,1,1,2);
36 book(_h_Kpip,1,1,3);
37 book(_dalitz, "dalitz",50,0.,3.,50,0.,2.);
38 }
39
40 /// Perform the per-event analysis
41 void analyze(const Event& event) {
42 // define the decay mode
43 static const map<PdgId,unsigned int> & mode = { { 310,1}, { 211,1},{-211,1}};
44 DecayedParticles D0 = apply<DecayedParticles>(event, "D0");
45 // loop over particles
46 for(unsigned int ix=0;ix<D0.decaying().size();++ix) {
47 if (!D0.modeMatches(ix,3,mode) ) continue;
48 int sign = D0.decaying()[ix].pid()/421;
49 const Particles & pip= D0.decayProducts()[ix].at( sign*211);
50 const Particles & pim= D0.decayProducts()[ix].at(-sign*211);
51 const Particles & K0 = D0.decayProducts()[ix].at( 310);
52 double mminus = (pim[0].momentum()+K0[0].momentum() ).mass2();
53 double mplus = (pip[0].momentum()+K0[0].momentum() ).mass2();
54 double mpipi = (pip[0].momentum()+pim[0].momentum()).mass2();
55 _h_Kpip->fill(mplus);
56 _h_Kpim->fill(mminus);
57 _h_pipi->fill(mpipi);
58 _dalitz->fill(mminus,mpipi);
59 }
60 }
61
62
63 /// Normalise histograms etc., after the run
64 void finalize() {
65 normalize(_h_Kpip);
66 normalize(_h_pipi);
67 normalize(_h_Kpim);
68 normalize(_dalitz);
69 }
70
71 /// @}
72
73
74 /// @name Histograms
75 /// @{
76 Histo1DPtr _h_Kpim,_h_pipi,_h_Kpip;
77 Histo2DPtr _dalitz;
78 /// @}
79
80
81 };
82
83
84 RIVET_DECLARE_PLUGIN(CLEO_2003_I633196);
85
86}
|