#include "isajet/pilot.h" SUBROUTINE FLAVOR(ID,IFL1,IFL2,IFL3,JSPIN,INDEX) C C This subroutine unpacks the IDENT code ID=+/-IJKL C C Mesons-- C I=0, J<=K, +/- is sign for J C ID=110 for PI0, ID=220 for ETA, etc. C C Baryons-- C I<=J<=K in general C J 1000 but K = 0 IF(K.EQ.0.AND.JSPIN.EQ.0) GO TO 300 C C Baryons C Only X,Y baryons are QQX, QQY, Q=U,D,S. C IF(I.GT.K.OR.J.GT.K.OR.J.EQ.0) GO TO 400 IF(K.GT.6.AND.(I.GT.3.OR.J.GT.3)) GO TO 400 IFL1=ISIGN(I,ID) IFL2=ISIGN(J,ID) IFL3=ISIGN(K,ID) IF(K.LE.6) THEN INDEX=MAX0(I-1,J-1)**2+I+MAX0(I-J,0)+(K-1)*K*(2*K-1)/6 1 +109*JSPIN+36*NMES+NQLEP+13 ELSE INDEX=MAX0(I-1,J-1)**2+I+MAX0(I-J,0)+9*(K-7)+91 1 +109*JSPIN+36*NMES+NQLEP+13 ENDIF RETURN C C Mesons C 100 CONTINUE IF(J.GT.K) GO TO 400 IF(J.EQ.K.AND.ID.LT.0) GO TO 400 IFL1=0 IFL2=ISIGN(J,ID) IFL3=ISIGN(K,-ID) INDEX=J+K*(K-1)/2+36*JSPIN+NQLEP INDEX=INDEX+13 RETURN C C Quarks, leptons, etc C 200 CONTINUE IFL1=0 IFL2=0 IFL3=0 JSPIN=0 INDEX=IDABS IF(IDABS.LT.20) RETURN C Define INDEX=20 for KS, INDEX=21 for KL INDEX=IDABS+1 IF(ID.EQ.20) INDEX=20 C INDEX=NQLEP+1,...,NQLEP+13 for W+, Higgs, Z0, GVSS, GRAV IF(IDABS.LT.80) RETURN INDEX=NQLEP+IDABS-79 RETURN C C Diquarks C 300 IF(JSPIN.GT.0.OR.I.GT.J) GO TO 400 IF(I.GT.6.OR.J.GT.6) GO TO 400 IFL1=ISIGN(I,ID) IFL2=ISIGN(J,ID) IFL3=0 JSPIN=0 INDEX=109*NBARY+36*NMES+NQLEP+13+I+J*(J-1)/2 RETURN C C Error C 400 CONTINUE IFL1=0 IFL2=0 IFL3=0 JSPIN=0 INDEX=0 RETURN C C Special mesons - used only for B decays C 500 INDXSP=400 IF(IDABS.EQ.10121) THEN INDEX=INDXSP+1 ELSEIF(IDABS.EQ.10111) THEN INDEX=INDXSP+2 ELSEIF(IDABS.EQ.10131) THEN INDEX=INDXSP+3 ELSEIF(IDABS.EQ.10231) THEN INDEX=INDXSP+4 ELSEIF(IDABS.EQ.30131) THEN INDEX=INDXSP+5 ELSEIF(IDABS.EQ.30231) THEN INDEX=INDXSP+6 ELSEIF(IDABS.EQ.132) THEN INDEX=INDXSP+7 ELSEIF(IDABS.EQ.232) THEN INDEX=INDXSP+8 ELSEIF(IDABS.EQ.10110) THEN INDEX=INDXSP+9 ELSEIF(IDABS.EQ.112) THEN INDEX=INDXSP+10 ELSEIF(IDABS.EQ.10441) THEN INDEX=INDXSP+11 ELSEIF(IDABS.EQ.20440) THEN INDEX=INDXSP+12 ELSEIF(IDABS.EQ.20441) THEN INDEX=INDXSP+13 ELSEIF(IDABS.EQ.20442) THEN INDEX=INDXSP+14 ELSE INDEX=0 ENDIF IF(INDEX.GT.0) THEN IFL1=0 IFL2=ISIGN(J,ID) IFL3=ISIGN(K,-ID) ELSE IFL1=0 IFL2=0 IFL3=0 ENDIF C RETURN END