]> git.uio.no Git - u/mrichter/AliRoot.git/blob - GEANT321/ghits/gphits.F
Minor corrections after big transformer changes
[u/mrichter/AliRoot.git] / GEANT321 / ghits / gphits.F
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)
13 C.
14 C.    ******************************************************************
15 C.    *                                                                *
16 C.    *       Prints HITS into detector IUDET of set IUSET             *
17 C.    *                                                                *
18 C.    *       If IPKHIT in /CGDRAW/ is greater than zero,              *
19 C.    *       only hit nr. IPKHIT is printed.                          *
20 C.    *                                                                *
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                           *
28 C.    *                                                                *
29 C.    *    ==>Called by : <USER>, GPRINT ,<GXINT>, GINC4, GKHITS       *
30 C.    *       Authors : R.Brun      **********                         *
31 C.    *                 P.Zanarini  *                                  *
32 C.    *                                                                *
33 C.    ******************************************************************
34 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
42 C.
43 C.    ------------------------------------------------------------------
44 C.
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
55 C
56 C             loop on all selected sets
57 C
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
72 C
73 C             loop on selected detectors for this set
74 C
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)
80 C
81       WRITE(CHMAIL,1000)IQ(JS+IDET),IQ(JSET+ISET)
82       CALL GMAIL(1,1)
83 C
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
89 C
90       CALL VBLANK(KWS,120)
91       K=0
92       IF(NV.GT.0) THEN
93 C        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)
113 C
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
130 C
131 C             Now loop on all hits to get volume numbers and hits
132 C
133       IHIT=0
134       DO 110 I=1,ILAST,NW
135       IHIT=IHIT+1
136 C
137 C             IPKHIT in /CGDRAW/ is used to print just that hit
138 C
139       IF (IPKHIT.GT.0.AND.IHIT.NE.IPKHIT) GO TO 110
140 C
141       ITRA=IQ(JHD+I)
142 C
143 C             Get unpacked volume numbers
144 C
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
168 C
169 C             Get unpacked hits
170 C             Hits origin is shifted . Division by scale factor
171 C
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
194 C
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
206 C
207       IF(IHIT.EQ.IPKHIT)GO TO 999
208 C
209  110  CONTINUE
210  120  CONTINUE
211  130  CONTINUE
212 C
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