Line data Source code
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: EvtISGWFF.cc
12 : //
13 : // Description: Routine to implement semileptonic form factors
14 : // according to the model ISGW
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/EvtISGWFF.hh"
26 : #include "EvtGenBase/EvtPDL.hh"
27 : #include "EvtGenBase/EvtId.hh"
28 : #include <string>
29 : #include <math.h>
30 : #include <stdlib.h>
31 : using std::endl;
32 :
33 : void EvtISGWFF::getscalarff(EvtId parent,EvtId daught,
34 : double t, double mass, double *fpf,
35 : double *f0f ) {
36 :
37 : //added by Lange Jan4,2000
38 0 : static EvtId D0=EvtPDL::getId("D0");
39 0 : static EvtId D0B=EvtPDL::getId("anti-D0");
40 0 : static EvtId DP=EvtPDL::getId("D+");
41 0 : static EvtId DM=EvtPDL::getId("D-");
42 :
43 0 : static EvtId D3P0P=EvtPDL::getId("D_0*+");
44 0 : static EvtId D3P0N=EvtPDL::getId("D_0*-");
45 0 : static EvtId D3P00=EvtPDL::getId("D_0*0");
46 0 : static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
47 :
48 0 : static EvtId D21S0P=EvtPDL::getId("hi");
49 0 : static EvtId D21S0N=EvtPDL::getId("hi");
50 0 : static EvtId D21S00=EvtPDL::getId("hi");
51 0 : static EvtId D21S0B=EvtPDL::getId("hi");
52 :
53 0 : static EvtId ETA2S=EvtPDL::getId("eta(2S)");
54 :
55 0 : static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
56 0 : static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
57 0 : static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
58 :
59 0 : static EvtId PIP=EvtPDL::getId("pi+");
60 0 : static EvtId PIM=EvtPDL::getId("pi-");
61 0 : static EvtId PI0=EvtPDL::getId("pi0");
62 :
63 0 : static EvtId A0P=EvtPDL::getId("a_0+");
64 0 : static EvtId A0M=EvtPDL::getId("a_0-");
65 0 : static EvtId A00=EvtPDL::getId("a_00");
66 :
67 0 : static EvtId F0=EvtPDL::getId("f_0");
68 0 : static EvtId F0PR=EvtPDL::getId("f'_0");
69 :
70 0 : static EvtId ETA=EvtPDL::getId("eta");
71 0 : static EvtId ETAPR=EvtPDL::getId("eta'");
72 :
73 0 : static EvtId KP=EvtPDL::getId("K+");
74 0 : static EvtId KM=EvtPDL::getId("K-");
75 0 : static EvtId K0=EvtPDL::getId("K0");
76 0 : static EvtId KB=EvtPDL::getId("anti-K0");
77 0 : static EvtId K0S=EvtPDL::getId("K_S0");
78 0 : static EvtId K0L=EvtPDL::getId("K_L0");
79 :
80 0 : static EvtId K0STP=EvtPDL::getId("K_0*+");
81 0 : static EvtId K0STM=EvtPDL::getId("K_0*-");
82 0 : static EvtId K0ST0=EvtPDL::getId("K_0*0");
83 0 : static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
84 :
85 0 : static EvtId DSP=EvtPDL::getId("D_s+");
86 0 : static EvtId DSM=EvtPDL::getId("D_s-");
87 :
88 0 : static EvtId D3P0SP=EvtPDL::getId("D_s0*+");
89 0 : static EvtId D3P0SN=EvtPDL::getId("D_s0*-");
90 :
91 0 : double fmf;
92 0 : double mb=EvtPDL::getMeanMass(parent);
93 :
94 0 : if (daught==PI0||daught==PIP||daught==PIM||daught==ETA||
95 0 : daught==ETAPR||daught==D0||daught==D0B||daught==DP||
96 0 : daught==DM||daught==KP||daught==KM||daught==K0||daught==K0L||
97 0 : daught==KB||daught==DSP||daught==DSM||daught==K0S) {
98 :
99 0 : EvtISGW1FF1S0(parent,daught,t,mass,fpf,&fmf);
100 0 : }
101 :
102 0 : if (daught==PI2S0||daught==PI2SP||daught==PI2SM||daught==ETA2S||
103 0 : daught==D21S0P||daught==D21S0B||daught==D21S0N||daught==D21S00){
104 0 : EvtISGW1FF21S0(parent,daught,t,mass,fpf,&fmf);
105 0 : }
106 :
107 0 : if (daught==A00||daught==A0P||daught==A0M||daught==F0||
108 0 : daught==F0PR||daught==D3P0P||daught==D3P00||daught==D3P0B||
109 0 : daught==D3P0N||daught==K0STM||daught==K0STB||daught==K0STP||
110 0 : daught==D3P0SP||daught==D3P0SN||
111 0 : daught==K0ST0) {
112 0 : EvtISGW1FF3P0(parent,daught,t,mass,fpf,&fmf);
113 0 : }
114 :
115 0 : *f0f = (fmf/((mb*mb-mass*mass)/t))+(*fpf);
116 :
117 : return ;
118 0 : }
119 :
120 : void EvtISGWFF::gettensorff(EvtId parent,EvtId daught,
121 : double t, double mass, double *hf,
122 : double *kf, double *bpf, double *bmf ){
123 :
124 : //added by Lange Jan4,2000
125 0 : EvtISGW1FF3P2(parent,daught,t,mass,hf,kf,bpf,bmf);
126 :
127 0 : return;
128 :
129 : }
130 :
131 :
132 : void EvtISGWFF::getvectorff(EvtId parent,EvtId daught,
133 : double t, double mass, double *a1f,
134 : double *a2f, double *vf, double *a0f ){
135 :
136 : //added by Lange Jan4,2000
137 0 : static EvtId DST0=EvtPDL::getId("D*0");
138 0 : static EvtId DSTB=EvtPDL::getId("anti-D*0");
139 0 : static EvtId DSTP=EvtPDL::getId("D*+");
140 0 : static EvtId DSTM=EvtPDL::getId("D*-");
141 :
142 0 : static EvtId D1P1P=EvtPDL::getId("D_1+");
143 0 : static EvtId D1P1N=EvtPDL::getId("D_1-");
144 0 : static EvtId D1P10=EvtPDL::getId("D_10");
145 0 : static EvtId D1P1B=EvtPDL::getId("anti-D_10");
146 :
147 0 : static EvtId D3P1P=EvtPDL::getId("D'_1+");
148 0 : static EvtId D3P1N=EvtPDL::getId("D'_1-");
149 0 : static EvtId D3P10=EvtPDL::getId("D'_10");
150 0 : static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
151 :
152 0 : static EvtId D23S1P=EvtPDL::getId("hi");
153 0 : static EvtId D23S1N=EvtPDL::getId("hi");
154 0 : static EvtId D23S10=EvtPDL::getId("hi");
155 0 : static EvtId D23S1B=EvtPDL::getId("hi");
156 :
157 0 : static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
158 0 : static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
159 0 : static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
160 0 : static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
161 :
162 0 : static EvtId RHOP=EvtPDL::getId("rho+");
163 0 : static EvtId RHOM=EvtPDL::getId("rho-");
164 0 : static EvtId RHO0=EvtPDL::getId("rho0");
165 :
166 0 : static EvtId A1P=EvtPDL::getId("a_1+");
167 0 : static EvtId A1M=EvtPDL::getId("a_1-");
168 0 : static EvtId A10=EvtPDL::getId("a_10");
169 :
170 0 : static EvtId B1P=EvtPDL::getId("b_1+");
171 0 : static EvtId B1M=EvtPDL::getId("b_1-");
172 0 : static EvtId B10=EvtPDL::getId("b_10");
173 :
174 0 : static EvtId H1=EvtPDL::getId("h_1");
175 0 : static EvtId H1PR=EvtPDL::getId("h'_1");
176 :
177 0 : static EvtId F1=EvtPDL::getId("f_1");
178 0 : static EvtId F1PR=EvtPDL::getId("f'_1");
179 :
180 0 : static EvtId OMEG=EvtPDL::getId("omega");
181 :
182 0 : static EvtId KSTP=EvtPDL::getId("K*+");
183 0 : static EvtId KSTM=EvtPDL::getId("K*-");
184 0 : static EvtId KST0=EvtPDL::getId("K*0");
185 0 : static EvtId KSTB=EvtPDL::getId("anti-K*0");
186 :
187 0 : static EvtId K1P=EvtPDL::getId("K_1+");
188 0 : static EvtId K1M=EvtPDL::getId("K_1-");
189 0 : static EvtId K10=EvtPDL::getId("K_10");
190 0 : static EvtId K1B=EvtPDL::getId("anti-K_10");
191 :
192 0 : static EvtId K1STP=EvtPDL::getId("K'_1+");
193 0 : static EvtId K1STM=EvtPDL::getId("K'_1-");
194 0 : static EvtId K1ST0=EvtPDL::getId("K'_10");
195 0 : static EvtId K1STB=EvtPDL::getId("anti-K'_10");
196 :
197 0 : static EvtId PHI=EvtPDL::getId("phi");
198 :
199 0 : static EvtId D1P1SP=EvtPDL::getId("D_s1+");
200 0 : static EvtId D1P1SN=EvtPDL::getId("D_s1-");
201 :
202 0 : static EvtId D3P1SP=EvtPDL::getId("D'_s1*+");
203 0 : static EvtId D3P1SN=EvtPDL::getId("D'_s1*-");
204 :
205 0 : static EvtId DSSTP=EvtPDL::getId("D_s*+");
206 0 : static EvtId DSSTM=EvtPDL::getId("D_s*-");
207 :
208 0 : double ff,gf,apf,amf;
209 :
210 0 : if (daught==DST0||daught==DSTP||daught==DSTM||daught==DSTB||
211 0 : daught==OMEG||daught==RHO0||daught==RHOM||daught==RHOP||
212 0 : daught==KSTP||daught==KSTM||daught==KST0||daught==KSTB||
213 0 : daught==PHI||daught==DSSTP||daught==DSSTM) {
214 0 : EvtISGW1FF3S1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
215 0 : }
216 0 : if (daught==B10||daught==B1P||daught==B1M||daught==H1||
217 0 : daught==H1PR||daught==D1P1P||daught==D1P10||daught==D1P1B||
218 0 : daught==D1P1SP||daught==D1P1SN||
219 0 : daught==D1P1N||daught==K10||daught==K1B||daught==K1P||
220 0 : daught==K1M) {
221 0 : EvtISGW1FF1P1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
222 0 : }
223 0 : if (daught==RHO2S0||daught==RHO2SP||daught==RHO2SM||daught==OMEG2S||
224 0 : daught==D23S1P||daught==D23S1B||daught==D23S1N||daught==D23S10){
225 0 : EvtISGW1FF23S1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
226 0 : }
227 0 : if (daught==A10||daught==A1P||daught==A1M||daught==F1||
228 0 : daught==F1PR||daught==D3P1P||daught==D3P10||daught==D3P1B||
229 0 : daught==D3P1N||daught==K1STM||daught==K1STB||daught==K1STP||
230 0 : daught==D3P1SP||daught==D3P1SN||
231 0 : daught==K1ST0) {
232 0 : EvtISGW1FF3P1(parent,daught,t,mass,&ff,&gf,&apf,&amf);
233 0 : }
234 :
235 : // Need to stuff in some factors to make these the ffs that
236 : // is used elsewhere...
237 :
238 0 : double mb=EvtPDL::getMeanMass(parent);
239 :
240 :
241 0 : *vf = (gf)*(mb+mass);
242 0 : *a1f = (ff)/(mb+mass);
243 0 : *a2f = -1.0*(apf)*(mb+mass);
244 0 : double a3f = ((mb+mass)/(2.0*mass))*(*a1f) -
245 0 : ((mb-mass)/(2.0*mass))*(*a2f);
246 :
247 0 : *a0f = a3f - ( (t*amf)/(2.0*mass));
248 :
249 : return;
250 0 : }
251 :
252 : void EvtISGWFF::EvtISGW1FF3P2 (EvtId parent,EvtId daugt,
253 : double t, double mass,
254 : double *hf, double *kf, double *bpf, double *bmf ) {
255 :
256 : //added by Lange Jan4,2000
257 0 : static EvtId BP=EvtPDL::getId("B+");
258 0 : static EvtId BM=EvtPDL::getId("B-");
259 0 : static EvtId B0=EvtPDL::getId("B0");
260 0 : static EvtId B0B=EvtPDL::getId("anti-B0");
261 :
262 0 : static EvtId D3P2P=EvtPDL::getId("D_2*+");
263 0 : static EvtId D3P2N=EvtPDL::getId("D_2*-");
264 0 : static EvtId D3P20=EvtPDL::getId("D_2*0");
265 0 : static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
266 :
267 0 : static EvtId A2P=EvtPDL::getId("a_2+");
268 0 : static EvtId A2M=EvtPDL::getId("a_2-");
269 0 : static EvtId A20=EvtPDL::getId("a_20");
270 :
271 0 : static EvtId F2=EvtPDL::getId("f_2");
272 0 : static EvtId F2PR=EvtPDL::getId("f'_2");
273 :
274 : double mtb;
275 : double msd(0.0), mx(0.0), mb(0.0);
276 : double msq(0.0), bx2(0.0),mtx,f5;
277 : double mum,mup,tm,bb2(0.0),bbx2;
278 : double msb(0.0), kap;
279 :
280 0 : if (parent==BM||parent==BP||parent==B0||parent==B0B) {
281 : msb=5.2;
282 : msd=0.33;
283 : bb2=0.41*0.41;
284 0 : if (daugt==A20||daugt==A2P||daugt==A2M||daugt==F2||daugt==F2PR) {
285 : msq=0.33;
286 : bx2=0.27*0.27;
287 0 : }
288 : else{
289 0 : if (daugt==D3P2P||daugt==D3P2N||daugt==D3P2B||daugt==D3P20) {
290 : msq=1.82;
291 : bx2=0.34*0.34;
292 0 : }
293 : else{
294 0 : report(Severity::Error,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P1.\n";
295 : }
296 : }
297 : }
298 : else{
299 0 : report(Severity::Error,"EvtGen") << "Not implemented parent in get_isgw_ff_3P1.\n";
300 : }
301 :
302 0 : mtb = msb + msd;
303 0 : mtx = msq + msd;
304 :
305 0 : mb = EvtPDL::getMeanMass( parent );
306 : mx = mass;
307 :
308 0 : mup=1.0/(1.0/msq+1.0/msb);
309 0 : mum=1.0/(1.0/msq-1.0/msb);
310 0 : bbx2=0.5*(bb2+bx2);
311 :
312 0 : tm=(mb-mx)*(mb-mx);
313 0 : if (t>tm) t = 0.99*tm;
314 : kap = 0.7*0.7;
315 :
316 0 : f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
317 0 : exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
318 :
319 0 : *hf = f5*(msd/(sqrt(8.0*bb2)*mtb))*((1.0/msq)-(msd*bb2/(2.0*mum*
320 0 : mtx*bbx2)));
321 :
322 0 : *kf = f5*msd*sqrt(2.0/bb2);
323 :
324 0 : *bpf = (-1.0*f5*msd/(sqrt(8.0*bb2)*msb*mtx))*(1.0-(msd*msb*bx2/(
325 0 : 2.0*mup*mtb*bbx2))+(msd*msb*bx2*(1.0-(msd*bx2/(2.0*mtb*bbx2)))/
326 0 : (4.0*mtb*mum*bbx2)));
327 0 : *bmf = 0.0;
328 : return;
329 0 : } //get_ff_isgw_1p1
330 :
331 : void EvtISGWFF::EvtISGW1FF1S0 ( EvtId parent, EvtId daugt,
332 : double t, double mass, double *fpf, double *fmf ) {
333 :
334 : //added by Lange Jan4,2000
335 0 : static EvtId BP=EvtPDL::getId("B+");
336 0 : static EvtId BM=EvtPDL::getId("B-");
337 0 : static EvtId B0=EvtPDL::getId("B0");
338 0 : static EvtId B0B=EvtPDL::getId("anti-B0");
339 :
340 0 : static EvtId D0=EvtPDL::getId("D0");
341 0 : static EvtId D0B=EvtPDL::getId("anti-D0");
342 0 : static EvtId DP=EvtPDL::getId("D+");
343 0 : static EvtId DM=EvtPDL::getId("D-");
344 :
345 0 : static EvtId PIP=EvtPDL::getId("pi+");
346 0 : static EvtId PIM=EvtPDL::getId("pi-");
347 0 : static EvtId PI0=EvtPDL::getId("pi0");
348 :
349 0 : static EvtId ETA=EvtPDL::getId("eta");
350 0 : static EvtId ETAPR=EvtPDL::getId("eta'");
351 :
352 : double mtb;
353 : double msd(0.0), mx(0.0), mb(0.0);
354 : double msq(0.0), bx2(0.0),mtx;
355 : double f3,kap;
356 : double msb(0.0),bb2(0.0),mup,mum,bbx2,tm;
357 :
358 0 : if (parent==BM||parent==BP||parent==B0||parent==B0B) {
359 : msb=5.2;
360 : msd=0.33;
361 : bb2=0.41*0.41;
362 0 : if (daugt==PIP||daugt==PIM||daugt==PI0||daugt==ETA||daugt==ETAPR) {
363 : msq=0.33;
364 : bx2=0.31*0.31;
365 0 : }
366 : else{
367 0 : if (daugt==D0||daugt==DP||daugt==DM||daugt==D0B) {
368 : msq=1.82;
369 : bx2=0.39*0.39;
370 0 : }
371 : else{
372 0 : report(Severity::Error,"EvtGen") << "Not implemented daugt in get_isgw_ff_1S0.\n";
373 : }
374 : }
375 : }
376 : else{
377 0 : report(Severity::Error,"EvtGen") << "Not implemented parent in get_isgw_ff_1S0.\n";
378 0 : report(Severity::Error,"EvtGen") << "Parent:"<<parent.getId()<<endl;
379 : }
380 :
381 0 : mtb = msb + msd;
382 0 : mtx = msq + msd;
383 0 : mb = EvtPDL::getMeanMass( parent );
384 : mx = mass;
385 0 : mup=1.0/(1.0/msq+1.0/msb);
386 0 : mum=1.0/(1.0/msq-1.0/msb);
387 0 : bbx2=0.5*(bb2+bx2);
388 0 : tm=(mb-mx)*(mb-mx);
389 0 : if ( t>tm ) t=0.99*tm;
390 :
391 : kap = 0.7*0.7;
392 0 : f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0)*
393 0 : exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
394 :
395 0 : *fpf = f3*(1+(msb/(2.0*mum))-(msb*msq*msd*bb2/(4.0*mup*mum*mtx*bbx2)));
396 0 : *fmf = f3*(1.0-(mtb+mtx)*(0.5/msq-(msd*bb2/(4.0*mup*mtx*bbx2))));
397 :
398 : return;
399 0 : } //get_ff_isgw_1s0
400 :
401 :
402 :
403 : void EvtISGWFF::EvtISGW1FF3S1(EvtId parent,EvtId daugt,double t,
404 : double mass, double *f,double *g,double *ap,double *am){
405 :
406 : //added by Lange Jan4,2000
407 0 : static EvtId BP=EvtPDL::getId("B+");
408 0 : static EvtId BM=EvtPDL::getId("B-");
409 0 : static EvtId B0=EvtPDL::getId("B0");
410 0 : static EvtId B0B=EvtPDL::getId("anti-B0");
411 :
412 0 : static EvtId DST0=EvtPDL::getId("D*0");
413 0 : static EvtId DSTB=EvtPDL::getId("anti-D*0");
414 0 : static EvtId DSTP=EvtPDL::getId("D*+");
415 0 : static EvtId DSTM=EvtPDL::getId("D*-");
416 :
417 0 : static EvtId RHOP=EvtPDL::getId("rho+");
418 0 : static EvtId RHOM=EvtPDL::getId("rho-");
419 0 : static EvtId RHO0=EvtPDL::getId("rho0");
420 :
421 0 : static EvtId OMEG=EvtPDL::getId("omega");
422 :
423 : double msd(0.0),msq(0.0),bb2(0.0),mum,mtx,bbx2;
424 : double bx2(0.0),msb(0.0),tm;
425 : double mb,mx,f3, kap;
426 :
427 0 : if (parent==BM||parent==BP||parent==B0||parent==B0B) {
428 : msb=5.2;
429 : msd=0.33;
430 : bb2=0.41*0.41;
431 0 : if (daugt==DSTP||daugt==DSTM||daugt==DSTB||daugt==DST0) {
432 : msq=1.82;
433 : bx2=0.39*0.39;
434 0 : }
435 : else{
436 0 : if (daugt==RHOP||daugt==RHOM||daugt==RHO0||daugt==OMEG) {
437 : msq=0.33;
438 : bx2=0.31*0.31;
439 0 : }
440 : else{
441 0 : report(Severity::Error,"EvtGen") << "Not implemented daugt in get_isgw_ff_3S1.\n";
442 : }
443 : }
444 : }
445 : else{
446 0 : report(Severity::Error,"EvtGen") << "Not implemented parent in get_isgw_ff_3S1.\n";
447 : }
448 :
449 : double mtb;
450 :
451 0 : mtb=msb+msd;
452 0 : mtx=msq+msd;
453 :
454 0 : mum=1.0/(1.0/msq-1.0/msb);
455 0 : bbx2=0.5*(bb2+bx2);
456 0 : mb=EvtPDL::getMeanMass(parent);
457 : mx=mass;
458 0 : tm=(mb-mx)*(mb-mx);
459 0 : if ( t > tm ) t = 0.99*tm;
460 :
461 : kap = 0.7*0.7;
462 0 : f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0)*
463 0 : exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
464 :
465 0 : *f=2.0*mtb*f3;
466 0 : *g=0.5*f3*((1/msq)-(msd*bb2/(2.0*mum*mtx*bbx2)));
467 0 : *ap=(-1.0*f3/(2.0*mtx))*(1.0+(msd*(bb2-bx2)/(msb
468 0 : *(bb2+bx2)))-(msd*msd*bx2*bx2/(4.0*mum*mtb*bbx2*bbx2)));
469 0 : *am=0.0;
470 :
471 0 : }
472 :
473 : void EvtISGWFF::EvtISGW1FF23S1 (EvtId parent,EvtId daugt,
474 : double t, double mass, double *fpf, double *gpf,
475 : double *appf, double *apmf ) {
476 : //added by Lange Jan4,2000
477 0 : static EvtId BP=EvtPDL::getId("B+");
478 0 : static EvtId BM=EvtPDL::getId("B-");
479 0 : static EvtId B0=EvtPDL::getId("B0");
480 0 : static EvtId B0B=EvtPDL::getId("anti-B0");
481 :
482 0 : static EvtId D23S1P=EvtPDL::getId("hi");
483 0 : static EvtId D23S1N=EvtPDL::getId("hi");
484 0 : static EvtId D23S10=EvtPDL::getId("hi");
485 0 : static EvtId D23S1B=EvtPDL::getId("hi");
486 :
487 0 : static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
488 0 : static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
489 0 : static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
490 0 : static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
491 :
492 : double mtb;
493 : double msd(0.0), mx(0.0), mb(0.0);
494 : double msq(0.0), bx2(0.0),mtx;
495 : double f3,f5,tt;
496 : double mum,bb2(0.0),bbx2,tm,msb(0.0);
497 :
498 0 : if (parent==BM||parent==BP||parent==B0||parent==B0B) {
499 : msb=5.2;
500 : msd=0.33;
501 : bb2=0.41*0.41;
502 0 : if (daugt==RHO2SP||daugt==RHO2SM||daugt==RHO2S0||daugt==OMEG2S) {
503 : msq=0.33;
504 : bx2=0.31*0.31;
505 0 : }
506 : else{
507 0 : if (daugt==D23S1N||daugt==D23S10||daugt==D23S1P||daugt==D23S1B) {
508 : msq=1.82;
509 : bx2=0.39*0.39;
510 0 : }
511 : else{
512 0 : report(Severity::Error,"EvtGen") << "Not implemented daugt in get_isgw_ff_23P1.\n";
513 : }
514 : }
515 : }
516 : else{
517 0 : report(Severity::Error,"EvtGen") << "Not implemented parent in get_isgw_ff_23P1.\n";
518 : }
519 :
520 0 : mtb = msb + msd;
521 0 : mtx = msq + msd;
522 0 : mb = EvtPDL::getMeanMass( parent );
523 : mx = mass;
524 0 : mum=1.0/(1.0/msq-1.0/msb);
525 0 : bbx2=0.5*(bb2+bx2);
526 0 : tm=(mb-mx)*(mb-mx);
527 0 : if (t>tm) t = 0.99*tm;
528 :
529 : double kap = 0.7*0.7;
530 0 : f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0)*
531 0 : exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
532 :
533 0 : f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
534 : exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
535 :
536 0 : *fpf = sqrt(6.0)*f3*mtb*( ((bb2-bx2)/(bb2+bx2)) + ((msd*msd*bx2*
537 0 : (tm-t))/(6.0*mtx*mtb*bbx2*kap*bbx2)));
538 :
539 0 : *gpf = sqrt(3.0/8.0)*f3*( ((((bb2-bx2)/(bb2+bx2)) + ((msd*msd*bx2*
540 0 : (tm-t))/(6.0*mtx*mtb*bbx2*kap*bbx2)))*
541 0 : ((1.0/msq)-((msd*bb2)/(2.0*mum*mtx*bbx2)))) +
542 0 : ((msd*bb2*bx2)/(3.0*mum*mtx*bbx2*bbx2)));
543 :
544 0 : tt = (msd*msd*bx2*(tm-t))/(mtx*mtb*bb2*kap*bbx2);
545 :
546 0 : *appf = (f5/(sqrt(6.0)*mtx))* ( ((3.0*mtb*bbx2/(2.0*msb*sqrt(bb2*bx2)))*
547 0 : (1.0 - ( (msd*msd*msb*bx2*bx2)/(4.0*mtb*mtb*mum*bbx2*bbx2)))) -
548 0 : ( (3.0*msd*sqrt(bx2/bb2))/(2.0*msb)) +
549 0 : ( (5.0*msd*sqrt(bx2*bb2)*(1.0 + 0.1*tt))/(2.0*msb*bbx2)) -
550 0 : ( (3.0*mtb*sqrt(bb2/bx2)*(1.0 + (tt/6.0)))/(2.0*msb)) +
551 0 : ( (7.0*msd*msd*sqrt(bb2/bx2)*bx2*bx2*(1.0 + (tt/14.0))) /
552 0 : (8.0*mtb*mum*bbx2*bbx2)));
553 :
554 0 : *apmf = 0.0;
555 : return;
556 0 : } //get_ff_isgw_23s1
557 :
558 :
559 : void EvtISGWFF::EvtISGW1FF3P1 (EvtId parent,EvtId daugt,
560 : double t, double mass,
561 : double *lf, double *qf, double *cpf, double *cmf ) {
562 : //added by Lange Jan4,2000
563 0 : static EvtId BP=EvtPDL::getId("B+");
564 0 : static EvtId BM=EvtPDL::getId("B-");
565 0 : static EvtId B0=EvtPDL::getId("B0");
566 0 : static EvtId B0B=EvtPDL::getId("anti-B0");
567 :
568 0 : static EvtId D3P1P=EvtPDL::getId("D'_1+");
569 0 : static EvtId D3P1N=EvtPDL::getId("D'_1-");
570 0 : static EvtId D3P10=EvtPDL::getId("D'_10");
571 0 : static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
572 :
573 0 : static EvtId A1P=EvtPDL::getId("a_1+");
574 0 : static EvtId A1M=EvtPDL::getId("a_1-");
575 0 : static EvtId A10=EvtPDL::getId("a_10");
576 :
577 0 : static EvtId F1=EvtPDL::getId("f_1");
578 0 : static EvtId F1PR=EvtPDL::getId("f'_1");
579 :
580 : double mtb;
581 : double msd(0.0), mx(0.0), mb(0.0);
582 : double msq(0.0), bx2(0.0),mtx,f5;
583 : double msb(0.0),bb2(0.0),mum,bbx2,tm;
584 : double kap;
585 :
586 0 : if (parent==BM||parent==BP||parent==B0||parent==B0B) {
587 : msb=5.2;
588 : msd=0.33;
589 : bb2=0.41*0.41;
590 0 : if (daugt==A10||daugt==A1P||daugt==A1M||daugt==F1||daugt==F1PR) {
591 : msq=0.33;
592 : bx2=0.27*0.27;
593 0 : }
594 : else{
595 0 : if (daugt==D3P1P||daugt==D3P1N||daugt==D3P1B||daugt==D3P10) {
596 : msq=1.82;
597 : bx2=0.34*0.34;
598 0 : }
599 : else{
600 0 : report(Severity::Error,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P1.\n";
601 : }
602 : }
603 : }
604 : else{
605 0 : report(Severity::Error,"EvtGen") << "Not implemented parent in get_isgw_ff_3P1.\n";
606 : }
607 :
608 0 : mtb = msb + msd;
609 0 : mtx = msq + msd;
610 :
611 0 : mb = EvtPDL::getMeanMass( parent );
612 : mx = mass;
613 :
614 0 : mum=1.0/(1.0/msq-1.0/msb);
615 0 : bbx2=0.5*(bb2+bx2);
616 0 : tm=(mb-mx)*(mb-mx);
617 0 : if (t>tm) t = 0.99*tm;
618 :
619 : kap = 0.7*0.7;
620 0 : f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
621 0 : exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
622 :
623 0 : *qf = (f5*msd)/(2.0*mtx*sqrt(bb2));
624 :
625 0 : *lf = -1.0*mtb*sqrt(bb2)*f5*(1/mum+(msd*(tm-t)/(2.0*mtb*
626 0 : kap*bb2))*((1.0/msq)-(1.0*msd*bb2/(2.0*mum*mtx*bbx2))));
627 :
628 0 : *cpf = (f5*msd*msb/(4.0*mtb*sqrt(bb2)*mum))*(1.0-(msd*msq*bb2/(
629 0 : 2.0*mtx*mum*bbx2)));
630 0 : *cmf = 0.0;
631 : return;
632 0 : } //get_ff_isgw_3p1
633 :
634 :
635 :
636 : void EvtISGWFF::EvtISGW1FF3P0 (EvtId parent,EvtId daugt,
637 : double t, double mass, double *upf, double *umf ) {
638 : //added by Lange Jan4,2000
639 0 : static EvtId BP=EvtPDL::getId("B+");
640 0 : static EvtId BM=EvtPDL::getId("B-");
641 0 : static EvtId B0=EvtPDL::getId("B0");
642 0 : static EvtId B0B=EvtPDL::getId("anti-B0");
643 :
644 0 : static EvtId D3P0P=EvtPDL::getId("D_0*+");
645 0 : static EvtId D3P0N=EvtPDL::getId("D_0*-");
646 0 : static EvtId D3P00=EvtPDL::getId("D_0*0");
647 0 : static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
648 :
649 0 : static EvtId A0P=EvtPDL::getId("a_0+");
650 0 : static EvtId A0M=EvtPDL::getId("a_0-");
651 0 : static EvtId A00=EvtPDL::getId("a_00");
652 :
653 0 : static EvtId F0=EvtPDL::getId("f_0");
654 0 : static EvtId F0PR=EvtPDL::getId("f'_0");
655 :
656 : double mtb;
657 : double msd(0.0), mx(0.0), mb(0.0);
658 : double msq(0.0), bx2(0.0),mtx;
659 : double f5;
660 : double mum,bb2(0.0),bbx2,msb(0.0),tm;
661 :
662 0 : if (parent==BM||parent==BP||parent==B0||parent==B0B) {
663 : msb=5.2;
664 : msd=0.33;
665 : bb2=0.41*0.41;
666 0 : if (daugt==A00||daugt==A0P||daugt==A0M||daugt==F0||daugt==F0PR) {
667 : msq=0.33;
668 : bx2=0.27*0.27;
669 0 : }
670 : else{
671 0 : if (daugt==D3P0P||daugt==D3P0N||daugt==D3P0B||daugt==D3P00) {
672 : msq=1.82;
673 : bx2=0.34*0.34;
674 0 : }
675 : else{
676 0 : report(Severity::Error,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P0.\n";
677 : }
678 : }
679 : }
680 : else{
681 0 : report(Severity::Error,"EvtGen") << "Not implemented parent in get_isgw_ff_3P0.\n";
682 : }
683 :
684 0 : mtb = msb + msd;
685 0 : mtx = msq + msd;
686 :
687 0 : mb = EvtPDL::getMeanMass( parent );
688 : mx = mass;
689 :
690 0 : mum=1.0/(1.0/msq-1.0/msb);
691 0 : bbx2=0.5*(bb2+bx2);
692 0 : tm=(mb-mx)*(mb-mx);
693 0 : if (t>tm) t = 0.99*tm;
694 :
695 : double kap = 0.7*0.7;
696 0 : f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
697 0 : exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
698 :
699 0 : *upf = f5*msd*msq*msb/(sqrt(6.0*bb2)*mtx*mum);
700 0 : *umf = 0.0;
701 : return;
702 0 : } //get_ff_isgw_3p0
703 :
704 :
705 :
706 : void EvtISGWFF::EvtISGW1FF1P1 (EvtId parent,EvtId daugt,
707 : double t, double mass,
708 : double *vf, double *rf, double *spf, double *smf ) {
709 : //added by Lange Jan4,2000
710 0 : static EvtId BP=EvtPDL::getId("B+");
711 0 : static EvtId BM=EvtPDL::getId("B-");
712 0 : static EvtId B0=EvtPDL::getId("B0");
713 0 : static EvtId B0B=EvtPDL::getId("anti-B0");
714 :
715 0 : static EvtId D1P1P=EvtPDL::getId("D_1+");
716 0 : static EvtId D1P1N=EvtPDL::getId("D_1-");
717 0 : static EvtId D1P10=EvtPDL::getId("D_10");
718 0 : static EvtId D1P1B=EvtPDL::getId("anti-D_10");
719 :
720 0 : static EvtId B1P=EvtPDL::getId("b_1+");
721 0 : static EvtId B1M=EvtPDL::getId("b_1-");
722 0 : static EvtId B10=EvtPDL::getId("b_10");
723 :
724 0 : static EvtId H1=EvtPDL::getId("h_1");
725 0 : static EvtId H1PR=EvtPDL::getId("h'_1");
726 :
727 : double mtb;
728 : double msd(0.0), mx(0.0), mb(0.0);
729 : double msq(0.0), bx2(0.0),mtx,f5;
730 : double mup,mum,kap;
731 : double msb(0.0),bb2(0.0),bbx2,tm;
732 :
733 0 : if (parent==BM||parent==BP||parent==B0||parent==B0B) {
734 :
735 : msb=5.2;
736 : msd=0.33;
737 : bb2=0.41*0.41;
738 0 : if (daugt==H1||daugt==H1PR||daugt==B10||daugt==B1P||daugt==B1M) {
739 : msq=0.33;
740 : bx2=0.27*0.27;
741 0 : }
742 : else{
743 0 : if (daugt==D1P1P||daugt==D1P1N||daugt==D1P10||daugt==D1P1B) {
744 : msq=1.82;
745 : bx2=0.34*0.34;
746 0 : }
747 : else{
748 0 : report(Severity::Error,"EvtGen") << "Not implemented daugt in get_isgw_ff_3P1.\n";
749 : }
750 : }
751 : }
752 : else{
753 0 : report(Severity::Error,"EvtGen") << "Not implemented parent in get_isgw_ff_3P1.\n";
754 : }
755 :
756 0 : mtb = msb + msd;
757 0 : mtx = msq + msd;
758 :
759 0 : mb = EvtPDL::getMeanMass( parent );
760 : mx = mass;
761 :
762 0 : mup=1.0/(1.0/msq+1.0/msb);
763 0 : mum=1.0/(1.0/msq-1.0/msb);
764 0 : bbx2=0.5*(bb2+bx2);
765 0 : tm=(mb-mx)*(mb-mx);
766 0 : if (t>tm) t = 0.99*tm;
767 :
768 : kap = 0.7*0.7;
769 0 : f5 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,5.0/2.0)*
770 0 : exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
771 :
772 0 : *vf = f5*(((mtb*sqrt(bb2))/(4.0*sqrt(2.0)*msb*msq*mtx)));
773 0 : *rf = f5*mtb*sqrt(bb2/2)*((1.0/mup));
774 :
775 0 : *spf = (f5*msd/(sqrt(2.0*bb2)*mtb))*(1.0+(msb/(2.0*mum))-
776 0 : (msb*msq*msd*bb2/(4.0*mup*mum*mtx*bbx2)));
777 0 : *smf = 0.0;
778 :
779 : return;
780 : //get_ff_isgw_1p1
781 :
782 0 : }
783 :
784 : void EvtISGWFF::EvtISGW1FF21S0 (EvtId parent,EvtId daugt,
785 : double t, double mass, double *fppf, double *fpmf ) {
786 : //added by Lange Jan4,2000
787 0 : static EvtId BP=EvtPDL::getId("B+");
788 0 : static EvtId BM=EvtPDL::getId("B-");
789 0 : static EvtId B0=EvtPDL::getId("B0");
790 0 : static EvtId B0B=EvtPDL::getId("anti-B0");
791 :
792 0 : static EvtId D21S0P=EvtPDL::getId("hi");
793 0 : static EvtId D21S0N=EvtPDL::getId("hi");
794 0 : static EvtId D21S00=EvtPDL::getId("hi");
795 0 : static EvtId D21S0B=EvtPDL::getId("hi");
796 :
797 0 : static EvtId ETA2S=EvtPDL::getId("eta(2S)");
798 :
799 0 : static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
800 0 : static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
801 0 : static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
802 :
803 : double mtb;
804 : double msd(0.0), mx(0.0), mb(0.0);
805 : double msq(0.0), bx2(0.0),mtx;
806 : double f3;
807 : double msb(0.0);
808 : double mum,mup,tm,bb2(0.0),bbx2;
809 :
810 0 : if (parent==BM||parent==BP||parent==B0||parent==B0B) {
811 : msb=5.2;
812 : msd=0.33;
813 : bb2=0.41*0.41;
814 0 : if (daugt==PI2S0||daugt==PI2SP||daugt==PI2SM||daugt==ETA2S){
815 : msq=0.33;
816 : bx2=0.31*0.31;
817 0 : }
818 : else{
819 0 : if (daugt==D21S00||daugt==D21S0P||daugt==D21S0N||daugt==D21S0B) {
820 : msq=1.82;
821 : bx2=0.39*0.39;
822 0 : }
823 : else{
824 0 : report(Severity::Error,"EvtGen") << "Not implemented daugt in get_isgw1_ff_21S0.\n";
825 : }
826 : }
827 : }
828 : else{
829 0 : report(Severity::Error,"EvtGen") << "Not implemented parent in get_isgw1_ff_21S0.\n";
830 : }
831 :
832 0 : mtb = msb + msd;
833 0 : mtx = msq + msd;
834 :
835 0 : mb = EvtPDL::getMeanMass( parent );
836 : mx = mass;
837 :
838 0 : mup=1.0/(1.0/msq+1.0/msb);
839 0 : mum=1.0/(1.0/msq-1.0/msb);
840 0 : bbx2=0.5*(bb2+bx2);
841 0 : tm=(mb-mx)*(mb-mx);
842 0 : if (t>tm) t = 0.99*tm;
843 :
844 : double kap = 0.7*0.7;
845 0 : f3 = sqrt(mtx/mtb)*pow(sqrt(bx2*bb2)/bbx2,3.0/2.0)*
846 0 : exp(-1.0*((msd*msd*(tm-t)/(4.0*mtb*mtx*kap*bbx2))));
847 :
848 0 : *fppf = f3*sqrt(3.0/8.0)*(msb/mup)*( ((bb2-bx2)/(bb2+bx2)) +
849 0 : (((msq*msd*bb2)/(3.0*mum*mtx*bbx2))*((7.0*bx2-3.0*bb2)/
850 0 : (4.0*bbx2))) +
851 0 : (((msd*msd*bx2*(tm-t))/(6.0*mtx*mtb*bbx2*kap*bbx2))*
852 0 : (1.0 - ((msq*msd*bb2)/(2.0*mum*mtx*bbx2)))));
853 :
854 0 : *fpmf = 0.0;
855 : return;
856 0 : } //get_ff_isgw_21s0
857 :
858 :
859 : void EvtISGWFF::getbaryonff(EvtId, EvtId, double, double, double*,
860 : double*, double*, double*){
861 :
862 0 : report(Severity::Error,"EvtGen") << "Not implemented :getbaryonff in EvtISGWFF.\n";
863 0 : ::abort();
864 :
865 : }
866 :
867 : void EvtISGWFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
868 : double*, double*, double*, double*) {
869 :
870 0 : report(Severity::Error,"EvtGen") << "Not implemented :getdiracff in EvtISGWFF.\n";
871 0 : ::abort();
872 :
873 : }
874 :
875 : void EvtISGWFF::getraritaff(EvtId, EvtId, double, double, double*, double*,
876 : double*, double*, double*, double*, double*, double*) {
877 :
878 0 : report(Severity::Error,"EvtGen") << "Not implemented :getraritaff in EvtISGWFF.\n";
879 0 : ::abort();
880 :
881 : }
|