1 #include <Eigen/Eigenvalues>
14 double buu = v[0], auu = v[1];
15 double add = v[2], bdd = v[3];
16 double eu =v[4], gu = v[5];
17 double ed = v[6], gd = v[7];
18 complex<double> bu = buu*exp(complex<double>(0,gu*M_PI_2)), au = auu*exp(complex<double>(0,eu*M_PI_2));
19 complex<double> ad = add*exp(complex<double>(0,ed*M_PI_2)), bd = bdd*exp(complex<double>(0,gd*M_PI_2));
20 complex<double> cd = bd - ad;
21 complex<double> cu =bu + au;
25 mu<<1,1,1.0+au+bu,1,1,1.0+bu,1.0+bu+au,1.0+bu,1.0+cu;
26 md<<1,1,1.0+ad+bd,1,1,1.0+bd,1.0+bd+ad,1.0+bd,1.0+cd;
30 Matrix3cd Hu = mu*mu.adjoint(), Hd = md*md.adjoint();
31 SelfAdjointEigenSolver<Matrix3cd> usolver(Hu), dsolver(Hd);
32 Vector3d Du=usolver.eigenvalues();
33 Vector3d Dd=dsolver.eigenvalues();
34 Matrix3cd VLd=dsolver.eigenvectors().adjoint();
35 Matrix3cd VLu=usolver.eigenvectors().adjoint();
36 Matrix3cd Vckm=VLu*VLd.adjoint();
37 double lambda=sqrt(norm(Vckm(0,1))/(norm(Vckm(0,0))+norm(Vckm(0,1))));
38 double A=abs(Vckm(1,2))/abs(Vckm(0,1))/lambda;
39 complex<double> rhoeta=-Vckm(0,0)*conj(Vckm(0,2))/Vckm(1,0)/conj(Vckm(1,2));
40 double rho=real(rhoeta), eta=imag(rhoeta);
43 comp.push_back(
points(lambda, 0.22535, 0.00065));
44 comp.push_back(
points(A, 0.811, 0.017));
45 comp.push_back(
points(rho, 0.131, 0.02));
46 comp.push_back(
points(eta, 0.345, 0.014));
47 comp.push_back(
points(eta, 0.345, 0.014));
48 comp.push_back(
points(Du[0], 1.27e-3, 0.46e-3));
49 comp.push_back(
points(Dd[0], 2.9e-3, 1.22e-3));
50 comp.push_back(
points(Dd[1], 55e-3, 16e-3));
51 comp.push_back(
points(Du[1], 0.619, 0.084));
52 comp.push_back(
points(Dd[2], 2.89, 0.09));
53 comp.push_back(
points(Du[2], 171.7, 3.0));
57 for(
uint i=0;i<comp.size();i++){
60 return chi/comp.size();
64 double buu = 0.0162, auu = 0.0009;
65 double add = 0.018, bdd = 0.09;
67 double eu = -1.8, gu = -1.0/2;
68 double ed = -1.0/2, gd = -2;
69 complex<double> bu = buu*exp(complex<double>(0,gu*M_PI_2)), au = auu*exp(complex<double>(0,eu*M_PI_2));
70 complex<double> ad = add*exp(complex<double>(0,ed*M_PI_2)), bd = bdd*exp(complex<double>(0,gd*M_PI_2));
71 complex<double> cd = exp(complex<double>(0,0.09/1.8));
75 mu<<1,1,1.0+au+bu,1,1,1.0+bu,1.0+bu+au,1.0+bu,1.0+bu;
77 md<<1,1,1.0+ad+bd,1,1,1.0+bd,cd*(1.0+bd+ad),cd*(1.0+bd),cd*(1.0+bd);
81 Matrix3cd Hu = mu*mu.adjoint(), Hd = md*md.adjoint();
82 SelfAdjointEigenSolver<Matrix3cd> usolver(Hu), dsolver(Hd);
83 Vector3d Du=usolver.eigenvalues();
84 Vector3d Dd=dsolver.eigenvalues();
85 Matrix3cd VLd=dsolver.eigenvectors().adjoint();
86 Matrix3cd VLu=usolver.eigenvectors().adjoint();
87 Matrix3cd Vckm=VLu*VLd.adjoint();
88 double lambda=sqrt(norm(Vckm(0,1))/(norm(Vckm(0,0))+norm(Vckm(0,1))));
89 double A=abs(Vckm(1,2))/abs(Vckm(0,1))/lambda;
90 complex<double> rhoeta=-Vckm(0,0)*conj(Vckm(0,2))/Vckm(1,0)/conj(Vckm(1,2));
91 double rho=real(rhoeta), eta=imag(rhoeta);
92 double fu=173.5/sqrt(Du[2]), fd=2.89/sqrt(Dd[2]);
95 comp.push_back(
points(lambda, 0.22535, 0.00065));
96 comp.push_back(
points(A, 0.811, 0.017));
97 comp.push_back(
points(rho, 0.131, 0.02));
98 comp.push_back(
points(eta, 0.345, 0.014));
99 comp.push_back(
points(sqrt(Du[0]), 1.27e-3, 0.46e-3));
100 comp.push_back(
points(sqrt(Dd[0]), 2.9e-3, 1.22e-3));
101 comp.push_back(
points(sqrt(Dd[1]), 55e-3, 16e-3));
102 comp.push_back(
points(sqrt(Du[1]), 0.619, 0.084));
103 comp.push_back(
points(sqrt(Dd[2]), 2.89, 0.09));
104 comp.push_back(
points(sqrt(Du[2]), 171.7, 3.0));
108 for(
uint i=0;i<comp.size();i++){
109 double aa=(comp[i].prediction-comp[i].measure)/comp[i].error;
110 cout<<i<<
" "<<aa<<endl;
115 cout<<lambda<<
" "<<A<<
" "<<rho<<
" "<<eta<<endl;
116 cout<<sqrt(Du[2])<<
" "<<sqrt(Du[1])<<
" "<<sqrt(Du[0])<<endl;
117 cout<<sqrt(Dd[2])<<
" "<<sqrt(Dd[1])<<
" "<<sqrt(Dd[0])<<endl;
points(double p, double m, double e)
A class containing the value and uncertainty of an experimental measure.
theoretical expression for an experimental measure