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