1 #include "isajet/pilot.h"
2 INTEGER FUNCTION ITRANS(ID,MCONV)
4 C...convert (MCONV=1) from ISAJET numbering to PDG numbering
5 C... or (MCONV=2) from PDG numbering to ISAJET numbering
7 C...Ver 7.21: add extra mesons with IABS(ID) > 10000; these only occur
8 C... in a few B decays.
10 C...Thanks to Lynn Garren, Fermilab.
12 #if defined(CERNLIB_IMPNONE)
15 #include "isajet/itapes.inc"
18 INTEGER I2,I3,J,IDA,IF1,IF2,IND,ITMP,IF3,JS,J1,IS1,IS2,IS3,I4,I1
20 C... ITABI(I) converts miscellaneous ISAJET particle ID's to standard
22 INTEGER ITABI(99,2), NOANT(15)
24 DATA ITABI/2,1,3,4,5,6,7,8,21,22,
25 1 12,11,14,13,16,15,0,0,0,310,
26 2 42,41,43,44,45,46,0,0,47,67,
27 3 52,51,54,53,56,55,0,0,77,68,
28 4 62,61,63,64,65,66,0,0,78,69,
29 5 72,71,74,73,76,75,0,0,0,70,
30 6 0,0,0,0,0,0,0,0,0,0,
31 7 0,0,0,0,0,0,0,0,0,24,
32 8 25,57,58,59,40,33,37,34,38,23,
34 * 2,1,3,4,5,6,7,8,0,0,
35 1 12,11,14,13,16,15,0,0,0,0,
36 2 9,10,90,80,81,0,0,0,0,0,
37 3 0,82,86,88,0,83,87,89,84,85,
38 4 22,21,23,24,25,26,29,0,0,0,
39 5 32,31,34,33,36,35,82,83,84,0,
40 6 42,41,43,44,45,46,30,40,50,60,
41 7 52,51,54,53,56,55,39,49,0,0,
42 8 0,0,0,0,0,0,0,0,0,0,
44 DATA NOANT/-21,-22,-23,-25,-30,-35,-47,-48,-57,-58,-59,
49 IF(MCONV.NE.1) GO TO 200
50 C...ISAJET algorithm routine
51 CALL FLAVOR(ID,IF1,IF2,IF3,JS,IND)
53 WRITE(ITLIS,*) ' ITRANS: particle ID is zero'
54 ELSEIF(IDA.LT.100) THEN
55 ITRANS=ISIGN(ITABI(IDA,1),ID)
56 IF(ID.EQ.-20) ITRANS=130
57 C...check for illegal antiparticles
61 IF(ITMP.EQ.NOANT(J)) ITRANS=0
64 ELSEIF(IND.NE.0.AND.IDA.LT.10000) THEN
70 IF(IS2.LE.2 .AND. IS3.LE.2) THEN
73 C... u and d have opposite definitions
74 IF(IS2.LE.2) IS2=ITABI(IS2,1)
75 IF(IS3.LE.2) IS3=ITABI(IS3,1)
77 ITRANS=IS3*100 + IS2*10 + 2*JS+1
78 ITRANS=ISIGN(ITRANS,ID)
79 C... charmed and top mesons have wrong sign
80 IF(IS3.EQ.4 .AND. IS2.NE.4) ITRANS=-ITRANS
81 IF(IS3.EQ.6 .AND. IS2.NE.6 .AND. IS2.NE.4) ITRANS=-ITRANS
82 C...check for illegal antiparticles
83 IF(IS2.EQ.IS3 .AND. ID.LT.0) ITRANS=0
86 C... u and d have opposite definitions
87 IF(IS1.LE.2) IS1=ITABI(IS1,1)
88 IF(IS2.LE.2) IS2=ITABI(IS2,1)
90 ITRANS=IS1*1000 + IS2*100 + 2*JS+1
92 ITRANS=IS2*1000 + IS1*100 + 2*JS+1
94 ITRANS=ISIGN(ITRANS,ID)
95 C... charmed and top mesons have wrong sign
96 IF(IS2.EQ.4 .AND. IS1.NE.4) ITRANS=-ITRANS
97 IF(IS2.EQ.6 .AND. IS1.NE.6 .AND. IS1.NE.4) ITRANS=-ITRANS
100 C... u and d have opposite definitions
101 IF(IS1.LE.2) IS1=ITABI(IS1,1)
102 IF(IS2.LE.2) IS2=ITABI(IS2,1)
103 IF(IS3.LE.2) IS3=ITABI(IS3,1)
105 ITRANS=IS1*1000 + IS2*100 + IS3*10 + 2*JS+2
106 ELSEIF(IS1.LE.2 .AND. IS2.LE.2) THEN
107 ITRANS=IS3*1000 + IS1*100 + IS2*10 + 2*JS+2
109 ITRANS=IS3*1000 + IS2*100 + IS1*10 + 2*JS+2
111 ITRANS=ISIGN(ITRANS,ID)
113 ELSEIF(IND.GT.0.AND.IDA.GT.10000) THEN
117 ELSEIF(ID.EQ.10111) THEN
119 ELSEIF(ID.EQ.10131) THEN
121 ELSEIF(ID.EQ.10231) THEN
123 ELSEIF(ID.EQ.30131) THEN
125 ELSEIF(ID.EQ.30231) THEN
127 ELSEIF(ID.EQ.10110) THEN
129 ELSEIF(ID.EQ.10441) THEN
131 ELSEIF(ID.EQ.20440) THEN
133 ELSEIF(ID.EQ.20441) THEN
135 ELSEIF(ID.EQ.20442) THEN
143 200 IF(MCONV.NE.2) GO TO 300
150 WRITE(ITLIS,*) ' ITRANS: particle ID is zero'
151 C...elementary particles
152 ELSEIF(IDA.LT.100) THEN
153 ITRANS=ISIGN(ITABI(IDA,2),ID)
154 C...check for illegal antiparticles
157 IF(ID.EQ.NOANT(J)) ITRANS=0
160 C...K short and K long
161 ELSEIF(ID.EQ.130) THEN
163 ELSEIF(ID.EQ.310) THEN
167 IF(I1.LE.2 .AND. I2.LE.2) THEN
170 C... u and d have opposite definitions
171 IF(I1.LE.2) I1=ITABI(I1,2)
172 IF(I2.LE.2) I2=ITABI(I2,2)
174 ITRANS=I1*100 + I2*10 + (J1-1)/2
175 ITRANS=ISIGN(ITRANS,ID)
176 C... charmed and top mesons have wrong sign
177 IF(I2.EQ.4 .AND. I1.NE.4) ITRANS=-ITRANS
178 IF(I2.EQ.6 .AND. I1.NE.6 .AND. I1.NE.4) ITRANS=-ITRANS
179 C...check for illegal antiparticles
180 IF(I2.EQ.I1 .AND. ID.LT.0) ITRANS=0
183 C... u and d have opposite definitions
184 IF(I3.LE.2) I3=ITABI(I3,2)
185 IF(I2.LE.2) I2=ITABI(I2,2)
187 ITRANS=I3*1000 + I2*100 + (J1-1)/2
189 ITRANS=I2*1000 + I3*100 + (J1-1)/2
191 ITRANS=ISIGN(ITRANS,ID)
192 C... charmed and top mesons have wrong sign
193 IF(I2.EQ.4 .AND. I3.NE.4) ITRANS=-ITRANS
194 IF(I2.EQ.6 .AND. I3.NE.6 .AND. I3.NE.4) ITRANS=-ITRANS
197 C... u and d have opposite definitions
198 IF(I3.LE.2) I3=ITABI(I3,2)
199 IF(I2.LE.2) I2=ITABI(I2,2)
200 IF(I1.LE.2) I1=ITABI(I1,2)
202 ITRANS=I3*1000 + I2*100 + I1*10 + (J1-2)/2
203 ELSEIF(I1.LE.2 .AND. I2.LE.2) THEN
204 ITRANS=I2*1000 + I1*100 + I3*10 + (J1-2)/2
206 ITRANS=I1*1000 + I2*100 + I3*10 + (J1-2)/2
208 ITRANS=ISIGN(ITRANS,ID)