3 C*********************************************************************
5 SUBROUTINE PYMULT_HIJING(MMUL)
7 C...Initializes treatment of multiple interactions, selects kinematics
8 C...of hardest interaction if low-pT physics included in run, and
9 C...generates all non-hardest interactions.
10 #include "lujets_hijing.inc"
11 #include "ludat1_hijing.inc"
12 #include "ludat2_hijing.inc"
13 #include "pysubs_hijing.inc"
14 #include "pypars_hijing.inc"
15 #include "pyint1_hijing.inc"
16 #include "pyint2_hijing.inc"
17 #include "pyint3_hijing.inc"
18 #include "pyint5_hijing.inc"
19 DIMENSION NMUL(20),SIGM(20),KSTR(500,2)
20 SAVE XT2,XT2FAC,XC2,XTS,IRBIN,RBIN,NMUL,SIGM
22 C...Initialization of multiple interaction treatment.
24 IF(MSTP(122).GE.1) WRITE(MSTU(11),1000) MSTP(82)
32 C...Loop over phase space points: xT2 choice in 20 bins.
37 DO 110 ITRY=1,MSTP(83)
38 RSCA=0.05*((21-IXT2)-RLU_HIJING(0))
39 XT2=VINT(149)*(1.+VINT(149))/(VINT(149)+RSCA)-VINT(149)
40 XT2=MAX(0.01*VINT(149),XT2)
43 C...Choose tau and y*. Calculate cos(theta-hat).
44 IF(RLU_HIJING(0).LE.COEF(ISUB,1)) THEN
45 TAUP=(2.*(1.+SQRT(1.-XT2))/XT2-1.)**RLU_HIJING(0)
46 TAU=XT2*(1.+TAUP)**2/(4.*TAUP)
48 TAU=XT2*(1.+TAN(RLU_HIJING(0)*ATAN(SQRT(1./XT2-1.)))**2)
54 IF(RYST.GT.COEF(ISUB,7)) MYST=2
55 IF(RYST.GT.COEF(ISUB,7)+COEF(ISUB,8)) MYST=3
56 CALL PYKMAP_HIJING(2,MYST,RLU_HIJING(0))
57 VINT(23)=SQRT(MAX(0.,1.-XT2/TAU))*(-1)**INT(1.5+RLU_HIJING(0))
59 C...Calculate differential cross-section.
60 VINT(71)=0.5*VINT(1)*SQRT(XT2)
61 CALL PYSIGH_HIJING(NCHN,SIGS)
62 110 SIGM(IXT2)=SIGM(IXT2)+SIGS
63 120 SIGSUM=SIGSUM+SIGM(IXT2)
64 SIGSUM=SIGSUM/(20.*MSTP(83))
66 C...Reject result if sigma(parton-parton) is smaller than hadronic one.
67 IF(SIGSUM.LT.1.1*VINT(106)) THEN
68 IF(MSTP(122).GE.1) WRITE(MSTU(11),1100) PARP(82),SIGSUM
70 VINT(149)=4.*PARP(82)**2/VINT(2)
73 IF(MSTP(122).GE.1) WRITE(MSTU(11),1200) PARP(82), SIGSUM
75 C...Start iteration to find k factor.
87 XK=XI+(YKE-YI)*(XF-XI)/(YF-YI)
90 C...Evaluate overlap integrals.
91 IF(MSTP(82).EQ.2) THEN
92 SP=0.5*PARU(1)*(1.-EXP(-XK))
95 IF(MSTP(82).EQ.3) DELTAB=0.02
96 IF(MSTP(82).EQ.4) DELTAB=MIN(0.01,0.05*PARP(84))
101 IF(MSTP(82).EQ.3) THEN
102 OV=EXP(-B**2)/PARU(2)
105 OV=((1.-PARP(83))**2*EXP(-MIN(100.,B**2))+2.*PARP(83)*
106 & (1.-PARP(83))*2./(1.+CQ2)*EXP(-MIN(100.,B**2*2./(1.+CQ2)))+
107 & PARP(83)**2/CQ2*EXP(-MIN(100.,B**2/CQ2)))/PARU(2)
109 PACC=1.-EXP(-MIN(100.,PARU(1)*XK*OV))
110 SP=SP+PARU(2)*B*DELTAB*PACC
111 SOP=SOP+PARU(2)*B*DELTAB*OV*PACC
112 IF(B.LT.1..OR.B*PACC.GT.1E-6) GOTO 140
116 C...Continue iteration until convergence.
126 IF(ABS(YK-YKE).GE.1E-5*YKE) GOTO 130
128 C...Store some results for subsequent use.
133 C...Initialize iteration in xT2 for hardest interaction.
134 ELSEIF(MMUL.EQ.2) THEN
135 IF(MSTP(82).LE.0) THEN
136 ELSEIF(MSTP(82).EQ.1) THEN
138 XT2FAC=XSEC(96,1)/VINT(106)*VINT(149)/(1.-VINT(149))
139 ELSEIF(MSTP(82).EQ.2) THEN
141 XT2FAC=VINT(146)*XSEC(96,1)/VINT(106)*VINT(149)*(1.+VINT(149))
143 XC2=4.*CKIN(3)**2/VINT(2)
144 IF(CKIN(3).LE.CKIN(5).OR.MINT(82).GE.2) XC2=0.
147 ELSEIF(MMUL.EQ.3) THEN
148 C...Low-pT or multiple interactions (first semihard interaction):
149 C...choose xT2 according to dpT2/pT2**2*exp(-(sigma above pT2)/norm)
150 C...or (MSTP(82)>=2) dpT2/(pT2+pT0**2)**2*exp(-....).
152 IF(MSTP(82).LE.0) THEN
154 ELSEIF(MSTP(82).EQ.1) THEN
155 XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(RLU_HIJING(0)))
156 ELSEIF(MSTP(82).EQ.2) THEN
157 IF(XT2.LT.1..AND.EXP(-XT2FAC*XT2/(VINT(149)*(XT2+
158 & VINT(149)))).GT.RLU_HIJING(0)) XT2=1.
160 XT2=(1.+VINT(149))*XT2FAC/(XT2FAC-(1.+VINT(149))*LOG(1.-
161 & RLU_HIJING(0)*(1.-EXP(-XT2FAC/(VINT(149)*(1.+VINT(149)
164 XT2=-XT2FAC/LOG(EXP(-XT2FAC/(XT2+VINT(149)))+RLU_HIJING(0)*
165 & (EXP(-XT2FAC/VINT(149))-EXP(-XT2FAC/(XT2+VINT(149)))))-
168 XT2=MAX(0.01*VINT(149),XT2)
170 XT2=(XC2+VINT(149))*(1.+VINT(149))/(1.+VINT(149)-
171 & RLU_HIJING(0)*(1.-XC2))-VINT(149)
172 XT2=MAX(0.01*VINT(149),XT2)
176 C...Low-pT: choose xT2, tau, y* and cos(theta-hat) fixed.
177 IF(MSTP(82).LE.1.AND.XT2.LT.VINT(149)) THEN
178 IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)-1
179 IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)-1
182 VINT(21)=0.01*VINT(149)
185 VINT(25)=0.01*VINT(149)
188 C...Multiple interactions (first semihard interaction).
189 C...Choose tau and y*. Calculate cos(theta-hat).
190 IF(RLU_HIJING(0).LE.COEF(ISUB,1)) THEN
191 TAUP=(2.*(1.+SQRT(1.-XT2))/XT2-1.)**RLU_HIJING(0)
192 TAU=XT2*(1.+TAUP)**2/(4.*TAUP)
194 TAU=XT2*(1.+TAN(RLU_HIJING(0)*ATAN(SQRT(1./XT2-1.)))**2)
197 CALL PYKLIM_HIJING(2)
200 IF(RYST.GT.COEF(ISUB,7)) MYST=2
201 IF(RYST.GT.COEF(ISUB,7)+COEF(ISUB,8)) MYST=3
202 CALL PYKMAP_HIJING(2,MYST,RLU_HIJING(0))
203 VINT(23)=SQRT(MAX(0.,1.-XT2/TAU))*(-1)**INT(1.5+RLU_HIJING(0))
205 VINT(71)=0.5*VINT(1)*SQRT(VINT(25))
207 C...Store results of cross-section calculation.
208 ELSEIF(MMUL.EQ.4) THEN
211 IF(ISET(ISUB).EQ.1) XTS=VINT(21)
212 IF(ISET(ISUB).EQ.2) XTS=(4.*VINT(48)+2.*VINT(63)+2.*VINT(64))/
214 IF(ISET(ISUB).EQ.3.OR.ISET(ISUB).EQ.4) XTS=VINT(26)
215 RBIN=MAX(0.000001,MIN(0.999999,XTS*(1.+VINT(149))/
217 IRBIN=INT(1.+20.*RBIN)
218 IF(ISUB.EQ.96) NMUL(IRBIN)=NMUL(IRBIN)+1
219 IF(ISUB.EQ.96) SIGM(IRBIN)=SIGM(IRBIN)+VINT(153)
221 C...Choose impact parameter.
222 ELSEIF(MMUL.EQ.5) THEN
223 IF(MSTP(82).EQ.3) THEN
224 VINT(148)=RLU_HIJING(0)/(PARU(2)*VINT(147))
228 IF(RTYPE.LT.(1.-PARP(83))**2) THEN
229 B2=-LOG(RLU_HIJING(0))
230 ELSEIF(RTYPE.LT.1.-PARP(83)**2) THEN
231 B2=-0.5*(1.+CQ2)*LOG(RLU_HIJING(0))
233 B2=-CQ2*LOG(RLU_HIJING(0))
235 VINT(148)=((1.-PARP(83))**2*EXP(-MIN(100.,B2))+2.*PARP(83)*
236 & (1.-PARP(83))*2./(1.+CQ2)*EXP(-MIN(100.,B2*2./(1.+CQ2)))+
237 & PARP(83)**2/CQ2*EXP(-MIN(100.,B2/CQ2)))/(PARU(2)*VINT(147))
240 C...Multiple interactions (variable impact parameter) : reject with
241 C...probability exp(-overlap*cross-section above pT/normalization).
242 RNCOR=(IRBIN-20.*RBIN)*NMUL(IRBIN)
243 SIGCOR=(IRBIN-20.*RBIN)*SIGM(IRBIN)
244 DO 150 IBIN=IRBIN+1,20
245 RNCOR=RNCOR+NMUL(IBIN)
246 150 SIGCOR=SIGCOR+SIGM(IBIN)
247 SIGABV=(SIGCOR/RNCOR)*VINT(149)*(1.-XTS)/(XTS+VINT(149))
248 VINT(150)=EXP(-MIN(100.,VINT(146)*VINT(148)*SIGABV/VINT(106)))
250 C...Generate additional multiple semihard interactions.
251 ELSEIF(MMUL.EQ.6) THEN
253 C...Reconstruct strings in hard scattering.
256 IF(ISET(ISUB).EQ.1) NMAX=MINT(84)+2
258 DO 170 I=MINT(84)+1,NMAX
259 KCS=KCHG(LUCOMP_HIJING(K(I,2)),2)*ISIGN(1,K(I,2))
260 IF(KCS.EQ.0) GOTO 170
262 IF(KCS.EQ.1.AND.(J.EQ.2.OR.J.EQ.4)) GOTO 160
263 IF(KCS.EQ.-1.AND.(J.EQ.1.OR.J.EQ.3)) GOTO 160
265 IST=MOD(K(I,J+3)/MSTU(5),MSTU(5))
267 IST=MOD(K(I,J+1),MSTU(5))
269 IF(IST.LT.MINT(84).OR.IST.GT.I) GOTO 160
270 IF(KCHG(LUCOMP_HIJING(K(IST,2)),2).EQ.0) GOTO 160
272 IF(J.EQ.1.OR.J.EQ.4) THEN
282 C...Set up starting values for iteration in xT2.
284 IF(ISET(ISUB).EQ.1) XT2=VINT(21)
285 IF(ISET(ISUB).EQ.2) XT2=(4.*VINT(48)+2.*VINT(63)+2.*VINT(64))/
287 IF(ISET(ISUB).EQ.3.OR.ISET(ISUB).EQ.4) XT2=VINT(26)
290 IF(MSTP(82).LE.1) THEN
291 XT2FAC=XSEC(ISUB,1)*VINT(149)/((1.-VINT(149))*VINT(106))
293 XT2FAC=VINT(146)*VINT(148)*XSEC(ISUB,1)/VINT(106)*
294 & VINT(149)*(1.+VINT(149))
300 VINT(143)=1.-VINT(141)
301 VINT(144)=1.-VINT(142)
303 C...Iterate downwards in xT2.
304 180 IF(MSTP(82).LE.1) THEN
305 XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(RLU_HIJING(0)))
306 IF(XT2.LT.VINT(149)) GOTO 220
308 IF(XT2.LE.0.01*VINT(149)) GOTO 220
309 XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
310 & LOG(RLU_HIJING(0)))-VINT(149)
311 IF(XT2.LE.0.) GOTO 220
312 XT2=MAX(0.01*VINT(149),XT2)
316 C...Choose tau and y*. Calculate cos(theta-hat).
317 IF(RLU_HIJING(0).LE.COEF(ISUB,1)) THEN
318 TAUP=(2.*(1.+SQRT(1.-XT2))/XT2-1.)**RLU_HIJING(0)
319 TAU=XT2*(1.+TAUP)**2/(4.*TAUP)
321 TAU=XT2*(1.+TAN(RLU_HIJING(0)*ATAN(SQRT(1./XT2-1.)))**2)
324 CALL PYKLIM_HIJING(2)
327 IF(RYST.GT.COEF(ISUB,7)) MYST=2
328 IF(RYST.GT.COEF(ISUB,7)+COEF(ISUB,8)) MYST=3
329 CALL PYKMAP_HIJING(2,MYST,RLU_HIJING(0))
330 VINT(23)=SQRT(MAX(0.,1.-XT2/TAU))*(-1)**INT(1.5+RLU_HIJING(0))
332 C...Check that x not used up. Accept or reject kinematical variables.
333 X1M=SQRT(TAU)*EXP(VINT(22))
334 X2M=SQRT(TAU)*EXP(-VINT(22))
335 IF(VINT(143)-X1M.LT.0.01.OR.VINT(144)-X2M.LT.0.01) GOTO 180
336 VINT(71)=0.5*VINT(1)*SQRT(XT2)
337 CALL PYSIGH_HIJING(NCHN,SIGS)
338 IF(SIGS.LT.XSEC(ISUB,1)*RLU_HIJING(0)) GOTO 180
340 C...Reset K, P and V vectors. Select some variables.
347 PT=0.5*VINT(1)*SQRT(XT2)
348 PHI=PARU(2)*RLU_HIJING(0)
351 C...Add first parton to event record.
354 IF(RFLAV.GE.MAX(PARP(85),PARP(86))) K(N+1,2)=
355 & 1+INT((2.+PARJ(2))*RLU_HIJING(0))
358 P(N+1,3)=0.25*VINT(1)*(VINT(41)*(1.+CTH)-VINT(42)*(1.-CTH))
359 P(N+1,4)=0.25*VINT(1)*(VINT(41)*(1.+CTH)+VINT(42)*(1.-CTH))
362 C...Add second parton to event record.
365 IF(K(N+1,2).NE.21) K(N+2,2)=-K(N+1,2)
368 P(N+2,3)=0.25*VINT(1)*(VINT(41)*(1.-CTH)-VINT(42)*(1.+CTH))
369 P(N+2,4)=0.25*VINT(1)*(VINT(41)*(1.-CTH)+VINT(42)*(1.+CTH))
372 IF(RFLAV.LT.PARP(85).AND.NSTR.GE.1) THEN
373 C....Choose relevant string pieces to place gluons on.
379 DIST=(P(I,4)*P(I1,4)-P(I,1)*P(I1,1)-P(I,2)*P(I1,2)-
380 & P(I,3)*P(I1,3))*(P(I,4)*P(I2,4)-P(I,1)*P(I2,1)-
381 & P(I,2)*P(I2,2)-P(I,3)*P(I2,3))/MAX(1.,P(I1,4)*P(I2,4)-
382 & P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-P(I1,3)*P(I2,3))
383 IF(ISTR.EQ.1.OR.DIST.LT.DMIN) THEN
391 C....Colour flow adjustments, new string pieces.
392 IF(K(IST1,4)/MSTU(5).EQ.IST2) K(IST1,4)=MSTU(5)*I+
393 & MOD(K(IST1,4),MSTU(5))
394 IF(MOD(K(IST1,5),MSTU(5)).EQ.IST2) K(IST1,5)=
395 & MSTU(5)*(K(IST1,5)/MSTU(5))+I
398 IF(K(IST2,5)/MSTU(5).EQ.IST1) K(IST2,5)=MSTU(5)*I+
399 & MOD(K(IST2,5),MSTU(5))
400 IF(MOD(K(IST2,4),MSTU(5)).EQ.IST1) K(IST2,4)=
401 & MSTU(5)*(K(IST2,4)/MSTU(5))+I
407 C...String drawing and colour flow for gluon loop.
408 ELSEIF(K(N+1,2).EQ.21) THEN
409 K(N+1,4)=MSTU(5)*(N+2)
410 K(N+1,5)=MSTU(5)*(N+2)
411 K(N+2,4)=MSTU(5)*(N+1)
412 K(N+2,5)=MSTU(5)*(N+1)
419 C...String drawing and colour flow for q-qbar pair.
421 K(N+1,4)=MSTU(5)*(N+2)
422 K(N+2,5)=MSTU(5)*(N+1)
428 C...Update remaining energy; iterate.
430 IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
431 CALL LUERRM_HIJING(11
432 $ ,'(PYMULT_HIJING:) no more memory left in LUJETS_HIJING'
434 IF(MSTU(21).GE.1) RETURN
437 VINT(151)=VINT(151)+VINT(41)
438 VINT(152)=VINT(152)+VINT(42)
439 VINT(143)=VINT(143)-VINT(41)
440 VINT(144)=VINT(144)-VINT(42)
441 IF(MINT(31).LT.240) GOTO 180
445 C...Format statements for printout.
447 $ ,'****** PYMULT_HIJING: initialization of multiple inter'
448 $ ,'actions for MSTP(82) =',I2,' ******')
449 1100 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
450 &E9.2,' mb: rejected')
451 1200 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
452 &E9.2,' mb: accepted')