(file) Return to eekeek.f CVS log (file) (dir) Up to [HallC] / Poltar

File: [HallC] / Poltar / eekeek.f (download)
Revision: 1.1.1.1 (vendor branch), Wed Oct 22 13:58:52 2003 UTC (20 years, 11 months ago) by jones
Branch: poltar, MAIN
CVS Tags: start, HEAD
Changes since 1.1: +0 -0 lines
 Import simc poltar

	subroutine eekeek(ss,q22,angl,theta,phi,epsi,sigma_eep)

	implicit none

	include 'simulate.inc'

	real*8 ss,q22,angl,theta,phi,epsi
	real*8 w,skc2,skc,q0,q0c,qr,aflx,aflxl,an,x,sx
	real*8 ps,qs,as,sstmp,q22tmp
	double complex z1a,z2a,z3a,z4a,z7a,z8a,ur,ui
	real*8 dsigt00,dsigl00,dsigp00,dsigi00
c	real*8 dsigp0,dsigi0,ctt
	real*8 zf(2,6),sigma_eep
	real*8 qv2,qv,qvc
	integer pn,pna(3)
	integer i

c real*4 for compatability with CERNLIB routine fint.
	real*4 px(3),pa(50)

	real*4 fint

c	write(21,*) 'eekeek'
	sstmp=ss
	q22tmp=q22
c	write(6,*) ss,q22,angl,theta,phi,epsi,sigma_eep
	w=sqrt(ss)*1000.
	q22=q22*(-1.d+06)
c	write(6,*) w,Mk2,targ.Mrec_struck
	skc2=(w**2-Mk2-targ.Mrec_struck**2)**2-4.*Mk2*targ.Mrec_struck**2
c	write(6,*) skc2
	skc2=max(skc2,0.d0)
	skc=sqrt(skc2)/2./w
c	write(6,*) -q22,Mp2
	q0=-(-q22-w**2+Mp2)/2./Mp
	q0c=(-q22+q0*Mp)/w
	qr=sqrt(q22)/q0c
	qv2=q22+q0**2
	qv=sqrt(qv2)
	qvc=Mp/w*qv
C ctt not used, and causes floating exception if skc=0 (i.e. skc2<0)
C	ctt=pi/skc/qvc*1.e+06
	aflx=skc/2./w/(w**2-Mp2)*(hbarc)**2*10000.
	aflxl=aflx*qr**2
	an=angl*180./pi
c	write(21,*) q0,q0c,qr**2*epsi
	x=cos(angl)
	sx=sin(angl)
	pn=3
	px(1)=ss
	px(2)=q22/1.e+06
	px(3)=an
	pna(1)=10
	pna(2)=11
	pna(3)=19
	ps=2.6
	qs=0.0
	as=0.0
	do i=1,10
	  pa(i)=ps
	  ps=ps+0.3
	enddo
	do i=11,21
	  pa(i)=qs
	  qs=qs+0.2
	enddo
	do i=22,40
	  pa(i)=as
	  as=as+10.
	enddo
c	write(6,*) ps,qs,as
c	write(6,*) pn
c	write(21,*) px(1),px(2),px(3)
c	write(6,*) pna(1),pna(2),pna(3)
c	do i=1,40
c	 write(6,*) pa(i)
c	enddo
	zf(1,1)=dble(fint(pn,px,pna,pa,zrff1))
c	write(6,*) zf(1,1)
	zf(1,2)=dble(fint(pn,px,pna,pa,zrff2))
	zf(1,3)=dble(fint(pn,px,pna,pa,zrff3))
	zf(1,4)=dble(fint(pn,px,pna,pa,zrff4))
	zf(1,5)=dble(fint(pn,px,pna,pa,zrff5))
	zf(1,6)=dble(fint(pn,px,pna,pa,zrff6))
	zf(2,1)=dble(fint(pn,px,pna,pa,ziff1))
	zf(2,2)=dble(fint(pn,px,pna,pa,ziff2))
	zf(2,3)=dble(fint(pn,px,pna,pa,ziff3))
	zf(2,4)=dble(fint(pn,px,pna,pa,ziff4))
	zf(2,5)=dble(fint(pn,px,pna,pa,ziff5))
	zf(2,6)=dble(fint(pn,px,pna,pa,ziff6))

c	do i=1,6
c	  write(21,*) zf(1,i),zf(2,i)
c	enddo

	ur=(1.D0,0.D0)
	ui=(0.D0,1.D0)  

	z1a=zf(1,1)*ur+zf(2,1)*ui
	z2a=zf(1,2)*ur+zf(2,2)*ui
	z3a=zf(1,3)*ur+zf(2,3)*ui
	z4a=zf(1,4)*ur+zf(2,4)*ui
	z7a=zf(1,5)*ur+zf(2,5)*ui
	z8a=zf(1,6)*ur+zf(2,6)*ui
