COSMOS v7.655  COSMOSv7655
(AirShowerMC)
cppXsec0.f
Go to the documentation of this file.
1 ! collection of inelastic cross-section at low energy.
2 ! you should not use this one e > 2.e6 GeV for pbar-p
3 ! and for all others e> 1 TeV. p.d formula is too bad
4 ! in such a region.
5 !
6 ! cppXsec0 p p n p
7 ! cpbarpXsec0 p_b p n_b n n_b p p_b n
8 ! cpiMinuspXsec0 pi- p
9 ! cpiPluspXsec0 pi+ p
10 ! ckMinuspXsec0 k- p k0_b n
11 ! ckPluspXsec0 k+ p k+ n k- n k0_b p k0 n
12 ! cpiMAirReacX pi- air reaction xs
13 ! cpiMAirAbsX pi- air absorption xs
14 ! cpiPAirReacX pi+ air reaction xs
15 ! cpiPAirAbsX pi+ air absorption xs
16 !
17 ! ***********************************************************
18 ! *
19 ! * p_p inelastic cross-section
20 ! *
21 ! ****************** tested 88.08.11 *****************k.k ***
22 !
23 ! E: input. real*8. E kinetic energy in GeV
24 ! for E<300 MeV XS=1.e-5
25 ! for E>100 GeV Xs by Particle Data Book Formula
26 !
27 ! XS:output. Inelastic cross-section in mb
28 !
29  subroutine cppxsec0(e, xs)
30  implicit none
31  real*8 e, xs
32 !
33  real*8 ee
34  integer i, icon, l
35  real*8 lp
36  real*8 ctotppX, celappX
37 
38  real*8 ea(21), xsa(21)
39 ! ea in GeV
40  data (ea(i),i= 1, 21)/
41  1 0.301, 0.350, 0.400, 0.450, 0.500, 0.550, 0.600, 0.650, 0.700,
42  2 0.800, 0.900, 1.000, 1.500, 2.000, 5.000, 7.000,10.000,20.000,
43  3 40.000,50.000, 100.001/
44  data (xsa(i),i= 1, 21)/
45  1 0.000, 0.500, 1.000, 2.500, 5.000, 7.350,11.000,15.000,18.500,
46  222.000,23.000,23.500,25.000,25.500,28.000,29.000,29.500,30.000,
47  330.000,29.500,31.000/
48  if(e .le. 0.) then
49  xs = 0.
50 
51  elseif(e .lt. .30101d0) then
52  xs=1.d-5
53  elseif(e .lt. 100.) then
54  ee = e
55  call kfrge(ea, 1, 21, ee, l, icon)
56  xs=(xsa(l)-xsa(l-1))/(ea(l)-ea(l-1))*(ee-ea(l-1)) +
57  * xsa(l-1)
58  else
59  lp = log(e) ! e = p
60  xs = ctotppx(e, lp) - celappx(e, lp)
61  endif
62  end
63  real*8 function ctotppx(p, logp)
64  implicit none
65  real*8 p, logp
66  real*8 a, b, n, c, d
67  real*8 cXsec
68  data a/48./, b/0./, n/0./, c/.522/, d/-4.51/
69  ctotppx = cxsec(p, logp, a, b, n, c, d)
70  end
71  real*8 function celappx(p, logp)
72  implicit none
73  real*8 p, logp
74  real*8 a, b, n, c, d
75  real*8 cXsec
76  data a/11.9/, b/26.9/, n/-1.21/, c/0.169/, d/-1.85/
77  celappx = cxsec(p, logp, a, b, n, c, d)
78  end
79 ! **********************************
80 ! This particle data book formulation
81 !
82  real*8 function cxsec(p, logp, a, b, n, c, d)
83 ! elastic/inelastic high energy cross-secion formula.
84 ! a + bp**n + c*log(p)**2 + d*log(p)
85 ! p is momentum in GeV/c
86  implicit none
87  real*8 p, logp, a, b, n, c, d
88 !
89  cxsec = (c*logp + d)*logp + b*p**n + a
90  end
91 !
92 !
93 ! ***********************************************************
94 ! *
95 ! * p_b p inelastic cross-section
96 ! *
97 ! ****************** *****************k.k ***
98 !
99 ! e: input. e kinetic energy in GeV
100 !
101 ! xs:output. inelastic cross-section in mb
102 !
103  subroutine cpbarpxsec0(e, xs)
104  implicit none
105  real*8 e, xs
106  real*8 lp
107  real*8 ctotpbpX, celapbpX
108 
109 
110 ! due to the formula given in ptcl data 88. p121
111 
112  if(e .lt. 100.) then
113  xs = (e/100)**(-.55)*3 +32
114  else
115  lp = log(e) ! e = p here.
116  xs = ctotpbpx(e, lp) - celapbpx(e, lp)
117  endif
118  end
119  real*8 function ctotpbpx(p, logp)
120  implicit none
121  real*8 p, logp
122  real*8 a, b, n, c, d
123  real*8 cXsec
124  data a/38.4/, b/77.6/, n/-0.64/, c/0.26/, d/-1.2/
125  ctotpbpx = cxsec(p, logp, a, b, n, c, d)
126  end
127  real*8 function celapbpx(p, logp)
128  implicit none
129  real*8 p, logp
130  real*8 a, b, n, c, d
131  real*8 cXsec
132  data a/10.2/, b/52.7/, n/-1.16/, c/0.125/, d/-1.28/
133  celapbpx = cxsec(p, logp, a, b, n, c, d)
134  end
135 
136 ! ***********************************************************
137 ! *
138 ! * pi- p inelastic cross-section
139 ! *
140 ! ****************** tested 88.08.11 *****************k.k ***
141 !
142 ! e: input. pi- k.e in GeV
143 ! for e<10mev xs=1.e-5
144 !
145 ! xs:output. inelastic cross-section in mb
146 !
147  subroutine cpiminuspxsec0(e, xs)
148  implicit none
149  real*8 e, xs
150  integer i, l, icon
151  real*8 lp
152  real*8 ctotpimpX, celapimpX
153 
154  real*8 ea(25), xsa(25), ee
155 
156  data (ea(i),i= 1, 25)/
157  1 0.010, 0.020, 0.030, 0.060, 0.100, 0.200, 0.300, 0.400, 0.450,
158  2 0.500, 0.550, 0.670, 0.870, 1.000, 1.200, 1.350, 1.500, 2.000,
159  3 2.800, 3.000, 5.000, 7.000,10.000,50.000, 100.001 /
160  data (xsa(i),i= 1, 25)/
161  1 0.000, 4.000, 6.000,10.000,15.000,15.300,16.500,18.000,19.500,
162  222.500,30.000,26.000,33.500,32.000,25.000,23.500,25.000,27.000,
163  326.000,24.500,23.500,22.500,22.500,21.500,21.000/
164  if(e .le. 10.d-3) then
165  xs=1.d-5
166  elseif(e .lt. 100.) then
167  ee= e
168  call kfrge(ea, 1, 25, ee, l, icon)
169  xs=(xsa(l)-xsa(l-1))/(ea(l)-ea(l-1))*(ee-ea(l-1)) +
170  * xsa(l-1)
171  else
172  lp = log(e) ! e = p here.
173  xs = ctotpimpx(e, lp) - celapimpx(e, lp)
174  endif
175  end
176  real*8 function ctotpimpx(p, logp)
177  implicit none
178 
179  real*8 p, logp
180  real*8 a, b, n, c, d
181  real*8 cXsec
182  data a/33./, b/14./, n/-1.36/, c/0.456/, d/-4.03/
183  ctotpimpx = cxsec(p, logp, a, b, n, c, d)
184  end
185  real*8 function celapimpx(p, logp)
186  implicit none
187  real*8 p, logp
188  real*8 a, b, n, c, d
189  real*8 cXsec
190  data a/1.76/, b/11.2/, n/-0.64/, c/0.043/, d/0./
191  celapimpx = cxsec(p, logp, a, b, n, c, d)
192  end
193 
194 ! ***********************************************************
195 ! *
196 ! * pi+ p inelastic cross-section
197 ! *
198 ! ****************** tested 88.08.11 *****************k.k ***
199 !
200 ! e: input. pi+ k.e in GeV
201 ! for e<100mev xs=1.e-5
202 ! for e>100gev p.d
203 !
204 ! xs:output. inelastic cross-section in mb
205 !
206  subroutine cpipluspxsec0(e, xs)
207  implicit none
208  real*8 e, xs
209 
210  real*8 ea(18), xsa(18), ee
211  integer i, icon, l
212  real*8 lp, ctotpippX, celapippX
213 !
214  data (ea(i),i= 1, 18)/
215  1 0.100, 0.300, 0.500, 0.600, 0.700, 0.800, 0.900, 1.000, 1.100,
216  2 1.200, 1.300, 1.500, 5.000,10.000,30.000,50.000,70.000, 100.001/
217  data (xsa(i),i= 1, 18)/
218  1 1.d-5, 4.500, 7.500, 8.000,10.500,12.000,13.500,16.000,18.000,
219  2 19.500,19.800,20.000,20.200,19.500,19.200,19.200,19.500,20.000/
220 !
221  if(e .lt. 100.d-3) then
222  xs=1.d-5
223  elseif(e .lt. 100.) then
224  ee= e
225  call kfrge(ea, 1, 18, ee, l, icon)
226  xs=(xsa(l)-xsa(l-1))/(ea(l)-ea(l-1))*(ee-ea(l-1)) +
227  * xsa(l-1)
228  else
229  lp = log(e) ! e = p here.
230  xs = ctotpippx(e, lp) - celapippx(e, lp)
231  endif
232  end
233  real*8 function ctotpippx(p, logp)
234  implicit none
235  real*8 p, logp
236  real*8 a, b, n, c, d
237  real*8 cXsec
238  data a/16.4/, b/19.3/, n/-0.42/, c/0.19/, d/0./
239  ctotpippx = cxsec(p, logp, a, b, n, c, d)
240  end
241  real*8 function celapippx(p, logp)
242  implicit none
243  real*8 p, logp
244  real*8 a, b, n, c, d
245  real*8 cXsec
246  data a/0./, b/11.4/, n/-0.4/, c/0.079/, d/0./
247  celapippx = cxsec(p, logp, a, b, n, c, d)
248  end
249 
250 ! ***********************************************************
251 ! *
252 ! * k- p inelastic cross-section
253 ! *
254 ! ****************** tested 88.08.11 *****************k.k ***
255 !
256 ! e: input. k- k.e GeV
257 ! for e<40.e-3 MeV xs=1.e-5
258 ! for e>100gev xs P.D formula
259 !
260 ! xs:output. inelastic cross-section in mb
261 !
262  subroutine ckminuspxsec0(e, xs)
263  implicit none
264  real*8 e, xs
265  real*8 ee
266  integer i, icon, l
267 
268  real*8 lp
269  real*8 ctotkmpX, celakmpX
270  real*8 ea(23), xsa(23)
271 
272 !
273  data (ea(i),i= 1, 23)/
274  1 0.040, 0.070, 0.080, 0.085, 0.090, 0.100, 0.120, 0.130, 0.150,
275  2 0.170, 0.200, 0.250, 0.300, 0.400, 0.500, 0.600, 0.640, 1.500,
276  3 5.000,10.000,20.000,50.000, 100.0001/
277  data (xsa(i),i= 1, 23)/
278  1 1.d-5,30.000,38.000,39.800,40.000,40.200,40.000,39.000,35.000,
279  230.000,22.500,17.500,18.000,20.000,22.500,26.000,27.000,25.000,
280  321.000,20.000,19.000,18.500,18.0000/
281 !
282  if(e .le. 40.e-3)then
283  xs=1.e-5
284  elseif(e .lt. 100.) then
285  ee = e
286  call kfrge(ea, 1, 23, ee, l, icon)
287  xs=(xsa(l)-xsa(l-1))/(ea(l)-ea(l-1))*(ee-ea(l-1)) +
288  * xsa(l-1)
289  else
290  lp = log(e) ! e = p here.
291  xs = ctotkmpx(e, lp) - celakmpx(e, lp)
292  endif
293  end
294  real*8 function ctotkmpx(p, logp)
295  implicit none
296  real*8 p, logp
297  real*8 a, b, n, c, d
298  real*8 cXsec
299  data a/32.1/, b/0./, n/0./, c/0.66/, d/-5.6/
300  ctotkmpx = cxsec(p, logp, a, b, n, c, d)
301  end
302  real*8 function celakmpx(p, logp)
303  implicit none
304  real*8 p, logp
305  real*8 a, b, n, c, d
306  real*8 cXsec
307  data a/7.3/, b/0./, n/0./, c/0.29/, d/-2.4/
308  celakmpx = cxsec(p, logp, a, b, n, c, d)
309  end
310 
311 ! ***********************************************************
312 ! *
313 ! * k+ p inelastic cross-section
314 ! *
315 ! ****************** tested 88.08.11 *****************k.k ***
316 !
317 ! e: input. k+ k.e GeV
318 ! for e<100.e-3 xs=1.e-5
319 ! for e>100.gev xs by p.d
320 !
321 ! xs:output. inelastic cross-section in mb
322 !
323  subroutine ckpluspxsec0(e, xs)
324  implicit none
325  real*8 e, xs
326  integer i, icon, l
327  real*8 ea(13), xsa(13), ee
328  real*8 lp
329  real*8 ctotkppX, celakppX
330 
331 
332  data (ea(i),i= 1, 13)/
333  1 0.100, 0.200, 0.300, 0.500, 1.000, 2.000, 3.000, 4.000, 5.000,
334  210.000,20.000,50.000, 100.0001 /
335  data (xsa(i),i= 1, 13)/
336  1 1.d-5, 2.500, 5.000, 7.500,10.000,12.000,13.000,13.500,14.000,
337  2 15.000,15.300,15.800,16.200/
338 
339  if(e .le. 100.e-3)then
340  xs=1.d-5
341  elseif(e .lt. 100.) then
342  ee = e
343  call kfrge(ea, 1, 13, ee, l, icon)
344  xs=(xsa(l)-xsa(l-1))/(ea(l)-ea(l-1))*(ee-ea(l-1)) +
345  * xsa(l-1)
346  else
347  lp = log(e) ! e = p here.
348  xs = ctotkppx(e, lp) - celakppx(e, lp)
349  endif
350  end
351  real*8 function ctotkppx(p, logp)
352  implicit none
353  real*8 p, logp
354  real*8 a, b, n, c, d
355  real*8 cXsec
356  data a/18.1/, b/0./, n/0./, c/0.26/, d/-1.0/
357  ctotkppx = cxsec(p, logp, a, b, n, c, d)
358  end
359  real*8 function celakppx(p, logp)
360  implicit none
361  real*8 p, logp
362  real*8 a, b, n, c, d
363  real*8 cXsec
364  data a/5.0/, b/8.1/, n/-1.8/, c/0.16/, d/-1.3/
365  celakppx = cxsec(p, logp, a, b, n, c, d)
366  end
367 
368 ! ***********************************************************
369 ! *
370 ! * pi- air reaction cross-section
371 ! * (total - elastic)
372 ! *
373 ! ****************** tested 88.08.11 *****************k.k ***
374 !
375 ! e: input. pi- k.e GeV
376 ! for e>500.mev xs at e=500 mev is given
377 !
378 ! xs:output. reaction cross-section in mb
379 !
380  subroutine cpimairreacx(e, xs)
381  implicit none
382  real*8 e, xs
383  integer i, icon, l
384  real*8 ea(23), xsa(23), ee
385 
386 
387 ! MeV
388  data (ea(i),i= 1, 23)/
389  1 0., 10., 20., 30., 40., 50., 70., 80., 100., 120., 140.,
390  2 160., 180., 200., 240., 260., 280., 300., 340., 360., 400., 450.,
391  3 500.0001/
392  data (xsa(i),i= 1, 23)/
393  1 0., 92., 138., 172., 205., 230., 356., 414., 452., 460., 462.,
394  2 463., 461., 460., 416., 391., 359., 328., 276., 241., 224., 218.,
395  3 207./
396  ee=min(500.d0, e*1.d3)
397  call kfrge(ea, 1, 23, ee, l, icon)
398  xs=(xsa(l)-xsa(l-1))/(ea(l)-ea(l-1))*(ee-ea(l-1)) +
399  * xsa(l-1)
400  end
401 
402 ! ***********************************************************
403 ! *
404 ! * pi+ air reaction cross-section
405 ! * (total - elastic)
406 ! *
407 ! ****************** tested 88.08.11 *****************k.k ***
408 !
409 ! e: input. pi+ k.e GeV
410 ! for e>500.mev xs at e=500 mev is given
411 !
412 ! xs:output. reaction cross-section in mb
413 !
414  subroutine cpipairreacx(e, xs)
415  implicit none
416  real*8 e, xs
417 
418  integer i, icon, l
419  real*8 ea(24), xsa(24), ee
420 ! mev
421  data (ea(i),i= 1, 24)/
422  1 0., 10., 20., 30., 40., 50., 70., 80., 90., 100., 120.,
423  2 140., 160., 180., 200., 240., 260., 280., 300., 340., 360., 400.,
424  3 450., 500.0001/
425  data (xsa(i),i= 1, 24)/
426  1 0., 57., 94., 126., 155., 195., 316., 379., 408., 416., 437.,
427  2 443., 448., 443., 437., 393., 370., 345., 328., 253., 230., 207.,
428  3 190., 190./
429  ee=min(500.d0, e*1.d3)
430  call kfrge(ea, 1, 24, ee, l, icon)
431  xs=(xsa(l)-xsa(l-1))/(ea(l)-ea(l-1))*(ee-ea(l-1)) +
432  * xsa(l-1)
433  end
434 ! ***********************************************************
435 ! *
436 ! * pi- air absorption x-section
437 ! *
438 ! ****************** tested 88.08.11 *****************k.k ***
439 !
440 ! e: input. pi- k.e GeV
441 ! for e>500.mev xs at e=500 mev is given
442 !
443 ! xs:output. reaction cross-section in mb
444 !
445  subroutine cpimairabsx(e, xs)
446  implicit none
447  real*8 e, xs
448  integer i, icon, l
449  real*8 ea(13), xsa(13), ee
450 ! mev
451  data (ea(i),i= 1, 13)/
452  1 0., 10., 20., 30., 40., 50., 70., 100., 140., 180., 200.,
453  2 300., 500.001/
454  data (xsa(i),i= 1, 13)/
455  1 0., 91., 136., 159., 163., 172., 184., 193., 195., 193., 184.,
456  2 115., 0./
457  ee=min(500.d0, e*1.d3)
458  call kfrge(ea, 1, 13, ee, l, icon)
459  xs=(xsa(l)-xsa(l-1))/(ea(l)-ea(l-1))*(ee-ea(l-1)) +
460  * xsa(l-1)
461  end
462 ! ***********************************************************
463 ! *
464 ! * pi+ air absorption x-section
465 ! *
466 ! ****************** tested 88.08.11 *****************k.k ***
467 !
468 ! e: input. pi+ k.e tev
469 ! for e>500.mev xs at e=500 mev is given
470 !
471 ! xs:output. reaction cross-section in mb
472 !
473  subroutine cpipairabsx(e, xs)
474  implicit none
475  real *8 e, xs
476 !
477  integer i, icon, l
478  real * 8 ea(13), xsa(13), ee
479 ! mev
480  data (ea(i),i= 1, 13)/
481  1 0., 10., 20., 30., 40., 50., 70., 100., 140., 180., 200.,
482  2 300., 500.001/
483  data (xsa(i),i= 1, 13)/
484  1 0., 47., 92., 115., 129., 140., 161., 178., 184., 184., 182.,
485  2 115., 0./
486  ee=min(500.d0, e*1.d3)
487  call kfrge(ea, 1, 13, ee, l, icon)
488  xs=(xsa(l)-xsa(l-1))/(ea(l)-ea(l-1))*(ee-ea(l-1)) +
489  * xsa(l-1)
490  end
subroutine cpipairabsx(e, xs)
Definition: cppXsec0.f:474
subroutine kfrge(x, intvx, n, c, m, icon)
Definition: kfrge.f:33
real *8 function celapimpx(p, logp)
Definition: cppXsec0.f:186
real *8 function celakppx(p, logp)
Definition: cppXsec0.f:360
block data cblkIncident data *Za1ry *HeightOfInj d3
Definition: cblkIncident.h:7
real *8 function ctotpippx(p, logp)
Definition: cppXsec0.f:234
subroutine cpimairreacx(e, xs)
Definition: cppXsec0.f:381
real *8 function celapippx(p, logp)
Definition: cppXsec0.f:242
real *8 function celappx(p, logp)
Definition: cppXsec0.f:72
subroutine cpbarpxsec0(e, xs)
Definition: cppXsec0.f:104
subroutine cppxsec0(e, xs)
Definition: cppXsec0.f:30
real *8 function ctotpimpx(p, logp)
Definition: cppXsec0.f:177
block data cblkEvhnp ! currently usable models data RegMdls ad *special data *Cekaon d0
Definition: cblkEvhnp.h:5
subroutine cpiminuspxsec0(e, xs)
Definition: cppXsec0.f:148
real *8 function ctotkppx(p, logp)
Definition: cppXsec0.f:352
subroutine ckpluspxsec0(e, xs)
Definition: cppXsec0.f:324
dE dx *! Nuc Int sampling table d
Definition: cblkMuInt.h:130
real *8 function celapbpx(p, logp)
Definition: cppXsec0.f:128
subroutine ckminuspxsec0(e, xs)
Definition: cppXsec0.f:263
real *8 function cxsec(p, logp, a, b, n, c, d)
Definition: cppXsec0.f:83
real *8 function ctotppx(p, logp)
Definition: cppXsec0.f:64
subroutine cpipairreacx(e, xs)
Definition: cppXsec0.f:415
real *8 function celakmpx(p, logp)
Definition: cppXsec0.f:303
real *8 function ctotkmpx(p, logp)
Definition: cppXsec0.f:295
real *8 function ctotpbpx(p, logp)
Definition: cppXsec0.f:120
subroutine cpimairabsx(e, xs)
Definition: cppXsec0.f:446
subroutine cpipluspxsec0(e, xs)
Definition: cppXsec0.f:207