COSMOS v7.655  COSMOSv7655
(AirShowerMC)
cpairErgLPM.f
Go to the documentation of this file.
1 ! test cpairErgLPM
2 !
3 ! real*8 ee, rho, eg
4 ! integer i
5 ! read(*,*) eg, rho
6 ! eg = eg/1.e9 ! GeV
7 ! rho = rho * 1.e3 ! kg/m3
8 ! do i = 1, 10000
9 ! call cpairErgLPM(eg, rho, ee)
10 ! write(*, *) sngl(ee/eg)
11 ! enddo
12 ! end
13 !
14 ! sampling Pair electron energy
15 ! when the LPM effect is considered.
16 ! this may be used eg > 10^17 eV
17 !
18 
19  subroutine cpairerglpm(eg, rho, ee)
20  implicit none
21 #include "Zmass.h"
22  real*8 eg !input. gamma energy in GeV
23  real*8 rho !input. air density in kg/m3
24  real*8 ee !output. sampled electron or positron energy in GeV
25 !
26  real*8 u, v, temp, s, w, u1, v1, w1, x
27  real*8 cmigdG, cmigdPsi, cmigdSforPair, cmigdGzai
28 
29  real*8 a1, a2, suma, a1prob
30  parameter( a1 = 2./3., a2 = 1./9.,
31  * suma = a1 + a2, a1prob = a1/suma)
32 !
33  do while (.true.)
34  call rndc(u)
35  if(u .lt. a1prob) then
36 ! sampling by dv
37  call rndc(v)
38 ! rejection
39 ! get s
40  s = cmigdsforpair(eg, rho, v)
41  temp = cmigdgzai(s) * (cmigdg(s) +cmigdpsi(s))/2.
42  call rndc(u)
43  if(u .lt. temp) then
44 ! accepted
45  ee =max(min(v, 1.d0-masele/eg),masele/eg) * eg
46  goto 100
47  endif
48  else
49 ! sampling by 12(v-0.5)dv
50  call rndc(u)
51  call rndc(v)
52  call rndc(w)
53 ! get one which is most far from 1/2
54  u1 = abs(u - 0.5)
55  v1 = abs(v - 0.5)
56  w1 = abs(w - 0.5)
57  x = max(u1, v1, w1)
58  if(x .eq. u1) then
59  v = u
60  elseif(x .eq. w1) then
61  v = w
62  endif
63 ! rejection, get s
64  s = cmigdsforpair(eg, rho, v)
65  temp = cmigdgzai(s) * cmigdpsi(s)
66  call rndc(u)
67  if(u .lt. temp) then
68 ! accepted
69  ee =max(min(v, 1.d0-masele/eg), masele/eg) * eg
70  goto 100
71  endif
72  endif
73  enddo
74  100 continue
75  end
integer npitbl real *nx parameter(n=101, npitbl=46, nx=n-1) real *8 uconst
subroutine cpairerglpm(eg, rho, ee)
Definition: cpairErgLPM.f:20
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
Definition: cblkElemag.h:7
subroutine rndc(u)
Definition: rnd.f:91
block data cblkEvhnp ! currently usable models data RegMdls ad *special data *Cekaon d0
Definition: cblkEvhnp.h:5
const double masele
Definition: Zmass.h:2