5 * Revision 1.1.1.1 1995/10/24 10:20:30 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.28 by S.Giani
14 ************************************************************************
17 * Light processing at the end of each step *
21 ************************************************************************
23 #include "geant321/gctmed.inc"
24 #include "geant321/gcking.inc"
25 #include "geant321/gcflag.inc"
26 #include "geant321/gctrak.inc"
27 ********************************************************************************
28 #include "geant321/gcbank.inc"
29 #include "geant321/gcvdma.inc"
30 #include "geant321/gcpixe.inc"
31 #include "geant321/gcrayt.inc"
33 DIMENSION PROTU(1),PROTV(1)
35 DIMENSION CKDIFF(8),CKSPRE(8),NEXPO(8)
36 DATA CKDIFF/0.40,0.80,0.50,0.50,0.25,0.25,0.00,0.00/
37 DATA CKSPRE/0.00,0.00,0.50,0.50,0.75,0.75,1.00,1.00/
38 DATA NEXPO/0,0,2,7,2,7,1,10/
41 * 0=darkmatt; 1=brightmatt; 2=plastic; 3=ceramic; 4=roughmetal;
42 * 5=shinymetal; 6=glass; 7=mirror.
44 SAVE MYMED,APROSH,MYOMED,SPONOR,XYZMOD
45 ********************************************************************************
47 IF(ISSEEN.EQ.1.OR.ISSEEN.EQ.-2)THEN
48 IF(INWVOL.EQ.1.OR.(INWVOL.EQ.3.AND.IOMBRA.EQ.9))THEN
54 out(1)=veccos(1)*vect(4)+veccos(2)*vect(5)+veccos(3)*vect(6)
59 APROSC=ABS(OUT(1))*CKDIFF(ISLSTY+1)
61 print *,'warning: aprosc.lt.0'
63 IF(ISLSTY.NE.0.AND.ISLSTY.NE.1)THEN
64 BPROSC=(2.*(OUT(1)**2))-1.
66 BPROSC=CKSPRE(ISLSTY+1)*(BPROSC**NEXPO(ISLSTY+1))
70 APROSC=(APROSC+BPROSC)
74 APROSC=APFLAG*CKDIFF(ISLSTY+1)
76 print *,'warning: aprosc.lt.0',aprosc
78 IF(ISLSTY.NE.0.AND.ISLSTY.NE.1)THEN
79 BPROSC=(2.*(APFLAG**2))-1.
81 BPROSC=CKSPRE(ISLSTY+1)*(BPROSC**NEXPO(ISLSTY+1))
85 APROSC=(APROSC+BPROSC)
90 XYZMOD=1./SQRT((XLPOS-VECT(1))**2+(YLPOS-VECT(2))**2+
93 * call ggperp(vect,veccos,ierr)
99 out(1)=veccos(1)*vect(4)+veccos(2)*vect(5)+veccos(3)*vect(6)
103 XLDIR=(XLPOS-VECT(1))*XYZMOD
104 YLDIR=(YLPOS-VECT(2))*XYZMOD
105 ZLDIR=(ZLPOS-VECT(3))*XYZMOD
106 APROSH=((OUT(2)*XLDIR)+(OUT(3)*YLDIR)+(OUT(4)*ZLDIR))*
108 SPONOR=APROSH/CKDIFF(ISLSTY+1)
109 IF(ISLSTY.NE.0.AND.ISLSTY.NE.1)THEN
111 B1=OUT(4)*YLDIR-OUT(3)*ZLDIR
112 B2=OUT(2)*ZLDIR-OUT(4)*XLDIR
113 B3=OUT(3)*XLDIR-OUT(2)*YLDIR
114 VRX=OUT(4)*B2-OUT(3)*B3+OUT(2)*SPONOR
115 VRY=OUT(2)*B3-OUT(4)*B1+OUT(3)*SPONOR
116 VRZ=OUT(3)*B1-OUT(2)*B2+OUT(4)*SPONOR
117 COSB1=VRX*XCOSXS+VRY*YCOSYS+VRZ*ZCOSZS
119 BPROSH=CKSPRE(ISLSTY+1)*(COSB1**NEXPO(ISLSTY+1))
120 * print *,COSB1**ISLSTY
124 APROSH=(APROSH+BPROSH)
129 APROSH=APFLAH*CKDIFF(ISLSTY+1)
130 IF(ISLSTY.NE.0.AND.ISLSTY.NE.1)THEN
136 ELSEIF(IXYFLA.EQ.2)THEN
140 ELSEIF(IXYFLA.EQ.3)THEN
145 print *,'problem for ixyfla'
147 B1=OUT(4)*YLDIR-OUT(3)*ZLDIR
148 B2=OUT(2)*ZLDIR-OUT(4)*XLDIR
149 B3=OUT(3)*XLDIR-OUT(2)*YLDIR
150 VRX=OUT(4)*B2-OUT(3)*B3+OUT(2)*SPONOR
151 VRY=OUT(2)*B3-OUT(4)*B1+OUT(3)*SPONOR
152 VRZ=OUT(3)*B1-OUT(2)*B2+OUT(4)*SPONOR
153 COSB1=VRX*XCOSXS+VRY*YCOSYS+VRZ*ZCOSZS
155 BPROSH=CKSPRE(ISLSTY+1)*(COSB1**NEXPO(ISLSTY+1))
156 * print *,COSB1**ISLSTY
160 APROSH=(APROSH+BPROSH)
166 IF(IOMBRA.EQ.10)MYOMED=ISCOLO
168 CALL GDLUMI(ISCOLO,APROSC)
170 IF(IOMBRA.NE.9.AND.IOMBRA.NE.10)THEN
174 ** IF(ISWIT(9).NE.54321)THEN
175 CALL IPM(1,PROTU,PROTV)
177 ** CALL IXPIXEL(IXXX,IYYY,ICOLOR)
180 ELSEIF(IOMBRA.EQ.10)THEN
182 ELSEIF(IOMBRA.EQ.9)THEN
183 IF((INWVOL.EQ.3.AND.SPONOR.GT.0.).OR.(INWVOL.EQ.1.AND.
184 + SPONOR.GT.0..AND.SLENG.GE.(1./XYZMOD)))THEN
185 CALL GDLUMI(MYOMED,APROSH)
187 FINMED=((1.-SINTEN)*MYMED)+(SINTEN*MYOMED)
189 IF((FINMED-MEDFIN).GT..5)MEDFIN=MEDFIN+1
191 CALL IPM(1,PROTU,PROTV)
192 IF(INWVOL.EQ.3.AND.SPONOR.GT.0.)IOMBRA=10
197 ELSEIF(MYOMED.EQ.3)THEN
199 ELSEIF(MYOMED.EQ.4)THEN
201 ELSEIF(MYOMED.EQ.5)THEN
203 ELSEIF(MYOMED.EQ.6)THEN
205 ELSEIF(MYOMED.EQ.7)THEN
208 FINMED=((1.-SINTEN)*MYMED)+(SINTEN*MYOMED)
210 IF((FINMED-MEDFIN).GT..5)MEDFIN=MEDFIN+1
212 CALL IPM(1,PROTU,PROTV)
213 IF(INWVOL.EQ.3.AND.SPONOR.LE.0.)IOMBRA=10
219 ********************************************************************************