00001 #ifndef __INCLUDE_WF_PPIPLUS_SQWELL_CC__
00002 #define __INCLUDE_WF_PPIPLUS_SQWELL_CC__
00003 #include "wavefunction.h"
00004 using namespace std;
00005
00006 CWaveFunction_ppiplus_sqwell::CWaveFunction_ppiplus_sqwell(string parsfilename) : CWaveFunction(){
00007 ParsInit(parsfilename);
00008
00009 m1=MPROTON;
00010 m2=MPI;
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
00024 InitWaves();
00025 printf("Partial Waves Initialized\n");
00026
00027 nwells=new int[nchannels];
00028 nwells[0]=1;
00029 nwells[1]=1;
00030 nwells[2]=3;
00031 SquareWell_MakeArrays();
00032
00033 a[0][0] = 0.238374;
00034 a[1][0] = 1.05513;
00035 a[2][0] = 0.248261; a[2][1] = 0.385089; a[2][2]=1.80402;
00036
00037 V0[0][0]=126509;
00038 V0[1][0]=502.198;
00039 V0[2][0]=-24710.2; V0[2][1]=-145.115; V0[2][2]=-106.615;
00040
00041 SquareWell_Init();
00042
00043 }
00044
00045 CWaveFunction_ppiplus_sqwell::~CWaveFunction_ppiplus_sqwell(){
00046 SquareWell_DeleteArrays();
00047 }
00048
00049 double CWaveFunction_ppiplus_sqwell::CalcPsiSquared(int iq,double r,double ctheta){
00050 double psisquared,x,theta=acos(ctheta);
00051 double q=GetQ(iq);
00052 complex<double> psi,DelPhi[3];
00053 complex<double> Xlm00,Xlm10,Xlm11;
00054
00055 SquareWell_GetDelPhi(iq,r,DelPhi);
00056
00057 x=q*r/HBARC;
00058 Xlm00=sqrt(4.0*PI)*SpherHarmonics::Ylm(0,0,theta,0.0)/x;
00059 Xlm10=ci*sqrt(12.0*PI)*SpherHarmonics::Ylm(1,0,theta,0.0)/x;
00060 Xlm11=ci*sqrt(12.0*PI)*SpherHarmonics::Ylm(1,1,theta,0.0)/x;
00061
00062 psi=planewave[iq]->planewave(r,ctheta);
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 #endif