(file) Return to enerloss_new.f CVS log (file) (dir) Up to [HallC] / simc_semi

File: [HallC] / simc_semi / enerloss_new.f (download)
Revision: 1.1.1.1 (vendor branch), Fri Apr 23 17:13:16 2004 UTC (20 years, 4 months ago) by gaskelld
Branch: hallc, MAIN
CVS Tags: start, baryon, NoPoltar, HEAD
Changes since 1.1: +0 -0 lines
simc_semi sources

	subroutine enerloss_new(len,dens,zeff,aeff,epart,mpart,typeflag,Eloss)

	implicit none

	real*8 thick,len,dens,zeff,aeff,epart,mpart,Eloss
	real*8 x,chsi,lambda,gauss1,Eloss_mp,gamma
	real*8 denscorr,CO,hnup,log10bg,I,beta,Eloss_mp_new

	integer typeflag          !1=normal eloss (picked from distribution)
                                  !2=min eloss
	                          !3=max eloss
                                  !4=most probable eloss
	real*8 me
        parameter(me=0.51099906)

	thick = len*dens
	gamma=epart/mpart
        beta = sqrt(1.-1./gamma**2)

	if(zeff.eq.1) then	!Ionization potential in MeV
	  I = 21.8d-06
	else
	  I = (16.*zeff**0.9)*1.0d-06
	endif

	hnup = 28.816d-06*sqrt(dens*zeff/aeff) !plasma frequency
	log10bg = log(beta*gamma)/log(10.)
	CO=log(hnup)-log(I)+0.5

C DJG Get density effect correction (I got this from JV).

	if(log10bg.lt.0.) then
	  denscorr=0.
	elseif(log10bg.lt.3.) then
	  denscorr=CO+log(10.)*log10bg+abs(CO/27.)*(3.-log10bg)**3
	elseif(log10bg.lt.4.7) then
	  denscorr=CO+log(10.)*log10bg
	else
	  denscorr=CO+log(10.)*4.7
	endif
	   
	if (thick.le.0.) then
	  Eloss = 0.
	else
	  Eloss_mp = 0.1536d-03 * zeff/aeff * thick * ( 19.26 +
     &          log(thick/dens) )
	  Eloss_mp_new = 0.1536d-03 * zeff/aeff *thick/beta**2* (
     &          log(me/I**2) + 1.063 + 2.*log(gamma*beta) + 
     &		log(0.1536*zeff/aeff*thick/beta**2)-beta**2-denscorr)
c	  write(6,*) 'ELOSS',Eloss_mp,Eloss_mp_new 
! ........ convert to MeV, the unit of choice in THIS program
! ........ (cf. EVCOIN where GeV prevail)
	  Eloss_mp = Eloss_mp_new*1000.
	  chsi = 0.307075/2.*zeff/aeff*thick/beta**2
	  if(typeflag.eq.1)then
	    x=abs(gauss1(10.0d0))
	  elseif(typeflag.eq.2)then
	    x=3
	  elseif(typeflag.eq.3)then
	    x=0.0067
	  elseif(typeflag.eq.4)then
	    x=1
          endif
	  if(x.gt.0.0) then
	    lambda = -2.0*log(x)
	  else
	    lambda = 100000.
	  endif
	  Eloss = lambda*chsi+eloss_mp
	endif

	return
	end

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