17 const complex<double>
i(0, 1);
18 const complex<double> c = exp(-i * ((m / 2.0) * alpha + (n / 2.0) * gamma) ) *
d_jmn_b(j, m, n, beta);
29 int temp_M, k, k_low, k_hi;
30 double const_term = 0.0, sum_term = 0.0,
d = 1.0;
31 int m_p_n, j_p_m, j_p_n, j_m_m, j_m_n;
32 int kmn1, kmn2, jmnk, jmk, jnk;
35 if (J < 0 || abs(M) > J || abs(N) > J) {
37 cerr <<
"d_jmn_b: you have entered an illegal number for J, M, N." << endl;
38 cerr <<
"Must follow these rules: J >= 0, abs(M) <= J, and abs(N) <= J." << endl;
39 cerr <<
"J = " << J <<
" M = " << M <<
" N = " << N << endl;
56 kk = (double)
fact (j_p_m) * (double)
fact (j_m_m) * (double)
fact (j_p_n) * (double)
fact (j_m_n) ;
57 const_term = pow ((-1.0), (j_p_m)) * sqrt (kk);
59 k_low =
MAX (0, m_p_n);
60 k_hi =
MIN (j_p_m, j_p_n);
62 for (k = k_low; k <= k_hi; k++) {
64 kmn1 = 2 * k - (M + N) / 2;
65 jmnk = J + (M + N) / 2 - 2 * k;
66 jmk = (J +
M) / 2 - k;
67 jnk = (J + N) / 2 - k;
68 kmn2 = k - (M + N) / 2;
70 sum_term += pow ((-1.0), (k)) *
71 ((pow (cos (beta / 2.0), kmn1)) * (pow (sin (beta / 2.0), jmnk))) /
75 d = const_term * sum_term;
90 double n0, n1, n2, n3, n4, n5;
91 double d0, d1, d2, d3, d4;
95 if ((m1 + m2) != m3) {
100 while ( (d3=(j1-j2-m3)/2+nu) < 0
101 || (n2=(j1-m1)/2+nu) < 0 ) { nu++;}
102 while ( (d1=(j3-j1+j2)/2-nu) >= 0
103 && (d2=(j3+m3)/2-nu) >= 0
104 && (n1=(j2+j3+m1)/2-nu) >= 0 ) {
105 d3=((j1-j2-m3)/2+nu);
107 d0=
dfact((
double) nu);
109 n0 = (double) pow(-1,exp);
119 n1 =
dfact((
double) (j3+j1-j2)/2);
120 n2 =
dfact((
double) (j3-j1+j2)/2);
121 n3 =
dfact((
double) (j1+j2-j3)/2);
122 n4 =
dfact((
double) (j3+m3)/2);
123 n5 =
dfact((j3-m3)/2);
125 d0 =
dfact((
double) (j1+j2+j3)/2+1);
126 d1 =
dfact((
double) (j1-m1)/2);
127 d2 =
dfact((
double) (j1+m1)/2);
128 d3 =
dfact((
double) (j2-m2)/2);
129 d4 =
dfact((
double) (j2+m2)/2);
131 A = ((double) (n0*n1*n2*n3*n4*n5))/((
double) (d0*d1*d2*d3*d4));
133 return pow(A,0.5)*sum;
144 return i *
dfact(i - 1);
152 #define Pr 0.1973 // Gev/c corresponds to 1 fermi
154 double z = (p/
Pr) * (p/
Pr);
161 ret = sqrt((2.0 * z)/(z + 1));
164 ret = sqrt((13.0 * z * z)/(pow(z - 3.0,2.0) + 9.0 * z));
167 ret = sqrt( (277.0 * pow(z,3.0))/(z * pow(z - 15.0,2.0) + 9.0 * pow(2.0 * z - 5.0,2.0)));
170 ret = sqrt( (12746.0 * pow(z,4.0))/( pow(z * z - 45.0 * z + 105.0,2.0) + 25.0 * z * pow(2.0 * z - 21.0,2.0)));
173 ret = sqrt((998881 * z*z*z*z*z)/(893025.0 +99225.0*z +6300.0*z*z +315.0*z*z*z +15.0*z*z*z*z +z*z*z*z*z));
176 cerr <<
"Blatt-Weisskopf called for undefined L = " << n/2 << endl;
189 return a * a + b * b + c * c - 2.0 * (a * b + b * c + c *
a);
198 const double lam =
lambda(M * M, m1 * m1, m2 * m2);
199 const double ret = sqrt(fabs(lam / (4 * M * M)));
201 return complex<double>(0.0, ret);
202 return complex<double>(ret, 0.0);
210 if (i == 0 || i == 1)
246 for (
int s = 0; s <
tabsize ; s++)
292 return (
"omega(782)");
295 return (
"phi(1020)");
340 else if (name ==
"omega(782)") {
343 else if (name ==
"e") {
353 else if (name ==
"K") {
363 else if (name ==
"K0") {
366 else if (name ==
"KLong") {
369 else if (name ==
"pi0") {
372 else if (name ==
"eta") {
375 else if (name ==
"phi(1020)") {
378 else if (name ==
"p") {
381 else if (name ==
"pbar") {
384 else if (name ==
"n") {
387 else if (name ==
"d") {
390 else if (name ==
"gamma") {
393 else if (name ==
"eta'(958)") {
396 else if (name ==
"lambda") {
408 int digits = (
int)log10((
float)
i) + 2;
409 char* c_s = (
char*)malloc(digits *
sizeof(
char));
411 sprintf(c_s,
"%d", i);
423 c = (charge < 0) ?
"-" :
"+";
424 charge = abs(charge);