]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/gdraw/gdchit.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / gdraw / gdchit.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:20:21 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.26 by S.Giani
11*-- Author :
12 SUBROUTINE GDCHIT (IUSET,IUDET,ITRS,ISYMB,SIZMAX,KDHIT,
13 + HITMIN,HITMAX)
14C.
15C. ******************************************************************
16C. * *
17C. * Draw Calorimetry Hits of track ITRS in detector IUDET *
18C. * of set IUSET, in case that the spatial coordinates *
19C. * of the HITS had been stored as the first three words *
20C. * in the argument vector of GSAHIT. *
21C. * *
22C. * The following characters may be chosen : *
23C. * ISYMB = -1 hardware character (fast), *
24C. * = 0 crosses X by TVDRAW (default), *
25C. * (size = SSYMB in cm, default = 0.1), *
26C. * = 840 characters by HPLSOF *
27C. * . according to the table p. 25 *
28C. * . of the HPLOT manual *
29C. * 853 (size = SSYMB in cm) *
30C. * (844,854 white, black asterisk * in addition). *
31C. * *
32C. * SIZMAX is the maximum character size *
33C. * *
34C. * KDHIT is the hit number selected : the character size *
35C. * is a function of HITS(KDHIT) and HITMIN and HITMAX are *
36C. * its limits *
37C. * *
38C. * *
39C. * JH =LQ(JHITS-ISET) *
40C. * JHD=LQ(JH-IDET) *
41C. * IQ(JH+IDET)=pointer to the LAST USED word in JHD *
42C. * Each hit was packed into JHD in the following format: *
43C. * --Track number ITRA not packed; *
44C. * --Volume numbers packed; *
45C. * --Hits transformed and packed. *
46C. * *
47C. * ==>Called by : <USER>, <GXINT> *
48C. * Authors : R.Brun, P.Zanarini ********* *
49C. * *
50C. ******************************************************************
51C.
52#include "geant321/gcbank.inc"
53#include "geant321/gcdraw.inc"
54 DIMENSION HITS(3,10),ASIZE(10)
55 CHARACTER*4 IUSET,IUDET
56C.
57C. ------------------------------------------------------------------
58C.
59 CALL UCTOH('OFF ',IOFF,4,4)
60C
61C Set IOBJ to HIT
62C
63 IOBJ=3
64C
65 IF (JHITS.LE.0) GOTO 140
66 NSET = IQ(JSET-1)
67 NS1 = 1
68 NS2 = NSET
69 IF (IUSET(1:1).EQ.'*') GOTO 10
70 CALL GLOOK(IUSET,IQ(JSET+1),NSET,ISET)
71 IF (ISET .LE.0) GOTO 140
72 NS1 = ISET
73 NS2 = ISET
74 10 CONTINUE
75C
76C loop on all selected sets
77C
78 DO 130 ISET=NS1,NS2
79 JS = LQ(JSET-ISET)
80 JH = LQ(JHITS-ISET)
81 IF(JS.LE.0)GO TO 130
82 IF(JH.LE.0)GO TO 130
83 NDET = IQ(JS-1)
84 ND1 = 1
85 ND2 = NDET
86 IF (IUDET(1:1).EQ.'*') GOTO 20
87 CALL GLOOK(IUDET,IQ(JS+1),NDET,IDET)
88 IF (IDET .EQ.0) GOTO 130
89 ND1 = IDET
90 ND2 = IDET
91 20 CONTINUE
92C
93C loop on selected detectors for this set
94C
95 DO 120 IDET=ND1,ND2
96 JD = LQ(JS-IDET)
97 JHD = LQ(JH-IDET)
98 IF (JHD .LE.0) GOTO 120
99 JDH = LQ(JD-1)
100 ILAST = IQ(JH+IDET)
101 IF (ILAST.EQ.0) GOTO 120
102 NV = IQ(JD+2)
103 NH = IQ(JD+4)
104 NW = IQ(JD+1) + IQ(JD+3) + 1
105C
106C Now loop on all hits to get their space coordinates
107C
108 MH = 0
109 DO 110 I=1,ILAST,NW
110 ITRA = IQ(JHD+I)
111C
112C Is this the right track ?
113C
114 IF (ITRS.NE.0 .AND. ITRS.NE.ITRA) GOTO 110
115C
116C Is THRZ option set on (R-Z projection)
117C and the cut lateral (vertical or horizontal) ?
118C
119 IF (ITHRZ.NE.IOFF) THEN
120 IF (ICUT.EQ.1.OR.ICUT.EQ.2) ITR3D=-ITRA
121 ELSE
122 ITR3D=0
123 ENDIF
124C
125C Skip words with volume numbers
126C
127 NK = 1
128 K = 1
129 IF (NV.LE.0) GOTO 40
130 DO 30 IV=1,NV
131 NB = IQ(JD+2*IV+10)
132 IF (NB.EQ.0) NB=32
133 K = NB + K
134 IF (K.LE.33) GOTO 30
135 NK = NK + 1
136 K = NB + 1
137 30 CONTINUE
138 NK = NK + 1
139C
140C Get unpacked (first three !) HITS.
141C Hits origin is shifted. Division by scale factor.
142C
143 40 CONTINUE
144 IF (NH.LE.2) GOTO 110
145 MH = MH + 1
146C
147 IF (KDHIT.GT.3.AND.KDHIT.LE.10) THEN
148 KDH=KDHIT
149 ELSE
150 KDH=3
151 HITKH=0.
152 ENDIF
153C
154 K=1
155 DO 80 IH=1,KDH
156 NB = IQ(JDH+4*IH-2)
157 IF (NB.GT.0) GOTO 50
158 IF (K.GT.1) THEN
159 NK=NK+1
160 ENDIF
161 KHIT = IQ(JHD+I+NK)
162 K = 1
163 NK = NK + 1
164 GOTO 70
165 50 IF (K+NB.LE.33) GOTO 60
166 K = 1
167 NK = NK + 1
168 60 KHIT = IBITS(IQ(JHD+I+NK),K-1,NB)
169 K = K + NB
170 70 CONTINUE
171 IF (IH.LE.3) THEN
172 HITS(IH,MH)= FLOAT(KHIT)/Q(JDH+4*IH) - Q(JDH+4*IH-1)
173 ELSE
174 HITKH=FLOAT(KHIT)/Q(JDH+4*IH) - Q(JDH+4*IH-1)
175 ENDIF
176 80 CONTINUE
177C
178C Compute symbol size
179C
180 IF (HITMAX.LE.0) THEN
181 SSYMB=SIZMAX
182 ELSE
183 SSYMB=SIZMAX*(HITKH-HITMIN)/HITMAX
184 IF (SSYMB.GT.SIZMAX) SSYMB=SIZMAX
185C
186C HPLSOF accepts a minimum SIZE of 0.001,
187C otherwise set SIZE=0.25 : protect here this case
188C
189 IF (SSYMB.LT.0.0011) SSYMB=0.0011
190 ENDIF
191 ASIZE(MH)=SSYMB
192C
193C Draw the hits (usually 10 at a time);
194C flush HITS vector if
195C --loop on this detector volume is to finish,
196C --loop on current track is to finish,
197C --HITS vector is full.
198C
199 IF ((ILAST-I).LT.NW) GOTO 90
200 ITRN = IQ(JHD+I+NW)
201 IF (ITRA.NE.ITRN) GOTO 90
202 IF (MH .NE. 10) GOTO 110
203C
204 90 CONTINUE
205C
206 DO 100 II=1,MH
207 CALL GDAHIT(HITS(1,II),HITS(2,II),HITS(3,II),ISYMB,ASIZE(II))
208 100 CONTINUE
209 MH=0
210C
211 110 CONTINUE
212 120 CONTINUE
213 130 CONTINUE
214 140 CONTINUE
215C
216C Reset ITR3D to 'standard projection'
217C
218 ITR3D=0
219 IOBJ=0
220C
221 END