1 subroutine cthinning(Tracks, n, iTrack, nout)
32 #include "Zincidentv.h" 34 type(
track):: Tracks(n)
61 #include "Zincidentv.h" 95 real*8 depth1/4000.d0/
96 real*8 depth2/8750.d0/
106 real*8 deepfactor/10./
110 real*8 farfactor/0.01/
127 real*8 iergpn, aergpn
133 data z1/-1./, e0/-1./
134 save z1, e0, rhoe, dd
135 type(
coord):: oxyz, axisxyz
136 real*8 len, h, relax, dist
140 if(incidentcopy%p%code .eq.
kphoton .and.
146 if(z1 .ne. zfirst%pos%depth .or.
147 * e0 .ne. incidentcopy%p%fm%p(4) )
then 148 z1 = zfirst%pos%depth
149 e0 = incidentcopy%p%fm%p(4)
151 rhoe=cvh2den( zfirst%pos%height )* 1.
e-3 *
152 * incidentcopy%p%fm%p(4)
153 if(rhoe .lt. 1.e6)
then 156 dd =min( 200.* sqrt(rhoe/1.e6), 1000.d0)
163 if( magbrem .eq. 2 .and. z1 .lt. 1.
e-6 )
then 164 dothin = itrack%pos%depth/zfirst%vec%coszenith
167 dothin=( itrack%pos%depth-zfirst%pos%depth)/
168 * zfirst%vec%coszenith .gt. (1000.+ dd)
179 if( dothin .and. rfar .lt. big .and.
180 * itrack%pos%depth .lt. depth2 .and.
181 * itrack%pos%depth .gt. depth1 )
then 183 if( dothin .and. rfar .lt. big .and.
184 * itrack%pos%depth .lt. depth2 .and.
185 * (itrack%p%code .gt.
kelec .or.
186 * itrack%pos%depth .gt. depth1 ) )
then 189 h = itrack%pos%height - obssites(atrack%where)%pos%height
190 len = h / (-angleatobscopy%r(3))
191 axisxyz%r(1:3) = obssites(atrack%where)%pos%xyz%r(1:3) -
192 * len*dcatobsxyz%r(1:3)
213 * atrack%pos%xyz, oxyz)
216 * atrack%pos%xyz, oxyz)
218 dist = sqrt( oxyz%r(1)**2+ oxyz%r(2)**2)
226 if(itrack%pos%depth .gt. depth2)
then 242 iergpn = itrack%p%fm%p(4)
248 if(itrack%p%code .eq.
kgnuc)
then 250 iergpn = iergpn/itrack%p%subcode
257 aergpn = atrack%p%fm%p(4)
258 if(atrack%p%code .eq.
kgnuc)
then 260 aergpn = aergpn / atrack%p%subcode
263 if( atrack%p%code .le.
kelec )
then 268 if( itrack%p%code .le.
kelec )
then 275 if(iergpn .gt. ethin(ii)*relax )
then 276 if(aergpn .gt. ethin(jj)*relax)
then 279 atrack%wgt = itrack%wgt
283 p = aergpn/(ethin(jj)*relax)
284 if( itrack%wgt/p .lt. ethin(jj+1)*relax)
then 286 if( atrack%wgt .lt. ethin(jj+1)*relax)
then 287 p = aergpn/(ethin(jj)*relax)
293 atrack%wgt = itrack%wgt / p
299 atrack%wgt = itrack%wgt
303 if(aergpn .gt. ethin(jj)*relax)
then 304 atrack%wgt = itrack%wgt
309 if( itrack%wgt/p .lt. ethin(jj+1)*relax )
then 311 if( atrack%wgt .lt. ethin(jj+1)*relax )
then 318 atrack%wgt = itrack%wgt / p
324 atrack%wgt = itrack%wgt
330 atrack%wgt = itrack%wgt
integer npitbl real *nx parameter(n=101, npitbl=46, nx=n-1) real *8 uconst
dE dx *! Nuc Int sampling table e
max ptcl codes in the kgnuc
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 cxyz2prim(base, a, b)
! Zobs h header file for observation sites definition ! integer horizontal
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 cthinning(Tracks, n, iTrack, nout)
subroutine cxyz2det(det, a, b)
! Zobs h header file for observation sites definition ! integer * perpendicular
subroutine csetthinwgt(iTrack, aTrack, icon)