1 #include "isajet/pilot.h"
2 SUBROUTINE ORDER(ID,MODEIN,MODOUT,MEOUT)
4 C Search for mode MODEIN of particle ID in standard /DKYTAB/.
5 C If found, return MODOUT = standard order and MEOUT=MELEM.
6 C Otherwise return MODOUT = MODEIN and MEOUT=0.
7 C If ID<0, use antiparticles instead.
9 #if defined(CERNLIB_IMPNONE)
13 #include "isajet/itapes.inc"
14 #include "isajet/dkytab.inc"
15 #include "isajet/force.inc"
17 INTEGER ID,MODEIN(5),MODOUT(5),MODTST(5)
18 INTEGER IFL1,IFL2,IFL3,JSPIN,INDEX,LOOK0,IUSE(5),ISAME,I,J,
19 $NADD,NADDI,K,K1,K2,IDANTI,MEOUT
21 C Find standard starting point
23 CALL FLAVOR(ID,IFL1,IFL2,IFL3,JSPIN,INDEX)
24 IF(LOOK(INDEX).GT.0) THEN
26 ELSEIF(LOOK(INDEX).LT.0) THEN
27 LOOK0=LOOKST(-LOOK(INDEX))
36 100 IF(MODEIN(I).NE.0) NADD=I
38 C If ID<0, compare antiparticles
42 110 MODTST(K)=MODEIN(K)
45 120 MODTST(K)=IDANTI(MODEIN(K))
48 C Scan all modes starting at LOOK0. Check for correct NADD.
49 C Then check that particles match in arbitrary order.
51 IF(LOOK0.LE.0) GO TO 300
54 210 IF(MODE(K,I).NE.0) NADDI=K
55 IF(NADDI.EQ.NADD) THEN
61 IF(MODTST(K1).EQ.MODE(K2,I).AND.IUSE(K2).EQ.0) THEN
72 201 IF(CBR(I).GE.1.) THEN
79 C Return matching mode or original mode.
81 300 IF(ISAME.EQ.0) THEN
83 3001 FORMAT(' ***** WARNING: NONSTANDARD MODE')
85 310 MODOUT(K)=MODEIN(K)
89 320 MODOUT(K)=MODE(K,ISAME)
93 330 MODOUT(K)=IDANTI(MODE(K,ISAME))