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