]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/ghits/gphits.F
Corrections to comply with coding convention
[u/mrichter/AliRoot.git] / GEANT321 / ghits / gphits.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:21:10 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.20 by S.Giani
11*-- Author :
12 SUBROUTINE GPHITS(IUSET,IUDET)
13C.
14C. ******************************************************************
15C. * *
16C. * Prints HITS into detector IUDET of set IUSET *
17C. * *
18C. * If IPKHIT in /CGDRAW/ is greater than zero, *
19C. * only hit nr. IPKHIT is printed. *
20C. * *
21C. * JH=LQ(JHITS-ISET) *
22C. * JHD=LQ(JH-IDET) *
23C. * IQ(JH+IDET)= pointer to first free word in JHD *
24C. * Each hit is packed into JHD in the following format *
25C. * --Track number ITRA not packed *
26C. * --Volume numbers packed *
27C. * --Hits transformed and packed *
28C. * *
29C. * ==>Called by : <USER>, GPRINT ,<GXINT>, GINC4, GKHITS *
30C. * Authors : R.Brun ********** *
31C. * P.Zanarini * *
32C. * *
33C. ******************************************************************
34C.
35#include "geant321/gcbank.inc"
36#include "geant321/gcunit.inc"
37#include "geant321/gcdraw.inc"
38 PARAMETER (NHEMX=100,NVMAX=20)
39 DIMENSION HITS(NHEMX),KWS(120),NUMBV(NVMAX)
40 EQUIVALENCE (WS(1),NUMBV(1)),(WS(101),HITS(1)),(WS(201),KWS(1))
41 CHARACTER*4 IUSET,IUDET
42C.
43C. ------------------------------------------------------------------
44C.
45 IF(JHITS.LE.0)GO TO 999
46 NSET=IQ(JSET-1)
47 NS1=1
48 NS2=NSET
49 IF(IUSET(1:1).NE.'*')THEN
50 CALL GLOOK(IUSET,IQ(JSET+1),NSET,ISET)
51 IF(ISET.LE.0)GO TO 999
52 NS1=ISET
53 NS2=ISET
54 ENDIF
55C
56C loop on all selected sets
57C
58 DO 130 ISET=NS1,NS2
59 JS=LQ(JSET-ISET)
60 JH=LQ(JHITS-ISET)
61 IF(JS.LE.0)GO TO 130
62 IF(JH.LE.0)GO TO 130
63 NDET=IQ(JS-1)
64 ND1=1
65 ND2=NDET
66 IF(IUDET(1:1).NE.'*')THEN
67 CALL GLOOK(IUDET,IQ(JS+1),NDET,IDET)
68 IF(IDET.EQ.0)GO TO 130
69 ND1=IDET
70 ND2=IDET
71 ENDIF
72C
73C loop on selected detectors for this set
74C
75 DO 120 IDET=ND1,ND2
76 JD=LQ(JS-IDET)
77 JHD=LQ(JH-IDET)
78 IF(JHD.LE.0)GO TO 120
79 JDH=LQ(JD-1)
80C
81 WRITE(CHMAIL,1000)IQ(JS+IDET),IQ(JSET+ISET)
82 CALL GMAIL(1,1)
83C
84 ILAST=IQ(JH+IDET)
85 IF(ILAST.EQ.0)GO TO 120
86 NV=IQ(JD+2)
87 NH=IQ(JD+4)
88 NW=IQ(JD+1)+IQ(JD+3)+1
89C
90 CALL VBLANK(KWS,120)
91 K=0
92 IF(NV.GT.0) THEN
93C Number of printed elements limited to 9
94 NVM=MIN(NV,NVMAX)
95 DO 22 I=1,NVM
96 CALL UBLOW(IQ(JD+2*I+9),KWS(K+1),4)
97 K=K+5
98 22 CONTINUE
99 ENDIF
100 IF(NH.GT.0)THEN
101 K=K+5
102 IP0 = K
103 NHM=MIN(NH,NHEMX)
104 DO 26 I=1,NHM
105 IF(K.GT.110)GO TO 26
106 NH1=I
107 CALL UBLOW(IQ(JDH+4*I-3),KWS(K+1),4)
108 K=K+10
109 26 CONTINUE
110 ENDIF
111 WRITE(CHMAIL,2000)(KWS(I),I=1,K)
112 CALL GMAIL(0,0)
113C
114 IF(NH.GT.0)THEN
115 IF(NH1.LT.NHM)THEN
116 CALL VBLANK(KWS,IP0)
117 DO 40 NHP1=NH1+1,NHM,NH1
118 NHP2=NHP1+NH1-1
119 NHP2=MIN(NHP2,NHM)
120 K=IP0
121 DO 30 I=NHP1,NHP2
122 CALL UBLOW(IQ(JDH+4*I-3),KWS(K+1),4)
123 K=K+10
124 30 CONTINUE
125 WRITE(CHMAIL,2100)(KWS(I),I=1,K)
126 CALL GMAIL(0,0)
127 40 CONTINUE
128 ENDIF
129 ENDIF
130C
131C Now loop on all hits to get volume numbers and hits
132C
133 IHIT=0
134 DO 110 I=1,ILAST,NW
135 IHIT=IHIT+1
136C
137C IPKHIT in /CGDRAW/ is used to print just that hit
138C
139 IF (IPKHIT.GT.0.AND.IHIT.NE.IPKHIT) GO TO 110
140C
141 ITRA=IQ(JHD+I)
142C
143C Get unpacked volume numbers
144C
145 NK=1
146 IF(NV.GT.0)THEN
147 K=1
148 DO 50 IV=1,NVM
149 NB=IQ(JD+2*IV+10)
150 IF(NB.LE.0)THEN
151 IF(K.GT.1)THEN
152 K=1
153 NK=NK+1
154 ENDIF
155 NUMBV(IV)=IQ(JHD+I+NK)
156 IF(IV.NE.NV)NK=NK+1
157 ELSE
158 IF(K+NB.GT.33)THEN
159 K=1
160 NK=NK+1
161 ENDIF
162 NUMBV(IV)=IBITS(IQ(JHD+I+NK),K-1,NB)
163 K=K+NB
164 ENDIF
165 50 CONTINUE
166 NK=NK+1
167 ENDIF
168C
169C Get unpacked hits
170C Hits origin is shifted . Division by scale factor
171C
172 IF(NH.GT.0)THEN
173 K=1
174 DO 90 IH=1,NHM
175 NB=IQ(JDH+4*IH-2)
176 IF(NB.LE.0)THEN
177 IF(K.GT.1)THEN
178 NK=NK+1
179 ENDIF
180 KHIT=IQ(JHD+I+NK)
181 K=1
182 NK=NK+1
183 ELSE
184 IF(K+NB.GT.33)THEN
185 K=1
186 NK=NK+1
187 ENDIF
188 KHIT=IBITS(IQ(JHD+I+NK),K-1,NB)
189 K=K+NB
190 ENDIF
191 HITS(IH)=FLOAT(KHIT)/Q(JDH+4*IH) - Q(JDH+4*IH-1)
192 90 CONTINUE
193 ENDIF
194C
195 WRITE(CHMAIL,3000)IHIT,ITRA,(NUMBV(L),L=1,NV)
196 IF(NH.GT.0)THEN
197 IP0=NV*5+15
198 DO 100 NHP1=1,NHM,NH1
199 NHP2=NHP1+NH1-1
200 NHP2=MIN(NHP2,NHM)
201 WRITE(CHMAIL(IP0+1:),4000)(HITS(L),L=NHP1,NHP2)
202 CALL GMAIL(0,0)
203 CHMAIL(1:IP0)=' '
204 100 CONTINUE
205 ENDIF
206C
207 IF(IHIT.EQ.IPKHIT)GO TO 999
208C
209 110 CONTINUE
210 120 CONTINUE
211 130 CONTINUE
212C
213 1000 FORMAT(' =====>HITS IN DETECTOR ** ',A4,
214 +' ** OF SET ** ',A4,' **')
215 2000 FORMAT(' HIT TRACK ',120A1)
216 2100 FORMAT(12X,120A1)
217 3000 FORMAT(1X,I4,I6,20I5)
218 4000 FORMAT(12(G10.3))
219 999 RETURN
220 END