Flavour/src/bsgamma.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 HEPfit Collaboration
3  * All rights reserved.
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
8 #ifndef BSGAMMA_H
9 #define BSGAMMA_H
10 
11 #include <ThObservable.h>
12 #include <gsl/gsl_integration.h>
13 #include <Polylogarithms.h>
14 #include <ClausenFunctions.h>
15 
16 #define FOUR_BODY false
17 
61 class Bsgamma : public ThObservable {
62 public:
68  Bsgamma(const StandardModel& SM_i, int obsFlag);
69 
70 
76  double delta(double E0);
77 
78 
84  double rho(double E0);
85 
86 
92  double omega(double E0);
93 
94 
101  double T1(double E0, double t);
102 
103 
110  double T2(double E0, double t);
111 
112 
119  double T3(double E0, double t);
120 
121 
128  double P0_4body(double E0, double t);
129 
130 
135  double zeta();
136 
137 
143  gslpp::complex a(double z);
144 
145 
151  gslpp::complex b(double z);
152 
153 
160  gslpp::complex r1(int i, double z);
161 
162 
168  gslpp::complex Gamma_t(double t);
169 
170 
177  gslpp::complex kappa(double Mq, double t);
178 
179 
185  double getKc_abs2_t(double t)
186  {
187  return kappa(Mc,t).abs2() * t;
188  };
189 
190 
196  double getKc_abs2_1mt(double t)
197  {
198  return kappa(Mc,t).abs2() * (1. - t);
199  };
200 
201 
207  double getKc_abs2_t_1mt(double t)
208  {
209  return kappa(Mc,t).abs2() * t * (1. - t);
210  };
211 
212 
218  double getKc_abs2_1mt2(double t)
219  {
220  return kappa(Mc,t).abs2() * (1. - t) * (1. - t);
221  };
222 
223 
229  double getKc_re_t(double t)
230  {
231  return kappa(Mc,t).real() * t ;
232  };
233 
234 
240  double getKc_re_t_1mt(double t)
241  {
242  return kappa(Mc,t).real() * t * (1. - t);
243  };
244 
245 
251  double getKc_re_t_1mt2(double t)
252  {
253  return kappa(Mc,t).real() * t * (1. - t) * (1. - t);
254  };
255 
256 
262  double getKc_re_1mt(double t)
263  {
264  return kappa(Mc,t).real() * (1. - t);
265  };
266 
267 
273  double getKc_im_1mt(double t)
274  {
275  return kappa(Mc,t).imag() * (1. - t);
276  };
277 
278 
284  double getKc_re_1mt2(double t)
285  {
286  return kappa(Mc,t).real() * (1. - t) * (1. - t);
287  };
288 
289 
295  double getKc_im_1mt2(double t)
296  {
297  return kappa(Mc,t).imag() * (1. - t) * (1. - t);
298  };
299 
300 
306  double getKb_abs2_1mt(double t)
307  {
308  return kappa(Mb_kin,t).abs2() * (1. - t);
309  };
310 
311 
317  double getKb_abs2_1mt2(double t)
318  {
319  return kappa(Mb_kin,t).abs2() * (1. - t) * (1. - t);
320  };
321 
322 
328  double getKb_abs2_t_1mt(double t)
329  {
330  return kappa(Mb_kin,t).abs2() * t * (1. - t);
331  };
332 
333 
339  double getKb_abs2_t_1mt2(double t)
340  {
341  return kappa(Mb_kin,t).abs2() * t * (1. - t) * (1. - t);
342  };
343 
344 
350  double getKb_abs2_t2_1mt(double t)
351  {
352  return kappa(Mb_kin,t).abs2() * t * t * (1. - t);
353  };
354 
355 
361  double getKb_abs2_t2_1mt2(double t)
362  {
363  return kappa(Mb_kin,t).abs2() * t * t * (1. - t) * (1. - t);
364  };
365 
366 
372  double getKb_re_t(double t)
373  {
374  return kappa(Mb_kin,t).real() * t ;
375  };
376 
377 
383  double getKb_re_t_1mt(double t)
384  {
385  return kappa(Mb_kin,t).real() * t * (1. - t);
386  };
387 
388 
394  double getKb_re_t2_1mt(double t)
395  {
396  return kappa(Mb_kin,t).real() * t * t * (1. - t);
397  };
398 
399 
405  double getKb_re_t2_1mt2(double t)
406  {
407  return kappa(Mb_kin,t).real() * t * t * (1. - t) * (1. - t);
408  };
409 
410 
416  double getKb_re_t_1mt2(double t)
417  {
418  return kappa(Mb_kin,t).real() * t * (1. - t) * (1. - t);
419  };
420 
421 
427  double getKb_re_1mt(double t)
428  {
429  return kappa(Mb_kin,t).real() * (1. - t);
430  };
431 
432 
438  double getKb_re_1mt2(double t)
439  {
440  return kappa(Mb_kin,t).real() * (1. - t) * (1. - t);
441  };
442 
443 
449  double getKc_re_Kb_1mt(double t)
450  {
451  return kappa(Mc,t).real() * kappa(Mb_kin,t).real() * (1. - t);
452  };
453 
454 
460  double getKc_re_Kb_1mt2(double t)
461  {
462  return kappa(Mc,t).real() * kappa(Mb_kin,t).real() * (1. - t) * (1. - t);
463  };
464 
465 
471  double getKc_re_Kb_t_1mt(double t)
472  {
473  return kappa(Mc,t).real() * kappa(Mb_kin,t).real() * t * (1. - t);
474  };
475 
476 
482  double getKc_re_Kb_t_1mt2(double t)
483  {
484  return kappa(Mc,t).real() * kappa(Mb_kin,t).real() * t * (1. - t) * (1. - t);
485  };
486 
487 
493  double Int_b1(double E0);
494 
495 
501  double Int_b2(double E0);
502 
503 
509  double Int_b3(double E0);
510 
511 
517  double Int_b4(double E0);
518 
519 
525  double Int_bb1(double E0);
526 
527 
533  double Int_bb2(double E0);
534 
535 
541  double Int_bb4(double E0);
542 
543 
549  double Int_bc1(double E0);
550 
551 
557  double Int_bc2(double E0);
558 
559 
565  double Int_c1(double E0);
566 
567 
573  double Int_c1_im(double E0);
574 
575 
581  double Int_c2(double E0);
582 
583 
589  double Int_c3(double E0);
590 
591 
597  double Int_cc(double E0);
598 
599 
605  double Int_cc1(double E0);
606 
607 
613  double Int_cc1_part1(double E0);
614 
615 
621  double ff7_dMP(double E0);
622 
623 
629  double ff7_sMP(double E0);
630 
631 
637  double ff8_dMP(double E0);
638 
639 
645  double ff8_sMP(double E0);
646 
647 
653  double Phi11_1(double E0);
654 
655 
661  double Phi12_1(double E0);
662 
663 
669  double Phi13_1(double E0);
670 
671 
677  double Phi14_1(double E0);
678 
679 
685  double Phi15_1(double E0);
686 
687 
693  double Phi16_1(double E0);
694 
695 
702  double Phi17_1(double E0, double z);
703 
704 
711  double Phi18_1(double E0, double z);
712 
713 
719  double Phi22_1(double E0);
720 
721 
727  double Phi23_1_4body(double E0);
728 
729 
736  double Phi23_1(double E0);
737 
738 
744  double Phi24_1_4body(double E0);
745 
746 
753  double Phi24_1(double E0);
754 
755 
761  double Phi25_1_4body(double E0);
762 
763 
770  double Phi25_1(double E0);
771 
772 
778  double Phi26_1_4body(double E0);
779 
780 
787  double Phi26_1(double E0);
788 
789 
796  double Phi27_1(double E0, double z);
797 
798 
805  double Phi27_1_im(double E0, double z);
806 
807 
814  double Phi28_1(double E0, double z);
815 
821  double Phi33_1(double E0);
822 
828  double Phi34_1(double E0);
829 
835  double Phi35_1(double E0);
836 
843  double Phi36_1(double E0);
844 
851  double Phi37_1(double E0);
852 
859  double Phi38_1(double E0);
860 
866  double Phi44_1(double E0);
867 
873  double Phi45_1(double E0);
874 
881  double Phi46_1(double E0);
882 
883 
890  double Phi47_1(double E0);
891 
898  double Phi48_1(double E0);
899 
905  double Phi55_1(double E0);
906 
913  double Phi56_1(double E0);
914 
915 
922  double Phi57_1(double E0);
923 
930  double Phi58_1(double E0);
931 
937  double Phi66_1(double E0);
938 
939 
946  double Phi67_1(double E0);
947 
954  double Phi68_1(double E0);
955 
956 
962  double Phi77_1(double E0);
963 
964 
970  double Phi78_1(double E0);
971 
972 
978  double Phi88_1(double E0);
979 
980 
989  double Kij_1(int i, int j, double E0, double mu);
990 
991 
996  void computeCoeff(double mu);
997 
998 
1004  double P0(double E0);
1005 
1006 
1011  double P11();
1012 
1013 
1020  double P21(double E0, double mu);
1021 
1022 
1027  double P12();
1028 
1029 
1037  double P22(double E0, double mu_b, double mu_c);
1038 
1039 
1046  double P32(double E0, double mu);
1047 
1048 
1054  double Vub_NLO_2body(bool CPodd);
1055 
1056 
1063  double Vub_NLO_3body(double E0, bool CPodd);
1064 
1065 
1072  double Vub_NLO_4body(double E0, bool CPodd);
1073 
1074 
1081  double Vub_NLO(double E0, bool CPodd);
1082 
1083 
1093  double P(double E0, double mu_b, double mu_c, orders order, bool CPodd);
1094 
1095 
1101  double N_27();
1102 
1103 
1111  double N_77(double E0, double mu);
1112 
1113 
1120  double N(double E0, double mu);
1121 
1122 
1130  double C_sem();
1131 
1132 
1136  void updateParameters();
1137 
1138 
1143  double computeThValue();
1144 
1145 
1146 private:
1147  double ale;
1148  double alsUps;
1149  double Alstilde;
1150  double E0;
1151  double mu_b;
1152  double mu_c;
1153  double mu_kin;
1154  double Mb_kin;
1155  double Mc;
1156  double Ms;
1157  double BRsl;
1158  double C;
1162  double overall;
1163  double mu_pi2;
1164  double mu_G2;
1165  double rho_D3;
1166  double rho_LS3;
1167  double BLNPcorr;
1169  int obs;
1171  double BR;
1172  double BR_CPodd;
1200  gsl_function INT;
1201  gsl_integration_cquad_workspace * w_INT;
1202  double avaINT;
1203  double errINT;
1205  unsigned int Intb1Cached;
1206  unsigned int Intb2Cached;
1207  unsigned int Intb3Cached;
1208  unsigned int Intb4Cached;
1209  unsigned int Intbb1Cached;
1210  unsigned int Intbb2Cached;
1211  unsigned int Intbb4Cached;
1212  unsigned int Intbc1Cached;
1213  unsigned int Intbc2Cached;
1214  unsigned int Intc1Cached;
1215  unsigned int Intc1imCached;
1216  unsigned int Intc2Cached;
1217  unsigned int Intc3Cached;
1218  unsigned int IntccCached;
1219  unsigned int Intcc1Cached;
1220  unsigned int Intcc1p1Cached;
1221  unsigned int IntPhi772rCached;
1223  double CacheIntb1;
1224  double CacheIntb2;
1225  double CacheIntb3;
1226  double CacheIntb4;
1227  double CacheIntbb1;
1228  double CacheIntbb2;
1229  double CacheIntbb4;
1230  double CacheIntbc1;
1231  double CacheIntbc2;
1232  double CacheIntc1;
1234  double CacheIntc2;
1235  double CacheIntc3;
1236  double CacheIntcc;
1237  double CacheIntcc1;
1241  unsigned int Intb_updated;
1242  unsigned int Intbc_updated;
1244  double Intb_cache;
1250  void checkCache();
1251 
1252 };
1253 
1254 #endif /* BSGAMMA_H */
double Phi33_1(double E0)
The function obtained using the prescription of .
double Phi14_1(double E0)
The function obtained using the prescription of .
double Phi28_1(double E0, double z)
The function from .
double Phi34_1(double E0)
The function obtained using the prescription of .
gslpp::vector< double > Intbc_cache
double Vub_NLO_2body(bool CPodd)
The 2 body NLO Vub part of the as defined in , .
gslpp::complex C1_0
double Phi78_1(double E0)
The function from .
void computeCoeff(double mu)
Compute the Wilson Coefficient.
double getKc_im_1mt2(double t)
The function .
double abs2() const
double getKb_re_1mt(double t)
The function .
double getKc_re_Kb_1mt(double t)
The function .
double getKb_abs2_t_1mt2(double t)
The function .
double getKc_abs2_t_1mt(double t)
The function .
double getKb_re_t(double t)
The function .
gslpp::complex C4_1
double Phi26_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
double Vub_NLO_3body(double E0, bool CPodd)
The 3 body NLO Vub part of the , .
double Phi58_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
double getKb_abs2_1mt(double t)
The function .
double P0_4body(double E0, double t)
The 4-body LO contribution as defined in .
gslpp::complex V_cb
unsigned int Intbb4Cached
double getKc_re_1mt(double t)
The function .
gslpp::complex C6_1
unsigned int Intbc1Cached
double getKc_re_Kb_t_1mt(double t)
The function .
double getKb_re_t_1mt(double t)
The function .
double omega(double E0)
The cutoff energy function as defined in .
gslpp::complex b(double z)
The funcion as defined in .
gslpp::vector< gslpp::complex > ** allcoeff
double N_27()
The non perturbative part of the due to interference as defined in , .
gslpp::complex C1_1
Bsgamma(const StandardModel &SM_i, int obsFlag)
Constructor.
double Phi17_1(double E0, double z)
The function from .
gslpp::complex r1(int i, double z)
The funcion as defined in .
gslpp::complex CKMu
double Int_bb2(double E0)
Integral of the functions getKb_abs2_t_1mt() and getKb_abs2_t_1mt2().
double P22(double E0, double mu_b, double mu_c)
The perturbative part of the BR as defined in .
gslpp::complex lambda_t
unsigned int Intbc_updated
gslpp::complex C2_1
gslpp::complex Gamma_t(double t)
The function as defined in .
void updateParameters()
The update parameter method for bsgamma.
double getKb_re_t2_1mt2(double t)
The function .
orders
An enum type for orders in QCD.
Definition: OrderScheme.h:31
double Vub_NLO(double E0, bool CPodd)
The total NLO Vub part of the , .
double Phi23_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
double P0(double E0)
The perturbative part of the BR as defined in .
double Phi22_1(double E0)
The function from .
double getKc_abs2_1mt2(double t)
The function .
gsl_function INT
double Phi48_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
double Int_b4(double E0)
Integral of the functions getKb_re_t2_1mt() and getKb_re_t2_1mt2().
double Phi44_1(double E0)
The function obtained using the prescription of .
double CacheIntPhi772r
const double & real() const
double Phi46_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
gslpp::complex C7_2
gslpp::complex a(double z)
The funcion as defined in .
double getKb_abs2_1mt2(double t)
The function .
double getKb_abs2_t2_1mt(double t)
The function .
double Int_c3(double E0)
Integral of the functions getKc_re_t() and getKc_re_t_1mt().
double T2(double E0, double t)
The cutoff energy function as defined in .
double Int_cc1_part1(double E0)
Integral of the functions getKc_abs2_1mt().
unsigned int IntPhi772rCached
gslpp::complex kappa(double Mq, double t)
The function as defined in .
double Phi16_1(double E0)
The function obtained using the prescription of .
double getKb_re_1mt2(double t)
The function .
unsigned int Intcc1p1Cached
gslpp::vector< gslpp::complex > ** allcoeffprime
A class for a model prediction of an observable.
Definition: ThObservable.h:22
double T1(double E0, double t)
The cutoff energy function as defined in .
gslpp::complex C8_1
unsigned int Intc2Cached
double Phi25_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
gslpp::complex C6_0
double P21(double E0, double mu)
The perturbative part of the BR as defined in .
double Int_cc(double E0)
Integral of the functions getKc_abs2_t() and getKc_abs2_t_1mt().
double Int_c2(double E0)
Integral of the functions getKc_re_t_1mt() and getKc_re_t_1mt2().
A model class for the Standard Model.
double Phi88_1(double E0)
The function from .
double delta(double E0)
The cutoff energy function .
double Phi26_1_4body(double E0)
The function obtained from .
gsl_integration_cquad_workspace * w_INT
double Int_c1_im(double E0)
Integral of the functions getKc_im_1mt() and getKc_im_1mt2().
double Phi77_1(double E0)
The function from .
double Phi24_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
gslpp::complex C5_1
double Int_bc1(double E0)
Integral of the functions getKc_re_Kb_1mt() and getKc_re_Kb_1mt2().
gslpp::complex C5_0
double Phi45_1(double E0)
The function obtained using the prescription of .
unsigned int Intc3Cached
double ff7_dMP(double E0)
The 4-body NLO correction due to and d, , from .
gslpp::complex C7_0
double ff7_sMP(double E0)
The 4-body NLO correction due to and s, , from .
double getKb_abs2_t2_1mt2(double t)
The function .
double T3(double E0, double t)
The cutoff energy function as defined in .
double Phi15_1(double E0)
The function obtained using the prescription of .
unsigned int Intb3Cached
gslpp::complex C2_0
double Int_bb4(double E0)
Integral of the functions getKb_abs2_t2_1mt() and getKb_abs2_t2_1mt2().
double Phi66_1(double E0)
The function obtained using the prescription of .
gslpp::complex C3_0
double Phi55_1(double E0)
The function obtained using the prescription of .
unsigned int Intb4Cached
double C_sem()
The ratio as defined in , but with coefficients slightly modified due to different imput parameters...
gslpp::complex C7_1
unsigned int Intbc2Cached
unsigned int Intbb2Cached
double getKb_re_t2_1mt(double t)
The function .
double getKb_abs2_t_1mt(double t)
The function .
double rho(double E0)
The cutoff energy function as defined in .
A class for the decay.
double getKc_abs2_t(double t)
The function .
double Phi38_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
double zeta()
The squared ratio between and , .
unsigned int IntccCached
double P11()
The perturbative part of the BR as defined in .
double Int_bc2(double E0)
Integral of the functions getKc_re_Kb_t_1mt() and getKc_re_Kb_t_1mt2().
double Phi47_1(double E0)
The function from and adding the 4-body contribution from .
double Int_cc1(double E0)
Integral of the functions getKc_abs2_1mt() and getKc_abs2_1mt^().
double computeThValue()
Computes the Branching Ratio for the decay.
double Phi13_1(double E0)
The function obtained using the prescription of .
double Int_c1(double E0)
Integral of the functions getKc_re_1mt() and getKc_re_1mt2().
double Phi18_1(double E0, double z)
The function from .
double Kij_1(int i, int j, double E0, double mu)
The function from .
unsigned int Intc1imCached
double Phi56_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
gslpp::complex C8_0
double getKc_abs2_1mt(double t)
The function .
unsigned int Intc1Cached
double getKc_re_Kb_1mt2(double t)
The function .
double getKc_re_t(double t)
The function .
const double & imag() const
gslpp::complex C7p_1
double getKb_re_t_1mt2(double t)
The function .
double getKc_re_t_1mt2(double t)
The function .
double Phi35_1(double E0)
The function obtained using the prescription of .
unsigned int Intbb1Cached
double Phi12_1(double E0)
The function from .
A class for constructing and defining operations on real vectors.
double Phi23_1_4body(double E0)
The function obtained from .
unsigned int Intb_updated
void checkCache()
The caching method for bsgamma.
double getKc_re_t_1mt(double t)
The function .
double ff8_dMP(double E0)
The 4-body NLO correction due to and d, , from .
double getKc_re_1mt2(double t)
The function .
double Vub_NLO_4body(double E0, bool CPodd)
The 4 body NLO Vub part of the obtained from , .
double N_77(double E0, double mu)
The non perturbative part of the due to interference as defined in , .
double N(double E0, double mu)
The non perturbative part of the as defined in , .
unsigned int Intb2Cached
double P(double E0, double mu_b, double mu_c, orders order, bool CPodd)
The perturbative part of the as defined in , .
double getKc_re_Kb_t_1mt2(double t)
The function .
double Int_b2(double E0)
Integral of the functions getKb_re_t_1mt() and getKb_re_t_1mt2().
double Phi24_1_4body(double E0)
The function obtained from .
double Phi68_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
double P32(double E0, double mu)
The perturbative part of the BR as defined in .
unsigned int Intcc1Cached
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
double Int_b1(double E0)
Integral of the functions getKb_re_1mt() and getKb_re_1mt2().
double Phi36_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
unsigned int Intb1Cached
double Phi25_1_4body(double E0)
The function obtained from .
gslpp::complex C4_0
gslpp::complex C3_1
double Phi11_1(double E0)
The function from .
double Phi27_1_im(double E0, double z)
The function from .
double Phi57_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
double Phi27_1(double E0, double z)
The function from .
double Int_b3(double E0)
Integral of the functions getKb_re_t() and getKb_re_t_1mt().
double ff8_sMP(double E0)
The 4-body NLO correction due to and s, , from .
double Phi37_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
gslpp::complex C7p_0
double Phi67_1(double E0)
The function obtained using the prescription of and adding the 4-body contribution from ...
double CacheIntcc1p1
double P12()
The perturbative part of the BR as defined in .
double getKc_im_1mt(double t)
The function .
double Int_bb1(double E0)
Integral of the functions getKb_abs2_1mt() and getKb_abs2_1mt2().