4 #define MAXPRECISION(val) setprecision(numeric_limits<double>::digits10 + 1) << val
14 {
return complex<double>(1,0); }
20 const double m = ~(p.
get4P ());
22 if(m>mlow && m<mhigh)
return complex<double>(1,0);
23 else return complex<double>(0,0);
29 const double m0 = p.
Mass ();
30 const double Gamma0 = p.
Width ();
31 const double q = p.
q ();
32 const double q0 = p.
q0 ();
33 const double m = ~(p.
get4P ());
34 const int l = p.
Decay ()->
L ();
36 const double GammaV = Gamma0 * (m0 / m) * (q / q0) * (pow(
F(l, q), 2) / pow(
F(l, q0), 2));
37 complex<double> ret = (m0 * Gamma0) / (m0 * m0 - m * m - complex<double>(0, 1) * m0 * GammaV);
47 const double m1 = 1.465;
48 const double Gamma1 = 0.235;
49 const double m2 = 1.720;
50 const double Gamma2 = 0.220;
52 const double q = p.
q ();
53 const double q0 = p.
q0 ();
54 const double m = ~(p.
get4P ());
55 const int l = p.
Decay ()->
L ();
57 const double GammaV1 = Gamma1 * (m1 / m) * (q / q0) * (pow(
F(l, q), 2) / pow(
F(l, q0), 2));
58 const double GammaV2 = Gamma2 * (m2 / m) * (q / q0) * (pow(
F(l, q), 2) / pow(
F(l, q0), 2));
62 complex<double> amp1 = (m1 * Gamma1) / (m1 * m1 - m * m - complex<double>(0, 1) * m1 * GammaV1);
63 complex<double> amp2 = (m2 * Gamma2) / (m2 * m2 - m * m - complex<double>(0, 1) * m2 * GammaV2);
66 complex<double> ret= 1./7 * ( 4. * amp1 - 3. * amp2 );
83 _f.
el(0, 1) = -0.0154;
86 _a[0].el(0, 0) = 0.1131;
87 _a[0].el(0, 1) = 0.0150;
88 _a[0].el(1, 0) = 0.0150;
89 _a[0].el(1, 1) = -0.3216;
90 _a[1].el(0, 0) = _f.
el(0, 0) * _f.
el(0, 0);
91 _a[1].el(0, 1) = _f.
el(0, 0) * _f.
el(0, 1);
92 _a[1].el(1, 0) = _f.
el(0, 1) * _f.
el(0, 0);
93 _a[1].el(1, 1) = _f.
el(0, 1) * _f.
el(0, 1);
96 _c = vector<matrix<complex<double> > >(5, matrix<complex<double> >(2, 2));
97 _c[0].el(0, 0) = 0.0337;
98 _c[1].el(0, 0) = -0.3185;
99 _c[2].el(0, 0) = -0.0942;
100 _c[3].el(0, 0) = -0.5927;
101 _c[4].el(0, 0) = 0.1957;
102 _c[0].el(0, 1) = _c[0].el(1, 0) = -0.2826;
103 _c[1].el(0, 1) = _c[1].el(1, 0) = 0.0918;
104 _c[2].el(0, 1) = _c[2].el(1, 0) = 0.1669;
105 _c[3].el(0, 1) = _c[3].el(1, 0) = -0.2082;
106 _c[4].el(0, 1) = _c[4].el(1, 0) = -0.1386;
107 _c[0].el(1, 1) = 0.3010;
108 _c[1].el(1, 1) = -0.5140;
109 _c[2].el(1, 1) = 0.1176;
110 _c[3].el(1, 1) = 0.5204;
111 _c[4].el(1, 1) = -0.3977;
114 _sP.
el(0, 0) = -0.0074;
115 _sP.el(0, 1) = 0.9828;
128 complex <double> ret;
129 complex <double>
i(0, 1);
131 double pi_mass = PDGtable.
get(
"pi").
Mass();
132 double pi0_mass = PDGtable.
get(
"pi0").
Mass();
133 double K_mass = PDGtable.
get(
"K").
Mass();
134 double K0_mass = PDGtable.
get(
"K0").
Mass();
135 double Kmean_mass = 0.5 * (K_mass + K0_mass);
136 double My_mass = ~(p.
get4P());
137 double s = My_mass * My_mass;
138 if (fabs(s - _sP.el(0, 1)) < 1e-6) {
140 s = My_mass * My_mass;
143 complex<double> q_pipi =
q(My_mass, pi_mass, pi_mass);
144 complex<double> q_pi0pi0 =
q(My_mass, pi0_mass, pi0_mass);
145 complex<double> q_KK =
q(My_mass, K_mass, K_mass);
146 complex<double> q_K0K0 =
q(My_mass, K0_mass, K0_mass);
147 complex<double> q_KmKm =
q(My_mass, Kmean_mass, Kmean_mass);
148 _rho.el(0, 0) = 0.5 * ((2.0 * q_pipi) / My_mass + (2.0 * q_pi0pi0) / My_mass);
149 _rho.el(1, 1) = 0.5 * ((2.0 * q_KK) / My_mass + (2.0 * q_K0K0) / My_mass);
152 if (q_KmKm.imag() > 0.0)
154 _rho.el(0, 0) = (2.0 * q_pipi) / My_mass;
155 _rho.el(1, 1) = (2.0 * q_KmKm) / My_mass;
159 double scale = (s / (4.0 * Kmean_mass * Kmean_mass)) - 1;
162 for (
int p = 0; p < _Pmax; ++
p) {
163 complex<double> fa = 1. / (s - _sP.el(0, p));
167 for (
int n = 0;
n < _Nmax; ++
n) {
168 complex<double> sc = pow(scale,
n);
178 _T = (_M - i * _rho).inv();
187 complex<double> bw, amp_m;
188 static complex<double> coupling(-0.3743, 0.3197);
189 static double massf0 = 0.9837, widthf0 = 0.0376;
192 double My_mass = ~(p.
get4P());
197 if (My_mass > 2.0 * pi_mass) {
198 double p, p0, gam, denom,
A, B, C;
199 p =
q(My_mass, pi_mass, pi_mass).real();
200 p0 =
q(massf0, pi_mass, pi_mass).real();
201 gam = widthf0 * (p / p0);
202 A = massf0 * massf0 - My_mass * My_mass;
204 C = B * (My_mass /
p);
205 denom = C / (A * A + B * B);
206 bw = denom * complex<double>(
A, B);
209 return amp_m - coupling * bw;
317 double W = ~(p.
get4P ());
321 double WPI = 0.1395675;
322 double WKC = 0.493646 ;
324 double WLOW = WPI+WKC ;
332 BW = complex<double>(0.,0.);
334 if ( S <= WLOW*WLOW )
return BW;
335 if ( S >= WUP*WUP )
return BW;
337 double GK = G0*W0/W*P/P0;
338 BW = complex<double>(W0*W0 - W*W, W0*GK);
340 double DENOM = EPS*W0*GK / (real(BW)*real(BW)+imag(BW)*imag(BW));
341 BW = complex<double>(real(BW)*DENOM, imag(BW)*DENOM);
344 double CTG = 1.0/(A*P) + B*P/2.0;
347 double XX = sqrt(1.+CTG*CTG);
350 BG = complex<double>( SN*CS , SN*SN );
352 BW = BG + BW*complex<double>(CS*CS-SN*SN,2.*SN*CS);