evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
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 
23 #include "EvtGenBase/EvtConst.hh"
24 #include "EvtGenBase/EvtPatches.hh"
25 #include "EvtGenBase/EvtReport.hh"
26 
27 #include <stdlib.h>
28 
29 double li2spence( double );
30 
32 {
33  int i, j;
34  double tmpa[8] = {14. / 23., 16. / 23., 6. / 23., -12. / 23.,
35  0.4086, -0.4230, -0.8994, 0.1456};
36  double tmph[8] = {2.2996, -1.0880, -3. / 7., -1. / 14.,
37  -0.6494, -0.0380, -0.0186, -0.0057};
38  double tmpp[8] = {0, 0, -80. / 203., 8. / 33.,
39  0.0433, 0.1384, 0.1648, -0.0073};
40  double tmps[8] = {0, 0, -0.2009, -0.3579, 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  a[i] = tmpa[i];
56  h[i] = tmph[i];
57  p[i] = tmpp[i];
58  s[i] = tmps[i];
59  q[i] = tmpq[i];
60  g[i] = tmpg[i];
61  for ( j = 0; j < 6; j++ )
62  k[j][i] = tmpk[j][i];
63  for ( j = 0; j < 2; j++ )
64  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 
97 double 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 
114 double 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 
166 double 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 
172 EvtComplex 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 += k[0][i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
179  return myC1;
180 }
181 
182 EvtComplex 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 += k[1][i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
189  return myC2;
190 }
191 
192 EvtComplex 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 += k[2][i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
199  return myC3;
200 }
201 
202 EvtComplex 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 += k[3][i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
209  return myC4;
210 }
211 
212 EvtComplex 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 += k[4][i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
219  return myC5;
220 }
221 
222 EvtComplex 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 += k[5][i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
229  return myC6;
230 }
231 
232 EvtComplex 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 
237 EvtComplex 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 
242 EvtComplex 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 += h[i] * pow( eta( mu, n_f, Lambda, M_W ), 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 
259 EvtComplex 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 += g[i] * pow( eta( mu, n_f, Lambda, M_W ), 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 
278 EvtComplex EvtWilsonCoefficients::C10( double sin2W = 0.23120,
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 
285 double 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 
291 double EvtWilsonCoefficients::B( double x )
292 {
293  return ( x / 4 / ( 1 - x ) + x / 4 / ( x - 1 ) / ( x - 1 ) * log( x ) );
294 }
295 
296 double 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 
302 double 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 
309 double 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 
316 double 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 
322 double EvtWilsonCoefficients::Y( double x )
323 {
324  return ( C( x ) - B( x ) );
325 }
326 
327 double EvtWilsonCoefficients::Z( double x )
328 {
329  return ( C( x ) + 1. / 4 * D( x ) );
330 }
331 
332 EvtComplex 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 
342 EvtComplex 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 
353 EvtComplex 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 += p[i] * pow( eta( mu, n_f, Lambda, M_W ), 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 ), a[i] ) *
367  ( r[ksi][i] + s[i] * eta( mu, n_f, Lambda, M_W ) );
368  return myP0;
369 }
370 
371 double 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 += q[i] * pow( eta( mu, n_f, Lambda, M_W ), 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 );
406  m_P0 = P0( m_ksi, m_mu, m_n_f, m_Lambda, m_M_W );
407  m_PE = PE( m_mu, m_n_f, m_Lambda, m_M_W );
409  m_eta = eta( 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 
480 EvtComplex 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 
502 double EvtWilsonCoefficients::fz( double z )
503 {
504  return ( 1. - 8. * z * z + 8. * pow( z, 6. ) - pow( z, 8. ) -
505  24. * pow( z, 4. ) * log( z ) );
506 }
507 
508 double 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 
516 double EvtWilsonCoefficients::etatilda( double shat, double alpha_S )
517 {
518  return ( 1. + alpha_S / EvtConst::pi * omega( shat ) );
519 }
520 
521 double 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 
552 EvtComplex 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 
563 EvtComplex 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 kappa(double z, double alpha_S)
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)
double alphaS(double mu, int n_f, double Lambda)
EvtComplex C8(double M_t, double M_W)
double PE(double mu, int n_f, double Lambda, double M_W)
EvtComplex C2(double mu, int n_f, double Lambda, double M_W)
EvtComplex C5(double mu, int n_f, double Lambda, double M_W)
EvtComplex C6(double mu, int n_f, double Lambda, double M_W)
EvtComplex hzs(double z, double shat, double mu, double M_b)
EvtComplex C10(double sin2W, double M_t, double M_W, double ialpha)
EvtComplex C10tilda(double sin2W, double M_t, double M_W)
EvtComplex C4(double mu, int n_f, double Lambda, double M_W)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
Definition: EvtReport.cpp:33
double Lambda(double alpha, int n_f, double mu, double epsilon, int maxstep)
EvtComplex P0(int ksi, double mu, int n_f, double Lambda, double M_W)
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)
static const double pi
Definition: EvtConst.hh:26
EvtComplex C8eff0(double mu, int n_f, double Lambda, double M_t, double M_W)
EvtComplex C3(double mu, int n_f, double Lambda, double M_W)
EvtComplex C1(double mu, int n_f, double Lambda, 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 C7eff0(double mu, int n_f, double Lambda, double M_t, double M_W)
EvtComplex C7b2sg(double alpha_S, double et, EvtComplex c2, double M_t, double M_W)
EvtComplex C9tilda(int ksi, double mu, int n_f, double Lambda, double sin2W, double M_t, double M_W)
void SetRenormalizationScheme(std::string scheme)
double eta(double mu, int n_f, double Lambda, double M_W)
EvtComplex C7(double M_t, double M_W)
double etatilda(double shat, double alpha_S)
double li2spence(double)