]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/isatape/itrans.F
(martin) pt vs eta correction matrix calculation macro using CorrectionMatrix2D class.
[u/mrichter/AliRoot.git] / ISAJET / isatape / itrans.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 INTEGER FUNCTION ITRANS(ID,MCONV)
3C
4C...convert (MCONV=1) from ISAJET numbering to PDG numbering
5C... or (MCONV=2) from PDG numbering to ISAJET numbering
6C...
7C...Ver 7.21: add extra mesons with IABS(ID) > 10000; these only occur
8C... in a few B decays.
9C
10C...Thanks to Lynn Garren, Fermilab.
11C
12#if defined(CERNLIB_IMPNONE)
13 IMPLICIT NONE
14#endif
15#include "isajet/itapes.inc"
16C
17 INTEGER ID,MCONV
18 INTEGER I2,I3,J,IDA,IF1,IF2,IND,ITMP,IF3,JS,J1,IS1,IS2,IS3,I4,I1
19C
20C... ITABI(I) converts miscellaneous ISAJET particle ID's to standard
21C... scheme
22 INTEGER ITABI(99,2), NOANT(15)
23 SAVE ITABI,NOANT
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,
33 9 0,0,0,0,0,0,0,0,0,
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,
43 9 0,0,0,0,0,0,0,0,0/
44 DATA NOANT/-21,-22,-23,-25,-30,-35,-47,-48,-57,-58,-59,
45 1 -67,-68,-69,-70/
46C
47 IDA=IABS(ID)
48 ITRANS=0
49 IF(MCONV.NE.1) GO TO 200
50C...ISAJET algorithm routine
51 CALL FLAVOR(ID,IF1,IF2,IF3,JS,IND)
52 IF(IDA.EQ.0) THEN
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
57C...check for illegal antiparticles
58 ITMP=ITRANS
59 IF(ITMP.LT.0) THEN
60 DO 101 J=1,15
61 IF(ITMP.EQ.NOANT(J)) ITRANS=0
62 101 CONTINUE
63 ENDIF
64 ELSEIF(IND.NE.0.AND.IDA.LT.10000) THEN
65 IS1=IABS(IF1)
66 IS2=IABS(IF2)
67 IS3=IABS(IF3)
68C...mesons
69 IF(IS1.EQ.0) THEN
70 IF(IS2.LE.2 .AND. IS3.LE.2) THEN
71C... don't change
72 ELSE
73C... u and d have opposite definitions
74 IF(IS2.LE.2) IS2=ITABI(IS2,1)
75 IF(IS3.LE.2) IS3=ITABI(IS3,1)
76 ENDIF
77 ITRANS=IS3*100 + IS2*10 + 2*JS+1
78 ITRANS=ISIGN(ITRANS,ID)
79C... 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
82C...check for illegal antiparticles
83 IF(IS2.EQ.IS3 .AND. ID.LT.0) ITRANS=0
84C...diquarks
85 ELSEIF(IS3.EQ.0) THEN
86C... u and d have opposite definitions
87 IF(IS1.LE.2) IS1=ITABI(IS1,1)
88 IF(IS2.LE.2) IS2=ITABI(IS2,1)
89 IF(IS2.LT.IS1) THEN
90 ITRANS=IS1*1000 + IS2*100 + 2*JS+1
91 ELSE
92 ITRANS=IS2*1000 + IS1*100 + 2*JS+1
93 ENDIF
94 ITRANS=ISIGN(ITRANS,ID)
95C... 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
98C...baryons
99 ELSE
100C... 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)
104 IF(IS3.LE.2) THEN
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
108 ELSE
109 ITRANS=IS3*1000 + IS2*100 + IS1*10 + 2*JS+2
110 ENDIF
111 ITRANS=ISIGN(ITRANS,ID)
112 ENDIF
113 ELSEIF(IND.GT.0.AND.IDA.GT.10000) THEN
114C...Special mesons.
115 IF(ID.EQ.10121) THEN
116 ITRANS=20213
117 ELSEIF(ID.EQ.10111) THEN
118 ITRANS=20113
119 ELSEIF(ID.EQ.10131) THEN
120 ITRANS=10323
121 ELSEIF(ID.EQ.10231) THEN
122 ITRANS=10313
123 ELSEIF(ID.EQ.30131) THEN
124 ITRANS=30323
125 ELSEIF(ID.EQ.30231) THEN
126 ITRANS=30313
127 ELSEIF(ID.EQ.10110) THEN
128 ITRANS=10221
129 ELSEIF(ID.EQ.10441) THEN
130 ITRANS=20443
131 ELSEIF(ID.EQ.20440) THEN
132 ITRANS=10441
133 ELSEIF(ID.EQ.20441) THEN
134 ITRANS=10443
135 ELSEIF(ID.EQ.20442) THEN
136 ITRANS=445
137 ELSE
138 ITRANS=ID
139 ENDIF
140 ENDIF
141 GO TO 300
142C
143 200 IF(MCONV.NE.2) GO TO 300
144 J1=MOD(IDA,10)
145 I1=MOD(IDA/10,10)
146 I2=MOD(IDA/100,10)
147 I3=MOD(IDA/1000,10)
148 I4=MOD(IDA/10000,10)
149 IF(IDA.EQ.0) THEN
150 WRITE(ITLIS,*) ' ITRANS: particle ID is zero'
151C...elementary particles
152 ELSEIF(IDA.LT.100) THEN
153 ITRANS=ISIGN(ITABI(IDA,2),ID)
154C...check for illegal antiparticles
155 IF(ID.LT.0) THEN
156 DO 201 J=1,15
157 IF(ID.EQ.NOANT(J)) ITRANS=0
158 201 CONTINUE
159 ENDIF
160C...K short and K long
161 ELSEIF(ID.EQ.130) THEN
162 ITRANS=-20
163 ELSEIF(ID.EQ.310) THEN
164 ITRANS=20
165C...mesons
166 ELSEIF(I3.EQ.0) THEN
167 IF(I1.LE.2 .AND. I2.LE.2) THEN
168C... don't change
169 ELSE
170C... u and d have opposite definitions
171 IF(I1.LE.2) I1=ITABI(I1,2)
172 IF(I2.LE.2) I2=ITABI(I2,2)
173 ENDIF
174 ITRANS=I1*100 + I2*10 + (J1-1)/2
175 ITRANS=ISIGN(ITRANS,ID)
176C... 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
179C...check for illegal antiparticles
180 IF(I2.EQ.I1 .AND. ID.LT.0) ITRANS=0
181C...diquarks
182 ELSEIF(I1.EQ.0) THEN
183C... u and d have opposite definitions
184 IF(I3.LE.2) I3=ITABI(I3,2)
185 IF(I2.LE.2) I2=ITABI(I2,2)
186 IF(I3.LT.I2) THEN
187 ITRANS=I3*1000 + I2*100 + (J1-1)/2
188 ELSE
189 ITRANS=I2*1000 + I3*100 + (J1-1)/2
190 ENDIF
191 ITRANS=ISIGN(ITRANS,ID)
192C... 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
195C...baryons
196 ELSE
197C... 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)
201 IF(I3.LE.2) THEN
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
205 ELSE
206 ITRANS=I1*1000 + I2*100 + I3*10 + (J1-2)/2
207 ENDIF
208 ITRANS=ISIGN(ITRANS,ID)
209 ENDIF
210
211 300 RETURN
212 END