00001 #ifndef __INCLUDE_PKPLUS_SQWELL_CC__
00002 #define __INCLUDE_PKPLUS_SQWELL_CC__
00003 #include "wavefunction.h"
00004 using namespace std;
00005
00006 CWaveFunction_pkplus_sqwell::CWaveFunction_pkplus_sqwell(string parsfilename) : CWaveFunction(){
00007 ParsInit(parsfilename);
00008
00009 m1=MPROTON;
00010 m2=MKAON;
00011 IDENTICAL=0;
00012
00013 q1q2=1;
00014 nchannels=3;
00015
00016 ellmax=1;
00017 InitArrays();
00018 printf("Arrays Initialized\n");
00019
00020 ell[0]=0;
00021 ell[1]=1;
00022 ell[2]=1;
00023 InitWaves();
00024
00025 nwells=new int[nchannels];
00026 nwells[0]=1;
00027 nwells[1]=2;
00028 nwells[2]=1;
00029
00030 SquareWell_MakeArrays();
00031
00032 a[0][0]=0.32857;
00033 a[1][0]=0.272751; a[1][1]=1.56301;
00034 a[2][0]=1.20077;
00035
00036 V0[0][0]=100912;
00037 V0[1][0]=679.113; V0[1][1]=41.7614;
00038 V0[2][0]=-45.8576;
00039
00040 SquareWell_Init();
00041 }
00042
00043 CWaveFunction_pkplus_sqwell::~CWaveFunction_pkplus_sqwell(){
00044 SquareWell_DeleteArrays();
00045 }
00046
00047
00048 double CWaveFunction_pkplus_sqwell::CalcPsiSquared(int iq,double r,double ctheta){
00049 double psisquared,theta=acos(ctheta),x;
00050 double q=GetQ(iq);
00051 complex<double> psi,psia,Xlm00,Xlm10,Xlm11;
00052 psia=planewave[iq]->planewave(r,ctheta);
00053 complex<double> DelPhi[3];
00054
00055 SquareWell_GetDelPhi(iq,r,DelPhi);
00056
00057 x=q*r/HBARC;
00058 Xlm00=0.5*sqrt(4.0*PI)*SpherHarmonics::Ylm(0,0,theta,0.0)/x;
00059 Xlm10=0.5*ci*sqrt(12.0*PI)*SpherHarmonics::Ylm(1,0,theta,0.0)/x;
00060 Xlm11=0.5*ci*sqrt(12.0*PI)*SpherHarmonics::Ylm(1,1,theta,0.0)/x;
00061
00062 psi=psia;
00063 psi+=Xlm00*DelPhi[0];
00064 psi+=Xlm10*((2.0/3.0)*DelPhi[2]+(1.0/3.0)*DelPhi[1]);
00065 psisquared=real(psi*conj(psi));
00066
00067 psi=Xlm11*sqrt(2.0/9.0)*(DelPhi[2]-DelPhi[1]);
00068 psisquared+=real(psi*conj(psi));
00069
00070 psisquared*=RelativisticCorrection(r,iq);
00071 return psisquared;
00072
00073 }
00074
00075 #endif