]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenModels/EvtISGW2FF.cxx
minor coverity defect: adding self-assignment protection
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtISGW2FF.cxx
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
41
42   static EvtId BP=EvtPDL::getId("B+");
43   static EvtId BM=EvtPDL::getId("B-");
44   static EvtId B0=EvtPDL::getId("B0");
45   static EvtId B0B=EvtPDL::getId("anti-B0");
46
47   static EvtId DST0=EvtPDL::getId("D*0");
48   static EvtId DSTB=EvtPDL::getId("anti-D*0");
49   static EvtId DSTP=EvtPDL::getId("D*+");
50   static EvtId DSTM=EvtPDL::getId("D*-");
51   static EvtId D0=EvtPDL::getId("D0");
52   static EvtId D0B=EvtPDL::getId("anti-D0");
53   static EvtId DP=EvtPDL::getId("D+");
54   static EvtId DM=EvtPDL::getId("D-");
55
56   static EvtId D1P1P=EvtPDL::getId("D_1+");
57   static EvtId D1P1N=EvtPDL::getId("D_1-");
58   static EvtId D1P10=EvtPDL::getId("D_10");
59   static EvtId D1P1B=EvtPDL::getId("anti-D_10");
60
61   static EvtId D3P2P=EvtPDL::getId("D_2*+");
62   static EvtId D3P2N=EvtPDL::getId("D_2*-");
63   static EvtId D3P20=EvtPDL::getId("D_2*0");
64   static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
65
66   static EvtId D3P1P=EvtPDL::getId("D'_1+");
67   static EvtId D3P1N=EvtPDL::getId("D'_1-");
68   static EvtId D3P10=EvtPDL::getId("D'_10");
69   static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
70
71   static EvtId D3P0P=EvtPDL::getId("D_0*+");
72   static EvtId D3P0N=EvtPDL::getId("D_0*-");
73   static EvtId D3P00=EvtPDL::getId("D_0*0");
74   static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
75
76   static EvtId D21S0P=EvtPDL::getId("D(2S)+");
77   static EvtId D21S0N=EvtPDL::getId("D(2S)-");
78   static EvtId D21S00=EvtPDL::getId("D(2S)0");
79   static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
80
81   static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
82   static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
83   static EvtId D23S10=EvtPDL::getId("D*(2S)0");
84   static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
85
86   static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
87   static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
88   static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
89   static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
90   static EvtId ETA2S=EvtPDL::getId("eta(2S)");
91
92   static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
93   static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
94   static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
95
96   static EvtId PIP=EvtPDL::getId("pi+");
97   static EvtId PIM=EvtPDL::getId("pi-");
98   static EvtId PI0=EvtPDL::getId("pi0");
99
100   static EvtId RHOP=EvtPDL::getId("rho+");
101   static EvtId RHOM=EvtPDL::getId("rho-");
102   static EvtId RHO0=EvtPDL::getId("rho0");
103
104   static EvtId A2P=EvtPDL::getId("a_2+");
105   static EvtId A2M=EvtPDL::getId("a_2-");
106   static EvtId A20=EvtPDL::getId("a_20");
107
108   static EvtId A1P=EvtPDL::getId("a_1+");
109   static EvtId A1M=EvtPDL::getId("a_1-");
110   static EvtId A10=EvtPDL::getId("a_10");
111
112   static EvtId A0P=EvtPDL::getId("a_0+");
113   static EvtId A0M=EvtPDL::getId("a_0-");
114   static EvtId A00=EvtPDL::getId("a_00");
115
116   static EvtId B1P=EvtPDL::getId("b_1+");
117   static EvtId B1M=EvtPDL::getId("b_1-");
118   static EvtId B10=EvtPDL::getId("b_10");
119
120   static EvtId H1=EvtPDL::getId("h_1");
121   static EvtId H1PR=EvtPDL::getId("h'_1");
122
123   static EvtId F1=EvtPDL::getId("f_1");
124   static EvtId F1PR=EvtPDL::getId("f'_1");
125   static EvtId F0=EvtPDL::getId("f_0");
126   static EvtId F0PR=EvtPDL::getId("f'_0");
127   static EvtId F2=EvtPDL::getId("f_2");
128   static EvtId F2PR=EvtPDL::getId("f'_2");
129
130   static EvtId ETA=EvtPDL::getId("eta");
131   static EvtId ETAPR=EvtPDL::getId("eta'");
132   static EvtId OMEG=EvtPDL::getId("omega");
133
134   static EvtId KP=EvtPDL::getId("K+");
135   static EvtId KM=EvtPDL::getId("K-");
136   static EvtId K0=EvtPDL::getId("K0");
137   static EvtId KB=EvtPDL::getId("anti-K0");
138   static EvtId K0S=EvtPDL::getId("K_S0");
139   static EvtId K0L=EvtPDL::getId("K_L0");
140
141   static EvtId KSTP=EvtPDL::getId("K*+");
142   static EvtId KSTM=EvtPDL::getId("K*-");
143   static EvtId KST0=EvtPDL::getId("K*0");
144   static EvtId KSTB=EvtPDL::getId("anti-K*0");
145
146   static EvtId K1P=EvtPDL::getId("K_1+");
147   static EvtId K1M=EvtPDL::getId("K_1-");
148   static EvtId K10=EvtPDL::getId("K_10");
149   static EvtId K1B=EvtPDL::getId("anti-K_10");
150
151   static EvtId K1STP=EvtPDL::getId("K'_1+");
152   static EvtId K1STM=EvtPDL::getId("K'_1-");
153   static EvtId K1ST0=EvtPDL::getId("K'_10");
154   static EvtId K1STB=EvtPDL::getId("anti-K'_10");
155
156   static EvtId K2STP=EvtPDL::getId("K_2*+");
157   static EvtId K2STM=EvtPDL::getId("K_2*-");
158   static EvtId K2ST0=EvtPDL::getId("K_2*0");
159   static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
160
161   static EvtId K0STP=EvtPDL::getId("K_0*+");
162   static EvtId K0STM=EvtPDL::getId("K_0*-");
163   static EvtId K0ST0=EvtPDL::getId("K_0*0");
164   static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
165
166   static EvtId PHI=EvtPDL::getId("phi");
167   static EvtId DSP=EvtPDL::getId("D_s+");
168   static EvtId DSM=EvtPDL::getId("D_s-");
169
170   static EvtId D1P1SP=EvtPDL::getId("D_s1+");
171   static EvtId D1P1SN=EvtPDL::getId("D_s1-");
172
173   static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
174   static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
175
176   static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
177   static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
178
179   static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
180   static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
181
182   static EvtId DSSTP=EvtPDL::getId("D_s*+");
183   static EvtId DSSTM=EvtPDL::getId("D_s*-");
184
185   static EvtId BSB=EvtPDL::getId("anti-B_s0");
186   static EvtId BS0=EvtPDL::getId("B_s0");
187
188   double fmf;
189   double mb=EvtPDL::getMeanMass(parent);
190
191   if (daught==PI0||daught==PIP||daught==PIM||daught==ETA||
192       daught==ETAPR||daught==D0||daught==D0B||daught==DP||
193       daught==DM||daught==KP||daught==KM||daught==K0||daught==K0S||
194       daught==K0L||daught==KB||daught==DSP||daught==DSM) {
195
196       EvtISGW2FF1S0(parent,daught,t,mass,fpf,&fmf);
197   }
198       
199   if (daught==PI2S0||daught==PI2SP||daught==PI2SM||daught==ETA2S||
200       daught==D21S0P||daught==D21S0B||daught==D21S0N||daught==D21S00){
201       EvtISGW2FF21S0(parent,daught,t,mass,fpf,&fmf);
202   }
203   
204   if (daught==A00||daught==A0P||daught==A0M||daught==F0||
205       daught==F0PR||daught==D3P0P||daught==D3P00||daught==D3P0B||
206       daught==D3P0N||daught==K0STM||daught==K0STB||daught==K0STP||
207       daught==D3P0SP||daught==D3P0SN||
208       daught==K0ST0) {
209     EvtISGW2FF3P0(parent,daught,t,mass,fpf,&fmf);
210   }
211
212   *f0f = (fmf/((mb*mb-mass*mass)/t))+(*fpf);
213
214   return ;
215 }
216
217  void EvtISGW2FF::gettensorff(EvtId parent,EvtId daught,
218                        double t, double mass, double *hf,
219                              double *kf, double *bpf, double *bmf ){
220
221   //added by Lange Jan4,2000
222   static EvtId EM=EvtPDL::getId("e-");
223   static EvtId EP=EvtPDL::getId("e+");
224   static EvtId MUM=EvtPDL::getId("mu-");
225   static EvtId MUP=EvtPDL::getId("mu+");
226   static EvtId TAUM=EvtPDL::getId("tau-");
227   static EvtId TAUP=EvtPDL::getId("tau+");
228
229   static EvtId BP=EvtPDL::getId("B+");
230   static EvtId BM=EvtPDL::getId("B-");
231   static EvtId B0=EvtPDL::getId("B0");
232   static EvtId B0B=EvtPDL::getId("anti-B0");
233
234   static EvtId DST0=EvtPDL::getId("D*0");
235   static EvtId DSTB=EvtPDL::getId("anti-D*0");
236   static EvtId DSTP=EvtPDL::getId("D*+");
237   static EvtId DSTM=EvtPDL::getId("D*-");
238   static EvtId D0=EvtPDL::getId("D0");
239   static EvtId D0B=EvtPDL::getId("anti-D0");
240   static EvtId DP=EvtPDL::getId("D+");
241   static EvtId DM=EvtPDL::getId("D-");
242
243   static EvtId D1P1P=EvtPDL::getId("D_1+");
244   static EvtId D1P1N=EvtPDL::getId("D_1-");
245   static EvtId D1P10=EvtPDL::getId("D_10");
246   static EvtId D1P1B=EvtPDL::getId("anti-D_10");
247
248   static EvtId D3P2P=EvtPDL::getId("D_2*+");
249   static EvtId D3P2N=EvtPDL::getId("D_2*-");
250   static EvtId D3P20=EvtPDL::getId("D_2*0");
251   static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
252
253   static EvtId D3P1P=EvtPDL::getId("D'_1+");
254   static EvtId D3P1N=EvtPDL::getId("D'_1-");
255   static EvtId D3P10=EvtPDL::getId("D'_10");
256   static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
257
258   static EvtId D3P0P=EvtPDL::getId("D_0*+");
259   static EvtId D3P0N=EvtPDL::getId("D_0*-");
260   static EvtId D3P00=EvtPDL::getId("D_0*0");
261   static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
262
263   static EvtId D21S0P=EvtPDL::getId("D(2S)+");
264   static EvtId D21S0N=EvtPDL::getId("D(2S)-");
265   static EvtId D21S00=EvtPDL::getId("D(2S)0");
266   static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
267
268   static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
269   static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
270   static EvtId D23S10=EvtPDL::getId("D*(2S)0");
271   static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
272
273   static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
274   static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
275   static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
276   static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
277   static EvtId ETA2S=EvtPDL::getId("eta(2S)");
278
279   static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
280   static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
281   static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
282
283   static EvtId PIP=EvtPDL::getId("pi+");
284   static EvtId PIM=EvtPDL::getId("pi-");
285   static EvtId PI0=EvtPDL::getId("pi0");
286
287   static EvtId RHOP=EvtPDL::getId("rho+");
288   static EvtId RHOM=EvtPDL::getId("rho-");
289   static EvtId RHO0=EvtPDL::getId("rho0");
290
291   static EvtId A2P=EvtPDL::getId("a_2+");
292   static EvtId A2M=EvtPDL::getId("a_2-");
293   static EvtId A20=EvtPDL::getId("a_20");
294
295   static EvtId A1P=EvtPDL::getId("a_1+");
296   static EvtId A1M=EvtPDL::getId("a_1-");
297   static EvtId A10=EvtPDL::getId("a_10");
298
299   static EvtId A0P=EvtPDL::getId("a_0+");
300   static EvtId A0M=EvtPDL::getId("a_0-");
301   static EvtId A00=EvtPDL::getId("a_00");
302
303   static EvtId B1P=EvtPDL::getId("b_1+");
304   static EvtId B1M=EvtPDL::getId("b_1-");
305   static EvtId B10=EvtPDL::getId("b_10");
306
307   static EvtId H1=EvtPDL::getId("h_1");
308   static EvtId H1PR=EvtPDL::getId("h'_1");
309
310   static EvtId F1=EvtPDL::getId("f_1");
311   static EvtId F1PR=EvtPDL::getId("f'_1");
312   static EvtId F0=EvtPDL::getId("f_0");
313   static EvtId F0PR=EvtPDL::getId("f'_0");
314   static EvtId F2=EvtPDL::getId("f_2");
315   static EvtId F2PR=EvtPDL::getId("f'_2");
316
317   static EvtId ETA=EvtPDL::getId("eta");
318   static EvtId ETAPR=EvtPDL::getId("eta'");
319   static EvtId OMEG=EvtPDL::getId("omega");
320
321   static EvtId KP=EvtPDL::getId("K+");
322   static EvtId KM=EvtPDL::getId("K-");
323   static EvtId K0=EvtPDL::getId("K0");
324   static EvtId KB=EvtPDL::getId("anti-K0");
325   static EvtId K0S=EvtPDL::getId("K_S0");
326   static EvtId K0L=EvtPDL::getId("K_L0");
327
328   static EvtId KSTP=EvtPDL::getId("K*+");
329   static EvtId KSTM=EvtPDL::getId("K*-");
330   static EvtId KST0=EvtPDL::getId("K*0");
331   static EvtId KSTB=EvtPDL::getId("anti-K*0");
332
333   static EvtId K1P=EvtPDL::getId("K_1+");
334   static EvtId K1M=EvtPDL::getId("K_1-");
335   static EvtId K10=EvtPDL::getId("K_10");
336   static EvtId K1B=EvtPDL::getId("anti-K_10");
337
338   static EvtId K1STP=EvtPDL::getId("K'_1+");
339   static EvtId K1STM=EvtPDL::getId("K'_1-");
340   static EvtId K1ST0=EvtPDL::getId("K'_10");
341   static EvtId K1STB=EvtPDL::getId("anti-K'_10");
342
343   static EvtId K2STP=EvtPDL::getId("K_2*+");
344   static EvtId K2STM=EvtPDL::getId("K_2*-");
345   static EvtId K2ST0=EvtPDL::getId("K_2*0");
346   static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
347
348   static EvtId K0STP=EvtPDL::getId("K_0*+");
349   static EvtId K0STM=EvtPDL::getId("K_0*-");
350   static EvtId K0ST0=EvtPDL::getId("K_0*0");
351   static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
352
353   static EvtId PHI=EvtPDL::getId("phi");
354   static EvtId DSP=EvtPDL::getId("D_s+");
355   static EvtId DSM=EvtPDL::getId("D_s-");
356
357   static EvtId D1P1SP=EvtPDL::getId("D_s1+");
358   static EvtId D1P1SN=EvtPDL::getId("D_s1-");
359
360   static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
361   static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
362
363   static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
364   static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
365
366   static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
367   static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
368
369   static EvtId DSSTP=EvtPDL::getId("D_s*+");
370   static EvtId DSSTM=EvtPDL::getId("D_s*-");
371
372   static EvtId BSB=EvtPDL::getId("anti-B_s0");
373   static EvtId BS0=EvtPDL::getId("B_s0");
374
375     EvtISGW2FF3P2(parent,daught,t,mass,hf,kf,bpf,bmf);
376
377     return;
378
379  }
380
381
382  void EvtISGW2FF::getvectorff(EvtId parent,EvtId daught,
383                        double t, double mass, double *a1f,
384                              double *a2f, double *vf, double *a0f ){
385    double ff,gf,apf,amf;
386
387   //added by Lange Jan4,2000
388   static EvtId EM=EvtPDL::getId("e-");
389   static EvtId EP=EvtPDL::getId("e+");
390   static EvtId MUM=EvtPDL::getId("mu-");
391   static EvtId MUP=EvtPDL::getId("mu+");
392   static EvtId TAUM=EvtPDL::getId("tau-");
393   static EvtId TAUP=EvtPDL::getId("tau+");
394
395   static EvtId BP=EvtPDL::getId("B+");
396   static EvtId BM=EvtPDL::getId("B-");
397   static EvtId B0=EvtPDL::getId("B0");
398   static EvtId B0B=EvtPDL::getId("anti-B0");
399
400   static EvtId DST0=EvtPDL::getId("D*0");
401   static EvtId DSTB=EvtPDL::getId("anti-D*0");
402   static EvtId DSTP=EvtPDL::getId("D*+");
403   static EvtId DSTM=EvtPDL::getId("D*-");
404   static EvtId D0=EvtPDL::getId("D0");
405   static EvtId D0B=EvtPDL::getId("anti-D0");
406   static EvtId DP=EvtPDL::getId("D+");
407   static EvtId DM=EvtPDL::getId("D-");
408
409   static EvtId D1P1P=EvtPDL::getId("D_1+");
410   static EvtId D1P1N=EvtPDL::getId("D_1-");
411   static EvtId D1P10=EvtPDL::getId("D_10");
412   static EvtId D1P1B=EvtPDL::getId("anti-D_10");
413
414   static EvtId D3P2P=EvtPDL::getId("D_2*+");
415   static EvtId D3P2N=EvtPDL::getId("D_2*-");
416   static EvtId D3P20=EvtPDL::getId("D_2*0");
417   static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
418
419   static EvtId D3P1P=EvtPDL::getId("D'_1+");
420   static EvtId D3P1N=EvtPDL::getId("D'_1-");
421   static EvtId D3P10=EvtPDL::getId("D'_10");
422   static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
423
424   static EvtId D3P0P=EvtPDL::getId("D_0*+");
425   static EvtId D3P0N=EvtPDL::getId("D_0*-");
426   static EvtId D3P00=EvtPDL::getId("D_0*0");
427   static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
428
429   static EvtId D21S0P=EvtPDL::getId("D(2S)+");
430   static EvtId D21S0N=EvtPDL::getId("D(2S)-");
431   static EvtId D21S00=EvtPDL::getId("D(2S)0");
432   static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
433
434   static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
435   static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
436   static EvtId D23S10=EvtPDL::getId("D*(2S)0");
437   static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
438
439   static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
440   static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
441   static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
442   static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
443   static EvtId ETA2S=EvtPDL::getId("eta(2S)");
444
445   static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
446   static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
447   static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
448
449   static EvtId PIP=EvtPDL::getId("pi+");
450   static EvtId PIM=EvtPDL::getId("pi-");
451   static EvtId PI0=EvtPDL::getId("pi0");
452
453   static EvtId RHOP=EvtPDL::getId("rho+");
454   static EvtId RHOM=EvtPDL::getId("rho-");
455   static EvtId RHO0=EvtPDL::getId("rho0");
456
457   static EvtId A2P=EvtPDL::getId("a_2+");
458   static EvtId A2M=EvtPDL::getId("a_2-");
459   static EvtId A20=EvtPDL::getId("a_20");
460
461   static EvtId A1P=EvtPDL::getId("a_1+");
462   static EvtId A1M=EvtPDL::getId("a_1-");
463   static EvtId A10=EvtPDL::getId("a_10");
464
465   static EvtId A0P=EvtPDL::getId("a_0+");
466   static EvtId A0M=EvtPDL::getId("a_0-");
467   static EvtId A00=EvtPDL::getId("a_00");
468
469   static EvtId B1P=EvtPDL::getId("b_1+");
470   static EvtId B1M=EvtPDL::getId("b_1-");
471   static EvtId B10=EvtPDL::getId("b_10");
472
473   static EvtId H1=EvtPDL::getId("h_1");
474   static EvtId H1PR=EvtPDL::getId("h'_1");
475
476   static EvtId F1=EvtPDL::getId("f_1");
477   static EvtId F1PR=EvtPDL::getId("f'_1");
478   static EvtId F0=EvtPDL::getId("f_0");
479   static EvtId F0PR=EvtPDL::getId("f'_0");
480   static EvtId F2=EvtPDL::getId("f_2");
481   static EvtId F2PR=EvtPDL::getId("f'_2");
482
483   static EvtId ETA=EvtPDL::getId("eta");
484   static EvtId ETAPR=EvtPDL::getId("eta'");
485   static EvtId OMEG=EvtPDL::getId("omega");
486
487   static EvtId KP=EvtPDL::getId("K+");
488   static EvtId KM=EvtPDL::getId("K-");
489   static EvtId K0=EvtPDL::getId("K0");
490   static EvtId KB=EvtPDL::getId("anti-K0");
491   static EvtId K0S=EvtPDL::getId("K_S0");
492   static EvtId K0L=EvtPDL::getId("K_L0");
493
494   static EvtId KSTP=EvtPDL::getId("K*+");
495   static EvtId KSTM=EvtPDL::getId("K*-");
496   static EvtId KST0=EvtPDL::getId("K*0");
497   static EvtId KSTB=EvtPDL::getId("anti-K*0");
498
499   static EvtId K1P=EvtPDL::getId("K_1+");
500   static EvtId K1M=EvtPDL::getId("K_1-");
501   static EvtId K10=EvtPDL::getId("K_10");
502   static EvtId K1B=EvtPDL::getId("anti-K_10");
503
504   static EvtId K1STP=EvtPDL::getId("K'_1+");
505   static EvtId K1STM=EvtPDL::getId("K'_1-");
506   static EvtId K1ST0=EvtPDL::getId("K'_10");
507   static EvtId K1STB=EvtPDL::getId("anti-K'_10");
508
509   static EvtId K2STP=EvtPDL::getId("K_2*+");
510   static EvtId K2STM=EvtPDL::getId("K_2*-");
511   static EvtId K2ST0=EvtPDL::getId("K_2*0");
512   static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
513
514   static EvtId K0STP=EvtPDL::getId("K_0*+");
515   static EvtId K0STM=EvtPDL::getId("K_0*-");
516   static EvtId K0ST0=EvtPDL::getId("K_0*0");
517   static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
518
519   static EvtId PHI=EvtPDL::getId("phi");
520   static EvtId DSP=EvtPDL::getId("D_s+");
521   static EvtId DSM=EvtPDL::getId("D_s-");
522
523   static EvtId D1P1SP=EvtPDL::getId("D_s1+");
524   static EvtId D1P1SN=EvtPDL::getId("D_s1-");
525
526   static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
527   static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
528
529   static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
530   static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
531
532   static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
533   static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
534
535   static EvtId DSSTP=EvtPDL::getId("D_s*+");
536   static EvtId DSSTM=EvtPDL::getId("D_s*-");
537
538   static EvtId BSB=EvtPDL::getId("anti-B_s0");
539   static EvtId BS0=EvtPDL::getId("B_s0");
540
541    if (daught==DST0||daught==DSTP||daught==DSTM||daught==DSTB||
542        daught==OMEG||daught==RHO0||daught==RHOM||daught==RHOP||
543        daught==KSTP||daught==KSTM||daught==KST0||daught==KSTB||
544        daught==PHI||daught==DSSTP||daught==DSSTM) {
545      EvtISGW2FF3S1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
546    }
547    if (daught==B10||daught==B1P||daught==B1M||daught==H1||
548        daught==H1PR||daught==D1P1P||daught==D1P10||daught==D1P1B||
549        daught==D1P1SP||daught==D1P1SN||
550        daught==D1P1N||daught==K10||daught==K1B||daught==K1P||
551        daught==K1M) {
552      EvtISGW2FF1P1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
553    }
554    if (daught==RHO2S0||daught==RHO2SP||daught==RHO2SM||daught==OMEG2S||
555        daught==D23S1P||daught==D23S1B||daught==D23S1N||daught==D23S10){
556      EvtISGW2FF23S1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
557    }
558    if (daught==A10||daught==A1P||daught==A1M||daught==F1||
559                   daught==F1PR||daught==D3P1P||daught==D3P10||daught==D3P1B||
560        daught==D3P1N||daught==K1STM||daught==K1STB||daught==K1STP||
561        daught==D3P1SP||daught==D3P1SN||
562        daught==K1ST0) {
563      EvtISGW2FF3P1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
564    }
565
566    // Need to stuff in some factors to make these the ffs that
567    // is used elsewhere...
568
569    double mb=EvtPDL::getMeanMass(parent);
570   
571
572    *vf = (gf)*(mb+mass);
573    *a1f = (ff)/(mb+mass);
574    *a2f = -1.0*(apf)*(mb+mass);
575
576    double a3f = ((mb+mass)/(2.0*mass))*(*a1f) -
577         ((mb-mass)/(2.0*mass))*(*a2f);
578
579    *a0f = a3f + ( (t*amf)/(2.0*mass));
580
581    return;
582  }
583
584
585
586 void EvtISGW2FF::EvtISGW2FF1S0 (EvtId parent,EvtId daugt,
587                           double t, double mass, double *fpf, double *fmf ) {
588
589   double mtb, mbb(0.0);
590   double msd(0.0), mx,mb,nf(0.0),nfp(0.0); 
591   double msq(0.0),bx2(0.0),mbx(0.0),mtx;
592   double zji,cji,w,gammaji,chiji,betaji_fppfm;
593   double rfppfm,rfpmfm,f3fppfm,f3fpmfm,fppfm,fpmfm,al,ai,rcji,f3; 
594   double mqm,msb(0.0),bb2(0.0),mup,mum,bbx2,tm,wt,r2,betaji_fpmfm;
595
596   EvtId prnt=parent;
597   EvtId dgt=daugt;
598
599   //added by Lange Jan4,2000
600   static EvtId EM=EvtPDL::getId("e-");
601   static EvtId EP=EvtPDL::getId("e+");
602   static EvtId MUM=EvtPDL::getId("mu-");
603   static EvtId MUP=EvtPDL::getId("mu+");
604   static EvtId TAUM=EvtPDL::getId("tau-");
605   static EvtId TAUP=EvtPDL::getId("tau+");
606
607   static EvtIdSet theB("B+","B-","B0","anti-B0");
608
609   static EvtId DST0=EvtPDL::getId("D*0");
610   static EvtId DSTB=EvtPDL::getId("anti-D*0");
611   static EvtId DSTP=EvtPDL::getId("D*+");
612   static EvtId DSTM=EvtPDL::getId("D*-");
613   static EvtId D0=EvtPDL::getId("D0");
614   static EvtId D0B=EvtPDL::getId("anti-D0");
615   static EvtId DP=EvtPDL::getId("D+");
616   static EvtId DM=EvtPDL::getId("D-");
617
618   static EvtId D1P1P=EvtPDL::getId("D_1+");
619   static EvtId D1P1N=EvtPDL::getId("D_1-");
620   static EvtId D1P10=EvtPDL::getId("D_10");
621   static EvtId D1P1B=EvtPDL::getId("anti-D_10");
622
623   static EvtId D3P2P=EvtPDL::getId("D_2*+");
624   static EvtId D3P2N=EvtPDL::getId("D_2*-");
625   static EvtId D3P20=EvtPDL::getId("D_2*0");
626   static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
627
628   static EvtId D3P1P=EvtPDL::getId("D'_1+");
629   static EvtId D3P1N=EvtPDL::getId("D'_1-");
630   static EvtId D3P10=EvtPDL::getId("D'_10");
631   static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
632
633   static EvtId D3P0P=EvtPDL::getId("D_0*+");
634   static EvtId D3P0N=EvtPDL::getId("D_0*-");
635   static EvtId D3P00=EvtPDL::getId("D_0*0");
636   static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
637
638   static EvtId D21S0P=EvtPDL::getId("D(2S)+");
639   static EvtId D21S0N=EvtPDL::getId("D(2S)-");
640   static EvtId D21S00=EvtPDL::getId("D(2S)0");
641   static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
642
643   static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
644   static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
645   static EvtId D23S10=EvtPDL::getId("D*(2S)0");
646   static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
647
648   static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
649   static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
650   static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
651   static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
652   static EvtId ETA2S=EvtPDL::getId("eta(2S)");
653
654   static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
655   static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
656   static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
657
658   static EvtId PIP=EvtPDL::getId("pi+");
659   static EvtId PIM=EvtPDL::getId("pi-");
660   static EvtId PI0=EvtPDL::getId("pi0");
661
662   static EvtId RHOP=EvtPDL::getId("rho+");
663   static EvtId RHOM=EvtPDL::getId("rho-");
664   static EvtId RHO0=EvtPDL::getId("rho0");
665
666   static EvtId A2P=EvtPDL::getId("a_2+");
667   static EvtId A2M=EvtPDL::getId("a_2-");
668   static EvtId A20=EvtPDL::getId("a_20");
669
670   static EvtId A1P=EvtPDL::getId("a_1+");
671   static EvtId A1M=EvtPDL::getId("a_1-");
672   static EvtId A10=EvtPDL::getId("a_10");
673
674   static EvtId A0P=EvtPDL::getId("a_0+");
675   static EvtId A0M=EvtPDL::getId("a_0-");
676   static EvtId A00=EvtPDL::getId("a_00");
677
678   static EvtId B1P=EvtPDL::getId("b_1+");
679   static EvtId B1M=EvtPDL::getId("b_1-");
680   static EvtId B10=EvtPDL::getId("b_10");
681
682   static EvtId H1=EvtPDL::getId("h_1");
683   static EvtId H1PR=EvtPDL::getId("h'_1");
684
685   static EvtId F1=EvtPDL::getId("f_1");
686   static EvtId F1PR=EvtPDL::getId("f'_1");
687   static EvtId F0=EvtPDL::getId("f_0");
688   static EvtId F0PR=EvtPDL::getId("f'_0");
689   static EvtId F2=EvtPDL::getId("f_2");
690   static EvtId F2PR=EvtPDL::getId("f'_2");
691
692   static EvtId ETA=EvtPDL::getId("eta");
693   static EvtId ETAPR=EvtPDL::getId("eta'");
694   static EvtId OMEG=EvtPDL::getId("omega");
695
696   static EvtId KP=EvtPDL::getId("K+");
697   static EvtId KM=EvtPDL::getId("K-");
698   static EvtId K0=EvtPDL::getId("K0");
699   static EvtId KB=EvtPDL::getId("anti-K0");
700   static EvtId K0S=EvtPDL::getId("K_S0");
701   static EvtId K0L=EvtPDL::getId("K_L0");
702
703   static EvtId KSTP=EvtPDL::getId("K*+");
704   static EvtId KSTM=EvtPDL::getId("K*-");
705   static EvtId KST0=EvtPDL::getId("K*0");
706   static EvtId KSTB=EvtPDL::getId("anti-K*0");
707
708   static EvtId K1P=EvtPDL::getId("K_1+");
709   static EvtId K1M=EvtPDL::getId("K_1-");
710   static EvtId K10=EvtPDL::getId("K_10");
711   static EvtId K1B=EvtPDL::getId("anti-K_10");
712
713   static EvtId K1STP=EvtPDL::getId("K'_1+");
714   static EvtId K1STM=EvtPDL::getId("K'_1-");
715   static EvtId K1ST0=EvtPDL::getId("K'_10");
716   static EvtId K1STB=EvtPDL::getId("anti-K'_10");
717
718   static EvtId K2STP=EvtPDL::getId("K_2*+");
719   static EvtId K2STM=EvtPDL::getId("K_2*-");
720   static EvtId K2ST0=EvtPDL::getId("K_2*0");
721   static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
722
723   static EvtId K0STP=EvtPDL::getId("K_0*+");
724   static EvtId K0STM=EvtPDL::getId("K_0*-");
725   static EvtId K0ST0=EvtPDL::getId("K_0*0");
726   static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
727
728   static EvtId PHI=EvtPDL::getId("phi");
729   static EvtId DSP=EvtPDL::getId("D_s+");
730   static EvtId DSM=EvtPDL::getId("D_s-");
731
732   static EvtId D1P1SP=EvtPDL::getId("D_s1+");
733   static EvtId D1P1SN=EvtPDL::getId("D_s1-");
734
735   static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
736   static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
737
738   static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
739   static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
740
741   static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
742   static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
743
744   static EvtId DSSTP=EvtPDL::getId("D_s*+");
745   static EvtId DSSTM=EvtPDL::getId("D_s*-");
746
747   static EvtId BSB=EvtPDL::getId("anti-B_s0");
748   static EvtId BS0=EvtPDL::getId("B_s0");
749
750   if (theB.contains(prnt)) {
751     
752     msb=5.2;
753     msd=0.33;
754     bb2=0.431*0.431;
755     mbb=5.31;
756     nf = 4.0;
757    
758     if (dgt==PI0||dgt==PIP||dgt==PIM||dgt==ETA||dgt==ETAPR) {
759
760       msq=0.33;
761       bx2=0.406*0.406;
762       mbx=0.75*0.770+0.25*0.14;
763       nfp = 0.0;
764     }
765     else{
766       if (dgt==D0||dgt==D0B||dgt==DP||dgt==DM) {
767         msq=1.82;
768         bx2=0.45*0.45;
769         mbx=0.75*2.01+0.25*1.87;
770         nfp = 3.0;
771       }
772       else{
773       report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
774       }
775     }
776   }
777   else{
778     if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
779       msb=1.82;
780       msd=0.33;
781       bb2=0.45*0.45;
782       mbb=1.963;
783       nf = 3.0;
784
785       if (dgt==PIP||dgt==PIM||dgt==PI0||dgt==ETA||dgt==ETAPR) {
786         msq=0.33;
787         bx2=0.406*0.406;
788         mbx=0.75*0.770+0.25*0.14;
789         nfp = 0.0;
790       }
791       else{
792         if (dgt==K0||dgt==K0S||dgt==K0L||dgt==KB||dgt==KP||dgt==KM) {
793           msq=0.55;
794           bx2=0.44*0.44;
795           mbx=0.75*0.892+0.25*0.49767;
796           nfp = 2.0;
797         }
798         else{
799       report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
800         }
801       }
802     }
803     else{
804       if (prnt==DSP||prnt==DSM){
805         msb=1.82;
806         msd=0.55;
807         bb2=0.56*0.56;
808         mbb=1.968;
809         nf = 3.0;
810     
811         if  (dgt==K0||dgt==K0S||dgt==K0L||dgt==KB) {
812       
813           msq=0.33;
814           bx2=0.44*0.44;
815           mbx=0.75*0.770+0.25*0.14;
816           nfp = 0.0;
817         }
818         else{
819           if  (dgt==PI0||dgt==ETA||dgt==ETAPR) {
820             msq=0.33;
821             bx2=0.53*0.53;
822             mbx=0.75*0.892+0.25*0.49767;
823             nfp = 0.0;
824           }
825           else{
826
827             report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
828           }
829         }
830       }
831     else{
832       //BS -> cs constants added by djl on Jan. 21,1998
833       if (prnt==BS0||prnt==BSB){
834
835         msb=5.2;
836         msd=0.55;
837         bb2=0.54*0.54;
838         mbb=5.38;
839         nf = 4.0;
840     
841         if  (dgt==DSP||dgt==DSM) {
842       
843           msq=1.82;
844           bx2=0.56*0.56;
845           mbx=0.75*2.11+0.25*1.97;
846           nfp = 3.0;
847         }
848         else if  (dgt==KP||dgt==KM) {
849       
850           msq=0.55;
851           bx2=0.44*0.44;
852           mbx=0.75*0.892+0.25*0.49767;
853           nfp = 2.0;
854         }
855         else{
856             report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
857           }
858         }
859     
860       else{
861         report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_1S0.\n";
862         report(ERROR,"EvtGen") << "Parent:"<<parent.getId()<<endl;
863       }
864     }
865     }
866   }
867
868   mtb = msb + msd;
869   mtx = msq + msd;
870   mb=EvtPDL::getMeanMass(parent);
871   mx=mass;
872   
873   mup=1.0/(1.0/msq+1.0/msb);
874   mum=1.0/(1.0/msq-1.0/msb);
875   bbx2=0.5*(bb2+bx2);
876   tm=(mb-mx)*(mb-mx);
877   if ( t>tm ) t=0.99*tm;
878   wt=1.0+(tm-t)/(2.0*mbb*mbx);
879   
880   mqm = 0.1;
881   r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
882     (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
883     log(EvtGetas(mqm,mqm)/EvtGetas(msq,msq));
884   
885   f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,1.5) /
886     ((1.0+r2*(tm-t)/12.0)*(1.0+r2*(tm-t)/12.0));
887   
888 //  for w use wt def with physical masses.
889 //  report(ERROR,"EvtGen") << "before w\n";
890   
891   w = 1.0 + (( tm - t ) / ( 2.0* mb * mx ));
892   rcji = ( 1/sqrt(w*w -1 ))*log( w + sqrt( w*w -1 ));
893   al = (8.0 / ( 33.0 - 2.0*nfp ))*(w*rcji -1.0 );
894   ai = -1.0* ( 6.0/( 33.0 - 2.0*nf));  
895   cji = pow(( EvtGetas( msb,msb ) / EvtGetas( msq,msq ) ),ai);
896   
897   zji = msq / msb;
898   
899   gammaji = EvtGetGammaji( zji );
900   chiji = -1.0 - ( gammaji / ( 1- zji ));
901   betaji_fppfm = gammaji - (2.0/3.0)*chiji;
902   betaji_fpmfm = gammaji + (2.0/3.0)*chiji;
903   rfppfm = cji *(1.0 + betaji_fppfm*EvtGetas( msq,sqrt(msb*msq) )/EvtConst::pi);
904   rfpmfm = cji *(1.0 + betaji_fpmfm*EvtGetas( msq,sqrt(msb*msq) )/EvtConst::pi);
905   f3fppfm = f3*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),0.5);
906   f3fpmfm = f3*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),-0.5);
907   fppfm = f3fppfm* rfppfm * ( 2.0 - ( ( mtx/msq)*(1- ( (msd*msq*bb2)
908                                                        /(2.0*mup*mtx*bbx2)))));
909   fpmfm = f3fpmfm* rfpmfm * ( mtb/msq) * ( 1 - ( ( msd*msq*bb2)/
910                                                  ( 2.0*mup*mtx*bbx2)));
911   
912   *fpf = (fppfm + fpmfm)/2.0;
913   *fmf = (fppfm - fpmfm)/2.0;
914   
915   return;  
916 } //get_ff_isgw_1s0
917
918
919
920
921
922 void  EvtISGW2FF::EvtISGW2FF3S1(EvtId parent,EvtId daugt,double t,double mass,
923       double *f,double *g,double *ap,double *am){
924
925   //added by Lange Jan4,2000
926   static EvtId EM=EvtPDL::getId("e-");
927   static EvtId EP=EvtPDL::getId("e+");
928   static EvtId MUM=EvtPDL::getId("mu-");
929   static EvtId MUP=EvtPDL::getId("mu+");
930   static EvtId TAUM=EvtPDL::getId("tau-");
931   static EvtId TAUP=EvtPDL::getId("tau+");
932
933   static EvtId BP=EvtPDL::getId("B+");
934   static EvtId BM=EvtPDL::getId("B-");
935   static EvtId B0=EvtPDL::getId("B0");
936   static EvtId B0B=EvtPDL::getId("anti-B0");
937
938   static EvtId DST0=EvtPDL::getId("D*0");
939   static EvtId DSTB=EvtPDL::getId("anti-D*0");
940   static EvtId DSTP=EvtPDL::getId("D*+");
941   static EvtId DSTM=EvtPDL::getId("D*-");
942   static EvtId D0=EvtPDL::getId("D0");
943   static EvtId D0B=EvtPDL::getId("anti-D0");
944   static EvtId DP=EvtPDL::getId("D+");
945   static EvtId DM=EvtPDL::getId("D-");
946
947   static EvtId D1P1P=EvtPDL::getId("D_1+");
948   static EvtId D1P1N=EvtPDL::getId("D_1-");
949   static EvtId D1P10=EvtPDL::getId("D_10");
950   static EvtId D1P1B=EvtPDL::getId("anti-D_10");
951
952   static EvtId D3P2P=EvtPDL::getId("D_2*+");
953   static EvtId D3P2N=EvtPDL::getId("D_2*-");
954   static EvtId D3P20=EvtPDL::getId("D_2*0");
955   static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
956
957   static EvtId D3P1P=EvtPDL::getId("D'_1+");
958   static EvtId D3P1N=EvtPDL::getId("D'_1-");
959   static EvtId D3P10=EvtPDL::getId("D'_10");
960   static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
961
962   static EvtId D3P0P=EvtPDL::getId("D_0*+");
963   static EvtId D3P0N=EvtPDL::getId("D_0*-");
964   static EvtId D3P00=EvtPDL::getId("D_0*0");
965   static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
966
967   static EvtId D21S0P=EvtPDL::getId("D(2S)+");
968   static EvtId D21S0N=EvtPDL::getId("D(2S)-");
969   static EvtId D21S00=EvtPDL::getId("D(2S)0");
970   static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
971
972   static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
973   static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
974   static EvtId D23S10=EvtPDL::getId("D*(2S)0");
975   static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
976
977   static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
978   static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
979   static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
980   static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
981   static EvtId ETA2S=EvtPDL::getId("eta(2S)");
982
983   static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
984   static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
985   static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
986
987   static EvtId PIP=EvtPDL::getId("pi+");
988   static EvtId PIM=EvtPDL::getId("pi-");
989   static EvtId PI0=EvtPDL::getId("pi0");
990
991   static EvtId RHOP=EvtPDL::getId("rho+");
992   static EvtId RHOM=EvtPDL::getId("rho-");
993   static EvtId RHO0=EvtPDL::getId("rho0");
994
995   static EvtId A2P=EvtPDL::getId("a_2+");
996   static EvtId A2M=EvtPDL::getId("a_2-");
997   static EvtId A20=EvtPDL::getId("a_20");
998
999   static EvtId A1P=EvtPDL::getId("a_1+");
1000   static EvtId A1M=EvtPDL::getId("a_1-");
1001   static EvtId A10=EvtPDL::getId("a_10");
1002
1003   static EvtId A0P=EvtPDL::getId("a_0+");
1004   static EvtId A0M=EvtPDL::getId("a_0-");
1005   static EvtId A00=EvtPDL::getId("a_00");
1006
1007   static EvtId B1P=EvtPDL::getId("b_1+");
1008   static EvtId B1M=EvtPDL::getId("b_1-");
1009   static EvtId B10=EvtPDL::getId("b_10");
1010
1011   static EvtId H1=EvtPDL::getId("h_1");
1012   static EvtId H1PR=EvtPDL::getId("h'_1");
1013
1014   static EvtId F1=EvtPDL::getId("f_1");
1015   static EvtId F1PR=EvtPDL::getId("f'_1");
1016   static EvtId F0=EvtPDL::getId("f_0");
1017   static EvtId F0PR=EvtPDL::getId("f'_0");
1018   static EvtId F2=EvtPDL::getId("f_2");
1019   static EvtId F2PR=EvtPDL::getId("f'_2");
1020
1021   static EvtId ETA=EvtPDL::getId("eta");
1022   static EvtId ETAPR=EvtPDL::getId("eta'");
1023   static EvtId OMEG=EvtPDL::getId("omega");
1024
1025   static EvtId KP=EvtPDL::getId("K+");
1026   static EvtId KM=EvtPDL::getId("K-");
1027   static EvtId K0=EvtPDL::getId("K0");
1028   static EvtId KB=EvtPDL::getId("anti-K0");
1029   static EvtId K0S=EvtPDL::getId("K_S0");
1030   static EvtId K0L=EvtPDL::getId("K_L0");
1031
1032   static EvtId KSTP=EvtPDL::getId("K*+");
1033   static EvtId KSTM=EvtPDL::getId("K*-");
1034   static EvtId KST0=EvtPDL::getId("K*0");
1035   static EvtId KSTB=EvtPDL::getId("anti-K*0");
1036
1037   static EvtId K1P=EvtPDL::getId("K_1+");
1038   static EvtId K1M=EvtPDL::getId("K_1-");
1039   static EvtId K10=EvtPDL::getId("K_10");
1040   static EvtId K1B=EvtPDL::getId("anti-K_10");
1041
1042   static EvtId K1STP=EvtPDL::getId("K'_1+");
1043   static EvtId K1STM=EvtPDL::getId("K'_1-");
1044   static EvtId K1ST0=EvtPDL::getId("K'_10");
1045   static EvtId K1STB=EvtPDL::getId("anti-K'_10");
1046
1047   static EvtId K2STP=EvtPDL::getId("K_2*+");
1048   static EvtId K2STM=EvtPDL::getId("K_2*-");
1049   static EvtId K2ST0=EvtPDL::getId("K_2*0");
1050   static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
1051
1052   static EvtId K0STP=EvtPDL::getId("K_0*+");
1053   static EvtId K0STM=EvtPDL::getId("K_0*-");
1054   static EvtId K0ST0=EvtPDL::getId("K_0*0");
1055   static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
1056
1057   static EvtId PHI=EvtPDL::getId("phi");
1058   static EvtId DSP=EvtPDL::getId("D_s+");
1059   static EvtId DSM=EvtPDL::getId("D_s-");
1060   
1061   static EvtId D1P1SP=EvtPDL::getId("D_s1+");
1062   static EvtId D1P1SN=EvtPDL::getId("D_s1-");
1063
1064   static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
1065   static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
1066
1067   static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
1068   static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
1069
1070   static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
1071   static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
1072
1073   static EvtId DSSTP=EvtPDL::getId("D_s*+");
1074   static EvtId DSSTM=EvtPDL::getId("D_s*-");
1075
1076   static EvtId BSB=EvtPDL::getId("anti-B_s0");
1077   static EvtId BS0=EvtPDL::getId("B_s0");
1078
1079   double cf(0.0),mtb,wt,msd(0.0),mup,f3f,msq(0.0),bb2(0.0),mum,mtx,bbx2,f3g;
1080   double cji,bx2(0.0),f3appam,msb(0.0),tm,mbb(0.0),mbx(0.0);
1081   double f3apmam,appam,apmam,mb,mx,f3;
1082   double r_f,r_g,r_appam,r_apmam, betaji_f,betaji_g;
1083   double betaji_appam, betaji_apmam;
1084   double w,mqm,r2,chiji,zji,ai,al,rcji,nf(0.0),nfp(0.0),gammaji;
1085
1086   EvtId prnt=parent;
1087   EvtId dgt=daugt;
1088
1089   if (parent==B0||parent==B0B||parent==BP||parent==BM) {
1090
1091     msb=5.2;
1092     msd=0.33;
1093     bb2=0.431*0.431;
1094     mbb=5.31;
1095     nf = 4.0;
1096     
1097     if (dgt==DST0||dgt==DSTP||dgt==DSTM||dgt==DSTB) {
1098
1099       cf=0.989;
1100       msq=1.82;
1101       bx2=0.38*0.38;
1102       mbx=0.75*2.01+0.25*1.87;
1103       nfp = 3.0;
1104     }  
1105     else{
1106       if (dgt==OMEG||dgt==RHO0||dgt==RHOM||dgt==RHOP) {
1107         
1108         cf=0.905;
1109         msq=0.33;
1110         bx2=0.299*0.299;
1111         mbx=0.75*0.770+0.25*0.14;
1112         nfp = 0.0;
1113       }
1114       else{
1115         report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3S1.\n";
1116       }
1117     }
1118   }
1119   else{
1120     if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
1121       
1122       msb=1.82;
1123       msd=0.33;
1124       bb2=0.45*0.45;
1125       mbb=1.963;
1126       nf = 3.0;
1127
1128       if (dgt==KSTP||dgt==KSTM||dgt==KST0||dgt==KSTB) {
1129         
1130         cf=0.928;
1131         msq=0.55;
1132         bx2=0.33*0.33;
1133         mbx=0.75*0.892+0.25*0.494;
1134         nfp = 2.0;
1135       }
1136       else{
1137         if (dgt==RHO0||dgt==OMEG||dgt==RHOM||dgt==RHOP) {
1138           cf=0.889;
1139           msq=0.33;
1140           bx2=0.299*0.299;
1141           mbx=0.75*0.770+0.25*0.14;
1142           nfp = 0.0;
1143         }
1144         else{
1145           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3S1.\n";
1146         }
1147       }
1148     }
1149     else{
1150       if (prnt==DSP||prnt==DSM){
1151     
1152         msb=1.82;
1153         msd=0.55;
1154         bb2=0.56*0.56;
1155         mbb=1.968;
1156         nf = 3.0;
1157         
1158         if  (dgt==KSTB||dgt==KST0) {
1159
1160           cf=0.8731;
1161           msq=0.55;
1162           bx2=0.33*0.33;
1163           mbx=0.87;
1164           nfp = 2.0;
1165         }
1166         else{
1167           if(dgt==PHI){
1168             cf=0.911;
1169             msq=0.55;
1170             bx2=0.37*0.37;
1171             mbx=0.97;
1172             nfp = 2.0;
1173           }
1174           else{
1175         report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3S1.\n";
1176           }
1177         }
1178       }
1179     else{
1180       //BS -> cs constants added by djl on Jan. 21,1998
1181       if (prnt==BS0||prnt==BSB){
1182
1183         msb=5.2;
1184         msd=0.55;
1185         bb2=0.54*0.54;
1186         mbb=5.38;
1187         nf = 4.0;
1188     
1189         if  (dgt==DSSTP||dgt==DSSTM) {
1190       
1191           cf=0.984;
1192           msq=1.82;
1193           bx2=0.49*0.49;
1194           mbx=0.75*2.11+0.25*1.97;
1195           nfp = 3.0;
1196         }
1197         else if (dgt==KSTP||dgt==KSTM||dgt==KST0||dgt==KSTB) {
1198         
1199           cf=0.928;
1200           msq=0.55;
1201           bx2=0.33*0.33;
1202           mbx=0.75*0.892+0.25*0.494;
1203           nfp = 2.0;
1204         }
1205         else{
1206             report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
1207           }
1208         }
1209       
1210       else{
1211         report(ERROR,"EvtGen") << "Not implemented parent in get_isgw2_ff_3S1.\n";
1212       }
1213     }
1214     }
1215   }
1216
1217
1218   mtb=msb+msd;
1219   mtx=msq+msd;
1220   
1221   mup=1.0/(1.0/msq+1.0/msb);
1222   mum=1.0/(1.0/msq-1.0/msb);
1223   bbx2=0.5*(bb2+bx2);
1224   mb=EvtPDL::getMeanMass(parent);
1225   mx=mass;
1226   tm=(mb-mx)*(mb-mx);
1227   if ( t > tm ) t = 0.99*tm;
1228
1229   wt=1.0+(tm-t)/(2.0*mbb*mbx);
1230   mqm = 0.1;
1231   
1232   r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
1233     (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
1234     log(EvtGetas(mqm,mqm)/EvtGetas(msq,msq));
1235
1236   w = 1.0 + (( tm - t ) / ( 2.0* mb * mx ));
1237
1238   rcji = ( 1/sqrt(w*w -1 ))*log( w + sqrt( w*w -1 ));
1239   
1240   al = (8.0 / ( 33.0 - 2.0*nfp ))*(w*rcji -1.0 );
1241
1242   ai = -1.0* ( 6.0/( 33.0 - 2.0*nf));  
1243   
1244   cji = pow(( EvtGetas( msb,msb ) / EvtGetas( msq,msq ) ),ai);
1245   zji = msq / msb;
1246
1247   gammaji = EvtGetGammaji( zji );
1248
1249   chiji = -1.0 - ( gammaji / ( 1- zji ));
1250   
1251   betaji_g = (2.0/3.0)+gammaji;
1252   betaji_f = (-2.0/3.0)+gammaji;
1253   betaji_appam = -1.0-chiji+(4.0/(3.0*(1.0-zji)))+
1254                  (2.0*(1+zji)*gammaji/(3.0*(1.0-zji)*(1.0-zji)));
1255   
1256   betaji_apmam = (1.0/3.0)-chiji-(4.0/(3.0*(1.0-zji)))-
1257                  (2.0*(1+zji)*gammaji/(3.0*(1.0-zji)*(1.0-zji)))+
1258                  gammaji;
1259
1260   r_g = cji*(1+(betaji_g*EvtGetas( msq,sqrt(mb*msq) )/(EvtConst::pi)));
1261   r_f = cji*(1+(betaji_f*EvtGetas( msq,sqrt(mb*msq) )/(EvtConst::pi)));
1262   r_appam = cji*(1+(betaji_appam*EvtGetas( msq,sqrt(mb*msq) )/(EvtConst::pi)));
1263   r_apmam = cji*(1+(betaji_apmam*EvtGetas( msq,sqrt(mb*msq) )/(EvtConst::pi)));
1264
1265   
1266   f3=sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,1.5)/
1267     ((1.0+r2*(tm-t)/12.0)*(1.0+r2*(tm-t)/12.0));
1268   
1269   f3f=sqrt(mbx*mbb/(mtx*mtb))*f3;
1270   f3g=sqrt(mtx*mtb/(mbx*mbb))*f3;
1271   f3appam=sqrt(mtb*mtb*mtb*mbx/(mbb*mbb*mbb*mtx))*f3;
1272   f3apmam=sqrt(mtx*mtb/(mbx*mbb))*f3;
1273   *f=cf*mtb*(1+wt+msd*(wt-1)/(2*mup))*f3f*r_f;
1274   *g=0.5*(1/msq-msd*bb2/(2*mum*mtx*bbx2))*f3g*r_g;
1275   
1276   appam=cji*(msd*bx2*(1-msd*bx2/(2*mtb*bbx2))/ 
1277              ((1+wt)*msq*msb*bbx2)-
1278              betaji_appam*EvtGetas( msq,sqrt(msq*mb) )/
1279              (mtb*EvtConst::pi))*f3appam;
1280   
1281   apmam=-1.0*(mtb/msb-msd*bx2/(2*mup*bbx2)+wt*msd*mtb*bx2*
1282               (1-msd*bx2/(2*mtb*bbx2))/((wt+1)*msq*msb*bbx2))*
1283     f3apmam*r_apmam/mtx;
1284   
1285   *ap=0.5*(appam+apmam);
1286   *am=0.5*(appam-apmam);
1287   return;
1288 }
1289
1290
1291 void EvtISGW2FF::EvtISGW2FF21S0 (EvtId parent,EvtId daugt,
1292        double t, double mass, double *fppf, double *fpmf ) {
1293
1294   //added by Lange Jan4,2000
1295   static EvtId EM=EvtPDL::getId("e-");
1296   static EvtId EP=EvtPDL::getId("e+");
1297   static EvtId MUM=EvtPDL::getId("mu-");
1298   static EvtId MUP=EvtPDL::getId("mu+");
1299   static EvtId TAUM=EvtPDL::getId("tau-");
1300   static EvtId TAUP=EvtPDL::getId("tau+");
1301
1302   static EvtId BP=EvtPDL::getId("B+");
1303   static EvtId BM=EvtPDL::getId("B-");
1304   static EvtId B0=EvtPDL::getId("B0");
1305   static EvtId B0B=EvtPDL::getId("anti-B0");
1306
1307   static EvtId DST0=EvtPDL::getId("D*0");
1308   static EvtId DSTB=EvtPDL::getId("anti-D*0");
1309   static EvtId DSTP=EvtPDL::getId("D*+");
1310   static EvtId DSTM=EvtPDL::getId("D*-");
1311   static EvtId D0=EvtPDL::getId("D0");
1312   static EvtId D0B=EvtPDL::getId("anti-D0");
1313   static EvtId DP=EvtPDL::getId("D+");
1314   static EvtId DM=EvtPDL::getId("D-");
1315
1316   static EvtId D1P1P=EvtPDL::getId("D_1+");
1317   static EvtId D1P1N=EvtPDL::getId("D_1-");
1318   static EvtId D1P10=EvtPDL::getId("D_10");
1319   static EvtId D1P1B=EvtPDL::getId("anti-D_10");
1320
1321   static EvtId D3P2P=EvtPDL::getId("D_2*+");
1322   static EvtId D3P2N=EvtPDL::getId("D_2*-");
1323   static EvtId D3P20=EvtPDL::getId("D_2*0");
1324   static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
1325
1326   static EvtId D3P1P=EvtPDL::getId("D'_1+");
1327   static EvtId D3P1N=EvtPDL::getId("D'_1-");
1328   static EvtId D3P10=EvtPDL::getId("D'_10");
1329   static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
1330
1331   static EvtId D3P0P=EvtPDL::getId("D_0*+");
1332   static EvtId D3P0N=EvtPDL::getId("D_0*-");
1333   static EvtId D3P00=EvtPDL::getId("D_0*0");
1334   static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
1335
1336   static EvtId D21S0P=EvtPDL::getId("D(2S)+");
1337   static EvtId D21S0N=EvtPDL::getId("D(2S)-");
1338   static EvtId D21S00=EvtPDL::getId("D(2S)0");
1339   static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
1340
1341   static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
1342   static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
1343   static EvtId D23S10=EvtPDL::getId("D*(2S)0");
1344   static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
1345
1346   static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
1347   static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
1348   static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
1349   static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
1350   static EvtId ETA2S=EvtPDL::getId("eta(2S)");
1351
1352   static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
1353   static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
1354   static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
1355
1356   static EvtId PIP=EvtPDL::getId("pi+");
1357   static EvtId PIM=EvtPDL::getId("pi-");
1358   static EvtId PI0=EvtPDL::getId("pi0");
1359
1360   static EvtId RHOP=EvtPDL::getId("rho+");
1361   static EvtId RHOM=EvtPDL::getId("rho-");
1362   static EvtId RHO0=EvtPDL::getId("rho0");
1363
1364   static EvtId A2P=EvtPDL::getId("a_2+");
1365   static EvtId A2M=EvtPDL::getId("a_2-");
1366   static EvtId A20=EvtPDL::getId("a_20");
1367
1368   static EvtId A1P=EvtPDL::getId("a_1+");
1369   static EvtId A1M=EvtPDL::getId("a_1-");
1370   static EvtId A10=EvtPDL::getId("a_10");
1371
1372   static EvtId A0P=EvtPDL::getId("a_0+");
1373   static EvtId A0M=EvtPDL::getId("a_0-");
1374   static EvtId A00=EvtPDL::getId("a_00");
1375
1376   static EvtId B1P=EvtPDL::getId("b_1+");
1377   static EvtId B1M=EvtPDL::getId("b_1-");
1378   static EvtId B10=EvtPDL::getId("b_10");
1379
1380   static EvtId H1=EvtPDL::getId("h_1");
1381   static EvtId H1PR=EvtPDL::getId("h'_1");
1382
1383   static EvtId F1=EvtPDL::getId("f_1");
1384   static EvtId F1PR=EvtPDL::getId("f'_1");
1385   static EvtId F0=EvtPDL::getId("f_0");
1386   static EvtId F0PR=EvtPDL::getId("f'_0");
1387   static EvtId F2=EvtPDL::getId("f_2");
1388   static EvtId F2PR=EvtPDL::getId("f'_2");
1389
1390   static EvtId ETA=EvtPDL::getId("eta");
1391   static EvtId ETAPR=EvtPDL::getId("eta'");
1392   static EvtId OMEG=EvtPDL::getId("omega");
1393
1394   static EvtId KP=EvtPDL::getId("K+");
1395   static EvtId KM=EvtPDL::getId("K-");
1396   static EvtId K0=EvtPDL::getId("K0");
1397   static EvtId KB=EvtPDL::getId("anti-K0");
1398   static EvtId K0S=EvtPDL::getId("K_S0");
1399   static EvtId K0L=EvtPDL::getId("K_L0");
1400
1401   static EvtId KSTP=EvtPDL::getId("K*+");
1402   static EvtId KSTM=EvtPDL::getId("K*-");
1403   static EvtId KST0=EvtPDL::getId("K*0");
1404   static EvtId KSTB=EvtPDL::getId("anti-K*0");
1405
1406   static EvtId K1P=EvtPDL::getId("K_1+");
1407   static EvtId K1M=EvtPDL::getId("K_1-");
1408   static EvtId K10=EvtPDL::getId("K_10");
1409   static EvtId K1B=EvtPDL::getId("anti-K_10");
1410
1411   static EvtId K1STP=EvtPDL::getId("K'_1+");
1412   static EvtId K1STM=EvtPDL::getId("K'_1-");
1413   static EvtId K1ST0=EvtPDL::getId("K'_10");
1414   static EvtId K1STB=EvtPDL::getId("anti-K'_10");
1415
1416   static EvtId K2STP=EvtPDL::getId("K_2*+");
1417   static EvtId K2STM=EvtPDL::getId("K_2*-");
1418   static EvtId K2ST0=EvtPDL::getId("K_2*0");
1419   static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
1420
1421   static EvtId K0STP=EvtPDL::getId("K_0*+");
1422   static EvtId K0STM=EvtPDL::getId("K_0*-");
1423   static EvtId K0ST0=EvtPDL::getId("K_0*0");
1424   static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
1425
1426   static EvtId PHI=EvtPDL::getId("phi");
1427   static EvtId DSP=EvtPDL::getId("D_s+");
1428   static EvtId DSM=EvtPDL::getId("D_s-");
1429
1430   static EvtId D1P1SP=EvtPDL::getId("D_s1+");
1431   static EvtId D1P1SN=EvtPDL::getId("D_s1-");
1432
1433   static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
1434   static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
1435
1436   static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
1437   static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
1438
1439   static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
1440   static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
1441
1442   static EvtId DSSTP=EvtPDL::getId("D_s*+");
1443   static EvtId DSSTM=EvtPDL::getId("D_s*-");
1444
1445   static EvtId BSB=EvtPDL::getId("anti-B_s0");
1446   static EvtId BS0=EvtPDL::getId("B_s0");
1447
1448   double mtb, mbb(0.0);
1449   double msd(0.0), mx,mb,nf,nfp(0.0); 
1450   double msq(0.0),bx2(0.0),mbx(0.0),mtx;
1451   double f3fppfm,f3fpmfm,fppfm,fpmfm,f3;
1452   double mqm,msb(0.0);
1453   double mum,mup,r2,wt,tm,bb2(0.0),bbx2;
1454   double tau,udef,vdef;
1455
1456   EvtId prnt=parent;
1457   EvtId dgt=daugt;
1458
1459   if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
1460     
1461     msb=5.2;
1462     msd=0.33;
1463     bb2=0.431*0.431;
1464     mbb=0.75*5.325+0.25*5.279;
1465     nf = 4.0;
1466
1467     if (dgt==PI2S0||dgt==PI2SP||dgt==PI2SM||dgt==ETA2S) {
1468
1469       msq=0.33;
1470       bx2=0.406*0.406;
1471       mbx=0.75*1.45+0.25*1.300;
1472       nfp = 0.0;
1473     }
1474     else{
1475       if (dgt==D21S0P||dgt==D21S0B||dgt==D21S0N||dgt==D21S00) {
1476         msq=1.82;
1477         bx2=0.45*0.45;
1478         mbx=0.75*2.64+0.25*2.58;
1479         nfp=3.0;
1480       }
1481       else{
1482
1483       report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_21S0.\n";
1484       }
1485     }
1486   }
1487   else{
1488     if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
1489       msb=1.82;
1490       msd=0.33;
1491       bb2=0.45*0.45;
1492       mbb=1.963;
1493       nf = 3.0;
1494       if (dgt==PI2SP||dgt==PI2SM||dgt==PI2S0||dgt==ETA2S) {
1495         msq=0.33;
1496         bx2=0.406*0.406;
1497         mbx=0.75*1.45+0.25*1.300;
1498         nfp = 0.0;
1499       }
1500       else{
1501         report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_21S0.\n";
1502       }
1503     }
1504     else{
1505       report(ERROR,"EvtGen") << "Not implemented parent in get_EvtISGW2_ff_21S0.\n";
1506     }
1507   }
1508   
1509   mtb = msb + msd;
1510   mtx = msq + msd;
1511   
1512   mb = EvtPDL::getMeanMass( parent );
1513   mx = mass;
1514   
1515   mup=1.0/(1.0/msq+1.0/msb);
1516   mum=1.0/(1.0/msq-1.0/msb);
1517   bbx2=0.5*(bb2+bx2);
1518   tm=(mb-mx)*(mb-mx);
1519   if (t>tm) t = 0.99*tm;
1520   wt=1.0+(tm-t)/(2.0*mbb*mbx);
1521   
1522   mqm = 0.1;
1523   r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
1524     (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
1525     log(EvtGetas(mqm)/EvtGetas(msq));
1526   
1527   f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0) /
1528     (pow((1.0+r2*(tm-t)/24.0),4.0));
1529   
1530   f3fppfm = f3*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),0.5);
1531   f3fpmfm = f3*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),-0.5);
1532   
1533   tau = msd*msd*bx2*(wt-1)/(bb2*bbx2);
1534   udef = (( bb2-bx2)/(2.0*bbx2)) + ((bb2*tau)/(3.0*bbx2));
1535   vdef = (bb2*(1.0+(msq/msb))/(6.0*bbx2))*(7.0 - ((bb2/bbx2)*(5+tau)));
1536
1537   fppfm = f3fppfm*sqrt(1.5)*((1.0-(msd/msq))*udef-(msd*vdef/msq));
1538   fpmfm = f3fpmfm*sqrt(1.5)*(mtb/msq)*(udef+(msd*vdef/mtx));
1539
1540   *fppf = (fppfm + fpmfm) /2.0;
1541   *fpmf = (fppfm - fpmfm) /2.0;
1542   return;
1543
1544 } //get_ff_isgw_21s0
1545
1546
1547 void EvtISGW2FF::EvtISGW2FF23S1 (EvtId parent,EvtId daugt,
1548        double t, double mass, double *fpf, double *gpf, 
1549        double *appf, double *apmf ) {
1550
1551   //added by Lange Jan4,2000
1552   static EvtId EM=EvtPDL::getId("e-");
1553   static EvtId EP=EvtPDL::getId("e+");
1554   static EvtId MUM=EvtPDL::getId("mu-");
1555   static EvtId MUP=EvtPDL::getId("mu+");
1556   static EvtId TAUM=EvtPDL::getId("tau-");
1557   static EvtId TAUP=EvtPDL::getId("tau+");
1558
1559   static EvtId BP=EvtPDL::getId("B+");
1560   static EvtId BM=EvtPDL::getId("B-");
1561   static EvtId B0=EvtPDL::getId("B0");
1562   static EvtId B0B=EvtPDL::getId("anti-B0");
1563
1564   static EvtId DST0=EvtPDL::getId("D*0");
1565   static EvtId DSTB=EvtPDL::getId("anti-D*0");
1566   static EvtId DSTP=EvtPDL::getId("D*+");
1567   static EvtId DSTM=EvtPDL::getId("D*-");
1568   static EvtId D0=EvtPDL::getId("D0");
1569   static EvtId D0B=EvtPDL::getId("anti-D0");
1570   static EvtId DP=EvtPDL::getId("D+");
1571   static EvtId DM=EvtPDL::getId("D-");
1572
1573   static EvtId D1P1P=EvtPDL::getId("D_1+");
1574   static EvtId D1P1N=EvtPDL::getId("D_1-");
1575   static EvtId D1P10=EvtPDL::getId("D_10");
1576   static EvtId D1P1B=EvtPDL::getId("anti-D_10");
1577
1578   static EvtId D3P2P=EvtPDL::getId("D_2*+");
1579   static EvtId D3P2N=EvtPDL::getId("D_2*-");
1580   static EvtId D3P20=EvtPDL::getId("D_2*0");
1581   static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
1582
1583   static EvtId D3P1P=EvtPDL::getId("D'_1+");
1584   static EvtId D3P1N=EvtPDL::getId("D'_1-");
1585   static EvtId D3P10=EvtPDL::getId("D'_10");
1586   static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
1587
1588   static EvtId D3P0P=EvtPDL::getId("D_0*+");
1589   static EvtId D3P0N=EvtPDL::getId("D_0*-");
1590   static EvtId D3P00=EvtPDL::getId("D_0*0");
1591   static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
1592
1593   static EvtId D21S0P=EvtPDL::getId("D(2S)+");
1594   static EvtId D21S0N=EvtPDL::getId("D(2S)-");
1595   static EvtId D21S00=EvtPDL::getId("D(2S)0");
1596   static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
1597
1598   static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
1599   static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
1600   static EvtId D23S10=EvtPDL::getId("D*(2S)0");
1601   static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
1602
1603   static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
1604   static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
1605   static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
1606   static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
1607   static EvtId ETA2S=EvtPDL::getId("eta(2S)");
1608
1609   static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
1610   static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
1611   static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
1612
1613   static EvtId PIP=EvtPDL::getId("pi+");
1614   static EvtId PIM=EvtPDL::getId("pi-");
1615   static EvtId PI0=EvtPDL::getId("pi0");
1616
1617   static EvtId RHOP=EvtPDL::getId("rho+");
1618   static EvtId RHOM=EvtPDL::getId("rho-");
1619   static EvtId RHO0=EvtPDL::getId("rho0");
1620
1621   static EvtId A2P=EvtPDL::getId("a_2+");
1622   static EvtId A2M=EvtPDL::getId("a_2-");
1623   static EvtId A20=EvtPDL::getId("a_20");
1624
1625   static EvtId A1P=EvtPDL::getId("a_1+");
1626   static EvtId A1M=EvtPDL::getId("a_1-");
1627   static EvtId A10=EvtPDL::getId("a_10");
1628
1629   static EvtId A0P=EvtPDL::getId("a_0+");
1630   static EvtId A0M=EvtPDL::getId("a_0-");
1631   static EvtId A00=EvtPDL::getId("a_00");
1632
1633   static EvtId B1P=EvtPDL::getId("b_1+");
1634   static EvtId B1M=EvtPDL::getId("b_1-");
1635   static EvtId B10=EvtPDL::getId("b_10");
1636
1637   static EvtId H1=EvtPDL::getId("h_1");
1638   static EvtId H1PR=EvtPDL::getId("h'_1");
1639
1640   static EvtId F1=EvtPDL::getId("f_1");
1641   static EvtId F1PR=EvtPDL::getId("f'_1");
1642   static EvtId F0=EvtPDL::getId("f_0");
1643   static EvtId F0PR=EvtPDL::getId("f'_0");
1644   static EvtId F2=EvtPDL::getId("f_2");
1645   static EvtId F2PR=EvtPDL::getId("f'_2");
1646
1647   static EvtId ETA=EvtPDL::getId("eta");
1648   static EvtId ETAPR=EvtPDL::getId("eta'");
1649   static EvtId OMEG=EvtPDL::getId("omega");
1650
1651   static EvtId KP=EvtPDL::getId("K+");
1652   static EvtId KM=EvtPDL::getId("K-");
1653   static EvtId K0=EvtPDL::getId("K0");
1654   static EvtId KB=EvtPDL::getId("anti-K0");
1655   static EvtId K0S=EvtPDL::getId("K_S0");
1656   static EvtId K0L=EvtPDL::getId("K_L0");
1657
1658   static EvtId KSTP=EvtPDL::getId("K*+");
1659   static EvtId KSTM=EvtPDL::getId("K*-");
1660   static EvtId KST0=EvtPDL::getId("K*0");
1661   static EvtId KSTB=EvtPDL::getId("anti-K*0");
1662
1663   static EvtId K1P=EvtPDL::getId("K_1+");
1664   static EvtId K1M=EvtPDL::getId("K_1-");
1665   static EvtId K10=EvtPDL::getId("K_10");
1666   static EvtId K1B=EvtPDL::getId("anti-K_10");
1667
1668   static EvtId K1STP=EvtPDL::getId("K'_1+");
1669   static EvtId K1STM=EvtPDL::getId("K'_1-");
1670   static EvtId K1ST0=EvtPDL::getId("K'_10");
1671   static EvtId K1STB=EvtPDL::getId("anti-K'_10");
1672
1673   static EvtId K2STP=EvtPDL::getId("K_2*+");
1674   static EvtId K2STM=EvtPDL::getId("K_2*-");
1675   static EvtId K2ST0=EvtPDL::getId("K_2*0");
1676   static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
1677
1678   static EvtId K0STP=EvtPDL::getId("K_0*+");
1679   static EvtId K0STM=EvtPDL::getId("K_0*-");
1680   static EvtId K0ST0=EvtPDL::getId("K_0*0");
1681   static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
1682
1683   static EvtId PHI=EvtPDL::getId("phi");
1684   static EvtId DSP=EvtPDL::getId("D_s+");
1685   static EvtId DSM=EvtPDL::getId("D_s-");
1686
1687   static EvtId D1P1SP=EvtPDL::getId("D_s1+");
1688   static EvtId D1P1SN=EvtPDL::getId("D_s1-");
1689
1690   static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
1691   static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
1692
1693   static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
1694   static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
1695
1696   static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
1697   static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
1698
1699   static EvtId DSSTP=EvtPDL::getId("D_s*+");
1700   static EvtId DSSTM=EvtPDL::getId("D_s*-");
1701
1702   static EvtId BSB=EvtPDL::getId("anti-B_s0");
1703   static EvtId BS0=EvtPDL::getId("B_s0");
1704
1705   double mtb,  mbb(0.0);
1706   double msd(0.0), mx,mb,nf,nfp(0.0); 
1707   double msq(0.0),bx2(0.0),mbx(0.0),mtx;
1708   double f3appam,f3apmam,f3,appam,apmam,f3fp,f3gp;
1709   double udef,tau,mum,mup,bb2(0.0),bbx2,tm,wt,mqm,r2,msb(0.0);
1710   double cfp(0.0);
1711
1712   EvtId prnt=parent;
1713   EvtId dgt=daugt;
1714
1715   if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
1716
1717     msb=5.2;
1718     msd=0.33;
1719     bb2=0.431*0.431;
1720     mbb=0.75*5.325+0.25*5.279;
1721     nf = 4.0;
1722
1723     if (dgt==RHO2S0||dgt==RHO2SP||dgt==RHO2SM||dgt==OMEG2S) {
1724       
1725       cfp=0.776;
1726       msq=0.33;
1727       bx2=0.299*0.299;
1728       mbx=0.75*1.45+0.25*1.300;
1729       nfp = 0.0;
1730
1731     }
1732     else{
1733       if (dgt==D23S1N||dgt==D23S1P||dgt==D23S1B||dgt==D23S10) {
1734         cfp=0.929;
1735         msq=1.82;
1736         bx2=0.38*0.38;
1737         mbx=0.75*2.64+0.25*2.58;
1738         nfp=3.0;
1739       }
1740       else{
1741       report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_23P1.\n";
1742       }
1743     }
1744   }
1745   else{
1746     if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
1747       msb=1.82;
1748       msd=0.33;
1749       bb2=0.45*0.45;
1750       mbb=1.963;
1751       nf = 3.0;
1752
1753       if (dgt==RHO2S0||dgt==RHO2SP||dgt==RHO2SM||dgt==OMEG2S) {
1754         cfp=0.74;
1755         msq=0.33;
1756         bx2=0.299*0.299;
1757         mbx=0.75*1.45+0.25*1.300;
1758         nfp = 0.0;
1759       }
1760       else{      
1761         report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_23P1.\n";
1762       }
1763     }
1764     else{
1765       report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_23P1.\n";
1766     }
1767   }
1768
1769   mtb = msb + msd;
1770   mtx = msq + msd;
1771   mb = EvtPDL::getMeanMass( parent );
1772   mx = mass;
1773   
1774   mup=1.0/(1.0/msq+1.0/msb);
1775   mum=1.0/(1.0/msq-1.0/msb);
1776   bbx2=0.5*(bb2+bx2);
1777   tm=(mb-mx)*(mb-mx);
1778
1779   if (t>tm) t = 0.99*tm;
1780   wt=1.0+(tm-t)/(2.0*mbb*mbx);
1781   
1782   mqm = 0.1;
1783   r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
1784      (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
1785      log(EvtGetas(mqm)/EvtGetas(msq));
1786
1787   f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0) /
1788        (pow((1.0+r2*(tm-t)/24.0),4.0));
1789   
1790   f3fp = f3*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),0.5);
1791   f3gp = f3*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
1792   f3appam = f3*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),0.5);
1793   f3apmam = f3*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
1794
1795   tau = msd*msd*bx2*(wt-1.0)/(bb2*bbx2);
1796   udef = (( bb2-bx2)/(2.0*bbx2));
1797   udef = udef + ((bb2*tau)/(3.0*bbx2));
1798
1799   *fpf = cfp*sqrt(1.5)*mtb*(1.0+wt)*udef*f3fp;
1800
1801   *gpf = sqrt(3.0/8.0)*f3gp*(((1.0/msq)-((msd*bb2)/(2.0*mum*mtx*bbx2)))*
1802         udef + ( (msd*bb2*bx2)/(3.0*mum*mtx*bbx2*bbx2)));
1803        
1804   appam = f3appam*sqrt(2.0/3.0)*(bb2/(msq*msb*bbx2))*((-7.0*msd*msd*bx2*
1805           bx2*(1.0+(tau/7.0))/(8.0*mtb*bbx2*bbx2))+(5.0*msd*bx2*(1.0+
1806           (tau/5.0))/(4.0*bbx2))+(3.0*msd*msd*bx2*bx2/(8.0*mtb*bb2*bbx2))-
1807           (3.0*msd*bx2/(4.0*bb2)));
1808          
1809   apmam = f3apmam*sqrt(3.0/2.0)*(mtb/(msb*mtx))*(1.0-(bb2*(1.0+(tau/7.0))/
1810           bbx2)-(msd*bx2*(1.0-(5.0*bb2*(1.0+(tau/5.0))/(3.0*bbx2)))
1811           /(2.0*mtb*bbx2))-(7.0*msd*msd*bb2*bx2/(12.0*msq*mtb*bbx2*bbx2))*
1812           (1.0-(bx2/bbx2)+(bb2*tau/(7.0*bbx2))));
1813
1814   *appf = (appam + apmam) /2.0;
1815   *apmf = (appam - apmam) /2.0;
1816   return;
1817 } //get_ff_isgw_23s1
1818
1819 void EvtISGW2FF::EvtISGW2FF1P1 (EvtId parent,EvtId daugt,
1820        double t, double mass, double *rf, double *vf, 
1821        double *spf, double *smf ) {
1822   
1823   //added by Lange Jan4,2000
1824   static EvtId EM=EvtPDL::getId("e-");
1825   static EvtId EP=EvtPDL::getId("e+");
1826   static EvtId MUM=EvtPDL::getId("mu-");
1827   static EvtId MUP=EvtPDL::getId("mu+");
1828   static EvtId TAUM=EvtPDL::getId("tau-");
1829   static EvtId TAUP=EvtPDL::getId("tau+");
1830
1831   static EvtId BP=EvtPDL::getId("B+");
1832   static EvtId BM=EvtPDL::getId("B-");
1833   static EvtId B0=EvtPDL::getId("B0");
1834   static EvtId B0B=EvtPDL::getId("anti-B0");
1835
1836   static EvtId DST0=EvtPDL::getId("D*0");
1837   static EvtId DSTB=EvtPDL::getId("anti-D*0");
1838   static EvtId DSTP=EvtPDL::getId("D*+");
1839   static EvtId DSTM=EvtPDL::getId("D*-");
1840   static EvtId D0=EvtPDL::getId("D0");
1841   static EvtId D0B=EvtPDL::getId("anti-D0");
1842   static EvtId DP=EvtPDL::getId("D+");
1843   static EvtId DM=EvtPDL::getId("D-");
1844
1845   static EvtId D1P1P=EvtPDL::getId("D_1+");
1846   static EvtId D1P1N=EvtPDL::getId("D_1-");
1847   static EvtId D1P10=EvtPDL::getId("D_10");
1848   static EvtId D1P1B=EvtPDL::getId("anti-D_10");
1849
1850   static EvtId D3P2P=EvtPDL::getId("D_2*+");
1851   static EvtId D3P2N=EvtPDL::getId("D_2*-");
1852   static EvtId D3P20=EvtPDL::getId("D_2*0");
1853   static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
1854
1855   static EvtId D3P1P=EvtPDL::getId("D'_1+");
1856   static EvtId D3P1N=EvtPDL::getId("D'_1-");
1857   static EvtId D3P10=EvtPDL::getId("D'_10");
1858   static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
1859
1860   static EvtId D3P0P=EvtPDL::getId("D_0*+");
1861   static EvtId D3P0N=EvtPDL::getId("D_0*-");
1862   static EvtId D3P00=EvtPDL::getId("D_0*0");
1863   static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
1864
1865   static EvtId D21S0P=EvtPDL::getId("D(2S)+");
1866   static EvtId D21S0N=EvtPDL::getId("D(2S)-");
1867   static EvtId D21S00=EvtPDL::getId("D(2S)0");
1868   static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
1869
1870   static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
1871   static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
1872   static EvtId D23S10=EvtPDL::getId("D*(2S)0");
1873   static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
1874
1875   static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
1876   static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
1877   static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
1878   static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
1879   static EvtId ETA2S=EvtPDL::getId("eta(2S)");
1880
1881   static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
1882   static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
1883   static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
1884
1885   static EvtId PIP=EvtPDL::getId("pi+");
1886   static EvtId PIM=EvtPDL::getId("pi-");
1887   static EvtId PI0=EvtPDL::getId("pi0");
1888
1889   static EvtId RHOP=EvtPDL::getId("rho+");
1890   static EvtId RHOM=EvtPDL::getId("rho-");
1891   static EvtId RHO0=EvtPDL::getId("rho0");
1892
1893   static EvtId A2P=EvtPDL::getId("a_2+");
1894   static EvtId A2M=EvtPDL::getId("a_2-");
1895   static EvtId A20=EvtPDL::getId("a_20");
1896
1897   static EvtId A1P=EvtPDL::getId("a_1+");
1898   static EvtId A1M=EvtPDL::getId("a_1-");
1899   static EvtId A10=EvtPDL::getId("a_10");
1900
1901   static EvtId A0P=EvtPDL::getId("a_0+");
1902   static EvtId A0M=EvtPDL::getId("a_0-");
1903   static EvtId A00=EvtPDL::getId("a_00");
1904
1905   static EvtId B1P=EvtPDL::getId("b_1+");
1906   static EvtId B1M=EvtPDL::getId("b_1-");
1907   static EvtId B10=EvtPDL::getId("b_10");
1908
1909   static EvtId H1=EvtPDL::getId("h_1");
1910   static EvtId H1PR=EvtPDL::getId("h'_1");
1911
1912   static EvtId F1=EvtPDL::getId("f_1");
1913   static EvtId F1PR=EvtPDL::getId("f'_1");
1914   static EvtId F0=EvtPDL::getId("f_0");
1915   static EvtId F0PR=EvtPDL::getId("f'_0");
1916   static EvtId F2=EvtPDL::getId("f_2");
1917   static EvtId F2PR=EvtPDL::getId("f'_2");
1918
1919   static EvtId ETA=EvtPDL::getId("eta");
1920   static EvtId ETAPR=EvtPDL::getId("eta'");
1921   static EvtId OMEG=EvtPDL::getId("omega");
1922
1923   static EvtId KP=EvtPDL::getId("K+");
1924   static EvtId KM=EvtPDL::getId("K-");
1925   static EvtId K0=EvtPDL::getId("K0");
1926   static EvtId KB=EvtPDL::getId("anti-K0");
1927   static EvtId K0S=EvtPDL::getId("K_S0");
1928   static EvtId K0L=EvtPDL::getId("K_L0");
1929
1930   static EvtId KSTP=EvtPDL::getId("K*+");
1931   static EvtId KSTM=EvtPDL::getId("K*-");
1932   static EvtId KST0=EvtPDL::getId("K*0");
1933   static EvtId KSTB=EvtPDL::getId("anti-K*0");
1934
1935   static EvtId K1P=EvtPDL::getId("K_1+");
1936   static EvtId K1M=EvtPDL::getId("K_1-");
1937   static EvtId K10=EvtPDL::getId("K_10");
1938   static EvtId K1B=EvtPDL::getId("anti-K_10");
1939
1940   static EvtId K1STP=EvtPDL::getId("K'_1+");
1941   static EvtId K1STM=EvtPDL::getId("K'_1-");
1942   static EvtId K1ST0=EvtPDL::getId("K'_10");
1943   static EvtId K1STB=EvtPDL::getId("anti-K'_10");
1944
1945   static EvtId K2STP=EvtPDL::getId("K_2*+");
1946   static EvtId K2STM=EvtPDL::getId("K_2*-");
1947   static EvtId K2ST0=EvtPDL::getId("K_2*0");
1948   static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
1949
1950   static EvtId K0STP=EvtPDL::getId("K_0*+");
1951   static EvtId K0STM=EvtPDL::getId("K_0*-");
1952   static EvtId K0ST0=EvtPDL::getId("K_0*0");
1953   static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
1954
1955   static EvtId PHI=EvtPDL::getId("phi");
1956   static EvtId DSP=EvtPDL::getId("D_s+");
1957   static EvtId DSM=EvtPDL::getId("D_s-");
1958
1959   static EvtId D1P1SP=EvtPDL::getId("D_s1+");
1960   static EvtId D1P1SN=EvtPDL::getId("D_s1-");
1961
1962   static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
1963   static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
1964
1965   static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
1966   static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
1967
1968   static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
1969   static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
1970
1971   static EvtId DSSTP=EvtPDL::getId("D_s*+");
1972   static EvtId DSSTM=EvtPDL::getId("D_s*-");
1973
1974   static EvtId BSB=EvtPDL::getId("anti-B_s0");
1975   static EvtId BS0=EvtPDL::getId("B_s0");
1976
1977   double mtb, mbb(0.0);
1978   double msd(0.0), mx,mb,nf,nfp(0.0); 
1979   double msq(0.0),bx2(0.0),mbx(0.0),mtx,f5;
1980   double f5sppsm,f5spmsm;
1981   double f5v,f5r,mup,mum,vv,rr,spmsm,sppsm;
1982   double mqm,msb(0.0),bb2(0.0),bbx2,tm,wt,r2;
1983   EvtId prnt=parent;
1984   EvtId dgt=daugt;
1985   if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
1986     msb=5.2;
1987     msd=0.33;
1988     bb2=0.431*0.431;
1989     mbb=5.31;
1990     nf = 4.0;
1991     if (dgt==B10||dgt==B1P||dgt==B1M||dgt==H1||dgt==H1PR) {
1992       msq=0.33;
1993       bx2=0.275*0.275;
1994       mbx=(3.0*1.123+0.98+5.0*1.32+3.0*1.26)/12.0;
1995       nfp = 0.0;
1996     }
1997     else{
1998       if (dgt==D1P1P||dgt==D1P10||dgt==D1P1B||dgt==D1P1N) {
1999         msq=1.82;
2000         bx2=0.33*0.33;
2001         mbx=(5.0*2.46+3.0*2.42)/8.0;
2002         nfp = 3.0;
2003       }
2004       else{
2005         report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_1P1.\n";
2006       }
2007     }
2008   }
2009   else{
2010     if (prnt==DM||prnt==DP||prnt==D0B||prnt==D0) {
2011       msb=1.82;
2012       msd=0.33;
2013       bb2=0.45*0.45;
2014       mbb=1.963;
2015       nf = 3.0;
2016       if (dgt==B10||dgt==B1P||dgt==B1M||dgt==H1||dgt==H1PR) {
2017         msq=0.33;
2018         bx2=0.275*0.275;
2019         mbx=(3.0*1.123+0.98+5.0*1.32+3.0*1.26)/12.0;
2020         nfp = 0.0;
2021       }
2022       else{
2023         if (dgt==K10||dgt==K1B||dgt==K1P||dgt==K1M) {
2024           msq=0.55;
2025           bx2=0.30*0.30;
2026           mbx=(3.0*1.27+1.43+5.0*1.43+3.0*1.4)/12.0;
2027           nfp = 2.0;
2028         }
2029         else{
2030           report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_1P1.\n";
2031         }
2032       }
2033     }
2034     else{
2035       //BS -> cs constants added by djl on Jan. 21,1998
2036       if (prnt==BS0||prnt==BSB){
2037
2038         msb=5.2;
2039         msd=0.55;
2040         bb2=0.54*0.54;
2041         mbb=5.38;
2042         nf = 4.0;
2043     
2044         if  (dgt==D1P1SP||dgt==D1P1SN) {
2045       
2046           msq=1.82;
2047           bx2=0.41*0.41;
2048           mbx=(5.0*2.61+3.0*2.54)/8.0;
2049           nfp = 3.0;
2050         }
2051         else if (dgt==K10||dgt==K1B||dgt==K1P||dgt==K1M) {
2052           msq=0.55;
2053           bx2=0.30*0.30;
2054           mbx=(3.0*1.27+1.43+5.0*1.43+3.0*1.4)/12.0;
2055           nfp = 2.0;
2056         }
2057         else{
2058             report(ERROR,"EvtGen") << "Not implemented daugt:"
2059                          <<daugt.getId()<<" in get_isgw_ff_1S0.\n";
2060         }
2061       }
2062     
2063     else{
2064       report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_1P1.\n";
2065     }
2066     }
2067   }
2068
2069
2070   mtb = msb + msd;
2071   mtx = msq + msd;
2072   
2073   mb = EvtPDL::getMeanMass( parent );
2074   mx = mass;
2075   
2076   mup=1.0/(1.0/msq+1.0/msb);
2077   mum=1.0/(1.0/msq-1.0/msb);
2078   bbx2=0.5*(bb2+bx2);
2079   tm=(mb-mx)*(mb-mx);
2080   if (t>tm) t = 0.99*tm;
2081   wt=1.0+(tm-t)/(2.0*mbb*mbx);
2082   
2083   mqm = 0.1;
2084   r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2)+
2085     (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
2086     log(EvtGetas(mqm,mqm)/EvtGetas(msq,msq));
2087   
2088   f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0) /
2089     (pow((1.0+r2*(tm-t)/18.0),3.0));
2090   
2091   f5v = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
2092   f5r = f5*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),0.5);
2093   f5sppsm = f5*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),0.5);
2094   f5spmsm = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
2095   
2096   if (msq == msd) { 
2097     vv = f5v*(((mtb*sqrt(bb2))/(4.0*sqrt(2.0)*msb*msq*mtx)) +
2098               (((wt-1)*msd)/(6.0*sqrt(2.0*bb2)*mtx)));
2099     
2100     rr = f5r*mtb*sqrt(bb2/2)*((1.0/mup)+((msd*mtx*(wt-1)*(wt-1))/
2101                                  (3.0*msq*bb2)));
2102     
2103     sppsm = msd*f5sppsm/(sqrt(2.0*bb2)*mtb)*(1.0-(msd/msq)+((msd*bb2)/
2104                                     (2.0*mup*bbx2)));
2105     
2106     spmsm = msd*f5spmsm/(sqrt(2.0*bb2)*msq)*(((4-wt)/3.0)- ( (msd*msq*bb2)/
2107                                      (2.0*mtx*mup*bbx2)));
2108     
2109   } else {
2110     vv = -1.0*msd*f5v/(2.0*sqrt(3.0*bb2)*mtx)*
2111       ((wt+1)/2.0+bb2*mtb/(2.0*msd*msq*msb));
2112     
2113     rr = -2.0*mtb*sqrt(bb2/3.0)*f5r*(1.0/msq + mtx*msd*(wt-1)/(2.0*bb2)*
2114                      ((wt+1)/(2.0*msq)-msd*bb2/(2.0*mum*mtx*bbx2)));
2115     
2116     sppsm = -1.0*sqrt(3.0)*msd*f5sppsm/(2.0*sqrt(bb2)*mtb)*(1 - msd/(3.0*msq) -
2117                             msd*bb2/(3.0*bbx2)*(1.0/(2.0*mum)-1.0/mup));
2118     
2119     spmsm = -1.0*msd*f5spmsm/(2.0*sqrt(3.0*bb2)*mtx)*((2-wt)*mtx/msq +
2120                            msd*bb2/bbx2*(1.0/(2.0*mum)-1.0/mup));        
2121
2122   }
2123
2124   //smooth out the mass(meson) dependence a little
2125   double parMass=EvtPDL::getMeanMass(prnt);
2126   double q2max = parMass*parMass + mass*mass - 2.0*parMass*mass;
2127   double massNom= EvtPDL::getMeanMass(dgt);
2128   double q2maxNom = parMass*parMass + massNom*massNom - 2.0*parMass*massNom;
2129   double q2maxin=sqrt(q2maxNom/q2max);
2130   if ( q2maxin > 1000. ) q2maxin=1000.;
2131
2132   vv*=q2maxin;
2133   rr*=q2maxin;
2134   sppsm*=q2maxin;
2135   spmsm*=q2maxin;
2136
2137   *vf = vv;
2138   *rf = rr;
2139   *spf = (sppsm + spmsm)/2.0;
2140   *smf = (sppsm - spmsm)/2.0;
2141   return;
2142 } //get_ff_isgw_1p1
2143
2144
2145 void EvtISGW2FF::EvtISGW2FF3P1 (EvtId parent,EvtId daugt, 
2146        double t, double mass, double *lf, double *qf, 
2147        double *cpf, double *cmf ) {
2148
2149   //added by Lange Jan4,2000
2150   static EvtId EM=EvtPDL::getId("e-");
2151   static EvtId EP=EvtPDL::getId("e+");
2152   static EvtId MUM=EvtPDL::getId("mu-");
2153   static EvtId MUP=EvtPDL::getId("mu+");
2154   static EvtId TAUM=EvtPDL::getId("tau-");
2155   static EvtId TAUP=EvtPDL::getId("tau+");
2156
2157   static EvtId BP=EvtPDL::getId("B+");
2158   static EvtId BM=EvtPDL::getId("B-");
2159   static EvtId B0=EvtPDL::getId("B0");
2160   static EvtId B0B=EvtPDL::getId("anti-B0");
2161
2162   static EvtId DST0=EvtPDL::getId("D*0");
2163   static EvtId DSTB=EvtPDL::getId("anti-D*0");
2164   static EvtId DSTP=EvtPDL::getId("D*+");
2165   static EvtId DSTM=EvtPDL::getId("D*-");
2166   static EvtId D0=EvtPDL::getId("D0");
2167   static EvtId D0B=EvtPDL::getId("anti-D0");
2168   static EvtId DP=EvtPDL::getId("D+");
2169   static EvtId DM=EvtPDL::getId("D-");
2170
2171   static EvtId D1P1P=EvtPDL::getId("D_1+");
2172   static EvtId D1P1N=EvtPDL::getId("D_1-");
2173   static EvtId D1P10=EvtPDL::getId("D_10");
2174   static EvtId D1P1B=EvtPDL::getId("anti-D_10");
2175
2176   static EvtId D3P2P=EvtPDL::getId("D_2*+");
2177   static EvtId D3P2N=EvtPDL::getId("D_2*-");
2178   static EvtId D3P20=EvtPDL::getId("D_2*0");
2179   static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
2180
2181   static EvtId D3P1P=EvtPDL::getId("D'_1+");
2182   static EvtId D3P1N=EvtPDL::getId("D'_1-");
2183   static EvtId D3P10=EvtPDL::getId("D'_10");
2184   static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
2185
2186   static EvtId D3P0P=EvtPDL::getId("D_0*+");
2187   static EvtId D3P0N=EvtPDL::getId("D_0*-");
2188   static EvtId D3P00=EvtPDL::getId("D_0*0");
2189   static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
2190
2191   static EvtId D21S0P=EvtPDL::getId("D(2S)+");
2192   static EvtId D21S0N=EvtPDL::getId("D(2S)-");
2193   static EvtId D21S00=EvtPDL::getId("D(2S)0");
2194   static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
2195
2196   static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
2197   static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
2198   static EvtId D23S10=EvtPDL::getId("D*(2S)0");
2199   static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
2200
2201   static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
2202   static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
2203   static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
2204   static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
2205   static EvtId ETA2S=EvtPDL::getId("eta(2S)");
2206
2207   static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
2208   static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
2209   static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
2210
2211   static EvtId PIP=EvtPDL::getId("pi+");
2212   static EvtId PIM=EvtPDL::getId("pi-");
2213   static EvtId PI0=EvtPDL::getId("pi0");
2214
2215   static EvtId RHOP=EvtPDL::getId("rho+");
2216   static EvtId RHOM=EvtPDL::getId("rho-");
2217   static EvtId RHO0=EvtPDL::getId("rho0");
2218
2219   static EvtId A2P=EvtPDL::getId("a_2+");
2220   static EvtId A2M=EvtPDL::getId("a_2-");
2221   static EvtId A20=EvtPDL::getId("a_20");
2222
2223   static EvtId A1P=EvtPDL::getId("a_1+");
2224   static EvtId A1M=EvtPDL::getId("a_1-");
2225   static EvtId A10=EvtPDL::getId("a_10");
2226
2227   static EvtId A0P=EvtPDL::getId("a_0+");
2228   static EvtId A0M=EvtPDL::getId("a_0-");
2229   static EvtId A00=EvtPDL::getId("a_00");
2230
2231   static EvtId B1P=EvtPDL::getId("b_1+");
2232   static EvtId B1M=EvtPDL::getId("b_1-");
2233   static EvtId B10=EvtPDL::getId("b_10");
2234
2235   static EvtId H1=EvtPDL::getId("h_1");
2236   static EvtId H1PR=EvtPDL::getId("h'_1");
2237
2238   static EvtId F1=EvtPDL::getId("f_1");
2239   static EvtId F1PR=EvtPDL::getId("f'_1");
2240   static EvtId F0=EvtPDL::getId("f_0");
2241   static EvtId F0PR=EvtPDL::getId("f'_0");
2242   static EvtId F2=EvtPDL::getId("f_2");
2243   static EvtId F2PR=EvtPDL::getId("f'_2");
2244
2245   static EvtId ETA=EvtPDL::getId("eta");
2246   static EvtId ETAPR=EvtPDL::getId("eta'");
2247   static EvtId OMEG=EvtPDL::getId("omega");
2248
2249   static EvtId KP=EvtPDL::getId("K+");
2250   static EvtId KM=EvtPDL::getId("K-");
2251   static EvtId K0=EvtPDL::getId("K0");
2252   static EvtId KB=EvtPDL::getId("anti-K0");
2253   static EvtId K0S=EvtPDL::getId("K_S0");
2254   static EvtId K0L=EvtPDL::getId("K_L0");
2255
2256   static EvtId KSTP=EvtPDL::getId("K*+");
2257   static EvtId KSTM=EvtPDL::getId("K*-");
2258   static EvtId KST0=EvtPDL::getId("K*0");
2259   static EvtId KSTB=EvtPDL::getId("anti-K*0");
2260
2261   static EvtId K1P=EvtPDL::getId("K_1+");
2262   static EvtId K1M=EvtPDL::getId("K_1-");
2263   static EvtId K10=EvtPDL::getId("K_10");
2264   static EvtId K1B=EvtPDL::getId("anti-K_10");
2265
2266   static EvtId K1STP=EvtPDL::getId("K'_1+");
2267   static EvtId K1STM=EvtPDL::getId("K'_1-");
2268   static EvtId K1ST0=EvtPDL::getId("K'_10");
2269   static EvtId K1STB=EvtPDL::getId("anti-K'_10");
2270
2271   static EvtId K2STP=EvtPDL::getId("K_2*+");
2272   static EvtId K2STM=EvtPDL::getId("K_2*-");
2273   static EvtId K2ST0=EvtPDL::getId("K_2*0");
2274   static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
2275
2276   static EvtId K0STP=EvtPDL::getId("K_0*+");
2277   static EvtId K0STM=EvtPDL::getId("K_0*-");
2278   static EvtId K0ST0=EvtPDL::getId("K_0*0");
2279   static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
2280
2281   static EvtId PHI=EvtPDL::getId("phi");
2282   static EvtId DSP=EvtPDL::getId("D_s+");
2283   static EvtId DSM=EvtPDL::getId("D_s-");
2284
2285   static EvtId D1P1SP=EvtPDL::getId("D_s1+");
2286   static EvtId D1P1SN=EvtPDL::getId("D_s1-");
2287
2288   static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
2289   static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
2290
2291   static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
2292   static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
2293
2294   static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
2295   static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
2296   static EvtId DSSTP=EvtPDL::getId("D_s*+");
2297   static EvtId DSSTM=EvtPDL::getId("D_s*-");
2298
2299   static EvtId BSB=EvtPDL::getId("anti-B_s0");
2300   static EvtId BS0=EvtPDL::getId("B_s0");
2301
2302   double mtb,  mbb(0.0);
2303   double msd(0.0), mx,mb,nf,nfp(0.0); 
2304   double msq(0.0),bx2(0.0),mbx(0.0),mtx;
2305   double f5cppcm,f5cpmcm,f5,ql,ll,cppcm,cpmcm,f5q,f5l;
2306   double mqm,msb(0.0),bb2(0.0),mup,mum,bbx2,tm,wt,r2;
2307   EvtId prnt=parent;
2308   EvtId dgt=daugt;
2309
2310   if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
2311
2312     msb=5.2;
2313     msd=0.33;
2314     bb2=0.431*0.431;
2315     mbb=5.31;
2316     nf = 4.0;
2317
2318     if (dgt==A10||dgt==A1P||dgt==A1M||dgt==F1||dgt==F1PR) {
2319
2320       msq=0.33;
2321       bx2=0.275*0.275;
2322       mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
2323       nfp = 0.0;
2324     }
2325     else{
2326       if (dgt==D3P1P||dgt==D3P1N||dgt==D3P10||dgt==D3P1B) {
2327         msq=1.82;
2328         bx2=0.33*0.33;
2329         mbx=(3.0*2.49+2.40)/4.0;
2330         nfp = 3.0;
2331       }
2332       else{
2333         report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3P1.\n";
2334       }
2335     }
2336   }
2337   else{
2338     if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
2339     
2340       msb=1.82;
2341       msd=0.33;
2342       bb2=0.45*0.45;
2343       mbb=1.963;
2344       nf = 3.0;
2345
2346       if (dgt==F1||dgt==F1PR||dgt==A10||dgt==A1P||dgt==A1M) {
2347
2348         msq=0.33;
2349         bx2=0.275*0.275;
2350         mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
2351         nfp = 0.0;
2352       }
2353       else{
2354         if (dgt==K1STM||dgt==K1STB||dgt==K1STP||dgt==K1ST0) {
2355           msq=0.55;
2356           bx2=0.30*0.30;
2357           mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
2358           nfp = 2.0;
2359         }
2360         else{
2361           report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_3P1.\n";
2362         }
2363       }
2364     }
2365     else{
2366       //BS -> cs constants added by djl on Jan. 21,1998
2367       if (prnt==BS0||prnt==BSB){
2368
2369         msb=5.2;
2370         msd=0.55;
2371         bb2=0.54*0.54;
2372         mbb=5.38;
2373         nf = 4.0;
2374     
2375         if  (dgt==D3P1SP||dgt==D3P1SN) {
2376       
2377           msq=1.82;
2378           bx2=0.41*0.41;
2379           mbx=(3.0*2.54+2.46)/4.0;
2380           nfp = 3.0;
2381         }
2382         else if (dgt==K1STM||dgt==K1STB||dgt==K1STP||dgt==K1ST0) {
2383           msq=0.55;
2384           bx2=0.30*0.30;
2385           mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
2386           nfp = 2.0;
2387         }
2388         else{
2389             report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
2390           }
2391         }
2392     
2393     else{
2394       report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P1.\n";
2395     }
2396     }
2397   }
2398
2399
2400   
2401   mtb = msb + msd;
2402   mtx = msq + msd;
2403   
2404   mb = EvtPDL::getMeanMass( parent );
2405   mx = mass;
2406   
2407   mup=1.0/(1.0/msq+1.0/msb);
2408   mum=1.0/(1.0/msq-1.0/msb);
2409   bbx2=0.5*(bb2+bx2);
2410   tm=(mb-mx)*(mb-mx);
2411   if (t>tm) t = 0.99*tm;
2412   wt=1.0+(tm-t)/(2.0*mbb*mbx);
2413   
2414   mqm = 0.1;
2415   r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
2416     (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
2417     log(EvtGetas(mqm)/EvtGetas(msq));
2418   
2419   f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0) /
2420     (pow((1.0+r2*(tm-t)/18.0),3.0));
2421
2422   f5q = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
2423   f5l = f5*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),0.5);
2424   f5cppcm = f5*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),0.5);
2425   f5cpmcm = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),-0.5);
2426   
2427   if (msq == msd) { 
2428     
2429     ql = -1.0*(msd*(5.0+wt)*f5q/(2.0*mtx*sqrt(bb2)*6.0));
2430   
2431     ll = -1.0*mtb*sqrt(bb2)*f5l*(1/mum+ ( (msd*mtx*(wt-1)/bb2)*
2432          ( (5.0+wt)/(6.0*msq)-(msd*bb2)/(2.0*mum*mtx*bbx2))));
2433     
2434     cppcm = (-1.0*(msd*mtx*f5cppcm/(2.0*msq*mtb*sqrt(bb2)))*
2435             (1-(msd*msq*bb2)/(2.0*mtx*mum*bbx2)));
2436     
2437     cpmcm = 1.0*(msd*mtx*f5cpmcm/(2.0*msq*mtb*sqrt(bb2)))*
2438             (((wt+2.0)/3.0)-(msd*msq*bb2)/(2.0*mtx*mum*bbx2))
2439             *(mtb/mtx);
2440   } else {
2441
2442     ql = f5q*sqrt(1.0/6.0)*msd/(sqrt(bb2)*mtx)*
2443         (1.0-bb2*mtb/(4.0*msd*msq*msb));
2444     ll = f5l*sqrt(2.0/3.0)*mtb*sqrt(bb2)*(1.0/(2.0*msq) - 3.0/(2.0*msb) +
2445          msd*mtx*(wt-1)/bb2*(1.0/msq-msd*bb2/(2.0*mum*mtx*bbx2)));  
2446     cppcm = msd*msd*bx2*f5cppcm/(sqrt(6.0)*mtb*msq*sqrt(bb2)*bbx2);
2447     cpmcm = -sqrt(2.0/3.0)*msd*f5cpmcm/(sqrt(bb2)*mtx)*
2448       (1+msd*bx2/(2.0*msq*bbx2));
2449   }
2450
2451   //smooth out the mass(meson) dependence a little
2452   double parMass=EvtPDL::getMeanMass(prnt);
2453   double q2max = parMass*parMass + mass*mass - 2.0*parMass*mass;
2454   double massNom= EvtPDL::getMeanMass(dgt);
2455   double q2maxNom = parMass*parMass + massNom*massNom - 2.0*parMass*massNom;
2456   double q2maxin=sqrt(q2maxNom/q2max);
2457   if ( q2maxin > 1000. ) q2maxin=1000.;
2458   ql*=q2maxin;
2459   ll*=q2maxin;
2460   cppcm*=q2maxin;
2461   cpmcm*=q2maxin;
2462
2463   *qf = ql;
2464   *lf = ll;
2465   *cpf = (cppcm + cpmcm)/2.0;
2466   *cmf = (cppcm - cpmcm)/2.0;
2467   return;
2468 } //get_ff_isgw_3p1
2469
2470
2471 void EvtISGW2FF::EvtISGW2FF3P0 (EvtId parent,EvtId daugt,
2472        double t, double mass, double *upf, double *umf ) {
2473
2474   //added by Lange Jan4,2000
2475   static EvtId EM=EvtPDL::getId("e-");
2476   static EvtId EP=EvtPDL::getId("e+");
2477   static EvtId MUM=EvtPDL::getId("mu-");
2478   static EvtId MUP=EvtPDL::getId("mu+");
2479   static EvtId TAUM=EvtPDL::getId("tau-");
2480   static EvtId TAUP=EvtPDL::getId("tau+");
2481
2482   static EvtId BP=EvtPDL::getId("B+");
2483   static EvtId BM=EvtPDL::getId("B-");
2484   static EvtId B0=EvtPDL::getId("B0");
2485   static EvtId B0B=EvtPDL::getId("anti-B0");
2486
2487   static EvtId DST0=EvtPDL::getId("D*0");
2488   static EvtId DSTB=EvtPDL::getId("anti-D*0");
2489   static EvtId DSTP=EvtPDL::getId("D*+");
2490   static EvtId DSTM=EvtPDL::getId("D*-");
2491   static EvtId D0=EvtPDL::getId("D0");
2492   static EvtId D0B=EvtPDL::getId("anti-D0");
2493   static EvtId DP=EvtPDL::getId("D+");
2494   static EvtId DM=EvtPDL::getId("D-");
2495
2496   static EvtId D1P1P=EvtPDL::getId("D_1+");
2497   static EvtId D1P1N=EvtPDL::getId("D_1-");
2498   static EvtId D1P10=EvtPDL::getId("D_10");
2499   static EvtId D1P1B=EvtPDL::getId("anti-D_10");
2500
2501   static EvtId D3P2P=EvtPDL::getId("D_2*+");
2502   static EvtId D3P2N=EvtPDL::getId("D_2*-");
2503   static EvtId D3P20=EvtPDL::getId("D_2*0");
2504   static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
2505
2506   static EvtId D3P1P=EvtPDL::getId("D'_1+");
2507   static EvtId D3P1N=EvtPDL::getId("D'_1-");
2508   static EvtId D3P10=EvtPDL::getId("D'_10");
2509   static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
2510
2511   static EvtId D3P0P=EvtPDL::getId("D_0*+");
2512   static EvtId D3P0N=EvtPDL::getId("D_0*-");
2513   static EvtId D3P00=EvtPDL::getId("D_0*0");
2514   static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
2515
2516   static EvtId D21S0P=EvtPDL::getId("D(2S)+");
2517   static EvtId D21S0N=EvtPDL::getId("D(2S)-");
2518   static EvtId D21S00=EvtPDL::getId("D(2S)0");
2519   static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
2520
2521   static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
2522   static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
2523   static EvtId D23S10=EvtPDL::getId("D*(2S)0");
2524   static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
2525
2526   static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
2527   static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
2528   static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
2529   static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
2530   static EvtId ETA2S=EvtPDL::getId("eta(2S)");
2531
2532   static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
2533   static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
2534   static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
2535
2536   static EvtId PIP=EvtPDL::getId("pi+");
2537   static EvtId PIM=EvtPDL::getId("pi-");
2538   static EvtId PI0=EvtPDL::getId("pi0");
2539
2540   static EvtId RHOP=EvtPDL::getId("rho+");
2541   static EvtId RHOM=EvtPDL::getId("rho-");
2542   static EvtId RHO0=EvtPDL::getId("rho0");
2543
2544   static EvtId A2P=EvtPDL::getId("a_2+");
2545   static EvtId A2M=EvtPDL::getId("a_2-");
2546   static EvtId A20=EvtPDL::getId("a_20");
2547
2548   static EvtId A1P=EvtPDL::getId("a_1+");
2549   static EvtId A1M=EvtPDL::getId("a_1-");
2550   static EvtId A10=EvtPDL::getId("a_10");
2551
2552   static EvtId A0P=EvtPDL::getId("a_0+");
2553   static EvtId A0M=EvtPDL::getId("a_0-");
2554   static EvtId A00=EvtPDL::getId("a_00");
2555
2556   static EvtId B1P=EvtPDL::getId("b_1+");
2557   static EvtId B1M=EvtPDL::getId("b_1-");
2558   static EvtId B10=EvtPDL::getId("b_10");
2559
2560   static EvtId H1=EvtPDL::getId("h_1");
2561   static EvtId H1PR=EvtPDL::getId("h'_1");
2562
2563   static EvtId F1=EvtPDL::getId("f_1");
2564   static EvtId F1PR=EvtPDL::getId("f'_1");
2565   static EvtId F0=EvtPDL::getId("f_0");
2566   static EvtId F0PR=EvtPDL::getId("f'_0");
2567   static EvtId F2=EvtPDL::getId("f_2");
2568   static EvtId F2PR=EvtPDL::getId("f'_2");
2569
2570   static EvtId ETA=EvtPDL::getId("eta");
2571   static EvtId ETAPR=EvtPDL::getId("eta'");
2572   static EvtId OMEG=EvtPDL::getId("omega");
2573
2574   static EvtId KP=EvtPDL::getId("K+");
2575   static EvtId KM=EvtPDL::getId("K-");
2576   static EvtId K0=EvtPDL::getId("K0");
2577   static EvtId KB=EvtPDL::getId("anti-K0");
2578   static EvtId K0S=EvtPDL::getId("K_S0");
2579   static EvtId K0L=EvtPDL::getId("K_L0");
2580
2581   static EvtId KSTP=EvtPDL::getId("K*+");
2582   static EvtId KSTM=EvtPDL::getId("K*-");
2583   static EvtId KST0=EvtPDL::getId("K*0");
2584   static EvtId KSTB=EvtPDL::getId("anti-K*0");
2585
2586   static EvtId K1P=EvtPDL::getId("K_1+");
2587   static EvtId K1M=EvtPDL::getId("K_1-");
2588   static EvtId K10=EvtPDL::getId("K_10");
2589   static EvtId K1B=EvtPDL::getId("anti-K_10");
2590
2591   static EvtId K1STP=EvtPDL::getId("K'_1+");
2592   static EvtId K1STM=EvtPDL::getId("K'_1-");
2593   static EvtId K1ST0=EvtPDL::getId("K'_10");
2594   static EvtId K1STB=EvtPDL::getId("anti-K'_10");
2595
2596   static EvtId K2STP=EvtPDL::getId("K_2*+");
2597   static EvtId K2STM=EvtPDL::getId("K_2*-");
2598   static EvtId K2ST0=EvtPDL::getId("K_2*0");
2599   static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
2600
2601   static EvtId K0STP=EvtPDL::getId("K_0*+");
2602   static EvtId K0STM=EvtPDL::getId("K_0*-");
2603   static EvtId K0ST0=EvtPDL::getId("K_0*0");
2604   static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
2605
2606   static EvtId PHI=EvtPDL::getId("phi");
2607   static EvtId DSP=EvtPDL::getId("D_s+");
2608   static EvtId DSM=EvtPDL::getId("D_s-");
2609
2610   static EvtId D1P1SP=EvtPDL::getId("D_s1+");
2611   static EvtId D1P1SN=EvtPDL::getId("D_s1-");
2612
2613   static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
2614   static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
2615
2616   static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
2617   static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
2618
2619   static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
2620   static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
2621
2622   static EvtId DSSTP=EvtPDL::getId("D_s*+");
2623   static EvtId DSSTM=EvtPDL::getId("D_s*-");
2624
2625   static EvtId BSB=EvtPDL::getId("anti-B_s0");
2626   static EvtId BS0=EvtPDL::getId("B_s0");
2627
2628   double mtb, mbb(0.0);
2629   double msd(0.0), mx,mb,nf,nfp(0.0); 
2630   double msq(0.0),bx2(0.0),mbx(0.0),mtx;
2631   double f5uppum,f5upmum,uppum,upmum,f5;
2632   double mqm,mum,mup,wt,r2,bb2(0.0),bbx2,msb(0.0),tm;
2633
2634   EvtId prnt=parent;
2635   EvtId dgt=daugt;
2636
2637   if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
2638       
2639     msb=5.2;
2640     msd=0.33;
2641     bb2=0.431*0.431;
2642     mbb=5.31;
2643     nf = 4.0;
2644     if (dgt==A00||dgt==A0P||dgt==A0M||dgt==F0||dgt==F0PR) {
2645
2646       msq=0.33;
2647       bx2=0.275*0.275;
2648       mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
2649       nfp = 0.0;
2650     }
2651     else{
2652       if (dgt==D3P0P||dgt==D3P0N||dgt==D3P00||dgt==D3P0B) {
2653         msq=1.82;
2654         bx2=0.33*0.33;
2655         mbx=(3.0*2.49+2.40)/4.0;
2656         nfp = 3.0;
2657       }
2658       else{
2659         report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
2660       }
2661     }
2662   }
2663   else{
2664     if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
2665
2666       msb=1.82;
2667       msd=0.33;
2668       bb2=0.45*0.45;
2669       mbb=1.963;
2670       nf = 3.0;
2671       if (dgt==F0||dgt==F0PR||dgt==A00||dgt==A0P||dgt==A0M) {
2672         msq=0.33;
2673         bx2=0.275*0.275;
2674         mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
2675         nfp = 0.0;
2676       }
2677       else{
2678         if (dgt==K0STM||dgt==K0STB||dgt==K0STP||dgt==K0ST0) {
2679           msq=0.55;
2680           bx2=0.30*0.30;
2681           mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
2682           nfp = 2.0;
2683         }
2684         else{
2685           report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
2686         }
2687       }
2688     }
2689     else{
2690       if (prnt==DSP||prnt==DSM){
2691         msb=1.82;
2692         msd=0.55;
2693         bb2=0.56*0.56;
2694         mbb=1.968;
2695         nf = 3.0;
2696         
2697         if (dgt==F0||dgt==F0PR||dgt==A00||dgt==A0P||dgt==A0M) {
2698           msq=0.55;
2699           bx2=0.33*0.33;
2700           mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
2701           nfp = 2.0;
2702         }
2703         else{
2704           if (dgt==K0STM||dgt==K0STB||dgt==K0STP||dgt==K0ST0) {
2705             msq=0.33;
2706             bx2=0.30*0.30;
2707             mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
2708             nfp = 0.0;
2709           }
2710           else{
2711             report(ERROR,"EvtGen") << "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
2712           }
2713         }
2714       }
2715       else{
2716         //BS -> cs constants added by djl on Jan. 21,1998
2717         if (prnt==BS0||prnt==BSB){
2718
2719           msb=5.2;
2720           msd=0.55;
2721           bb2=0.54*0.54;
2722           mbb=5.38;
2723           nf = 4.0;
2724           
2725           if  (dgt==D3P0SP||dgt==D3P0SN) {
2726             
2727             msq=1.82;
2728             bx2=0.41*0.41;
2729             mbx=(3.0*2.54+2.46)/4.0;
2730             nfp = 3.0;
2731           }
2732           else if (dgt==K0STM||dgt==K0STB||dgt==K0STP||dgt==K0ST0) {
2733             msq=0.55;
2734             bx2=0.30*0.30;
2735             mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
2736             nfp = 2.0;
2737           }
2738           else{
2739             report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
2740           }
2741         }
2742         else{
2743           report(ERROR,"EvtGen") << "Not implemented parent in get_EvtISGW2_ff_3P0.\n";
2744         }
2745       }
2746     }
2747   }
2748   
2749
2750   mtb = msb + msd;
2751   mtx = msq + msd;
2752   
2753   mb = EvtPDL::getMeanMass( parent );
2754   mx = mass;
2755
2756   mup=1.0/(1.0/msq+1.0/msb);
2757   mum=1.0/(1.0/msq-1.0/msb);
2758   bbx2=0.5*(bb2+bx2);
2759   tm=(mb-mx)*(mb-mx);
2760   if (t>tm) t = 0.99*tm;
2761   wt=1.0+(tm-t)/(2.0*mbb*mbx);
2762   
2763   mqm = 0.1;
2764   r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2) + 
2765      (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
2766      log(EvtGetas(mqm)/EvtGetas(msq));
2767
2768   f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0) /
2769        (pow((1.0+r2*(tm-t)/18.0),3.0));
2770
2771   f5uppum = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),0.5);
2772   f5upmum = f5*pow(( mbb / mtb ),0.5)*pow((mbx/mtx),-0.5);
2773
2774   uppum = -1.0*f5uppum*sqrt(2.0/(3.0*bb2))*msd;
2775   upmum = 1.0*f5upmum*sqrt(2.0/(3.0*bb2))*msd*mtb/mtx;
2776
2777   *upf = (uppum + upmum)/2.0;
2778   *umf = (uppum - upmum)/2.0;
2779
2780   return;
2781
2782 }
2783
2784
2785 void EvtISGW2FF::EvtISGW2FF3P2 (EvtId parent,EvtId daugt,
2786        double t, double mass, double *hf, double *kf, 
2787        double *bpf, double *bmf ) {
2788   
2789   //added by Lange Jan4,2000
2790   static EvtId EM=EvtPDL::getId("e-");
2791   static EvtId EP=EvtPDL::getId("e+");
2792   static EvtId MUM=EvtPDL::getId("mu-");
2793   static EvtId MUP=EvtPDL::getId("mu+");
2794   static EvtId TAUM=EvtPDL::getId("tau-");
2795   static EvtId TAUP=EvtPDL::getId("tau+");
2796
2797   static EvtId BP=EvtPDL::getId("B+");
2798   static EvtId BM=EvtPDL::getId("B-");
2799   static EvtId B0=EvtPDL::getId("B0");
2800   static EvtId B0B=EvtPDL::getId("anti-B0");
2801
2802   static EvtId DST0=EvtPDL::getId("D*0");
2803   static EvtId DSTB=EvtPDL::getId("anti-D*0");
2804   static EvtId DSTP=EvtPDL::getId("D*+");
2805   static EvtId DSTM=EvtPDL::getId("D*-");
2806   static EvtId D0=EvtPDL::getId("D0");
2807   static EvtId D0B=EvtPDL::getId("anti-D0");
2808   static EvtId DP=EvtPDL::getId("D+");
2809   static EvtId DM=EvtPDL::getId("D-");
2810
2811   static EvtId D1P1P=EvtPDL::getId("D_1+");
2812   static EvtId D1P1N=EvtPDL::getId("D_1-");
2813   static EvtId D1P10=EvtPDL::getId("D_10");
2814   static EvtId D1P1B=EvtPDL::getId("anti-D_10");
2815
2816   static EvtId D3P2P=EvtPDL::getId("D_2*+");
2817   static EvtId D3P2N=EvtPDL::getId("D_2*-");
2818   static EvtId D3P20=EvtPDL::getId("D_2*0");
2819   static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
2820
2821   static EvtId D3P1P=EvtPDL::getId("D'_1+");
2822   static EvtId D3P1N=EvtPDL::getId("D'_1-");
2823   static EvtId D3P10=EvtPDL::getId("D'_10");
2824   static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
2825
2826   static EvtId D3P0P=EvtPDL::getId("D_0*+");
2827   static EvtId D3P0N=EvtPDL::getId("D_0*-");
2828   static EvtId D3P00=EvtPDL::getId("D_0*0");
2829   static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
2830
2831   static EvtId D21S0P=EvtPDL::getId("D(2S)+");
2832   static EvtId D21S0N=EvtPDL::getId("D(2S)-");
2833   static EvtId D21S00=EvtPDL::getId("D(2S)0");
2834   static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
2835
2836   static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
2837   static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
2838   static EvtId D23S10=EvtPDL::getId("D*(2S)0");
2839   static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
2840
2841
2842   static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
2843   static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
2844   static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
2845   static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
2846   static EvtId ETA2S=EvtPDL::getId("eta(2S)");
2847
2848   static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
2849   static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
2850   static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
2851
2852   static EvtId PIP=EvtPDL::getId("pi+");
2853   static EvtId PIM=EvtPDL::getId("pi-");
2854   static EvtId PI0=EvtPDL::getId("pi0");
2855
2856   static EvtId RHOP=EvtPDL::getId("rho+");
2857   static EvtId RHOM=EvtPDL::getId("rho-");
2858   static EvtId RHO0=EvtPDL::getId("rho0");
2859
2860   static EvtId A2P=EvtPDL::getId("a_2+");
2861   static EvtId A2M=EvtPDL::getId("a_2-");
2862   static EvtId A20=EvtPDL::getId("a_20");
2863
2864   static EvtId A1P=EvtPDL::getId("a_1+");
2865   static EvtId A1M=EvtPDL::getId("a_1-");
2866   static EvtId A10=EvtPDL::getId("a_10");
2867
2868   static EvtId A0P=EvtPDL::getId("a_0+");
2869   static EvtId A0M=EvtPDL::getId("a_0-");
2870   static EvtId A00=EvtPDL::getId("a_00");
2871
2872   static EvtId B1P=EvtPDL::getId("b_1+");
2873   static EvtId B1M=EvtPDL::getId("b_1-");
2874   static EvtId B10=EvtPDL::getId("b_10");
2875
2876   static EvtId H1=EvtPDL::getId("h_1");
2877   static EvtId H1PR=EvtPDL::getId("h'_1");
2878
2879   static EvtId F1=EvtPDL::getId("f_1");
2880   static EvtId F1PR=EvtPDL::getId("f'_1");
2881   static EvtId F0=EvtPDL::getId("f_0");
2882   static EvtId F0PR=EvtPDL::getId("f'_0");
2883   static EvtId F2=EvtPDL::getId("f_2");
2884   static EvtId F2PR=EvtPDL::getId("f'_2");
2885
2886   static EvtId ETA=EvtPDL::getId("eta");
2887   static EvtId ETAPR=EvtPDL::getId("eta'");
2888   static EvtId OMEG=EvtPDL::getId("omega");
2889
2890   static EvtId KP=EvtPDL::getId("K+");
2891   static EvtId KM=EvtPDL::getId("K-");
2892   static EvtId K0=EvtPDL::getId("K0");
2893   static EvtId KB=EvtPDL::getId("anti-K0");
2894   static EvtId K0S=EvtPDL::getId("K_S0");
2895   static EvtId K0L=EvtPDL::getId("K_L0");
2896
2897   static EvtId KSTP=EvtPDL::getId("K*+");
2898   static EvtId KSTM=EvtPDL::getId("K*-");
2899   static EvtId KST0=EvtPDL::getId("K*0");
2900   static EvtId KSTB=EvtPDL::getId("anti-K*0");
2901
2902   static EvtId K1P=EvtPDL::getId("K_1+");
2903   static EvtId K1M=EvtPDL::getId("K_1-");
2904   static EvtId K10=EvtPDL::getId("K_10");
2905   static EvtId K1B=EvtPDL::getId("anti-K_10");
2906
2907   static EvtId K1STP=EvtPDL::getId("K'_1+");
2908   static EvtId K1STM=EvtPDL::getId("K'_1-");
2909   static EvtId K1ST0=EvtPDL::getId("K'_10");
2910   static EvtId K1STB=EvtPDL::getId("anti-K'_10");
2911
2912   static EvtId K2STP=EvtPDL::getId("K_2*+");
2913   static EvtId K2STM=EvtPDL::getId("K_2*-");
2914   static EvtId K2ST0=EvtPDL::getId("K_2*0");
2915   static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
2916
2917   static EvtId K0STP=EvtPDL::getId("K_0*+");
2918   static EvtId K0STM=EvtPDL::getId("K_0*-");
2919   static EvtId K0ST0=EvtPDL::getId("K_0*0");
2920   static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
2921
2922   static EvtId PHI=EvtPDL::getId("phi");
2923   static EvtId DSP=EvtPDL::getId("D_s+");
2924   static EvtId DSM=EvtPDL::getId("D_s-");
2925
2926   static EvtId D1P1SP=EvtPDL::getId("D_s1+");
2927   static EvtId D1P1SN=EvtPDL::getId("D_s1-");
2928
2929   static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
2930   static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
2931
2932   static EvtId D3P1SP=EvtPDL::getId("D'_s1+");
2933   static EvtId D3P1SN=EvtPDL::getId("D'_s1-");
2934
2935   static EvtId D3P2SP=EvtPDL::getId("D_s2*+");
2936   static EvtId D3P2SN=EvtPDL::getId("D_s2*-");
2937
2938   static EvtId DSSTP=EvtPDL::getId("D_s*+");
2939   static EvtId DSSTM=EvtPDL::getId("D_s*-");
2940
2941   static EvtId BSB=EvtPDL::getId("anti-B_s0");
2942   static EvtId BS0=EvtPDL::getId("B_s0");
2943
2944
2945   double mtb, mbb(0.0);
2946   double msd(0.0), mx,mb,nf,nfp(0.0); 
2947   double msq(0.0),bx2(0.0),mbx(0.0),mtx,f5;
2948   double f5h,f5k,f5bppbm,f5bpmbm,bppbm,bpmbm;
2949   double mqm,mum,mup,tm,wt,r2,bb2(0.0),bbx2;
2950   double msb(0.0);
2951   EvtId prnt=parent;
2952   EvtId dgt=daugt;
2953
2954   if (prnt==B0||prnt==B0B||prnt==BP||prnt==BM) {
2955     
2956     msb=5.2;
2957     msd=0.33;
2958     bb2=0.431*0.431;
2959     mbb=5.31;
2960     nf = 4.0;
2961
2962     if (dgt==A20||dgt==A2P||dgt==A2M||dgt==F2||dgt==F2PR) {
2963
2964       msq=0.33;
2965       bx2=0.275*0.275;
2966       mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
2967       nfp = 0.0;
2968
2969     }
2970
2971     else{
2972       if (dgt==D3P2P||dgt==D3P2N||dgt==D3P20||dgt==D3P2B) {
2973
2974         msq=1.82;
2975         bx2=0.33*0.33;
2976         mbx=(5.0*2.46+3.0*2.42)/8.0;
2977         nfp = 3.0;
2978       }
2979       else{
2980
2981         report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P2.\n";
2982       }
2983     }
2984   }
2985   else{
2986     if (prnt==D0||prnt==D0B||prnt==DP||prnt==DM) {
2987       
2988       msb=1.82;
2989       msd=0.33;
2990       bb2=0.45*0.45;
2991       mbb=1.963;
2992       nf = 3.0;
2993       if (dgt==F2||dgt==F2PR||dgt==A20||dgt==A2P||dgt==A2M) {
2994         msq=0.33;
2995         bx2=0.275*0.275;
2996         mbx=(3.0*1.23+0.98+5.0*1.32+3.0*1.26)/12.0;
2997         nfp = 0.0;
2998       }
2999       else{
3000         if (dgt==K2STM||dgt==K2STB||dgt==K2STP||dgt==K2ST0) {
3001           msq=0.55;
3002           bx2=0.30*0.30;
3003           mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
3004           nfp = 2.0;
3005         }
3006         else{
3007           report(ERROR,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P2.\n";
3008         }
3009       }
3010     }
3011     else{
3012       //BS -> cs constants added by djl on Jan. 21,1998
3013       if (prnt==BS0||prnt==BSB){
3014
3015         msb=5.2;
3016         msd=0.55;
3017         bb2=0.54*0.54;
3018         mbb=5.38;
3019         nf = 4.0;
3020     
3021         if  (dgt==D3P2SP||dgt==D3P2SN) {
3022       
3023           msq=1.82;
3024           bx2=0.41*0.41;
3025           mbx=(5.0*2.61+3.0*2.54)/8.0;
3026           nfp = 3.0;
3027         }
3028         else if (dgt==K2STM||dgt==K2STB||dgt==K2STP||dgt==K2ST0) {
3029           msq=0.55;
3030           bx2=0.30*0.30;
3031           mbx=(3.0*1.40+1.43+5.0*1.43+3.0*1.27)/12.0;
3032           nfp = 2.0;
3033         }
3034         else{
3035             report(ERROR,"EvtGen") << "Not implemented daugt:"<<daugt.getId()<<" in get_isgw_ff_1S0.\n";
3036           }
3037       }
3038     
3039     else{
3040       report(ERROR,"EvtGen") << "Not implemented parent in get_isgw_ff_3P2.\n";
3041     }
3042     }
3043   }
3044   mtb = msb + msd;
3045   mtx = msq + msd;
3046   
3047   mb = EvtPDL::getMeanMass( parent );
3048   mx = mass;
3049   mup=1.0/(1.0/msq+1.0/msb);
3050   mum=1.0/(1.0/msq-1.0/msb);
3051   bbx2=0.5*(bb2+bx2);
3052   tm=(mb-mx)*(mb-mx);
3053   if (t>tm) t = 0.99*tm;
3054   wt=1.0+(tm-t)/(2.0*mbb*mbx);
3055   
3056   mqm = 0.1;
3057   r2=3.0/(4.0*msb*msq)+3*msd*msd/(2*mbb*mbx*bbx2)+
3058     (16.0/(mbb*mbx*(33.0-2.0*nfp)))*
3059     log(EvtGetas(mqm)/EvtGetas(msq));
3060
3061   f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0) /
3062        (pow((1.0+r2*(tm-t)/18.0),3.0));
3063   
3064   f5h = f5*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),-0.5);
3065   f5k = f5*pow(( mbb / mtb ),-0.5)*pow((mbx/mtx),0.5);
3066   f5bppbm = f5*pow(( mbb / mtb ),-2.5)*pow((mbx/mtx),0.5);
3067   f5bpmbm = f5*pow(( mbb / mtb ),-1.5)*pow((mbx/mtx),-0.5);
3068   
3069   *hf = f5h*(msd/(sqrt(8.0*bb2)*mtb))*((1.0/msq)-(msd*bb2/(2.0*mum*
3070         mtx*bbx2)));
3071   
3072   *kf = f5k*(msd/(sqrt(2.0*bb2)))*(1.0+wt);
3073   
3074   bppbm = ((msd*msd*f5bppbm*bx2)/(sqrt(32.0*bb2)*msq*msb*mtb*bbx2))*
3075           (1.0-(msd*bx2/(2.0*mtb*bbx2)));
3076
3077   bpmbm = -1.0*(msd*f5bpmbm/(sqrt(2.0*bb2)*msb*mtx))*(1.0-
3078           ((msd*msb*bx2)/(2.0*mup*mtb*bbx2))+((msd*bx2*(1.0-
3079           ((msd*bx2)/(2.0*mtb*bbx2))))/(4.0*msq*bbx2)));
3080
3081   *bpf = (bppbm + bpmbm)/2.0;
3082   *bmf = (bppbm - bpmbm)/2.0;
3083   return;
3084 } //get_ff_isgw_1p1
3085
3086
3087 double EvtISGW2FF::EvtGetGammaji ( double z )
3088
3089 {
3090 double temp;
3091
3092    temp = 2+((2.0*z)/(1-z))*log(z);
3093    temp = -1.0*temp;
3094
3095    return temp;
3096
3097 } //EvtGetGammaji
3098
3099
3100
3101 double EvtISGW2FF::EvtGetas ( double massq, double massx )
3102 {
3103   double lqcd2 = 0.04;
3104   double nflav = 4;
3105   double temp = 0.6;
3106   
3107   if ( massx > 0.6 ) {
3108     if ( massq < 1.85 ) {
3109       nflav = 3.0;}
3110     
3111     temp = 12.0*EvtConst::pi / ( 33.0 - 2.0*nflav) /
3112       log( massx*massx/lqcd2);
3113   }
3114   return temp;
3115   
3116 } //EvtGetas
3117
3118 double EvtISGW2FF::EvtGetas ( double mass )
3119      
3120 {
3121   double lqcd2 = 0.04;
3122   double nflav = 4;
3123   double temp = 0.6;
3124   
3125   if ( mass > 0.6 ) {
3126     if ( mass < 1.85 ) {
3127       nflav = 3.0;}
3128     
3129     temp = 12.0*EvtConst::pi / ( 33.0 - 2.0*nflav) /
3130       log( mass*mass/lqcd2);
3131   }
3132   return temp;
3133   
3134 } //EvtGetas
3135
3136
3137 void EvtISGW2FF::getbaryonff(EvtId, EvtId, double, double, double*, 
3138                              double*, double*, double*){
3139   
3140   report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtISGW2FF.\n";  
3141
3142   ::abort();
3143
3144 }
3145