Rivet analyses referenceCLEOII_2001_I537154Kinematic distributions in the decay D0→K−π+π0Experiment: CLEOII (CESR) Inspire ID: 537154 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Kinematic distributions in the decay D0→K−π+π0 Source code: CLEOII_2001_I537154.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 -> K- pi+ pi0
10 class CLEOII_2001_I537154 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CLEOII_2001_I537154);
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 book(_h_Kpi0,1,1,1);
33 book(_h_Kpip,1,2,1);
34 book(_h_pipi,1,3,1);
35
36 }
37
38 /// Perform the per-event analysis
39 void analyze(const Event& event) {
40 static const double E0 = 22.1e-5 ;
41 static const double Ex = -6.89e-5 ;
42 static const double Ey = -27.1e-5 ;
43 static const double Ex2 = 10.4e-5 ;
44 static const double Exy = 38.2e-5 ;
45 static const double Ey2 = 12.4e-5 ;
46 static const double Ex3 = -3.00e-5;
47 static const double Ex2y = -7.97e-5;
48 static const double Exy2 = -12.8e-5;
49 static const double Ey3 = -0.53e-5;
50
51 static const map<PdgId,unsigned int> & mode = { {-321,1},{ 211,1}, {111,1}};
52 static const map<PdgId,unsigned int> & modeCC = { { 321,1},{-211,1}, {111,1}};
53 DecayedParticles D0 = apply<DecayedParticles>(event, "D0");
54 // loop over particles
55 for(unsigned int ix=0;ix<D0.decaying().size();++ix) {
56 int sign = 1;
57 if (D0.decaying()[ix].pid()>0 && D0.modeMatches(ix,3,mode)) {
58 sign=1;
59 }
60 else if (D0.decaying()[ix].pid()<0 && D0.modeMatches(ix,3,modeCC)) {
61 sign=-1;
62 }
63 else
64 continue;
65 const Particles & pi0= D0.decayProducts()[ix].at(111);
66 const Particles & Km = D0.decayProducts()[ix].at(-sign*321);
67 const Particles & pip= D0.decayProducts()[ix].at( sign*211);
68 double mKpip = (Km [0].momentum() + pip[0].momentum()).mass2();
69 double mKpi0 = (Km [0].momentum() + pi0[0].momentum()).mass2();
70 double mpipi = (pi0[0].momentum() + pip[0].momentum()).mass2();
71 double eff = E0 + Ex*mKpip + Ey*mpipi +Ex2*sqr(mKpip)+Exy*mKpip*mpipi+Ey2*sqr(mpipi)
72 +Ex3*pow(mKpip,3)+Ex2y*sqr(mKpip)*mpipi +Exy2*mKpip*sqr(mpipi)+Ey3*pow(mpipi,3);
73 _h_Kpi0->fill(mKpi0,eff);
74 _h_Kpip->fill(mKpip,eff);
75 _h_pipi->fill(mpipi,eff);
76 }
77 }
78
79 /// Normalise histograms etc., after the run
80 void finalize() {
81 normalize(_h_Kpi0);
82 normalize(_h_Kpip);
83 normalize(_h_pipi);
84 }
85
86 /// @}
87
88
89 /// @name Histograms
90 /// @{
91 Histo1DPtr _h_Kpi0,_h_Kpip,_h_pipi;
92 /// @}
93
94 };
95
96
97 RIVET_DECLARE_PLUGIN(CLEOII_2001_I537154);
98
99}
|