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