a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
CKM.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 HEPfit Collaboration
3  *
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
8 #include "CKM.h"
9 
10 CKM::CKM() : V(3, 3)
11 {}
12 
13 void CKM::computeCKMwithWolfenstein(double Lambda_v, double A_v, double Rho_v, double Eta_v)
14 {
15  Rho = Rho_v;
16  Eta = Eta_v;
17  Lambda = Lambda_v;
18  A = A_v;
19 
20  gslpp::complex num(Rho, Eta);
21  num = num * sqrt(1. - pow(A, 2.) * pow(Lambda, 4.));
22  gslpp::complex den = sqrt(1. - pow(Lambda, 2.)) * gslpp::complex(1. - pow(A, 2.) * pow(Lambda, 4.) * Rho, -pow(A, 2.) * pow(Lambda, 4.) * Eta);
23  gslpp::complex ratio = num / den;
24 
25  double rho_nb = ratio.real();
26  double eta_nb = ratio.imag();
27 
28  s12 = Lambda;
29  s23 = A * pow(Lambda, 2.);
30  s13 = (gslpp::complex(A * pow(Lambda, 3.) * rho_nb, -A * pow(Lambda, 3.) * eta_nb)).abs();
31  delta = -(gslpp::complex(A * pow(Lambda, 3.) * rho_nb, -A * pow(Lambda, 3.) * eta_nb)).arg();
32 
33  c12 = sqrt(1. - s12 * s12);
34  c13 = sqrt(1. - s13 * s13);
35  c23 = sqrt(1. - s23 * s23);
36 
38 }
39 
41 {
42  V.assign(0, 0, c12*c13);
43  V.assign(0, 1, s12*c13);
44  V.assign(0, 2, gslpp::complex(s13, -delta, true));
45 
46  V.assign(1, 0 , -s12 * c23 - gslpp::complex(c12 * s23*s13, delta, true));
47  V.assign(1, 1, c12 * c23 - gslpp::complex(s12 * s23*s13, delta, true));
48  V.assign(1, 2, s23*c13);
49 
50  V.assign(2, 0, s12 * s23 - gslpp::complex(c12 * c23*s13, delta, true));
51  V.assign(2, 1, -c12 * s23 - gslpp::complex(s12 * c23*s13, delta, true));
52  V.assign(2, 2, c23*c13);
53 }
54 
55 void CKM::computeCKM(double Vus_v, double Vcb_v, double Vub_v, double gamma_v)
56 {
57  s13 = Vub_v;
58  c13 = sqrt(1.-s13*s13);
59  s12 = Vus_v / c13;
60  s23 = Vcb_v / c13;
61 
62  c12 = sqrt(1. - s12 * s12);
63  c23 = sqrt(1. - s23 * s23);
64 
65  double a = c12 * s13 * s23 / s12 / c23;
66  if ( fabs(gamma_v) < 1.e-10 )
67  delta = 0.;
68  else
69  delta = 2. * atan((1. + sqrt(1. - (a * a - 1.) * pow(tan(gamma_v), 2.))*(cos(gamma_v) < 0. ? 1. : (-1.))) / (a - 1.) / tan(gamma_v));
70 
72 
73  // Wolfenstein to all orders
74  Lambda = s12;
75  A = s23 / Lambda / Lambda;
76  gslpp::complex Rb = V(0, 0) * V(0, 2).conjugate() / (V(1, 0) * V(1, 2).conjugate());
77  Rho = -Rb.real();
78  Eta = -Rb.imag();
79  return;
80 }
81 
82 double CKM::computeBeta() const
83 {
84  return (-V(1, 0)*V(1, 2).conjugate()/(V(2, 0)*V(2, 2).conjugate())).arg();
85 }
86 
87 double CKM::computeGamma() const
88 {
89  return (-V(0, 0)*V(0, 2).conjugate()/(V(1, 0)*V(1, 2).conjugate())).arg();
90 }
91 
92 double CKM::computeAlpha() const
93 {
94  return (-V(2, 0)*V(2, 2).conjugate()/(V(0, 0)*V(0, 2).conjugate())).arg();
95 }
96 
97 double CKM::computeBetas() const
98 {
99  return (-V(2, 1)*V(2, 2).conjugate()/(V(1, 1)*V(1, 2).conjugate())).arg();
100 }
101 
102 // Lambda_q
103 
105 {
106  return V(2, 0)*V(2, 1).conjugate();
107 }
108 
110 {
111  return V(1, 0)*V(1, 1).conjugate();
112 }
113 
115 {
116  return V(0, 0)*V(0, 1).conjugate();
117 }
118 
119 
121 {
122  return V(2, 0)*V(2, 2).conjugate();
123 }
124 
126 {
127  return V(1, 0)*V(1, 2).conjugate();
128 }
129 
131 {
132  return V(0, 0)*V(0, 2).conjugate();
133 }
134 
135 
137 {
138  return V(2, 1)*V(2, 2).conjugate();
139 }
140 
142 {
143  return V(1, 1)*V(1, 2).conjugate();
144 }
145 
147 {
148  return V(0, 1)*V(0, 2).conjugate();
149 }
150 
151 // Sides
152 double CKM::computeRt() const
153 {
154  return (V(2, 0)*V(2, 2).conjugate()/(V(1, 0)*V(1, 2).conjugate())).abs();
155 }
156 double CKM::computeRts() const
157 {
158  return (V(2, 1)*V(2, 2).conjugate()/(V(1, 1)*V(1, 2).conjugate())).abs();
159 }
160 
161 double CKM::computeRb() const
162 {
163  return (V(0, 0)*V(0, 2).conjugate()/(V(1, 0)*V(1, 2).conjugate())).abs();
164 }
gslpp::cos
complex cos(const complex &z)
Definition: gslpp_complex.cpp:429
CKM::computelamu_d
gslpp::complex computelamu_d() const
The product of the CKM elements .
Definition: CKM.cpp:130
CKM::c13
double c13
The cosine of the three mixing angles.
Definition: CKM.h:370
CKM::computeCKMfromAngles
void computeCKMfromAngles()
Definition: CKM.cpp:40
CKM::computeBeta
double computeBeta() const
The CKM angle .
Definition: CKM.cpp:82
CKM::A
double A
The Wolfenstein parameters.
Definition: CKM.h:368
CKM::computeRb
double computeRb() const
.
Definition: CKM.cpp:161
CKM::computelamt_s
gslpp::complex computelamt_s() const
The product of the CKM elements .
Definition: CKM.cpp:136
CKM::computeCKMwithWolfenstein
void computeCKMwithWolfenstein(double Lambda_v, double A_v, double Rho_v, double Eta_v)
A set method to calculate the CKM matrix from Wolfenstein parameters.
Definition: CKM.cpp:13
CKM::s12
double s12
Definition: CKM.h:369
CKM::s13
double s13
Definition: CKM.h:369
CKM::CKM
CKM()
Definition: CKM.cpp:10
gslpp::complex
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
CKM::delta
double delta
The CP violating phase in the CKM matrix.
Definition: CKM.h:371
CKM.h
CKM::computelamu
gslpp::complex computelamu() const
The product of the CKM elements .
Definition: CKM.cpp:114
CKM::computelamu_s
gslpp::complex computelamu_s() const
The product of the CKM elements .
Definition: CKM.cpp:146
CKM::computeCKM
void computeCKM(double Vus_v, double Vcb_v, double Vub_v, double gamma_v)
A set method to calculate the CKM matrix from CKM elements and .
Definition: CKM.cpp:55
gslpp::complex::imag
const double & imag() const
Definition: gslpp_complex.cpp:59
CKM::computelamc_s
gslpp::complex computelamc_s() const
The product of the CKM elements .
Definition: CKM.cpp:141
gslpp::tan
complex tan(const complex &z)
Definition: gslpp_complex.cpp:438
CKM::c23
double c23
Definition: CKM.h:370
CKM::computeGamma
double computeGamma() const
The CKM angle .
Definition: CKM.cpp:87
CKM::Lambda
double Lambda
Definition: CKM.h:368
gslpp::pow
complex pow(const complex &z1, const complex &z2)
Definition: gslpp_complex.cpp:395
gslpp::sqrt
complex sqrt(const complex &z)
Definition: gslpp_complex.cpp:385
CKM::V
gslpp::matrix< gslpp::complex > V
The CKM matrix.
Definition: CKM.h:373
CKM::computelamt_d
gslpp::complex computelamt_d() const
The product of the CKM elements .
Definition: CKM.cpp:120
CKM::computeBetas
double computeBetas() const
The CKM angle .
Definition: CKM.cpp:97
CKM::computeRts
double computeRts() const
.
Definition: CKM.cpp:156
CKM::computeRt
double computeRt() const
.
Definition: CKM.cpp:152
CKM::c12
double c12
Definition: CKM.h:370
gslpp::complex::real
const double & real() const
Definition: gslpp_complex.cpp:53
CKM::computeAlpha
double computeAlpha() const
The CKM angle .
Definition: CKM.cpp:92
CKM::computelamt
gslpp::complex computelamt() const
The product of the CKM elements .
Definition: CKM.cpp:104
CKM::Eta
double Eta
Definition: CKM.h:368
CKM::s23
double s23
The sine of the three mixing angles.
Definition: CKM.h:369
CKM::computelamc
gslpp::complex computelamc() const
The product of the CKM elements .
Definition: CKM.cpp:109
CKM::Rho
double Rho
Definition: CKM.h:368
CKM::computelamc_d
gslpp::complex computelamc_d() const
The product of the CKM elements .
Definition: CKM.cpp:125