00001 #ifndef __CWAVEFUNCTION_WF_PIPI_PHASESHIFT_CC__
00002 #define __CWAVEFUNCTION_WF_PIPI_PHASESHIFT_CC__
00003 #include "wavefunction.h"
00004
00005 void WaveFunctionRoutines::getphaseshift_pipi(int I,int ell,double q,double *delta,double *ddeltadq){
00006 double a,a2,a3,reff,x,R,tandelta;
00007 const double MPI=139.58,MRHO=771.1,Gamma=149.2;
00008 const double qrho=sqrt(0.25*MRHO*MRHO-MPI*MPI);
00009 double q1,q2,delta1,delta2,M,piself,delq;
00010 double ff,mscreen;
00011
00012 if((ell+I)%2 != 0){
00013 printf("pipi phase shift: bad (ell,I) comb, ell=%d, I=%d\n",ell,I);
00014 exit(1);
00015 }
00016
00017
00018
00019
00020
00021
00022
00023 if(I==0){
00024 if(ell==0){
00025
00026
00027
00028 a=0.204/MPI;
00029 a2=290.0;
00030 a3=625.0;
00031 tandelta=a*q/(1.0-(q/a2)+pow(q/a3,2));
00032 *delta=atan(tandelta);
00033 *delta=*delta+PI*(fabs(*delta)-*delta)/fabs(2**delta);
00034 *ddeltadq=pow(cos(*delta),2)*(tandelta/q)*(1.0-q*q/(a3*a3))
00035 /(1.0-(q/a2)+q*q/(a3*a3));
00036 }
00037 if(ell==2){
00038
00039
00040
00041 a2=1000.0;
00042 a=9.0*(PI/180.0)/pow(480.0,5);
00043 x=q/(1.0+q*q/(a2*a2));
00044 tandelta=a*pow(x,5);
00045 *delta=atan(tandelta);
00046 *ddeltadq=pow(cos(*delta),2)*(tandelta/q)
00047 *((2*ell+1)-(2*ell-1)*q*q/(a2*a2))
00048 /(1+q*q/(a2*a2));
00049 }
00050 if(ell>2){
00051 *delta=0.0;
00052 *ddeltadq=0.0;
00053 }
00054 }
00055
00056
00057
00058
00059 if(I==1){
00060 if(ell==1){
00061 mscreen=1200;
00062 delq=1.0;
00063 if(q<20.0) delq=q/20.0;
00064 if(q<0.5*delq) q=0.5*delq;
00065
00066 q1=q-0.5*delq;
00067 M=2.0*sqrt(q1*q1+MPI*MPI);
00068 piself=MRHO*Gamma*pow(q1/qrho,3)*(MRHO/M);
00069
00070 ff=1.0;
00071 piself=piself*ff;
00072 delta1=atan2(piself,MRHO*MRHO-M*M);
00073
00074 q2=q+0.5*delq;
00075 M=2.0*sqrt(q2*q2+MPI*MPI);
00076 piself=MRHO*Gamma*pow(q2/qrho,3)*(MRHO/M);
00077
00078 ff=1.0;
00079 piself=piself*ff;
00080 delta2=atan2(piself,MRHO*MRHO-M*M);
00081
00082 *delta=0.5*(delta1+delta2);
00083 *ddeltadq=(delta2-delta1)/delq;
00084 }
00085 if(ell>1){
00086 *delta=0.0;
00087 *ddeltadq=0.0;
00088 }
00089 }
00090
00091
00092 if(I==2){
00093 if(ell==0){
00094 a=-0.13;
00095 reff=1.0;
00096
00097
00098
00099
00100 R=sqrt(0.5*fabs(a*reff));
00101 x=q/(1.0+pow(q*R/HBARC,2));
00102 tandelta=(a/HBARC)*x;
00103 *delta=atan(tandelta);
00104 *ddeltadq=(pow(cos(*delta),2)*tandelta/q)*(2.0*ell+1)
00105 *(1.0-pow(q*R/HBARC,2))/(1.0+pow(q*R/HBARC,2));
00106 }
00107 if(ell==2){
00108
00109
00110 R=0.5;
00111 x=q/(1.0+pow(q*R/HBARC,2));
00112 tandelta=-(8.4/pow(1000.0,5))*pow(x,5);
00113 *delta=atan(tandelta);
00114 *ddeltadq=(pow(cos(*delta),2)*tandelta/q)*(2.0*ell+1)
00115 *(1.0-pow(q*R/HBARC,2))/(1.0+pow(q*R/HBARC,2));
00116 }
00117 if(ell>2){
00118 *delta=0.0;
00119 *ddeltadq=0.0;
00120 }
00121 }
00122
00123 }
00124
00125 #endif