Rivet analyses referenceBABAR_2006_I714447Momentum Spectra and cross sections for $D_{sJ}^*(2317)^+$ and $D_{sJ}^*(2460)^+$ at 10.6 GeVExperiment: BABAR (PEP-II) Inspire ID: 714447 Status: VALIDATED Authors:
Beam energies: (5.3, 5.3) GeV Run details:
Momentum Spectra and cross sections for $D_{sJ}^*(2317)^+$ and $D_{sJ}^*(2460)^+$ at 10.6 GeV. All spectra and cross sections are for the centre-of-mass momentum of the excited $D_s$ state, $p^*$, greater than 3.2 GeV. Source code: BABAR_2006_I714447.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief D*(sJ) production
9 class BABAR_2006_I714447 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2006_I714447);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 // projections
22 declare(UnstableParticles(),"UFS");
23 // histograms
24 // dists
25 book(_s_2317 ,2,1,1);
26 book(_s_2460_1,3,1,1);
27 book(_s_2460_2,4,1,1);
28 book(_hel ,5,1,1);
29 // rates
30 book(_r_2317 ,1,1,1);
31 book(_r_2460_1,1,1,2);
32 book(_r_2460_2,1,1,3);
33 book(_r_2460_3,1,1,4);
34 book(_r_2460_4,1,1,5);
35 book(_r_2536 ,1,1,6);
36 }
37
38
39 /// Perform the per-event analysis
40 void analyze(const Event& event) {
41 for(const Particle & Ds: apply<UnstableParticles>(event,"UFS").particles(Cuts::pid==10433 or
42 Cuts::pid==20433 or
43 Cuts::pid==10431)) {
44 // cut of 3.2 GeV of the momentum
45 double mom=Ds.momentum().p3().mod();
46 if(mom<=3.2) continue;
47 if(Ds.abspid()==10431) {
48 _s_2317->fill(mom);
49 }
50 else if(Ds.abspid()==20433) {
51 _s_2460_1->fill(mom);
52 _s_2460_2->fill(mom);
53 }
54 int sign = Ds.pid()/Ds.abspid();
55 Particle DsStar;
56 bool doHelicity=false;
57 // identify the decay mode
58 if(Ds.children().size()==2) {
59 if(Ds.children()[0].pid()==sign*431 &&
60 Ds.children()[1].pid()==111) {
61 if(Ds.abspid()==10431) _r_2317->fill("10.6"s);
62 }
63 else if(Ds.children()[1].pid()==sign*431 &&
64 Ds.children()[0].pid()==111) {
65 if(Ds.abspid()==10431) _r_2317->fill("10.6"s);
66 }
67 else if(Ds.children()[0].pid()==sign*433 &&
68 Ds.children()[1].pid()==111) {
69 if(Ds.abspid()==20433) {
70 _r_2460_3->fill("10.6"s);
71 DsStar=Ds.children()[0];
72 doHelicity=true;
73 }
74 }
75 else if(Ds.children()[1].pid()==sign*433 &&
76 Ds.children()[0].pid()==111) {
77 if(Ds.abspid()==20433) {
78 _r_2460_3->fill("10.6"s);
79 DsStar=Ds.children()[1];
80 doHelicity=true;
81 }
82 }
83 else if(Ds.children()[0].pid()==sign*431 &&
84 Ds.children()[1].pid()==22) {
85 if(Ds.abspid()==20433) _r_2460_1->fill("10.6"s);
86 }
87 else if(Ds.children()[1].pid()==sign*431 &&
88 Ds.children()[0].pid()==22) {
89 if(Ds.abspid()==20433) _r_2460_1->fill("10.6"s);
90 }
91 if(doHelicity && DsStar.children().size()==2) {
92 Particle gamma;
93 doHelicity=false;
94 for(const Particle & p : DsStar.children()) {
95 if(p.pid()==22) {
96 doHelicity=true;
97 gamma=p;
98 }
99 }
100 if(doHelicity) {
101 LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(Ds.momentum().betaVec());
102 FourMomentum pDsStar = boost.transform(DsStar.momentum());
103 FourMomentum pGamma = boost.transform(gamma .momentum());
104 LorentzTransform boost2 = LorentzTransform::mkFrameTransformFromBeta(pDsStar.betaVec());
105 FourMomentum pGamma2 = boost2.transform(pGamma);
106 double cTheta = pGamma2.p3().unit().dot(pDsStar.p3().unit());
107 _hel->fill(cTheta);
108 }
109 }
110 }
111 Particles D, pip, pi0, gamma;
112 unsigned int nstable(0);
113 findDecayProducts(Ds,D,pip,pi0,gamma,nstable);
114 if(nstable==3) {
115 if(D.size()==1&&pip.size()==2) {
116 if(Ds.abspid()==20433) {
117 _r_2460_4->fill("10.6"s);
118 }
119 else if(Ds.abspid()==10433) {
120 _r_2536 ->fill("10.6"s);
121 }
122 }
123 else if(D.size()==1&&pi0.size()==1&&gamma.size()==1) {
124 if(Ds.abspid()==20433)
125 _r_2460_2->fill("10.6"s);
126 }
127 }
128 }
129 }
130
131 void findDecayProducts(Particle parent, Particles & Ds, Particles & pip, Particles & pi0,
132 Particles & gamma, unsigned int & nstable) {
133 for(const Particle & p: parent.children()) {
134 if(p.pid()==111) {
135 pi0.push_back(p);
136 ++nstable;
137 }
138 else if(p.pid()==22) {
139 gamma.push_back(p);
140 ++nstable;
141 }
142 else if(p.abspid()==211) {
143 pip.push_back(p);
144 ++nstable;
145 }
146 else if(p.abspid()==431) {
147 Ds.push_back(p);
148 ++nstable;
149 }
150 else if(p.children().empty()) {
151 ++nstable;
152 }
153 else
154 findDecayProducts(p,Ds,pip,pi0,gamma,nstable);
155 }
156 }
157
158
159 /// Normalise histograms etc., after the run
160 void finalize() {
161 normalize(_s_2317 ,1.,false);
162 normalize(_s_2460_1,1.,false);
163 normalize(_s_2460_2,1.,false);
164 normalize(_hel ,1.,false);
165 scale(_r_2317 ,crossSection()/femtobarn/sumOfWeights());
166 scale(_r_2460_1,crossSection()/femtobarn/sumOfWeights());
167 scale(_r_2460_2,crossSection()/femtobarn/sumOfWeights());
168 scale(_r_2460_3,crossSection()/femtobarn/sumOfWeights());
169 scale(_r_2460_4,crossSection()/femtobarn/sumOfWeights());
170 scale(_r_2536 ,crossSection()/femtobarn/sumOfWeights());
171 }
172
173 /// @}
174
175
176 /// @name Histograms
177 /// @{
178 Histo1DPtr _s_2317,_s_2460_1,_s_2460_2,_hel;
179 BinnedHistoPtr<string> _r_2317,_r_2460_1,_r_2460_2,_r_2460_3,_r_2460_4,_r_2536;
180 /// @}
181
182
183 };
184
185
186 RIVET_DECLARE_PLUGIN(BABAR_2006_I714447);
187
188}
|