BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtPsi3Sdecay Class Reference

#include <EvtPsi3Sdecay.hh>

Public Member Functions

 EvtPsi3Sdecay (double ecms, EvtParticle *parent)
 EvtPsi3Sdecay ()
virtual ~EvtPsi3Sdecay ()
int findPoints ()
double polint (std::vector< double > points)
bool choseDecay ()
EvtParticlechoseDecay (EvtParticle *par)
int getDecay (double ecms)
double theProb (std::vector< double > myxs, int ich)
int findMode ()
int getMode ()
std::vector< EvtIdgetVId (int mode)
void PHSPDecay (EvtParticle *par)
std::vector< EvtIdgetDaugId ()
std::vector< EvtVector4RgetDaugP4 ()
bool AngSam (EvtVector4R parent_p4cm, EvtVector4R son_p4cm, double alpha)
void setMode (int m)

Detailed Description

Definition at line 33 of file EvtPsi3Sdecay.hh.

Constructor & Destructor Documentation

◆ EvtPsi3Sdecay() [1/2]

EvtPsi3Sdecay::EvtPsi3Sdecay ( double ecms,
EvtParticle * parent )
inline

Definition at line 36 of file EvtPsi3Sdecay.hh.

36 { // for 2-body decays
37 // initializer
38 Ecms = ecms;
39 theParent = parent;
40 Ndaugs = parent->getNDaug();
41 nsize = 32;
42
43 _excflag = 0;
44 x.clear();
45 // open charm cross section, see PRD 80, 072001, xs in unit pb.
46 double xx[32] = { 3.72968, 3.73922, 3.87180, 3.87987, 3.93660, 3.97, 3.99, 4.01, 4.01392,
47 4.015, 4.02052, 4.03, 4.06, 4.08040, 4.12, 4.14, 4.16, 4.17,
48 4.18, 4.2, 4.22420, 4.26, 4.30, 4.34, 4.38, 4.42, 4.46,
49 4.50, 4.54, 4.58, 4.62, 4.66 }; // 32 energy points
50 double y0[32] = { 0., 3, 51, 54, 74, 86, 133, 76, 23, 10, 139,
51 334, 410, 374, 303, 177, 167, 177, 179, 180, 142, 86,
52 31, 49, 65, 196, 52, 87, 166, 14, 33, 49 }; // 0) D0D0bar cross
53 // section
54 double y1[32] = { 0., 0., 81, 86, 118, 137, 90, 135, 57, 38, 101,
55 196, 480, 423, 310, 200, 200, 182, 197, 181, 146, 94,
56 108, 96, 154, 165, 171, 106, 27, 144, 36, 22 }; // 1) D+D-
57 double y2[32] = { 0., 0., 0., 713, 983, 1140, 1370, 1660, 1868, 1920, 1792,
58 1600, 1115, 976, 700, 675, 626, 636, 605, 515, 525, 540,
59 748, 880, 556, 657, 477, 494, 320, 616, 575, 373 }; // 2)D0D*0bar
60 double y3[32] = { 0., 0., 0., 713, 983, 1140, 1370, 1660, 1868, 1920, 1792,
61 1600, 1115, 976, 700, 675, 626, 636, 605, 515, 525, 540,
62 748, 880, 556, 657, 477, 494, 320, 616, 575, 373 }; // 3)D0bar D*0
63 double y4[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 213, 928,
64 2000, 2290, 2376, 2550, 2443, 2566, 2363, 2173, 1830, 1205, 269,
65 822, 1045, 1020, 820, 398, 588, 690, 459, 360, 398 }; // 4)D*0
66 // D*0bar
67 double y5[32] = { 0., 0., 0., 0, 962, 1115, 1375, 1650, 1810, 1851, 1770,
68 1650, 1085, 983, 780, 688, 688, 642, 648, 535, 525, 511,
69 748, 880, 556, 657, 477, 494, 320, 616, 575, 373 }; // 5)D*+D-
70 double y6[32] = { 0., 0., 0., 0, 962, 1115, 1375, 1650, 1810, 1851, 1770,
71 1650, 1085, 983, 780, 688, 688, 642, 648, 535, 525, 511,
72 748, 880, 556, 657, 477, 494, 320, 616, 575, 373 }; // 6)D*-D+
73 double y7[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
74 1400, 2390, 2353, 2280, 2556, 2479, 2357, 2145, 1564, 1033, 237,
75 822, 1045, 1020, 820, 398, 588, 690, 459, 360, 398 }; // 7)D*+D*-
76 double y8[32] = { 0., 0., 0., 0, 0, 102, 133, 269, 254, 250, 219,
77 174, 51, 42, 26, 25, 15, 34, 7, 15, 28, 47,
78 106, 70, 36, 10, 2, 28, 60, 60, 48, 36 }; // 8)Ds+ Ds-
79 double y9[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
80 0, 0, 0, 239, 342, 452.5, 458, 444.5, 406, 250, 17,
81 157, 184, 159, 178.5, 146, 85.5, 33, 51.5, 95, 136 }; // 9)Ds*+ Ds-
82 double y10[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
83 0, 0, 0, 239, 342, 452.5, 458, 444.5, 406, 250, 17,
84 157, 184, 159, 178.5, 146, 85.5, 33, 51.5, 95, 136 }; // 10)Ds*- Ds+
85 double y11[32] = {
86 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
87 0, 0, 0, 0, 0, 440, 398, 428, 310, 131, 0, 45, 126, 98, 39, 0 }; // 11)Ds*+
88 // Ds*-
89 double y12[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
90 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6,
91 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; // 12)D*+ D- pi0
92 // //------ DD*
93 // pi----
94 double y13[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
95 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6,
96 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; // 13)D*- D+ pi0
97 double y14[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
98 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5, 116, 106.3,
99 98, 378, 650, 564, 167, 304, 359, 381, 497, 110 }; // 14)D*+
100 // anti-D0 pi-
101 double y15[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
102 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5, 116, 106.3,
103 98, 378, 650, 564, 167, 304, 359, 381, 497, 110 }; // 15)D*- D0
104 // pi+
105 double y16[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
106 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5, 116, 106.3,
107 98, 378, 650, 564, 167, 304, 359, 381, 497, 110 }; // 16)D+
108 // anti-D*0 pi-
109 double y17[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
110 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5, 116, 106.3,
111 98, 378, 650, 564, 167, 304, 359, 381, 497, 110 }; // 17)D- D*0
112 // pi+
113 double y18[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.6,
115 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; // 18) D*+ D*- pi0
116 // //------D*D*pi,
117 // above 4.26Gev,
118 // assumed xs as D*D
119 // pi
120 double y19[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107.3,
122 98, 378, 650, 564, 167, 304, 359, 381, 497, 110 }; // 19) anti-D*0 D*+
123 // pi-
124 double y20[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107.3,
126 98, 378, 650, 564, 167, 304, 359, 381, 497, 110 }; // 20) D*0 D*- pi+
127 double y21[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.6,
129 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; // 21) D*0 D*0bar pi0
130 double y22[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
131 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6,
132 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; // 22)D*0 D0bar pi0
133 // //------ DD*
134 // pi----
135 double y23[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
136 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6,
137 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; // 23)D*bar D0 pi0
138 d0d0bar.clear();
139 dpdm.clear();
140 d0dst0bar.clear();
141 dst0dst0bar.clear();
142 d0bardst0.clear();
143 dstpdm.clear();
144 dstmdp.clear();
145 dstpdstm.clear();
146 dspdsm.clear();
147 dsspdsm.clear();
148 dssmdsp.clear();
149 dsspdssm.clear();
150 xs12.clear();
151 xs13.clear();
152 xs14.clear();
153 xs15.clear();
154 xs16.clear();
155 xs17.clear();
156 xs18.clear();
157 xs19.clear();
158 xs20.clear();
159 xs21.clear();
160 xs22.clear();
161 xs23.clear();
162
163 for ( int i = 0; i < 32; i++ )
164 {
165 x.push_back( xx[i] );
166 d0d0bar.push_back( y0[i] );
167 dpdm.push_back( y1[i] );
168 d0dst0bar.push_back( y2[i] );
169 d0bardst0.push_back( y3[i] );
170 dst0dst0bar.push_back( y4[i] );
171 dstpdm.push_back( y5[i] );
172 dstmdp.push_back( y6[i] );
173 dstpdstm.push_back( y7[i] );
174 dspdsm.push_back( y8[i] );
175 dsspdsm.push_back( y9[i] );
176 dssmdsp.push_back( y10[i] );
177 dsspdssm.push_back( y11[i] );
178 xs12.push_back( y12[i] );
179 xs13.push_back( y13[i] );
180 xs14.push_back( y14[i] );
181 xs15.push_back( y15[i] );
182 xs16.push_back( y16[i] );
183 xs17.push_back( y17[i] );
184 xs18.push_back( y18[i] );
185 xs19.push_back( y19[i] );
186 xs20.push_back( y20[i] );
187 xs21.push_back( y21[i] );
188 xs22.push_back( y22[i] );
189 xs23.push_back( y23[i] );
190 }
191 }
int getNDaug() const
const double ecms
Definition inclkstar.cxx:26

◆ EvtPsi3Sdecay() [2/2]

EvtPsi3Sdecay::EvtPsi3Sdecay ( )
inline

Definition at line 194 of file EvtPsi3Sdecay.hh.

194 { // for 2-body and 3-body decays
195 // initializer
196 // Ecms = ecms;
197 nsize = 32;
198
199 x.clear();
200 // open charm cross section, see PRD 80, 072001, xross section in pb
201 double xx[32] = { 3.72968, 3.73922, 3.87180, 3.87987, 3.93660, 3.97, 3.99, 4.01, 4.01392,
202 4.015, 4.02052, 4.03, 4.06, 4.08040, 4.12, 4.14, 4.16, 4.17,
203 4.18, 4.2, 4.22420, 4.26, 4.30, 4.34, 4.38, 4.42, 4.46,
204 4.50, 4.54, 4.58, 4.62, 4.66 }; // 32 energy points
205 double y0[32] = { 0., 3, 51, 54, 74, 86, 133, 76, 23, 10, 139,
206 334, 410, 374, 303, 177, 167, 177, 179, 180, 142, 86,
207 31, 49, 65, 196, 52, 87, 166, 14, 33, 49 }; // 0) D0D0bar cross
208 // section
209 double y1[32] = { 0., 0., 81, 86, 118, 137, 90, 135, 57, 38, 101,
210 196, 480, 423, 310, 200, 200, 182, 197, 181, 146, 94,
211 108, 96, 154, 165, 171, 106, 27, 144, 36, 22 }; // 1) D+D-
212 double y2[32] = { 0., 0., 0., 713, 983, 1140, 1370, 1660, 1868, 1920, 1792,
213 1600, 1115, 976, 700, 675, 626, 636, 605, 515, 525, 540,
214 748, 880, 556, 657, 477, 494, 320, 616, 575, 373 }; // 2)D0D*0bar
215 double y3[32] = { 0., 0., 0., 713, 983, 1140, 1370, 1660, 1868, 1920, 1792,
216 1600, 1115, 976, 700, 675, 626, 636, 605, 515, 525, 540,
217 748, 880, 556, 657, 477, 494, 320, 616, 575, 373 }; // 3)D0bar D*0
218 double y4[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 213, 928,
219 2000, 2290, 2376, 2550, 2443, 2566, 2363, 2173, 1830, 1205, 269,
220 822, 1045, 1020, 820, 398, 588, 690, 459, 360, 398 }; // 4)D*0
221 // D*0bar
222 double y5[32] = { 0., 0., 0., 0, 962, 1115, 1375, 1650, 1810, 1851, 1770,
223 1650, 1085, 983, 780, 688, 688, 642, 648, 535, 525, 511,
224 748, 880, 556, 657, 477, 494, 320, 616, 575, 373 }; // 5)D*+D-
225 double y6[32] = { 0., 0., 0., 0, 962, 1115, 1375, 1650, 1810, 1851, 1770,
226 1650, 1085, 983, 780, 688, 688, 642, 648, 535, 525, 511,
227 748, 880, 556, 657, 477, 494, 320, 616, 575, 373 }; // 6)D*-D+
228 double y7[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
229 1400, 2390, 2353, 2280, 2556, 2479, 2357, 2145, 1564, 1033, 237,
230 822, 1045, 1020, 820, 398, 588, 690, 459, 360, 398 }; // 7)D*+D*-
231 double y8[32] = { 0., 0., 0., 0, 0, 102, 133, 269, 254, 250, 219,
232 174, 51, 42, 26, 25, 15, 34, 7, 15, 28, 47,
233 106, 70, 36, 10, 2, 28, 60, 60, 48, 36 }; // 8)Ds+ Ds-
234 double y9[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
235 0, 0, 0, 239, 342, 452.5, 458, 444.5, 406, 250, 17,
236 157, 184, 159, 178.5, 146, 85.5, 33, 51.5, 95, 136 }; // 9)Ds*+ Ds-
237 double y10[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
238 0, 0, 0, 239, 342, 452.5, 458, 444.5, 406, 250, 17,
239 157, 184, 159, 178.5, 146, 85.5, 33, 51.5, 95, 136 }; // 10)Ds*- Ds+
240 double y11[32] = {
241 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
242 0, 0, 0, 0, 0, 440, 398, 428, 310, 131, 0, 45, 126, 98, 39, 0 }; // 11)Ds*+
243 // Ds*-
244 double y12[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
245 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6,
246 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; // 12)D*+ D- pi0
247 // //------ DD*
248 // pi----
249 double y13[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
250 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6,
251 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; // 13)D*- D+ pi0
252 double y14[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
253 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5, 116, 106.3,
254 98, 378, 650, 564, 167, 304, 359, 381, 497, 110 }; // 14)D*+
255 // anti-D0 pi-
256 double y15[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
257 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5, 116, 106.3,
258 98, 378, 650, 564, 167, 304, 359, 381, 497, 110 }; // 15)D*- D0
259 // pi+
260 double y16[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
261 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5, 116, 106.3,
262 98, 378, 650, 564, 167, 304, 359, 381, 497, 110 }; // 16)D+
263 // anti-D*0 pi-
264 double y17[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
265 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5, 116, 106.3,
266 98, 378, 650, 564, 167, 304, 359, 381, 497, 110 }; // 17)D- D*0
267 // pi+
268 double y18[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.6,
270 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; // 18) D*+ D*- pi0
271 // //------D*D*pi,
272 // above 4.26Gev,
273 // assumed xs as D*D
274 // pi
275 double y19[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107.3,
277 98, 378, 650, 564, 167, 304, 359, 381, 497, 110 }; // 19) anti-D*0 D*+
278 // pi-
279 double y20[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
280 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107.3,
281 98, 378, 650, 564, 167, 304, 359, 381, 497, 110 }; // 20) D*0 D*- pi+
282 double y21[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
283 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.6,
284 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; // 21) D*0 D*0bar pi0
285 double y22[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
286 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6,
287 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; // 22)D*0 D0bar pi0
288 // //------ DD*
289 // pi----
290 double y23[32] = { 0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0,
291 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6,
292 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; // 23)D*bar D0 pi0
293 d0d0bar.clear();
294 dpdm.clear();
295 d0dst0bar.clear();
296 dst0dst0bar.clear();
297 d0bardst0.clear();
298 dstpdm.clear();
299 dstmdp.clear();
300 dstpdstm.clear();
301 dspdsm.clear();
302 dsspdsm.clear();
303 dssmdsp.clear();
304 dsspdssm.clear();
305 xs12.clear();
306 xs13.clear();
307 xs14.clear();
308 xs15.clear();
309 xs16.clear();
310 xs17.clear();
311 xs18.clear();
312 xs19.clear();
313 xs20.clear();
314 xs21.clear();
315 xs22.clear();
316 xs23.clear();
317 for ( int i = 0; i < 32; i++ )
318 {
319 x.push_back( xx[i] );
320 d0d0bar.push_back( y0[i] );
321 dpdm.push_back( y1[i] );
322 d0dst0bar.push_back( y2[i] );
323 d0bardst0.push_back( y3[i] );
324 dst0dst0bar.push_back( y4[i] );
325 dstpdm.push_back( y5[i] );
326 dstmdp.push_back( y6[i] );
327 dstpdstm.push_back( y7[i] );
328 dspdsm.push_back( y8[i] );
329 dsspdsm.push_back( y9[i] );
330 dssmdsp.push_back( y10[i] );
331 dsspdssm.push_back( y11[i] );
332 xs12.push_back( y12[i] );
333 xs13.push_back( y13[i] );
334 xs14.push_back( y14[i] );
335 xs15.push_back( y15[i] );
336 xs16.push_back( y16[i] );
337 xs17.push_back( y17[i] );
338 xs18.push_back( y18[i] );
339 xs19.push_back( y19[i] );
340 xs20.push_back( y20[i] );
341 xs21.push_back( y21[i] );
342 xs22.push_back( y22[i] );
343 xs23.push_back( y23[i] );
344 }
345
346 //---- initilize Vmode
347
348 VmodeSon.clear();
349 // 0: D0 anti-D0
350 Vson.clear();
351 Vson.push_back( "D0" );
352 Vson.push_back( "anti-D0" );
353 VmodeSon.push_back( Vson );
354
355 // 1: D+ D-
356 Vson.clear();
357 Vson.push_back( "D+" );
358 Vson.push_back( "D-" );
359 VmodeSon.push_back( Vson );
360
361 // 2: D0 anti-D*0
362 Vson.clear();
363 Vson.push_back( "D0" );
364 Vson.push_back( "anti-D*0" );
365 VmodeSon.push_back( Vson );
366
367 // 3: anti-D0 D*0
368 Vson.clear();
369 Vson.push_back( "anti-D0" );
370 Vson.push_back( "D*0" );
371 VmodeSon.push_back( Vson );
372
373 // 4: D*0 anti-D*0
374 Vson.clear();
375 Vson.push_back( "D*0" );
376 Vson.push_back( "anti-D*0" );
377 VmodeSon.push_back( Vson );
378
379 // 5: D*+ D-
380 Vson.clear();
381 Vson.push_back( "D*+" );
382 Vson.push_back( "D-" );
383 VmodeSon.push_back( Vson );
384
385 // 6: D*- D+
386 Vson.clear();
387 Vson.push_back( "D*-" );
388 Vson.push_back( "D+" );
389 VmodeSon.push_back( Vson );
390
391 // 7: D*+ D*-
392 Vson.clear();
393 Vson.push_back( "D*+" );
394 Vson.push_back( "D*-" );
395 VmodeSon.push_back( Vson );
396
397 // 8: D_s+ D_s-
398 Vson.clear();
399 Vson.push_back( "D_s+" );
400 Vson.push_back( "D_s-" );
401 VmodeSon.push_back( Vson );
402
403 // 9: D_s*+ D_s-
404 Vson.clear();
405 Vson.push_back( "D_s*+" );
406 Vson.push_back( "D_s-" );
407 VmodeSon.push_back( Vson );
408
409 // 10: D_s*- D_s+
410 Vson.clear();
411 Vson.push_back( "D_s*-" );
412 Vson.push_back( "D_s+" );
413 VmodeSon.push_back( Vson );
414
415 // 11: D_s*+ D_s*-
416 Vson.clear();
417 Vson.push_back( "D_s*+" );
418 Vson.push_back( "D_s*-" );
419 VmodeSon.push_back( Vson );
420
421 // 12: D*+ D- pi0
422 Vson.clear();
423 Vson.push_back( "D*+" );
424 Vson.push_back( "D-" );
425 Vson.push_back( "pi0" );
426 VmodeSon.push_back( Vson );
427
428 // 13: D*- D+ pi0
429 Vson.clear();
430 Vson.push_back( "D*-" );
431 Vson.push_back( "D+" );
432 Vson.push_back( "pi0" );
433 VmodeSon.push_back( Vson );
434
435 // 14: D*+ anti-D0 pi-
436 Vson.clear();
437 Vson.push_back( "D*+" );
438 Vson.push_back( "anti-D0" );
439 Vson.push_back( "pi-" );
440 VmodeSon.push_back( Vson );
441
442 // 15: D*- D0 pi+
443 Vson.clear();
444 Vson.push_back( "D*-" );
445 Vson.push_back( "D0" );
446 Vson.push_back( "pi+" );
447 VmodeSon.push_back( Vson );
448
449 // 16: D+ anti-D*0 pi-
450 Vson.clear();
451 Vson.push_back( "D+" );
452 Vson.push_back( "anti-D*0" );
453 Vson.push_back( "pi-" );
454 VmodeSon.push_back( Vson );
455
456 // 17: D- D*0 pi+
457 Vson.clear();
458 Vson.push_back( "D-" );
459 Vson.push_back( "D*0" );
460 Vson.push_back( "pi+" );
461 VmodeSon.push_back( Vson );
462
463 // 18: D*+ D*- pi0
464 Vson.clear();
465 Vson.push_back( "D*+" );
466 Vson.push_back( "D*-" );
467 Vson.push_back( "pi0" );
468 VmodeSon.push_back( Vson );
469
470 // 19: anti-D*0 D*+ pi-
471 Vson.clear();
472 Vson.push_back( "anti-D*0" );
473 Vson.push_back( "D*+" );
474 Vson.push_back( "pi-" );
475 VmodeSon.push_back( Vson );
476
477 // 20: D*0 D*- pi+
478 Vson.clear();
479 Vson.push_back( "D*0" );
480 Vson.push_back( "D*-" );
481 Vson.push_back( "pi+" );
482 VmodeSon.push_back( Vson );
483
484 // 21: D*0 D*0bar pi0
485 Vson.clear();
486 Vson.push_back( "D*0" );
487 Vson.push_back( "anti-D*0" );
488 Vson.push_back( "pi0" );
489 VmodeSon.push_back( Vson );
490
491 // 22: D0bar D*0 pi0
492 Vson.clear();
493 Vson.push_back( "anti-D0" );
494 Vson.push_back( "D*0" );
495 Vson.push_back( "pi0" );
496 VmodeSon.push_back( Vson );
497
498 // 23: D*0bar D0 pi0
499 Vson.clear();
500 Vson.push_back( "anti-D*0" );
501 Vson.push_back( "D0" );
502 Vson.push_back( "pi0" );
503 VmodeSon.push_back( Vson );
504 }

◆ ~EvtPsi3Sdecay()

virtual EvtPsi3Sdecay::~EvtPsi3Sdecay ( )
inlinevirtual

Definition at line 507 of file EvtPsi3Sdecay.hh.

507{}

Member Function Documentation

◆ AngSam()

bool EvtPsi3Sdecay::AngSam ( EvtVector4R parent_p4cm,
EvtVector4R son_p4cm,
double alpha )

Definition at line 465 of file EvtPsi3Sdecay.cc.

465 {
466 EvtHelSys angles( parent_p4cm, son_p4cm );
467 double theta = angles.getHelAng( 1 );
468 // double phi =angles.getHelAng(2);
469 // double gamma=0;
470 double costheta = cos( theta ); // using helicity angles in parent system
471 double max_alpha;
472 if ( alpha >= 0 ) { max_alpha = 1 + alpha; }
473 else { max_alpha = 1; }
474 double ags = ( 1 + alpha * costheta * costheta ) / max_alpha;
475 double rand = EvtRandom::Flat( 0.0, 1.0 );
476 if ( rand <= ags ) { return true; }
477 else { return false; }
478}
double alpha
static double Flat()
Definition EvtRandom.cc:69

Referenced by PHSPDecay().

◆ choseDecay() [1/2]

bool EvtPsi3Sdecay::choseDecay ( )

Definition at line 163 of file EvtPsi3Sdecay.cc.

163 { // determing accept or reject a generated decay
164
165 // findPoints();
166 double d0d0bar_xs = polint( d0d0bar );
167 double dpdm_xs = polint( dpdm );
168 double d0dst0bar_xs = polint( d0dst0bar );
169 double d0bardst0_xs = polint( d0bardst0 );
170
171 double dst0dst0bar_xs = polint( dst0dst0bar );
172 double dstpdm_xs = polint( dstpdm );
173
174 double dstmdp_xs = polint( dstmdp );
175 double dstpdstm_xs = polint( dstpdstm );
176
177 double dspdsm_xs = polint( dspdsm );
178
179 double dsspdsm_xs = polint( dsspdsm );
180 double dssmdsp_xs = polint( dssmdsp );
181
182 double dsspdssm_xs = polint( dsspdssm );
183 //--- DDpi modes
184 double _xs12 = polint( xs12 );
185 double _xs13 = polint( xs13 );
186 double _xs14 = polint( xs14 );
187 double _xs15 = polint( xs15 );
188 double _xs16 = polint( xs16 );
189 double _xs17 = polint( xs17 );
190 double _xs18 = polint( xs18 );
191 double _xs19 = polint( xs19 );
192 double _xs20 = polint( xs20 );
193 double _xs21 = polint( xs21 );
194 double _xs22 = polint( xs22 );
195 double _xs23 = polint( xs23 );
196
197 int ich = findMode();
198 // std::cout<<"calculated XS "<< d0d0bar_xs<<" "<<dpdm_xs<<" "<<d0dst0bar_xs<<"
199 // "<<d0bardst0_xs<< " "<<dst0dst0bar_xs<<" "<<dstpdm_xs<< " "<<dstmdp_xs<<"
200 // "<<dstpdstm_xs<<" "<<dspdsm_xs<<std::endl;
201
202 double xmtotal = 0;
203 for ( int i = 0; i < Vid.size(); i++ ) { xmtotal += EvtPDL::getMinMass( Vid[i] ); }
204 double mparent = theParent->getP4().mass();
205 // std::cout<<"mparent= "<<mparent<<", xmtotal= "<<xmtotal<<endl;
206 if ( mparent < xmtotal ) { return false; }
207
208 std::vector<double> myxs;
209 myxs.clear();
210 myxs.push_back( d0d0bar_xs ); // 0
211 myxs.push_back( dpdm_xs );
212 myxs.push_back( d0dst0bar_xs ); // 2
213 myxs.push_back( d0bardst0_xs );
214 myxs.push_back( dst0dst0bar_xs ); // 4
215 myxs.push_back( dstpdm_xs );
216 myxs.push_back( dstmdp_xs ); // 6
217 myxs.push_back( dstpdstm_xs );
218 myxs.push_back( dspdsm_xs ); // 8
219 myxs.push_back( dsspdsm_xs );
220 myxs.push_back( dssmdsp_xs ); // 10
221 myxs.push_back( dsspdssm_xs ); // 11
222
223 myxs.push_back( _xs12 ); // 12
224 myxs.push_back( _xs13 ); // 13
225 myxs.push_back( _xs14 ); // 14
226 myxs.push_back( _xs15 ); // 15
227 myxs.push_back( _xs16 ); // 16
228 myxs.push_back( _xs17 ); // 17
229 myxs.push_back( _xs18 ); // 18
230 myxs.push_back( _xs19 ); // 19
231 myxs.push_back( _xs20 ); // 20
232 myxs.push_back( _xs21 ); // 21
233 myxs.push_back( _xs22 ); // 22
234 myxs.push_back( _xs23 ); // 23
235
236 double Prop0, Prop1;
237 if ( ich == 0 ) { Prop0 = 0; }
238 else { Prop0 = theProb( myxs, ich - 1 ); }
239 Prop1 = theProb( myxs, ich );
240
241 double pm = EvtRandom::Flat( 0., 1 );
242 bool flag = false;
243 if ( Prop0 < pm && pm <= Prop1 ) flag = true;
244
245 //--- debuging
246
247 if ( flag )
248 {
249 // std::cout<<"findMode= "<<ich<<std::endl;
250 // for(int i=0;i<myxs.size();i++){ std::cout<<"channel "<<i<<" myxs:
251 // "<<myxs[i]<<std::endl;} std::cout<<"prop0,prop1= "<<Prop0<<" "<<Prop1<<std::endl;
252 }
253
254 //-------------
255
256 return flag;
257}
static double getMinMass(EvtId i)
Definition EvtPDL.hh:56
double theProb(std::vector< double > myxs, int ich)
double polint(std::vector< double > points)

◆ choseDecay() [2/2]

EvtParticle * EvtPsi3Sdecay::choseDecay ( EvtParticle * par)

Definition at line 260 of file EvtPsi3Sdecay.cc.

260 { // decay par
261 double xm = par->mass();
262 int themode = getDecay( xm );
263 std::vector<EvtId> theid = getVId( themode );
264 int ndaugjs = theid.size();
265 EvtId myId[3];
266 for ( int i = 0; i < ndaugjs; i++ ) { myId[i] = theid[i]; }
267 par->makeDaughters( ndaugjs, myId );
268
269 for ( int i = 0; i < par->getNDaug(); i++ )
270 {
271 EvtParticle* di = par->getDaug( i );
272 double xmi = EvtPDL::getMinMass( di->getId() );
273 di->setMass( xmi );
274 }
275 par->initializePhaseSpace( ndaugjs, myId );
276 _themode = themode;
277 return par;
278}
void setMass(double m)
void makeDaughters(int ndaug, EvtId *id)
EvtId getId() const
EvtParticle * getDaug(int i)
double mass() const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
int getDecay(double ecms)
std::vector< EvtId > getVId(int mode)

◆ findMode()

int EvtPsi3Sdecay::findMode ( )

Definition at line 85 of file EvtPsi3Sdecay.cc.

85 {
86 // mode index: 0) D0D0bar, 1)D+D-; 2)D0D*0bar , 3)D0bar D*0, 4)D*0 D*0 bar, 5)D*+D- 6)D*-D+
87 // 7)D*+ D*- 8) Ds+ Ds- more modes: 9) D_s^*+ D_s^- ;10) D_s^*- D_s^+; 11) D_s^*+
88 // D_s^*-
89
90 std::string son0, son1, son2;
91 Vson.clear();
92 Vid.clear();
93 for ( int i = 0; i < Ndaugs; i++ )
94 {
95 std::string nson = EvtPDL::name( theParent->getDaug( i )->getId() );
96 if ( nson != "gammaFSR" && nson != "gamma" )
97 {
98 Vson.push_back( nson );
99 Vid.push_back( theParent->getDaug( i )->getId() );
100 }
101 }
102 int nh = Vson.size();
103 // debugging
104 // std::cout<<"nh= "<<nh<<" "<<Vson[0]<<" "<<Vson[1]<<" "<<Vson[2]<<std::endl;
105 // theParent->printTree();
106
107 if ( nh == 2 )
108 {
109 // std::cout<<"2 final states: "<<Vson[0]<<" "<<Vson[1]<<std::endl;
110 son0 = Vson[0];
111 son1 = Vson[1];
112 if ( son0 == "D0" && son1 == "anti-D0" || son1 == "D0" && son0 == "anti-D0" ) { return 0; }
113 else if ( son0 == "D+" && son1 == "D-" || son1 == "D+" && son0 == "D-" ) { return 1; }
114 else if ( son0 == "D0" && son1 == "anti-D*0" || son1 == "D0" && son0 == "anti-D*0" )
115 { return 2; }
116 else if ( son0 == "anti-D0" && son1 == "D*0" || son1 == "anti-D0" && son0 == "D*0" )
117 { return 3; }
118 else if ( son0 == "D*0" && son1 == "anti-D*0" || son1 == "D*0" && son0 == "anti-D*0" )
119 { return 4; }
120 else if ( son0 == "D*+" && son1 == "D-" || son1 == "D*+" && son0 == "D-" ) { return 5; }
121 else if ( son0 == "D*-" && son1 == "D+" || son1 == "D*-" && son0 == "D+" ) { return 6; }
122 else if ( son0 == "D*+" && son1 == "D*-" || son1 == "D*+" && son0 == "D*-" ) { return 7; }
123 else if ( son0 == "D_s+" && son1 == "D_s-" || son1 == "D_s+" && son0 == "D_s-" )
124 { return 8; }
125 else if ( son0 == "D_s*+" && son1 == "D_s-" || son1 == "D_s*+" && son0 == "D_s-" )
126 { return 9; }
127 else if ( son0 == "D_s*-" && son1 == "D_s+" || son1 == "D_s*-" && son0 == "D_s+" )
128 { return 10; }
129 else if ( son0 == "D_s*+" && son1 == "D_s*-" || son1 == "D_s*+" && son0 == "D_s*-" )
130 { return 11; }
131 else { goto ErrInfo; }
132 }
133 else if ( nh == 3 )
134 {
135 // std::cout<<"3 final states: "<<Vson[0]<<" "<<Vson[1]<<" "<<Vson[2]<<std::endl;
136 son0 = Vson[0];
137 son1 = Vson[1];
138 son2 = Vson[2];
139 if ( son0 == "D*+" && son1 == "D-" && son2 == "pi0" ) { return 12; }
140 else if ( son0 == "D*-" && son1 == "D+" && son2 == "pi0" ) { return 13; }
141 else if ( son0 == "D*+" && son1 == "anti-D0" && son2 == "pi-" ) { return 14; }
142 else if ( son0 == "D*-" && son1 == "D0" && son2 == "pi+" ) { return 15; }
143 else if ( son0 == "D+" && son1 == "anti-D*0" && son2 == "pi-" ) { return 16; }
144 else if ( son0 == "D-" && son1 == "D*0" && son2 == "pi+" ) { return 17; }
145 else if ( son0 == "D*+" && son1 == "D*-" && son2 == "pi0" ) { return 18; }
146 else if ( son0 == "anti-D*0" && son1 == "D*+" && son2 == "pi-" ) { return 19; }
147 else if ( son0 == "D*0" && son1 == "D*-" && son2 == "pi+" ) { return 20; }
148 else if ( son0 == "D*0" && son1 == "anti-D*0" && son2 == "pi0" ) { return 21; }
149 else if ( son0 == "D0" && son1 == "anti-D*0" && son2 == "pi0" ) { return 22; }
150 else if ( son0 == "anti-D0" && son1 == "D*0" && son2 == "pi0" ) { return 23; }
151 else { goto ErrInfo; }
152 }
153ErrInfo:
154 std::cout << "Not open charm decay" << std::endl;
155 std::cout << "final states \"";
156 for ( int j = 0; j < nh; j++ ) { std::cout << Vson[j] << " "; }
157 std::cout << " \" is not in the Psi3Decay list, see "
158 "$BESEVTGENROOT/src/EvtGen/EvtGenModels/EvtPsi3Sdecay.hh"
159 << std::endl;
160 ::abort();
161}
static std::string name(EvtId i)
Definition EvtPDL.hh:70

Referenced by choseDecay().

◆ findPoints()

int EvtPsi3Sdecay::findPoints ( )

Definition at line 32 of file EvtPsi3Sdecay.cc.

32 {
33 if ( Ecms < x[0] ) { theLocation = 0; }
34 else if ( Ecms >= x[nsize - 1] ) { theLocation = nsize - 1; }
35 else
36 {
37 for ( int i = 0; i < nsize - 1; i++ )
38 {
39 if ( x[i] <= Ecms && x[i + 1] > Ecms ) { theLocation = i; }
40 }
41 }
42 return theLocation;
43}

Referenced by polint().

◆ getDaugId()

std::vector< EvtId > EvtPsi3Sdecay::getDaugId ( )
inline

Definition at line 520 of file EvtPsi3Sdecay.hh.

520{ return Vid; }

Referenced by EvtOpenCharm::decay().

◆ getDaugP4()

std::vector< EvtVector4R > EvtPsi3Sdecay::getDaugP4 ( )
inline

Definition at line 521 of file EvtPsi3Sdecay.hh.

521{ return v_p4; }

Referenced by EvtOpenCharm::decay().

◆ getDecay()

int EvtPsi3Sdecay::getDecay ( double ecms)

Definition at line 346 of file EvtPsi3Sdecay.cc.

346 { // pick up a decay by the accept-reject sampling
347 // method
348 if ( ecms < 3.97 || ecms > 4.66 )
349 {
350 std::cout << "EvtPsi3Sdecay::getDecay: You need to set the CMS energy between 3.97~4.66 "
351 "GeV, but you have ecms= "
352 << ecms << " GeV.The lower end can be set at KKMC" << std::endl;
353 }
354 if ( _excflag == 1 ) return _themode;
355 Ecms = ecms;
356 // findPoints();
357 double d0d0bar_xs = polint( d0d0bar );
358 double dpdm_xs = polint( dpdm );
359 double d0dst0bar_xs = polint( d0dst0bar );
360 double d0bardst0_xs = polint( d0bardst0 );
361
362 double dst0dst0bar_xs = polint( dst0dst0bar );
363 double dstpdm_xs = polint( dstpdm );
364
365 double dstmdp_xs = polint( dstmdp );
366 double dstpdstm_xs = polint( dstpdstm );
367
368 double dspdsm_xs = polint( dspdsm );
369
370 double dsspdsm_xs = polint( dsspdsm );
371 double dssmdsp_xs = polint( dssmdsp );
372
373 double dsspdssm_xs = polint( dsspdssm );
374
375 double _xs12 = polint( xs12 );
376 double _xs13 = polint( xs13 );
377 double _xs14 = polint( xs14 );
378 double _xs15 = polint( xs15 );
379 double _xs16 = polint( xs16 );
380 double _xs17 = polint( xs17 );
381 double _xs18 = polint( xs18 );
382 double _xs19 = polint( xs19 );
383 double _xs20 = polint( xs20 );
384 double _xs21 = polint( xs21 );
385 double _xs22 = polint( xs22 );
386 double _xs23 = polint( xs23 );
387
388 std::vector<double> myxs;
389 myxs.clear();
390 myxs.push_back( d0d0bar_xs ); // 0
391 myxs.push_back( dpdm_xs ); // 1
392 myxs.push_back( d0dst0bar_xs ); // 2
393 myxs.push_back( d0bardst0_xs ); // 3
394 myxs.push_back( dst0dst0bar_xs ); // 4
395 myxs.push_back( dstpdm_xs ); // 5
396 myxs.push_back( dstmdp_xs ); // 6
397 myxs.push_back( dstpdstm_xs ); // 7
398 myxs.push_back( dspdsm_xs ); // 8
399 myxs.push_back( dsspdsm_xs ); // 9
400 myxs.push_back( dssmdsp_xs ); // 10
401 myxs.push_back( dsspdssm_xs ); // 11
402 myxs.push_back( _xs12 ); // 12
403 myxs.push_back( _xs13 ); // 13
404 myxs.push_back( _xs14 ); // 14
405 myxs.push_back( _xs15 ); // 15
406 myxs.push_back( _xs16 ); // 16
407 myxs.push_back( _xs17 ); // 17
408 myxs.push_back( _xs18 ); // 18
409 myxs.push_back( _xs19 ); // 19
410 myxs.push_back( _xs20 ); // 20
411 myxs.push_back( _xs21 ); // 21
412 myxs.push_back( _xs22 ); // 22
413 myxs.push_back( _xs23 ); // 23
414
415 double mytotxs = 0;
416 for ( int i = 0; i < myxs.size(); i++ ) { mytotxs += myxs[i]; }
417 if ( psi3Scount == 0 )
418 {
419 std::cout << "The total xs at " << ecms << " is: " << mytotxs << " pb" << std::endl;
420 psi3Scount++;
421 }
422 int niter = 0;
423loop:
424 int ich = (int)24 * EvtRandom::Flat( 0., 1 ); // sampling modes over 24 channel
425
426 niter++;
427 if ( niter > 1000 )
428 {
429 std::cout << "EvtPsi3Sdecay:getDecay() do loops over 1000 times at Ecm= " << ecms
430 << std::endl;
431 abort();
432 }
433
434 double xmtotal = 0;
435 std::vector<EvtId> theVid;
436 theVid.clear();
437 theVid = getVId( ich );
438 for ( int i = 0; i < theVid.size(); i++ ) { xmtotal += EvtPDL::getMinMass( theVid[i] ); }
439
440 if ( Ecms < xmtotal ) { goto loop; }
441
442 double Prop0, Prop1;
443 if ( ich == 0 ) { Prop0 = 0; }
444 else { Prop0 = theProb( myxs, ich - 1 ); }
445 Prop1 = theProb( myxs, ich );
446
447 double pm = EvtRandom::Flat( 0., 1 );
448
449 if ( Prop0 < pm && pm <= Prop1 ) { return ich; }
450 else { goto loop; }
451}

Referenced by choseDecay(), and PHSPDecay().

◆ getMode()

int EvtPsi3Sdecay::getMode ( )
inline

Definition at line 516 of file EvtPsi3Sdecay.hh.

516{ return _themode; };

Referenced by EvtOpenCharm::decay().

◆ getVId()

std::vector< EvtId > EvtPsi3Sdecay::getVId ( int mode)

Definition at line 454 of file EvtPsi3Sdecay.cc.

454 {
455 std::vector<EvtId> theVid;
456 theVid.clear();
457 for ( int i = 0; i < VmodeSon[mode].size(); i++ )
458 {
459 EvtId theId = EvtPDL::getId( VmodeSon[mode][i] );
460 theVid.push_back( theId );
461 }
462 return theVid;
463}
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272

Referenced by choseDecay(), getDecay(), and PHSPDecay().

◆ PHSPDecay()

void EvtPsi3Sdecay::PHSPDecay ( EvtParticle * par)

Definition at line 282 of file EvtPsi3Sdecay.cc.

282 { // decay par
283 v_p4.clear();
284 Vid.clear();
285 double xm = par->mass();
286 EvtVector4R p_ini( xm, 0, 0, 0 );
287 EvtParticle* mypar = EvtParticleFactory::particleFactory( par->getId(), p_ini );
288
289 int themode = getDecay( xm );
290 std::vector<EvtId> theid = getVId( themode );
291 int ndaugjs = theid.size();
292 EvtId myId[3];
293 for ( int i = 0; i < ndaugjs; i++ ) { myId[i] = theid[i]; }
294 mypar->makeDaughters( ndaugjs, myId );
295
296 for ( int i = 0; i < mypar->getNDaug(); i++ )
297 {
298 EvtParticle* di = mypar->getDaug( i );
299 double xmi = EvtPDL::getMinMass( di->getId() );
300 di->setMass( xmi );
301 }
302loop:
303 mypar->initializePhaseSpace( ndaugjs, myId );
304
305 //-- here to do amgular distribution sampling
306 bool pp = ( themode == 0 || themode == 1 || themode == 6 ); // V->PP mode, alpha = -1
307 bool vp = ( themode >= 2 && themode <= 5 ||
308 themode >= 7 && themode <= 9 ); // V->VP mode, alpha = 1
309 bool flag1 = false;
310 double alpha;
311 if ( pp ) { alpha = -1; }
312 else if ( vp ) { alpha = 1; }
313 else { alpha = 0; }
314 EvtVector4R pp4 = par->getP4();
315 EvtVector4R sp4 = mypar->getDaug( 1 )->getP4();
316 flag1 = AngSam( pp4, sp4, alpha );
317 if ( alpha != 0 && !flag1 ) goto loop;
318 //--
319 _themode = themode;
320 for ( int i = 0; i < mypar->getNDaug(); i++ )
321 {
322 EvtParticle* di = mypar->getDaug( i );
323 v_p4.push_back( di->getP4() );
324 Vid.push_back( myId[i] );
325 // std::cout<<"Vid "<<EvtPDL::name(Vid[i])<<" p4: "<<v_p4[i]<<std::endl;
326 }
327
328 /*********** same function can be realized
329 double mass[3];
330 EvtVector4R p4[30];
331 for(int i=0;i<ndaugjs;i++){mass[i]=mypar->getDaug(i)->mass();}
332 EvtGenKine::PhaseSpace(ndaugjs,mass,p4,xm);
333 _themode = themode;
334 for(int i=0;i<mypar->getNDaug();i++){
335 v_p4.push_back( p4[i] );
336 Vid.push_back(myId[i]);
337 // std::cout<<"Vid "<<EvtPDL::name(Vid[i])<<" p4: "<<v_p4[i]<<std::endl;
338 }
339 *************/
340 mypar->deleteTree();
341 return;
342}
static EvtParticle * particleFactory(EvtSpinType::spintype spinType)
const EvtVector4R & getP4() const
void deleteTree()
bool AngSam(EvtVector4R parent_p4cm, EvtVector4R son_p4cm, double alpha)

Referenced by EvtOpenCharm::decay().

◆ polint()

double EvtPsi3Sdecay::polint ( std::vector< double > points)

Definition at line 45 of file EvtPsi3Sdecay.cc.

45 {
46
47 theLocation = findPoints();
48 double xs;
49 if ( theLocation == nsize - 1 ) { xs = vy[nsize - 1]; }
50 else
51 {
52 xs = ( vy[theLocation + 1] - vy[theLocation] ) / ( x[theLocation + 1] - x[theLocation] ) *
53 ( Ecms - x[theLocation] ) +
54 vy[theLocation];
55 }
56 if ( xs < 0 ) xs = 0;
57 // for(int i=0;i<vy.size();i++){ std::cout<<"channel "<<i<<" xsection: "<<vy[i]<<std::endl;}
58 // std::cout<<"Ecms, theLocation= "<<Ecms<<" "<<theLocation<<" xs= "<<xs<<std::endl;
59 return xs;
60}

Referenced by choseDecay(), and getDecay().

◆ setMode()

void EvtPsi3Sdecay::setMode ( int m)
inline

Definition at line 523 of file EvtPsi3Sdecay.hh.

523 {
524 if ( m < 0 || m > 32 )
525 {
526 std::cout << "EvtPsi3Decay::setMode: bad mode" << std::endl;
527 abort();
528 }
529 _themode = m;
530 _excflag = 1;
531 }

Referenced by EvtOpenCharm::decay().

◆ theProb()

double EvtPsi3Sdecay::theProb ( std::vector< double > myxs,
int ich )

Definition at line 62 of file EvtPsi3Sdecay.cc.

62 {
63 int Nchannels = myxs.size();
64 //---debuging
65 // std::cout<<"Nchannel= "<<Nchannels<<endl;
66
67 std::vector<double> thexs;
68 thexs.clear();
69 double sumxs = 0;
70 for ( int j = 0; j < Nchannels; j++ )
71 {
72 sumxs += myxs[j];
73 thexs.push_back( sumxs );
74 //----debugging
75 // std::cout<<"thexs["<<j<<"]= "<<myxs[j]<<std::endl;
76 }
77 if ( sumxs == 0 )
78 {
79 std::cout << "EvtPsi3Sdecay::theProb, denominator is 0" << std::endl;
80 ::abort();
81 }
82 return thexs[ich] / sumxs;
83}

Referenced by choseDecay(), and getDecay().


The documentation for this class was generated from the following files: