]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/code/qcdz.F
Bug in V0A fixed (Guillermo)
[u/mrichter/AliRoot.git] / ISAJET / code / qcdz.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 SUBROUTINE QCDZ(J)
3C
4C Auxiliary routine for QCDJET. Generate Z for parton J and
5C store in ZZC(J). Add possible new partons to /JETSET/.
6C
7C Include GM, W+, W-, and Z0 radiation.
8C
9C Ver 7.20: Anomalous dimensions were coded incorrectly!
10C
11#if defined(CERNLIB_IMPNONE)
12 IMPLICIT NONE
13#endif
14#include "isajet/itapes.inc"
15#include "isajet/jetset.inc"
16#include "isajet/jwork.inc"
17#include "isajet/qcdpar.inc"
18#include "isajet/wcon.inc"
19#include "isajet/const.inc"
20#include "isajet/q1q2.inc"
21C
22 REAL PQQ,PGQ,PQG,PGG,Z,PGSGS,PQSQS,ALFAS,QQ,AM0,ZC,AMASS
23 REAL GAMQQ,GAMGG,PROBG,PROBQ,RND,RANF,ZGEN,GZ
24 REAL GAMZC,GAMSUM,AM1W,AM2W,T1W,T2W,ZCW,T0,GAMZCW,TERM,SUM
25 REAL SUMBR,BRMODE,TRY,HELPL,HELMN,HEL,PZ
26 INTEGER NF,J,JTABS,IQ,IFL,IW,JT0,JT1,IFL1,IFL2
27 INTEGER IWTYPE,JET,JW,IQ1,IQ2,JPAR,IFLPAR,NJ1,NJ2,IDABS1,IDABS2
28 REAL GAMSAV(5),ZCSAV(5),BRANCH(25)
29 INTEGER JSAV(5),LISTW(5),LISTJ(25)
30 DATA LISTW/9,10,80,-80,90/
31 DATA LISTJ/9,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,
32 $11,-11,12,-12,13,-13,14,-14,15,-15,16,-16/
33C
34C Altarelli-Parisi functions.
35 PQQ(Z)=4*(1+Z**2)/(3*(1-Z))
36 PGQ(Z)=.5*(Z**2+(1-Z)**2)
37 PGG(Z)=6*(1-Z*(1-Z))**2/(Z*(1-Z))
38 PGSGS(Z)=3.*(1.+Z**2)/(1.-Z)
39 PQSQS(Z)=8./3.*Z/(1.-Z)
40 ALFAS(QQ)=12.*PI/((33.-2.*NF)*ALOG(QQ/ALAM2))
41C
42C Initialize.
43C
44 AM0=PJSET(5,J)
45 ZC=ZZC(J)
46 JTABS=IABS(JTYPE(J))
47 NF=3
48 DO 110 IQ=4,6
49 IF(AM0.LT.2*AMASS(IQ)) GO TO 120
50 NF=NF+1
51110 CONTINUE
52120 CONTINUE
53 NJ1=NJSET+1
54 NJ2=NJSET+2
55C
56C Initial gluon
57C
58 IF (JTABS.EQ.9) THEN
59 GAMQQ=(1-2*ZC)*(1-ZC*(1-ZC))/3.
60 GAMGG=12*ALOG((1-ZC)/ZC)-9*(1-2*ZC)-6*GAMQQ
61 PROBG=GAMGG/(GAMGG+2*NF*GAMQQ)
62 PROBQ=GAMQQ/(GAMGG+2*NF*GAMQQ)
63 RND=RANF()
64C GL--->GL+GL
65 IF(PROBG.GT.RND) THEN
66130 ZGEN=(ZC/(1-ZC))**(1-2*RANF())
67 Z=ZGEN/(1.+ZGEN)
68 GZ=6./(Z*(1.-Z))
69 IF(PGG(Z).LT.GZ*RANF()) GO TO 130
70 JTYPE(NJ1)=9
71 JTYPE(NJ2)=9
72 ZZC(J)=Z
73C GL--->QK+QB
74 ELSE
75140 Z=RANF()
76 IF(PGQ(Z).LT.0.5*RANF()) GO TO 140
77 IFL=(RND-PROBG)/PROBQ+1.
78 IF(IFL.GT.NF) IFL=NF-IFL
79 JTYPE(NJ1)=IFL
80 JTYPE(NJ2)=-IFL
81 ZZC(J)=Z
82 ENDIF
83C
84C Initial quark - may radiate GL, GM, W+-, Z0
85C
86 ELSEIF(JTABS.LT.9) THEN
87C Gluon
88 GAMZC=2.*ALOG((1-ZC)/ZC)-1.5*(1.-2.*ZC)
89 GAMSAV(1)=4./3.*ALFAS(AM0**2)*GAMZC
90 ZCSAV(1)=ZC
91 JSAV(1)=JTYPE(J)
92C Photon
93 GAMSAV(2)=ALFA*AQ(JTABS,1)**2*GAMZC
94 ZCSAV(2)=ZC
95 GAMSUM=GAMSAV(1)+GAMSAV(2)
96 JSAV(2)=JTYPE(J)
97C W+- and Z0
98 IF(AM0.GT.WMASS(4)) THEN
99 DO 200 IW=2,4
100 GAMSAV(IW+1)=0.
101 ZCSAV(IW+1)=.5
102 JSAV(IW+1)=0
103 JT0=2*IABS(JTYPE(J))
104 IF(JTYPE(J).LT.0) JT0=JT0+1
105 JT1=MATCH(JT0,IW)
106 IF(JT1.EQ.0) GO TO 200
107 JT1=MATCH(JT1,4)
108 IFL1=JT1/2
109 AM1W=AMASS(IFL1)
110 AM2W=AMASS(LISTW(IW+1))
111 IF(AM1W+AM2W.GE.AM0) GO TO 200
112 T0=AM0**2
113 T1W=AM1W**2
114 T2W=AM2W**2
115 ZCW=(T0-T1W+T2W-SQRT((T0-T1W-T2W)**2-4*T1W*T2W))/(2*T0)
116 GAMZCW=2.*ALOG((1-ZCW)/ZCW)-2.*(1.-2.*ZCW)
117 TERM=(AQ(JTABS,IW)**2+BQ(JTABS,IW)**2)*ALFA*GAMZCW
118 GAMSAV(IW+1)=TERM
119 ZCSAV(IW+1)=ZCW
120 JSAV(IW+1)=IFL1*ISIGN(1,JTYPE(J))
121 GAMSUM=GAMSUM+TERM
122200 CONTINUE
123 ELSE
124 DO 210 IW=2,4
125 GAMSAV(IW+1)=0.
126 ZCSAV(IW+1)=.5
127 JSAV(IW+1)=0
128210 CONTINUE
129 ENDIF
130C Select decay mode
131 RND=RANF()
132 SUM=0.
133 DO 220 IW=1,5
134 IWTYPE=IW
135 SUM=SUM+GAMSAV(IW)/GAMSUM
136 IF(RND.LT.SUM) GO TO 230
137220 CONTINUE
138C Generate Z
139230 CONTINUE
140 Z=1-(ZC/(1-ZC))**RANF()*(1-ZC)
141 GZ=8./(3.*(1-Z))
142 IF(PQQ(Z).LT.GZ*RANF()) GO TO 230
143 IF(Z.LT.ZCSAV(IWTYPE).OR.Z.GT.1.-ZCSAV(IWTYPE)) GO TO 230
144 JTYPE(NJ1)=JSAV(IWTYPE)
145 JTYPE(NJ2)=LISTW(IWTYPE)
146 ZZC(J)=Z
147C
148C Initial diquark
149C
150 ELSEIF(MOD(JTABS,100).EQ.0) THEN
151300 CONTINUE
152 Z=1-(ZC/(1-ZC))**RANF()*(1-ZC)
153 GZ=8./(3.*(1-Z))
154 IF(PQQ(Z).LT.GZ*RANF()) GO TO 300
155 JTYPE(NJ1)=JTYPE(J)
156 JTYPE(NJ2)=9
157 ZZC(J)=Z
158C
159C Initial gluino
160C
161 ELSEIF (JTABS.EQ.29) THEN
162400 Z=1.-(ZC/(1.-ZC))**RANF()*(1.-ZC)
163 GZ=6./(1.-Z)
164 IF(PGSGS(Z) .LT. GZ*RANF()) GOTO 400
165 JTYPE(NJ1)=JTYPE(J)
166 JTYPE(NJ2)=9
167 ZZC(J)=Z
168C
169C Initial squark
170C
171 ELSEIF(JTABS.GT.20.AND.JTABS.LT.29) THEN
172500 CONTINUE
173 Z=1-(ZC/(1-ZC))**RANF()*(1-ZC)
174 GZ=8./(3.*(1-Z))
175 IF(PQSQS(Z).LT.GZ*RANF()) GO TO 500
176 JTYPE(NJ1)=JTYPE(J)
177 JTYPE(NJ2)=9
178 ZZC(J)=Z
179C
180C Initial W+, W-, or Z0
181C
182 ELSEIF(JTABS.EQ.80.OR.JTABS.EQ.90) THEN
183C Select decay mode
184 IF(JTYPE(J).EQ.+80) JW=2
185 IF(JTYPE(J).EQ.-80) JW=3
186 IF(JTYPE(J).EQ.+90) JW=4
187 TRY=RANF()
188 DO 610 IQ=2,25
189 IF(TRY.LT.CUMWBR(IQ,JW-1)) THEN
190 IQ1=IQ
191 IQ2=MATCH(IQ,JW)
192 GO TO 620
193 ENDIF
194610 CONTINUE
195620 JTYPE(NJ1)=LISTJ(IQ1)
196 JTYPE(NJ2)=LISTJ(IQ2)
197C Select W helicity
198 JPAR=MOD(JORIG(J),JPACK)
199 IFLPAR=IABS(JTYPE(JPAR))
200 HELPL=(AQ(IFLPAR,JW)-BQ(IFLPAR,JW))**2
201 HELMN=(AQ(IFLPAR,JW)+BQ(IFLPAR,JW))**2
202 IF(RANF()*(HELPL+HELMN).LT.HELMN) THEN
203 HEL=-ISIGN(1,JTYPE(NJ1))
204 ELSE
205 HEL=+ISIGN(1,JTYPE(NJ1))
206 ENDIF
207630 Z=RANF()
208 PZ=(1.+HEL*(2.*Z-1.))**2
209 IF(PZ.LT.4.*RANF()) GO TO 630
210 ZZC(J)=Z
211 ENDIF
212C
213C Set masses and flags.
214C
215 JET=IABS(JORIG(J))/JPACK
216 JORIG(NJ1)=JPACK*JET+J
217 JORIG(NJ2)=JPACK*JET+J
218 IDABS1=IABS(JTYPE(NJ1))
219 IDABS2=IABS(JTYPE(NJ2))
220 JMATCH(NJ1)=NJ2
221 JMATCH(NJ2)=NJ1
222C JDCAY=-1 implies further decay
223 IF(IDABS1.LE.9.OR.(IDABS1.GT.20.AND.IDABS1.LT.30.).OR.
224 $MOD(IDABS1,100).EQ.0) THEN
225 PJSET(5,NJ1)=Z*AM0
226 JDCAY(NJ1)=-1
227 ELSEIF(IDABS1.GE.80.OR.IDABS1.LE.90) THEN
228 PJSET(5,NJ1)=AMASS(IDABS1)
229 JDCAY(NJ1)=-1
230 ELSE
231 PJSET(5,NJ1)=AMASS(IDABS1)
232 JDCAY(NJ1)=0
233 ENDIF
234 IF(IDABS2.LE.9.OR.(IDABS2.GT.20.AND.IDABS2.LT.30.).OR.
235 $MOD(IDABS2,100).EQ.0) THEN
236 PJSET(5,NJ2)=(1.-Z)*AM0
237 JDCAY(NJ2)=-1
238 ELSEIF(IDABS2.EQ.80.OR.IDABS2.EQ.90) THEN
239 PJSET(5,NJ2)=AMASS(IDABS2)
240 JDCAY(NJ2)=-1
241 ELSE
242 PJSET(5,NJ2)=AMASS(IDABS2)
243 JDCAY(NJ2)=0
244 ENDIF
245 RETURN
246 END