229 if (!SM.getFlavour().getUpdateFlag(meson, vectorM,
QCD::NOLEPTON))
return;
233 MM = SM.getMesons(meson).getMass();
235 MV = SM.getMesons(vectorM).getMass();
243 fB = SM.getMesons(meson).getDecayconst();
244 width = SM.getMesons(meson).computeWidth();
256 a_0T1 = SM.getOptionalParameter(
"a_0T1");
257 a_1T1 = SM.getOptionalParameter(
"a_1T1");
258 a_2T1 = SM.getOptionalParameter(
"a_2T1");
259 MRT1_2 = SM.getOptionalParameter(
"mBsst_1") * SM.getOptionalParameter(
"mBsst_1");
260 MRT12_2 = SM.getOptionalParameter(
"mBsst_2") * SM.getOptionalParameter(
"mBsst_2");
261 a_0f = SM.getOptionalParameter(
"a_0f");
262 a_1f = SM.getOptionalParameter(
"a_1f");
263 a_2f = SM.getOptionalParameter(
"a_2f");
264 MRf_2 = SM.getOptionalParameter(
"mBs1_1") * SM.getOptionalParameter(
"mBs1_1");
265 MRf2_2 = SM.getOptionalParameter(
"mBs1_2") * SM.getOptionalParameter(
"mBs1_2");
266 a_0g = SM.getOptionalParameter(
"a_0g");
267 a_1g = SM.getOptionalParameter(
"a_1g");
268 a_2g = SM.getOptionalParameter(
"a_2g");
269 MRg_2 = SM.getOptionalParameter(
"mBsst_1") * SM.getOptionalParameter(
"mBsst_1");
270 MRg2_2 = SM.getOptionalParameter(
"mBsst_2") * SM.getOptionalParameter(
"mBsst_2");
271 Chi1minus = SM.getOptionalParameter(
"Chi1minus");
272 Chi1plus = SM.getOptionalParameter(
"Chi1plus");
273 ChiTT = SM.getOptionalParameter(
"ChiTT");
277 a_0T1 = SM.getOptionalParameter(
"a_0T1");
278 a_0A1 = SM.getOptionalParameter(
"a_0A1");
279 a_0V = SM.getOptionalParameter(
"a_0V");
281 lambda_t = SM.getCKM().computelamt_s();
282 lambda_u = SM.getCKM().computelamu_s();
288 a_0T1 = SM.getOptionalParameter(
"a_0T1");
289 a_1T1 = SM.getOptionalParameter(
"a_1T1");
290 a_2T1 = SM.getOptionalParameter(
"a_2T1");
291 MRT1_2 = SM.getOptionalParameter(
"mBsst_1") * SM.getOptionalParameter(
"mBsst_1");
292 MRT12_2 = SM.getOptionalParameter(
"mBsst_2") * SM.getOptionalParameter(
"mBsst_2");
293 a_0f = SM.getOptionalParameter(
"a_0f");
294 a_1f = SM.getOptionalParameter(
"a_1f");
295 a_2f = SM.getOptionalParameter(
"a_2f");
296 MRf_2 = SM.getOptionalParameter(
"mBs1_1") * SM.getOptionalParameter(
"mBs1_1");
297 MRf2_2 = SM.getOptionalParameter(
"mBs1_2") * SM.getOptionalParameter(
"mBs1_2");
298 a_0g = SM.getOptionalParameter(
"a_0g");
299 a_1g = SM.getOptionalParameter(
"a_1g");
300 a_2g = SM.getOptionalParameter(
"a_2g");
301 MRg_2 = SM.getOptionalParameter(
"mBsst_1") * SM.getOptionalParameter(
"mBsst_1");
302 MRg2_2 = SM.getOptionalParameter(
"mBsst_2") * SM.getOptionalParameter(
"mBsst_2");
303 Chi1minus = SM.getOptionalParameter(
"Chi1minus");
304 Chi1plus = SM.getOptionalParameter(
"Chi1plus");
305 ChiTT = SM.getOptionalParameter(
"ChiTT");
309 a_0T1 = SM.getOptionalParameter(
"a_0T1");
310 a_0A1 = SM.getOptionalParameter(
"a_0A1");
311 a_0V = SM.getOptionalParameter(
"a_0V");
313 lambda_t = SM.getCKM().computelamt_s();
314 lambda_u = SM.getCKM().computelamu_s();
320 a_0T1 = SM.getOptionalParameter(
"a_0T1phi");
321 a_1T1 = SM.getOptionalParameter(
"a_1T1phi");
322 a_2T1 = SM.getOptionalParameter(
"a_2T1phi");
323 MRT1_2 = SM.getOptionalParameter(
"mBsst_1") * SM.getOptionalParameter(
"mBsst_1");
324 MRT12_2 = SM.getOptionalParameter(
"mBsst_2") * SM.getOptionalParameter(
"mBsst_2");
325 a_0f = SM.getOptionalParameter(
"a_0fphi");
326 a_1f = SM.getOptionalParameter(
"a_1fphi");
327 a_2f = SM.getOptionalParameter(
"a_2fphi");
328 MRf_2 = SM.getOptionalParameter(
"mBs1_1") * SM.getOptionalParameter(
"mBs1_1");
329 MRf2_2 = SM.getOptionalParameter(
"mBs1_2") * SM.getOptionalParameter(
"mBs1_2");
330 a_0g = SM.getOptionalParameter(
"a_0gphi");
331 a_1g = SM.getOptionalParameter(
"a_1gphi");
332 a_2g = SM.getOptionalParameter(
"a_2gphi");
333 MRg_2 = SM.getOptionalParameter(
"mBsst_1") * SM.getOptionalParameter(
"mBsst_1");
334 MRg2_2 = SM.getOptionalParameter(
"mBsst_2") * SM.getOptionalParameter(
"mBsst_2");
335 Chi1minus = SM.getOptionalParameter(
"Chi1minus");
336 Chi1plus = SM.getOptionalParameter(
"Chi1plus");
337 ChiTT = SM.getOptionalParameter(
"ChiTT");
341 a_0T1 = SM.getOptionalParameter(
"a_0T1phi");
342 a_0A1 = SM.getOptionalParameter(
"a_0A1phi");
343 a_0V = SM.getOptionalParameter(
"a_0Vphi");
345 lambda_t = SM.getCKM().computelamt_s();
346 lambda_u = SM.getCKM().computelamu_s();
348 SU3_breaking = gslpp::complex(1. + SM.getOptionalParameter(
"SU3_breaking_abs"),
349 SM.getOptionalParameter(
"SU3_breaking_arg"),
true);
352 a_0T1 = SM.getOptionalParameter(
"a_0T1rho");
353 a_0A1 = SM.getOptionalParameter(
"a_0A1rho");
354 a_0V = SM.getOptionalParameter(
"a_0Vrho");
355 lambda_t = SM.getCKM().computelamt_d();
356 lambda_u = SM.getCKM().computelamu_d();
361 a_0T1 = SM.getOptionalParameter(
"a_0T1rho");
362 a_0A1 = SM.getOptionalParameter(
"a_0A1rho");
363 a_0V = SM.getOptionalParameter(
"a_0Vrho");
364 lambda_t = SM.getCKM().computelamt_d();
365 lambda_u = SM.getCKM().computelamu_d();
370 a_0T1 = SM.getOptionalParameter(
"a_0T1omega");
371 a_0A1 = SM.getOptionalParameter(
"a_0A1omega");
372 a_0V = SM.getOptionalParameter(
"a_0Vomega");
373 lambda_t = SM.getCKM().computelamt_d();
374 lambda_u = SM.getCKM().computelamu_d();
379 std::stringstream out;
381 throw std::runtime_error(
"MVgamma: vector " + out.str() +
" not implemented");
384 fpara = SM.getMesons(vectorM).getDecayconst();
385 fperp = SM.getMesons(vectorM).getDecayconst_p();
387 double ms_over_mb = SM.Mrun(
mu_b, SM.getQuarks(
QCD::STRANGE).getMass_scale(),
393 beta_1[0] = gslpp::complex(SM.getOptionalParameter(
"re_beta_1_0"), SM.getOptionalParameter(
"im_beta_1_0"),
false);
394 beta_1[1] = gslpp::complex(SM.getOptionalParameter(
"re_beta_1_1"), SM.getOptionalParameter(
"im_beta_1_1"),
false);
395 beta_1[2] = gslpp::complex(SM.getOptionalParameter(
"re_beta_1_2"), SM.getOptionalParameter(
"im_beta_1_2"),
false);
396 beta_1[3] = gslpp::complex(SM.getOptionalParameter(
"re_beta_1_3"), SM.getOptionalParameter(
"im_beta_1_3"),
false);
397 beta_1[4] = gslpp::complex(SM.getOptionalParameter(
"re_beta_1_4"), SM.getOptionalParameter(
"im_beta_1_4"),
false);
398 beta_1[5] = gslpp::complex(SM.getOptionalParameter(
"re_beta_1_5"), SM.getOptionalParameter(
"im_beta_1_5"),
false);
399 beta_1[6] = gslpp::complex(SM.getOptionalParameter(
"re_beta_1_6"), SM.getOptionalParameter(
"im_beta_1_6"),
false);
401 beta_2[0] = gslpp::complex(SM.getOptionalParameter(
"re_beta_2_0"), SM.getOptionalParameter(
"im_beta_2_0"),
false);
402 beta_2[1] = gslpp::complex(SM.getOptionalParameter(
"re_beta_2_1"), SM.getOptionalParameter(
"im_beta_2_1"),
false);
403 beta_2[2] = gslpp::complex(SM.getOptionalParameter(
"re_beta_2_2"), SM.getOptionalParameter(
"im_beta_2_2"),
false);
404 beta_2[3] = gslpp::complex(SM.getOptionalParameter(
"re_beta_2_3"), SM.getOptionalParameter(
"im_beta_2_3"),
false);
405 beta_2[4] = gslpp::complex(SM.getOptionalParameter(
"re_beta_2_4"), SM.getOptionalParameter(
"im_beta_2_4"),
false);
406 beta_2[5] = gslpp::complex(SM.getOptionalParameter(
"re_beta_2_5"), SM.getOptionalParameter(
"im_beta_2_5"),
false);
407 beta_2[6] = gslpp::complex(SM.getOptionalParameter(
"re_beta_2_6"), SM.getOptionalParameter(
"im_beta_2_6"),
false);
411 }
else if (dispersion) {
416 r1_1 = SM.getOptionalParameter(
"r1_1");
417 r1_2 = SM.getOptionalParameter(
"r1_2");
418 r2_1 = SM.getOptionalParameter(
"r2_1");
419 r2_2 = SM.getOptionalParameter(
"r2_2");
420 deltaC9_1 = SM.getOptionalParameter(
"deltaC9_1");
421 deltaC9_2 = SM.getOptionalParameter(
"deltaC9_2");
422 exp_Phase_1 = exp(gslpp::complex::i()*SM.getOptionalParameter(
"phDC9_1"));
423 exp_Phase_2 = exp(gslpp::complex::i()*SM.getOptionalParameter(
"phDC9_2"));
428#if NFPOLARBASIS_MVGAMMA
429 h[0] = gslpp::complex(SM.getOptionalParameter(
"absh_p"), SM.getOptionalParameter(
"argh_p"),
true);
430 h[1] = gslpp::complex(SM.getOptionalParameter(
"absh_m"), SM.getOptionalParameter(
"argh_m"),
true);
431 h[1] *= 2. * (
Mb /
MM) / (16. * M_PI * M_PI) * (T_1() *
lambda /
MM2) ;
432 h[0] += ms_over_mb *
h[1] ;
443 Delta_C7_U = SM.getOptionalParameter(
"Delta_C7_U");
445 h[0] = gslpp::complex(SM.getOptionalParameter(
"reh_p"), SM.getOptionalParameter(
"imh_p"),
false);
446 h[1] = gslpp::complex(SM.getOptionalParameter(
"reh_m"), SM.getOptionalParameter(
"imh_m"),
false);
447 h[1] *= 2. * (
Mb /
MM) / (16. * M_PI * M_PI) * (T_1() *
lambda /
MM2) ;
448 h[0] += ms_over_mb *
h[1] ;
459 Delta_C7_U = SM.getOptionalParameter(
"Delta_C7_U");
464 allcoeff = SM.getFlavour().ComputeCoeffBMll(
mu_b,
QCD::MU);
465 allcoeffprime = SM.getFlavour().ComputeCoeffprimeBMll(
mu_b,
QCD::MU);
467 C_1 = (*(allcoeff[
LO]))(0) + (*(allcoeff[
NLO]))(0);
468 C_2 = (*(allcoeff[
LO]))(1) + (*(allcoeff[
NLO]))(1);
469 C_3 = (*(allcoeff[
LO]))(2) + (*(allcoeff[
NLO]))(2);
470 C_4 = (*(allcoeff[
LO]))(3) + (*(allcoeff[
NLO]))(3);
471 C_5 = (*(allcoeff[
LO]))(4) + (*(allcoeff[
NLO]))(4);
472 C_6 = (*(allcoeff[
LO]))(5) + (*(allcoeff[
NLO]))(5);
473 C_8 = (*(allcoeff[
LO]))(7) + (*(allcoeff[
NLO]))(7);
477 C_7 = SM.getOptionalParameter(
"C7_SM") + ((*(allcoeff_noSM[
LO]))(6) + (*(allcoeff_noSM[
NLO]))(6));
479 else C_7 = ((*(allcoeff[
LO]))(6) + (*(allcoeff[
NLO]))(6));
480 C_7p = ms_over_mb * ((*(allcoeffprime[
LO]))(6) + (*(allcoeffprime[
NLO]))(6));
483 C_7p += ms_over_mb * (-C_7 - 1. / 3. * C_3 - 4 / 9 * C_4 - 20. / 3. * C_5 - 80. / 9. * C_6);
485 if (!zExpansion && !dispersion) {
490 allcoeff = SM.getFlavour().ComputeCoeffsgamma(
mu_b);
491 allcoeffprime = SM.getFlavour().ComputeCoeffprimesgamma(
mu_b);
493 C_1 = (*(allcoeff[
LO]))(0) + (*(allcoeff[
NLO]))(0);
494 C_2 = (*(allcoeff[
LO]))(1) + (*(allcoeff[
NLO]))(1);
495 C_3 = (*(allcoeff[
LO]))(2) + (*(allcoeff[
NLO]))(2);
496 C_4 = (*(allcoeff[
LO]))(3) + (*(allcoeff[
NLO]))(3);
497 C_5 = (*(allcoeff[
LO]))(4) + (*(allcoeff[
NLO]))(4);
498 C_6 = (*(allcoeff[
LO]))(5) + (*(allcoeff[
NLO]))(5);
499 C_8 = (*(allcoeff[
LO]))(7) + (*(allcoeff[
NLO]))(7);
502 allcoeff_noSM = SM.getFlavour().ComputeCoeffsgamma(
mu_b,
true);
503 C_7 = SM.getOptionalParameter(
"C7_SM") + ((*(allcoeff_noSM[
LO]))(6) + (*(allcoeff_noSM[
NLO]))(6));
505 else C_7 = ((*(allcoeff[
LO]))(6) + (*(allcoeff[
NLO]))(6)););
506 C_7p = (*(allcoeffprime[
LO]))(6) + (*(allcoeffprime[
NLO]))(6);
508 C_7p += -ms_over_mb * C_7 - 1. / 3. * C_3 - 4 / 9 * C_4 - 20. / 3. * C_5 - 80. / 9. * C_6;
515 T_perp_bar_real = 0.;
516 T_perp_bar_imag = 0.;
518 DC7_QCDF = deltaC7_QCDF(
false);
519 DC7_QCDF_bar = deltaC7_QCDF(
true);
521 gsl_error_handler_t * old_handler = gsl_set_error_handler_off();
523 f_GSL = convertToGslFunction(bind(&MVgamma::getT_perp_integrand_real, &(*
this), _1));
524 if (gsl_integration_cquad(&f_GSL, 0., 1., 1.e-2, 1.e-1, w_GSL, &average, &error, NULL) != 0) T_perp_real = std::numeric_limits<double>::quiet_NaN();
525 T_perp_real = average;
527 f_GSL = convertToGslFunction(bind(&MVgamma::getT_perp_integrand_imag, &(*
this), _1));
528 if (gsl_integration_cquad(&f_GSL, 0., 1., 1.e-2, 1.e-1, w_GSL, &average, &error, NULL) != 0) T_perp_imag = std::numeric_limits<double>::quiet_NaN();
529 T_perp_imag = average;
531 f_GSL = convertToGslFunction(bind(&MVgamma::getT_perp_bar_integrand_real, &(*
this), _1));
532 if (gsl_integration_cquad(&f_GSL, 0., 1., 1.e-2, 1.e-1, w_GSL, &average, &error, NULL) != 0) T_perp_bar_real = std::numeric_limits<double>::quiet_NaN();
533 T_perp_bar_real = average;
535 f_GSL = convertToGslFunction(bind(&MVgamma::getT_perp_bar_integrand_imag, &(*
this), _1));
536 if (gsl_integration_cquad(&f_GSL, 0., 1., 1.e-2, 1.e-1, w_GSL, &average, &error, NULL) != 0) T_perp_bar_imag = std::numeric_limits<double>::quiet_NaN();
537 T_perp_bar_imag = average;
539 gsl_set_error_handler(old_handler);
544 s_0 = s_p - sqrt(s_p * (s_p - mPsi2S2));
548 SM.getFlavour().setUpdateFlag(meson, vectorM,
QCD::NOLEPTON,
false);