]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/cgpack/cgfaco.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / cgpack / cgfaco.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:19:43 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.31 by S.Giani
11*-- Author :
12*
13 SUBROUTINE CGFACO(VVX,VVY,IJKLMN,LFULL,APROSC)
14*
15********************************************************************
16* *
17* Function: Fill fully visible faces with solid colour. *
18* The colour is determined by the table in GDCOTA. *
19* The intensity is determined in GDSHAD. *
20* *
21* Author: S. Giani *
22* *
23* I/O parameters: *
24* *
25* VVX,VVY = set of edge's coordinates *
26* IJKLMN = number of edges *2. *
27* LFULL = flag for full visibility *
28* APROSC = light intensity *
29* *
30********************************************************************
31*
32#include "geant321/gcbank.inc"
33#include "geant321/gcunit.inc"
34#include "geant321/cggpar.inc"
35#include "geant321/cgdelt.inc"
36#include "geant321/cghpar.inc"
37#include "geant321/cgctra.inc"
38#include "geant321/cgcedg.inc"
39#include "geant321/gcdraw.inc"
40#include "geant321/gcflag.inc"
41#include "geant321/gcspee.inc"
42*
43 DIMENSION VVX(500),VVY(500),IZ(500)
44 DIMENSION TVVX(500),TVVY(500),IACTU(500)
45*
46 IACTU(1)=0
47 IACT=1
48 LINFIL=IBITS(LINATT,13,3)
49 CALL ISFAIS(1)
50 LINCOL=IBITS(LINATT,16,8)
51 MPRECM=9-LINFIL
52 IF(MPRECM.EQ.8)THEN
53 CALL ISFACI(LINCOL)
54 CALL ISPLCI(LINCOL)
55 ELSE
56 CALL GDSHAD(LINCOL,APROSC)
57 ENDIF
58*
59 DO 10 I=1,IJKLMN
60 TVVX(I)=VVX(I)
61 TVVY(I)=VVY(I)
62 10 CONTINUE
63 VVX(1)=TVVX(1)
64 VVY(1)=TVVY(1)
65 VVX(2)=TVVX(2)
66 VVY(2)=TVVY(2)
67 IZ(1)=1
68 IZ(2)=2
69 KZ=3
70 IGOR=IJKLMN/2
71 DO 90 II=3,IGOR
72 DO 40 JJ=3,IJKLMN
73 DO 30 I=1,KZ-1
74 IF(JJ.EQ.IZ(I))GOTO 40
75 30 CONTINUE
76 C11=ABS(TVVX(JJ)-VVX(II-1))
77 C12=ABS(TVVY(JJ)-VVY(II-1))
78 IF(C11.LT..001.AND.C12.LT..001)THEN
79 PDJ=JJ*.5
80 IPDJ=PDJ
81 ARG=PDJ-IPDJ
82 IF(ARG.GT..49)THEN
83 VVX(II)=TVVX(JJ+1)
84 VVY(II)=TVVY(JJ+1)
85 IZ(KZ)=JJ
86 IZ(KZ+1)=JJ+1
87 KZ=KZ+2
88 ELSE
89 VVX(II)=TVVX(JJ-1)
90 VVY(II)=TVVY(JJ-1)
91 IZ(KZ)=JJ
92 IZ(KZ+1)=JJ-1
93 KZ=KZ+2
94 ENDIF
95 GOTO 90
96 ENDIF
97 40 CONTINUE
98 IACT=IACT+1
99 IACTU(IACT)=II-2
100 NUMPON=IACTU(IACT)-IACTU(IACT-1)
101 NUPO=IACTU(IACT-1)+1
102 IF(NUMPON.GT.2)THEN
103* IF(LEP.LT.0)THEN
104* DO 50 IIJ=NUPO,NUPO+NUMPON-1
105* IF(VVY(IIJ).LT.1.)VVY(IIJ)=1.
106* 50 CONTINUE
107* ENDIF
108 IF(IDVIEW.EQ.0)THEN
109 CALL IFA(NUMPON,VVX(NUPO),VVY(NUPO))
110 ELSE
111 LLLINA=LINATT
112 CALL MVBITS(LINCOL,0,8,LINATT,16)
113 CALL GVIEWF(VVX(NUPO),VVY(NUPO),NUMPON)
114 LINATT=LLLINA
115 ENDIF
116 ENDIF
117 DO 70 JJA=3,IJKLMN
118 DO 60 I=1,KZ-1
119 IF(JJA.EQ.IZ(I))GOTO 70
120 60 CONTINUE
121 JJAO=JJA
122 GOTO 80
123 70 CONTINUE
124 PRINT *,'Error in CGFACO'
125 80 CONTINUE
126 PDJJA=JJAO*.5
127 IPDJJA=PDJJA
128 ARG1=PDJJA-IPDJJA
129 IF(ARG1.LT..01)PRINT *,'Error in CGFACO'
130 VVX(II-1)=TVVX(JJAO)
131 VVY(II-1)=TVVY(JJAO)
132 VVX(II)=TVVX(JJAO+1)
133 VVY(II)=TVVY(JJAO+1)
134 IZ(KZ)=JJAO
135 IZ(KZ+1)=JJAO+1
136 KZ=KZ+2
137 90 CONTINUE
138*
139 IACT=IACT+1
140 IACTU(IACT)=IGOR
141 NUMPON=IACTU(IACT)-IACTU(IACT-1)
142 NUPO=IACTU(IACT-1)+1
143 IF(NUMPON.GT.2)THEN
144* IF(LEP.LT.0)THEN
145* DO 100 IIJ=NUPO,NUPO+NUMPON-1
146* IF(VVY(IIJ).LT.1.)VVY(IIJ)=1.
147* 100 CONTINUE
148* ENDIF
149 IF(IDVIEW.EQ.0)THEN
150 CALL IFA(NUMPON,VVX(NUPO),VVY(NUPO))
151 ELSE
152 LLLINA=LINATT
153 CALL MVBITS(LINCOL,0,8,LINATT,16)
154 CALL GVIEWF(VVX(NUPO),VVY(NUPO),NUMPON)
155 LINATT=LLLINA
156 ENDIF
157 ENDIF
158*
159* IF(IREP.EQ.0)PRINT *,IREP
160 DO 120 I=1,KZ
161 IZ(I)=0
162 IACTU(I)=0
163 120 CONTINUE
164*
165 END