5 * Revision 1.1.1.1 1995/10/24 10:22:02 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.46 by S.Giani
15 *=== phdwll ===========================================================*
17 SUBROUTINE PHDWLL ( UBIMPT, VBIMPT, WBIMPT )
19 #include "geant321/dblprc.inc"
20 #include "geant321/dimpar.inc"
21 #include "geant321/iounit.inc"
23 *----------------------------------------------------------------------*
24 *----------------------------------------------------------------------*
26 #include "geant321/nucgeo.inc"
27 #include "geant321/parnuc.inc"
28 #include "geant321/part.inc"
31 PDIFF = PNUCCO - PPRWLL
32 IF ( PDIFF .LT. - ANGLGB ) THEN
33 IF ( RIMPTR .LE. RADIU0 ) THEN
34 RADHLP = 0.5D+00 * ( RADTOT + RADPRO + MAX ( ABS (RIMPTR),
36 CZHLP = SQRT ( ( RADHLP + BIMPTR ) * ( RADHLP - BIMPTR ) )
38 HLPHLP = RIMPTR / ( RIMPCT * RADHLP )
39 CXHLP = CZHLP * CXIMPC - XBIMPC * HLPHLP
40 CYHLP = CZHLP * CYIMPC - YBIMPC * HLPHLP
41 CZHLP = CZHLP * CZIMPC - ZBIMPC * HLPHLP
42 PXPROJ = PNUCCO * CXIMPC
43 PYPROJ = PNUCCO * CYIMPC
44 PZPROJ = PNUCCO * CZIMPC
45 PDTCMP = PXPROJ * CXHLP + PYPROJ * CYHLP + PZPROJ * CZHLP
46 DELTAE = PDTCMP**2 - PNUCCO**2 + PPRWLL**2
47 DELTAP = - PDTCMP + SQRT ( DELTAE )
48 PXPROJ = PXPROJ + DELTAP * CXHLP
49 PYPROJ = PYPROJ + DELTAP * CYHLP
50 PZPROJ = PZPROJ + DELTAP * CZHLP
52 EKEBIM = MAX ( EKECON + VPRBIM, EKEWLL )
53 PBIMSQ = EKEBIM * ( EKEBIM + 2.D+00 * AM (KPRIN) )
54 RADHLP = 0.5D+00 * ( RADTOT + RADPRO + MAX ( BIMPTR,
56 CZHLP = SQRT ( ( RADHLP + BIMPTR ) * ( RADHLP - BIMPTR ) )
58 HLPHLP = RIMPTR / ( RIMPCT * RADHLP )
59 CXHLP = CZHLP * CXIMPC - XBIMPC * HLPHLP
60 CYHLP = CZHLP * CYIMPC - YBIMPC * HLPHLP
61 CZHLP = CZHLP * CZIMPC - ZBIMPC * HLPHLP
62 PXPROJ = PNUCCO * CXIMPC
63 PYPROJ = PNUCCO * CYIMPC
64 PZPROJ = PNUCCO * CZIMPC
65 PDTCMP = PXPROJ * CXHLP + PYPROJ * CYHLP + PZPROJ * CZHLP
66 DELTAE = PDTCMP**2 - PNUCCO**2 + PBIMSQ
67 DELTAP = - PDTCMP + SQRT ( DELTAE )
68 PXPROJ = PXPROJ + DELTAP * CXHLP
69 PYPROJ = PYPROJ + DELTAP * CYHLP
70 PZPROJ = PZPROJ + DELTAP * CZHLP
71 PPBIM = SQRT ( PBIMSQ )
72 COSTHE = ( PXPROJ * CXIMPC + PYPROJ * CYIMPC
73 & + PZPROJ * CZIMPC ) / PPBIM
74 THETA = ACOS (COSTHE) * ( 1.D+00 + ( PNUCCO - PPBIM )
78 PXPROJ = PPRWLL * ( COSTHE * CXIMPC - SINTHE * UBIMPT )
79 PYPROJ = PPRWLL * ( COSTHE * CYIMPC - SINTHE * VBIMPT )
80 PZPROJ = PPRWLL * ( COSTHE * CZIMPC - SINTHE * WBIMPT )
82 ELSE IF ( PDIFF .GT. ANGLGB ) THEN
85 PXPROJ = PPRWLL * CXIMPC
86 PYPROJ = PPRWLL * CYIMPC
87 PZPROJ = PPRWLL * CZIMPC
90 *=== End of subroutine phdwll =========================================*