EvtGen 2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
EvtISGW2FF.cpp
Go to the documentation of this file.
1
2/***********************************************************************
3* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4* *
5* This file is part of EvtGen. *
6* *
7* EvtGen is free software: you can redistribute it and/or modify *
8* it under the terms of the GNU General Public License as published by *
9* the Free Software Foundation, either version 3 of the License, or *
10* (at your option) any later version. *
11* *
12* EvtGen is distributed in the hope that it will be useful, *
13* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15* GNU General Public License for more details. *
16* *
17* You should have received a copy of the GNU General Public License *
18* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19***********************************************************************/
20
22
24#include "EvtGenBase/EvtId.hh"
26#include "EvtGenBase/EvtPDL.hh"
28
29#include <math.h>
30#include <stdlib.h>
31#include <string>
32using std::endl;
33
34void EvtISGW2FF::getscalarff( EvtId parent, EvtId daught, double t, double mass,
35 double* fpf, double* f0f )
36{
37 //added by Lange Jan4,2000
38 static const EvtId D0 = EvtPDL::getId( "D0" );
39 static const EvtId D0B = EvtPDL::getId( "anti-D0" );
40 static const EvtId DP = EvtPDL::getId( "D+" );
41 static const EvtId DM = EvtPDL::getId( "D-" );
42
43 static const EvtId D3P0P = EvtPDL::getId( "D_0*+" );
44 static const EvtId D3P0N = EvtPDL::getId( "D_0*-" );
45 static const EvtId D3P00 = EvtPDL::getId( "D_0*0" );
46 static const EvtId D3P0B = EvtPDL::getId( "anti-D_0*0" );
47
48 static const EvtId D21S0P = EvtPDL::getId( "D(2S)+" );
49 static const EvtId D21S0N = EvtPDL::getId( "D(2S)-" );
50 static const EvtId D21S00 = EvtPDL::getId( "D(2S)0" );
51 static const EvtId D21S0B = EvtPDL::getId( "anti-D(2S)0" );
52
53 static const EvtId ETA2S = EvtPDL::getId( "eta(2S)" );
54
55 static const EvtId PI2S0 = EvtPDL::getId( "pi(2S)0" );
56 static const EvtId PI2SP = EvtPDL::getId( "pi(2S)+" );
57 static const EvtId PI2SM = EvtPDL::getId( "pi(2S)-" );
58
59 static const EvtId PIP = EvtPDL::getId( "pi+" );
60 static const EvtId PIM = EvtPDL::getId( "pi-" );
61 static const EvtId PI0 = EvtPDL::getId( "pi0" );
62
63 static const EvtId A0P = EvtPDL::getId( "a_0+" );
64 static const EvtId A0M = EvtPDL::getId( "a_0-" );
65 static const EvtId A00 = EvtPDL::getId( "a_00" );
66
67 static const EvtId F0 = EvtPDL::getId( "f_0" );
68 static const EvtId F0PR = EvtPDL::getId( "f'_0" );
69
70 static const EvtId ETA = EvtPDL::getId( "eta" );
71 static const EvtId ETAPR = EvtPDL::getId( "eta'" );
72
73 static const EvtId KP = EvtPDL::getId( "K+" );
74 static const EvtId KM = EvtPDL::getId( "K-" );
75 static const EvtId K0 = EvtPDL::getId( "K0" );
76 static const EvtId KB = EvtPDL::getId( "anti-K0" );
77 static const EvtId K0S = EvtPDL::getId( "K_S0" );
78 static const EvtId K0L = EvtPDL::getId( "K_L0" );
79
80 static const EvtId K0STP = EvtPDL::getId( "K_0*+" );
81 static const EvtId K0STM = EvtPDL::getId( "K_0*-" );
82 static const EvtId K0ST0 = EvtPDL::getId( "K_0*0" );
83 static const EvtId K0STB = EvtPDL::getId( "anti-K_0*0" );
84
85 static const EvtId DSP = EvtPDL::getId( "D_s+" );
86 static const EvtId DSM = EvtPDL::getId( "D_s-" );
87
88 static const EvtId D3P0SP = EvtPDL::getId( "D_s0*+" );
89 static const EvtId D3P0SN = EvtPDL::getId( "D_s0*-" );
90
91 double fmf;
92 double mb = EvtPDL::getMeanMass( parent );
93
94 if ( daught == PI0 || daught == PIP || daught == PIM || daught == ETA ||
95 daught == ETAPR || daught == D0 || daught == D0B || daught == DP ||
96 daught == DM || daught == KP || daught == KM || daught == K0 ||
97 daught == K0S || daught == K0L || daught == KB || daught == DSP ||
98 daught == DSM ) {
99 EvtISGW2FF1S0( parent, daught, t, mass, fpf, &fmf );
100 }
101
102 if ( daught == PI2S0 || daught == PI2SP || daught == PI2SM ||
103 daught == ETA2S || daught == D21S0P || daught == D21S0B ||
104 daught == D21S0N || daught == D21S00 ) {
105 EvtISGW2FF21S0( parent, daught, t, mass, fpf, &fmf );
106 }
107
108 if ( daught == A00 || daught == A0P || daught == A0M || daught == F0 ||
109 daught == F0PR || daught == D3P0P || daught == D3P00 ||
110 daught == D3P0B || daught == D3P0N || daught == K0STM ||
111 daught == K0STB || daught == K0STP || daught == D3P0SP ||
112 daught == D3P0SN || daught == K0ST0 ) {
113 EvtISGW2FF3P0( parent, daught, t, mass, fpf, &fmf );
114 }
115
116 *f0f = ( fmf / ( ( mb * mb - mass * mass ) / t ) ) + ( *fpf );
117
118 return;
119}
120
121void EvtISGW2FF::gettensorff( EvtId parent, EvtId daught, double t, double mass,
122 double* hf, double* kf, double* bpf, double* bmf )
123{
124 //added by Lange Jan4,2000
125 EvtISGW2FF3P2( parent, daught, t, mass, hf, kf, bpf, bmf );
126
127 return;
128}
129
130void EvtISGW2FF::getvectorff( EvtId parent, EvtId daught, double t, double mass,
131 double* a1f, double* a2f, double* vf, double* a0f )
132{
133 double ff, gf, apf, amf;
134
135 //added by Lange Jan4,2000
136
137 static const EvtId DST0 = EvtPDL::getId( "D*0" );
138 static const EvtId DSTB = EvtPDL::getId( "anti-D*0" );
139 static const EvtId DSTP = EvtPDL::getId( "D*+" );
140 static const EvtId DSTM = EvtPDL::getId( "D*-" );
141
142 static const EvtId D1P1P = EvtPDL::getId( "D_1+" );
143 static const EvtId D1P1N = EvtPDL::getId( "D_1-" );
144 static const EvtId D1P10 = EvtPDL::getId( "D_10" );
145 static const EvtId D1P1B = EvtPDL::getId( "anti-D_10" );
146
147 static const EvtId D3P1P = EvtPDL::getId( "D'_1+" );
148 static const EvtId D3P1N = EvtPDL::getId( "D'_1-" );
149 static const EvtId D3P10 = EvtPDL::getId( "D'_10" );
150 static const EvtId D3P1B = EvtPDL::getId( "anti-D'_10" );
151
152 static const EvtId D23S1P = EvtPDL::getId( "D*(2S)+" );
153 static const EvtId D23S1N = EvtPDL::getId( "D*(2S)-" );
154 static const EvtId D23S10 = EvtPDL::getId( "D*(2S)0" );
155 static const EvtId D23S1B = EvtPDL::getId( "anti-D*(2S)0" );
156
157 static const EvtId RHO2S0 = EvtPDL::getId( "rho(2S)0" );
158 static const EvtId RHO2SP = EvtPDL::getId( "rho(2S)+" );
159 static const EvtId RHO2SM = EvtPDL::getId( "rho(2S)-" );
160 static const EvtId OMEG2S = EvtPDL::getId( "omega(2S)" );
161
162 static const EvtId RHOP = EvtPDL::getId( "rho+" );
163 static const EvtId RHOM = EvtPDL::getId( "rho-" );
164 static const EvtId RHO0 = EvtPDL::getId( "rho0" );
165
166 static const EvtId A1P = EvtPDL::getId( "a_1+" );
167 static const EvtId A1M = EvtPDL::getId( "a_1-" );
168 static const EvtId A10 = EvtPDL::getId( "a_10" );
169
170 static const EvtId B1P = EvtPDL::getId( "b_1+" );
171 static const EvtId B1M = EvtPDL::getId( "b_1-" );
172 static const EvtId B10 = EvtPDL::getId( "b_10" );
173
174 static const EvtId H1 = EvtPDL::getId( "h_1" );
175 static const EvtId H1PR = EvtPDL::getId( "h'_1" );
176
177 static const EvtId F1 = EvtPDL::getId( "f_1" );
178 static const EvtId F1PR = EvtPDL::getId( "f'_1" );
179
180 static const EvtId OMEG = EvtPDL::getId( "omega" );
181 static const EvtId KSTP = EvtPDL::getId( "K*+" );
182 static const EvtId KSTM = EvtPDL::getId( "K*-" );
183 static const EvtId KST0 = EvtPDL::getId( "K*0" );
184 static const EvtId KSTB = EvtPDL::getId( "anti-K*0" );
185
186 static const EvtId K1P = EvtPDL::getId( "K_1+" );
187 static const EvtId K1M = EvtPDL::getId( "K_1-" );
188 static const EvtId K10 = EvtPDL::getId( "K_10" );
189 static const EvtId K1B = EvtPDL::getId( "anti-K_10" );
190
191 static const EvtId K1STP = EvtPDL::getId( "K'_1+" );
192 static const EvtId K1STM = EvtPDL::getId( "K'_1-" );
193 static const EvtId K1ST0 = EvtPDL::getId( "K'_10" );
194 static const EvtId K1STB = EvtPDL::getId( "anti-K'_10" );
195
196 static const EvtId PHI = EvtPDL::getId( "phi" );
197
198 static const EvtId D1P1SP = EvtPDL::getId( "D_s1+" );
199 static const EvtId D1P1SN = EvtPDL::getId( "D_s1-" );
200
201 static const EvtId D3P1SP = EvtPDL::getId( "D'_s1+" );
202 static const EvtId D3P1SN = EvtPDL::getId( "D'_s1-" );
203
204 static const EvtId DSSTP = EvtPDL::getId( "D_s*+" );
205 static const EvtId DSSTM = EvtPDL::getId( "D_s*-" );
206
207 if ( daught == DST0 || daught == DSTP || daught == DSTM || daught == DSTB ||
208 daught == OMEG || daught == RHO0 || daught == RHOM || daught == RHOP ||
209 daught == KSTP || daught == KSTM || daught == KST0 || daught == KSTB ||
210 daught == PHI || daught == DSSTP || daught == DSSTM ) {
211 EvtISGW2FF3S1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
212 }
213 if ( daught == B10 || daught == B1P || daught == B1M || daught == H1 ||
214 daught == H1PR || daught == D1P1P || daught == D1P10 || daught == D1P1B ||
215 daught == D1P1SP || daught == D1P1SN || daught == D1P1N ||
216 daught == K10 || daught == K1B || daught == K1P || daught == K1M ) {
217 EvtISGW2FF1P1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
218 }
219 if ( daught == RHO2S0 || daught == RHO2SP || daught == RHO2SM ||
220 daught == OMEG2S || daught == D23S1P || daught == D23S1B ||
221 daught == D23S1N || daught == D23S10 ) {
222 EvtISGW2FF23S1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
223 }
224 if ( daught == A10 || daught == A1P || daught == A1M || daught == F1 ||
225 daught == F1PR || daught == D3P1P || daught == D3P10 ||
226 daught == D3P1B || daught == D3P1N || daught == K1STM ||
227 daught == K1STB || daught == K1STP || daught == D3P1SP ||
228 daught == D3P1SN || daught == K1ST0 ) {
229 EvtISGW2FF3P1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
230 }
231
232 // Need to stuff in some factors to make these the ffs that
233 // is used elsewhere...
234
235 double mb = EvtPDL::getMeanMass( parent );
236
237 *vf = ( gf ) * ( mb + mass );
238 *a1f = ( ff ) / ( mb + mass );
239 *a2f = -1.0 * ( apf ) * ( mb + mass );
240
241 double a3f = ( ( mb + mass ) / ( 2.0 * mass ) ) * ( *a1f ) -
242 ( ( mb - mass ) / ( 2.0 * mass ) ) * ( *a2f );
243
244 *a0f = a3f + ( ( t * amf ) / ( 2.0 * mass ) );
245
246 return;
247}
248
249void EvtISGW2FF::EvtISGW2FF1S0( EvtId parent, EvtId daugt, double t,
250 double mass, double* fpf, double* fmf )
251{
252 double mtb, mbb( 0.0 );
253 double msd( 0.0 ), mx, mb, nf( 0.0 ), nfp( 0.0 );
254 double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx;
255 double zji, cji, gammaji, chiji, betaji_fppfm;
256 double rfppfm, rfpmfm, f3fppfm, f3fpmfm, fppfm, fpmfm, ai, f3;
257 double mqm, msb( 0.0 ), bb2( 0.0 ), mup, bbx2, tm, r2, betaji_fpmfm;
258
259 EvtId prnt = parent;
260 EvtId dgt = daugt;
261
262 //added by Lange Jan4,2000
263 static const EvtIdSet theB{ "B+", "B-", "B0", "anti-B0" };
264
265 static const EvtId D0 = EvtPDL::getId( "D0" );
266 static const EvtId D0B = EvtPDL::getId( "anti-D0" );
267 static const EvtId DP = EvtPDL::getId( "D+" );
268 static const EvtId DM = EvtPDL::getId( "D-" );
269
270 static const EvtId PIP = EvtPDL::getId( "pi+" );
271 static const EvtId PIM = EvtPDL::getId( "pi-" );
272 static const EvtId PI0 = EvtPDL::getId( "pi0" );
273
274 static const EvtId ETA = EvtPDL::getId( "eta" );
275 static const EvtId ETAPR = EvtPDL::getId( "eta'" );
276
277 static const EvtId KP = EvtPDL::getId( "K+" );
278 static const EvtId KM = EvtPDL::getId( "K-" );
279 static const EvtId K0 = EvtPDL::getId( "K0" );
280 static const EvtId KB = EvtPDL::getId( "anti-K0" );
281 static const EvtId K0S = EvtPDL::getId( "K_S0" );
282 static const EvtId K0L = EvtPDL::getId( "K_L0" );
283
284 static const EvtId DSP = EvtPDL::getId( "D_s+" );
285 static const EvtId DSM = EvtPDL::getId( "D_s-" );
286
287 static const EvtId BSB = EvtPDL::getId( "anti-B_s0" );
288 static const EvtId BS0 = EvtPDL::getId( "B_s0" );
289
290 if ( theB.contains( prnt ) ) {
291 msb = 5.2;
292 msd = 0.33;
293 bb2 = 0.431 * 0.431;
294 mbb = 5.31;
295 nf = 4.0;
296
297 if ( dgt == PI0 || dgt == PIP || dgt == PIM || dgt == ETA ||
298 dgt == ETAPR ) {
299 msq = 0.33;
300 bx2 = 0.406 * 0.406;
301 mbx = 0.75 * 0.770 + 0.25 * 0.14;
302 nfp = 0.0;
303 } else {
304 if ( dgt == D0 || dgt == D0B || dgt == DP || dgt == DM ) {
305 msq = 1.82;
306 bx2 = 0.45 * 0.45;
307 mbx = 0.75 * 2.01 + 0.25 * 1.87;
308 nfp = 3.0;
309 } else {
310 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
311 << "Not implemented daugt:" << daugt.getId()
312 << " in get_isgw_ff_1S0.\n";
313 }
314 }
315 } else {
316 if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
317 msb = 1.82;
318 msd = 0.33;
319 bb2 = 0.45 * 0.45;
320 mbb = 1.963;
321 nf = 3.0;
322
323 if ( dgt == PIP || dgt == PIM || dgt == PI0 || dgt == ETA ||
324 dgt == ETAPR ) {
325 msq = 0.33;
326 bx2 = 0.406 * 0.406;
327 mbx = 0.75 * 0.770 + 0.25 * 0.14;
328 nfp = 0.0;
329 } else {
330 if ( dgt == K0 || dgt == K0S || dgt == K0L || dgt == KB ||
331 dgt == KP || dgt == KM ) {
332 msq = 0.55;
333 bx2 = 0.44 * 0.44;
334 mbx = 0.75 * 0.892 + 0.25 * 0.49767;
335 nfp = 2.0;
336 } else {
337 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
338 << "Not implemented daugt:" << daugt.getId()
339 << " in get_isgw_ff_1S0.\n";
340 }
341 }
342 } else {
343 if ( prnt == DSP || prnt == DSM ) {
344 msb = 1.82;
345 msd = 0.55;
346 bb2 = 0.56 * 0.56;
347 mbb = 1.968;
348 nf = 3.0;
349
350 if ( dgt == K0 || dgt == K0S || dgt == K0L || dgt == KB ) {
351 msq = 0.33;
352 bx2 = 0.44 * 0.44;
353 mbx = 0.75 * 0.770 + 0.25 * 0.14;
354 nfp = 0.0;
355 } else {
356 if ( dgt == PI0 || dgt == ETA || dgt == ETAPR ) {
357 msq = 0.33;
358 bx2 = 0.53 * 0.53;
359 mbx = 0.75 * 0.892 + 0.25 * 0.49767;
360 nfp = 0.0;
361 } else {
362 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
363 << "Not implemented daugt:" << daugt.getId()
364 << " in get_isgw_ff_1S0.\n";
365 }
366 }
367 } else {
368 //BS -> cs constants added by djl on Jan. 21,1998
369 if ( prnt == BS0 || prnt == BSB ) {
370 msb = 5.2;
371 msd = 0.55;
372 bb2 = 0.54 * 0.54;
373 mbb = 5.38;
374 nf = 4.0;
375
376 if ( dgt == DSP || dgt == DSM ) {
377 msq = 1.82;
378 bx2 = 0.56 * 0.56;
379 mbx = 0.75 * 2.11 + 0.25 * 1.97;
380 nfp = 3.0;
381 } else if ( dgt == KP || dgt == KM ) {
382 msq = 0.55;
383 bx2 = 0.44 * 0.44;
384 mbx = 0.75 * 0.892 + 0.25 * 0.49767;
385 nfp = 2.0;
386 } else {
387 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
388 << "Not implemented daugt:" << daugt.getId()
389 << " in get_isgw_ff_1S0.\n";
390 }
391 }
392
393 else {
394 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
395 << "Not implemented parent in get_isgw_ff_1S0.\n";
396 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
397 << "Parent:" << parent.getId() << endl;
398 }
399 }
400 }
401 }
402
403 mtb = msb + msd;
404 mtx = msq + msd;
405 mb = EvtPDL::getMeanMass( parent );
406 mx = mass;
407
408 mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
409 bbx2 = 0.5 * ( bb2 + bx2 );
410 tm = ( mb - mx ) * ( mb - mx );
411 if ( t > tm )
412 t = 0.99 * tm;
413
414 mqm = 0.1;
415 r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
416 ( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
417 log( EvtGetas( mqm, mqm ) / EvtGetas( msq, msq ) );
418
419 f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 1.5 ) /
420 ( ( 1.0 + r2 * ( tm - t ) / 12.0 ) * ( 1.0 + r2 * ( tm - t ) / 12.0 ) );
421
422 // for w use wt def with physical masses.
423 // EvtGenReport(EVTGEN_ERROR,"EvtGen") << "before w\n";
424
425 ai = -1.0 * ( 6.0 / ( 33.0 - 2.0 * nf ) );
426 cji = pow( ( EvtGetas( msb, msb ) / EvtGetas( msq, msq ) ), ai );
427
428 zji = msq / msb;
429
430 gammaji = EvtGetGammaji( zji );
431 chiji = -1.0 - ( gammaji / ( 1 - zji ) );
432 betaji_fppfm = gammaji - ( 2.0 / 3.0 ) * chiji;
433 betaji_fpmfm = gammaji + ( 2.0 / 3.0 ) * chiji;
434 rfppfm = cji * ( 1.0 + betaji_fppfm * EvtGetas( msq, sqrt( msb * msq ) ) /
435 EvtConst::pi );
436 rfpmfm = cji * ( 1.0 + betaji_fpmfm * EvtGetas( msq, sqrt( msb * msq ) ) /
437 EvtConst::pi );
438 f3fppfm = f3 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), 0.5 );
439 f3fpmfm = f3 * pow( ( mbb / mtb ), 0.5 ) * pow( ( mbx / mtx ), -0.5 );
440 fppfm = f3fppfm * rfppfm *
441 ( 2.0 - ( ( mtx / msq ) * ( 1 - ( ( msd * msq * bb2 ) /
442 ( 2.0 * mup * mtx * bbx2 ) ) ) ) );
443 fpmfm = f3fpmfm * rfpmfm * ( mtb / msq ) *
444 ( 1 - ( ( msd * msq * bb2 ) / ( 2.0 * mup * mtx * bbx2 ) ) );
445
446 *fpf = ( fppfm + fpmfm ) / 2.0;
447 *fmf = ( fppfm - fpmfm ) / 2.0;
448
449 return;
450} //get_ff_isgw_1s0
451
452void EvtISGW2FF::EvtISGW2FF3S1( EvtId parent, EvtId daugt, double t, double mass,
453 double* f, double* g, double* ap, double* am )
454{
455 //added by Lange Jan4,2000
456 static const EvtId BP = EvtPDL::getId( "B+" );
457 static const EvtId BM = EvtPDL::getId( "B-" );
458 static const EvtId B0 = EvtPDL::getId( "B0" );
459 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
460
461 static const EvtId DST0 = EvtPDL::getId( "D*0" );
462 static const EvtId DSTB = EvtPDL::getId( "anti-D*0" );
463 static const EvtId DSTP = EvtPDL::getId( "D*+" );
464 static const EvtId DSTM = EvtPDL::getId( "D*-" );
465 static const EvtId D0 = EvtPDL::getId( "D0" );
466 static const EvtId D0B = EvtPDL::getId( "anti-D0" );
467 static const EvtId DP = EvtPDL::getId( "D+" );
468 static const EvtId DM = EvtPDL::getId( "D-" );
469
470 static const EvtId RHOP = EvtPDL::getId( "rho+" );
471 static const EvtId RHOM = EvtPDL::getId( "rho-" );
472 static const EvtId RHO0 = EvtPDL::getId( "rho0" );
473 static const EvtId OMEG = EvtPDL::getId( "omega" );
474
475 static const EvtId KSTP = EvtPDL::getId( "K*+" );
476 static const EvtId KSTM = EvtPDL::getId( "K*-" );
477 static const EvtId KST0 = EvtPDL::getId( "K*0" );
478 static const EvtId KSTB = EvtPDL::getId( "anti-K*0" );
479
480 static const EvtId PHI = EvtPDL::getId( "phi" );
481 static const EvtId DSP = EvtPDL::getId( "D_s+" );
482 static const EvtId DSM = EvtPDL::getId( "D_s-" );
483
484 static const EvtId DSSTP = EvtPDL::getId( "D_s*+" );
485 static const EvtId DSSTM = EvtPDL::getId( "D_s*-" );
486
487 static const EvtId BSB = EvtPDL::getId( "anti-B_s0" );
488 static const EvtId BS0 = EvtPDL::getId( "B_s0" );
489
490 double cf( 0.0 ), mtb, wt, msd( 0.0 ), mup, f3f, msq( 0.0 ), bb2( 0.0 ),
491 mum, mtx, bbx2, f3g;
492 double cji, bx2( 0.0 ), f3appam, msb( 0.0 ), tm, mbb( 0.0 ), mbx( 0.0 );
493 double f3apmam, appam, apmam, mb, mx, f3;
494 double r_f, r_g, r_apmam, betaji_f, betaji_g;
495 double betaji_appam, betaji_apmam;
496 double mqm, r2, chiji, zji, ai, nf( 0.0 ), nfp( 0.0 ), gammaji;
497
498 EvtId prnt = parent;
499 EvtId dgt = daugt;
500
501 if ( parent == B0 || parent == B0B || parent == BP || parent == BM ) {
502 msb = 5.2;
503 msd = 0.33;
504 bb2 = 0.431 * 0.431;
505 mbb = 5.31;
506 nf = 4.0;
507
508 if ( dgt == DST0 || dgt == DSTP || dgt == DSTM || dgt == DSTB ) {
509 cf = 0.989;
510 msq = 1.82;
511 bx2 = 0.38 * 0.38;
512 mbx = 0.75 * 2.01 + 0.25 * 1.87;
513 nfp = 3.0;
514 } else {
515 if ( dgt == OMEG || dgt == RHO0 || dgt == RHOM || dgt == RHOP ) {
516 cf = 0.905;
517 msq = 0.33;
518 bx2 = 0.299 * 0.299;
519 mbx = 0.75 * 0.770 + 0.25 * 0.14;
520 nfp = 0.0;
521 } else {
522 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
523 << "Not implemented daugt:" << daugt.getId()
524 << " in get_isgw_ff_3S1.\n";
525 }
526 }
527 } else {
528 if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
529 msb = 1.82;
530 msd = 0.33;
531 bb2 = 0.45 * 0.45;
532 mbb = 1.963;
533 nf = 3.0;
534
535 if ( dgt == KSTP || dgt == KSTM || dgt == KST0 || dgt == KSTB ) {
536 cf = 0.928;
537 msq = 0.55;
538 bx2 = 0.33 * 0.33;
539 mbx = 0.75 * 0.892 + 0.25 * 0.494;
540 nfp = 2.0;
541 } else {
542 if ( dgt == RHO0 || dgt == OMEG || dgt == RHOM || dgt == RHOP ) {
543 cf = 0.889;
544 msq = 0.33;
545 bx2 = 0.299 * 0.299;
546 mbx = 0.75 * 0.770 + 0.25 * 0.14;
547 nfp = 0.0;
548 } else {
549 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
550 << "Not implemented daugt:" << daugt.getId()
551 << " in get_isgw_ff_3S1.\n";
552 }
553 }
554 } else {
555 if ( prnt == DSP || prnt == DSM ) {
556 msb = 1.82;
557 msd = 0.55;
558 bb2 = 0.56 * 0.56;
559 mbb = 1.968;
560 nf = 3.0;
561
562 if ( dgt == KSTB || dgt == KST0 ) {
563 cf = 0.8731;
564 msq = 0.55;
565 bx2 = 0.33 * 0.33;
566 mbx = 0.87;
567 nfp = 2.0;
568 } else {
569 if ( dgt == PHI ) {
570 cf = 0.911;
571 msq = 0.55;
572 bx2 = 0.37 * 0.37;
573 mbx = 0.97;
574 nfp = 2.0;
575 } else {
576 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
577 << "Not implemented daugt:" << daugt.getId()
578 << " in get_isgw_ff_3S1.\n";
579 }
580 }
581 } else {
582 //BS -> cs constants added by djl on Jan. 21,1998
583 if ( prnt == BS0 || prnt == BSB ) {
584 msb = 5.2;
585 msd = 0.55;
586 bb2 = 0.54 * 0.54;
587 mbb = 5.38;
588 nf = 4.0;
589
590 if ( dgt == DSSTP || dgt == DSSTM ) {
591 cf = 0.984;
592 msq = 1.82;
593 bx2 = 0.49 * 0.49;
594 mbx = 0.75 * 2.11 + 0.25 * 1.97;
595 nfp = 3.0;
596 } else if ( dgt == KSTP || dgt == KSTM || dgt == KST0 ||
597 dgt == KSTB ) {
598 cf = 0.928;
599 msq = 0.55;
600 bx2 = 0.33 * 0.33;
601 mbx = 0.75 * 0.892 + 0.25 * 0.494;
602 nfp = 2.0;
603 } else {
604 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
605 << "Not implemented daugt:" << daugt.getId()
606 << " in get_isgw_ff_1S0.\n";
607 }
608 }
609
610 else {
611 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
612 << "Not implemented parent in get_isgw2_ff_3S1.\n";
613 }
614 }
615 }
616 }
617
618 mtb = msb + msd;
619 mtx = msq + msd;
620
621 mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
622 mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
623 bbx2 = 0.5 * ( bb2 + bx2 );
624 mb = EvtPDL::getMeanMass( parent );
625 mx = mass;
626 tm = ( mb - mx ) * ( mb - mx );
627 if ( t > tm )
628 t = 0.99 * tm;
629
630 wt = 1.0 + ( tm - t ) / ( 2.0 * mbb * mbx );
631 mqm = 0.1;
632
633 r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
634 ( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
635 log( EvtGetas( mqm, mqm ) / EvtGetas( msq, msq ) );
636
637 ai = -1.0 * ( 6.0 / ( 33.0 - 2.0 * nf ) );
638
639 cji = pow( ( EvtGetas( msb, msb ) / EvtGetas( msq, msq ) ), ai );
640 zji = msq / msb;
641
642 gammaji = EvtGetGammaji( zji );
643
644 chiji = -1.0 - ( gammaji / ( 1 - zji ) );
645
646 betaji_g = ( 2.0 / 3.0 ) + gammaji;
647 betaji_f = ( -2.0 / 3.0 ) + gammaji;
648 betaji_appam = -1.0 - chiji + ( 4.0 / ( 3.0 * ( 1.0 - zji ) ) ) +
649 ( 2.0 * ( 1 + zji ) * gammaji /
650 ( 3.0 * ( 1.0 - zji ) * ( 1.0 - zji ) ) );
651
652 betaji_apmam = ( 1.0 / 3.0 ) - chiji - ( 4.0 / ( 3.0 * ( 1.0 - zji ) ) ) -
653 ( 2.0 * ( 1 + zji ) * gammaji /
654 ( 3.0 * ( 1.0 - zji ) * ( 1.0 - zji ) ) ) +
655 gammaji;
656
657 r_g = cji * ( 1 + ( betaji_g * EvtGetas( msq, sqrt( mb * msq ) ) /
658 ( EvtConst::pi ) ) );
659 r_f = cji * ( 1 + ( betaji_f * EvtGetas( msq, sqrt( mb * msq ) ) /
660 ( EvtConst::pi ) ) );
661 r_apmam = cji * ( 1 + ( betaji_apmam * EvtGetas( msq, sqrt( mb * msq ) ) /
662 ( EvtConst::pi ) ) );
663
664 f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 1.5 ) /
665 ( ( 1.0 + r2 * ( tm - t ) / 12.0 ) * ( 1.0 + r2 * ( tm - t ) / 12.0 ) );
666
667 f3f = sqrt( mbx * mbb / ( mtx * mtb ) ) * f3;
668 f3g = sqrt( mtx * mtb / ( mbx * mbb ) ) * f3;
669 f3appam = sqrt( mtb * mtb * mtb * mbx / ( mbb * mbb * mbb * mtx ) ) * f3;
670 f3apmam = sqrt( mtx * mtb / ( mbx * mbb ) ) * f3;
671 *f = cf * mtb * ( 1 + wt + msd * ( wt - 1 ) / ( 2 * mup ) ) * f3f * r_f;
672 *g = 0.5 * ( 1 / msq - msd * bb2 / ( 2 * mum * mtx * bbx2 ) ) * f3g * r_g;
673
674 appam = cji *
675 ( msd * bx2 * ( 1 - msd * bx2 / ( 2 * mtb * bbx2 ) ) /
676 ( ( 1 + wt ) * msq * msb * bbx2 ) -
677 betaji_appam * EvtGetas( msq, sqrt( msq * mb ) ) /
678 ( mtb * EvtConst::pi ) ) *
679 f3appam;
680
681 apmam = -1.0 *
682 ( mtb / msb - msd * bx2 / ( 2 * mup * bbx2 ) +
683 wt * msd * mtb * bx2 * ( 1 - msd * bx2 / ( 2 * mtb * bbx2 ) ) /
684 ( ( wt + 1 ) * msq * msb * bbx2 ) ) *
685 f3apmam * r_apmam / mtx;
686
687 *ap = 0.5 * ( appam + apmam );
688 *am = 0.5 * ( appam - apmam );
689 return;
690}
691
692void EvtISGW2FF::EvtISGW2FF21S0( EvtId parent, EvtId daugt, double t,
693 double mass, double* fppf, double* fpmf )
694{
695 //added by Lange Jan4,2000
696 static const EvtId BP = EvtPDL::getId( "B+" );
697 static const EvtId BM = EvtPDL::getId( "B-" );
698 static const EvtId B0 = EvtPDL::getId( "B0" );
699 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
700
701 static const EvtId D0 = EvtPDL::getId( "D0" );
702 static const EvtId D0B = EvtPDL::getId( "anti-D0" );
703 static const EvtId DP = EvtPDL::getId( "D+" );
704 static const EvtId DM = EvtPDL::getId( "D-" );
705
706 static const EvtId D21S0P = EvtPDL::getId( "D(2S)+" );
707 static const EvtId D21S0N = EvtPDL::getId( "D(2S)-" );
708 static const EvtId D21S00 = EvtPDL::getId( "D(2S)0" );
709 static const EvtId D21S0B = EvtPDL::getId( "anti-D(2S)0" );
710
711 static const EvtId ETA2S = EvtPDL::getId( "eta(2S)" );
712
713 static const EvtId PI2S0 = EvtPDL::getId( "pi(2S)0" );
714 static const EvtId PI2SP = EvtPDL::getId( "pi(2S)+" );
715 static const EvtId PI2SM = EvtPDL::getId( "pi(2S)-" );
716
717 double mtb, mbb( 0.0 );
718 double msd( 0.0 ), mx, mb, nfp( 0.0 );
719 double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx;
720 double f3fppfm, f3fpmfm, fppfm, fpmfm, f3;
721 double mqm, msb( 0.0 );
722 double r2, wt, tm, bb2( 0.0 ), bbx2;
723 double tau, udef, vdef;
724
725 EvtId prnt = parent;
726 EvtId dgt = daugt;
727
728 if ( prnt == B0 || prnt == B0B || prnt == BP || prnt == BM ) {
729 msb = 5.2;
730 msd = 0.33;
731 bb2 = 0.431 * 0.431;
732 mbb = 0.75 * 5.325 + 0.25 * 5.279;
733
734 if ( dgt == PI2S0 || dgt == PI2SP || dgt == PI2SM || dgt == ETA2S ) {
735 msq = 0.33;
736 bx2 = 0.406 * 0.406;
737 mbx = 0.75 * 1.45 + 0.25 * 1.300;
738 nfp = 0.0;
739 } else {
740 if ( dgt == D21S0P || dgt == D21S0B || dgt == D21S0N ||
741 dgt == D21S00 ) {
742 msq = 1.82;
743 bx2 = 0.45 * 0.45;
744 mbx = 0.75 * 2.64 + 0.25 * 2.58;
745 nfp = 3.0;
746 } else {
747 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
748 << "Not implemented daugt in get_EvtISGW2_ff_21S0.\n";
749 }
750 }
751 } else {
752 if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
753 msb = 1.82;
754 msd = 0.33;
755 bb2 = 0.45 * 0.45;
756 mbb = 1.963;
757 if ( dgt == PI2SP || dgt == PI2SM || dgt == PI2S0 || dgt == ETA2S ) {
758 msq = 0.33;
759 bx2 = 0.406 * 0.406;
760 mbx = 0.75 * 1.45 + 0.25 * 1.300;
761 nfp = 0.0;
762 } else {
763 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
764 << "Not implemented daugt in get_EvtISGW2_ff_21S0.\n";
765 }
766 } else {
767 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
768 << "Not implemented parent in get_EvtISGW2_ff_21S0.\n";
769 }
770 }
771
772 mtb = msb + msd;
773 mtx = msq + msd;
774
775 mb = EvtPDL::getMeanMass( parent );
776 mx = mass;
777
778 bbx2 = 0.5 * ( bb2 + bx2 );
779 tm = ( mb - mx ) * ( mb - mx );
780 if ( t > tm )
781 t = 0.99 * tm;
782 wt = 1.0 + ( tm - t ) / ( 2.0 * mbb * mbx );
783
784 mqm = 0.1;
785 r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
786 ( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
787 log( EvtGetas( mqm ) / EvtGetas( msq ) );
788
789 f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 3.0 / 2.0 ) /
790 ( pow( ( 1.0 + r2 * ( tm - t ) / 24.0 ), 4.0 ) );
791
792 f3fppfm = f3 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), 0.5 );
793 f3fpmfm = f3 * pow( ( mbb / mtb ), 0.5 ) * pow( ( mbx / mtx ), -0.5 );
794
795 tau = msd * msd * bx2 * ( wt - 1 ) / ( bb2 * bbx2 );
796 udef = ( ( bb2 - bx2 ) / ( 2.0 * bbx2 ) ) +
797 ( ( bb2 * tau ) / ( 3.0 * bbx2 ) );
798 vdef = ( bb2 * ( 1.0 + ( msq / msb ) ) / ( 6.0 * bbx2 ) ) *
799 ( 7.0 - ( ( bb2 / bbx2 ) * ( 5 + tau ) ) );
800
801 fppfm = f3fppfm * sqrt( 1.5 ) *
802 ( ( 1.0 - ( msd / msq ) ) * udef - ( msd * vdef / msq ) );
803 fpmfm = f3fpmfm * sqrt( 1.5 ) * ( mtb / msq ) *
804 ( udef + ( msd * vdef / mtx ) );
805
806 *fppf = ( fppfm + fpmfm ) / 2.0;
807 *fpmf = ( fppfm - fpmfm ) / 2.0;
808 return;
809
810} //get_ff_isgw_21s0
811
812void EvtISGW2FF::EvtISGW2FF23S1( EvtId parent, EvtId daugt, double t,
813 double mass, double* fpf, double* gpf,
814 double* appf, double* apmf )
815{
816 //added by Lange Jan4,2000
817 static const EvtId BP = EvtPDL::getId( "B+" );
818 static const EvtId BM = EvtPDL::getId( "B-" );
819 static const EvtId B0 = EvtPDL::getId( "B0" );
820 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
821
822 static const EvtId D0 = EvtPDL::getId( "D0" );
823 static const EvtId D0B = EvtPDL::getId( "anti-D0" );
824 static const EvtId DP = EvtPDL::getId( "D+" );
825 static const EvtId DM = EvtPDL::getId( "D-" );
826
827 static const EvtId D23S1P = EvtPDL::getId( "D*(2S)+" );
828 static const EvtId D23S1N = EvtPDL::getId( "D*(2S)-" );
829 static const EvtId D23S10 = EvtPDL::getId( "D*(2S)0" );
830 static const EvtId D23S1B = EvtPDL::getId( "anti-D*(2S)0" );
831
832 static const EvtId RHO2S0 = EvtPDL::getId( "rho(2S)0" );
833 static const EvtId RHO2SP = EvtPDL::getId( "rho(2S)+" );
834 static const EvtId RHO2SM = EvtPDL::getId( "rho(2S)-" );
835 static const EvtId OMEG2S = EvtPDL::getId( "omega(2S)" );
836
837 double mtb, mbb( 0.0 );
838 double msd( 0.0 ), mx, mb, nfp( 0.0 );
839 double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx;
840 double f3appam, f3apmam, f3, appam, apmam, f3fp, f3gp;
841 double udef, tau, mum, bb2( 0.0 ), bbx2, tm, wt, mqm, r2, msb( 0.0 );
842 double cfp( 0.0 );
843
844 EvtId prnt = parent;
845 EvtId dgt = daugt;
846
847 if ( prnt == B0 || prnt == B0B || prnt == BP || prnt == BM ) {
848 msb = 5.2;
849 msd = 0.33;
850 bb2 = 0.431 * 0.431;
851 mbb = 0.75 * 5.325 + 0.25 * 5.279;
852
853 if ( dgt == RHO2S0 || dgt == RHO2SP || dgt == RHO2SM || dgt == OMEG2S ) {
854 cfp = 0.776;
855 msq = 0.33;
856 bx2 = 0.299 * 0.299;
857 mbx = 0.75 * 1.45 + 0.25 * 1.300;
858 nfp = 0.0;
859
860 } else {
861 if ( dgt == D23S1N || dgt == D23S1P || dgt == D23S1B ||
862 dgt == D23S10 ) {
863 cfp = 0.929;
864 msq = 1.82;
865 bx2 = 0.38 * 0.38;
866 mbx = 0.75 * 2.64 + 0.25 * 2.58;
867 nfp = 3.0;
868 } else {
869 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
870 << "Not implemented daugt in get_isgw_ff_23P1.\n";
871 }
872 }
873 } else {
874 if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
875 msb = 1.82;
876 msd = 0.33;
877 bb2 = 0.45 * 0.45;
878 mbb = 1.963;
879
880 if ( dgt == RHO2S0 || dgt == RHO2SP || dgt == RHO2SM ||
881 dgt == OMEG2S ) {
882 cfp = 0.74;
883 msq = 0.33;
884 bx2 = 0.299 * 0.299;
885 mbx = 0.75 * 1.45 + 0.25 * 1.300;
886 nfp = 0.0;
887 } else {
888 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
889 << "Not implemented daugt in get_isgw_ff_23P1.\n";
890 }
891 } else {
892 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
893 << "Not implemented parent in get_isgw_ff_23P1.\n";
894 }
895 }
896
897 mtb = msb + msd;
898 mtx = msq + msd;
899 mb = EvtPDL::getMeanMass( parent );
900 mx = mass;
901
902 mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
903 bbx2 = 0.5 * ( bb2 + bx2 );
904 tm = ( mb - mx ) * ( mb - mx );
905
906 if ( t > tm )
907 t = 0.99 * tm;
908 wt = 1.0 + ( tm - t ) / ( 2.0 * mbb * mbx );
909
910 mqm = 0.1;
911 r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
912 ( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
913 log( EvtGetas( mqm ) / EvtGetas( msq ) );
914
915 f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 3.0 / 2.0 ) /
916 ( pow( ( 1.0 + r2 * ( tm - t ) / 24.0 ), 4.0 ) );
917
918 f3fp = f3 * pow( ( mbb / mtb ), 0.5 ) * pow( ( mbx / mtx ), 0.5 );
919 f3gp = f3 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), -0.5 );
920 f3appam = f3 * pow( ( mbb / mtb ), -1.5 ) * pow( ( mbx / mtx ), 0.5 );
921 f3apmam = f3 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), -0.5 );
922
923 tau = msd * msd * bx2 * ( wt - 1.0 ) / ( bb2 * bbx2 );
924 udef = ( ( bb2 - bx2 ) / ( 2.0 * bbx2 ) );
925 udef = udef + ( ( bb2 * tau ) / ( 3.0 * bbx2 ) );
926
927 *fpf = cfp * sqrt( 1.5 ) * mtb * ( 1.0 + wt ) * udef * f3fp;
928
929 *gpf = sqrt( 3.0 / 8.0 ) * f3gp *
930 ( ( ( 1.0 / msq ) - ( ( msd * bb2 ) / ( 2.0 * mum * mtx * bbx2 ) ) ) *
931 udef +
932 ( ( msd * bb2 * bx2 ) / ( 3.0 * mum * mtx * bbx2 * bbx2 ) ) );
933
934 appam = f3appam * sqrt( 2.0 / 3.0 ) * ( bb2 / ( msq * msb * bbx2 ) ) *
935 ( ( -7.0 * msd * msd * bx2 * bx2 * ( 1.0 + ( tau / 7.0 ) ) /
936 ( 8.0 * mtb * bbx2 * bbx2 ) ) +
937 ( 5.0 * msd * bx2 * ( 1.0 + ( tau / 5.0 ) ) / ( 4.0 * bbx2 ) ) +
938 ( 3.0 * msd * msd * bx2 * bx2 / ( 8.0 * mtb * bb2 * bbx2 ) ) -
939 ( 3.0 * msd * bx2 / ( 4.0 * bb2 ) ) );
940
941 apmam =
942 f3apmam * sqrt( 3.0 / 2.0 ) * ( mtb / ( msb * mtx ) ) *
943 ( 1.0 - ( bb2 * ( 1.0 + ( tau / 7.0 ) ) / bbx2 ) -
944 ( msd * bx2 *
945 ( 1.0 - ( 5.0 * bb2 * ( 1.0 + ( tau / 5.0 ) ) / ( 3.0 * bbx2 ) ) ) /
946 ( 2.0 * mtb * bbx2 ) ) -
947 ( 7.0 * msd * msd * bb2 * bx2 / ( 12.0 * msq * mtb * bbx2 * bbx2 ) ) *
948 ( 1.0 - ( bx2 / bbx2 ) + ( bb2 * tau / ( 7.0 * bbx2 ) ) ) );
949
950 *appf = ( appam + apmam ) / 2.0;
951 *apmf = ( appam - apmam ) / 2.0;
952 return;
953} //get_ff_isgw_23s1
954
955void EvtISGW2FF::EvtISGW2FF1P1( EvtId parent, EvtId daugt, double t, double mass,
956 double* rf, double* vf, double* spf, double* smf )
957{
958 //added by Lange Jan4,2000
959 static const EvtId BP = EvtPDL::getId( "B+" );
960 static const EvtId BM = EvtPDL::getId( "B-" );
961 static const EvtId B0 = EvtPDL::getId( "B0" );
962 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
963
964 static const EvtId D0 = EvtPDL::getId( "D0" );
965 static const EvtId D0B = EvtPDL::getId( "anti-D0" );
966 static const EvtId DP = EvtPDL::getId( "D+" );
967 static const EvtId DM = EvtPDL::getId( "D-" );
968
969 static const EvtId D1P1P = EvtPDL::getId( "D_1+" );
970 static const EvtId D1P1N = EvtPDL::getId( "D_1-" );
971 static const EvtId D1P10 = EvtPDL::getId( "D_10" );
972 static const EvtId D1P1B = EvtPDL::getId( "anti-D_10" );
973
974 static const EvtId B1P = EvtPDL::getId( "b_1+" );
975 static const EvtId B1M = EvtPDL::getId( "b_1-" );
976 static const EvtId B10 = EvtPDL::getId( "b_10" );
977
978 static const EvtId H1 = EvtPDL::getId( "h_1" );
979 static const EvtId H1PR = EvtPDL::getId( "h'_1" );
980
981 static const EvtId K1P = EvtPDL::getId( "K_1+" );
982 static const EvtId K1M = EvtPDL::getId( "K_1-" );
983 static const EvtId K10 = EvtPDL::getId( "K_10" );
984 static const EvtId K1B = EvtPDL::getId( "anti-K_10" );
985
986 static const EvtId D1P1SP = EvtPDL::getId( "D_s1+" );
987 static const EvtId D1P1SN = EvtPDL::getId( "D_s1-" );
988
989 static const EvtId BSB = EvtPDL::getId( "anti-B_s0" );
990 static const EvtId BS0 = EvtPDL::getId( "B_s0" );
991
992 double mtb, mbb( 0.0 );
993 double msd( 0.0 ), mx, mb, nfp( 0.0 );
994 double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx, f5;
995 double f5sppsm, f5spmsm;
996 double f5v, f5r, mup, mum, vv, rr, spmsm, sppsm;
997 double mqm, msb( 0.0 ), bb2( 0.0 ), bbx2, tm, wt, r2;
998 EvtId prnt = parent;
999 EvtId dgt = daugt;
1000 if ( prnt == B0 || prnt == B0B || prnt == BP || prnt == BM ) {
1001 msb = 5.2;
1002 msd = 0.33;
1003 bb2 = 0.431 * 0.431;
1004 mbb = 5.31;
1005 if ( dgt == B10 || dgt == B1P || dgt == B1M || dgt == H1 || dgt == H1PR ) {
1006 msq = 0.33;
1007 bx2 = 0.275 * 0.275;
1008 mbx = ( 3.0 * 1.123 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
1009 nfp = 0.0;
1010 } else {
1011 if ( dgt == D1P1P || dgt == D1P10 || dgt == D1P1B || dgt == D1P1N ) {
1012 msq = 1.82;
1013 bx2 = 0.33 * 0.33;
1014 mbx = ( 5.0 * 2.46 + 3.0 * 2.42 ) / 8.0;
1015 nfp = 3.0;
1016 } else {
1017 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1018 << "Not implemented daugt in get_isgw_ff_1P1.\n";
1019 }
1020 }
1021 } else {
1022 if ( prnt == DM || prnt == DP || prnt == D0B || prnt == D0 ) {
1023 msb = 1.82;
1024 msd = 0.33;
1025 bb2 = 0.45 * 0.45;
1026 mbb = 1.963;
1027 if ( dgt == B10 || dgt == B1P || dgt == B1M || dgt == H1 ||
1028 dgt == H1PR ) {
1029 msq = 0.33;
1030 bx2 = 0.275 * 0.275;
1031 mbx = ( 3.0 * 1.123 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
1032 nfp = 0.0;
1033 } else {
1034 if ( dgt == K10 || dgt == K1B || dgt == K1P || dgt == K1M ) {
1035 msq = 0.55;
1036 bx2 = 0.30 * 0.30;
1037 mbx = ( 3.0 * 1.27 + 1.43 + 5.0 * 1.43 + 3.0 * 1.4 ) / 12.0;
1038 nfp = 2.0;
1039 } else {
1040 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1041 << "Not implemented daugt in get_isgw_ff_1P1.\n";
1042 }
1043 }
1044 } else {
1045 //BS -> cs constants added by djl on Jan. 21,1998
1046 if ( prnt == BS0 || prnt == BSB ) {
1047 msb = 5.2;
1048 msd = 0.55;
1049 bb2 = 0.54 * 0.54;
1050 mbb = 5.38;
1051
1052 if ( dgt == D1P1SP || dgt == D1P1SN ) {
1053 msq = 1.82;
1054 bx2 = 0.41 * 0.41;
1055 mbx = ( 5.0 * 2.61 + 3.0 * 2.54 ) / 8.0;
1056 nfp = 3.0;
1057 } else if ( dgt == K10 || dgt == K1B || dgt == K1P ||
1058 dgt == K1M ) {
1059 msq = 0.55;
1060 bx2 = 0.30 * 0.30;
1061 mbx = ( 3.0 * 1.27 + 1.43 + 5.0 * 1.43 + 3.0 * 1.4 ) / 12.0;
1062 nfp = 2.0;
1063 } else {
1064 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1065 << "Not implemented daugt:" << daugt.getId()
1066 << " in get_isgw_ff_1S0.\n";
1067 }
1068 }
1069
1070 else {
1071 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1072 << "Not implemented parent in get_isgw_ff_1P1.\n";
1073 }
1074 }
1075 }
1076
1077 mtb = msb + msd;
1078 mtx = msq + msd;
1079
1080 mb = EvtPDL::getMeanMass( parent );
1081 mx = mass;
1082
1083 mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
1084 mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
1085 bbx2 = 0.5 * ( bb2 + bx2 );
1086 tm = ( mb - mx ) * ( mb - mx );
1087 if ( t > tm )
1088 t = 0.99 * tm;
1089 wt = 1.0 + ( tm - t ) / ( 2.0 * mbb * mbx );
1090
1091 mqm = 0.1;
1092 r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
1093 ( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
1094 log( EvtGetas( mqm, mqm ) / EvtGetas( msq, msq ) );
1095
1096 f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) /
1097 ( pow( ( 1.0 + r2 * ( tm - t ) / 18.0 ), 3.0 ) );
1098
1099 f5v = f5 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), -0.5 );
1100 f5r = f5 * pow( ( mbb / mtb ), 0.5 ) * pow( ( mbx / mtx ), 0.5 );
1101 f5sppsm = f5 * pow( ( mbb / mtb ), -1.5 ) * pow( ( mbx / mtx ), 0.5 );
1102 f5spmsm = f5 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), -0.5 );
1103
1104 if ( msq == msd ) {
1105 vv = f5v *
1106 ( ( ( mtb * sqrt( bb2 ) ) / ( 4.0 * sqrt( 2.0 ) * msb * msq * mtx ) ) +
1107 ( ( ( wt - 1 ) * msd ) / ( 6.0 * sqrt( 2.0 * bb2 ) * mtx ) ) );
1108
1109 rr = f5r * mtb * sqrt( bb2 / 2 ) *
1110 ( ( 1.0 / mup ) + ( ( msd * mtx * ( wt - 1 ) * ( wt - 1 ) ) /
1111 ( 3.0 * msq * bb2 ) ) );
1112
1113 sppsm = msd * f5sppsm / ( sqrt( 2.0 * bb2 ) * mtb ) *
1114 ( 1.0 - ( msd / msq ) + ( ( msd * bb2 ) / ( 2.0 * mup * bbx2 ) ) );
1115
1116 spmsm = msd * f5spmsm / ( sqrt( 2.0 * bb2 ) * msq ) *
1117 ( ( ( 4 - wt ) / 3.0 ) -
1118 ( ( msd * msq * bb2 ) / ( 2.0 * mtx * mup * bbx2 ) ) );
1119
1120 } else {
1121 vv = -1.0 * msd * f5v / ( 2.0 * sqrt( 3.0 * bb2 ) * mtx ) *
1122 ( ( wt + 1 ) / 2.0 + bb2 * mtb / ( 2.0 * msd * msq * msb ) );
1123
1124 rr = -2.0 * mtb * sqrt( bb2 / 3.0 ) * f5r *
1125 ( 1.0 / msq + mtx * msd * ( wt - 1 ) / ( 2.0 * bb2 ) *
1126 ( ( wt + 1 ) / ( 2.0 * msq ) -
1127 msd * bb2 / ( 2.0 * mum * mtx * bbx2 ) ) );
1128
1129 sppsm = -1.0 * sqrt( 3.0 ) * msd * f5sppsm / ( 2.0 * sqrt( bb2 ) * mtb ) *
1130 ( 1 - msd / ( 3.0 * msq ) -
1131 msd * bb2 / ( 3.0 * bbx2 ) *
1132 ( 1.0 / ( 2.0 * mum ) - 1.0 / mup ) );
1133
1134 spmsm = -1.0 * msd * f5spmsm / ( 2.0 * sqrt( 3.0 * bb2 ) * mtx ) *
1135 ( ( 2 - wt ) * mtx / msq +
1136 msd * bb2 / bbx2 * ( 1.0 / ( 2.0 * mum ) - 1.0 / mup ) );
1137 }
1138
1139 //smooth out the mass(meson) dependence a little
1140 double parMass = EvtPDL::getMeanMass( prnt );
1141 double q2max = parMass * parMass + mass * mass - 2.0 * parMass * mass;
1142 double massNom = EvtPDL::getMeanMass( dgt );
1143 double q2maxNom = parMass * parMass + massNom * massNom -
1144 2.0 * parMass * massNom;
1145 double q2maxin = sqrt( q2maxNom / q2max );
1146 if ( q2maxin > 1000. )
1147 q2maxin = 1000.;
1148
1149 vv *= q2maxin;
1150 rr *= q2maxin;
1151 sppsm *= q2maxin;
1152 spmsm *= q2maxin;
1153
1154 *vf = vv;
1155 *rf = rr;
1156 *spf = ( sppsm + spmsm ) / 2.0;
1157 *smf = ( sppsm - spmsm ) / 2.0;
1158 return;
1159} //get_ff_isgw_1p1
1160
1161void EvtISGW2FF::EvtISGW2FF3P1( EvtId parent, EvtId daugt, double t, double mass,
1162 double* lf, double* qf, double* cpf, double* cmf )
1163{
1164 //added by Lange Jan4,2000
1165 static const EvtId BP = EvtPDL::getId( "B+" );
1166 static const EvtId BM = EvtPDL::getId( "B-" );
1167 static const EvtId B0 = EvtPDL::getId( "B0" );
1168 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
1169
1170 static const EvtId D0 = EvtPDL::getId( "D0" );
1171 static const EvtId D0B = EvtPDL::getId( "anti-D0" );
1172 static const EvtId DP = EvtPDL::getId( "D+" );
1173 static const EvtId DM = EvtPDL::getId( "D-" );
1174
1175 static const EvtId D3P1P = EvtPDL::getId( "D'_1+" );
1176 static const EvtId D3P1N = EvtPDL::getId( "D'_1-" );
1177 static const EvtId D3P10 = EvtPDL::getId( "D'_10" );
1178 static const EvtId D3P1B = EvtPDL::getId( "anti-D'_10" );
1179
1180 static const EvtId A1P = EvtPDL::getId( "a_1+" );
1181 static const EvtId A1M = EvtPDL::getId( "a_1-" );
1182 static const EvtId A10 = EvtPDL::getId( "a_10" );
1183
1184 static const EvtId F1 = EvtPDL::getId( "f_1" );
1185 static const EvtId F1PR = EvtPDL::getId( "f'_1" );
1186
1187 static const EvtId K1STP = EvtPDL::getId( "K'_1+" );
1188 static const EvtId K1STM = EvtPDL::getId( "K'_1-" );
1189 static const EvtId K1ST0 = EvtPDL::getId( "K'_10" );
1190 static const EvtId K1STB = EvtPDL::getId( "anti-K'_10" );
1191
1192 static const EvtId D3P1SP = EvtPDL::getId( "D'_s1+" );
1193 static const EvtId D3P1SN = EvtPDL::getId( "D'_s1-" );
1194
1195 static const EvtId BSB = EvtPDL::getId( "anti-B_s0" );
1196 static const EvtId BS0 = EvtPDL::getId( "B_s0" );
1197
1198 double mtb, mbb( 0.0 );
1199 double msd( 0.0 ), mx, mb, nfp( 0.0 );
1200 double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx;
1201 double f5cppcm, f5cpmcm, f5, ql, ll, cppcm, cpmcm, f5q, f5l;
1202 double mqm, msb( 0.0 ), bb2( 0.0 ), mum, bbx2, tm, wt, r2;
1203 EvtId prnt = parent;
1204 EvtId dgt = daugt;
1205
1206 if ( prnt == B0 || prnt == B0B || prnt == BP || prnt == BM ) {
1207 msb = 5.2;
1208 msd = 0.33;
1209 bb2 = 0.431 * 0.431;
1210 mbb = 5.31;
1211
1212 if ( dgt == A10 || dgt == A1P || dgt == A1M || dgt == F1 || dgt == F1PR ) {
1213 msq = 0.33;
1214 bx2 = 0.275 * 0.275;
1215 mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
1216 nfp = 0.0;
1217 } else {
1218 if ( dgt == D3P1P || dgt == D3P1N || dgt == D3P10 || dgt == D3P1B ) {
1219 msq = 1.82;
1220 bx2 = 0.33 * 0.33;
1221 mbx = ( 3.0 * 2.49 + 2.40 ) / 4.0;
1222 nfp = 3.0;
1223 } else {
1224 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1225 << "Not implemented daugt:" << daugt.getId()
1226 << " in get_isgw_ff_3P1.\n";
1227 }
1228 }
1229 } else {
1230 if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
1231 msb = 1.82;
1232 msd = 0.33;
1233 bb2 = 0.45 * 0.45;
1234 mbb = 1.963;
1235
1236 if ( dgt == F1 || dgt == F1PR || dgt == A10 || dgt == A1P ||
1237 dgt == A1M ) {
1238 msq = 0.33;
1239 bx2 = 0.275 * 0.275;
1240 mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
1241 nfp = 0.0;
1242 } else {
1243 if ( dgt == K1STM || dgt == K1STB || dgt == K1STP ||
1244 dgt == K1ST0 ) {
1245 msq = 0.55;
1246 bx2 = 0.30 * 0.30;
1247 mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) / 12.0;
1248 nfp = 2.0;
1249 } else {
1250 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1251 << "Not implemented daugt:" << daugt.getId()
1252 << " in get_isgw_ff_3P1.\n";
1253 }
1254 }
1255 } else {
1256 //BS -> cs constants added by djl on Jan. 21,1998
1257 if ( prnt == BS0 || prnt == BSB ) {
1258 msb = 5.2;
1259 msd = 0.55;
1260 bb2 = 0.54 * 0.54;
1261 mbb = 5.38;
1262
1263 if ( dgt == D3P1SP || dgt == D3P1SN ) {
1264 msq = 1.82;
1265 bx2 = 0.41 * 0.41;
1266 mbx = ( 3.0 * 2.54 + 2.46 ) / 4.0;
1267 nfp = 3.0;
1268 } else if ( dgt == K1STM || dgt == K1STB || dgt == K1STP ||
1269 dgt == K1ST0 ) {
1270 msq = 0.55;
1271 bx2 = 0.30 * 0.30;
1272 mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) / 12.0;
1273 nfp = 2.0;
1274 } else {
1275 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1276 << "Not implemented daugt:" << daugt.getId()
1277 << " in get_isgw_ff_1S0.\n";
1278 }
1279 }
1280
1281 else {
1282 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1283 << "Not implemented parent in get_isgw_ff_3P1.\n";
1284 }
1285 }
1286 }
1287
1288 mtb = msb + msd;
1289 mtx = msq + msd;
1290
1291 mb = EvtPDL::getMeanMass( parent );
1292 mx = mass;
1293
1294 mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
1295 bbx2 = 0.5 * ( bb2 + bx2 );
1296 tm = ( mb - mx ) * ( mb - mx );
1297 if ( t > tm )
1298 t = 0.99 * tm;
1299 wt = 1.0 + ( tm - t ) / ( 2.0 * mbb * mbx );
1300
1301 mqm = 0.1;
1302 r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
1303 ( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
1304 log( EvtGetas( mqm ) / EvtGetas( msq ) );
1305
1306 f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) /
1307 ( pow( ( 1.0 + r2 * ( tm - t ) / 18.0 ), 3.0 ) );
1308
1309 f5q = f5 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), -0.5 );
1310 f5l = f5 * pow( ( mbb / mtb ), 0.5 ) * pow( ( mbx / mtx ), 0.5 );
1311 f5cppcm = f5 * pow( ( mbb / mtb ), -1.5 ) * pow( ( mbx / mtx ), 0.5 );
1312 f5cpmcm = f5 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), -0.5 );
1313
1314 if ( msq == msd ) {
1315 ql = -1.0 *
1316 ( msd * ( 5.0 + wt ) * f5q / ( 2.0 * mtx * sqrt( bb2 ) * 6.0 ) );
1317
1318 ll = -1.0 * mtb * sqrt( bb2 ) * f5l *
1319 ( 1 / mum + ( ( msd * mtx * ( wt - 1 ) / bb2 ) *
1320 ( ( 5.0 + wt ) / ( 6.0 * msq ) -
1321 ( msd * bb2 ) / ( 2.0 * mum * mtx * bbx2 ) ) ) );
1322
1323 cppcm = ( -1.0 *
1324 ( msd * mtx * f5cppcm / ( 2.0 * msq * mtb * sqrt( bb2 ) ) ) *
1325 ( 1 - ( msd * msq * bb2 ) / ( 2.0 * mtx * mum * bbx2 ) ) );
1326
1327 cpmcm = 1.0 *
1328 ( msd * mtx * f5cpmcm / ( 2.0 * msq * mtb * sqrt( bb2 ) ) ) *
1329 ( ( ( wt + 2.0 ) / 3.0 ) -
1330 ( msd * msq * bb2 ) / ( 2.0 * mtx * mum * bbx2 ) ) *
1331 ( mtb / mtx );
1332 } else {
1333 ql = f5q * sqrt( 1.0 / 6.0 ) * msd / ( sqrt( bb2 ) * mtx ) *
1334 ( 1.0 - bb2 * mtb / ( 4.0 * msd * msq * msb ) );
1335 ll = f5l * sqrt( 2.0 / 3.0 ) * mtb * sqrt( bb2 ) *
1336 ( 1.0 / ( 2.0 * msq ) - 3.0 / ( 2.0 * msb ) +
1337 msd * mtx * ( wt - 1 ) / bb2 *
1338 ( 1.0 / msq - msd * bb2 / ( 2.0 * mum * mtx * bbx2 ) ) );
1339 cppcm = msd * msd * bx2 * f5cppcm /
1340 ( sqrt( 6.0 ) * mtb * msq * sqrt( bb2 ) * bbx2 );
1341 cpmcm = -sqrt( 2.0 / 3.0 ) * msd * f5cpmcm / ( sqrt( bb2 ) * mtx ) *
1342 ( 1 + msd * bx2 / ( 2.0 * msq * bbx2 ) );
1343 }
1344
1345 //smooth out the mass(meson) dependence a little
1346 double parMass = EvtPDL::getMeanMass( prnt );
1347 double q2max = parMass * parMass + mass * mass - 2.0 * parMass * mass;
1348 double massNom = EvtPDL::getMeanMass( dgt );
1349 double q2maxNom = parMass * parMass + massNom * massNom -
1350 2.0 * parMass * massNom;
1351 double q2maxin = sqrt( q2maxNom / q2max );
1352 if ( q2maxin > 1000. )
1353 q2maxin = 1000.;
1354 ql *= q2maxin;
1355 ll *= q2maxin;
1356 cppcm *= q2maxin;
1357 cpmcm *= q2maxin;
1358
1359 *qf = ql;
1360 *lf = ll;
1361 *cpf = ( cppcm + cpmcm ) / 2.0;
1362 *cmf = ( cppcm - cpmcm ) / 2.0;
1363 return;
1364} //get_ff_isgw_3p1
1365
1366void EvtISGW2FF::EvtISGW2FF3P0( EvtId parent, EvtId daugt, double t,
1367 double mass, double* upf, double* umf )
1368{
1369 //added by Lange Jan4,2000
1370 static const EvtId BP = EvtPDL::getId( "B+" );
1371 static const EvtId BM = EvtPDL::getId( "B-" );
1372 static const EvtId B0 = EvtPDL::getId( "B0" );
1373 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
1374
1375 static const EvtId D0 = EvtPDL::getId( "D0" );
1376 static const EvtId D0B = EvtPDL::getId( "anti-D0" );
1377 static const EvtId DP = EvtPDL::getId( "D+" );
1378 static const EvtId DM = EvtPDL::getId( "D-" );
1379
1380 static const EvtId D3P0P = EvtPDL::getId( "D_0*+" );
1381 static const EvtId D3P0N = EvtPDL::getId( "D_0*-" );
1382 static const EvtId D3P00 = EvtPDL::getId( "D_0*0" );
1383 static const EvtId D3P0B = EvtPDL::getId( "anti-D_0*0" );
1384
1385 static const EvtId D3P0SP = EvtPDL::getId( "D_s0*+" );
1386 static const EvtId D3P0SN = EvtPDL::getId( "D_s0*-" );
1387
1388 static const EvtId A0P = EvtPDL::getId( "a_0+" );
1389 static const EvtId A0M = EvtPDL::getId( "a_0-" );
1390 static const EvtId A00 = EvtPDL::getId( "a_00" );
1391
1392 static const EvtId F0 = EvtPDL::getId( "f_0" );
1393 static const EvtId F0PR = EvtPDL::getId( "f'_0" );
1394
1395 static const EvtId K0STP = EvtPDL::getId( "K_0*+" );
1396 static const EvtId K0STM = EvtPDL::getId( "K_0*-" );
1397 static const EvtId K0ST0 = EvtPDL::getId( "K_0*0" );
1398 static const EvtId K0STB = EvtPDL::getId( "anti-K_0*0" );
1399
1400 static const EvtId DSP = EvtPDL::getId( "D_s+" );
1401 static const EvtId DSM = EvtPDL::getId( "D_s-" );
1402
1403 static const EvtId BSB = EvtPDL::getId( "anti-B_s0" );
1404 static const EvtId BS0 = EvtPDL::getId( "B_s0" );
1405
1406 double mtb, mbb( 0.0 );
1407 double msd( 0.0 ), mx, mb, nfp( 0.0 );
1408 double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx;
1409 double f5uppum, f5upmum, uppum, upmum, f5;
1410 double mqm, r2, bb2( 0.0 ), bbx2, msb( 0.0 ), tm;
1411
1412 EvtId prnt = parent;
1413 EvtId dgt = daugt;
1414
1415 if ( prnt == B0 || prnt == B0B || prnt == BP || prnt == BM ) {
1416 msb = 5.2;
1417 msd = 0.33;
1418 bb2 = 0.431 * 0.431;
1419 mbb = 5.31;
1420 if ( dgt == A00 || dgt == A0P || dgt == A0M || dgt == F0 || dgt == F0PR ) {
1421 msq = 0.33;
1422 bx2 = 0.275 * 0.275;
1423 mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
1424 nfp = 0.0;
1425 } else {
1426 if ( dgt == D3P0P || dgt == D3P0N || dgt == D3P00 || dgt == D3P0B ) {
1427 msq = 1.82;
1428 bx2 = 0.33 * 0.33;
1429 mbx = ( 3.0 * 2.49 + 2.40 ) / 4.0;
1430 nfp = 3.0;
1431 } else {
1432 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1433 << "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
1434 }
1435 }
1436 } else {
1437 if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
1438 msb = 1.82;
1439 msd = 0.33;
1440 bb2 = 0.45 * 0.45;
1441 mbb = 1.963;
1442 if ( dgt == F0 || dgt == F0PR || dgt == A00 || dgt == A0P ||
1443 dgt == A0M ) {
1444 msq = 0.33;
1445 bx2 = 0.275 * 0.275;
1446 mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
1447 nfp = 0.0;
1448 } else {
1449 if ( dgt == K0STM || dgt == K0STB || dgt == K0STP ||
1450 dgt == K0ST0 ) {
1451 msq = 0.55;
1452 bx2 = 0.30 * 0.30;
1453 mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) / 12.0;
1454 nfp = 2.0;
1455 } else {
1456 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1457 << "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
1458 }
1459 }
1460 } else {
1461 if ( prnt == DSP || prnt == DSM ) {
1462 msb = 1.82;
1463 msd = 0.55;
1464 bb2 = 0.56 * 0.56;
1465 mbb = 1.968;
1466
1467 if ( dgt == F0 || dgt == F0PR || dgt == A00 || dgt == A0P ||
1468 dgt == A0M ) {
1469 msq = 0.55;
1470 bx2 = 0.33 * 0.33;
1471 mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) / 12.0;
1472 nfp = 2.0;
1473 } else {
1474 if ( dgt == K0STM || dgt == K0STB || dgt == K0STP ||
1475 dgt == K0ST0 ) {
1476 msq = 0.33;
1477 bx2 = 0.30 * 0.30;
1478 mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) /
1479 12.0;
1480 nfp = 0.0;
1481 } else {
1482 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1483 << "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
1484 }
1485 }
1486 } else {
1487 //BS -> cs constants added by djl on Jan. 21,1998
1488 if ( prnt == BS0 || prnt == BSB ) {
1489 msb = 5.2;
1490 msd = 0.55;
1491 bb2 = 0.54 * 0.54;
1492 mbb = 5.38;
1493
1494 if ( dgt == D3P0SP || dgt == D3P0SN ) {
1495 msq = 1.82;
1496 bx2 = 0.41 * 0.41;
1497 mbx = ( 3.0 * 2.54 + 2.46 ) / 4.0;
1498 nfp = 3.0;
1499 } else if ( dgt == K0STM || dgt == K0STB || dgt == K0STP ||
1500 dgt == K0ST0 ) {
1501 msq = 0.55;
1502 bx2 = 0.30 * 0.30;
1503 mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) /
1504 12.0;
1505 nfp = 2.0;
1506 } else {
1507 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1508 << "Not implemented daugt:" << daugt.getId()
1509 << " in get_isgw_ff_1S0.\n";
1510 }
1511 } else {
1512 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1513 << "Not implemented parent in get_EvtISGW2_ff_3P0.\n";
1514 }
1515 }
1516 }
1517 }
1518
1519 mtb = msb + msd;
1520 mtx = msq + msd;
1521
1522 mb = EvtPDL::getMeanMass( parent );
1523 mx = mass;
1524
1525 bbx2 = 0.5 * ( bb2 + bx2 );
1526 tm = ( mb - mx ) * ( mb - mx );
1527 if ( t > tm )
1528 t = 0.99 * tm;
1529
1530 mqm = 0.1;
1531 r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
1532 ( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
1533 log( EvtGetas( mqm ) / EvtGetas( msq ) );
1534
1535 f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) /
1536 ( pow( ( 1.0 + r2 * ( tm - t ) / 18.0 ), 3.0 ) );
1537
1538 f5uppum = f5 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), 0.5 );
1539 f5upmum = f5 * pow( ( mbb / mtb ), 0.5 ) * pow( ( mbx / mtx ), -0.5 );
1540
1541 uppum = -1.0 * f5uppum * sqrt( 2.0 / ( 3.0 * bb2 ) ) * msd;
1542 upmum = 1.0 * f5upmum * sqrt( 2.0 / ( 3.0 * bb2 ) ) * msd * mtb / mtx;
1543
1544 *upf = ( uppum + upmum ) / 2.0;
1545 *umf = ( uppum - upmum ) / 2.0;
1546
1547 return;
1548}
1549
1550void EvtISGW2FF::EvtISGW2FF3P2( EvtId parent, EvtId daugt, double t, double mass,
1551 double* hf, double* kf, double* bpf, double* bmf )
1552{
1553 //added by Lange Jan4,2000
1554 static const EvtId BP = EvtPDL::getId( "B+" );
1555 static const EvtId BM = EvtPDL::getId( "B-" );
1556 static const EvtId B0 = EvtPDL::getId( "B0" );
1557 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
1558
1559 static const EvtId D0 = EvtPDL::getId( "D0" );
1560 static const EvtId D0B = EvtPDL::getId( "anti-D0" );
1561 static const EvtId DP = EvtPDL::getId( "D+" );
1562 static const EvtId DM = EvtPDL::getId( "D-" );
1563
1564 static const EvtId D3P2P = EvtPDL::getId( "D_2*+" );
1565 static const EvtId D3P2N = EvtPDL::getId( "D_2*-" );
1566 static const EvtId D3P20 = EvtPDL::getId( "D_2*0" );
1567 static const EvtId D3P2B = EvtPDL::getId( "anti-D_2*0" );
1568
1569 static const EvtId A2P = EvtPDL::getId( "a_2+" );
1570 static const EvtId A2M = EvtPDL::getId( "a_2-" );
1571 static const EvtId A20 = EvtPDL::getId( "a_20" );
1572
1573 static const EvtId F2 = EvtPDL::getId( "f_2" );
1574 static const EvtId F2PR = EvtPDL::getId( "f'_2" );
1575
1576 static const EvtId K2STP = EvtPDL::getId( "K_2*+" );
1577 static const EvtId K2STM = EvtPDL::getId( "K_2*-" );
1578 static const EvtId K2ST0 = EvtPDL::getId( "K_2*0" );
1579 static const EvtId K2STB = EvtPDL::getId( "anti-K_2*0" );
1580
1581 static const EvtId D3P2SP = EvtPDL::getId( "D_s2*+" );
1582 static const EvtId D3P2SN = EvtPDL::getId( "D_s2*-" );
1583
1584 static const EvtId BSB = EvtPDL::getId( "anti-B_s0" );
1585 static const EvtId BS0 = EvtPDL::getId( "B_s0" );
1586
1587 double mtb, mbb( 0.0 );
1588 double msd( 0.0 ), mx, mb, nfp( 0.0 );
1589 double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx, f5;
1590 double f5h, f5k, f5bppbm, f5bpmbm, bppbm, bpmbm;
1591 double mqm, mum, mup, tm, wt, r2, bb2( 0.0 ), bbx2;
1592 double msb( 0.0 );
1593 EvtId prnt = parent;
1594 EvtId dgt = daugt;
1595
1596 if ( prnt == B0 || prnt == B0B || prnt == BP || prnt == BM ) {
1597 msb = 5.2;
1598 msd = 0.33;
1599 bb2 = 0.431 * 0.431;
1600 mbb = 5.31;
1601
1602 if ( dgt == A20 || dgt == A2P || dgt == A2M || dgt == F2 || dgt == F2PR ) {
1603 msq = 0.33;
1604 bx2 = 0.275 * 0.275;
1605 mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
1606 nfp = 0.0;
1607
1608 }
1609
1610 else {
1611 if ( dgt == D3P2P || dgt == D3P2N || dgt == D3P20 || dgt == D3P2B ) {
1612 msq = 1.82;
1613 bx2 = 0.33 * 0.33;
1614 mbx = ( 5.0 * 2.46 + 3.0 * 2.42 ) / 8.0;
1615 nfp = 3.0;
1616 } else {
1617 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1618 << "Not implemented daugt in get_isgw_ff_3P2.\n";
1619 }
1620 }
1621 } else {
1622 if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
1623 msb = 1.82;
1624 msd = 0.33;
1625 bb2 = 0.45 * 0.45;
1626 mbb = 1.963;
1627 if ( dgt == F2 || dgt == F2PR || dgt == A20 || dgt == A2P ||
1628 dgt == A2M ) {
1629 msq = 0.33;
1630 bx2 = 0.275 * 0.275;
1631 mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
1632 nfp = 0.0;
1633 } else {
1634 if ( dgt == K2STM || dgt == K2STB || dgt == K2STP ||
1635 dgt == K2ST0 ) {
1636 msq = 0.55;
1637 bx2 = 0.30 * 0.30;
1638 mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) / 12.0;
1639 nfp = 2.0;
1640 } else {
1641 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1642 << "Not implemented daugt in get_isgw_ff_3P2.\n";
1643 }
1644 }
1645 } else {
1646 //BS -> cs constants added by djl on Jan. 21,1998
1647 if ( prnt == BS0 || prnt == BSB ) {
1648 msb = 5.2;
1649 msd = 0.55;
1650 bb2 = 0.54 * 0.54;
1651 mbb = 5.38;
1652
1653 if ( dgt == D3P2SP || dgt == D3P2SN ) {
1654 msq = 1.82;
1655 bx2 = 0.41 * 0.41;
1656 mbx = ( 5.0 * 2.61 + 3.0 * 2.54 ) / 8.0;
1657 nfp = 3.0;
1658 } else if ( dgt == K2STM || dgt == K2STB || dgt == K2STP ||
1659 dgt == K2ST0 ) {
1660 msq = 0.55;
1661 bx2 = 0.30 * 0.30;
1662 mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) / 12.0;
1663 nfp = 2.0;
1664 } else {
1665 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1666 << "Not implemented daugt:" << daugt.getId()
1667 << " in get_isgw_ff_1S0.\n";
1668 }
1669 }
1670
1671 else {
1672 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1673 << "Not implemented parent in get_isgw_ff_3P2.\n";
1674 }
1675 }
1676 }
1677 mtb = msb + msd;
1678 mtx = msq + msd;
1679
1680 mb = EvtPDL::getMeanMass( parent );
1681 mx = mass;
1682 mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
1683 mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
1684 bbx2 = 0.5 * ( bb2 + bx2 );
1685 tm = ( mb - mx ) * ( mb - mx );
1686 if ( t > tm )
1687 t = 0.99 * tm;
1688 wt = 1.0 + ( tm - t ) / ( 2.0 * mbb * mbx );
1689
1690 mqm = 0.1;
1691 r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
1692 ( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
1693 log( EvtGetas( mqm ) / EvtGetas( msq ) );
1694
1695 f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) /
1696 ( pow( ( 1.0 + r2 * ( tm - t ) / 18.0 ), 3.0 ) );
1697
1698 f5h = f5 * pow( ( mbb / mtb ), -1.5 ) * pow( ( mbx / mtx ), -0.5 );
1699 f5k = f5 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), 0.5 );
1700 f5bppbm = f5 * pow( ( mbb / mtb ), -2.5 ) * pow( ( mbx / mtx ), 0.5 );
1701 f5bpmbm = f5 * pow( ( mbb / mtb ), -1.5 ) * pow( ( mbx / mtx ), -0.5 );
1702
1703 *hf = f5h * ( msd / ( sqrt( 8.0 * bb2 ) * mtb ) ) *
1704 ( ( 1.0 / msq ) - ( msd * bb2 / ( 2.0 * mum * mtx * bbx2 ) ) );
1705
1706 *kf = f5k * ( msd / ( sqrt( 2.0 * bb2 ) ) ) * ( 1.0 + wt );
1707
1708 bppbm = ( ( msd * msd * f5bppbm * bx2 ) /
1709 ( sqrt( 32.0 * bb2 ) * msq * msb * mtb * bbx2 ) ) *
1710 ( 1.0 - ( msd * bx2 / ( 2.0 * mtb * bbx2 ) ) );
1711
1712 bpmbm = -1.0 * ( msd * f5bpmbm / ( sqrt( 2.0 * bb2 ) * msb * mtx ) ) *
1713 ( 1.0 - ( ( msd * msb * bx2 ) / ( 2.0 * mup * mtb * bbx2 ) ) +
1714 ( ( msd * bx2 * ( 1.0 - ( ( msd * bx2 ) / ( 2.0 * mtb * bbx2 ) ) ) ) /
1715 ( 4.0 * msq * bbx2 ) ) );
1716
1717 *bpf = ( bppbm + bpmbm ) / 2.0;
1718 *bmf = ( bppbm - bpmbm ) / 2.0;
1719 return;
1720} //get_ff_isgw_1p1
1721
1723
1724{
1725 double temp;
1726
1727 temp = 2 + ( ( 2.0 * z ) / ( 1 - z ) ) * log( z );
1728 temp = -1.0 * temp;
1729
1730 return temp;
1731
1732} //EvtGetGammaji
1733
1734double EvtISGW2FF::EvtGetas( double massq, double massx )
1735{
1736 double lqcd2 = 0.04;
1737 double nflav = 4;
1738 double temp = 0.6;
1739
1740 if ( massx > 0.6 ) {
1741 if ( massq < 1.85 ) {
1742 nflav = 3.0;
1743 }
1744
1745 temp = 12.0 * EvtConst::pi / ( 33.0 - 2.0 * nflav ) /
1746 log( massx * massx / lqcd2 );
1747 }
1748 return temp;
1749
1750} //EvtGetas
1751
1752double EvtISGW2FF::EvtGetas( double mass )
1753
1754{
1755 double lqcd2 = 0.04;
1756 double nflav = 4;
1757 double temp = 0.6;
1758
1759 if ( mass > 0.6 ) {
1760 if ( mass < 1.85 ) {
1761 nflav = 3.0;
1762 }
1763
1764 temp = 12.0 * EvtConst::pi / ( 33.0 - 2.0 * nflav ) /
1765 log( mass * mass / lqcd2 );
1766 }
1767 return temp;
1768
1769} //EvtGetas
1770
1771void EvtISGW2FF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
1772 double*, double* )
1773{
1774 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1775 << "Not implemented :getbaryonff in EvtISGW2FF.\n";
1776
1777 ::abort();
1778}
1779
1780void EvtISGW2FF::getdiracff( EvtId, EvtId, double, double, double*, double*,
1781 double*, double*, double*, double* )
1782{
1783 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1784 << "Not implemented :getdiracff in EvtISGW2FF.\n";
1785 ::abort();
1786}
1787
1788void EvtISGW2FF::getraritaff( EvtId, EvtId, double, double, double*, double*,
1789 double*, double*, double*, double*, double*,
1790 double* )
1791{
1792 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
1793 << "Not implemented :getraritaff in EvtISGW2FF.\n";
1794 ::abort();
1795}
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition EvtReport.cpp:32
@ EVTGEN_ERROR
Definition EvtReport.hh:49
static const double pi
Definition EvtConst.hh:26
void EvtISGW2FF3P2(EvtId parent, EvtId daught, double t, double mass, double *h, double *k, double *bp, double *bm)
void gettensorff(EvtId parent, EvtId daught, double t, double mass, double *hf, double *kf, double *bpf, double *bmf) override
double EvtGetas(double mass)
void EvtISGW2FF3S1(EvtId parent, EvtId daught, double t, double mass, double *ff, double *gf, double *apf, double *amf)
double EvtGetGammaji(double z)
void EvtISGW2FF1S0(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *fmf)
void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *f0f) override
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *) override
void EvtISGW2FF1P1(EvtId parent, EvtId daught, double t, double mass, double *rf, double *vf, double *spf, double *smf)
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f) override
void EvtISGW2FF21S0(EvtId parent, EvtId daught, double t, double mass, double *fppf, double *fpmf)
void EvtISGW2FF3P1(EvtId parent, EvtId daught, double t, double mass, double *lf, double *qf, double *cpf, double *cmf)
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *) override
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
void EvtISGW2FF23S1(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *gpf, double *app, double *apm)
void EvtISGW2FF3P0(EvtId parent, EvtId daught, double t, double mass, double *upf, double *umf)
bool contains(const EvtId &id) const
Definition EvtIdSet.cpp:46
Definition EvtId.hh:27
int getId() const
Definition EvtId.hh:41
static double getMeanMass(EvtId i)
Definition EvtPDL.cpp:306
static EvtId getId(const std::string &name)
Definition EvtPDL.cpp:283