COSMOS v7.655  COSMOSv7655
(AirShowerMC)
cpdgXs.f
Go to the documentation of this file.
1  module modpdgxs
2  implicit none
3  private
4 ! if M below conflict in the user prog,
5 ! consider alias like
6 ! use modpdgXs, Mpdg=>M
7 ! or
8 ! use modpdgXs, only cSigmaT, csOfstu
9  public :: csigmat, csofstu, m
10 
11  real(8),parameter:: pi= 3.14159265358979323846d0
12  real(8),parameter:: hbarc=197.327d-3 ! GeV%Fermi
13  real(8),parameter:: m = 2.15 ! GeV
14  real(8),parameter:: eta1 = 0.462, eta2 = 0.55
15  real(8),parameter:: lb = pi*(hbarc/m)**2*10.0d0 ! mb
16  real(8),parameter:: delta = 0.003056, lambda = 1.630
17 
18  contains
19 
20  function csofstu(p, Mp, Mt) result(ans)
21 ! s = (E+Mt)^2 - p**2 = 2*E*Mt + Mt**2 + Mp**2
22  implicit none
23  real(8),intent(in):: p ! momentum in GeV
24  real(8),intent(in):: Mp ! proj. mass
25  real(8),intent(in):: Mt ! target mass
26  real(8):: ans
27  ans = (sqrt(p**2+mp**2)*2 + mt)*mt + mp**2
28  end function csofstu
29 
30  function csigmat(a,b,p) result(ans)
31 ! total cross-section by pdg (ed. 2012)
32  implicit none
33 #include "Zmass.h"
34  character(*),intent(in):: a ! one of "p", "pb", "pi+","pi-"
35  ! "pi0"
36  ! "K+","K-" "K0" "Sig", "g"
37  character(*),intent(in):: b ! one of "p", "n", "d"
38  real(8),intent(in)::p ! momentum of a in GeV
39  real(8):: ans ! total cross section in mb.
40 
41  real(8):: LBt, sm, s
42 
43  real(8):: Z, Y1, Y2
44 
45  lbt = lb
46  select case(a)
47  case('p', 'pb')
48  select case(b)
49  case('p')
50  z = 34.71
51  y1 = 12.72
52  y2 = 7.35
53  sm = (masp *2 + m)**2
54  s = csofstu(p,masp, masp)
55  case('n')
56  z = 35.00
57  y1 = 12.19
58  y2 = 6.62
59  sm = (masp + masn + m)**2
60  s = csofstu(p, masp, masn)
61  case('d')
62  z = 65.02
63  y1= 29.04
64  y2= 14.9
65  sm = (masp + masd + m)**2
66  s = csofstu(p, masp, masd)
67  lbt =lbt*lambda
68  case default
69  write(0,*)
70  * 'b ', b, ' for csigma(a,b) is invalid'
71  stop
72  end select
73  case('pi+', 'pi-', 'pi0')
74  select case(b)
75  case('p','n')
76  z = 19.02
77  y1 = 9.22
78  y2= 1.75
79  sm = (maspic + masn + m)**2
80  s = csofstu(p, maspic, masp)
81  case('d')
82  z = 37.06
83  y1 = 18.28
84  y2 = 0.34
85  sm = (maspic + masd + m)**2
86  s = csofstu(p, maspic, masd)
87  lbt =lbt*lambda
88  case default
89  write(0,*)
90  * 'b ', b, ' for csigma(a,b) is invalid'
91  write(0,*) ' a is ',a
92  stop
93  end select
94  case('K+', 'K-', 'K0')
95  select case(b)
96  case('p')
97  z = 16.55
98  y1 = 4.02
99  y2 = 3.39
100  sm = (maskc + masp + m)**2
101  s = csofstu(p, maskc, masp)
102  case('n')
103  z = 16.49
104  y1 = 3.44
105  y2 = 1.82
106  sm = (maskc + masn + m)**2
107  s = csofstu(p, maskc, masn)
108  case('d')
109  z = 32.34
110  y1 = 7.33
111  y2 = 5.59
112  sm = (maskc + masd + m)**2
113  s = csofstu(p, maskc, masd)
114  lbt =lbt*lambda
115  case default
116  write(0,*)
117  * 'b ', b, ' for csigma(a,b) is invalid'
118  write(0,*) ' a is ',a
119  stop
120  end select
121  case('Sig')
122  select case(b)
123  case('p')
124  z = 34.9
125  y1 = -55.0
126  y2 = -57.0
127  sm = (massigmam + masp + m)**2
128  s = csofstu(p, massigmam, masp)
129  case default
130  write(0,*)
131  * 'b ', b, ' for csigma(a,b) is invalid'
132  write(0,*) ' a is ',a
133  stop
134  end select
135  case('g')
136  select case(b)
137  case('p','n')
138  z = 34.71
139  y1 = 0.0128
140  y2= 0.
141  sm = (masp+ masp + m)**2
142  s = csofstu(p, masp, masp)
143  ans = (z + lbt* (log(s/sm))**2)* delta
144  sm = (masp + m)**2
145  s = csofstu(p, 0.d0, masp)
146  ans = ans + y1*(sm/s)**eta1
147  return
148  case('d')
149  z = 65.02
150  y1 = 0.0128
151  y2= 0.
152  sm = (masp + masd + m)**2
153  s = csofstu(p, masp, masd)
154  ans = (z + lambda* lbt* (log(s/sm))**2 )* delta
155  sm = ( masd + m)**2
156  s = csofstu(p, 0.d0, masd)
157  ans = ans + y1*(sm/s)**eta1
158  return
159  case('g')
160  z = 34.71
161  y1 = -0.034d-4
162  y2 = 0.
163  sm = (masp + masp + m)**2
164  s = csofstu(p, masp, masp)
165  ans = (z + lbt* (log(s/sm))**2 )* delta**2
166  sm = ( masrho + m)**2
167  s = csofstu(p, 0.d0, masrho)
168  ans = ans + y1*(sm/s)**eta1
169  return
170  case default
171  write(0,*)
172  * 'b ', b, ' for csigma(a,b) is invalid'
173  write(0,*) ' a is ',a
174  stop
175  end select
176  case default
177  write(0,*)
178  * 'a ', a, ' for csigma(a,b) is invalid'
179  write(0,*) ' b is ',b
180  stop
181  end select
182  ans = z + lbt* (log(s/sm))**2 + y1*(sm/s)**eta1
183  if( a == "pb" .or. a =="pi-" .or. a == "K-") then
184  ans = ans + y2*(sm/s)**eta2
185  else
186  ans = ans - y2*(sm/s)**eta2
187  endif
188  end function csigmat
189  end module modpdgxs
190 
191 ! program main
192 ! use modpdgXs
193 ! implicit none
194 !#include "Zmass.h"
195 ! character(4):: a = "g"
196 ! character(4):: b = "d"
197 ! real(8):: p,s
198 ! integer:: i
199 ! p = 5.
200 ! do while (p < 1.e8 )
201 ! s = csOfstu(p, 0.d0, masd)
202 ! write(*,*) p, cSigmaT(a, b, p), sqrt(s)
203 ! p = p*10.**0.1
204 ! enddo
205 ! end
real(8), parameter, public m
Definition: cpdgXs.f:13
real(8), parameter delta
Definition: cpdgXs.f:16
masn
Definition: Zmass.h:5
real(8) function, public csigmat(a, b, p)
Definition: cpdgXs.f:31
real(8), parameter hbarc
Definition: cpdgXs.f:12
real(8), parameter lb
Definition: cpdgXs.f:15
masd
Definition: Zmass.h:5
maskc
Definition: Zmass.h:5
real(8), parameter eta2
Definition: cpdgXs.f:14
block data cblkEvhnp ! currently usable models data RegMdls ad *special data *Cekaon d0
Definition: cblkEvhnp.h:5
real(8), parameter eta1
Definition: cpdgXs.f:14
masrho
Definition: Zmass.h:5
! constants thru Cosmos real * pi
Definition: Zglobalc.h:2
dE dx *! Nuc Int sampling table d
Definition: cblkMuInt.h:130
real(8) function, public csofstu(p, Mp, Mt)
Definition: cpdgXs.f:21
masp
Definition: Zmass.h:5
massigmam
Definition: Zmass.h:5
maspic
Definition: Zmass.h:5
Definition: cpdgXs.f:1
real(8), parameter lambda
Definition: cpdgXs.f:16