c	write(21,*) z1a,z2a,z3a,z4a
c	write(21,*) z7a,z8a
c
c	calculate free cross section using Saghai's form.
c
	dsigt00=aflx*(abs(z1a)**2+abs(z2a)**2
     &		+2.*real(conjg(z1a)*z2a)*x+0.5*sx**2*(abs(z3a)**2
     &		+abs(z4a)**2+2.*real(conjg(z1a)*z4a-conjg(z2a)*z3a
     &		+conjg(z3a)*z4a*x)))
	dsigl00=aflxl*epsi*(abs(z7a)**2+abs(z8a)**2
     &		+2.*real(conjg(z7a)*z8a)*x)
	dsigp00=aflx*epsi*(sin(theta))**2*cos(2.*phi)*
     &		(0.5*abs(z3a)**2+0.5*abs(z4a)**2+real(conjg(z1a)*z4a-
     &		conjg(z2a)*z3a+conjg(z3a)*z4a*x))
	dsigi00=aflx*sqrt(2.*qr**2*epsi*(1.+epsi))*
     &		sin(theta)*cos(phi)*real((z7a)*(conjg(z3a)-conjg(z2a)+
     &		conjg(z4a)*x)+z8a*(conjg(z1a)+conjg(z3a)*x+conjg(z4a)))
C	dsigp0=aflx*epsi*(sin(theta))**2*
C     &		(0.5*abs(z3a)**2+0.5*abs(z4a)**2+real(conjg(z1a)*z4a-
C     &		conjg(z2a)*z3a+conjg(z3a)*z4a*x))
C	dsigi0=aflx*sqrt(2.*qr**2*epsi*(1.+epsi))*
C     &		sin(theta)*real(z7a*(conjg(z3a)-conjg(z2a)+
C     &		conjg(z4a)*x)+z8a*(conjg(z1a)+conjg(z3a)*x+conjg(z4a)))

	sigma_eep=dsigt00+dsigl00+dsigp00+dsigi00
c	write(21,*) 'dsig',dsigt00,dsigl00/epsi,sigma_eep
c	write(21,*) 'dsig',dsigt00*ctt,dsigl00/epsi*ctt,sigma_eep*ctt
c	write(21,*) dsigp00,dsigi00,sigma_eep
c	write(21,*) dsigp0,dsigi0,sigma_eep
	ss=sstmp
	q22=q22tmp
	return

	end

	subroutine eekeeks(ss,q22,angl,theta,phi,epsi,sigma_eep)

	include 'simulate.inc'

	real*8 ss,q22,angl,theta,phi,epsi
	real*8 w,skc2,skc,q0,q0c,qr,aflx,aflxl,an,x,sx
	real*8 as,sstmp,q22tmp
	double complex z1a,z2a,z3a,z4a,z7a,z8a,ur,ui
	real*8 dsigt00,dsigl00,dsigp00,dsigi00
	real*8 zf(2,6),sigma_eep
	real*8 qv2,qv,qvc,ctt
	integer pn,pna(3),i

c real*4 for compatability with CERNLIB routine fint.
	real*4 px(3),pa(50)

	real*4 fint

	sstmp=ss
	q22tmp=q22
	w=sqrt(ss)*1000.
	q22=q22*(-1.d+06)
	skc2=(w**2-Mk2-targ.Mrec_struck**2)**2-4.*Mk2*targ.Mrec_struck**2
	skc2=max(skc2,0.d0)
	skc=sqrt(skc2)/2./w
	q0=-(-q22-w**2+Mp2)/2./Mp
	q0c=(-q22+q0*Mp)/w
	qr=sqrt(q22)/q0c
	qv2=q22+q0**2
	qv=sqrt(qv2)
	qvc=Mp/w*qv
C ctt not used, and causes floating exception if skc=0 (i.e. skc2<0)
C	ctt=pi/skc/qvc*1.e+06
	aflx=skc/2./w/(w**2-Mp2)*(hbarc)**2*10000.
	aflxl=aflx*qr**2
	an=angl*180./pi
	x=cos(angl)
	sx=sin(angl)
	pn=3
	px(1)=ss
	px(2)=q22/1.e+06
	px(3)=an
