]> git.uio.no Git - u/mrichter/AliRoot.git/blob - GEANT321/gxint/gxcont.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / gxint / gxcont.F
1 *CMZ :          05/02/96  17.20.51  by  S.Ravndal
2 *CMZ :  3.21/02 07/07/94  19.47.38  by  S.Giani
3 *-- Author :
4       SUBROUTINE GXCONT
5 C.
6 C.    ******************************************************************
7 C.    *                                                                *
8 C.    *      General control commands                                  *
9 C.    *                                                                *
10 C.    *       Authors:   R.Brun      **********                        *
11 C.    *                  P.Zanarini  **********                        *
12 C.    *                  S.Giani     **********                        *
13 C.    *                                                                *
14 C.    ******************************************************************
15 C.
16 #include "geant321/gcbank.inc"
17 #include "geant321/pawc.inc"
18 #include "geant321/gctmed.inc"
19 #include "geant321/gcunit.inc"
20 #include "geant321/gcflag.inc"
21 #include "geant321/gckine.inc"
22 #include "geant321/gcphys.inc"
23 #include "geant321/gcmulo.inc"
24 #include "geant321/gclist.inc"
25 #include "geant321/gcstak.inc"
26 #include "geant321/gcdraw.inc"
27       CHARACTER*20 CHNAME
28       CHARACTER*4  CHMECA,CHDEB,CHSET,CHDET,CHMECS(20)
29       CHARACTER*32 CHPATL
30       CHARACTER*32 CHPAR,NAMATE,NAPAR
31       CHARACTER*32 UBUF,WMAT,AA,ZZ
32       CHARACTER*32 BRATIO,MODE
33 C.
34 C.    ------------------------------------------------------------------
35 C.
36       IWKSTY = IGIWTY(1)
37       CALL KUPATL(CHPATL,NPAR)
38 *
39       IF (CHPATL.EQ.'KINE') THEN
40          CALL KUGETI(IKINE)
41          NPK=NPAR-1
42          DO 10 I=1,NPK
43             CALL KUGETR(PKINE(I))
44    10    CONTINUE
45 *
46       ELSEIF (CHPATL.EQ.'SORD') THEN
47          CALL KUGETI(ISTORD)
48 *
49 *     ELSEIF (CHPATL.EQ.'PATR') THEN
50 *        CALL KUGETI(NJTMAX)
51 *        CALL KUGETI(NJTMIN)
52 *        WRITE(CHMAIL,'('' *** GXCONT: Parallel tracking disabled, '',
53 *    +                  ''see documentation'')')
54 *        CALL GMAIL(1,1)
55 *
56       ELSEIF (CHPATL.EQ.'RUNG') THEN
57          CALL KUGETI(IDRUN)
58          CALL KUGETI(IDEVT)
59 *
60       ELSEIF (CHPATL.EQ.'GTIME') THEN
61          CALL KUGETR(TIMINT)
62          CALL KUGETR(TIMEND)
63          CALL KUGETI(ITIME)
64 *
65       ELSEIF (CHPATL.EQ.'TRACK') THEN
66          IF(JXYZ.NE.0)CALL MZDROP(IXDIV,JXYZ,' ')
67          IF(JHITS.NE.0)CALL MZDROP(IXDIV,JHITS,' ')
68          CALL MZGARB(IXDIV,0)
69          CALL GTREVE
70 *
71       ELSEIF (CHPATL.EQ.'TRIGGER') THEN
72          CALL KUGETI(N)
73
74          IF( NEVENT .EQ. 10000000 .OR. NEVENT .NE. IEVENT) THEN
75             NEVENT = N
76          ELSE
77             NEVENT = NEVENT + N
78          ENDIF
79
80  20      CONTINUE
81
82          IF( IEVENT .LT. NEVENT ) THEN
83
84             CALL GTRIGC
85             IEVENT=IEVENT+1
86             CALL GTRIGI
87             CALL GTRIG
88             CALL GRNDMQ(IQ(JRUNG+19),IQ(JRUNG+20),0,'G')
89             IQ(JRUNG+29)=IEVENT
90
91             GOTO 20
92
93          ENDIF
94
95 *         DO 20 I=1,N
96 *            CALL GTRIGC
97 *            IEVENT=IEVENT+1
98 *            CALL GTRIGI
99 *            CALL GTRIG
100 *            CALL GRNDMQ(IQ(JRUNG+19),IQ(JRUNG+20),0,'G')
101 *            IQ(JRUNG+29)=IEVENT
102 *   20    CONTINUE
103 *
104       ELSEIF (CHPATL.EQ.'SWITCH') THEN
105          CALL KUGETI(I)
106          IF(I.GE.1.AND.I.LE.10) THEN
107             IF(NPAR.LT.2)THEN
108                WRITE(CHMAIL,'('' ISWIT('',I2,'')= '',I3)')I,ISWIT(I)
109                CALL GMAIL(0,0)
110             ENDIF
111             CALL KUGETI(ISWIT(I))
112          ENDIF
113 *
114       ELSEIF (CHPATL.EQ.'PRINT') THEN
115          CALL KUGETC(CHNAME,NCH)
116          N=0
117          CALL KUGETI(N)
118          CALL GPRINT(CHNAME,N)
119 *
120       ELSEIF (CHPATL.EQ.'DEBUG') THEN
121          CALL KUGETC(CHDEB,NCH)
122          IF(CHDEB.EQ.'ON')THEN
123             IDEBUG=1
124             IDEMIN=1
125             IDEMAX=1000000
126             ITIME=1
127          ELSE
128             IDEBUG=0
129             IDEMIN=0
130             IDEMAX=0
131          ENDIF
132 *
133       ELSEIF (CHPATL.EQ.'OUTPUT_LP') THEN
134          CALL KUGETI(LOUT)
135 *
136       ELSEIF (CHPATL.EQ.'PHITS') THEN
137          CALL KUGETC(CHSET,NCH)
138          CALL KUGETC(CHDET,NCH)
139          CALL KUGETI(NUMHIT)
140          IPKHIT=NUMHIT
141          CALL GPHITS(CHSET,CHDET)
142          IPKHIT=0
143 *
144       ELSEIF (CHPATL.EQ.'PDIGI') THEN
145          CALL KUGETC(CHSET,NCH)
146          CALL KUGETC(CHDET,NCH)
147          CALL GPDIGI(CHSET,CHDET)
148 *
149       ELSEIF (CHPATL.EQ.'MZLOGL') THEN
150          IXSTOR=0
151          LEVEL=0
152          CALL KUGETI(LEVEL)
153          CALL MZLOGL(IXSTOR,LEVEL)
154 *
155       ELSEIF (CHPATL.EQ.'PMATE') THEN
156          CALL KUGETI(NUMB)
157          IF(IWKSTY.GE.1.AND.IWKSTY.LE.10) THEN
158             CALL GPMATX(NUMB)
159          ELSE
160             CALL GPMATE(NUMB)
161          ENDIF
162 *
163       ELSEIF (CHPATL.EQ.'SMATE') THEN
164          CALL KUGETI(IMAT)
165          CALL KUGETC(NAMATE,NCH)
166          CALL KUGETR(A)
167          CALL KUGETR(Z)
168          CALL KUGETR(DENS)
169          CALL KUGETR(RADL)
170          CALL KUGETR(ABSL)
171          CALL KUGETV(UBUF,LLOW,LHIGH)
172          CALL KUGETI(NWBUF)
173          CALL GSMATE(IMAT,NAMATE,A,Z,DENS,RADL,ABSL,QQ(LLOW),NWBUF)
174 *
175       ELSEIF (CHPATL.EQ.'SMIXT') THEN
176          CALL KUGETI(IMAT)
177          CALL KUGETC(NAMATE,NCH)
178          CALL KUGETV(AA,LLOW,LHIGH)
179          CALL KUGETV(ZZ,LLO1,LHIG1)
180          CALL KUGETR(DENS)
181          CALL KUGETI(NLMAT)
182          CALL KUGETV(WMAT,LLO2,LHIG2)
183          CALL GSMIXT(IMAT,NAMATE,QQ(LLOW),QQ(LLO1),DENS,NLMAT,QQ(LLO2))
184 *
185       ELSEIF (CHPATL.EQ.'PRMAT') THEN
186          CALL KUGETI(IMATE)
187          CALL KUGETI(IPART)
188          CALL KUGETC(CHMECA,NCH)
189          CALL GPRMAT(IMATE,IPART,CHMECA,NEKBIN,ELOW)
190 *
191       ELSEIF (CHPATL.EQ.'DRMAT') THEN
192          CALL KUGETI(IMATE)
193          CALL KUGETI(IPART)
194          IF(NPAR.GT.2) THEN
195             NMEC = NPAR-2
196             DO 11 KMEC=1,NMEC
197                CALL KUGETC(CHMECS(KMEC),NCH)
198   11        CONTINUE
199          ELSE
200             NMEC = 1
201             CHMECS(1)='ALL'
202          ENDIF
203          CALL GDRMAT(IMATE,IPART,CHMECS,NMEC)
204 *
205       ELSEIF (CHPATL.EQ.'PLMAT') THEN
206          CALL KUGETI(IMATE)
207          CALL KUGETI(IPART)
208          CALL KUGETC(CHMECA,NCH)
209          IDM=0
210          CALL KUGETI(IDM)
211          CALL GPLMAT(IMATE,IPART,CHMECA,NEKBIN,ELOW,IDM)
212 *
213       ELSEIF (CHPATL.EQ.'SPART') THEN
214          CALL KUGETI(IPART)
215          CALL KUGETC(NAPAR,NCH)
216          CALL KUGETI(ITRTYP)
217          CALL KUGETR(AMASS)
218          CALL KUGETR(CHARGE)
219          CALL KUGETR(TLIFE)
220          CALL KUGETV(UBUF,LLOW,LHIGH)
221          CALL KUGETI(NWBUF)
222          CALL KUGETV(BRATIO,LLO1,LHI1)
223          CALL KUGETV(MODE,LLO2,LHI2)
224          CALL GSPART(IPART,NAPAR,ITRTYP,AMASS,CHARGE,TLIFE,
225      +               QQ(LLOW),NWBUF)
226          CALL GSDK(IPART,QQ(LLO1),IQQ(LLO2))
227 *
228       ELSEIF (CHPATL.EQ.'PPART') THEN
229          CALL KUGETI(NUMB)
230          IF(IWKSTY.GE.1.AND.IWKSTY.LE.10) THEN
231             CALL GPPARX(NUMB)
232          ELSE
233             CALL GPPART(NUMB)
234          ENDIF
235 *
236       ELSEIF (CHPATL.EQ.'PRKINE') THEN
237          CALL KUGETI(NUMB)
238          IF(IWKSTY.GE.1.AND.IWKSTY.LE.10) THEN
239             CALL GPKINX(NUMB)
240          ELSE
241             CALL GPKINE(NUMB)
242          ENDIF
243 *
244       ELSEIF (CHPATL.EQ.'STPAR') THEN
245          CALL KUGETI(ITMED)
246          CALL KUGETC(CHPAR,NCH)
247          CALL KUGETR(PARVAL)
248          CALL GSTPAR(ITMED,CHPAR,PARVAL)
249 *
250       ELSEIF (CHPATL.EQ.'RNDM') THEN
251         IF (NPAR.EQ.0) THEN
252           CALL GRNDMQ(IS1,IS2,0,'G')
253           WRITE(6, 10000) IS1, IS2
254         ELSEIF (NPAR.EQ.2) THEN
255           CALL KUGETI(NRNDM(1))
256           CALL KUGETI(NRNDM(2))
257           IF ( NRNDM(2) .NE. 0 ) THEN
258             CALL GRNDMQ(NRNDM(1),NRNDM(2),1,'S')
259           ELSE
260             ISEQ=NRNDM(1)
261             CALL GRNDMQ(NRNDM(1),NRNDM(2),ISEQ,'Q')
262             CALL GRNDMQ(NRNDM(1),NRNDM(2),ISEQ,'S')
263           ENDIF
264         ELSE
265           WRITE(6, 10100)
266
267 10100 FORMAT(' Please give 2 seeds to initialize the random ',
268      +       'number generator')
269
270 10000 FORMAT('  (E154) RANDOM NUMBER = ',2I12)
271          ENDIF
272       ENDIF
273 *
274    30 END