BOSS 7.0.9
BESIII Offline Software System
Loading...
Searching...
No Matches
bak-BesEvtGen-00-04-08/src/EvtGen/EvtGenModels/EvtBtoXsllUtil.cc
Go to the documentation of this file.
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// Module: EvtBtoXsllUtil.cc
9//
10// Description: Routine to generate non-resonant B -> Xs l+ l- decays.
11// It generates a dilepton mass spectrum according to
12// F.Kruger and L.M.Sehgal, Phys. Lett. B380, 199 (1996)
13// and then generates the two lepton momenta according to
14// A.Ali, G.Hiller, L.T.Handoko and T.Morozumi, Phys. Rev. D55, 4105 (1997).
15// Expressions for Wilson coefficients and power corrections are taken
16// from A.Ali, E.Lunghi, C.Greub and G.Hiller, Phys. Rev. D66, 034002 (2002).
17// Detailed formulae for shat dependence of these coefficients are taken
18// from H.H.Asatryan, H.M.Asatrian, C.Greub and M.Walker, PRD65, 074004 (2002)
19// and C.Bobeth, M.Misiak and J.Urban, Nucl. Phys. B574, 291 (2000).
20// The resultant Xs particles may be decayed by JETSET.
21//
22// Modification history:
23//
24// Stephane Willocq Jan 19, 2001 Module created
25// Stephane Willocq Nov 6, 2003 Update Wilson Coeffs & dG's
26// &Jeff Berryhill
27//
28//------------------------------------------------------------------------
29//
30#include "EvtGenBase/EvtPatches.hh"
31extern "C" double ddilog_(const double & sh);
32//
33#include <stdlib.h>
34#include "EvtGenBase/EvtRandom.hh"
35#include "EvtGenBase/EvtParticle.hh"
36#include "EvtGenBase/EvtGenKine.hh"
37#include "EvtGenBase/EvtPDL.hh"
38#include "EvtGenBase/EvtReport.hh"
39#include "EvtGenModels/EvtBtoXsllUtil.hh"
40#include "EvtGenBase/EvtComplex.hh"
41#include "EvtGenBase/EvtConst.hh"
42
44{
45 // This function returns the zeroth-order alpha_s part of C7
46
47 if (!nnlo) return -0.313;
48
49 double A7;
50
51 // use energy scale of 2.5 GeV as a computational trick (G.Hiller)
52 // at least for shat > 0.25
53 A7 = -0.353 + 0.023;
54
55 EvtComplex c7eff;
56 if (sh > 0.25)
57 {
58 c7eff = A7;
59 return c7eff;
60 }
61
62 // change energy scale to 5.0 for full NNLO calculation below shat = 0.25
63 A7 = -0.312 + 0.008;
64 c7eff = A7;
65
66 return c7eff;
67}
68
69EvtComplex EvtBtoXsllUtil::GetC7Eff1(double sh, double mbeff, bool nnlo)
70{
71 // This function returns the first-order alpha_s part of C7
72
73 if (!nnlo) return 0.0;
74 double logsh;
75 logsh = log(sh);
76
77 EvtComplex uniti(0.0,1.0);
78
79 EvtComplex c7eff = 0.0;
80 if (sh > 0.25)
81 {
82 return c7eff;
83 }
84
85 // change energy scale to 5.0 for full NNLO calculation below shat = 0.25
86 double muscale = 5.0;
87 double alphas = 0.215;
88 //double A7 = -0.312 + 0.008;
89 double A8 = -0.148;
90 //double A9 = 4.174 + (-0.035);
91 //double A10 = -4.592 + 0.379;
92 double C1 = -0.487;
93 double C2 = 1.024;
94 //double T9 = 0.374 + 0.252;
95 //double U9 = 0.033 + 0.015;
96 //double W9 = 0.032 + 0.012;
97 double Lmu = log(muscale/mbeff);
98
99 EvtComplex F71;
100 EvtComplex f71;
101 EvtComplex k7100(-0.68192,-0.074998);
102 EvtComplex k7101(0.0,0.0);
103 EvtComplex k7110(-0.23935,-0.12289);
104 EvtComplex k7111(0.0027424,0.019676);
105 EvtComplex k7120(-0.0018555,-0.175);
106 EvtComplex k7121(0.022864,0.011456);
107 EvtComplex k7130(0.28248,-0.12783);
108 EvtComplex k7131(0.029027,-0.0082265);
109 f71 = k7100 + k7101*logsh + sh*(k7110 + k7111*logsh) +
110 sh*sh*(k7120 + k7121*logsh) +
111 sh*sh*sh*(k7130 + k7131*logsh);
112 F71 = (-208.0/243.0)*Lmu + f71;
113
114 EvtComplex F72;
115 EvtComplex f72;
116 EvtComplex k7200(4.0915,0.44999);
117 EvtComplex k7201(0.0,0.0);
118 EvtComplex k7210(1.4361,0.73732);
119 EvtComplex k7211(-0.016454,-0.11806);
120 EvtComplex k7220(0.011133,1.05);
121 EvtComplex k7221(-0.13718,-0.068733);
122 EvtComplex k7230(-1.6949,0.76698);
123 EvtComplex k7231(-0.17416,0.049359);
124 f72 = k7200 + k7201*logsh + sh*(k7210 + k7211*logsh) +
125 sh*sh*(k7220 + k7221*logsh) +
126 sh*sh*sh*(k7230 + k7231*logsh);
127 F72 = (416.0/81.0)*Lmu + f72;
128
129 EvtComplex F78;
130 F78 = (-32.0/9.0)*Lmu + 8.0*EvtConst::pi*EvtConst::pi/27.0 + (-44.0/9.0)
131 + (-8.0*EvtConst::pi/9.0)*uniti +
132 (4.0/3.0*EvtConst::pi*EvtConst::pi - 40.0/3.0)*sh +
133 (32.0*EvtConst::pi*EvtConst::pi/9.0 - 316.0/9.0)*sh*sh +
134 (200.0*EvtConst::pi*EvtConst::pi/27.0 - 658.0/9.0)*sh*sh*sh +
135 (-8.0*logsh/9.0)*(sh + sh*sh + sh*sh*sh);
136
137 c7eff = - alphas/(4.0*EvtConst::pi)*(C1*F71 + C2*F72 + A8*F78);
138
139 return c7eff;
140}
141
142
143EvtComplex EvtBtoXsllUtil::GetC9Eff0(double sh, double mbeff,
144 bool nnlo, bool btod)
145{
146 // This function returns the zeroth-order alpha_s part of C9
147
148 if (!nnlo) return 4.344;
149 double logsh;
150 logsh = log(sh);
151 double mch = 0.29;
152
153
154 double muscale;
155 muscale = 2.5;
156 double alphas;
157 alphas = 0.267;
158 double A8;
159 A8 = -0.164;
160 double A9;
161 A9 = 4.287 + (-0.218);
162 double A10;
163 A10 = -4.592 + 0.379;
164 double C1;
165 C1 = -0.697;
166 double C2;
167 C2 = 1.046;
168 double T9;
169 T9 = 0.114 + 0.280;
170 double U9;
171 U9 = 0.045 + 0.023;
172 double W9;
173 W9 = 0.044 + 0.016;
174
175 double Lmu;
176 Lmu = log(muscale/mbeff);
177
178
179 EvtComplex uniti(0.0,1.0);
180
181 EvtComplex hc;
182 double xarg;
183 xarg = 4.0*mch/sh;
184 hc = -4.0/9.0*log(mch*mch) + 8.0/27.0 + 4.0*xarg/9.0;
185 if (xarg < 1.0)
186 {
187 hc = hc - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
188 (log((sqrt(1.0 - xarg)+1.0)/(sqrt(1.0 - xarg) - 1.0)) -
189 uniti*EvtConst::pi);
190 }
191 else
192 {
193 hc = hc - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
194 2.0*atan(1.0/sqrt(xarg - 1.0));
195 }
196
197 EvtComplex h1;
198 xarg = 4.0/sh;
199 h1 = 8.0/27.0 + 4.0*xarg/9.0;
200 if (xarg < 1.0)
201 {
202 h1 = h1 - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
203 (log((sqrt(1.0 - xarg)+1.0)/(sqrt(1.0 - xarg) - 1.0)) -
204 uniti*EvtConst::pi);
205 }
206 else
207 {
208 h1 = h1 - 2.0/9.0*(2.0 + xarg)*sqrt(fabs(1.0 - xarg))*
209 2.0*atan(1.0/sqrt(xarg - 1.0));
210 }
211
212 EvtComplex h0;
213 h0 = 8.0/27.0 - 4.0*log(2.0)/9.0 + 4.0*uniti*EvtConst::pi/9.0;
214
215
216 // X=V_{ud}^* V_ub / V_{td}^* V_tb * (4/3 C_1 +C_2) * (h(\hat m_c^2, hat s)-
217 // h(\hat m_u^2, hat s))
218 EvtComplex Vudstar(1.0 - 0.2279*0.2279/2.0, 0.0);
219 EvtComplex Vub((0.118+0.273)/2.0, -1.0*(0.305+0.393)/2.0);
220 EvtComplex Vtdstar(1.0 - (0.118+0.273)/2.0,(0.305+0.393)/2.0);
221 EvtComplex Vtb(1.0,0.0);
222
223 EvtComplex Xd;
224 Xd = (Vudstar * Vub / Vtdstar * Vtb) * (4.0/3.0*C1 + C2) * (hc - h0);
225
226 EvtComplex c9eff = 4.344;
227 if (sh > 0.25)
228 {
229 c9eff = A9 + T9*hc + U9*h1 + W9*h0;
230 if (btod)
231 {
232 c9eff += Xd;
233 }
234 return c9eff;
235 }
236
237 // change energy scale to 5.0 for full NNLO calculation below shat = 0.25
238 muscale = 5.0;
239 alphas = 0.215;
240 A9 = 4.174 + (-0.035);
241 C1 = -0.487;
242 C2 = 1.024;
243 A8 = -0.148;
244 T9 = 0.374 + 0.252;
245 U9 = 0.033 + 0.015;
246 W9 = 0.032 + 0.012;
247 Lmu = log(muscale/mbeff);
248
249 Xd = (Vudstar * Vub / Vtdstar * Vtb) * (4.0/3.0*C1 + C2) * (hc - h0);
250
251 c9eff = A9 + T9*hc + U9*h1 + W9*h0;
252
253 if (btod)
254 {
255 c9eff += Xd;
256 }
257
258 return c9eff;
259}
260
261EvtComplex EvtBtoXsllUtil::GetC9Eff1(double sh, double mbeff,
262 bool nnlo, bool btod)
263{
264 // This function returns the first-order alpha_s part of C9
265
266 if (!nnlo) return 0.0;
267 double logsh;
268 logsh = log(sh);
269 double mch = 0.29;
270
271 EvtComplex uniti(0.0,1.0);
272
273 EvtComplex c9eff = 0.0;
274 if (sh > 0.25)
275 {
276 return c9eff;
277 }
278
279 // change energy scale to 5.0 for full NNLO calculation below shat = 0.25
280 double muscale = 5.0;
281 double alphas = 0.215;
282 double C1 = -0.487;
283 double C2 = 1.024;
284 double A8 = -0.148;
285 double Lmu = log(muscale/mbeff);
286
287 EvtComplex F91;
288 EvtComplex f91;
289 EvtComplex k9100(-11.973,0.16371);
290 EvtComplex k9101(-0.081271,-0.059691);
291 EvtComplex k9110(-28.432,-0.25044);
292 EvtComplex k9111(-0.040243,0.016442);
293 EvtComplex k9120(-57.114,-0.86486);
294 EvtComplex k9121(-0.035191,0.027909);
295 EvtComplex k9130(-128.8,-2.5243);
296 EvtComplex k9131(-0.017587,0.050639);
297 f91 = k9100 + k9101*logsh + sh*(k9110 + k9111*logsh) +
298 sh*sh*(k9120 + k9121*logsh) +
299 sh*sh*sh*(k9130 + k9131*logsh);
300 F91 = (-1424.0/729.0 + 16.0*uniti*EvtConst::pi/243.0
301 + 64.0/27.0*log(mch))*Lmu - 16.0*Lmu*logsh/243.0 +
302 (16.0/1215.0 - 32.0/135.0/mch/mch)*Lmu*sh +
303 (4.0/2835.0 - 8.0/315.0/mch/mch/mch/mch)*Lmu*sh*sh +
304 (16.0/76545.0 - 32.0/8505.0/mch/mch/mch/mch/mch/mch)*
305 Lmu*sh*sh*sh -256.0*Lmu*Lmu/243.0 + f91;
306
307 EvtComplex F92;
308 EvtComplex f92;
309 EvtComplex k9200(6.6338,-0.98225);
310 EvtComplex k9201(0.48763,0.35815);
311 EvtComplex k9210(3.3585,1.5026);
312 EvtComplex k9211(0.24146,-0.098649);
313 EvtComplex k9220(-1.1906,5.1892);
314 EvtComplex k9221(0.21115,-0.16745);
315 EvtComplex k9230(-17.12,15.146);
316 EvtComplex k9231(0.10552,-0.30383);
317 f92 = k9200 + k9201*logsh + sh*(k9210 + k9211*logsh) +
318 sh*sh*(k9220 + k9221*logsh) +
319 sh*sh*sh*(k9230 + k9231*logsh);
320 F92 = (256.0/243.0 - 32.0*uniti*EvtConst::pi/81.0
321 - 128.0/9.0*log(mch))*Lmu + 32.0*Lmu*logsh/81.0 +
322 (-32.0/405.0 + 64.0/45.0/mch/mch)*Lmu*sh +
323 (-8.0/945.0 + 16.0/105.0/mch/mch/mch/mch)*Lmu*sh*sh +
324 (-32.0/25515.0 + 64.0/2835.0/mch/mch/mch/mch/mch/mch)*
325 Lmu*sh*sh*sh + 512.0*Lmu*Lmu/81.0 + f92;
326
327 EvtComplex F98;
328 F98 = 104.0/9.0 - 32.0*EvtConst::pi*EvtConst::pi/27.0 +
329 (1184.0/27.0 - 40.0*EvtConst::pi*EvtConst::pi/9.0)*sh +
330 (14212.0/135.0 - 32.0*EvtConst::pi*EvtConst::pi/3.0)*sh*sh +
331 (193444.0/945.0 - 560.0*EvtConst::pi*EvtConst::pi/27.0)*sh*sh*sh +
332 16.0*logsh/9.0*(1.0 + sh + sh*sh + sh*sh*sh);
333
334 c9eff = - alphas/(4.0*EvtConst::pi)*(C1*F91 + C2*F92 + A8*F98);
335
336 return c9eff;
337}
338
340{
341
342 if (!nnlo) return -4.669;
343 double A10;
344 A10 = -4.592 + 0.379;
345
346 EvtComplex c10eff;
347 c10eff = A10;
348
349 return c10eff;
350}
351
352double EvtBtoXsllUtil::dGdsProb(double mb, double ms, double ml,
353 double s)
354{
355 // Compute the decay probability density function given a value of s
356 // according to Ali-Lunghi-Greub-Hiller's 2002 paper
357 // Note that the form given below is taken from
358 // F.Kruger and L.M.Sehgal, Phys. Lett. B380, 199 (1996)
359 // but the differential rate as a function of dilepton mass
360 // in this latter paper reduces to Eq.(12) in ALGH's 2002 paper
361 // for ml = 0 and ms = 0.
362
363 bool btod = false;
364 bool nnlo = true;
365
366 double delta, lambda, prob;
367 double f1, f2, f3, f4;
368 double msh, mlh, sh;
369 double mbeff = 4.8;
370
371 mlh = ml / mb;
372 msh = ms / mb;
373 // set lepton and strange-quark masses to 0 if need to
374 // be in strict agreement with ALGH 2002 paper
375 // mlh = 0.0; msh = 0.0;
376 // sh = s / (mb*mb);
377 sh = s / (mbeff*mbeff);
378
379 EvtComplex c7eff0 = EvtBtoXsllUtil::GetC7Eff0(sh,nnlo);
380 EvtComplex c7eff1 = EvtBtoXsllUtil::GetC7Eff1(sh,mbeff,nnlo);
381 EvtComplex c9eff0 = EvtBtoXsllUtil::GetC9Eff0(sh,mbeff,nnlo,btod);
382 EvtComplex c9eff1 = EvtBtoXsllUtil::GetC9Eff1(sh,mbeff,nnlo,btod);
383 EvtComplex c10eff = EvtBtoXsllUtil::GetC10Eff(sh,nnlo);
384
385 double alphas = 0.119/
386 (1 + 0.119*log(pow(4.8,2)/pow(91.1867,2))*23.0/12.0/EvtConst::pi);
387
388 double omega7 = -8.0/3.0*log(4.8/mb)
389 -4.0/3.0*ddilog_(sh)
391 -2.0/3.0*log(sh)*log(1.0-sh)
392 -log(1-sh)*(8.0+sh)/(2.0+sh)/3.0
393 -2.0/3.0*sh*(2.0 - 2.0*sh - sh*sh)*log(sh)/pow((1.0 - sh),2)/(2.0 + sh)
394 -(16.0 - 11.0*sh - 17.0*sh*sh)/18.0/(2.0 + sh)/(1.0 - sh);
395 double eta7 = 1.0 + alphas*omega7/EvtConst::pi;
396
397 double omega79 = -4.0/3.0*log(4.8/mb)
398 -4.0/3.0*ddilog_(sh)
400 -2.0/3.0*log(sh)*log(1.0-sh)
401 -1.0/9.0*(2.0+7.0*sh)*log(1.0 - sh)/sh
402 -2.0/9.0*sh*(3.0 - 2.0*sh)*log(sh)/pow((1.0 - sh),2)
403 +1.0/18.0*(5.0 - 9.0*sh)/(1.0 - sh);
404 double eta79 = 1.0 + alphas*omega79/EvtConst::pi;
405
406 double omega9 = -2.0/9.0*EvtConst::pi*EvtConst::pi - 4.0/3.0*ddilog_(sh)
407 - 2.0/3.0*log(sh)*log(1.0-sh)
408 - (5.0+4.0*sh)/(3.0*(1.0+2.0*sh)) * log(1.0-sh)
409 - 2.0*sh*(1.0+sh)*(1.0-2.0*sh)
410 /(3.0*pow(1.0-sh,2)*(1.0+2.0*sh)) * log(sh)
411 + (5.0+9.0*sh-6.0*sh*sh)/(6.0*(1.0-sh)*(1.0+2.0*sh));
412 double eta9 = 1.0 + alphas*omega9/EvtConst::pi;
413
414 EvtComplex c7eff = eta7*c7eff0 + c7eff1;
415 EvtComplex c9eff = eta9*c9eff0 + c9eff1;
416 c10eff *= eta9;
417
418 double c7c7 = abs2(c7eff);
419 double c7c9 = real((eta79*c7eff0 + c7eff1)*conj(eta79*c9eff0 + c9eff1));
420 double c9c9plusc10c10 = abs2(c9eff) + abs2(c10eff);
421 double c9c9minusc10c10 = abs2(c9eff) - abs2(c10eff);
422
423 // Power corrections according to ALGH 2002
424 double lambda_1 = -0.2;
425 double lambda_2 = 0.12;
426 double C1 = -0.487;
427 double C2 = 1.024;
428 double mc = 0.29 * mb;
429
430 EvtComplex F;
431 double r = s / (4.0 * mc * mc);
432 EvtComplex uniti(0.0,1.0);
433 F = 3.0 / (2.0 * r);
434 if (r < 1)
435 {
436 F *= 1.0/sqrt(r*(1.0-r))*atan(sqrt(r/(1.0-r)))-1.0;
437 }
438 else
439 {
440 F *= 0.5/sqrt(r*(r-1.0))*(log((1.0-sqrt(1.0-1.0/r))/(1.0+sqrt(1.0-1.0/r)))
441 +uniti*EvtConst::pi)-1.0;
442 }
443
444 double G1 = 1.0 + lambda_1 / (2.0 * mb * mb)
445 + 3.0 * (1.0 - 15.0*sh*sh + 10.0*sh*sh*sh)
446 / ((1.0 - sh)*(1.0 -sh)*(1.0 + 2.0*sh))
447 * lambda_2 / (2.0*mb*mb);
448 double G2 = 1.0 + lambda_1 / (2.0 * mb * mb)
449 - 3.0 * (6.0 + 3.0*sh - 5.0*sh*sh*sh)
450 / ((1.0 - sh)*(1.0 -sh)*(2.0 + sh))
451 * lambda_2 / (2.0*mb*mb);
452 double G3 = 1.0 + lambda_1 / (2.0 * mb * mb)
453 - (5.0 + 6.0*sh - 7.0*sh*sh)
454 / ((1.0 - sh)*(1.0 -sh))
455 * lambda_2 / (2.0*mb*mb);
456 double Gc = -8.0/9.0 * (C2 - C1/6.0) * lambda_2/(mc*mc)
457 * real(F*(conj(c9eff)*(2.0+sh)+conj(c7eff)*(1.0 + 6.0*sh - sh*sh)/sh));
458
459 // end of power corrections section
460 // now back to Kruger & Sehgal expressions
461
462 lambda = 1.0 + sh*sh + pow(msh,4) - 2.0*(sh + sh*msh*msh + msh*msh);
463
464 f1 = pow(1.0-msh*msh,2) - sh*(1.0 + msh*msh);
465 f2 = 2.0*(1.0 + msh*msh) * pow(1.0-msh*msh,2)
466 - sh*(1.0 + 14.0*msh*msh + pow(msh,4)) - sh*sh*(1.0 + msh*msh);
467 f3 = pow(1.0-msh*msh,2) + sh*(1.0 + msh*msh) - 2.0*sh*sh
468 + lambda*2.0*mlh*mlh/sh;
469 f4 = 1.0 - sh + msh*msh;
470
471 delta = ( 12.0*c7c9*f1*G3 + 4.0*c7c7*f2*G2/sh ) * (1.0 + 2.0*mlh*mlh/sh)
472 + c9c9plusc10c10*f3*G1
473 + 6.0*mlh*mlh*c9c9minusc10c10*f4
474 + Gc;
475
476 prob = sqrt(lambda*(1.0 - 4.0*mlh*mlh/sh)) * delta;
477
478 return prob;
479}
480
481double EvtBtoXsllUtil::dGdsdupProb(double mb, double ms, double ml,
482 double s, double u)
483{
484 // Compute the decay probability density function given a value of s and u
485 // according to Ali-Hiller-Handoko-Morozumi's 1997 paper
486 // see Appendix E
487
488 bool btod = false;
489 bool nnlo = true;
490
491 double prob;
492 double f1sp, f2sp, f3sp;
493 //double u_ext;
494 double mbeff = 4.8;
495
496 // double sh = s / (mb*mb);
497 double sh = s / (mbeff*mbeff);
498
499 EvtComplex c7eff0 = EvtBtoXsllUtil::GetC7Eff0(sh,nnlo);
500 EvtComplex c7eff1 = EvtBtoXsllUtil::GetC7Eff1(sh,mbeff,nnlo);
501 EvtComplex c9eff0 = EvtBtoXsllUtil::GetC9Eff0(sh,mbeff,nnlo,btod);
502 EvtComplex c9eff1 = EvtBtoXsllUtil::GetC9Eff1(sh,mbeff,nnlo,btod);
503 EvtComplex c10eff = EvtBtoXsllUtil::GetC10Eff(sh,nnlo);
504
505 double alphas = 0.119/
506 (1 + 0.119*log(pow(4.8,2)/pow(91.1867,2))*23.0/12.0/EvtConst::pi);
507
508 double omega7 = -8.0/3.0*log(4.8/mb)
509 -4.0/3.0*ddilog_(sh)
511 -2.0/3.0*log(sh)*log(1.0-sh)
512 -log(1-sh)*(8.0+sh)/(2.0+sh)/3.0
513 -2.0/3.0*sh*(2.0 - 2.0*sh - sh*sh)*log(sh)/pow((1.0 - sh),2)/(2.0 + sh)
514 -(16.0 - 11.0*sh - 17.0*sh*sh)/18.0/(2.0 + sh)/(1.0 - sh);
515 double eta7 = 1.0 + alphas*omega7/EvtConst::pi;
516
517 double omega79 = -4.0/3.0*log(4.8/mb)
518 -4.0/3.0*ddilog_(sh)
520 -2.0/3.0*log(sh)*log(1.0-sh)
521 -1.0/9.0*(2.0+7.0*sh)*log(1.0 - sh)/sh
522 -2.0/9.0*sh*(3.0 - 2.0*sh)*log(sh)/pow((1.0 - sh),2)
523 +1.0/18.0*(5.0 - 9.0*sh)/(1.0 - sh);
524 double eta79 = 1.0 + alphas*omega79/EvtConst::pi;
525
526 double omega9 = - 2.0/9.0*EvtConst::pi*EvtConst::pi - 4.0/3.0*ddilog_(sh)
527 - 2.0/3.0*log(sh)*log(1.0-sh)
528 - (5.0+4.0*sh)/(3.0*(1.0+2.0*sh)) * log(1.0-sh)
529 - 2.0*sh*(1.0+sh)*(1.0-2.0*sh)
530 /(3.0*pow(1.0-sh,2)*(1.0+2.0*sh)) * log(sh)
531 + (5.0+9.0*sh-6.0*sh*sh)/(6.0*(1.0-sh)*(1.0+2.0*sh));
532 double eta9 = 1.0 + alphas*omega9/EvtConst::pi;
533
534 EvtComplex c7eff = eta7*c7eff0 + c7eff1;
535 EvtComplex c9eff = eta9*c9eff0 + c9eff1;
536 c10eff *= eta9;
537
538 double c7c7 = abs2(c7eff);
539 double c7c9 = real((eta79*c7eff0 + c7eff1)*conj(eta79*c9eff0 + c9eff1));
540 double c7c10 = real((eta79*c7eff0 + c7eff1)*conj(eta9*c10eff));
541 double c9c10 = real((eta9*c9eff0 + c9eff1)*conj(eta9*c10eff));
542 double c9c9plusc10c10 = abs2(c9eff) + abs2(c10eff);
543 //double c9c9minusc10c10 = abs2(c9eff) - abs2(c10eff);
544
545 f1sp = ( pow(mb*mb-ms*ms,2) - s*s) * c9c9plusc10c10
546 + 4.0*( pow(mb,4) - ms*ms*mb*mb - pow(ms,4)*(1.0 - ms*ms/(mb*mb))
547 - 8.0*s*ms*ms - s*s*(1.0 + ms*ms/(mb*mb) ))*mb*mb*c7c7/s
548 // kludged mass term
549 *(1.0 + 2.0*ml*ml/s)
550 - 8.0*(s*(mb*mb + ms*ms) - pow(mb*mb-ms*ms,2)) * c7c9
551 // kludged mass term
552 *(1.0 + 2.0*ml*ml/s);
553
554 f2sp = 4.0*s*c9c10 + 8.0*(mb*mb + ms*ms)*c7c10;
555 f3sp = - (c9c9plusc10c10)
556 + 4.0*(1.0 + pow(ms/mb,4)) * mb*mb*c7c7/s
557 // kludged mass term
558 *(1.0 + 2.0*ml*ml/s);
559
560 prob = (f1sp + f2sp*u + f3sp*u*u)/ pow(mb,3);
561
562 return prob;
563}
564
566{
567 // Pick a value for the b-quark Fermi motion momentum
568 // according to Ali's Gaussian model
569
570 double pb, pbmax, xbox, ybox;
571 pb = 0.0;
572 pbmax = 5.0 * pf;
573
574 while (pb == 0.0)
575 {
576 xbox = EvtRandom::Flat(pbmax);
577 ybox = EvtRandom::Flat();
578 if (ybox < FermiMomentumProb(xbox, pf)) { pb = xbox;}
579 }
580
581 return pb;
582}
583
584double EvtBtoXsllUtil::FermiMomentumProb(double pb, double pf)
585{
586 // Compute probability according to Ali's Gaussian model
587 // the function chosen has a convenient maximum value of 1 for pb = pf
588
589 double prsq = (pb*pb)/(pf*pf);
590 double prob = prsq * exp(1.0 - prsq);
591
592 return prob;
593}
594
const double delta
TFile * f1
XmlRpcServer s
Definition: HelloServer.cpp:11
Evt3Rank3C conj(const Evt3Rank3C &t2)
double abs2(const EvtComplex &c)
EvtComplex exp(const EvtComplex &c)
double ddilog_(const double &sh)
double ddilog_(const double &sh)
double dGdsProb(double mb, double ms, double ml, double s)
EvtComplex GetC9Eff0(double sh, double mb, bool nnlo=true, bool btod=false)
EvtComplex GetC7Eff1(double sh, double mb, bool nnlo=true)
EvtComplex GetC9Eff1(double sh, double mb, bool nnlo=true, bool btod=false)
double dGdsdupProb(double mb, double ms, double ml, double s, double u)