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