EvtGen 2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
EvtWilsonCoefficients.cpp
Go to the documentation of this file.
1
2/***********************************************************************
3* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4* *
5* This file is part of EvtGen. *
6* *
7* EvtGen is free software: you can redistribute it and/or modify *
8* it under the terms of the GNU General Public License as published by *
9* the Free Software Foundation, either version 3 of the License, or *
10* (at your option) any later version. *
11* *
12* EvtGen is distributed in the hope that it will be useful, *
13* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15* GNU General Public License for more details. *
16* *
17* You should have received a copy of the GNU General Public License *
18* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19***********************************************************************/
20
22
25
26#include <cstdlib>
27
28double li2spence( double );
29
31{
32 int i, j;
33 double tmpa[8] = { 14. / 23., 16. / 23., 6. / 23., -12. / 23.,
34 0.4086, -0.4230, -0.8994, 0.1456 };
35 double tmph[8] = { 2.2996, -1.0880, -3. / 7., -1. / 14.,
36 -0.6494, -0.0380, -0.0186, -0.0057 };
37 double tmpp[8] = { 0, 0, -80. / 203., 8. / 33.,
38 0.0433, 0.1384, 0.1648, -0.0073 };
39 double tmps[8] = { 0, 0, -0.2009, -0.3579,
40 0.0490, -0.3616, -0.3554, 0.0072 };
41 double tmpq[8] = { 0, 0, 0, 0, 0.0318, 0.0918, -0.2700, 0.0059 };
42 double tmpg[8] = { 313063. / 363036., 0, 0, 0,
43 -0.9135, 0.0873, -0.0571, -0.0209 };
44 double tmpk[6][8] = {
45 { 0, 0, 1. / 2., -1. / 2., 0, 0, 0, 0 },
46 { 0, 0, 1. / 2., +1. / 2., 0, 0, 0, 0 },
47 { 0, 0, -1. / 14., +1. / 6., 0.0510, -0.1403, -0.0113, 0.0054 },
48 { 0, 0, -1. / 14., -1. / 6., 0.0984, +0.1214, +0.0156, 0.0026 },
49 { 0, 0, 0, 0, -0.0397, 0.0117, -0.0025, +0.0304 },
50 { 0, 0, 0, 0, +0.0335, 0.0239, -0.0462, -0.0112 } };
51 double tmpr[2][8] = {
52 { 0, 0, +0.8966, -0.1960, -0.2011, 0.1328, -0.0292, -0.1858 },
53 { 0, 0, -0.1193, +0.1003, -0.0473, 0.2323, -0.0133, -0.1799 } };
54 for ( i = 0; i < 8; i++ ) {
55 m_a[i] = tmpa[i];
56 m_h[i] = tmph[i];
57 m_p[i] = tmpp[i];
58 m_s[i] = tmps[i];
59 m_q[i] = tmpq[i];
60 m_g[i] = tmpg[i];
61 for ( j = 0; j < 6; j++ )
62 m_k[j][i] = tmpk[j][i];
63 for ( j = 0; j < 2; j++ )
64 m_r[j][i] = tmpr[j][i];
65 }
66 m_n_f = 5;
67 m_Lambda = 0.2167;
68 m_alphaMZ = 0.1187;
69 m_mu = 4.8;
70 m_M_Z = 91.1876;
71 m_M_t = 174.3;
72 m_M_W = 80.425;
73 m_alphaS = 0;
74 m_eta = 0;
75 m_sin2W = 0.23120;
76 m_ialpha = 137.036;
77 m_C1 = m_C2 = m_C3 = m_C4 = m_C5 = m_C6 = m_C7 = m_C7eff0 = m_C8 =
79 m_A = m_B = m_C = m_D = m_E = m_F = m_Y = m_Z = m_PE = 0;
80 m_ksi = 0;
81}
82
84{
85 if ( scheme == "NDR" )
86 m_ksi = 0;
87 else if ( scheme == "HV" )
88 m_ksi = 1;
89 else {
90 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
91 << "ERROR: EvtWilsonCoefficients knows only NDR and HV schemes !"
92 << std::endl;
93 ::abort();
94 }
95}
96
97double EvtWilsonCoefficients::alphaS( double mu = 4.8, int n_f = 5,
98 double Lambda = 0.2167 )
99{
100 // calculate strong coupling constant for n_f flavours and scale mu
101 double beta0 = 11. - 2. / 3. * n_f;
102 double beta1 = 51. - 19. / 3. * n_f;
103 double beta2 = 2857. - 5033. / 9. * n_f + 325. / 27. * n_f * n_f;
104 double lnratio = log( mu * mu / Lambda / Lambda );
105 double aS = 4. * EvtConst::pi / beta0 / lnratio *
106 ( 1. - 2 * beta1 / beta0 / beta0 * log( lnratio ) / lnratio +
107 4 * beta1 * beta1 / beta0 / beta0 / beta0 / beta0 / lnratio /
108 lnratio *
109 ( ( log( lnratio ) - 0.5 ) * ( log( lnratio ) - 0.5 ) +
110 beta2 * beta0 / 8 / beta1 / beta1 - 5. / 4. ) );
111 return aS;
112}
113
114double EvtWilsonCoefficients::Lambda( double alpha = 0.1187, int n_f = 5,
115 double mu = 91.1876,
116 double epsilon = 0.00005,
117 int maxstep = 1000 )
118{
119 // calculate Lambda matching alphaS using simple iterative method
120 int i;
121 double difference = 0;
122 double Lambda = mu * 0.9999999999;
123 double step = -mu / 20;
124 for ( i = 0;
125 i < maxstep &&
126 ( difference = fabs( alphaS( mu, n_f, Lambda ) - alpha ) ) >= epsilon;
127 i++ ) {
128 EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
129 << " Difference of alpha_S from " << alpha << " is " << difference
130 << " at Lambda = " << Lambda << std::endl;
131 if ( alphaS( mu, n_f, Lambda ) > alpha ) {
132 if ( step > 0 )
133 step *= -0.4;
134 if ( alphaS( mu, n_f, Lambda + step - epsilon ) <
135 alphaS( mu, n_f, Lambda + step ) )
136 Lambda += step;
137 else
138 step *= 0.4;
139 } else {
140 if ( step < 0 )
141 step *= -0.4;
142 if ( Lambda + step < mu )
143 Lambda += step;
144 else
145 step *= 0.4;
146 }
147 }
148 EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
149 << " Difference of alpha_S from " << alpha << " is " << difference
150 << " at Lambda = " << Lambda << std::endl;
151 if ( difference >= epsilon ) {
152 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
153 << " ERROR: Did not converge Lambda for alpha_s = " << alpha
154 << " , difference " << difference << " >= " << epsilon << " after "
155 << i << " steps !" << std::endl;
156 ::abort();
157 return -1;
158 } else {
159 EvtGenReport( EVTGEN_INFO, "EvtGen" )
160 << " For alpha_s = " << alphaS( mu, n_f, Lambda )
161 << " was found Lambda = " << Lambda << std::endl;
162 return Lambda;
163 }
164}
165
166double EvtWilsonCoefficients::eta( double mu = 4.8, int n_f = 5,
167 double Lambda = 0.2167, double M_W = 80.425 )
168{
169 return alphaS( M_W, n_f, Lambda ) / alphaS( mu, n_f, Lambda );
170}
171
172EvtComplex EvtWilsonCoefficients::C1( double mu = 4.8, int n_f = 5,
173 double Lambda = 0.2167, double M_W = 80.425 )
174{
175 int i;
176 EvtComplex myC1( 0, 0 );
177 for ( i = 0; i < 8; i++ )
178 myC1 += m_k[0][i] * pow( eta( mu, n_f, Lambda, M_W ), m_a[i] );
179 return myC1;
180}
181
182EvtComplex EvtWilsonCoefficients::C2( double mu = 4.8, int n_f = 5,
183 double Lambda = 0.2167, double M_W = 80.425 )
184{
185 int i;
186 EvtComplex myC2( 0, 0 );
187 for ( i = 0; i < 8; i++ )
188 myC2 += m_k[1][i] * pow( eta( mu, n_f, Lambda, M_W ), m_a[i] );
189 return myC2;
190}
191
192EvtComplex EvtWilsonCoefficients::C3( double mu = 4.8, int n_f = 5,
193 double Lambda = 0.2167, double M_W = 80.425 )
194{
195 int i;
196 EvtComplex myC3( 0, 0 );
197 for ( i = 0; i < 8; i++ )
198 myC3 += m_k[2][i] * pow( eta( mu, n_f, Lambda, M_W ), m_a[i] );
199 return myC3;
200}
201
202EvtComplex EvtWilsonCoefficients::C4( double mu = 4.8, int n_f = 5,
203 double Lambda = 0.2167, double M_W = 80.425 )
204{
205 int i;
206 EvtComplex myC4( 0, 0 );
207 for ( i = 0; i < 8; i++ )
208 myC4 += m_k[3][i] * pow( eta( mu, n_f, Lambda, M_W ), m_a[i] );
209 return myC4;
210}
211
212EvtComplex EvtWilsonCoefficients::C5( double mu = 4.8, int n_f = 5,
213 double Lambda = 0.2167, double M_W = 80.425 )
214{
215 int i;
216 EvtComplex myC5( 0, 0 );
217 for ( i = 0; i < 8; i++ )
218 myC5 += m_k[4][i] * pow( eta( mu, n_f, Lambda, M_W ), m_a[i] );
219 return myC5;
220}
221
222EvtComplex EvtWilsonCoefficients::C6( double mu = 4.8, int n_f = 5,
223 double Lambda = 0.2167, double M_W = 80.425 )
224{
225 int i;
226 EvtComplex myC6( 0, 0 );
227 for ( i = 0; i < 8; i++ )
228 myC6 += m_k[5][i] * pow( eta( mu, n_f, Lambda, M_W ), m_a[i] );
229 return myC6;
230}
231
232EvtComplex EvtWilsonCoefficients::C7( double M_t = 174.3, double M_W = 80.425 )
233{
234 return EvtComplex( -0.5 * A( M_t * M_t / M_W / M_W ), 0 );
235}
236
237EvtComplex EvtWilsonCoefficients::C8( double M_t = 174.3, double M_W = 80.425 )
238{
239 return EvtComplex( -0.5 * F( M_t * M_t / M_W / M_W ), 0 );
240}
241
242EvtComplex EvtWilsonCoefficients::C7eff0( double mu = 4.8, int n_f = 5,
243 double Lambda = 0.2167,
244 double M_t = 174.3, double M_W = 80.425 )
245{
246 int i;
247 EvtComplex myC7eff( 0, 0 );
248 for ( i = 0; i < 8; i++ )
249 myC7eff += m_h[i] * pow( eta( mu, n_f, Lambda, M_W ), m_a[i] );
250 myC7eff *= C2( mu, n_f, Lambda, M_W );
251 myC7eff += pow( eta( mu, n_f, Lambda, M_W ), 16. / 23. ) * C7( M_t, M_W );
252 myC7eff += 8. / 3. *
253 ( pow( eta( mu, n_f, Lambda, M_W ), 14. / 23. ) -
254 pow( eta( mu, n_f, Lambda, M_W ), 16. / 23. ) ) *
255 C8( M_t, M_W );
256 return myC7eff;
257}
258
259EvtComplex EvtWilsonCoefficients::C8eff0( double mu = 4.8, int n_f = 5,
260 double Lambda = 0.2167,
261 double M_t = 174.3, double M_W = 80.425 )
262{
263 int i;
264 EvtComplex myC8eff( 0, 0 );
265 for ( i = 0; i < 8; i++ )
266 myC8eff += m_g[i] * pow( eta( mu, n_f, Lambda, M_W ), m_a[i] );
267 myC8eff += pow( eta( mu, n_f, Lambda, M_W ), 14. / 23. ) * C8( M_t, M_W );
268 return myC8eff;
269}
270
272 double M_t = 174.3,
273 double M_W = 80.425 )
274{
275 return EvtComplex( -Y( M_t * M_t / M_W / M_W ) / sin2W, 0 );
276}
277
279 double M_t = 174.3, double M_W = 80.425,
280 double ialpha = 137.036 )
281{
282 return ( 1. / 2 / EvtConst::pi / ialpha * C10tilda( sin2W, M_t, M_W ) );
283}
284
285double EvtWilsonCoefficients::A( double x )
286{
287 return ( x * ( 8 * x * x + 5 * x - 7 ) / 12 / pow( x - 1, 3 ) +
288 x * x * ( 2 - 3 * x ) * log( x ) / 2 / pow( x - 1, 4 ) );
289}
290
291double EvtWilsonCoefficients::B( double x )
292{
293 return ( x / 4 / ( 1 - x ) + x / 4 / ( x - 1 ) / ( x - 1 ) * log( x ) );
294}
295
296double EvtWilsonCoefficients::C( double x )
297{
298 return ( x * ( x - 6 ) / 8 / ( x - 1 ) +
299 x * ( 3 * x + 2 ) / 8 / ( x - 1 ) / ( x - 1 ) * log( x ) );
300}
301
302double EvtWilsonCoefficients::D( double x )
303{
304 return ( ( -19 * x * x * x + 25 * x * x ) / 36 / pow( x - 1, 3 ) +
305 x * x * ( 5 * x * x - 2 * x - 6 ) / 18 / pow( x - 1, 4 ) * log( x ) -
306 4. / 9 * log( x ) );
307}
308
309double EvtWilsonCoefficients::E( double x )
310{
311 return ( x * ( 18 - 11 * x - x * x ) / 12 / pow( 1 - x, 3 ) +
312 x * x * ( 15 - 16 * x + 4 * x * x ) / 6 / pow( 1 - x, 4 ) * log( x ) -
313 2. / 3 * log( x ) );
314}
315
316double EvtWilsonCoefficients::F( double x )
317{
318 return ( x * ( x * x - 5 * x - 2 ) / 4 / pow( x - 1, 3 ) +
319 3 * x * x / 2 / pow( x - 1, 4 ) * log( x ) );
320}
321
322double EvtWilsonCoefficients::Y( double x )
323{
324 return ( C( x ) - B( x ) );
325}
326
327double EvtWilsonCoefficients::Z( double x )
328{
329 return ( C( x ) + 1. / 4 * D( x ) );
330}
331
332EvtComplex EvtWilsonCoefficients::C9( int ksi = 0, double mu = 4.8, int n_f = 5,
333 double Lambda = 0.2167,
334 double sin2W = 0.23120,
335 double M_t = 174.3, double M_W = 80.425,
336 double ialpha = 137.036 )
337{
338 return ( 1. / 2 / EvtConst::pi / ialpha *
339 C9tilda( ksi, mu, n_f, Lambda, sin2W, M_t, M_W ) );
340}
341
342EvtComplex EvtWilsonCoefficients::C9tilda( int ksi = 0, double mu = 4.8,
343 int n_f = 5, double Lambda = 0.2167,
344 double sin2W = 0.23120,
345 double M_t = 174.3,
346 double M_W = 80.425 )
347{
348 return ( P0( ksi, mu, n_f, Lambda, M_W ) +
349 Y( M_t * M_t / M_W / M_W ) / sin2W - 4 * Z( M_t * M_t / M_W / M_W ) +
350 PE( mu, n_f, Lambda, M_W ) * E( M_t * M_t / M_W / M_W ) );
351}
352
353EvtComplex EvtWilsonCoefficients::P0( int ksi = 0, double mu = 4.8, int n_f = 5,
354 double Lambda = 0.2167, double M_W = 80.425 )
355{
356 int i;
357 EvtComplex myP0( 0, 0 );
358 for ( i = 0; i < 8; i++ )
359 myP0 += m_p[i] * pow( eta( mu, n_f, Lambda, M_W ), m_a[i] + 1 );
360 myP0 = EvtConst::pi / alphaS( M_W, n_f, Lambda ) * ( -0.1875 + myP0 );
361 myP0 += 1.2468 -
362 ksi * 4. / 9. *
363 ( 3 * C1( mu, n_f, Lambda, M_W ) + C2( mu, n_f, Lambda, M_W ) -
364 C3( mu, n_f, Lambda, M_W ) - 3 * C4( mu, n_f, Lambda, M_W ) );
365 for ( i = 0; i < 8; i++ )
366 myP0 += pow( eta( mu, n_f, Lambda, M_W ), m_a[i] ) *
367 ( m_r[ksi][i] + m_s[i] * eta( mu, n_f, Lambda, M_W ) );
368 return myP0;
369}
370
371double EvtWilsonCoefficients::PE( double mu = 4.8, int n_f = 5,
372 double Lambda = 0.2167, double M_W = 80.425 )
373{
374 int i;
375 double myPE = 0.1405;
376 for ( i = 0; i < 8; i++ )
377 myPE += m_q[i] * pow( eta( mu, n_f, Lambda, M_W ), m_a[i] + 1 );
378 return myPE;
379}
380
382{
384 m_C1 = C1( m_mu, m_n_f, m_Lambda, m_M_W );
385 m_C2 = C2( m_mu, m_n_f, m_Lambda, m_M_W );
386 m_C3 = C3( m_mu, m_n_f, m_Lambda, m_M_W );
387 m_C4 = C4( m_mu, m_n_f, m_Lambda, m_M_W );
388 m_C5 = C5( m_mu, m_n_f, m_Lambda, m_M_W );
389 m_C6 = C6( m_mu, m_n_f, m_Lambda, m_M_W );
390 m_C7 = C7( m_M_t, m_M_W );
391 m_C8 = C8( m_M_t, m_M_W );
396 m_A = A( m_M_t * m_M_t / m_M_W / m_M_W );
397 m_B = B( m_M_t * m_M_t / m_M_W / m_M_W );
398 m_C = C( m_M_t * m_M_t / m_M_W / m_M_W );
399 m_D = D( m_M_t * m_M_t / m_M_W / m_M_W );
400 m_E = E( m_M_t * m_M_t / m_M_W / m_M_W );
401 m_F = F( m_M_t * m_M_t / m_M_W / m_M_W );
402 m_Y = Y( m_M_t * m_M_t / m_M_W / m_M_W );
403 m_Z = Z( m_M_t * m_M_t / m_M_W / m_M_W );
407 m_PE = PE( m_mu, m_n_f, m_Lambda, m_M_W );
410 EvtGenReport( EVTGEN_INFO, "EvtGen" )
411 << " +---------------------------------------" << std::endl;
412 EvtGenReport( EVTGEN_INFO, "EvtGen" )
413 << " | Table of Wilson coeficients:" << std::endl;
414 EvtGenReport( EVTGEN_INFO, "EvtGen" )
415 << " +---------------------------------------" << std::endl;
416 EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C1 = " << m_C1 << std::endl;
417 EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C2 = " << m_C2 << std::endl;
418 EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C3 = " << m_C3 << std::endl;
419 EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C4 = " << m_C4 << std::endl;
420 EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C5 = " << m_C5 << std::endl;
421 EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C6 = " << m_C6 << std::endl;
422 EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C7 = " << m_C7 << std::endl;
423 EvtGenReport( EVTGEN_INFO, "EvtGen" )
424 << " | C7eff0 = " << m_C7eff0 << std::endl;
425 EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C8 = " << m_C8 << std::endl;
426 EvtGenReport( EVTGEN_INFO, "EvtGen" )
427 << " | C8eff0 = " << m_C8eff0 << std::endl;
428 EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C9 = " << m_C9 << std::endl;
429 EvtGenReport( EVTGEN_INFO, "EvtGen" )
430 << " | C10 = " << m_C10 << std::endl;
431 EvtGenReport( EVTGEN_INFO, "EvtGen" )
432 << " +---------------------------------------" << std::endl;
433 EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | Other constants:" << std::endl;
434 EvtGenReport( EVTGEN_INFO, "EvtGen" )
435 << " +---------------------------------------" << std::endl;
436 EvtGenReport( EVTGEN_INFO, "EvtGen" )
437 << " | Scale = " << m_mu << " GeV" << std::endl;
438 EvtGenReport( EVTGEN_INFO, "EvtGen" )
439 << " | Number of effective flavors = " << m_n_f << std::endl;
440 EvtGenReport( EVTGEN_INFO, "EvtGen" )
441 << " | Corresponding to aS(M_Z)"
442 << "=" << m_alphaMZ << " Lambda = " << m_Lambda << " GeV" << std::endl;
443 EvtGenReport( EVTGEN_INFO, "EvtGen" )
444 << " | Strong coupling constant = " << m_alphaS << std::endl;
445 EvtGenReport( EVTGEN_INFO, "EvtGen" )
446 << " | Electromagnetic constant = 1/" << m_ialpha << std::endl;
447 EvtGenReport( EVTGEN_INFO, "EvtGen" )
448 << " | Top mass = " << m_M_t << " GeV" << std::endl;
449 EvtGenReport( EVTGEN_INFO, "EvtGen" )
450 << " | W-boson mass = " << m_M_W << " GeV" << std::endl;
451 EvtGenReport( EVTGEN_INFO, "EvtGen" )
452 << " | Z-boson mass = " << m_M_Z << " GeV" << std::endl;
453 EvtGenReport( EVTGEN_INFO, "EvtGen" )
454 << " | Sinus squared of Weinberg angle = " << m_sin2W << std::endl;
455 EvtGenReport( EVTGEN_INFO, "EvtGen" )
456 << " +---------------------------------------" << std::endl;
457 EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
458 << " | Intermediate functions:" << std::endl;
459 EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
460 << " +---------------------------------------" << std::endl;
461 EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | A = " << m_A << std::endl;
462 EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | B = " << m_B << std::endl;
463 EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | C = " << m_C << std::endl;
464 EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | D = " << m_D << std::endl;
465 EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | E = " << m_E << std::endl;
466 EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | F = " << m_F << std::endl;
467 EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | Y = " << m_Y << std::endl;
468 EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | Z = " << m_Z << std::endl;
469 EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | eta = " << m_eta << std::endl;
470 EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
471 << " | C9~ = " << m_C9tilda << std::endl;
472 EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
473 << " | C10~ = " << m_C10tilda << std::endl;
474 EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | P0 = " << m_P0 << std::endl;
475 EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | PE = " << m_PE << std::endl;
476 EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
477 << " +--------------------------------------" << std::endl;
478}
479
480EvtComplex EvtWilsonCoefficients::hzs( double z, double shat, double mu = 4.8,
481 double M_b = 4.8 )
482{
483 EvtComplex i1( 0, 1 );
484 double x = 4. * z * z / shat;
485 if ( x == 0 )
486 return ( 8. / 27. - 8. / 9. * log( M_b / mu ) - 4. / 9. * log( shat ) +
487 4. / 9. * i1 * EvtConst::pi );
488 else if ( x > 1 )
489 return ( 8. / 27. - 8. / 9. * log( M_b / mu ) - 8. / 9. * log( z ) +
490 4. / 9. * x -
491 2. / 9. * ( 2. + x ) * sqrt( x - 1. ) * 2 *
492 atan( 1. / sqrt( x - 1. ) ) );
493 else
494 return (
495 8. / 27. - 8. / 9. * log( M_b / mu ) - 8. / 9. * log( z ) +
496 4. / 9. * x -
497 2. / 9. * ( 2. + x ) * sqrt( 1. - x ) *
498 ( log( fabs( sqrt( 1. - x ) + 1 ) / fabs( sqrt( 1. - x ) - 1 ) ) -
499 i1 * EvtConst::pi ) );
500}
501
503{
504 return ( 1. - 8. * z * z + 8. * pow( z, 6. ) - pow( z, 8. ) -
505 24. * pow( z, 4. ) * log( z ) );
506}
507
508double EvtWilsonCoefficients::kappa( double z, double alpha_S )
509{
510 return ( 1. - 2. * alpha_S / 3. / EvtConst::pi *
511 ( ( EvtConst::pi * EvtConst::pi - 31. / 4. ) *
512 ( 1. - z ) * ( 1. - z ) +
513 1.5 ) );
514}
515
516double EvtWilsonCoefficients::etatilda( double shat, double alpha_S )
517{
518 return ( 1. + alpha_S / EvtConst::pi * omega( shat ) );
519}
520
521double EvtWilsonCoefficients::omega( double shat )
522{
523 double o = 0;
524 o -= ( 2. / 9. ) * EvtConst::pi * EvtConst::pi;
525 o -= ( 4. / 3. ) * li2spence( shat );
526 o -= ( 2. / 3. ) * log( shat ) * log( 1. - shat );
527 o -= log( 1. - shat ) * ( 5. + 4. * shat ) / ( 3. + 6. * shat );
528 o -= log( shat ) * 2. * shat * ( 1. + shat ) * ( 1. - 2. * shat ) / 3. /
529 ( 1. - shat ) / ( 1. - shat ) / ( 1. + 2. * shat );
530 o += ( 5. + 9. * shat - 6. * shat * shat ) / 6. / ( 1. - shat ) /
531 ( 1. + 2. * shat );
532 return o;
533}
534
536 double alpha_S, EvtComplex c1,
537 EvtComplex c2, EvtComplex c3,
538 EvtComplex c4, EvtComplex c5,
539 EvtComplex c6, EvtComplex c9tilda,
540 int ksi = 0 )
541{
542 EvtComplex c( 0, 0 );
543 c += ( c9tilda + ksi * 4. / 9. * ( 3. * c1 + c2 - c3 - 3. * c4 ) ) *
544 etatilda( shat, alpha_S );
545 c += hzs( z, shat ) * ( 3. * c1 + c2 + 3. * c3 + c4 + 3. * c5 + c6 );
546 c -= 0.5 * hzs( 1, shat ) * ( 4. * c3 + 4. * c4 + 3. * c5 + c6 );
547 c -= 0.5 * hzs( 0, shat ) * ( c3 + 3. * c4 );
548 c += 2. / 9. * ( 3. * c3 + c4 + 3. * c5 + c6 );
549 return c;
550}
551
552EvtComplex EvtWilsonCoefficients::C7b2sg( double alpha_S, double et,
553 EvtComplex c2, double M_t = 174.3,
554 double M_W = 80.425 )
555{
556 EvtComplex i1( 0, 1 );
557 return ( i1 * alpha_S *
558 ( 2. / 9. * pow( et, 14. / 23. ) *
559 ( 0.5 * F( M_t * M_t / M_W / M_W ) - 0.1687 ) -
560 0.03 * c2 ) );
561}
562
563EvtComplex EvtWilsonCoefficients::Yld( double q2, double* ki, double* Gi,
564 double* Mi, int ni, EvtComplex c1,
565 EvtComplex c2, EvtComplex c3,
566 EvtComplex c4, EvtComplex c5,
567 EvtComplex c6, double ialpha = 137.036 )
568{
569 EvtComplex i1( 0, 1 );
570 EvtComplex y( 0, 0 );
571 int i;
572 for ( i = 0; i < ni; i++ )
573 y += ki[i] * Gi[i] * Mi[i] / ( q2 - Mi[i] * Mi[i] - i1 * Mi[i] * Gi[i] );
574 return ( -3. * ialpha * ialpha * y * EvtConst::pi *
575 ( 3. * c1 + c2 + 3. * c3 + c4 + 3. * c5 + c6 ) );
576}
double li2spence(double x)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition EvtReport.cpp:32
@ EVTGEN_INFO
Definition EvtReport.hh:52
@ EVTGEN_DEBUG
Definition EvtReport.hh:53
@ EVTGEN_ERROR
Definition EvtReport.hh:49
double li2spence(double)
static const double pi
Definition EvtConst.hh:26
EvtComplex C7eff0(double mu, int n_f, double Lambda, double M_t, double M_W)
double Lambda(double alpha, int n_f, double mu, double epsilon, int maxstep)
EvtComplex C1(double mu, int n_f, double Lambda, double M_W)
double eta(double mu, int n_f, double Lambda, double M_W)
EvtComplex C10tilda(double sin2W, double M_t, double M_W)
double etatilda(double shat, double alpha_S)
EvtComplex C6(double mu, int n_f, double Lambda, double M_W)
double PE(double mu, int n_f, double Lambda, double M_W)
EvtComplex C9tilda(int ksi, double mu, int n_f, double Lambda, double sin2W, double M_t, double M_W)
EvtComplex C7(double M_t, double M_W)
EvtComplex Yld(double q2, double ki[], double Gi[], double Mi[], int ni, EvtComplex c1, EvtComplex c2, EvtComplex c3, EvtComplex c4, EvtComplex c5, EvtComplex c6, double ialpha)
EvtComplex C7b2sg(double alpha_S, double et, EvtComplex c2, double M_t, double M_W)
double alphaS(double mu, int n_f, double Lambda)
EvtComplex C9efftilda(double z, double shat, double alpha_S, EvtComplex c1, EvtComplex c2, EvtComplex c3, EvtComplex c4, EvtComplex c5, EvtComplex c6, EvtComplex c9tilda, int ksi)
EvtComplex C5(double mu, int n_f, double Lambda, double M_W)
EvtComplex C8eff0(double mu, int n_f, double Lambda, double M_t, double M_W)
EvtComplex C9(int ksi, double mu, int n_f, double Lambda, double sin2W, double M_t, double M_W, double ialpha)
EvtComplex C2(double mu, int n_f, double Lambda, double M_W)
void SetRenormalizationScheme(std::string scheme)
EvtComplex C10(double sin2W, double M_t, double M_W, double ialpha)
EvtComplex P0(int ksi, double mu, int n_f, double Lambda, double M_W)
EvtComplex C3(double mu, int n_f, double Lambda, double M_W)
EvtComplex hzs(double z, double shat, double mu, double M_b)
EvtComplex C4(double mu, int n_f, double Lambda, double M_W)
double kappa(double z, double alpha_S)
EvtComplex C8(double M_t, double M_W)