6 subroutine ctotx(pjin, Ain, xs)
13 real(8),
intent(in):: Ain
14 real(8),
intent(out):: xs
17 real(8),
intent(in):: Zin
18 real(8):: cPDGsigmaTotpA
24 logical,
save::first=.
true.
25 real(8),
save::Asave=-1.
28 real(8),
external:: cA2Z
34 entry ctotx2(pjin, ain, zin, xs)
41 if( pjin%code ==
kgnuc .and. ain == 1.0)
then 43 pj%fm%p(4) = pjin%fm%p(4)/pjin%subcode
53 proton%fm%p(4) = 200. +
masp 57 call ctotx0(proton, a, z, xst)
58 ratio = cpdgsigmatotpa(a)/xst
65 subroutine ctotx0(pj, A, Z, xs)
72 real(8),
intent(in):: A
73 real(8),
intent(in):: Z
74 real(8),
intent(out)::xs
79 if( pj%fm%p(4) .le. pj%mass)
then 80 if(pj%code .eq.
knuc .and. pj%subcode .eq.
antip)
then 82 elseif(pj%code .eq.
kelec .and. pj%charge .eq. 1)
then 88 p = sqrt(pj%fm%p(4)**2 - pj%mass**2)
94 if(pj%code .eq.
knuc)
then 95 if(pj%charge .eq. 1)
then 101 elseif( z== 0.0 )
then 104 write(0,*)
'pj=proton target A,Z=',a,z
105 write(0,*)
' stragne for ctotx/ctotx2' 113 shp = (shp + shn)/2.0
117 write(0,*)
'pj: p, target A,Z=',a,z
118 write(0,*)
'strange for ctotx/ctotx2' 121 elseif(pj%charge .eq. -1)
then 129 elseif(pj%subcode .eq.
antip)
then 148 elseif(pj%code .eq.
kpion)
then 149 if(pj%charge .eq. 1)
then 151 elseif(pj%charge .eq. -1)
then 163 elseif(pj%code .eq.
kkaon)
then 164 if(pj%charge .eq. 1)
then 168 elseif( z == 0. )
then 171 write(0,*)
' A,Z=',a,z,
'for K+ pj' 172 write(0,*)
' strange to ctotx/ctotx2 ' 179 shp = (shp + shn)/2.0
183 write(0,*)
' A,Z=',a,z,
'for K+ p' 184 write(0,*)
' strange to ctotx/ctotx2 ' 187 elseif(pj%charge .eq. -1)
then 209 elseif(pj%code .eq.
kgzai .or. pj%code .eq.
ksigma .or.
216 elseif( pj%code ==
kgnuc )
then 217 write(0,*)
'Sorry: ctotx is not usable for heavy ions' 218 write(0,*)
' only inelastic xs is used for heavy ions' 219 write(0,*)
' so that you may use cinela or cAAXsec2' 230 function ca2z(A)
result(Z)
233 real(8),
intent(in):: A
236 z = int( a/2.15 + 0.7 )
max ptcl codes in the kgzai
subroutine cpbarptotxs(p, xs)
subroutine cpptotxs(p, xs)
max ptcl codes in the kgnuc
subroutine cnptotxs(p, xs)
max ptcl codes in the klambdac
subroutine ckpptotxs(p, xs)
max ptcl codes in the kkaon
max ptcl codes in the kelec
block data cblkElemag data *AnihiE ! Eposi< 1 TeV, anihilation considered *X0/365.667/, ! radiation length of air in kg/m2 *Ecrit/81.e-3/, ! critical energy of air in GeV *MaxComptonE/1./, ! compton is considered below 1 GeV *MaxPhotoE/1.e-3/, ! above this, PhotoElectric effect neg. *MinPhotoProdE/153.e-3/, ! below 153 MeV, no gp --> hadrons ! scattering const not MeV *Knockon true
subroutine cxp2xaxsec(a, xsxp, xsxa)
subroutine ckpntotxs(p, xs)
subroutine ctotx(pjin, Ain, xs)
subroutine ckmptotxs(p, xs)
block data cblkEvhnp ! currently usable models data RegMdls ad *special data *Cekaon d0
max ptcl codes in the klambda
********************block data cblkHeavy ********************integer j data *HeavyG2symbol *data *HeavyG2code knuc
subroutine ckmntotxs(p, xs)
subroutine cpipptotxs(p, xs)
block data cblkElemag data *AnihiE ! Eposi< 1 TeV, anihilation considered *X0/365.667/, ! radiation length of air in kg/m2 *Ecrit/81.e-3/, ! critical energy of air in GeV *MaxComptonE/1./, ! compton is considered below 1 GeV *MaxPhotoE/1.e-3/, ! above this, PhotoElectric effect neg. *MinPhotoProdE/153.e-3/, ! below 153 MeV, no gp --> hadrons ! scattering const not MeV *Knockon ! knockon is considered Obsolete *PhotoProd false
subroutine cmkptc(code, subcode, charge, p)
max ptcl codes in the kseethru ! subcode integer antip
max ptcl codes in the kpion
max ptcl codes in the ksigma
max ptcl codes in the kbomega
subroutine cpimptotxs(p, xs)
subroutine ctotx0(pj, A, Z, xs)
subroutine cnbarptotxs(p, xs)