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