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.
EvtRareLbToLllWC.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 //-----------------------------------------------------------------------------
24 // Implementation file for class : EvtRareLbToLllWC
25 //
26 // 2013-11-27 : Thomas Blake
27 //-----------------------------------------------------------------------------
28 
29 EvtComplex EvtRareLbToLllWC::GetC7Eff( const double q2 ) const
30 {
31  static double mbeff = 4.8;
32  double shat = q2 / mbeff / mbeff;
33  double logshat;
34  logshat = log( shat );
35 
36  double muscale;
37  muscale = 2.5;
38  double alphas;
39  alphas = 0.267;
40  double A7;
41  A7 = -0.353 + 0.023;
42  double A8;
43  A8 = -0.164;
44  double C1;
45  C1 = -0.697;
46  double C2;
47  C2 = 1.046;
48 
49  double Lmu;
50  Lmu = log( muscale / mbeff );
51 
52  EvtComplex uniti( 0.0, 1.0 );
53 
54  EvtComplex c7eff;
55  if ( shat > 0.25 ) {
56  c7eff = A7;
57  return c7eff;
58  }
59 
60  // change energy scale to 5.0 for full NNLO calculation below shat = 0.25
61  muscale = 5.0;
62  alphas = 0.215;
63  A7 = -0.312 + 0.008;
64  A8 = -0.148;
65  C1 = -0.487;
66  C2 = 1.024;
67  Lmu = log( muscale / mbeff );
68 
69  EvtComplex F71;
70  EvtComplex f71;
71  EvtComplex k7100( -0.68192, -0.074998 );
72  EvtComplex k7101( 0.0, 0.0 );
73  EvtComplex k7110( -0.23935, -0.12289 );
74  EvtComplex k7111( 0.0027424, 0.019676 );
75  EvtComplex k7120( -0.0018555, -0.175 );
76  EvtComplex k7121( 0.022864, 0.011456 );
77  EvtComplex k7130( 0.28248, -0.12783 );
78  EvtComplex k7131( 0.029027, -0.0082265 );
79  f71 = k7100 + k7101 * logshat + shat * ( k7110 + k7111 * logshat ) +
80  shat * shat * ( k7120 + k7121 * logshat ) +
81  shat * shat * shat * ( k7130 + k7131 * logshat );
82  F71 = ( -208.0 / 243.0 ) * Lmu + f71;
83 
84  EvtComplex F72;
85  EvtComplex f72;
86  EvtComplex k7200( 4.0915, 0.44999 );
87  EvtComplex k7201( 0.0, 0.0 );
88  EvtComplex k7210( 1.4361, 0.73732 );
89  EvtComplex k7211( -0.016454, -0.11806 );
90  EvtComplex k7220( 0.011133, 1.05 );
91  EvtComplex k7221( -0.13718, -0.068733 );
92  EvtComplex k7230( -1.6949, 0.76698 );
93  EvtComplex k7231( -0.17416, 0.049359 );
94  f72 = k7200 + k7201 * logshat + shat * ( k7210 + k7211 * logshat ) +
95  shat * shat * ( k7220 + k7221 * logshat ) +
96  shat * shat * shat * ( k7230 + k7231 * logshat );
97  F72 = ( 416.0 / 81.0 ) * Lmu + f72;
98 
99  EvtComplex F78;
100  F78 = ( -32.0 / 9.0 ) * Lmu + 8.0 * EvtConst::pi * EvtConst::pi / 27.0 +
101  ( -44.0 / 9.0 ) + ( -8.0 * EvtConst::pi / 9.0 ) * uniti +
102  ( 4.0 / 3.0 * EvtConst::pi * EvtConst::pi - 40.0 / 3.0 ) * shat +
103  ( 32.0 * EvtConst::pi * EvtConst::pi / 9.0 - 316.0 / 9.0 ) * shat *
104  shat +
105  ( 200.0 * EvtConst::pi * EvtConst::pi / 27.0 - 658.0 / 9.0 ) * shat *
106  shat * shat +
107  ( -8.0 * logshat / 9.0 ) * ( shat + shat * shat + shat * shat * shat );
108 
109  c7eff = A7 - alphas / ( 4.0 * EvtConst::pi ) *
110  ( C1 * F71 + C2 * F72 + A8 * F78 );
111 
112  return c7eff;
113 }
114 
115 EvtComplex EvtRareLbToLllWC::GetC9Eff( const double q2, const bool btod ) const
116 {
117  static double mbeff = 4.8;
118  double shat = q2 / mbeff / mbeff;
119  double logshat;
120  logshat = log( shat );
121  double mchat = 0.29;
122 
123  double muscale;
124  muscale = 2.5;
125  double alphas;
126  alphas = 0.267;
127  double A8;
128  A8 = -0.164;
129  double A9;
130  A9 = 4.287 + ( -0.218 );
131  double C1;
132  C1 = -0.697;
133  double C2;
134  C2 = 1.046;
135  double T9;
136  T9 = 0.114 + 0.280;
137  double U9;
138  U9 = 0.045 + 0.023;
139  double W9;
140  W9 = 0.044 + 0.016;
141 
142  double Lmu;
143  Lmu = log( muscale / mbeff );
144 
145  EvtComplex uniti( 0.0, 1.0 );
146 
147  EvtComplex hc;
148  double xarg;
149  xarg = 4.0 * mchat / shat;
150  hc = -4.0 / 9.0 * log( mchat * mchat ) + 8.0 / 27.0 + 4.0 * xarg / 9.0;
151 
152  if ( xarg < 1.0 ) {
153  hc = hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
154  ( log( fabs( ( sqrt( 1.0 - xarg ) + 1.0 ) /
155  ( sqrt( 1.0 - xarg ) - 1.0 ) ) ) -
156  uniti * EvtConst::pi );
157  } else {
158  hc = hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
159  2.0 * atan( 1.0 / sqrt( xarg - 1.0 ) );
160  }
161 
162  EvtComplex h1;
163  xarg = 4.0 / shat;
164  h1 = 8.0 / 27.0 + 4.0 * xarg / 9.0;
165  if ( xarg < 1.0 ) {
166  h1 = h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
167  ( log( fabs( ( sqrt( 1.0 - xarg ) + 1.0 ) /
168  ( sqrt( 1.0 - xarg ) - 1.0 ) ) ) -
169  uniti * EvtConst::pi );
170  } else {
171  h1 = h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
172  2.0 * atan( 1.0 / sqrt( xarg - 1.0 ) );
173  }
174 
175  EvtComplex h0;
176  h0 = 8.0 / 27.0 - 4.0 * log( 2.0 ) / 9.0 + 4.0 * uniti * EvtConst::pi / 9.0;
177 
178  // X=V_{ud}^* V_ub / V_{td}^* V_tb * (4/3 C_1 +C_2) * (h(\hat m_c^2, hat s)-
179  // h(\hat m_u^2, hat s))
180  EvtComplex Vudstar( 1.0 - 0.2279 * 0.2279 / 2.0, 0.0 );
181  EvtComplex Vub( ( 0.118 + 0.273 ) / 2.0, -1.0 * ( 0.305 + 0.393 ) / 2.0 );
182  EvtComplex Vtdstar( 1.0 - ( 0.118 + 0.273 ) / 2.0, ( 0.305 + 0.393 ) / 2.0 );
183  EvtComplex Vtb( 1.0, 0.0 );
184 
185  EvtComplex Xd;
186  Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) *
187  ( hc - h0 );
188 
189  EvtComplex c9eff = 4.344;
190  if ( shat > 0.25 ) {
191  c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0;
192  if ( btod ) {
193  c9eff += Xd;
194  }
195 
196  return c9eff;
197  }
198 
199  // change energy scale to 5.0 for full NNLO calculation below shat = 0.25
200  muscale = 5.0;
201  alphas = 0.215;
202  A9 = 4.174 + ( -0.035 );
203  C1 = -0.487;
204  C2 = 1.024;
205  A8 = -0.148;
206  T9 = 0.374 + 0.252;
207  U9 = 0.033 + 0.015;
208  W9 = 0.032 + 0.012;
209  Lmu = log( muscale / mbeff );
210 
211  EvtComplex F91;
212  EvtComplex f91;
213  EvtComplex k9100( -11.973, 0.16371 );
214  EvtComplex k9101( -0.081271, -0.059691 );
215  EvtComplex k9110( -28.432, -0.25044 );
216  EvtComplex k9111( -0.040243, 0.016442 );
217  EvtComplex k9120( -57.114, -0.86486 );
218  EvtComplex k9121( -0.035191, 0.027909 );
219  EvtComplex k9130( -128.8, -2.5243 );
220  EvtComplex k9131( -0.017587, 0.050639 );
221  f91 = k9100 + k9101 * logshat + shat * ( k9110 + k9111 * logshat ) +
222  shat * shat * ( k9120 + k9121 * logshat ) +
223  shat * shat * shat * ( k9130 + k9131 * logshat );
224  F91 = ( -1424.0 / 729.0 + 16.0 * uniti * EvtConst::pi / 243.0 +
225  64.0 / 27.0 * log( mchat ) ) *
226  Lmu -
227  16.0 * Lmu * logshat / 243.0 +
228  ( 16.0 / 1215.0 - 32.0 / 135.0 / mchat / mchat ) * Lmu * shat +
229  ( 4.0 / 2835.0 - 8.0 / 315.0 / mchat / mchat / mchat / mchat ) * Lmu *
230  shat * shat +
231  ( 16.0 / 76545.0 -
232  32.0 / 8505.0 / mchat / mchat / mchat / mchat / mchat / mchat ) *
233  Lmu * shat * shat * shat -
234  256.0 * Lmu * Lmu / 243.0 + f91;
235 
236  EvtComplex F92;
237  EvtComplex f92;
238  EvtComplex k9200( 6.6338, -0.98225 );
239  EvtComplex k9201( 0.48763, 0.35815 );
240  EvtComplex k9210( 3.3585, 1.5026 );
241  EvtComplex k9211( 0.24146, -0.098649 );
242  EvtComplex k9220( -1.1906, 5.1892 );
243  EvtComplex k9221( 0.21115, -0.16745 );
244  EvtComplex k9230( -17.12, 15.146 );
245  EvtComplex k9231( 0.10552, -0.30383 );
246  f92 = k9200 + k9201 * logshat + shat * ( k9210 + k9211 * logshat ) +
247  shat * shat * ( k9220 + k9221 * logshat ) +
248  shat * shat * shat * ( k9230 + k9231 * logshat );
249  F92 = ( 256.0 / 243.0 - 32.0 * uniti * EvtConst::pi / 81.0 -
250  128.0 / 9.0 * log( mchat ) ) *
251  Lmu +
252  32.0 * Lmu * logshat / 81.0 +
253  ( -32.0 / 405.0 + 64.0 / 45.0 / mchat / mchat ) * Lmu * shat +
254  ( -8.0 / 945.0 + 16.0 / 105.0 / mchat / mchat / mchat / mchat ) *
255  Lmu * shat * shat +
256  ( -32.0 / 25515.0 +
257  64.0 / 2835.0 / mchat / mchat / mchat / mchat / mchat / mchat ) *
258  Lmu * shat * shat * shat +
259  512.0 * Lmu * Lmu / 81.0 + f92;
260 
261  EvtComplex F98;
262  F98 = 104.0 / 9.0 - 32.0 * EvtConst::pi * EvtConst::pi / 27.0 +
263  ( 1184.0 / 27.0 - 40.0 * EvtConst::pi * EvtConst::pi / 9.0 ) * shat +
264  ( 14212.0 / 135.0 - 32.0 * EvtConst::pi * EvtConst::pi / 3.0 ) *
265  shat * shat +
266  ( 193444.0 / 945.0 - 560.0 * EvtConst::pi * EvtConst::pi / 27.0 ) *
267  shat * shat * shat +
268  16.0 * logshat / 9.0 *
269  ( 1.0 + shat + shat * shat + shat * shat * shat );
270 
271  Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) *
272  ( hc - h0 );
273 
274  c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0 -
275  alphas / ( 4.0 * EvtConst::pi ) * ( C1 * F91 + C2 * F92 + A8 * F98 );
276  if ( btod ) {
277  c9eff += Xd;
278  }
279 
280  return c9eff;
281 }
282 
283 /*
284  Calculate C10 coefficient
285 
286  C10 is scale (and q^2) independent
287 */
289 {
290  double A10;
291  A10 = -4.592 + 0.379;
292 
293  EvtComplex c10eff;
294  c10eff = A10;
295 
296  return c10eff;
297 }
298 
299 //=============================================================================
static const double pi
Definition: EvtConst.hh:26
EvtComplex GetC9Eff(const double q2, const bool btod=false) const
EvtComplex GetC7Eff(const double q2) const
EvtComplex GetC10Eff(const double q2) const