]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/code/flavor.F
Using AliLog (F.Carminati)
[u/mrichter/AliRoot.git] / ISAJET / code / flavor.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 SUBROUTINE FLAVOR(ID,IFL1,IFL2,IFL3,JSPIN,INDEX)
3C
4C This subroutine unpacks the IDENT code ID=+/-IJKL
5C
6C Mesons--
7C I=0, J<=K, +/- is sign for J
8C ID=110 for PI0, ID=220 for ETA, etc.
9C
10C Baryons--
11C I<=J<=K in general
12C J<I<K for second state antisymmetric in (I,J), eg. L = 2130
13C
14C Other--
15C ID=1,...,6 for quarks
16C ID=9 for gluon
17C ID=10 for photon
18C ID=11,...,16 for leptons
19C ID=20 for KS, ID=-20 for KL
20C
21C I=21...26 for left scalar quarks
22C I=29 for gluino
23C I=30 for Z1SS
24C I=31...36 for left scalar leptons
25C I=39 for W1SS
26C I=40 for Z2SS
27C I=41...46 for right scalar quarks
28C I=49 for W2SS
29C I=50 for Z3SS
30C I=51...56 for right scalar leptons
31C I=60 for Z4SS
32C
33C ID=80 for W+
34C ID=81,...,89 for Higgs mesons
35C ID=90 for Z0
36C ID=91 for gravitino
37C ID=92 for graviton
38C
39C Incomplete meson multiplets used in b decays:
40C ID=10121 A1+(1260)
41C ID=10111 A10(1260)
42C ID=10131 K1+(1270)
43C ID=10231 K10(1270)
44C ID=30131 K1*+(1400)
45C ID=30231 K1*0(1400)
46C ID=132 K2*+(1430)
47C ID=232 K2*0(1430)
48C ID=10110 F0(980) (mass = 1000 to allow K+K- decay)
49C ID=112 F2(1270)
50C ID=10441 PSI(2S)
51C ID=20440 CHI0
52C ID=20441 CHI1
53C ID=20442 CHI2
54C
55C Diquarks--
56C ID=+/-IJ00, I<J for diquark composed of I,J.
57C
58C INDEX is a sequence number used internally
59C
60C Ver. 7.03: Make more robust by returning INDEX = 0 for
61C bad ID codes. Does not check for valid baryons, e.g.,
62C uuu with J = 1/2. Test on LABEL(1:3) = 'ERR' for this.
63C
64#if defined(CERNLIB_IMPNONE)
65 IMPLICIT NONE
66#endif
67#include "isajet/itapes.inc"
68#include "isajet/qlmass.inc"
69 INTEGER ID,IFL1,IFL2,IFL3,JSPIN,INDEX
70 INTEGER I,J,K,IDABS,INDXSP
71C
72 IDABS=IABS(ID)
73C
74C Select case
75C
76 IF(IDABS.GT.NQLEP-1.AND.IDABS.LT.80) GO TO 400
77 IF(IDABS.GT.92.AND.IDABS.LE.100) GO TO 400
78C Quarks: ID < 100
79 IF(IDABS.LT.100) GO TO 200
80 I=MOD(IDABS/1000,10)
81 J=MOD(IDABS/100,10)
82 K=MOD(IDABS/10,10)
83 JSPIN=MOD(IDABS,10)
84C Special hadrons
85 IF(IDABS.GT.10000.OR.JSPIN.GT.1) GO TO 500
86 IF(I.EQ.9.OR.J.EQ.9.OR.K.EQ.9) GO TO 400
87C Mesons: 100 < ID < 1000
88 IF(IDABS.LT.1000) GO TO 100
89C Diquarks: ID > 1000 but K = 0
90 IF(K.EQ.0.AND.JSPIN.EQ.0) GO TO 300
91C
92C Baryons
93C Only X,Y baryons are QQX, QQY, Q=U,D,S.
94C
95 IF(I.GT.K.OR.J.GT.K.OR.J.EQ.0) GO TO 400
96 IF(K.GT.6.AND.(I.GT.3.OR.J.GT.3)) GO TO 400
97 IFL1=ISIGN(I,ID)
98 IFL2=ISIGN(J,ID)
99 IFL3=ISIGN(K,ID)
100 IF(K.LE.6) THEN
101 INDEX=MAX0(I-1,J-1)**2+I+MAX0(I-J,0)+(K-1)*K*(2*K-1)/6
102 1 +109*JSPIN+36*NMES+NQLEP+13
103 ELSE
104 INDEX=MAX0(I-1,J-1)**2+I+MAX0(I-J,0)+9*(K-7)+91
105 1 +109*JSPIN+36*NMES+NQLEP+13
106 ENDIF
107 RETURN
108C
109C Mesons
110C
111100 CONTINUE
112 IF(J.GT.K) GO TO 400
113 IF(J.EQ.K.AND.ID.LT.0) GO TO 400
114 IFL1=0
115 IFL2=ISIGN(J,ID)
116 IFL3=ISIGN(K,-ID)
117 INDEX=J+K*(K-1)/2+36*JSPIN+NQLEP
118 INDEX=INDEX+13
119 RETURN
120C
121C Quarks, leptons, etc
122C
123200 CONTINUE
124 IFL1=0
125 IFL2=0
126 IFL3=0
127 JSPIN=0
128 INDEX=IDABS
129 IF(IDABS.LT.20) RETURN
130C Define INDEX=20 for KS, INDEX=21 for KL
131 INDEX=IDABS+1
132 IF(ID.EQ.20) INDEX=20
133C INDEX=NQLEP+1,...,NQLEP+13 for W+, Higgs, Z0, GVSS, GRAV
134 IF(IDABS.LT.80) RETURN
135 INDEX=NQLEP+IDABS-79
136 RETURN
137C
138C Diquarks
139C
140300 IF(JSPIN.GT.0.OR.I.GT.J) GO TO 400
141 IF(I.GT.6.OR.J.GT.6) GO TO 400
142 IFL1=ISIGN(I,ID)
143 IFL2=ISIGN(J,ID)
144 IFL3=0
145 JSPIN=0
146 INDEX=109*NBARY+36*NMES+NQLEP+13+I+J*(J-1)/2
147 RETURN
148C
149C Error
150C
151400 CONTINUE
152 IFL1=0
153 IFL2=0
154 IFL3=0
155 JSPIN=0
156 INDEX=0
157 RETURN
158C
159C Special mesons - used only for B decays
160C
161500 INDXSP=400
162 IF(IDABS.EQ.10121) THEN
163 INDEX=INDXSP+1
164 ELSEIF(IDABS.EQ.10111) THEN
165 INDEX=INDXSP+2
166 ELSEIF(IDABS.EQ.10131) THEN
167 INDEX=INDXSP+3
168 ELSEIF(IDABS.EQ.10231) THEN
169 INDEX=INDXSP+4
170 ELSEIF(IDABS.EQ.30131) THEN
171 INDEX=INDXSP+5
172 ELSEIF(IDABS.EQ.30231) THEN
173 INDEX=INDXSP+6
174 ELSEIF(IDABS.EQ.132) THEN
175 INDEX=INDXSP+7
176 ELSEIF(IDABS.EQ.232) THEN
177 INDEX=INDXSP+8
178 ELSEIF(IDABS.EQ.10110) THEN
179 INDEX=INDXSP+9
180 ELSEIF(IDABS.EQ.112) THEN
181 INDEX=INDXSP+10
182 ELSEIF(IDABS.EQ.10441) THEN
183 INDEX=INDXSP+11
184 ELSEIF(IDABS.EQ.20440) THEN
185 INDEX=INDXSP+12
186 ELSEIF(IDABS.EQ.20441) THEN
187 INDEX=INDXSP+13
188 ELSEIF(IDABS.EQ.20442) THEN
189 INDEX=INDXSP+14
190 ELSE
191 INDEX=0
192 ENDIF
193 IF(INDEX.GT.0) THEN
194 IFL1=0
195 IFL2=ISIGN(J,ID)
196 IFL3=ISIGN(K,-ID)
197 ELSE
198 IFL1=0
199 IFL2=0
200 IFL3=0
201 ENDIF
202C
203 RETURN
204 END