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) 2000 Caltech, UCSB
10 : //
11 : // Module:
12 : // Description: Form factors for b->sll according to Ali, Ball et al.
13 : // hep-ph/9910221v2
14 : //
15 : // Modification history:
16 : //
17 : // Ryd January 5, 2000 Module created
18 : //
19 : // jjhollar October 7 2005 Add Ball & Zwicky '05 LCSR
20 : // ofte August 2006 Add some more pi l l FF models
21 : //------------------------------------------------------------------------
22 : #include "EvtGenBase/EvtPatches.hh"
23 :
24 : #include "EvtGenBase/EvtPatches.hh"
25 : #include "EvtGenBase/EvtPDL.hh"
26 : #include "EvtGenModels/EvtbTosllBallFF.hh"
27 : #include <cmath>
28 :
29 0 : EvtbTosllBallFF::EvtbTosllBallFF(int ffmodel)
30 0 : {
31 0 : _theFFModel = ffmodel;
32 0 : }
33 :
34 :
35 : void EvtbTosllBallFF::getScalarFF(EvtId parent, EvtId daught,
36 : double t, double /*mass*/,
37 : double& fp,double& f0,double& ft){
38 :
39 0 : int model = _theFFModel;
40 :
41 0 : double m=EvtPDL::getMeanMass(parent);
42 0 : double md=EvtPDL::getMeanMass(daught);
43 :
44 0 : double shat=t/(m*m);
45 0 : double shat2=shat*shat;
46 0 : double shat3=shat2*shat;
47 :
48 0 : if (daught == EvtPDL::getId(std::string("K+")) ||
49 0 : daught == EvtPDL::getId(std::string("K-")) ||
50 0 : daught == EvtPDL::getId(std::string("K_S0")) ||
51 0 : daught == EvtPDL::getId(std::string("K0")) ||
52 0 : daught == EvtPDL::getId(std::string("anti-K0")) ||
53 0 : daught == EvtPDL::getId(std::string("K_L0"))
54 : )
55 : {
56 : // B --> K form factors
57 0 : if (model == 1) {
58 : //this is Ali-Ball '01 (or really Ali-Ball'99 minimum allowed)
59 0 : fp = 0.278*exp(1.568*shat+0.470*shat2+0.885*shat3);
60 0 : f0 = 0.278*exp(0.740*shat+0.080*shat2+0.425*shat3);
61 0 : ft = 0.300*exp(1.600*shat+0.501*shat2+0.796*shat3);
62 0 : }
63 0 : if (model == 2) {
64 : //this is Ali-Ball '99 (central values)
65 0 : fp = 0.319*exp(1.465*shat+0.372*shat2+0.782*shat3);
66 0 : f0 = 0.319*exp(0.633*shat-0.095*shat2+0.591*shat3);
67 0 : ft = 0.355*exp(1.478*shat+0.373*shat2+0.700*shat3);
68 0 : }
69 0 : if (model == 3) {
70 : //QCD sum rules (Colangelo et al)
71 0 : fp = 0.25/(1.-t/(5.0*5.0));
72 0 : f0 = 0.25/(1.-t/(7.0*7.0));
73 0 : ft = - 0.14/((1.0 - t/(5.0*5.0))*(1.0 - t/(7.0*7.0)));
74 0 : }
75 0 : if (model == 4) {
76 : // Quark model (Melikhov et al - hep-ph/9711362)
77 0 : fp = 0.36/(1. - 0.048*t + 0.00063*t*t);
78 0 : double fm = -0.30/(1. - 0.050*t + 0.00061*t*t);
79 0 : f0 = fp + fm*(t/(m*m - md*md));
80 0 : ft = -(m+md)*0.06/(1 -0.049*t + 0.00064*t*t);
81 0 : }
82 0 : if (model == 5) {
83 0 : fp = 0.341/(1. - 1.41*shat + 0.406*shat*shat);
84 0 : f0 = 0.341/(1. - 0.41*shat -0.361*shat*shat);
85 0 : ft = 0.374/(1. - 1.42*shat + 0.434*shat*shat);
86 0 : }
87 0 : if (model == 6) {
88 : // Ball-Zwicky LCSR '05 "set 2" (mb = 4.8)
89 0 : fp = (0.1616 / (1. - (t/29.30))) +
90 0 : (0.1730 / (1. - (t/29.30)) / (1. - (t/29.30)));
91 0 : f0 = (0.3302 / (1. - (t/37.46/37.46)));
92 0 : ft = (0.1614 / (1. - (t/29.30))) +
93 0 : (0.1981 / (1. - (t/29.30)) / (1. - (t/29.30)));
94 0 : }
95 0 : if (model == 7){
96 : // Ball-Zwicky LCSR '05 "set 4" (mb = 4.6)
97 0 : fp = (0.1903 / (1. - (t/29.30))) +
98 0 : (0.1478 / (1. - (t/29.30)) / (1. - (t/29.30)));
99 0 : f0 = (0.3338 / (1. - (t/38.98/38.98)));
100 0 : ft = (0.1851 / (1. - (t/29.30))) +
101 0 : (0.1905 / (1. - (t/29.30)) / (1. - (t/29.30)));
102 0 : }
103 : }
104 0 : else if (daught == EvtPDL::getId(std::string("pi+")) ||
105 0 : daught == EvtPDL::getId(std::string("pi-")) ||
106 0 : daught == EvtPDL::getId(std::string("pi0"))
107 : )
108 : {
109 0 : if(model == 1){
110 : // B --> pi form factors from Ball-Zwicky'01 (tabulated in hep-ph/0306251)
111 0 : fp = 0.261/(1. - 2.03*shat + 1.293*shat*shat);
112 0 : f0 = 0.261/(1. - 0.27*shat -0.752*shat*shat);
113 0 : ft = 0.296/(1. - 1.28*shat + 0.193*shat*shat);
114 0 : }
115 :
116 : // The following two (2) and (3) should preferably be replaced with
117 : // something better. ft not provided by the papers, and the ft formula
118 : // (from Colangelo'96 (hep-ph/9510403v2) equation (5.1)) seem to be no good.
119 : // if (model == 2) {
120 : // // LatticeQCD: Okamoto'04
121 : // // ... with f_T from eq. (5.1) of Colangelo'95
122 : // fp = 0.23/((1.-shat)*(1.-0.63*shat));
123 : // f0 = 0.23/((1.-shat)/1.18);
124 : // ft = ( -(m+md)/(2*m) )/ (fp - (m*m-md*md) * ((f0-fp)/t) );
125 : // }
126 : // if (model == 3) {
127 : // // LatticeQCD: Shigemitsu'04
128 : // // ... with f_T from eq. (5.1) of Colangelo'95
129 : // fp = 0.42*(1.0-0.41)/((1.-shat)*(1.-0.63*shat));
130 : // f0 = 0.42*(1.0-0.41)/((1.-shat)/1.18);
131 : // ft = ( -(m+md)/(2*m) )/ (fp - (m*m-md*md) * ((f0-fp)/t) );
132 : // }
133 :
134 0 : if (model == 4) {
135 : // Quark model - B -> pi set 1 (Melikhov-Nikitin'96)
136 0 : fp = 0.29/pow((1.-t/(6.48*6.48)),2.54);
137 0 : double fm = -0.26/pow((1.-t/(6.34*6.34)),2.49);
138 0 : f0 = fp + fm*(t/(m*m - md*md));
139 0 : ft = -(m+md)*0.05/pow((1.-t/(6.47*6.47)),2.50);
140 0 : }
141 0 : if (model == 5) {
142 : // Melikhov-Stech '00. (hep-ph/0001113)
143 : // relativistic dispersion approach based on constituent quark picture
144 0 : fp = 0.29/((1.-shat)*(1.-0.48*shat));
145 0 : f0 = 0.29/(1.-0.76*shat +0.28*shat*shat);
146 0 : ft = 0.28/((1.-shat)*(1.-0.48*shat));
147 0 : }
148 0 : if(model == 6){
149 : // Ball-Zwicky LCSR '05 "set 2" (mb = 4.8)
150 0 : fp = (0.744 / (1. - (t/(5.32*5.32)))) + (-0.486 / (1. - (t/40.73)));
151 0 : f0 = (0.258 / (1. - (t/33.81)));
152 0 : ft = (1.387 / (1. - (t/(5.32*5.32)))) + (-1.134 / (1. - (t/32.22)));
153 0 : }
154 0 : if(model == 7){
155 : // Ball-Zwicky LCSR '05 "set 4" (mb = 4.6)
156 0 : fp = (0.944 / (1. - (t/(5.32*5.32)))) + (-0.669 / (1. - (t/34.27)));
157 0 : f0 = (0.270 / (1. - (t/33.63)));
158 0 : ft = (0.152 / (1. - (t/(5.32*5.32)))) +
159 0 : (0.122 / (1. - (t/28.40)) / (1. - (t/28.40)));
160 0 : }
161 : }
162 0 : else if (daught == EvtPDL::getId(std::string("eta")) ||
163 0 : daught == EvtPDL::getId(std::string("eta'"))
164 : )
165 : {
166 0 : if(model == 1){
167 : // B --> eta form factors
168 0 : fp = 0.261/(1. - 2.03*shat + 1.293*shat*shat);
169 0 : f0 = 0.261/(1. - 0.27*shat -0.752*shat*shat);
170 0 : ft = 0.296/(1. - 1.28*shat + 0.193*shat*shat);
171 0 : }
172 0 : if(model == 6){
173 : // Ball-Zwicky LCSR '05 "set 2" (mb = 4.8)
174 0 : fp = (0.1220 / (1. - (t/28.40))) +
175 0 : (0.1553 / (1. - (t/28.40)) / (1. - (t/28.40)));
176 0 : f0 = (0.2734 / (1. - (t/31.03/31.03)));
177 0 : ft = (0.1108 / (1. - (t/28.40))) +
178 0 : (0.1752 / (1. - (t/28.40)) / (1. - (t/28.40)));
179 0 : }
180 0 : if(model == 7){
181 : // Ball-Zwicky LCSR '05 "set 2" (mb = 4.8)
182 0 : fp = (0.1380 / (1. - (t/28.40))) +
183 0 : (0.1462 / (1. - (t/28.40)) / (1. - (t/28.40)));
184 0 : f0 = (0.2799 / (1. - (t/30.46/30.46)));
185 0 : ft = (0.1160 / (1. - (t/28.40))) +
186 0 : (0.1841 / (1. - (t/28.40)) / (1. - (t/28.40)));
187 0 : }
188 : }
189 :
190 : // cout << "shat "<<shat<<"\t"<<"fp "<<fp<<"\t"<<"f0 "<<f0<<"\t"
191 : // <<"ft "<<ft<<endl;
192 :
193 0 : }
194 :
195 :
196 : void EvtbTosllBallFF::getVectorFF(EvtId parent, EvtId daught,
197 : double t, double /*mass*/,
198 : double& a1,double& a2,double& a0, double& v,
199 : double& t1, double& t2, double& t3 ){
200 :
201 0 : int model = _theFFModel;
202 :
203 0 : double m=EvtPDL::getMeanMass(parent);
204 0 : double md=EvtPDL::getMeanMass(daught);
205 :
206 0 : double shat=t/(m*m);
207 0 : double shat2=shat*shat;
208 :
209 : if (
210 0 : daught == EvtPDL::getId(std::string("K*+")) ||
211 0 : daught == EvtPDL::getId(std::string("K*-")) ||
212 0 : daught == EvtPDL::getId(std::string("K*0")) ||
213 0 : daught == EvtPDL::getId(std::string("anti-K*0")) ||
214 0 : daught == EvtPDL::getId(std::string("K_1+")) ||
215 0 : daught == EvtPDL::getId(std::string("K_1-"))
216 :
217 : )
218 : {
219 0 : if (model == 1) {
220 : //this is Ali-Ball '01
221 0 : a1 = 0.294*exp(0.656*shat+0.456*shat2);
222 0 : a2 = 0.246*exp(1.237*shat+0.822*shat2);
223 0 : a0 = 0.412*exp(1.543*shat+0.954*shat2);
224 0 : v = 0.399*exp(1.537*shat+1.123*shat2);
225 :
226 0 : t1 = 0.334*exp(1.575*shat+1.140*shat2);
227 0 : t2 = 0.334*exp(0.562*shat+0.481*shat2);
228 0 : t3 = 0.234*exp(1.230*shat+1.089*shat2);
229 0 : }
230 0 : if (model == 2) {
231 : //this is Ali-Ball '99
232 0 : a1=0.337*exp(0.602*shat+0.258*shat2);
233 0 : a2=0.282*exp(1.172*shat+0.567*shat2);
234 0 : a0=0.471*exp(1.505*shat+0.710*shat2);
235 0 : v=0.457*exp(1.482*shat+1.015*shat2);
236 :
237 0 : t1=0.379*exp(1.519*shat+1.030*shat2);
238 0 : t2=0.379*exp(0.517*shat+0.426*shat2);
239 0 : t3=0.260*exp(1.129*shat+1.128*shat2);
240 0 : }
241 0 : if (model == 3) {
242 : //QCD sum rules (Colangelo et al)
243 : // JJH - Changed in accordance with erratum (Phys. Rev. D 57, 3186 (1998))
244 0 : a1 = 0.37*(1 - 0.023*t);
245 0 : a2 = 0.40*(1 + 0.034*t);
246 0 : a0 = 0.3/(1.- t/(4.8*4.8));
247 0 : v = 0.47/(1.- t/(5.0*5.0));
248 :
249 0 : t1 = 0.19/(1.-t/(5.3*5.3));
250 0 : t2 = 0.19*(1. - 0.02*t);
251 0 : t3 = 0.3*(1. + 0.01*t);
252 0 : }
253 :
254 0 : if (model == 4) {
255 : // Quark model (Melikhov et al)
256 0 : a1 = 1.6/(1 - 0.0288*t + 0.00028*t*t); a1 = a1/(m+md);
257 0 : a2 = (m+md)*0.036/(1. - 0.053*t + 0.00082*t*t);
258 0 : double aminus = 0.041/(1. - 0.055*t + 0.00088*t*t);
259 : double f = 1.60/(1. - 0.0288*t + 0.00028*t*t);
260 0 : double aplus = -0.036/(1. - 0.053*t + 0.00082*t*t);
261 0 : a0 = (t*aminus + f + (m*m-md*md)*aplus)/(2.0*md);
262 0 : v = (m+md)*0.048/(1. - 0.057*t + 0.00085*t*t);
263 :
264 0 : t1 = 0.28/(1. - 0.058*t + 0.0009*t*t);
265 0 : double gplus = -0.28/(1. - 0.058*t + 0.0009*t*t);
266 0 : double gminus = 0.24/(1. - 0.059*t + 0.00096*t*t);
267 0 : t2 = -gplus - (t*gminus)/(m*m-md*md);
268 0 : double h = 0.0037/(1. - 0.075*t + 0.0016*t*t);
269 0 : t3 = (m+md)*(m+md)*((gminus/(m*m-md*md) - h/2.));
270 :
271 0 : }
272 0 : if (model == 5) {
273 0 : a1 = 0.337/(1. - 0.60*shat - 0.023*shat*shat);
274 0 : a2 = 0.283/(1. - 1.18*shat + 0.281*shat*shat);
275 0 : a0 = 0.470/(1. - 1.55*shat + 0.680*shat*shat);
276 0 : v = 0.458/(1. - 1.55*shat + 0.575*shat*shat);
277 0 : t1 = 0.379/(1. - 1.59*shat + 0.615*shat*shat);
278 0 : t2 = 0.379/(1. - 0.49*shat - 0.241*shat*shat);
279 0 : t3 = 0.261/(1. - 1.20*shat + 0.098*shat*shat);
280 0 : }
281 0 : if (model == 6) {
282 : // Ball-Zwicky LCSR '05 (mb = 4.8)
283 0 : a1 = 0.290 / (1. - (t/40.38));
284 0 : a2 = (-0.084 / (1. - (t/52.00))) +
285 0 : (0.342 / (1. - (t/52.00))/(1. - (t/52.00)));
286 0 : a0 = (1.364 / (1. - (t/(5.28*5.28)))) +
287 0 : (-0.990 / (1. - (t/36.78)));
288 0 : v = (0.923 / (1. - (t/(5.32*5.32)))) +
289 0 : (-0.511 / (1. - (t/49.40)));
290 0 : t1 = (0.823 / (1. - (t/(5.32*5.32)))) +
291 0 : (-0.491 / (1 - (t/46.31)));
292 0 : t2 = 0.333 / (1. - (t/41.41));
293 0 : double t3tilde = (-0.036 / (1. - (t/48.10))) +
294 0 : (0.368 / (1. - (t/48.10)) / (1. - (t/48.10)));
295 0 : t3 = 0.0;
296 0 : if (fabs(t) > 1e-10) {
297 0 : t3 = (m*m - md*md)*(t3tilde - t2)/t;
298 0 : }
299 0 : }
300 : }
301 0 : else if (daught == EvtPDL::getId(std::string("rho+")) ||
302 0 : daught == EvtPDL::getId(std::string("rho-")) ||
303 0 : daught == EvtPDL::getId(std::string("rho0"))
304 : )
305 : {
306 0 : if(model == 1){
307 : // B --> rho form factors
308 0 : a1 = 0.261/(1. - 0.29*shat - 0.415*shat*shat);
309 0 : a2 = 0.223/(1. - 0.93*shat - 0.092*shat*shat);
310 0 : a0 = 0.372/(1. - 1.40*shat + 0.437*shat*shat);
311 0 : v = 0.338/(1. - 1.37*shat + 0.315*shat*shat);
312 0 : t1 = 0.285/(1. - 1.41*shat + 0.361*shat*shat);
313 0 : t2 = 0.285/(1. - 0.28*shat - 0.500*shat*shat);
314 0 : t3 = 0.202/(1. - 1.06*shat - 0.076*shat*shat);
315 0 : }
316 0 : if(model == 6){
317 : // Ball-Zwicky LCSR '05 (mb = 4.8)
318 0 : a1 = 0.240 / (1. - (t/37.51));
319 0 : a2 = (0.009 / (1. - (t/40.82))) +
320 0 : (0.212 / (1. - (t/40.82)) / (1. - (t/40.82)));
321 0 : a0 = (1.527 / (1. - (t/(5.28*5.28)))) +
322 0 : (-1.220 / (1. - (t/33.36)));
323 0 : v = (1.045 / (1. - (t/(5.32*5.32)))) +
324 0 : (-0.721 / (1. - (t/38.34)));
325 0 : t1 = (0.897 / (1. - (t/(5.32*5.32)))) +
326 0 : (-0.629 / (1 - (t/38.04)));
327 0 : t2 = 0.267 / (1. - (t/38.59));
328 0 : double t3tilde = (0.022 / (1. - (t/40.88))) +
329 0 : (0.246 / (1. - (t/40.88)) / (1. - (t/40.88)));
330 0 : t3 = 0.0;
331 0 : if (fabs(t) > 1e-10) {
332 0 : t3 = (m*m - md*md)*(t3tilde - t2)/t;
333 0 : }
334 :
335 0 : }
336 : }
337 0 : else if (daught == EvtPDL::getId(std::string("omega"))
338 : )
339 : {
340 0 : if(model == 1){
341 : // B --> rho form factors
342 0 : a1 = 0.261/(1. - 0.29*shat - 0.415*shat*shat);
343 0 : a2 = 0.223/(1. - 0.93*shat - 0.092*shat*shat);
344 0 : a0 = 0.372/(1. - 1.40*shat + 0.437*shat*shat);
345 0 : v = 0.338/(1. - 1.37*shat + 0.315*shat*shat);
346 0 : t1 = 0.285/(1. - 1.41*shat + 0.361*shat*shat);
347 0 : t2 = 0.285/(1. - 0.28*shat - 0.500*shat*shat);
348 0 : t3 = 0.202/(1. - 1.06*shat - 0.076*shat*shat);
349 0 : }
350 0 : if(model == 6){
351 : // Ball-Zwicky LCSR '05 (mb = 4.8)
352 0 : a1 = -0.217 / (1. - (t/37.01));
353 0 : a2 = (0.006 / (1. - (t/41.24))) +
354 0 : (0.192 / (1. - (t/41.24)) / (1. - (t/41.24)));
355 0 : a0 = (1.321 / (1. - (t/(5.28*5.28)))) +
356 0 : (-1.040 / (1. - (t/34.47)));
357 0 : v = (1.006 / (1. - (t/(5.32*5.32)))) +
358 0 : (-0.713 / (1. - (t/37.45)));
359 0 : t1 = (0.865 / (1. - (t/(5.32*5.32)))) +
360 0 : (-0.622 / (1 - (t/37.19)));
361 0 : t2 = 0.242 / (1. - (t/37.95));
362 0 : double t3tilde = (0.023 / (1. - (t/40.87))) +
363 0 : (0.220 / (1. - (t/40.87)) / (1. - (t/40.87)));
364 0 : t3 = 0.0;
365 0 : if (fabs(t) > 1e-10) {
366 0 : t3 = (m*m - md*md)*(t3tilde - t2)/t;
367 0 : }
368 0 : }
369 : }
370 0 : else if (daught == EvtPDL::getId(std::string("phi"))
371 : )
372 : {
373 0 : if(model == 6){
374 : // Ball-Zwicky LCSR '05 (mb = 4.8)
375 0 : a1 = 0.308 / (1. - (t/36.54));
376 0 : a2 = (-0.054 / (1. - (t/48.94))) +
377 0 : (0.288 / (1. - (t/48.94)) / (1. - (t/48.94)));
378 0 : a0 = (3.310 / (1. - (t/(5.28*5.28)))) +
379 0 : (-2.835 / (1. - (t/31.57)));
380 0 : v = (1.484 / (1. - (t/(5.32*5.32)))) +
381 0 : (-1.049 / (1. - (t/39.52)));
382 0 : t1 = (1.303 / (1. - (t/(5.32*5.32)))) +
383 0 : (-0.954 / (1 - (t/38.28)));
384 0 : t2 = 0.349 / (1. - (t/37.21));
385 0 : double t3tilde = (0.027 / (1. - (t/45.56))) +
386 0 : (0.321 / (1. - (t/45.56)) / (1. - (t/45.56)));
387 0 : t3 = 0.0;
388 0 : if (fabs(t) > 1e-10) {
389 0 : t3 = (m*m - md*md)*(t3tilde - t2)/t;
390 0 : }
391 0 : }
392 : }
393 :
394 0 : }
395 :
396 :
397 :
398 :
399 :
400 :
401 :
|