c	write(12,*) px(1),px(2),px(3)
	pna(1)=20
	pna(2)=10
	pna(3)=19
	as=0.0
	pa(1)=2.851
	pa(2)=2.898
	pa(3)=2.945
	pa(4)=2.991
	pa(5)=3.038
	pa(6)=3.085
	pa(7)=3.132
	pa(8)=3.320
	pa(9)=3.507
	pa(10)=3.695
	pa(11)=3.883
	pa(12)=4.070
	pa(13)=4.258
	pa(14)=4.446
	pa(15)=4.633
	pa(16)=4.821
	pa(17)=5.009
	pa(18)=5.196
	pa(19)=5.384
	pa(20)=5.572
	pa(21)=0.0
	pa(22)=0.250
	pa(23)=0.376
	pa(24)=0.520
	pa(25)=0.750
	pa(26)=1.000
	pa(27)=1.250
	pa(28)=1.500
	pa(29)=1.750
	pa(30)=2.000
	do i=31,49
	  pa(i)=as
	  as=as+10.
	enddo
	zf(1,1)=dble(fint(pn,px,pna,pa,zsrff1))
	zf(1,2)=dble(fint(pn,px,pna,pa,zsrff2))
	zf(1,3)=dble(fint(pn,px,pna,pa,zsrff3))
	zf(1,4)=dble(fint(pn,px,pna,pa,zsrff4))
	zf(1,5)=dble(fint(pn,px,pna,pa,zsrff5))
	zf(1,6)=dble(fint(pn,px,pna,pa,zsrff6))
	zf(2,1)=dble(fint(pn,px,pna,pa,zsiff1))
	zf(2,2)=dble(fint(pn,px,pna,pa,zsiff2))
	zf(2,3)=dble(fint(pn,px,pna,pa,zsiff3))
	zf(2,4)=dble(fint(pn,px,pna,pa,zsiff4))
	zf(2,5)=dble(fint(pn,px,pna,pa,zsiff5))
	zf(2,6)=dble(fint(pn,px,pna,pa,zsiff6))

	ur=(1.D0,0.D0)
	ui=(0.D0,1.D0)  

	z1a=zf(1,1)*ur+zf(2,1)*ui
	z2a=zf(1,2)*ur+zf(2,2)*ui
	z3a=zf(1,3)*ur+zf(2,3)*ui
	z4a=zf(1,4)*ur+zf(2,4)*ui
	z7a=zf(1,5)*ur+zf(2,5)*ui
	z8a=zf(1,6)*ur+zf(2,6)*ui
c
c	calculate free cross section using Saghai's form.
c
	dsigt00=aflx*(abs(z1a)**2+abs(z2a)**2
     &		+2.*real(conjg(z1a)*z2a)*x+0.5*sx**2*(abs(z3a)**2
     &		+abs(z4a)**2+2.*real(conjg(z1a)*z4a-conjg(z2a)*z3a
     &		+conjg(z3a)*z4a*x)))
	dsigl00=aflxl*epsi*(abs(z7a)**2+abs(z8a)**2
     &		+2.*real(conjg(z7a)*z8a)*x)
	dsigp00=aflx*epsi*(sin(theta))**2*cos(2.*phi)*
     &		(0.5*abs(z3a)**2+0.5*abs(z4a)**2+real(conjg(z1a)*z4a-
     &		conjg(z2a)*z3a+conjg(z3a)*z4a*x))
	dsigi00=aflx*sqrt(2.*qr**2*epsi*(1.+epsi))*
     &		sin(theta)*cos(phi)*real((z7a)*(conjg(z3a)-conjg(z2a)+
     &		conjg(z4a)*x)+z8a*(conjg(z1a)+conjg(z3a)*x+conjg(z4a)))

	sigma_eep=dsigt00+dsigl00+dsigp00+dsigi00
c	write(12,*) sigma_eep,dsigt00,dsigl00
c	write(12,*) dsigp00,dsigi00
	ss=sstmp
	q22=q22tmp
	return

	end

	subroutine phspwght(delta,theta,phi,weight)

	include 'simulate.inc'

	real*8 delta,theta,phi
	real*8 weight
	integer pn,pna(3),i
	real*8 ps,ts,ds

c real*4 for compatability with CERNLIB routine fint.
	real*4 px(3),pa(78)

	real*4 fint

	if(electron_arm.eq.1 .and. hadron_arm.eq.2)then	!e- in HMS, K in SOS
	  pn=2
	  px(1)=theta
	  px(2)=phi
	  pna(1)=20
	  pna(2)=50
	  ts=-0.03325
	  ps=-0.0735
	  do i=1,20
	    pa(i)=ts
	    ts=ts+0.0035
	  enddo
	  do i=21,70
	    pa(i)=ps
	    ps=ps+0.003
	  enddo
	  weight=dble(fint(pn,px,pna,pa,weightc))
	else if (electron_arm.eq.2 .and. hadron_arm.eq.1) then !e- in SOS,K in HmS
	  pn=3
	  px(1)=delta
	  px(2)=theta
	  px(3)=phi
	  pna(1)=8
	  pna(2)=40
	  pna(3)=30
	  ts=-0.063375
	  ps=-0.0435
	  ds=-17.5
	  do i=1,8
	    pa(i)=ds
	    ds=ds+5.
	  enddo
	  do i=9,48
	    pa(i)=ts
	    ts=ts+0.00325
	  enddo
	  do i=49,78
	    pa(i)=ps
	    ps=ps+0.003
	  enddo
	  weight=dble(fint(pn,px,pna,pa,weightd))
	else
	  write(6,*) 'electron_arm=',electron_arm,' and hadron_arm=',hadron_arm
	  write(6,*) 'eekeek.f has a phase space factor that is only defined for'
	  write(6,*) 'hms&sos case.  Need to update for other spectrometers.'
	  stop
	endif
	weight=max(weight,0.01D00)
	weight=max(100.D00/weight,1.0D00)
	return
	end

Analyzer/Replay: Mark Jones, Documents: Stephen Wood
Powered by
ViewCVS 0.9.2-cvsgraph-1.4.0