]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HIJING/hipyset1_35/lukfdi_hijing.F
Removal of useless dependencies via forward declarations
[u/mrichter/AliRoot.git] / HIJING / hipyset1_35 / lukfdi_hijing.F
CommitLineData
e74335a4 1* $Id$
2
3C*********************************************************************
4
5 SUBROUTINE LUKFDI_HIJING(KFL1,KFL2,KFL3,KF)
6
7C...Purpose: to generate a new flavour pair and combine off a hadron.
8#include "ludat1_hijing.inc"
9#include "ludat2_hijing.inc"
10
11C...Default flavour values. Input consistency checks.
12 KF1A=IABS(KFL1)
13 KF2A=IABS(KFL2)
14 KFL3=0
15 KF=0
16 IF(KF1A.EQ.0) RETURN
17 IF(KF2A.NE.0) THEN
18 IF(KF1A.LE.10.AND.KF2A.LE.10.AND.KFL1*KFL2.GT.0) RETURN
19 IF(KF1A.GT.10.AND.KF2A.GT.10) RETURN
20 IF((KF1A.GT.10.OR.KF2A.GT.10).AND.KFL1*KFL2.LT.0) RETURN
21 ENDIF
22
23C...Check if tabulated flavour probabilities are to be used.
24 IF(MSTJ(15).EQ.1) THEN
25 KTAB1=-1
26 IF(KF1A.GE.1.AND.KF1A.LE.6) KTAB1=KF1A
27 KFL1A=MOD(KF1A/1000,10)
28 KFL1B=MOD(KF1A/100,10)
29 KFL1S=MOD(KF1A,10)
30 IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1B.GE.1.AND.KFL1B.LE.4)
31 & KTAB1=6+KFL1A*(KFL1A-2)+2*KFL1B+(KFL1S-1)/2
32 IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1A.EQ.KFL1B) KTAB1=KTAB1-1
33 IF(KF1A.GE.1.AND.KF1A.LE.6) KFL1A=KF1A
34 KTAB2=0
35 IF(KF2A.NE.0) THEN
36 KTAB2=-1
37 IF(KF2A.GE.1.AND.KF2A.LE.6) KTAB2=KF2A
38 KFL2A=MOD(KF2A/1000,10)
39 KFL2B=MOD(KF2A/100,10)
40 KFL2S=MOD(KF2A,10)
41 IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2B.GE.1.AND.KFL2B.LE.4)
42 & KTAB2=6+KFL2A*(KFL2A-2)+2*KFL2B+(KFL2S-1)/2
43 IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2A.EQ.KFL2B) KTAB2=KTAB2-1
44 ENDIF
45 IF(KTAB1.GE.0.AND.KTAB2.GE.0) GOTO 140
46 ENDIF
47
48C...Parameters and breaking diquark parameter combinations.
49 100 PAR2=PARJ(2)
50 PAR3=PARJ(3)
51 PAR4=3.*PARJ(4)
52 IF(MSTJ(12).GE.2) THEN
53 PAR3M=SQRT(PARJ(3))
54 PAR4M=1./(3.*SQRT(PARJ(4)))
55 PARDM=PARJ(7)/(PARJ(7)+PAR3M*PARJ(6))
56 PARS0=PARJ(5)*(2.+(1.+PAR2*PAR3M*PARJ(7))*(1.+PAR4M))
57 PARS1=PARJ(7)*PARS0/(2.*PAR3M)+PARJ(5)*(PARJ(6)*(1.+PAR4M)+
58 & PAR2*PAR3M*PARJ(6)*PARJ(7))
59 PARS2=PARJ(5)*2.*PARJ(6)*PARJ(7)*(PAR2*PARJ(7)+(1.+PAR4M)/PAR3M)
60 PARSM=MAX(PARS0,PARS1,PARS2)
61 PAR4=PAR4*(1.+PARSM)/(1.+PARSM/(3.*PAR4M))
62 ENDIF
63
64C...Choice of whether to generate meson or baryon.
65 MBARY=0
66 KFDA=0
67 IF(KF1A.LE.10) THEN
68 IF(KF2A.EQ.0.AND.MSTJ(12).GE.1.AND.(1.+PARJ(1))*RLU_HIJING(0)
69 $ .GT.1.)MBARY=1
70 IF(KF2A.GT.10) MBARY=2
71 IF(KF2A.GT.10.AND.KF2A.LE.10000) KFDA=KF2A
72 ELSE
73 MBARY=2
74 IF(KF1A.LE.10000) KFDA=KF1A
75 ENDIF
76
77C...Possibility of process diquark -> meson + new diquark.
78 IF(KFDA.NE.0.AND.MSTJ(12).GE.2) THEN
79 KFLDA=MOD(KFDA/1000,10)
80 KFLDB=MOD(KFDA/100,10)
81 KFLDS=MOD(KFDA,10)
82 WTDQ=PARS0
83 IF(MAX(KFLDA,KFLDB).EQ.3) WTDQ=PARS1
84 IF(MIN(KFLDA,KFLDB).EQ.3) WTDQ=PARS2
85 IF(KFLDS.EQ.1) WTDQ=WTDQ/(3.*PAR4M)
86 IF((1.+WTDQ)*RLU_HIJING(0).GT.1.) MBARY=-1
87 IF(MBARY.EQ.-1.AND.KF2A.NE.0) RETURN
88 ENDIF
89
90C...Flavour for meson, possibly with new flavour.
91 IF(MBARY.LE.0) THEN
92 KFS=ISIGN(1,KFL1)
93 IF(MBARY.EQ.0) THEN
94 IF(KF2A.EQ.0) KFL3=ISIGN(1+INT((2.+PAR2)*RLU_HIJING(0)),-KFL1)
95 KFLA=MAX(KF1A,KF2A+IABS(KFL3))
96 KFLB=MIN(KF1A,KF2A+IABS(KFL3))
97 IF(KFLA.NE.KF1A) KFS=-KFS
98
99C...Splitting of diquark into meson plus new diquark.
100 ELSE
101 KFL1A=MOD(KF1A/1000,10)
102 KFL1B=MOD(KF1A/100,10)
103 110 KFL1D=KFL1A+INT(RLU_HIJING(0)+0.5)*(KFL1B-KFL1A)
104 KFL1E=KFL1A+KFL1B-KFL1D
105 IF((KFL1D.EQ.3.AND.RLU_HIJING(0).GT.PARDM).OR.(KFL1E.EQ.3.AND.
106 & RLU_HIJING(0).LT.PARDM)) THEN
107 KFL1D=KFL1A+KFL1B-KFL1D
108 KFL1E=KFL1A+KFL1B-KFL1E
109 ENDIF
110 KFL3A=1+INT((2.+PAR2*PAR3M*PARJ(7))*RLU_HIJING(0))
111 IF((KFL1E.NE.KFL3A.AND.RLU_HIJING(0).GT.(1.+PAR4M)/MAX(2.,1.
112 $ +PAR4M)).OR.(KFL1E.EQ.KFL3A.AND.RLU_HIJING(0).GT.2./MAX(2
113 $ .,1.+PAR4M)))GOTO 110
114 KFLDS=3
115 IF(KFL1E.NE.KFL3A) KFLDS=2*INT(RLU_HIJING(0)+1./(1.+PAR4M))+1
116 KFL3=ISIGN(10000+1000*MAX(KFL1E,KFL3A)+100*MIN(KFL1E,KFL3A)+
117 & KFLDS,-KFL1)
118 KFLA=MAX(KFL1D,KFL3A)
119 KFLB=MIN(KFL1D,KFL3A)
120 IF(KFLA.NE.KFL1D) KFS=-KFS
121 ENDIF
122
123C...Form meson, with spin and flavour mixing for diagonal states.
124 IF(KFLA.LE.2) KMUL=INT(PARJ(11)+RLU_HIJING(0))
125 IF(KFLA.EQ.3) KMUL=INT(PARJ(12)+RLU_HIJING(0))
126 IF(KFLA.GE.4) KMUL=INT(PARJ(13)+RLU_HIJING(0))
127 IF(KMUL.EQ.0.AND.PARJ(14).GT.0.) THEN
128 IF(RLU_HIJING(0).LT.PARJ(14)) KMUL=2
129 ELSEIF(KMUL.EQ.1.AND.PARJ(15)+PARJ(16)+PARJ(17).GT.0.) THEN
130 RMUL=RLU_HIJING(0)
131 IF(RMUL.LT.PARJ(15)) KMUL=3
132 IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)) KMUL=4
133 IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)+PARJ(17)) KMUL=5
134 ENDIF
135 KFLS=3
136 IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
137 IF(KMUL.EQ.5) KFLS=5
138 IF(KFLA.NE.KFLB) THEN
139 KF=(100*KFLA+10*KFLB+KFLS)*KFS*(-1)**KFLA
140 ELSE
141 RMIX=RLU_HIJING(0)
142 IMIX=2*KFLA+10*KMUL
143 IF(KFLA.LE.3) KF=110*(1+INT(RMIX+PARF(IMIX-1))+
144 & INT(RMIX+PARF(IMIX)))+KFLS
145 IF(KFLA.GE.4) KF=110*KFLA+KFLS
146 ENDIF
147 IF(KMUL.EQ.2.OR.KMUL.EQ.3) KF=KF+ISIGN(10000,KF)
148 IF(KMUL.EQ.4) KF=KF+ISIGN(20000,KF)
149
150C...Generate diquark flavour.
151 ELSE
152 120 IF(KF1A.LE.10.AND.KF2A.EQ.0) THEN
153 KFLA=KF1A
154 130 KFLB=1+INT((2.+PAR2*PAR3)*RLU_HIJING(0))
155 KFLC=1+INT((2.+PAR2*PAR3)*RLU_HIJING(0))
156 KFLDS=1
157 IF(KFLB.GE.KFLC) KFLDS=3
158 IF(KFLDS.EQ.1.AND.PAR4*RLU_HIJING(0).GT.1.) GOTO 130
159 IF(KFLDS.EQ.3.AND.PAR4.LT.RLU_HIJING(0)) GOTO 130
160 KFL3=ISIGN(1000*MAX(KFLB,KFLC)+100*MIN(KFLB,KFLC)+KFLDS,KFL1)
161
162C...Take diquark flavour from input.
163 ELSEIF(KF1A.LE.10) THEN
164 KFLA=KF1A
165 KFLB=MOD(KF2A/1000,10)
166 KFLC=MOD(KF2A/100,10)
167 KFLDS=MOD(KF2A,10)
168
169C...Generate (or take from input) quark to go with diquark.
170 ELSE
171 IF(KF2A.EQ.0) KFL3=ISIGN(1+INT((2.+PAR2)*RLU_HIJING(0)),KFL1)
172 KFLA=KF2A+IABS(KFL3)
173 KFLB=MOD(KF1A/1000,10)
174 KFLC=MOD(KF1A/100,10)
175 KFLDS=MOD(KF1A,10)
176 ENDIF
177
178C...SU(6) factors for formation of baryon. Try again if fails.
179 KBARY=KFLDS
180 IF(KFLDS.EQ.3.AND.KFLB.NE.KFLC) KBARY=5
181 IF(KFLA.NE.KFLB.AND.KFLA.NE.KFLC) KBARY=KBARY+1
182 WT=PARF(60+KBARY)+PARJ(18)*PARF(70+KBARY)
183 IF(MBARY.EQ.1.AND.MSTJ(12).GE.2) THEN
184 WTDQ=PARS0
185 IF(MAX(KFLB,KFLC).EQ.3) WTDQ=PARS1
186 IF(MIN(KFLB,KFLC).EQ.3) WTDQ=PARS2
187 IF(KFLDS.EQ.1) WTDQ=WTDQ/(3.*PAR4M)
188 IF(KFLDS.EQ.1) WT=WT*(1.+WTDQ)/(1.+PARSM/(3.*PAR4M))
189 IF(KFLDS.EQ.3) WT=WT*(1.+WTDQ)/(1.+PARSM)
190 ENDIF
191 IF(KF2A.EQ.0.AND.WT.LT.RLU_HIJING(0)) GOTO 120
192
193C...Form baryon. Distinguish Lambda- and Sigmalike baryons.
194 KFLD=MAX(KFLA,KFLB,KFLC)
195 KFLF=MIN(KFLA,KFLB,KFLC)
196 KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
197 KFLS=2
198 IF((PARF(60+KBARY)+PARJ(18)*PARF(70+KBARY))*RLU_HIJING(0).GT.
199 & PARF(60+KBARY)) KFLS=4
200 KFLL=0
201 IF(KFLS.EQ.2.AND.KFLD.GT.KFLE.AND.KFLE.GT.KFLF) THEN
202 IF(KFLDS.EQ.1.AND.KFLA.EQ.KFLD) KFLL=1
203 IF(KFLDS.EQ.1.AND.KFLA.NE.KFLD) KFLL=INT(0.25+RLU_HIJING(0))
204 IF(KFLDS.EQ.3.AND.KFLA.NE.KFLD) KFLL=INT(0.75+RLU_HIJING(0))
205 ENDIF
206 IF(KFLL.EQ.0) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+KFLS,KFL1)
207 IF(KFLL.EQ.1) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+KFLS,KFL1)
208 ENDIF
209 RETURN
210
211C...Use tabulated probabilities to select new flavour and hadron.
212 140 IF(KTAB2.EQ.0.AND.MSTJ(12).LE.0) THEN
213 KT3L=1
214 KT3U=6
215 ELSEIF(KTAB2.EQ.0.AND.KTAB1.GE.7.AND.MSTJ(12).LE.1) THEN
216 KT3L=1
217 KT3U=6
218 ELSEIF(KTAB2.EQ.0) THEN
219 KT3L=1
220 KT3U=22
221 ELSE
222 KT3L=KTAB2
223 KT3U=KTAB2
224 ENDIF
225 RFL=0.
226 DO 150 KTS=0,2
227 DO 150 KT3=KT3L,KT3U
228 RFL=RFL+PARF(120+80*KTAB1+25*KTS+KT3)
229 150 CONTINUE
230 RFL=RLU_HIJING(0)*RFL
231 DO 160 KTS=0,2
232 KTABS=KTS
233 DO 160 KT3=KT3L,KT3U
234 KTAB3=KT3
235 RFL=RFL-PARF(120+80*KTAB1+25*KTS+KT3)
236 160 IF(RFL.LE.0.) GOTO 170
237 170 CONTINUE
238
239C...Reconstruct flavour of produced quark/diquark.
240 IF(KTAB3.LE.6) THEN
241 KFL3A=KTAB3
242 KFL3B=0
243 KFL3=ISIGN(KFL3A,KFL1*(2*KTAB1-13))
244 ELSE
245 KFL3A=1
246 IF(KTAB3.GE.8) KFL3A=2
247 IF(KTAB3.GE.11) KFL3A=3
248 IF(KTAB3.GE.16) KFL3A=4
249 KFL3B=(KTAB3-6-KFL3A*(KFL3A-2))/2
250 KFL3=1000*KFL3A+100*KFL3B+1
251 IF(KFL3A.EQ.KFL3B.OR.KTAB3.NE.6+KFL3A*(KFL3A-2)+2*KFL3B) KFL3=
252 & KFL3+2
253 KFL3=ISIGN(KFL3,KFL1*(13-2*KTAB1))
254 ENDIF
255
256C...Reconstruct meson code.
257 IF(KFL3A.EQ.KFL1A.AND.KFL3B.EQ.KFL1B.AND.(KFL3A.LE.3.OR.
258 &KFL3B.NE.0)) THEN
259 RFL=RLU_HIJING(0)*(PARF(143+80*KTAB1+25*KTABS)+PARF(144+80
260 $ *KTAB1+25*KTABS)+PARF(145+80*KTAB1+25*KTABS))
261 KF=110+2*KTABS+1
262 IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)) KF=220+2*KTABS+1
263 IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+
264 & 25*KTABS)) KF=330+2*KTABS+1
265 ELSEIF(KTAB1.LE.6.AND.KTAB3.LE.6) THEN
266 KFLA=MAX(KTAB1,KTAB3)
267 KFLB=MIN(KTAB1,KTAB3)
268 KFS=ISIGN(1,KFL1)
269 IF(KFLA.NE.KF1A) KFS=-KFS
270 KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
271 ELSEIF(KTAB1.GE.7.AND.KTAB3.GE.7) THEN
272 KFS=ISIGN(1,KFL1)
273 IF(KFL1A.EQ.KFL3A) THEN
274 KFLA=MAX(KFL1B,KFL3B)
275 KFLB=MIN(KFL1B,KFL3B)
276 IF(KFLA.NE.KFL1B) KFS=-KFS
277 ELSEIF(KFL1A.EQ.KFL3B) THEN
278 KFLA=KFL3A
279 KFLB=KFL1B
280 KFS=-KFS
281 ELSEIF(KFL1B.EQ.KFL3A) THEN
282 KFLA=KFL1A
283 KFLB=KFL3B
284 ELSEIF(KFL1B.EQ.KFL3B) THEN
285 KFLA=MAX(KFL1A,KFL3A)
286 KFLB=MIN(KFL1A,KFL3A)
287 IF(KFLA.NE.KFL1A) KFS=-KFS
288 ELSE
289 CALL LUERRM_HIJING(2
290 $ ,'(LUKFDI_HIJING:) no matching flavours for qq -> qq')
291 GOTO 100
292 ENDIF
293 KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
294
295C...Reconstruct baryon code.
296 ELSE
297 IF(KTAB1.GE.7) THEN
298 KFLA=KFL3A
299 KFLB=KFL1A
300 KFLC=KFL1B
301 ELSE
302 KFLA=KFL1A
303 KFLB=KFL3A
304 KFLC=KFL3B
305 ENDIF
306 KFLD=MAX(KFLA,KFLB,KFLC)
307 KFLF=MIN(KFLA,KFLB,KFLC)
308 KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
309 IF(KTABS.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+2,KFL1)
310 IF(KTABS.GE.1) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+2*KTABS,KFL1)
311 ENDIF
312
313C...Check that constructed flavour code is an allowed one.
314 IF(KFL2.NE.0) KFL3=0
315 KC=LUCOMP_HIJING(KF)
316 IF(KC.EQ.0) THEN
317 CALL LUERRM_HIJING(2
318 $ ,'(LUKFDI_HIJING:) user-defined flavour probabilities'
319 $ //'failed')
320 GOTO 100
321 ENDIF
322
323 RETURN
324 END