1 #include "isajet/pilot.h"
2 SUBROUTINE QCDJET(NJMIN)
4 C Carry out final state QCD jet evolution using the algorithm
5 C of Fox and Wolfram. Evolve each parton in T with fixed ZC
6 C and iterate as follows--
8 C (0) Evolve initial partons.
9 C (1) Pick I and find matching J>I.
10 C (2) Solve kinematics.
11 C (3) For K=I,J, generate Z(K) and evolve T(K1), T(K2). If no
12 C good, evolve T(K). Otherwise, add K1 and K2 to /JETSET/.
13 C (4) If I or J no good, then (2).
16 C Use Z=(E+P)/(E0+P0) and a large TCUT.
17 C JMATCH(J1)=J2 if J1 and J2 match.
18 C JMATCH(J)=JPACK*J1+J2 if J1,...,J2 match. Used for multiple
20 C JMATCH(J)=0 for initial jet partons
22 C Include W+- and Z0 radiation.
24 #if defined(CERNLIB_IMPNONE)
27 #include "isajet/itapes.inc"
28 #include "isajet/partcl.inc"
29 #include "isajet/qcdpar.inc"
30 #include "isajet/jetset.inc"
31 #include "isajet/jwork.inc"
32 #include "isajet/const.inc"
34 INTEGER J,NJMIN,JPRNT,JI1,JI2,NJI,JI,NJ1,NJ2,L,K,NPTLV1,IFAIL,J0
35 REAL AM0,AM1,AM2,RANF,AMSUM,PCM2,POLD2,RATIO,PSUM,P12CM,E0,P0,Z1,
36 $E1MAX,P1MAX,ZMAX,E1MIN,P1MIN,ZMIN,ZEP,E1,P1,CTHCMZ,Z2,E2MAX,P2MAX,
37 $E2MIN,P2MIN,P2,E2,CTHCM,STHCM,PHICM,CPHICM,SPHICM,PT0,CTH0,STH0,
38 $CPHI0,SPHI0,SGN,BP,ZLIM,ZLIM1
42 C (0) Evolve initial parton masses.
47 IF(J2.GT.JPACK) GO TO 150
48 IF(J2.LE.J1) GO TO 100
50 IF(JDCAY(J1).EQ.-1) CALL QCDT(J1)
51 IF(JDCAY(J2).EQ.-1) CALL QCDT(J2)
52 JPRNT=MOD(JORIG(J),JPACK)
54 AM0=PJSET(4,J1)+PJSET(4,J2)
60 IF(AM0.LE.AM1+AM2) THEN
62 IF(RANF().GT..5) J3=J2
63 IF(JDCAY(J3).EQ.-1) CALL QCDT(J3)
67 C More than two partons
68 150 JI1=JMATCH(J)/JPACK
69 IF(J.NE.JI1) GO TO 100
70 JI2=JMATCH(J)-JPACK*JI1
75 IF(JDCAY(JI).EQ.-1) CALL QCDT(JI)
77 AMSUM=AMSUM+PJSET(5,JI)
79 170 IF(AM0.LT.AMSUM) THEN
81 AMSUM=AMSUM-PJSET(5,J3)
82 IF(JDCAY(J3).EQ.-1) CALL QCDT(J3)
83 AMSUM=AMSUM+PJSET(5,J3)
88 C (1) Loop over active partons
96 IF(J2.LE.J1) GO TO 200
98 C (2) Solve kinematics.
100 C Initial partons--keep directions fixed.
101 210 IF(MOD(JORIG(J),JPACK).NE.0) GO TO 230
102 IF(JMATCH(J).GT.JPACK) GO TO 400
103 AM0=PJSET(4,J1)+PJSET(4,J2)
106 PJSET(4,J1)=(AM0**2+AM1**2-AM2**2)/(2*AM0)
107 PJSET(4,J2)=(AM0**2+AM2**2-AM1**2)/(2*AM0)
108 PCM2=((AM0**2-AM1**2-AM2**2)**2-(2*AM1*AM2)**2)/(4*AM0**2)
110 POLD2=PJSET(1,JJ(L))**2+PJSET(2,JJ(L))**2+PJSET(3,JJ(L))**2
111 RATIO=SQRT(PCM2/POLD2)
113 225 PJSET(K,JJ(L))=RATIO*PJSET(K,JJ(L))
117 C NJI.LE.5 initial partons
120 IF(J.NE.JI1) GO TO 200
121 JI2=JMATCH(J)-JPACK*JI1
127 PJSET(4,JI)=SQRT(PJSET(1,JI)**2+PJSET(2,JI)**2+PJSET(3,JI)**2
130 420 PPTCL(K,NPTCL+JI-JI1+1)=PJSET(K,JI)
135 CALL RESCAL(NPTLV1+1,NPTLV1+NJI,PSUM,IFAIL)
138 PJSET(K,JI)=PPTCL(K,NPTCL+JI-JI1+1)
142 C Solve kinematics for general partons.
144 230 J0=MOD(JORIG(J),JPACK)
148 E1CM=(AM0**2+AM1**2-AM2**2)/(2*AM0)
149 E2CM=(AM0**2+AM2**2-AM1**2)/(2*AM0)
150 P12CM=SQRT((AM0**2-AM1**2-AM2**2)**2-(2*AM1*AM2)**2)/(2*AM0)
152 C Determine E1, P1, and COS(THCM) from Z(J0).
153 C Occasionally COS(TH)>1. If so then reset Z.
155 P0=SQRT(PJSET(1,J0)**2+PJSET(2,J0)**2+PJSET(3,J0)**2)
158 E1MAX=(E0*E1CM+P0*P12CM)/AM0
159 P1MAX=(P0*E1CM+E0*P12CM)/AM0
160 ZMAX=(E1MAX+P1MAX)/(E0+P0)
161 E1MIN=(E0*E1CM-P0*P12CM)/AM0
162 P1MIN=(P0*E1CM-E0*P12CM)/AM0
164 ZMIN=(E1MIN+P1MIN)/(E0+P0)
165 IF(Z1.LT.ZMIN.OR.Z1.GT.ZMAX) Z1=ZMIN+Z1*(ZMAX-ZMIN)
168 P1=(ZEP**2-AM1**2)/(2.*ZEP)
169 E1=(ZEP**2+AM1**2)/(2.*ZEP)
170 CTHCM=(E1*AM0-E0*E1CM)/(P0*P12CM)
173 E2MAX=(E0*E2CM+P0*P12CM)/AM0
174 P2MAX=(P0*E2CM+E0*P12CM)/AM0
175 ZMAX=(E2MAX+P2MAX)/(E0+P0)
176 E2MIN=(E0*E2CM-P0*P12CM)/AM0
177 P2MIN=(P0*E2CM-E0*P12CM)/AM0
179 ZMIN=(E2MIN+P2MIN)/(E0+P0)
180 IF(Z2.LT.ZMIN.OR.Z2.GT.ZMAX) Z2=ZMIN+Z2*(ZMAX-ZMIN)
183 P2=(ZEP**2-AM2**2)/(2.*ZEP)
184 E2=(ZEP**2+AM2**2)/(2.*ZEP)
185 CTHCM=-(E2*AM0-E0*E2CM)/(P0*P12CM)
188 IF(ABS(CTHCM).GT.1.) CTHCM=SIGN(RANF(),CTHCM)
189 STHCM=SQRT(1.-CTHCM**2)
194 C Construct cm momenta.
195 PT0=SQRT(PJSET(1,J0)**2+PJSET(2,J0)**2)
198 CPHI0=PJSET(1,J0)/PT0
199 SPHI0=PJSET(2,J0)/PT0
200 P1CM(1)=P12CM*(CPHI0*(CTH0*CPHICM*STHCM+STH0*CTHCM)
201 1 -SPHI0*SPHICM*STHCM)
202 P1CM(2)=P12CM*(SPHI0*(CTH0*CPHICM*STHCM+STH0*CTHCM)
203 1 +CPHI0*SPHICM*STHCM)
204 P1CM(3)=P12CM*(-STH0*CPHICM*STHCM+CTH0*CTHCM)
205 C Boost with P0 to get lab momenta
210 241 BP=BP+PJSET(K,J0)*SGN*P1CM(K)
212 PJSET(4,JJ(L))=PJSET(4,J0)*EE(L)/PJSET(5,J0)+BP
214 242 PJSET(K,JJ(L))=SGN*P1CM(K)+PJSET(K,J0)*EE(L)/PJSET(5,J0)
215 1 +PJSET(K,J0)*BP/(PJSET(4,J0)+PJSET(5,J0))
218 C (3) Pick Z and decay partons. Check.
223 IF(JDCAY(JJ(L)).GE.0) GO TO 310
224 IF(NJSET+2.GT.MXJSET) GO TO 9999
229 C Check whether masses allowed.
233 IF(AM1+AM2.GE.AM0) GO TO 320
235 C Check whether Z allowed.
236 E1CM=(AM0**2+AM1**2-AM2**2)/(2*AM0)
237 E2CM=(AM0**2+AM2**2-AM1**2)/(2.*AM0)
238 P12CM=SQRT((AM0**2-AM1**2-AM2**2)**2-(2*AM1*AM2)**2)/(2*AM0)
240 P0=SQRT(PJSET(1,JJ(L))**2+PJSET(2,JJ(L))**2+PJSET(3,JJ(L))**2)
241 IF(ZZC(JJ(L)).GT.0.5) THEN
242 ZEP=ZZC(JJ(L))*(E0+P0)
243 P1=(ZEP**2-AM1**2)/(2.*ZEP)
244 E1=(ZEP**2+AM1**2)/(2.*ZEP)
245 CTHCM=(E1*AM0-E0*E1CM)/(P0*P12CM)
246 IF((ABS(CTHCM).GE.1..OR.P1.LE.0.).AND.IABS(JTYPE(JJ(L)))
249 ZEP=(1.-ZZC(JJ(L)))*(E0+P0)
250 P2=(ZEP**2-AM2**2)/(2.*ZEP)
251 E2=(ZEP**2+AM2**2)/(2.*ZEP)
252 CTHCM=-(E2*AM0-E0*E2CM)/(P0*P12CM)
253 IF((ABS(CTHCM).GE.1..OR.P2.LE.0.).AND.IABS(JTYPE(JJ(L)))
257 C Require Z and 1-Z within kinematic limits.
259 ZLIM=(AM0/(E0+P0))**2
261 ZLIM=AMAX1(ZLIM,ZLIM1)
262 IF((ZZC(JJ(L)).GT.ZLIM.AND.ZZC(JJ(L)).LT.(1.-ZLIM)).OR.
263 $ IABS(JTYPE(JJ(L))).GE.80) THEN
264 C Add new partons to /JETSET/.
265 JDCAY(JJ(L))=JPACK*(NJSET+1)+(NJSET+2)
269 C Discard partons and evolve JJ(L) again.
274 C (4) Resolve kinematics if any parton mass is changed.
279 C (5) Iterate entire proceedure.
282 IF(NJ1.LE.NJSET) GO TO 1
288 WRITE(ITLIS,10) NJSET
289 10 FORMAT(//' ERROR IN QCDJET...NJSET > ',I4)