224 #include "Zincidentv.h" 234 logical cross, seeupper
244 loc = trackbefmove%where
251 call cxyz2prim(obssites(noofsites)%pos%xyz,
252 * movedtrack%pos%xyz, xyz2)
253 call cxyz2prim(obssites(noofsites)%pos%xyz,
254 * trackbefmove%pos%xyz, xyz1)
260 seeupper = cosfromaxis .le. 0.
261 if(.not. seeupper)
then 263 if( loc .gt. noofsites )
then 264 if( movedtrack%pos%height .le. borderheightl )
then 267 movedtrack%where = noofsites+1
269 elseif( movedtrack%pos%height .ge. borderheighth )
then 276 if(xyz1%r(3) .gt. obssites(loc)%zpl .and.
277 * xyz2%r(3) .le. obssites(loc)%zpl)
then 279 elseif( movedtrack%pos%height .le. borderheightl )
then 283 movedtrack%where = noofsites + 1
284 elseif( movedtrack%pos%height .ge. borderheighth )
then 294 if( movedtrack%pos%height .ge. borderheighth )
then 299 elseif(movedtrack%pos%height .le. borderheightl )
then 302 movedtrack%where = noofsites+1
306 if(xyz1%r(3) .lt. obssites(loc-1)%zpl .and.
307 * xyz2%r(3) .ge. obssites(loc-1)%zpl )
then 309 elseif( movedtrack%pos%height .ge. borderheighth )
then 314 elseif( movedtrack%pos%height .le. borderheightl )
then 318 movedtrack%where = noofsites + 1
328 if(.not. cross )
then 332 elseif( cross .and. movestat .eq.
borderl )
then 335 * trackbefmove%pos%xyz%r(1), trackbefmove%pos%xyz%r(2),
336 * trackbefmove%pos%xyz%r(3),
337 * unitv%r(1), unitv%r(2), unitv%r(3),
338 * borderheightl+eradius,
leng, icon)
344 elseif( cross .and. movestat .eq.
borderh )
then 347 * trackbefmove%pos%xyz%r(1), trackbefmove%pos%xyz%r(2),
348 * trackbefmove%pos%xyz%r(3),
349 * unitv%r(1), unitv%r(2), unitv%r(3),
350 * borderheighth+eradius,
leng, icon)
360 leng = (obssites(loc-1)%zpl - xyz1%r(3))/dircos%r(3)
362 leng = (obssites(loc)%zpl - xyz1%r(3))/dircos%r(3)
371 if( movedtrack%pos%height .gt. borderheightl .and.
372 * movedtrack%pos%height .lt. borderheighth )
then 376 elseif( movedtrack%pos%height .ge. borderheighth )
then 380 * trackbefmove%pos%xyz%r(1), trackbefmove%pos%xyz%r(2),
381 * trackbefmove%pos%xyz%r(3),
382 * unitv%r(1), unitv%r(2), unitv%r(3),
383 * borderheighth+eradius, leng2, icon)
387 if( leng2 .lt.
leng )
then 391 elseif( movedtrack%pos%height .le. borderheightl )
then 395 * trackbefmove%pos%xyz%r(1), trackbefmove%pos%xyz%r(2),
396 * trackbefmove%pos%xyz%r(3),
397 * unitv%r(1), unitv%r(2), unitv%r(3),
398 * borderheightl+eradius, leng2, icon)
402 if( leng2 .lt.
leng )
then 408 write(0, *)
'logic error' subroutine cxplsph(x0, y0, z0, l, m, n, r, el, icon)
real *8 function clen2thick(z, cosz, leng)
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)
block data cblkEvhnp ! currently usable models data RegMdls ad *special data *Cekaon d0
subroutine cxyz2primd(a, b)
subroutine cscalerprod(a, b, c)