]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ISAJET/code/readin.F
First commit.
[u/mrichter/AliRoot.git] / ISAJET / code / readin.F
1 #include "isajet/pilot.h"
2       SUBROUTINE READIN(IFL)
3 C
4 C       Read in user data and execute SETTYP if appropriate values 
5 C       are set. IFL return values:
6 C       IFL = 0       Good parameter set
7 C       IFL = 1001    Stop
8 C       IFL > 0       Error. Program will continue reading data but
9 C                     will exit when END or unrecognizable keyword
10 C                     is found.
11 C
12 #if defined(CERNLIB_IMPNONE)
13       IMPLICIT NONE
14 #endif
15 #include "isajet/itapes.inc"
16 #include "isajet/mbgen.inc"
17 #include "isajet/force.inc"
18 #include "isajet/dkytab.inc"
19 #include "isajet/qcdpar.inc"
20 #include "isajet/eepar.inc"
21 #include "isajet/idrun.inc"
22 #include "isajet/frgpar.inc"
23 #include "isajet/keys.inc"
24 #include "isajet/kkgrav.inc"
25 #include "isajet/prtout.inc"
26 #include "isajet/seed.inc"
27 #include "isajet/types.inc"
28 #include "isajet/primar.inc"
29 #include "isajet/jetlim.inc"
30 #include "isajet/nodcay.inc"
31 #include "isajet/wcon.inc"
32 #include "isajet/dylim.inc"
33 #include "isajet/qlmass.inc"
34 #include "isajet/q1q2.inc"
35 #include "isajet/jetpar.inc"
36 #include "isajet/isloop.inc"
37 #include "isajet/tcpar.inc"
38 #include "isajet/xmssm.inc"
39 #include "isajet/sugnu.inc"
40 #if defined(CERNLIB_PDFLIB)
41 #include "isajet/w50510.inc"
42 * Ignoring t=pass
43 #endif
44 #if defined(CERNLIB_PDFLIB)
45 #include "isajet/w50517.inc"
46 * Ignoring t=pass
47 #endif
48 #include "isajet/hcon.inc"
49 #include "isajet/mglims.inc"
50 C
51       LOGICAL SETTYP,DUMY
52       CHARACTER*8 TTL(10),WORD,LSTRUC,BLANK
53       CHARACTER*8 WTYP(4),RDID(2)
54       CHARACTER*40 V,VISAJE
55       INTEGER NLAP(3,17)
56       INTEGER IDANTI,ID,IDB
57       INTEGER IFL,I1,I2,I3,J1,I,IKEY,IJ,J,KK,IDABS
58       INTEGER IDXQKL,IDXQKR
59       INTEGER NSEL,K,KFORCE(5),INDEX,IDG1,IDG2,IDG3,IDG4,IDXLEP
60       REAL AMW,AMZ
61       CHARACTER*8 HTYPE
62       INTEGER JLIM1,JLIM2
63       REAL AMLIM1,AMLIM2
64 #if defined(CERNLIB_SINGLE)
65       REAL    SEED
66 #endif
67 #if defined(CERNLIB_DOUBLE)
68       DOUBLE PRECISION SEED
69 #endif
70 #if defined(CERNLIB_PDFLIB)
71       CHARACTER*20 PDFPAR(20)
72 #endif
73 #if (defined(CERNLIB_PDFLIB))&&(defined(CERNLIB_SINGLE))
74       REAL PDFVAL(20)
75       REAL DX,DSCALE,DXPDF(-6:6)
76 #endif
77 #if (defined(CERNLIB_PDFLIB))&&(defined(CERNLIB_DOUBLE))
78       DOUBLE PRECISION PDFVAL(20)
79       DOUBLE PRECISION DX,DSCALE,DXPDF(-6:6)
80 #endif
81 C
82 C          Overlapping variable flags.
83       DATA NLAP/1,2,3, 1,2,7 ,1,2,8, 1,3,5, 1,3,6, 1,3,7, 1,3,8, 1,5,7,
84      X          1,5,8, 1,6,7, 1,6,8, 2,3,7, 2,3,8, 3,5,7, 3,6,7, 3,5,8,
85      X          3,6,8/
86       DATA BLANK/'        '/
87 C
88 C          Entry
89       IFL=0
90       V=VISAJE()
91       WRITE(ITLIS,10) V
92 10    FORMAT('1',//5X,'*****  ',A40,'  *****')
93       WRITE(ITLIS,11)
94    11 FORMAT(////30X,' COMMANDS READ BY READIN')
95 C
96 C          Read title
97 C
98       READ(ITCOM,1) TTL
99     1 FORMAT(10A8)
100       WRITE(ITLIS,2) TTL
101     2 FORMAT(' ',10A8)
102       IF(TTL(1).EQ.'STOP    ') THEN
103         IFL=1001
104         RETURN
105       ENDIF
106 C
107 C          Read energy and no. of events
108 C
109       READ(ITCOM,*) ECM,NEVENT,NEVPRT,NJUMP
110       WRITE(ITLIS,*) ECM,NEVENT,NEVPRT,NJUMP
111 C
112 C          Reset all variables and set process if title is not 'SAME'
113 C
114       IF(TTL(1).NE.'SAME    ') THEN
115         DO 20 I=1,10
116    20   TITLE(I)=TTL(I)
117         CALL RESET
118         KEYON=.FALSE.
119 C          Read reaction
120         READ(ITCOM,3) REAC
121     3   FORMAT(A8)
122         WRITE(ITLIS,4) REAC
123    4    FORMAT(1X,A8)
124         DO 18 I=1,MXKEYS
125 18      KEYS(I)=.FALSE.
126         KEYON=.FALSE.
127 C          Set KEYS and NJET
128         IF(REAC.EQ.'TWOJET  ') THEN
129           KEYS(1)=.TRUE.
130           IKEY=1
131           NJET=2
132         ELSEIF(REAC.EQ.'E+E-    ') THEN
133           KEYS(2)=.TRUE.
134           IKEY=2
135           NJET=2
136         ELSEIF(REAC.EQ.'DRELLYAN') THEN
137           KEYS(3)=.TRUE.
138           IKEY=3
139           NJET=3
140         ELSEIF(REAC.EQ.'MINBIAS ') THEN
141           KEYS(4)=.TRUE.
142           IKEY=4
143           NJET=0
144         ELSEIF(REAC.EQ.'SUPERSYM'.OR.REAC.EQ.'SUSY    ') THEN
145           KEYS(5)=.TRUE.
146           IKEY=5
147           NJET=2
148         ELSEIF(REAC.EQ.'WPAIR   ') THEN
149           KEYS(6)=.TRUE.
150           IKEY=6
151           NJET=2
152         ELSEIF(REAC.EQ.'HIGGS   ') THEN
153           KEYS(7)=.TRUE.
154           IKEY=7
155           NJET=2
156         ELSEIF(REAC.EQ.'PHOTON  ') THEN
157           KEYS(8)=.TRUE.
158           IKEY=8
159           NJET=2
160         ELSEIF(REAC.EQ.'TCOLOR  ') THEN
161           KEYS(9)=.TRUE.
162           IKEYS=9
163           NJET=2
164         ELSEIF(REAC.EQ.'WHIGGS  ') THEN
165           KEYS(10)=.TRUE.
166           IKEY=10
167           NJET=2
168         ELSEIF(REAC.EQ.'EXTRADIM') THEN
169           KEYS(11)=.TRUE.
170           IKEY=11
171           NJET=3
172         ELSEIF(REAC.EQ.'ZJJ     ') THEN
173           KEYS(12)=.TRUE.
174           IKEY=12
175           NJET=3
176         ELSE
177           KEYON=.FALSE.
178   890     WRITE(ITLIS,1999)
179           IFL=9
180           RETURN
181         ENDIF
182       ENDIF
183 C
184       SCM=ECM**2
185       HALFE=ECM/2
186       NSEL=0
187 C
188 C          Read keyword. For each recognized keyword read corresponding
189 C          variables and set LOC flag.
190 C
191       NSEL=0
192 100   CONTINUE
193       READ(ITCOM,3) WORD
194       WRITE(ITLIS,4) WORD
195       NSEL=NSEL+1
196 C
197 C          Keyword END
198       IF(WORD.EQ.'END     ') THEN
199 C          Check for previous error
200         IF(IFL.NE.0) RETURN
201 C          Check inconsistent limits
202         IF(LOC(2)*LOC(5).NE.0.OR.LOC(2)*LOC(6).NE.0) THEN
203           WRITE(ITLIS,2001)
204           IFL=11
205         ENDIF
206 C          Set and check jet types
207         IF(LOC(15).NE.0.OR.LOC(37).NE.0.OR.LOC(46).NE.0) THEN
208           IF(SETTYP(0)) THEN
209             WRITE(ITLIS,2006)
210             IFL=12
211           ENDIF
212         ENDIF
213 C          Check MSSM/SUGRA conflict
214         IF((LOC(51).NE.0.OR.LOC(52).NE.0.OR.LOC(53).NE.0).AND.
215      $  LOC(55).NE.0) THEN
216           WRITE(ITLIS,2007)
217           IFL=29
218         ENDIF
219 C          Check overlapping limits
220         DO 120 I=1,17
221           I1=NLAP(1,I)
222           I2=NLAP(2,I)
223           I3=NLAP(3,I)
224           IF(LOC(I1)*LOC(I2)*LOC(I3).NE.0) WRITE(ITLIS,1001)
225   120   CONTINUE
226 C          Setup PDFLIB
227 #if defined(CERNLIB_PDFLIB)
228         IF(ISTRUC.EQ.-999) THEN
229           WRITE(ITLIS,1200)
230 1200      FORMAT(//
231      $    '1********************************'/
232      $    ' *                              *'/
233      $    ' * INITIALIZE PDFLIB FOR ISAJET *'/
234      $    ' *                              *'/
235      $    ' ********************************'/)
236           N6=ITLIS
237           IFLPRT=2
238           CALL PDFSET(PDFPAR,PDFVAL)
239           CALL PFTOPDG(0.5D0,1.0D2,DXPDF)
240           IFLPRT=0
241         ENDIF
242 #endif
243 C          Check EXTRADIM parameters are set
244         IF(KEYS(11).AND.LOC(72).EQ.0) THEN
245           WRITE(ITLIS,*) 'YOU FORGOT TO SET EXTRAD PARAMETERS'
246           IFL=72
247         ENDIF  
248 C
249         RETURN
250       ENDIF
251 C
252 C          Keyword P
253       IF(WORD.EQ.'P       ') THEN
254         READ(ITCOM,*)  (PMIN(K),PMAX(K),K=1,NJET)
255         WRITE(ITLIS,*) (PMIN(K),PMAX(K),K=1,NJET)
256         LOC(1)=NSEL
257         GO TO 100
258       ENDIF
259 C
260 C          Keyword Y
261       IF(WORD.EQ.'Y       ') THEN
262         READ(ITCOM,*)  (YJMIN(K),YJMAX(K),K=1,NJET)
263         WRITE(ITLIS,*) (YJMIN(K),YJMAX(K),K=1,NJET)
264         LOC(2)=NSEL
265         GO TO 100
266       ENDIF
267 C
268 C          Keyword X
269       IF(WORD.EQ.'X       ') THEN
270         READ(ITCOM,*)  (XJMIN(K),XJMAX(K),K=1,NJET)
271         WRITE(ITLIS,*) (XJMIN(K),XJMAX(K),K=1,NJET)
272         LOC(3)=NSEL
273         GO TO 100
274       ENDIF
275 C
276 C          Keyword PHI
277       IF(WORD.EQ.'PHI     ') THEN
278         READ(ITCOM,*)  (PHIMIN(K),PHIMAX(K),K=1,NJET)
279         WRITE(ITLIS,*) (PHIMIN(K),PHIMAX(K),K=1,NJET)
280         LOC(4)=NSEL
281         GO TO 100
282       ENDIF
283 C
284 C          Keyword TH
285       IF(WORD.EQ.'TH      '.OR.WORD.EQ.'THETA   ') THEN
286         READ(ITCOM,*)  (THMIN(K),THMAX(K),K=1,NJET)
287         WRITE(ITLIS,*) (THMIN(K),THMAX(K),K=1,NJET)
288         LOC(5)=NSEL
289         LOC(6)=NSEL
290         GO TO 100
291       ENDIF
292 C
293 C          Keyword PT
294       IF(WORD.EQ.'PT      '.OR.WORD.EQ.'PPERP   ') THEN
295         READ(ITCOM,*)  (PTMIN(K),PTMAX(K),K=1,NJET)
296         WRITE(ITLIS,*) (PTMIN(K),PTMAX(K),K=1,NJET)
297         LOC(7)=NSEL
298         LOC(8)=NSEL
299         GO TO 100
300       ENDIF
301 C
302 C          Keyword NODECAY
303       IF(WORD.EQ.'NODECAY ') THEN
304         READ(ITCOM,571) NODCAY
305 571     FORMAT(L1)
306         WRITE(ITLIS,572) NODCAY
307 572     FORMAT(' ',L1)
308         LOC(9)=NSEL
309         GO TO 100
310       ENDIF
311 C
312 C          Keyword NOETA
313       IF(WORD.EQ.'NOETA   ') THEN
314         READ(ITCOM,571) NOETA
315         WRITE(ITLIS,572) NOETA
316         LOC(10)=NSEL
317         GO TO 100
318       ENDIF
319 C
320 C          Keyword NOPI0
321       IF(WORD.EQ.'NOPI0   ') THEN
322         READ(ITCOM,571) NOPI0
323         WRITE(ITLIS,572) NOPI0
324         LOC(11)=NSEL
325         GO TO 100
326       ENDIF
327 C
328 C          Keyword BEAMS
329       IF(WORD.EQ.'BEAMS   ') THEN
330         READ(ITCOM,*) RDID(1),RDID(2)
331         WRITE(ITLIS,*) RDID(1),RDID(2)
332         IDIN(1)=0
333         IDIN(2)=0
334         DO 123 K=1,2
335           IF(RDID(K).EQ.'P       ') IDIN(K)=+1120
336           IF(RDID(K).EQ.'AP      ') IDIN(K)=-1120
337           IF(RDID(K).EQ.'N       ') IDIN(K)=+1220
338           IF(RDID(K).EQ.'AN      ') IDIN(K)=-1220
339 123     CONTINUE
340         IF(IDIN(1)*IDIN(2).EQ.0) THEN
341           WRITE(ITLIS,2002)
342           IFL=13
343         ENDIF
344         LOC(12)=NSEL
345         GO TO 100
346       ENDIF
347 C
348 C          Keyword FRAGMENT
349       IF(WORD.EQ.'FRAGMENT') THEN
350         READ(ITCOM,*)  FRPAR
351         WRITE(ITLIS,*)  FRPAR
352         LOC(13)=NSEL
353         GO TO 100
354       ENDIF
355 C
356 C          Keyword SEED
357       IF(WORD.EQ.'SEED    ') THEN
358         READ(ITCOM,*) SEED
359         WRITE(ITLIS,*) SEED
360         CALL RANFST(SEED)
361         WRITE(XSEED,'(E24.15)') SEED
362         LOC(14)=NSEL
363         GO TO 100
364       ENDIF
365 C
366 C          Keywords JETTYPE1, JETTYPE2, JETTYPE3, ...
367 C          (Yes, this is ugly)
368       IF(WORD.EQ.'JETTYPE1'.OR.WORD.EQ.'JETTYPE2'.OR.
369      $WORD.EQ.'JETTYPE3'.OR.WORD.EQ.'JETTYPE4'.OR.
370      $WORD.EQ.'JETTYPE5'.OR.WORD.EQ.'JETTYPE6'.OR.
371      $WORD.EQ.'JETTYPE7'.OR.WORD.EQ.'JETTYPE8') THEN
372         IF(WORD.EQ.'JETTYPE1') IJ=1
373         IF(WORD.EQ.'JETTYPE2') IJ=2
374         IF(WORD.EQ.'JETTYPE3') IJ=3
375         IF(WORD.EQ.'JETTYPE4') IJ=4
376         IF(WORD.EQ.'JETTYPE5') IJ=5
377         IF(WORD.EQ.'JETTYPE6') IJ=6
378         IF(WORD.EQ.'JETTYPE7') IJ=7
379         IF(WORD.EQ.'JETTYPE8') IJ=8
380         DO 151 K=1,30
381           JETYP(K,IJ)=BLANK
382 151     CONTINUE
383         READ(ITCOM,*) (JETYP(K,IJ),K=1,30)
384         DO 152 K=1,25
385 152     IF(JETYP(K,IJ).NE.BLANK) NJTTYP(IJ)=NJTTYP(IJ)+1
386         WRITE(ITLIS,*) (JETYP(K,IJ),K=1,NJTTYP(IJ))
387         LOC(15)=NSEL
388         GO TO 100
389       ENDIF
390 C
391 C          Keyword SIN2W
392       IF(WORD.EQ.'SIN2W   ') THEN
393         READ(ITCOM,*)  SIN2W
394         WRITE(ITLIS,*) SIN2W
395         LOC(17)=NSEL
396         GO TO 100
397       ENDIF
398 C
399 C          Keyword TMASS
400       IF(WORD.EQ.'TMASS   ') THEN
401         READ(ITCOM,*)  AMLEP(6),AMLEP(7),AMLEP(8)
402         WRITE(ITLIS,*) AMLEP(6),AMLEP(7),AMLEP(8)
403         LOC(18)=NSEL
404         GO TO 100
405       ENDIF
406 C
407 C          Keyword QMH
408       IF(WORD.EQ.'QMH     ') THEN
409         READ(ITCOM,*) QMIN,QMAX
410         WRITE(ITLIS,*) QMIN,QMAX
411         LOC(19)=NSEL
412         GO TO 100
413       ENDIF
414 C
415 C          Keyword QMW
416       IF(WORD.EQ.'QMW     ') THEN
417         READ(ITCOM,*) QMIN,QMAX
418         WRITE(ITLIS,*) QMIN,QMAX
419         LOC(19)=NSEL
420         GO TO 100
421       ENDIF
422 C
423 C          Keyword QTW
424       IF(WORD.EQ.'QTW     ') THEN
425         READ(ITCOM,*)  QTMIN,QTMAX
426         WRITE(ITLIS,*) QTMIN,QTMAX
427         LOC(20)=NSEL
428         GO TO 100
429       ENDIF
430 C
431 C          Keyword YW
432       IF(WORD.EQ.'YW      ') THEN
433         READ(ITCOM,*)  YWMIN,YWMAX
434         WRITE(ITLIS,*) YWMIN,YWMAX
435         LOC(21)=NSEL
436         GO TO 100
437       ENDIF
438 C
439 C          Keyword XW
440       IF(WORD.EQ.'XW      ') THEN
441         READ(ITCOM,*)  XWMIN,XWMAX
442         WRITE(ITLIS,*) XWMIN,XWMAX
443         LOC(22)=NSEL
444         GO TO 100
445       ENDIF
446 C
447 C          Keyword THW
448       IF(WORD.EQ.'THW     ') THEN
449         READ(ITCOM,*)  THWMIN,THWMAX
450         WRITE(ITLIS,*) THWMIN,THWMAX
451         LOC(23)=NSEL
452         GO TO 100
453       ENDIF
454 C
455 C          Keyword PHIW
456       IF(WORD.EQ.'PHIW    ') THEN
457         READ(ITCOM,*)  PHWMIN,PHWMAX
458         WRITE(ITLIS,*) PHWMIN,PHWMAX
459         LOC(24)=NSEL
460         GO TO 100
461       ENDIF
462 C
463 C          Keyword NONUNU
464       IF(WORD.EQ.'NONUNU  ') THEN
465         READ(ITCOM,571) NONUNU
466         WRITE(ITLIS,572) NONUNU
467         LOC(25)=NSEL
468         GO TO 100
469       ENDIF
470 C
471 C          Keyword WTYPE
472       IF(WORD.EQ.'WTYPE   ') THEN
473         DO 261 J=1,4
474           WTYP(J)=BLANK
475           GODY(J)=.FALSE.
476 261     CONTINUE
477         READ(ITCOM,*) WTYP
478         WRITE(ITLIS,*) WTYP
479         DO 262 K=1,4
480           IF(WTYP(K).EQ.'GM      ') GODY(1)=.TRUE.
481           IF(WTYP(K).EQ.'W+      ') GODY(2)=.TRUE.
482           IF(WTYP(K).EQ.'W-      ') GODY(3)=.TRUE.
483           IF(WTYP(K).EQ.'Z0      ') GODY(4)=.TRUE.
484   262   CONTINUE
485         IF(GODY(1)) JWTYP=1
486         IF(GODY(2).OR.GODY(3)) JWTYP=3
487         IF(GODY(4)) JWTYP=4
488         IF((GODY(2).OR.GODY(3)).AND.(GODY(1).OR.GODY(4))) THEN
489           WRITE(ITLIS,2003)
490           IFL=13
491         ENDIF
492         LOC(26)=NSEL
493         GO TO 100
494       ENDIF
495 C
496 C          Keyword LAMBDA
497       IF(WORD.EQ.'LAMBDA  ') THEN
498         READ(ITCOM,*)  ALAM
499         WRITE(ITLIS,*)  ALAM
500         ALAM2=ALAM**2
501         LOC(27)=NSEL
502         GO TO 100
503       ENDIF
504 C
505 C          Keyword NTRIES
506       IF(WORD.EQ.'NTRIES  ') THEN
507         READ(ITCOM,*) NTRIES
508         WRITE(ITLIS,*) NTRIES
509         LOC(28)=NSEL
510         GO TO 100
511       ENDIF
512 C
513 C          Keyword CUTOFF
514       IF(WORD.EQ.'CUTOFF  ') THEN
515         READ(ITCOM,*) CUTOFF,CUTPOW
516         WRITE(ITLIS,*) CUTOFF,CUTPOW
517         LOC(29)=NSEL
518         GO TO 100
519       ENDIF
520 C
521 C          Keyword XGEN
522       IF(WORD.EQ.'XGEN    ') THEN
523         READ(ITCOM,*) XGEN
524         WRITE(ITLIS,*) XGEN
525         LOC(30)=NSEL
526         GO TO 100
527       ENDIF
528 C
529 C          Keyword SIGQT
530       IF(WORD.EQ.'SIGQT   ') THEN
531         READ(ITCOM,*) SIGQT
532         WRITE(ITLIS,*) SIGQT
533         LOC(31)=NSEL
534         GO TO 100
535       ENDIF
536 C
537 C          Keyword CUTJET
538       IF(WORD.EQ.'CUTJET  ') THEN
539         READ(ITCOM,*)  CUTJET
540         WRITE(ITLIS,*)  CUTJET
541         LOC(32)=NSEL
542         GO TO 100
543       ENDIF
544 C
545 C          Keyword WFUDGE
546       IF(WORD.EQ.'WFUDGE  ') THEN
547         READ(ITCOM,*)  WFUDGE
548         WRITE(ITLIS,*)  WFUDGE
549         LOC(50)=NSEL
550         GO TO 100
551       ENDIF
552 C
553 C          Keyword STRUC
554       IF(WORD.EQ.'STRUC   ') THEN
555         ISTRUC=0
556         READ(ITCOM,*) LSTRUC
557         WRITE(ITLIS,4) LSTRUC
558         IF(LSTRUC.EQ.'OWENS   ') ISTRUC=1
559         IF(LSTRUC.EQ.'BAIER   ') ISTRUC=2
560         IF(LSTRUC.EQ.'EICHTEN '.OR.LSTRUC.EQ.'EHLQ    ') ISTRUC=3
561         IF(LSTRUC.EQ.'DUKE    '.OR.LSTRUC.EQ.'DO      ') ISTRUC=4
562         IF(LSTRUC.EQ.'CTEQ2L  ') ISTRUC=5
563         IF(LSTRUC.EQ.'CTEQ    '.OR.LSTRUC.EQ.'CTEQ3L  ') ISTRUC=6
564         IF(ISTRUC.EQ.0) THEN
565           WRITE(ITLIS,2002)
566           IFL=13
567         ENDIF
568         LOC(33)=NSEL
569         GO TO 100
570       ENDIF
571 C
572 C          Keyword NPOMERON
573       IF(WORD.EQ.'NPOMERON') THEN
574         READ(ITCOM,*) MNPOM,MXPOM
575         WRITE(ITLIS,*) MNPOM,MXPOM
576         IF(MNPOM.LT.1.OR.MNPOM.GT.MXPOM.OR.MXPOM.GT.LIMPOM) THEN
577           WRITE(ITLIS,2004)
578           IFL=14
579         ENDIF
580         LOC(34)=NSEL
581         GO TO 100
582       ENDIF
583 C
584 C          Keyword FORCE
585       IF(WORD.EQ.'FORCE   ') THEN
586         NFORCE=NFORCE+1
587         IF(NFORCE.GT.MXFORC-1) THEN
588           WRITE(ITLIS,2004)
589           IFL=14
590         ENDIF
591         DO 351 K=1,5
592 351     KFORCE(K)=0
593         READ(ITCOM,*) IFORCE(NFORCE),(KFORCE(K),K=1,5)
594         CALL ORDER(IFORCE(NFORCE),KFORCE,MFORCE(1,NFORCE),
595      $  MEFORC(NFORCE))
596         WRITE(ITLIS,*) IFORCE(NFORCE),(MFORCE(K,NFORCE),K=1,5)
597         ID=IFORCE(NFORCE)
598         IDABS=IABS(ID)
599         IF(IDABS.LT.6) THEN
600           WRITE(ITLIS,2005)
601           IFL=15
602         ENDIF
603         IDB=IDANTI(ID)
604         IF(IDB.NE.ID) THEN
605           IFORCE(NFORCE+1)=IDB
606           DO 352 K=1,5
607   352     MFORCE(K,NFORCE+1)=IDANTI(MFORCE(K,NFORCE))
608           NFORCE=NFORCE+1
609         ENDIF
610         LOC(35)=NSEL
611         GO TO 100
612       ENDIF
613 C
614 C          Keyword FORCE1
615       IF(WORD.EQ.'FORCE1  ') THEN
616         NFORCE=NFORCE+1
617         IF(NFORCE.GT.MXFORC) THEN
618           WRITE(ITLIS,2004)
619           IFL=14
620         ENDIF
621         DO 353 K=1,5
622 353     KFORCE(K)=0
623         READ(ITCOM,*) IFORCE(NFORCE),(KFORCE(K),K=1,5)
624         CALL ORDER(IFORCE(NFORCE),KFORCE,MFORCE(1,NFORCE),
625      $  MEFORC(NFORCE))
626         WRITE(ITLIS,*) IFORCE(NFORCE),(MFORCE(K,NFORCE),K=1,5)
627         IF(IABS(IFORCE(NFORCE)).LT.6) THEN
628           WRITE(ITLIS,2005)
629           IFL=15
630         ENDIF
631         LOC(35)=NSEL
632         GO TO 100
633       ENDIF
634 C
635 C          Keyword HMASSES - also see HMASS
636       IF(WORD.EQ.'HMASSES ') THEN
637         CALL FLAVOR(80,I1,I2,I3,J1,INDEX)
638         READ(ITCOM,*) (AMLEP(INDEX+K),K=1,9)
639         WRITE(ITLIS,*) (AMLEP(INDEX+K),K=1,9)
640         LOC(36)=NSEL
641         GO TO 100
642       ENDIF
643 C
644 C          Keywords WMODE1,WMODE2
645       IF(WORD.EQ.'WMODE1  '.OR.WORD.EQ.'WMODE2  ') THEN
646         IF(WORD.EQ.'WMODE1  ') IJ=1
647         IF(WORD.EQ.'WMODE2  ') IJ=2
648         READ(ITCOM,*) (WWTYP(K,IJ),K=1,25)
649         DO 372 K=1,25
650 372     IF(WWTYP(K,IJ).NE.BLANK) NWWTYP(IJ)=NWWTYP(IJ)+1
651         WRITE(ITLIS,*) (WWTYP(K,IJ),K=1,NWWTYP(IJ))
652         LOC(37)=NSEL
653         GO TO 100
654       ENDIF
655 C
656 C          Keyword NOEVOLVE
657       IF(WORD.EQ.'NOEVOLVE') THEN
658         READ (ITCOM,571) NOEVOL
659         WRITE(ITLIS,572) NOEVOL
660         LOC(38)=NSEL
661         GO TO 100
662       ENDIF
663 C
664 C          Keyword NOHADRON
665       IF(WORD.EQ.'NOHADRON') THEN
666         READ (ITCOM,571) NOHADR
667         WRITE(ITLIS,572) NOHADR
668         LOC(39)=NSEL
669         GO TO 100
670       ENDIF
671 C
672 C          Keyword GAUGINO
673       IF(WORD.EQ.'GAUGINO ') THEN
674         CALL FLAVOR(29,I1,I2,I3,J1,IDG1)
675         CALL FLAVOR(30,I1,I2,I3,J1,IDG2)
676         CALL FLAVOR(39,I1,I2,I3,J1,IDG3)
677         CALL FLAVOR(40,I1,I2,I3,J1,IDG4)
678         READ(ITCOM,*) AMLEP(IDG1),AMLEP(IDG2),AMLEP(IDG3),AMLEP(IDG4)
679         WRITE(ITLIS,*) AMLEP(IDG1),AMLEP(IDG2),AMLEP(IDG3),AMLEP(IDG4)
680         LOC(40)=NSEL
681         GO TO 100
682       ENDIF
683 C
684 C          Keyword SQUARK
685       IF(WORD.EQ.'SQUARK  ') THEN
686         CALL FLAVOR(21,I1,I2,I3,J1,IDXQKL)
687         READ(ITCOM,*) (AMLEP(IDXQKL+K-1),K=1,6)
688         WRITE(ITLIS,*) (AMLEP(IDXQKL+K-1),K=1,6)
689         CALL FLAVOR(41,I1,I2,I3,J1,IDXQKR)
690         DO 411 K=1,6
691           AMLEP(IDXQKR+K-1)=AMLEP(IDXQKL+K-1)
692 411     CONTINUE
693         LOC(41)=NSEL
694         GO TO 100
695       ENDIF
696 C
697 C          Keyword SLEPTON
698       IF(WORD.EQ.'SLEPTON ') THEN
699         CALL FLAVOR(31,I1,I2,I3,J1,IDXLEP)
700         READ(ITCOM,*) (AMLEP(IDXLEP+K-1),K=1,6)
701         WRITE(ITLIS,*) (AMLEP(IDXLEP+K-1),K=1,6)
702         LOC(42)=NSEL
703         GO TO 100
704       ENDIF
705 C
706 C          Keyword NSIGMA
707       IF(WORD.EQ.'NSIGMA  ') THEN
708         READ(ITCOM,*) NSIGMA
709         WRITE(ITLIS,*) NSIGMA
710         LOC(43)=NSEL
711         GO TO 100
712       ENDIF
713 C
714 C          Keyword XGENSS
715       IF(WORD.EQ.'XGENSS  ') THEN
716         READ(ITCOM,*) XGENSS(9),(XGENSS(KK),KK=1,8)
717         WRITE(ITLIS,*) XGENSS(9),(XGENSS(KK),KK=1,8)
718         LOC(44)=NSEL
719         GO TO 100
720       ENDIF
721 C
722 C          Keyword HMASS - just standard Higgs
723       IF(WORD.EQ.'HMASS   ') THEN
724         CALL FLAVOR(81,I1,I2,I3,J1,INDEX)
725         READ(ITCOM,*) AMLEP(INDEX)
726         WRITE(ITLIS,*) AMLEP(INDEX)
727         LOC(45)=NSEL
728         GO TO 100
729       ENDIF
730 C
731 C          Keywords WPMODE, WMMODE, Z0MODE
732       IF(WORD.EQ.'WPMODE  '.OR.WORD.EQ.'WMMODE  '
733      $.OR.WORD.EQ.'Z0MODE  ') THEN
734         IF(WORD.EQ.'WPMODE  ') IJ=1
735         IF(WORD.EQ.'WMMODE  ') IJ=2
736         IF(WORD.EQ.'Z0MODE  ') IJ=3
737         READ(ITCOM,*) (WMODES(K,IJ),K=1,25)
738         DO 463 K=1,25
739 463     IF(WMODES(K,IJ).NE.BLANK) NWMODE(IJ)=NWMODE(IJ)+1
740         WRITE(ITLIS,*) (WMODES(K,IJ),K=1,NWMODE(IJ))
741         LOC(46)=NSEL
742         GO TO 100
743       ENDIF
744 C
745 C          Keyword WMASS
746       IF(WORD.EQ.'WMASS   ') THEN
747         READ(ITCOM,*) AMW,AMZ
748         WRITE(ITLIS,*) AMW,AMZ
749         WMASS(1)=0.
750         WMASS(2)=AMW
751         WMASS(3)=AMW
752         WMASS(4)=AMZ
753         CALL FLAVOR(80,I1,I2,I3,J,INDEX)
754         AMLEP(INDEX)=AMW
755         CALL FLAVOR(90,I1,I2,I3,J,INDEX)
756         AMLEP(INDEX)=AMZ
757         LOC(47)=NSEL
758         GO TO 100
759       ENDIF
760 C
761 C          Keyword NEVOLVE
762       IF(WORD.EQ.'NEVOLVE ') THEN
763         READ(ITCOM,*) NEVOLV
764         WRITE(ITLIS,*) NEVOLV
765         LOC(48)=NSEL
766         GO TO 100
767       ENDIF
768 C
769 C          Keyword NHADRON
770       IF(WORD.EQ.'NHADRON ') THEN
771         READ(ITCOM,*) NFRGMN
772         WRITE(ITLIS,*) NFRGMN
773         LOC(49)=NSEL
774         GO TO 100
775       ENDIF
776 C
777 C          Keyword TCMASS
778       IF(WORD.EQ.'TCMASS  ') THEN
779         READ(ITCOM,*) TCMRHO,TCGRHO
780         WRITE(ITLIS,*) TCMRHO,TCGRHO
781         LOC(50)=NSEL
782         GO TO 100
783       ENDIF
784 C
785 C          Keyword MSSMA: gluino, mu, mha, tanb
786       IF(WORD.EQ.'MSSMA   ') THEN
787         READ(ITCOM,*) XGLSS,XMUSS,XHASS,XTBSS
788         WRITE(ITLIS,*) XGLSS,XMUSS,XHASS,XTBSS
789         GOMSSM=.TRUE.
790         LOC(51)=NSEL
791         GO TO 100
792       ENDIF
793 C
794 C          Keyword MSSMB: 1st generation soft terms
795       IF(WORD.EQ.'MSSMB   ') THEN
796         READ(ITCOM,*) XQ1SS,XDRSS,XURSS,XL1SS,XERSS
797         WRITE(ITLIS,*) XQ1SS,XDRSS,XURSS,XL1SS,XERSS
798         LOC(52)=NSEL
799         GOMSSM=.TRUE.
800         GO TO 100
801       ENDIF
802 C
803 C          Keyword MSSMC: 3rd generation soft terms
804       IF(WORD.EQ.'MSSMC   ') THEN
805         READ(ITCOM,*)XQ3SS,XBRSS,XTRSS,XL3SS,XTARSS,XATSS,XABSS,XATASS
806        WRITE(ITLIS,*)XQ3SS,XBRSS,XTRSS,XL3SS,XTARSS,XATSS,XABSS,XATASS
807         LOC(53)=NSEL
808         GOMSSM=.TRUE.
809         GO TO 100
810       ENDIF
811 C
812 C          Keyword PDFLIB: parameters for PDFLIB
813 #if defined(CERNLIB_PDFLIB)
814       IF(WORD.EQ.'PDFLIB  ') THEN
815         DO 541 I=1,20
816           PDFPAR(I)='                    '
817           PDFVAL(I)=0
818 541     CONTINUE
819         READ(ITCOM,*) (PDFPAR(I),PDFVAL(I),I=1,20)
820         DO 542 I=1,20
821           IF(PDFPAR(I).NE.'                    ') THEN
822             WRITE(ITLIS,*) PDFPAR(I),PDFVAL(I)
823           ENDIF
824 542     CONTINUE
825         ISTRUC=-999
826         LOC(54)=NSEL
827         GO TO 100
828       ENDIF
829 #endif
830 C
831 C          Keyword SUGRA
832       IF(WORD.EQ.'SUGRA   ') THEN
833         READ(ITCOM,*) XM0SU,XMHSU,XA0SU,XTGBSU,XSMUSU
834         WRITE(ITLIS,*) XM0SU,XMHSU,XA0SU,XTGBSU,XSMUSU
835         LOC(55)=NSEL
836         GOMSSM=.TRUE.
837         GOSUG=.TRUE.
838         GO TO 100
839       ENDIF
840 C
841 C          Keyword HTYPE
842       IF(WORD.EQ.'HTYPE   ') THEN
843         READ(ITCOM,*) HTYPE
844         WRITE(ITLIS,*) HTYPE
845         LOC(56)=NSEL
846         IHTYPE=0
847         IF(HTYPE.EQ.'HL0     ') IHTYPE=82
848         IF(HTYPE.EQ.'HH0     ') IHTYPE=83
849         IF(HTYPE.EQ.'HA0     ') IHTYPE=84
850         IF(IHTYPE.EQ.0) THEN
851           WRITE(ITLIS,2000) HTYPE
852           IFL=16
853         ENDIF
854         GO TO 100
855       ENDIF
856 C
857 C          Keyword EPOL
858       IF(WORD.EQ.'EPOL  ') THEN
859         READ(ITCOM,*) PLEM,PLEP
860         WRITE(ITLIS,*) PLEM,PLEP
861         LOC(57)=NSEL
862         GO TO 100
863       ENDIF
864 C
865 C          Keyword MSSMD: optional 2nd geenration soft terms
866       IF(WORD.EQ.'MSSMD   ') THEN
867         READ(ITCOM,*) XQ2SS,XSRSS,XCRSS,XL2SS,XMRSS
868         WRITE(ITLIS,*) XQ2SS,XSRSS,XCRSS,XL2SS,XMRSS
869         LOC(58)=NSEL
870         GO TO 100
871       ENDIF
872 C
873 C          Keyword MSSME: optional U(1) and SU(2) gaugino masses
874       IF(WORD.EQ.'MSSME   ') THEN
875         READ(ITCOM,*) XM1SS,XM2SS
876         WRITE(ITLIS,*) XM1SS,XM2SS
877         LOC(59)=NSEL
878         GO TO 100
879       ENDIF
880 C
881 C          Keyword GMSB: gauge-mediated SUSY breaking model
882       IF(WORD.EQ.'GMSB    ') THEN
883         READ(ITCOM,*) XLAMGM,XMESGM,XN5GM,XTGBSU,XSMUSU,XCMGV
884         WRITE(ITLIS,*) XLAMGM,XMESGM,XN5GM,XTGBSU,XSMUSU,XCMGV
885         GOMSSM=.TRUE.
886         GOGMSB=.TRUE.
887         LOC(60)=NSEL
888         GO TO 100
889       ENDIF
890 C
891 C          Keyword NUSUG1: optional GUT scale gaugino masses
892       IF(WORD.EQ.'NUSUG1   ') THEN
893         READ(ITCOM,*) XNUSUG(1),XNUSUG(2),XNUSUG(3)
894         WRITE(ITLIS,*) XNUSUG(1),XNUSUG(2),XNUSUG(3)
895         LOC(61)=NSEL
896         GO TO 100
897       ENDIF
898 C
899 C          Keyword NUSUG2: optional GUT scale A terms
900       IF(WORD.EQ.'NUSUG2   ') THEN
901         READ(ITCOM,*) XNUSUG(6),XNUSUG(5),XNUSUG(4)
902         WRITE(ITLIS,*) XNUSUG(6),XNUSUG(5),XNUSUG(4)
903         LOC(62)=NSEL
904         GO TO 100
905       ENDIF
906 C
907 C          Keyword NUSUG3: optional GUT scale Higgs masses
908       IF(WORD.EQ.'NUSUG3   ') THEN
909         READ(ITCOM,*) XNUSUG(7),XNUSUG(8)
910         WRITE(ITLIS,*) XNUSUG(7),XNUSUG(8)
911         LOC(63)=NSEL
912         GO TO 100
913       ENDIF
914 C
915 C          Keyword NUSUG4: optional GUT scale 1st/2nd gen. masses
916       IF(WORD.EQ.'NUSUG4   ') THEN
917         READ(ITCOM,*) XNUSUG(13),XNUSUG(11),XNUSUG(12),XNUSUG(10)
918      $,XNUSUG(9)
919         WRITE(ITLIS,*) XNUSUG(13),XNUSUG(11),XNUSUG(12),XNUSUG(10)
920      $,XNUSUG(9)
921         LOC(64)=NSEL
922         GO TO 100
923       ENDIF
924 C
925 C          Keyword NUSUG5: optional GUT scale 3rd gen. masses
926       IF(WORD.EQ.'NUSUG5   ') THEN
927         READ(ITCOM,*) XNUSUG(18),XNUSUG(16),XNUSUG(17),XNUSUG(15)
928      $,XNUSUG(14)
929         WRITE(ITLIS,*) XNUSUG(18),XNUSUG(16),XNUSUG(17),XNUSUG(15)
930      $,XNUSUG(14)
931         LOC(65)=NSEL
932         GO TO 100
933       ENDIF
934 C
935 C          Keyword NOGRAV: No gravitino decays
936       IF(WORD.EQ.'NOGRAV  ') THEN
937         READ(ITCOM,571) NOGRAV
938         WRITE(ITLIS,572) NOGRAV
939         LOC(66)=NSEL
940         GO TO 100
941       ENDIF
942 C
943 C          Keyword MGVTNO: Sets the gravitino mass
944       IF(WORD.EQ.'MGVTNO  ') THEN
945         READ(ITCOM,*) XMGVTO
946         WRITE(ITLIS,*) XMGVTO
947         LOC(67)=NSEL
948         GO TO 100
949       ENDIF
950 C
951 C          Keyword AL3UNI: Impose alpha_s unification at M_GUT
952       IF(WORD.EQ.'AL3UNI  ') THEN
953         READ(ITCOM,571) AL3UNI
954         WRITE(ITLIS,572) AL3UNI
955         LOC(68)=NSEL
956         GO TO 100
957       ENDIF
958 C
959 C          Keyword GMSB2: additional GMSB parameters
960       IF(WORD.EQ.'GMSB2   ') THEN
961         READ(ITCOM,*) XRSLGM,XDHDGM,XDHUGM,XDYGM,XN51GM,XN52GM,XN53GM
962         WRITE(ITLIS,*) XRSLGM,XDHDGM,XDHUGM,XDYGM,XN51GM,XN52GM,XN53GM
963         LOC(69)=NSEL
964         GO TO 100
965       ENDIF
966 C
967 C          Keyword EEBREM: invoke bremsstrahlung in e+e- reactions
968       IF(WORD.EQ.'EEBREM  ') THEN
969         READ(ITCOM,*) RSHMIN,RSHMAX
970         WRITE(ITLIS,*) RSHMIN,RSHMAX
971         IBREM=.TRUE.
972         LOC(70)=NSEL
973         GO TO 100
974       ENDIF
975 C
976 C          Keyword EEBEAM: invoke beamstrahlung in e+e- reactions
977       IF(WORD.EQ.'EEBEAM  ') THEN
978         READ(ITCOM,*) RSHMIN,RSHMAX,UPSLON,SIGZ
979         WRITE(ITLIS,*) RSHMIN,RSHMAX,UPSLON,SIGZ
980         IBREM=.TRUE.
981         IBEAM=.TRUE.
982         LOC(71)=NSEL
983         GO TO 100
984       ENDIF
985 C
986 C          Keyword QMKKG (QMW for EXTRADIM)
987       IF(WORD.EQ.'QMKKG   ') THEN
988         READ(ITCOM,*) QMIN,QMAX
989         WRITE(ITLIS,*) QMIN,QMAX
990         LOC(19)=NSEL
991         GO TO 100
992       ENDIF
993 C
994 C          Keyword QTKKG (QTW for EXTRADIM)
995       IF(WORD.EQ.'QTKKG   ') THEN
996         READ(ITCOM,*)  QTMIN,QTMAX
997         WRITE(ITLIS,*) QTMIN,QTMAX
998         LOC(20)=NSEL
999         GO TO 100
1000       ENDIF
1001 C
1002 C          Keyword EXTRAD for EXTRADIM
1003       IF(WORD.EQ.'EXTRAD  ') THEN
1004         READ(ITCOM,*) NEXTRAD,MASSD,UVCUT
1005         WRITE(ITLIS,*) NEXTRAD,MASSD,UVCUT
1006         LOC(72)=NSEL
1007         GO TO 100
1008       ENDIF
1009 C
1010 C          Keyword MIJLIM
1011       IF(WORD.EQ.'MIJLIM  ') THEN
1012         READ(ITCOM,*) JLIM1,JLIM2,AMLIM1,AMLIM2
1013         WRITE(ITLIS,*) JLIM1,JLIM2,AMLIM1,AMLIM2
1014         IF(JLIM1.EQ.0.AND.JLIM2.EQ.0) THEN
1015           DO 720 I=1,NJET
1016             DO 721 J=1,NJET
1017               AMIJMN(I,J)=AMLIM1
1018               AMIJMX(I,J)=AMLIM2
1019 721         CONTINUE
1020 720       CONTINUE
1021         ELSEIF(JLIM1.GT.0.AND.JLIM1.LE.NJET.AND.JLIM2.GT.0.AND.
1022      $  JLIM2.LE.NJET) THEN
1023           AMIJMN(JLIM1,JLIM2)=AMLIM1
1024           AMIJMN(JLIM2,JLIM1)=AMLIM1
1025           AMIJMX(JLIM1,JLIM2)=AMLIM2
1026           AMIJMX(JLIM2,JLIM1)=AMLIM2
1027         ELSE
1028           WRITE(ITLIS,2008)
1029           IFL=73
1030         ENDIF
1031         LOC(73)=NSEL
1032         GO TO 100
1033       ENDIF
1034 C
1035 C          Keyword MTOT
1036       IF(WORD.EQ.'MTOT    ') THEN
1037         READ(ITCOM,*) EHMGMN,EHMGMX
1038         WRITE(ITLIS,*) EHMGMN,EHMGMX
1039         LOC(74)=NSEL
1040         GO TO 100
1041       ENDIF
1042 C
1043 C          Keyword SUGRHN
1044       IF(WORD.EQ.'SUGRHN  ') THEN
1045         READ(ITCOM,*) XMN3NR,XMAJNR,XANSS,XNRSS
1046         WRITE(ITLIS,*) XMN3NR,XMAJNR,XANSS,XNRSS
1047         LOC(75)=NSEL
1048         GO TO 100
1049       ENDIF
1050 C
1051 C          Keyword AMSB
1052       IF(WORD.EQ.'AMSB    ') THEN
1053         READ(ITCOM,*) XM0SU,XMHSU,XTGBSU,XSMUSU
1054         WRITE(ITLIS,*) XM0SU,XMHSU,XTGBSU,XSMUSU
1055         LOC(76)=NSEL
1056         GOMSSM=.TRUE.
1057         GOSUG=.TRUE.
1058         GOAMSB=.TRUE.
1059         GO TO 100
1060       ENDIF
1061 C
1062 C          Keyword SSBCSC
1063       IF(WORD.EQ.'SSBCSC  ') THEN
1064         READ(ITCOM,*) XSBCS
1065         WRITE(ITLIS,*) XSBCS
1066         LOC(77)=NSEL
1067         GO TO 100
1068       ENDIF
1069 C
1070 C          None of the above
1071 C
1072       WRITE(ITLIS,2000) WORD
1073       IFL=10
1074       RETURN
1075 C
1076 C          Error message or warnings
1077 C
1078  1001     FORMAT(//2X,'YOU HAVE GIVEN LIMITS FOR AN OVERLAPPING SET', 
1079      $  ' OF VARIABLES. SET MINIMIZING PPERP INTERVAL WILL BE USED.')
1080  1999     FORMAT(//' YOU FORGOT TO SELECT A PROCESS FOR GENERATION.'
1081      $    /' AVAILABLE AT PRESENT ARE ',
1082      $    /' TWOJET  E+E-  DRELLYAN  MINBIAS  WPAIR  SUPERSYM,' 
1083      $    /' HIGGS  PHOTON  TCOLOR')
1084  2000 FORMAT(//2X,A8,' IS NOT A RECOGNIZABLE PARAMETER. JOB TERMINATED')
1085  2001     FORMAT(//2X,' YOU CANNOT GIVE LIMITS FOR BOTH THETA AND Y.',
1086      $    ' MAKE UP YOUR MIND. JOB TERMINATED.')
1087  2002     FORMAT(/'  WHAT IS THAT SUPPOSED TO BE')
1088  2003     FORMAT(/'  YOU CANNOT RUN WS AND Z0 OR GAMMAS AT THE',
1089      $    ' SAME TIME. JOB TERMINATED')
1090  2004 FORMAT(//'  PARAMETER OUT OF RANGE. JOB TERMINATED.')
1091  2005 FORMAT(//'  YOU CANNOT FORCE DECAY OF A QUARK, YOU MUST CHOSE '
1092      $,' A PARTICLE')
1093  2006     FORMAT(//2X,' INVALID JETTYPE VALUES. JOB TERMINATED.')
1094  2007 FORMAT(//2X,'YOU CANNOT USE MSSM AND SUGRA SIMULTANEOUSLY')
1095  2008 FORMAT(//2X,'INVALID JET-JET MASS LIMITS. JOB TERMINATED.')
1096 C
1097       END