00001 #include <iostream>
00002 #include "TPiKFun.h"
00003 #include "TLi2.h"
00004 #include "TGlobal.h"
00005 #include "TRadGlobal.h"
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 double TPiKFun::Eval_even(const double &s, const double &c){
00028
00029 double r = gGlobal->Get_MF2()*0.25*gGlobal->Get_s()/s;
00030 double rho =-log(r);
00031 double beta = sqrt(1-4*r);
00032 double beta1p = 1 + beta;
00033 double beta1m = 1 - beta;
00034 double rbeta = beta1m/beta1p;
00035 double ibeta = 1/beta;
00036 double A = rho + gConst->Pi2()/6 - log(rbeta)*log(0.5*ibeta*ibeta*beta1p) + 2*TLi2::Eval(rbeta);
00037 double k_even = -1 + 0.5*beta1m*ibeta*rho + (2 + beta*beta)*ibeta*log(0.5*beta1p) + 0.5*(1+beta*beta)*ibeta*A;
00038 return k_even;
00039 }
00040
00041 double TPiKFun::Eval_odd(const double &s, const double &c){
00042 double r = gGlobal->Get_MF2()*0.25*gGlobal->Get_s()/s;
00043 double rho =-log(r);
00044 double beta2 = 1 - 4*r;
00045 double betas2 = beta2*(1-c*c);
00046 double i2betas2 = 1/(2*betas2);
00047 double beta = sqrt(beta2);
00048 double ibeta = 1/beta;
00049
00050 double d =-0.25*ibeta*(1-beta)*(1-beta)*(rho*rho + gConst->Pi2()/3)
00051 + ibeta*(1 + beta2)*(-rho*log(0.5*(1 + beta)) -
00052 TLi2::Eval(-(1-beta)/(1+beta)) + 2*TLi2::Eval(0.5*(1-beta)));
00053
00054 double betac = beta*c;
00055 double betc1m = 1 - betac;
00056 double l_m = log(0.5*betc1m);
00057 double l_m2 = 0.5*l_m*l_m;
00058 double t1 = (1-beta2)/(2*betc1m);
00059 double a = l_m2 - log(1 - t1)*(rho + l_m ) + TLi2::Eval(t1);
00060 double li2t1 = TLi2::Eval(1 - t1);
00061 double li2t2 = TLi2::Eval(betas2/(1 + beta2 - 2*betac));
00062
00063 double res_plus = l_m2 - li2t1 + li2t2 + i2betas2*(a*(1 - beta2) + betc1m*(-2*a + d));
00064
00065
00066 betac = -betac;
00067 betc1m = 1 - betac;
00068 l_m = log(0.5*betc1m);
00069 l_m2 = 0.5*l_m*l_m;
00070 t1 = (1-beta2)/(2*betc1m);
00071 a = l_m2 - log(1 - t1)*(rho + l_m ) + TLi2::Eval(t1);
00072 li2t1 = TLi2::Eval(1 - t1);
00073 li2t2 = TLi2::Eval(betas2/(1 + beta2 - 2*betac));
00074 double res_minus= l_m2 - li2t1 + li2t2 + i2betas2*(a*(1 - beta2) + betc1m*(-2*a + d));
00075
00076 return res_plus - res_minus + Eval_int_odd(beta,c);
00077 }
00078
00079 double TPiKFun::Eval_odd_ultra(const double &c){
00080
00081 double st_h2 = 0.5*(1-c);
00082 double st_h = sqrt(st_h2);
00083 double ct_h2 = 0.5*(1+c);
00084 double ct_h = sqrt(ct_h2);
00085 double lst_h = log(st_h);
00086 double lct_h = log(ct_h);
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097 return (2-1/ct_h2)*lst_h*lst_h - (2-1/st_h2)*lct_h*lct_h - TLi2::Eval(st_h2) + TLi2::Eval(ct_h2);
00098 }
00099
00100 double TPiKFun::Eval_even_odd(const double &s, const double &c){
00101
00102 double r = gGlobal->Get_MF2()*0.25*gGlobal->Get_s()/s;
00103 double rho =-log(r);
00104 double beta2 = 1 - 4*r;
00105 double beta = sqrt(beta2);
00106 double beta1p = 1 + beta;
00107 double beta1m = 1 - beta;
00108 double rbeta = beta1m/beta1p;
00109 double ibeta = 1/beta;
00110 double lgbeta = log(0.5*beta1p);
00111 double A = rho + gConst->Pi2()/6.0 - log(rbeta)*log(0.5*ibeta*ibeta*beta1p) + 2*TLi2::Eval(rbeta);
00112 double k_even = -1 + 0.5*beta1m*ibeta*rho + (2 + beta*beta)*ibeta*lgbeta + 0.5*(1+beta*beta)*ibeta*A;
00113
00114 double betas2 = beta2*(1-c*c);
00115 double i2betas2 = 1/(2*betas2);
00116
00117 double d =-0.25*ibeta*beta1m*beta1m*(rho*rho + gConst->Pi2()/3)
00118 + ibeta*(1 + beta2)*(-rho*lgbeta - TLi2::Eval(-rbeta) + 2*TLi2::Eval(0.5*beta1m));
00119
00120 double betac = beta*c;
00121 double betc1m = 1 - betac;
00122 double l_m = log(0.5*betc1m);
00123 double l_m2 = 0.5*l_m*l_m;
00124 double t1 = (1-beta2)/(2*betc1m);
00125 double a = l_m2 - log(1 - t1)*(rho + l_m ) + TLi2::Eval(t1);
00126 double li2t1 = TLi2::Eval(1 - t1);
00127 double li2t2 = TLi2::Eval(betas2/(1 + beta2 - 2*betac));
00128
00129 double res_plus = l_m2 - li2t1 + li2t2 + i2betas2*(a*(1 - beta2) + betc1m*(-2*a + d));
00130
00131
00132 betac = -betac;
00133 betc1m = 1 - betac;
00134 l_m = log(0.5*betc1m);
00135 l_m2 = 0.5*l_m*l_m;
00136 t1 = (1-beta2)/(2*betc1m);
00137 a = l_m2 - log(1 - t1)*(rho + l_m ) + TLi2::Eval(t1);
00138 li2t1 = TLi2::Eval(1 - t1);
00139 li2t2 = TLi2::Eval(betas2/(1 + beta2 - 2*betac));
00140 double res_minus= l_m2 - li2t1 + li2t2 + i2betas2*(a*(1 - beta2) + betc1m*(-2*a + d));
00141
00142 return k_even + res_plus - res_minus + Eval_int_odd(beta,c);
00143 }