00001 #ifndef __CWAVEFUNCTION_WF_Xipi_phaseshift_CC
00002 #define __CWAVEFUNCTION_WF_Xipi_phaseshift_CC
00003 #include "wavefunction.h"
00004
00005
00006
00007 CWaveFunction_Xipi_phaseshift::CWaveFunction_Xipi_phaseshift(string parsfilename){
00008 int iq,ichannel;
00009 double q;
00010
00011 ParsInit(parsfilename);
00012
00013 m1=1321.3;
00014 m2=139.58;
00015 IDENTICAL=0;
00016 q1q2=-1;
00017 if(COULOMB==0) q1q2=0;
00018 nchannels=1;
00019
00020 ellmax=1;
00021 InitArrays();
00022
00023 ell[0]=1;
00024
00025 InitWaves();
00026
00027 channelweight[0]=(4.0/3.0);
00028
00029 ichannel=0;
00030 for(iq=0;iq<nqmax;iq++){
00031 q=qarray[iq];
00032 get_phaseshifts_Xistar(q,delta[0][iq],ddeltadq[0][iq]);
00033 if (q1q2!=0)
00034 CoulWave::phaseshift_CoulombCorrect(ell[ichannel],q,eta[iq],
00035 delta[ichannel][iq],ddeltadq[ichannel][iq]);
00036 printf("ichannel=%d, q=%g, E=%g, delta=%g, ddelta/dq=%g\n",
00037 ichannel,q,sqrt(q*q+m1*m1)+sqrt(q*q+m2*m2),
00038 delta[ichannel][iq]*180.0/PI,ddeltadq[ichannel][iq]*180.0/PI);
00039 Wepsilon[ichannel][iq]=ddeltadq[ichannel][iq]
00040 -GetIW(ell[ichannel],epsilon,q,q1q2,eta[iq],delta[ichannel][iq])
00041 +GetIW(ell[ichannel],epsilon,q,q1q2,eta[iq],0.0);
00042 Wepsilon[ichannel][iq]=3.0*Wepsilon[ichannel][iq]
00043 /(4.0*PI*pow(epsilon,3));
00044 }
00045 }
00046
00047 double CWaveFunction_Xipi_phaseshift::CalcPsiSquared(int iq,double r,double ctheta){
00048 double psisquared,x,dpsi2,q;
00049 complex<double> psi,hstar1,psi0,delpsi;
00050 int ichannel;
00051
00052 if(iq>=nqmax){
00053 psisquared=1.0;
00054 }
00055 else{
00056 q=qarray[iq];
00057 x=q*r/HBARC;
00058 psi0=planewave[iq]->planewave(r,ctheta);
00059
00060 if(r<epsilon){
00061 psisquared=real(psi0*conj(psi0));
00062 for(ichannel=0;ichannel<nchannels;ichannel++){
00063 dpsi2=channelweight[ichannel]*2.0*PI*Wepsilon[ichannel][iq]
00064 *pow(HBARC,3)/(q*q);
00065 psisquared+=dpsi2;
00066 }
00067 }
00068 else{
00069 hstar1=partwave[1][iq]->GetPhiIncoming(r)/x;
00070 delpsi=0.5*hstar1*(Misc::ceiphi(-2.0*delta[0][iq])-1.0)
00071 *ci*(3.0)*ctheta;
00072
00073 psi=psi0+(4.0/9.0)*delpsi;
00074 psisquared=real(psi*conj(psi));
00075
00076
00077
00078
00079 psisquared+=(8.0/81.0)*real(delpsi*conj(delpsi));
00080
00081 delpsi=0.5*hstar1*(Misc::ceiphi(-2.0*delta[0][iq])-1.0)
00082 *ci*(3.0)*sqrt((1.0-ctheta*ctheta)/2.0);
00083 psisquared+=(12.0/81.0)*real(delpsi*conj(delpsi));
00084
00085 }
00086 }
00087
00088 psisquared*=RelativisticCorrection(r,iq);
00089 return psisquared;
00090
00091 }
00092
00093 void CWaveFunction_Xipi_phaseshift::get_phaseshifts_Xistar(double q,double &delta,double &ddeltadq){
00094 double tandelta,Epi,EXi,Lambda;
00095 const double MXi=1321.3,Lambda0=9.1,MXistar=1530.0;
00096 const double q0=sqrt(Misc::triangle(MXistar,MXi,MPI));
00097 EXi=sqrt(MXi*MXi+q*q);
00098 Epi=sqrt(MPI*MPI+q*q);
00099 Lambda=Lambda0*pow(q/q0,3);
00100 tandelta=0.5*Lambda/(MXistar-EXi-Epi);
00101 delta=atan(tandelta);
00102 if(delta<0.0) delta+=PI;
00103 ddeltadq=pow(cos(delta),2)*tandelta*((3.0/q)+(q/(MXistar-EXi-Epi))
00104 *((1.0/EXi)+(1.0/Epi)));
00105 }
00106
00107 #endif