00001 #ifndef __INCLUDE_WF_PPIMINUS_SQWELL_CC__
00002 #define __INCLUDE_WF_PPIMINUS_SQWELL_CC__
00003 #include "wavefunction.h"
00004 using namespace std;
00005
00006 CWaveFunction_ppiminus_sqwell::CWaveFunction_ppiminus_sqwell(string parsfilename) : CWaveFunction(){
00007 ParsInit(parsfilename);
00008
00009 m1=MPROTON;
00010 m2=MPI;
00011 IDENTICAL=0;
00012
00013 q1q2=-1;
00014 nchannels=4;
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 ell[3]=0;
00024
00025 InitWaves();
00026 printf("Partial Waves Initialized\n");
00027
00028 nwells=new int[nchannels];
00029 nwells[0]=1;
00030 nwells[1]=1;
00031 nwells[2]=3;
00032 nwells[3]=2;
00033 SquareWell_MakeArrays();
00034
00035 a[0][0] = 0.238374;
00036 a[1][0] = 1.05513;
00037 a[2][0] = 0.248261; a[2][1] = 0.385089; a[2][2]=1.80402;
00038 a[3][0]=0.226738; a[3][1]=1.00427;
00039
00040 V0[0][0]=126509;
00041 V0[1][0]=502.198;
00042 V0[2][0]=-24710.2; V0[2][1]=-145.115; V0[2][2]=-106.615;
00043 V0[3][0]=-3815.63; V0[3][1]=-8.33945;
00044
00045 SquareWell_Init();
00046
00047 }
00048
00049 CWaveFunction_ppiminus_sqwell::~CWaveFunction_ppiminus_sqwell(){
00050 SquareWell_DeleteArrays();
00051 }
00052
00053 double CWaveFunction_ppiminus_sqwell::CalcPsiSquared(int iq,double r,double ctheta){
00054 double psisquared,x,theta=acos(ctheta);
00055 double q=GetQ(iq);
00056 complex<double> psia,psi,DelPhi[4];
00057 complex<double> Xlm00,Xlm10,Xlm11;
00058 psia=planewave[iq]->planewave(r,ctheta);
00059
00060 SquareWell_GetDelPhi(iq,r,DelPhi);
00061
00062 x=q*r/HBARC;
00063
00064
00065 Xlm00=sqrt(4.0*PI)*SpherHarmonics::Ylm(0,0,theta,0.0)/x;
00066 Xlm10=ci*sqrt(12.0*PI)*SpherHarmonics::Ylm(1,0,theta,0.0)/x;
00067 Xlm11=ci*sqrt(12.0*PI)*SpherHarmonics::Ylm(1,1,theta,0.0)/x;
00068
00069 psi=psia;
00070 psi+=Xlm00*DelPhi[0];
00071 psi+=Xlm10*((2.0/3.0)*DelPhi[2]+(1.0/3.0)*DelPhi[1]);
00072 psisquared=real(psi*conj(psi));
00073
00074 psi=Xlm11*sqrt(2.0/9.0)*(DelPhi[2]-DelPhi[1]);
00075 psisquared+=real(psi*conj(psi));
00076 psisquared=psisquared/3.0;
00077
00078
00079 psi=psia;
00080 psi+=DelPhi[3]/x;
00081 psisquared+=real(psi*conj(psi))*2.0/3.0;
00082
00083 psisquared*=RelativisticCorrection(r,iq);
00084 return psisquared;
00085 }
00086
00087 #endif