]>
Commit | Line | Data |
---|---|---|
0795afa3 | 1 | #include "isajet/pilot.h" |
2 | SUBROUTINE FLAVOR(ID,IFL1,IFL2,IFL3,JSPIN,INDEX) | |
3 | C | |
4 | C This subroutine unpacks the IDENT code ID=+/-IJKL | |
5 | C | |
6 | C Mesons-- | |
7 | C I=0, J<=K, +/- is sign for J | |
8 | C ID=110 for PI0, ID=220 for ETA, etc. | |
9 | C | |
10 | C Baryons-- | |
11 | C I<=J<=K in general | |
12 | C J<I<K for second state antisymmetric in (I,J), eg. L = 2130 | |
13 | C | |
14 | C Other-- | |
15 | C ID=1,...,6 for quarks | |
16 | C ID=9 for gluon | |
17 | C ID=10 for photon | |
18 | C ID=11,...,16 for leptons | |
19 | C ID=20 for KS, ID=-20 for KL | |
20 | C | |
21 | C I=21...26 for left scalar quarks | |
22 | C I=29 for gluino | |
23 | C I=30 for Z1SS | |
24 | C I=31...36 for left scalar leptons | |
25 | C I=39 for W1SS | |
26 | C I=40 for Z2SS | |
27 | C I=41...46 for right scalar quarks | |
28 | C I=49 for W2SS | |
29 | C I=50 for Z3SS | |
30 | C I=51...56 for right scalar leptons | |
31 | C I=60 for Z4SS | |
32 | C | |
33 | C ID=80 for W+ | |
34 | C ID=81,...,89 for Higgs mesons | |
35 | C ID=90 for Z0 | |
36 | C ID=91 for gravitino | |
37 | C ID=92 for graviton | |
38 | C | |
39 | C Incomplete meson multiplets used in b decays: | |
40 | C ID=10121 A1+(1260) | |
41 | C ID=10111 A10(1260) | |
42 | C ID=10131 K1+(1270) | |
43 | C ID=10231 K10(1270) | |
44 | C ID=30131 K1*+(1400) | |
45 | C ID=30231 K1*0(1400) | |
46 | C ID=132 K2*+(1430) | |
47 | C ID=232 K2*0(1430) | |
48 | C ID=10110 F0(980) (mass = 1000 to allow K+K- decay) | |
49 | C ID=112 F2(1270) | |
50 | C ID=10441 PSI(2S) | |
51 | C ID=20440 CHI0 | |
52 | C ID=20441 CHI1 | |
53 | C ID=20442 CHI2 | |
54 | C | |
55 | C Diquarks-- | |
56 | C ID=+/-IJ00, I<J for diquark composed of I,J. | |
57 | C | |
58 | C INDEX is a sequence number used internally | |
59 | C | |
60 | C Ver. 7.03: Make more robust by returning INDEX = 0 for | |
61 | C bad ID codes. Does not check for valid baryons, e.g., | |
62 | C uuu with J = 1/2. Test on LABEL(1:3) = 'ERR' for this. | |
63 | C | |
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 | |
71 | C | |
72 | IDABS=IABS(ID) | |
73 | C | |
74 | C Select case | |
75 | C | |
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 | |
78 | C 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) | |
84 | C 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 | |
87 | C Mesons: 100 < ID < 1000 | |
88 | IF(IDABS.LT.1000) GO TO 100 | |
89 | C Diquarks: ID > 1000 but K = 0 | |
90 | IF(K.EQ.0.AND.JSPIN.EQ.0) GO TO 300 | |
91 | C | |
92 | C Baryons | |
93 | C Only X,Y baryons are QQX, QQY, Q=U,D,S. | |
94 | C | |
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 | |
108 | C | |
109 | C Mesons | |
110 | C | |
111 | 100 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 | |
120 | C | |
121 | C Quarks, leptons, etc | |
122 | C | |
123 | 200 CONTINUE | |
124 | IFL1=0 | |
125 | IFL2=0 | |
126 | IFL3=0 | |
127 | JSPIN=0 | |
128 | INDEX=IDABS | |
129 | IF(IDABS.LT.20) RETURN | |
130 | C Define INDEX=20 for KS, INDEX=21 for KL | |
131 | INDEX=IDABS+1 | |
132 | IF(ID.EQ.20) INDEX=20 | |
133 | C INDEX=NQLEP+1,...,NQLEP+13 for W+, Higgs, Z0, GVSS, GRAV | |
134 | IF(IDABS.LT.80) RETURN | |
135 | INDEX=NQLEP+IDABS-79 | |
136 | RETURN | |
137 | C | |
138 | C Diquarks | |
139 | C | |
140 | 300 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 | |
148 | C | |
149 | C Error | |
150 | C | |
151 | 400 CONTINUE | |
152 | IFL1=0 | |
153 | IFL2=0 | |
154 | IFL3=0 | |
155 | JSPIN=0 | |
156 | INDEX=0 | |
157 | RETURN | |
158 | C | |
159 | C Special mesons - used only for B decays | |
160 | C | |
161 | 500 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 | |
202 | C | |
203 | RETURN | |
204 | END |