5 * Revision 1.1.1.1 1995/10/24 10:21:10 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.20 by S.Giani
12 SUBROUTINE GPHITS(IUSET,IUDET)
14 C. ******************************************************************
16 C. * Prints HITS into detector IUDET of set IUSET *
18 C. * If IPKHIT in /CGDRAW/ is greater than zero, *
19 C. * only hit nr. IPKHIT is printed. *
21 C. * JH=LQ(JHITS-ISET) *
22 C. * JHD=LQ(JH-IDET) *
23 C. * IQ(JH+IDET)= pointer to first free word in JHD *
24 C. * Each hit is packed into JHD in the following format *
25 C. * --Track number ITRA not packed *
26 C. * --Volume numbers packed *
27 C. * --Hits transformed and packed *
29 C. * ==>Called by : <USER>, GPRINT ,<GXINT>, GINC4, GKHITS *
30 C. * Authors : R.Brun ********** *
33 C. ******************************************************************
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
43 C. ------------------------------------------------------------------
45 IF(JHITS.LE.0)GO TO 999
49 IF(IUSET(1:1).NE.'*')THEN
50 CALL GLOOK(IUSET,IQ(JSET+1),NSET,ISET)
51 IF(ISET.LE.0)GO TO 999
56 C loop on all selected sets
66 IF(IUDET(1:1).NE.'*')THEN
67 CALL GLOOK(IUDET,IQ(JS+1),NDET,IDET)
68 IF(IDET.EQ.0)GO TO 130
73 C loop on selected detectors for this set
81 WRITE(CHMAIL,1000)IQ(JS+IDET),IQ(JSET+ISET)
85 IF(ILAST.EQ.0)GO TO 120
88 NW=IQ(JD+1)+IQ(JD+3)+1
93 C Number of printed elements limited to 9
96 CALL UBLOW(IQ(JD+2*I+9),KWS(K+1),4)
107 CALL UBLOW(IQ(JDH+4*I-3),KWS(K+1),4)
111 WRITE(CHMAIL,2000)(KWS(I),I=1,K)
117 DO 40 NHP1=NH1+1,NHM,NH1
122 CALL UBLOW(IQ(JDH+4*I-3),KWS(K+1),4)
125 WRITE(CHMAIL,2100)(KWS(I),I=1,K)
131 C Now loop on all hits to get volume numbers and hits
137 C IPKHIT in /CGDRAW/ is used to print just that hit
139 IF (IPKHIT.GT.0.AND.IHIT.NE.IPKHIT) GO TO 110
143 C Get unpacked volume numbers
155 NUMBV(IV)=IQ(JHD+I+NK)
162 NUMBV(IV)=IBITS(IQ(JHD+I+NK),K-1,NB)
170 C Hits origin is shifted . Division by scale factor
188 KHIT=IBITS(IQ(JHD+I+NK),K-1,NB)
191 HITS(IH)=FLOAT(KHIT)/Q(JDH+4*IH) - Q(JDH+4*IH-1)
195 WRITE(CHMAIL,3000)IHIT,ITRA,(NUMBV(L),L=1,NV)
198 DO 100 NHP1=1,NHM,NH1
201 WRITE(CHMAIL(IP0+1:),4000)(HITS(L),L=NHP1,NHP2)
207 IF(IHIT.EQ.IPKHIT)GO TO 999
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))