3 C Nothing important has been changed here. A few 'garbage' has been
4 C cleaned up here, like common block HIJJET3 for the sea quark strings
5 C which were originally created to implement the DPM scheme which
6 C later was abadoned in the final version. The lines which operate
7 C on these data are also deleted in the program.
11 C There are some changes in the program: subroutine HARDJET is now
12 C consolidated with HIJHRD. HARDJET is used to re-initiate PYTHIA
13 C for the triggered hard processes. Now that is done altogether
14 C with other normal hard processes in modified JETINI. In the new
15 C version one calls JETINI every time one calls HIJHRD. In the new
16 C version the effect of the isospin of the nucleon on hard processes,
17 C especially direct photons is correctly considered.
18 C For A+A collisions, one has to initilize pythia
19 C separately for each type of collisions, pp, pn,np and nn,
20 C or hp and hn for hA collisions. In JETINI we use the following
21 C catalogue for different types of collisions:
23 C h+A: h+p (I_TYPE=1), h+n (I_TYPE=2)
24 C A+h: p+h (I_TYPE=1), n+h (I_TYPE=2)
25 C A+A: p+p (I_TYPE=1), p+n (I_TYPE=2), n+p (I_TYPE=3), n+n (I_TYPE=4)
26 C*****************************************************************
30 C Last modification on January 5, 1998. Two misstakes are corrected in
31 C function G. A Misstake in the subroutine Parton is also corrected.
32 C (These are pointed out by Ysushi Nara).
35 C Last modifcation on April 10, 1996. To conduct final
36 C state radiation, PYTHIA reorganize the two scattered
37 C partons and their final momenta will be a little
38 C different. The summed total momenta of the partons
39 C from the final state radiation are stored in HINT1(26-29)
40 C and HINT1(36-39) which are little different from
41 C HINT1(21-24) and HINT1(41-44).
45 C Last modfication on September 11, 1995. When HIJING and
46 C PYTHIA are initialized, the shadowing is evaluated at
47 C b=0 which is the maximum. This will cause overestimate
48 C of shadowing for peripheral interactions. To correct this
49 C problem, shadowing is set to zero when initializing. Then
50 C use these maximum cross section without shadowing as a
51 C normalization of the Monte Carlo. This however increase
52 C the computing time. IHNT2(16) is used to indicate whether
53 C the sturcture function is called for (IHNT2(16)=1) initialization
54 C or for (IHNT2(16)=0)normal collisions simulation
56 C Last modification on Aagust 28, 1994. Two bugs associate
57 C with the impact parameter dependence of the shadowing is
61 c Last modification on October 14, 1994. One bug is corrected
62 c in the direct photon production option in subroutine
63 C HIJHRD.( this problem was reported by Jim Carroll and Mike Beddo).
64 C Another bug associated with keeping the decay history
65 C in the particle information is also corrected.(this problem
66 C was reported by Matt Bloomer)
69 C Last modification on July 15, 1994. The option to trig on
70 C heavy quark production (charm IHPR2(18)=0 or beauty IHPR2(18)=1)
71 C is added. To do this, set IHPR2(3)=3. For inclusive production,
72 C one should reset HIPR1(10)=0.0. One can also trig larger pt
73 C QQbar production by giving HIPR1(10) a nonvanishing value.
74 C The mass of the heavy quark in the calculation of the cross
75 C section (HINT1(59)--HINT1(65)) is given by HIPR1(7) (the
76 C default is the charm mass D=1.5). We also include a separate
77 C K-factor for heavy quark and direct photon production by
80 C Last modification on May 24, 1994. The option to
81 C retain the information of all particles including those
82 C who have decayed is IHPR(21)=1 (default=0). KATT(I,3) is
83 C added to contain the line number of the parent particle
84 C of the current line which is produced via a decay.
85 C KATT(I,4) is the status number of the particle: 11=particle
86 C which has decayed; 1=finally produced particle.
89 C Last modification on May 24, 1994( in HIJSFT when valence quark
90 C is quenched, the following error is corrected. 1.2*IHNT2(1) -->
91 C 1.2*IHNT2(1)**0.333333, 1.2*IHNT2(3) -->1.2*IHNT(3)**0.333333)
94 C Last modification on March 16, 1994 (heavy flavor production
95 C processes MSUB(81)=1 MSUB(82)=1 have been switched on,
96 C charm production is the default, B-quark option is
97 C IHPR2(18), when it is switched on, charm quark is
101 C Last modification on March 23, 1994 (an error is corrected
102 C in the impact parameter dependence of the jet cross section)
104 C Last modification Oct. 1993 to comply with non-vax
107 C*********************************************
108 C LAST MODIFICATION April 5, 1991
109 CQUARK DISTRIBUTIOIN (1-X)**A/(X**2+C**2/S)**B
110 C(A=HIPR1(44),B=HIPR1(46),C=HIPR1(45))
111 C STRING FLIP, VENUS OPTION IHPR2(15)=1,IN WHICH ONE CAN HAVE ONE AND
112 C TWO COLOR CHANGES, (1-W)**2,W*(1-W),W*(1-W),AND W*2, W=HIPR1(18),
113 C AMONG PT DISTRIBUTION OF SEA QUARKS IS CONTROLLED BY HIPR1(42)
115 C gluon jets can form a single string system
117 C initial state radiation is included
119 C all QCD subprocesses are included
121 c direct particles production is included(currently only direct
124 C Effect of high P_T trigger bias on multiple jets distribution
126 C******************************************************************
128 C Heavy Ion Jet INteraction Generator *
130 C X. N. Wang and M. Gyulassy *
131 C Lawrence Berkeley Laboratory *
133 C******************************************************************
135 C******************************************************************
136 C NFP(K,1),NFP(K,2)=flavor of q and di-q, NFP(K,3)=present ID of *
137 C proj, NFP(K,4) original ID of proj. NFP(K,5)=colli status(0=no,*
138 C 1=elastic,2=the diffrac one in single-diffrac,3= excited string.*
139 C |NFP(K,6)| is the total # of jet production, if NFP(K,6)<0 it *
140 C can not produce jet anymore. NFP(K,10)=valence quarks scattering*
141 C (0=has not been,1=is going to be, -1=has already been scattered *
142 C NFP(k,11) total number of interactions this proj has suffered *
143 C PP(K,1)=PX,PP(K,2)=PY,PP(K,3)=PZ,PP(K,4)=E,PP(K,5)=M(invariant *
144 C mass), PP(K,6,7),PP(K,8,9)=transverse momentum of quark and *
145 C diquark,PP(K,10)=PT of the hard scattering between the valence *
146 C quarks; PP(K,14,15)=the mass of quark,diquark. *
147 C******************************************************************
149 C****************************************************************
153 C****************************************************************
154 SUBROUTINE HIJING(FRAME,BMIN0,BMAX0)
156 DIMENSION SCIP(300,300),RNIP(300,300),SJIP(300,300),JTP(3),
157 & IPCOL(90000),ITCOL(90000)
159 #include "hiparnt.inc"
161 #include "hijcrdn.inc"
162 #include "hijglbr.inc"
163 #include "himain1.inc"
164 #include "himain2.inc"
165 #include "histrng.inc"
166 #include "hijjet1.inc"
167 #include "hijjet2.inc"
168 #include "hijjet4.inc"
170 #include "lujets_hijing.inc"
171 #include "ludat1_hijing.inc"
174 BMAX=MIN(BMAX0,HIPR1(34)+HIPR1(35))
176 IF(IHNT2(1).LE.1 .AND. IHNT2(3).LE.1) THEN
178 BMAX=2.5*SQRT(HIPR1(31)*0.1/HIPR1(40))
180 C ********HIPR1(31) is in mb =0.1fm**2
181 C*******THE FOLLOWING IS TO SELECT THE COORDINATIONS OF NUCLEONS
182 C BOTH IN PROJECTILE AND TARGET NUCLEAR( in fm)
187 IF(IHNT2(1).LE.1) GO TO 14
191 if(IHNT2(1).EQ.2) then
192 rnd1=max(RLU_HIJING(NSEED),1.0e-20)
193 rnd2=max(RLU_HIJING(NSEED),1.0e-20)
194 rnd3=max(RLU_HIJING(NSEED),1.0e-20)
195 R=-0.5*(log(rnd1)*4.38/2.0+log(rnd2)*0.85/2.0
196 & +4.38*0.85*log(rnd3)/(4.38+0.85))
202 C ********choose theta from uniform cos(theta) distr
203 PHI=RLU_HIJING(0)*2.0*HIPR1(40)
204 C ********choose phi form uniform phi distr 0 to 2*pi
205 YP(1,KP)=R*SX*COS(PHI)
206 YP(2,KP)=R*SX*SIN(PHI)
208 IF(HIPR1(29).EQ.0.0) GO TO 10
210 DNBP1=(YP(1,KP)-YP(1,KP2))**2
211 DNBP2=(YP(2,KP)-YP(2,KP2))**2
212 DNBP3=(YP(3,KP)-YP(3,KP2))**2
213 DNBP=DNBP1+DNBP2+DNBP3
214 IF(DNBP.LT.HIPR1(29)*HIPR1(29)) GO TO 5
215 C ********two neighbors cannot be closer than
219 c*******************************
220 if(IHNT2(1).EQ.2) then
225 c********************************
228 IF(YP(3,I).GT.YP(3,J)) GO TO 12
240 C******************************
244 IF(IHNT2(3).LE.1) GO TO 24
248 if(IHNT2(3).EQ.2) then
249 rnd1=max(RLU_HIJING(NSEED),1.0e-20)
250 rnd2=max(RLU_HIJING(NSEED),1.0e-20)
251 rnd3=max(RLU_HIJING(NSEED),1.0e-20)
252 R=-0.5*(log(rnd1)*4.38/2.0+log(rnd2)*0.85/2.0
253 & +4.38*0.85*log(rnd3)/(4.38+0.85))
259 C ********choose theta from uniform cos(theta) distr
260 PHI=RLU_HIJING(0)*2.0*HIPR1(40)
261 C ********chose phi form uniform phi distr 0 to 2*pi
262 YT(1,KT)=R*SX*COS(PHI)
263 YT(2,KT)=R*SX*SIN(PHI)
265 IF(HIPR1(29).EQ.0.0) GO TO 20
267 DNBT1=(YT(1,KT)-YT(1,KT2))**2
268 DNBT2=(YT(2,KT)-YT(2,KT2))**2
269 DNBT3=(YT(3,KT)-YT(3,KT2))**2
270 DNBT=DNBT1+DNBT2+DNBT3
271 IF(DNBT.LT.HIPR1(29)*HIPR1(29)) GO TO 15
272 C ********two neighbors cannot be closer than
276 c**********************************
277 if(IHNT2(3).EQ.2) then
282 c*********************************
285 IF(YT(3,I).LT.YT(3,J)) GO TO 22
297 C********************
302 WRITE(6,*) 'infinite loop happened in HIJING'
311 C ********Initialize for a new event
329 C**** BB IS THE ABSOLUTE VALUE OF IMPACT PARAMETER,BB**2 IS
330 C RANDOMLY GENERATED AND ITS ORIENTATION IS RANDOMLY SET
331 C BY THE ANGLE PHI FOR EACH COLLISION.******************
333 BB=SQRT(BMIN**2+RLU_HIJING(0)*(BMAX**2-BMIN**2))
334 PHI=2.0*HIPR1(40)*RLU_HIJING(0)
343 B2=(YP(1,JP)+BBX-YT(1,JT))**2+(YP(2,JP)+BBY-YT(2,JT))**2
344 R2=B2*HIPR1(40)/HIPR1(31)/0.1
345 C ********mb=0.1*fm, YP is in fm,HIPR1(31) is in mb
346 RRB1=MIN((YP(1,JP)**2+YP(2,JP)**2)
347 & /1.2**2/REAL(IHNT2(1))**0.6666667,1.0)
348 RRB2=MIN((YT(1,JT)**2+YT(2,JT)**2)
349 & /1.2**2/REAL(IHNT2(3))**0.6666667,1.0)
350 APHX1=HIPR1(6)*4.0/3.0*(IHNT2(1)**0.3333333-1.0)
352 APHX2=HIPR1(6)*4.0/3.0*(IHNT2(3)**0.3333333-1.0)
354 HINT1(18)=HINT1(14)-APHX1*HINT1(15)
355 & -APHX2*HINT1(16)+APHX1*APHX2*HINT1(17)
356 IF(IHPR2(14).EQ.0.OR.
357 & (IHNT2(1).EQ.1.AND.IHNT2(3).EQ.1)) THEN
358 GS=1.0-EXP(-(HIPR1(30)+HINT1(18))*ROMG(R2)/HIPR1(31))
360 IF(RANTOT.GT.GS) GO TO 70
363 GSTOT_0=2.0*(1.0-EXP(-(HIPR1(30)+HINT1(18))
364 & /HIPR1(31)/2.0*ROMG(0.0)))
366 GS=1.0-EXP(-(HIPR1(30)+HINT1(18))/HIPR1(31)*ROMG(R2))
367 GSTOT=2.0*(1.0-SQRT(1.0-GS))
368 RANTOT=RLU_HIJING(0)*GSTOT_0
369 IF(RANTOT.GT.GSTOT) GO TO 70
370 IF(RANTOT.GT.GS) THEN
373 C ********perform elastic collisions
377 SJIP(JP,JT)=HINT1(18)
382 C ********total number interactions proj and targ has
387 & (IHNT2(1).EQ.1.AND.IHNT2(3).EQ.1)) GO TO 60
392 C ********At large impact parameter, there maybe no
393 C interaction at all. For NN collision
394 C repeat the event until interaction happens
396 IF(IHPR2(3).NE.0) THEN
397 NHARD=1+INT(RLU_HIJING(0)*(NCOLT-1)+0.5)
398 NHARD=MIN(NHARD,NCOLT)
403 IF(IHPR2(9).EQ.1) THEN
404 NMINI=1+INT(RLU_HIJING(0)*(NCOLT-1)+0.5)
405 NMINI=MIN(NMINI,NCOLT)
409 C ********Specifying the location of the hard and
410 C minijet if they are enforced by user
414 IF(SCIP(JP,JT).EQ.-1.0) GO TO 200
415 NFP(JP,11)=NFP(JP,11)+1
416 NFT(JT,11)=NFT(JT,11)+1
417 IF(NFP(JP,5).LE.1 .AND. NFT(JT,5).GT.1) THEN
420 ELSE IF(NFP(JP,5).GT.1 .AND. NFT(JT,5).LE.1) THEN
423 ELSE IF(NFP(JP,5).LE.1 .AND. NFT(JT,5).LE.1) THEN
427 ELSE IF(NFP(JP,5).GT.1 .AND. NFT(JT,5).GT.1) THEN
433 C*****************************************************************
434 IF(IHPR2(8).EQ.0 .AND. IHPR2(3).EQ.0) GO TO 160
435 C ********When IHPR2(8)=0 no jets are produced
436 IF(NFP(JP,6).LT.0 .OR. NFT(JT,6).LT.0) GO TO 160
437 C ********jets can not be produced for (JP,JT)
438 C because not enough energy avaible for
441 HINT1(18)=SJIP(JP,JT)
442 TT=ROMG(R2)*HINT1(18)/HIPR1(31)
443 TTS=HIPR1(30)*ROMG(R2)/HIPR1(31)
445 IF(IHPR2(3).NE.0 .AND. JP.EQ.JPHARD .AND. JT.EQ.JTHARD) THEN
447 CALL HIJHRD(JP,JT,0,JFLG,0)
457 IF(ABS(HINT1(46)).GT.HIPR1(11).AND.JFLG.EQ.2) NFP(JP,7)=1
458 IF(ABS(HINT1(56)).GT.HIPR1(11).AND.JFLG.EQ.2) NFT(JT,7)=1
459 IF(MAX(ABS(HINT1(46)),ABS(HINT1(56))).GT.HIPR1(11).AND.
460 & JFLG.GE.3) IASG(NSG,3)=1
464 HINT1(20+I05)=HINT1(40+I05)
465 HINT1(30+I05)=HINT1(50+I05)
468 IF(IHPR2(8).EQ.0) GO TO 160
469 RRB1=MIN((YP(1,JP)**2+YP(2,JP)**2)/1.2**2
470 & /REAL(IHNT2(1))**0.6666667,1.0)
471 RRB2=MIN((YT(1,JT)**2+YT(2,JT)**2)/1.2**2
472 & /REAL(IHNT2(3))**0.6666667,1.0)
473 APHX1=HIPR1(6)*4.0/3.0*(IHNT2(1)**0.3333333-1.0)
475 APHX2=HIPR1(6)*4.0/3.0*(IHNT2(3)**0.3333333-1.0)
477 HINT1(65)=HINT1(61)-APHX1*HINT1(62)
478 & -APHX2*HINT1(63)+APHX1*APHX2*HINT1(64)
479 TTRIG=ROMG(R2)*HINT1(65)/HIPR1(31)
481 C ********subtract the trigger jet from total number
482 C of jet production to be done since it has
483 C already been produced here
484 XR1=-ALOG(EXP(-TTRIG)+RLU_HIJING(0)*(1.0-EXP(-TTRIG)))
486 XR1=XR1-ALOG(RLU_HIJING(0))
487 IF(XR1.LT.TTRIG) GO TO 106
490 XR=XR-ALOG(RLU_HIJING(0))
491 IF(XR.LT.TT-TTRIG) GO TO 107
495 C ********create a hard interaction with specified P_T
497 IF(IHPR2(9).EQ.1.AND.JP.EQ.JPMINI.AND.JT.EQ.JTMINI) GO TO 110
498 C ********create at least one pair of mini jets
501 IF(IHPR2(8).GT.0 .AND.RNIP(JP,JT).LT.EXP(-TT)*
502 & (1.0-EXP(-TTS))) GO TO 160
503 C ********this is the probability for no jet production
504 110 XR=-ALOG(EXP(-TT)+RLU_HIJING(0)*(1.0-EXP(-TT)))
506 XR=XR-ALOG(RLU_HIJING(0))
507 IF(XR.LT.TT) GO TO 111
508 112 NJET=MIN(NJET,IHPR2(8))
509 IF(IHPR2(8).LT.0) NJET=ABS(IHPR2(8))
510 C ******** Determine number of mini jet production
514 CALL HIJHRD(JP,JT,JOUT,JFLG,1)
515 C ********JFLG=1 jets valence quarks, JFLG=2 with
516 C gluon jet, JFLG=3 with q-qbar prod for
517 C (JP,JT). If JFLG=0 jets can not be produced
518 C this time. If JFLG=-1, error occured abandon
519 C this event. JOUT is the total hard scat for
521 IF(JFLG.EQ.0) GO TO 160
523 IF(IHPR2(10).NE.0) WRITE(6,*) 'error occured in HIJHRD'
527 IF(ABS(HINT1(46)).GT.HIPR1(11).AND.JFLG.EQ.2) NFP(JP,7)=1
528 IF(ABS(HINT1(56)).GT.HIPR1(11).AND.JFLG.EQ.2) NFT(JT,7)=1
529 IF(MAX(ABS(HINT1(46)),ABS(HINT1(56))).GT.HIPR1(11).AND.
530 & JFLG.GE.3) IASG(NSG,3)=1
531 C ******** jet with PT>HIPR1(11) will be quenched
534 CALL HIJSFT(JP,JT,JOUT,IERROR)
536 IF(IHPR2(10).NE.0) WRITE(6,*) 'error occured in HIJSFT'
540 C ********conduct soft scattering between JP and JT
546 c**************************
549 c write(6,*) JP, NFP(JP,3), NFP(JP,4), NFP(JP,5)
550 IF(NFP(JP,5).GT.2) THEN
552 ELSE IF(NFP(JP,5).EQ.2.OR.NFP(JP,5).EQ.1) THEN
556 IF(NFP(JP,5).LE.2) THEN
557 IF (NFP(JP,3) .EQ. 2212) THEN
558 NPSPECP = NPSPECP + 1
559 ELSE IF (NFP(JP,3) .EQ. 2112) THEN
560 NNSPECP = NNSPECP + 1
565 IF(NFT(JT,5).GT.2) THEN
567 ELSE IF(NFT(JT,5).EQ.2.OR.NFT(JT,5).EQ.1) THEN
571 IF(NFT(JT,5).LE.2) THEN
572 IF (NFT(JT,3) .EQ. 2212) THEN
573 NPSPECT = NPSPECT + 1
574 ELSE IF (NFT(JT,3) .EQ. 2112) THEN
575 NNSPECT = NNSPECT + 1
580 c*******************************
582 C********perform jet quenching for jets with PT>HIPR1(11)**********
584 IF((IHPR2(8).NE.0.OR.IHPR2(3).NE.0).AND.IHPR2(4).GT.0.AND.
585 & IHNT2(1).GT.1.AND.IHNT2(3).GT.1) THEN
587 IF(NFP(I,7).EQ.1) CALL QUENCH(I,1)
590 IF(NFT(I,7).EQ.1) CALL QUENCH(I,2)
593 IF(IASG(ISG,3).EQ.1) CALL QUENCH(ISG,3)
597 C**************fragment all the string systems in the following*****
599 C********N_ST is where particle information starts
600 C********N_STR+1 is the number of strings in fragmentation
601 C********the number of strings before a line is stored in K(I,4)
602 C********IDSTR is id number of the string system (91,92 or 93)
605 IF(IHPR2(20).NE.0) THEN
607 CALL HIJFRG(ISG,3,IERROR)
608 IF(MSTU(24).NE.0 .OR.IERROR.GT.0) THEN
611 IF(IHPR2(10).NE.0) THEN
612 call LULIST_HIJING(1)
613 WRITE(6,*) 'error occured, repeat the event'
617 C ********Check errors
621 IF(IHPR2(21).EQ.0) THEN
622 CALL LUEDIT_HIJING(2)
625 IF(K(N_ST,2).LT.91.OR.K(N_ST,2).GT.93) GO TO 351
630 IF(FRAME.EQ.'LAB') THEN
633 C ******** boost back to lab frame(if it was in)
637 IF(K(I,2).EQ.IDSTR) THEN
646 IF(K(I,3).EQ.0 ) THEN
649 IF(K(K(I,3),2).EQ.IDSTR) THEN
652 KATT(NATT,3)=NATT-I+K(I,3)+N_STR-K(K(I,3),4)
655 C ****** identify the mother particle
667 C ********Fragment the q-qbar jets systems *****
672 DO 400 J_JTP=1,JTP(NTP)
673 CALL HIJFRG(J_JTP,NTP,IERROR)
674 IF(MSTU(24).NE.0 .OR. IERROR.GT.0) THEN
677 IF(IHPR2(10).NE.0) THEN
678 call LULIST_HIJING(1)
679 WRITE(6,*) 'error occured, repeat the event'
683 C ********check errors
689 IF(NTP.EQ.2) NFTP=10+NFT(J_JTP,5)
691 IF(IHPR2(21).EQ.0) THEN
692 CALL LUEDIT_HIJING(2)
693 ELSE IF (NFTP.EQ. 3 .OR. NFTP .EQ. 13) THEN
695 IF(K(N_ST,2).LT.91.OR.K(N_ST,2).GT.93) GO TO 381
699 IF(FRAME.EQ.'LAB') THEN
702 C ******** boost back to lab frame(if it was in)
707 IF(K(I,2).EQ.IDSTR) THEN
716 IF(K(I,3).EQ.0 .OR. K(K(I,3),2).EQ.IDSTR) THEN
719 KATT(NATT,3)=NATT-I+K(I,3)+N_STR-K(K(I,3),4)
721 C ****** identify the mother particle
733 C ********Fragment the q-qq related string systems
741 PATT(NATT,1)=PDR(I,1)
742 PATT(NATT,2)=PDR(I,2)
743 PATT(NATT,3)=PDR(I,3)
744 PATT(NATT,4)=PDR(I,4)
751 C ********store the direct-produced particles
753 DENGY=EATT/(IHNT2(1)*HINT1(6)+IHNT2(3)*HINT1(7))-1.0
754 IF(ABS(DENGY).GT.HIPR1(43).AND.IHPR2(20).NE.0
755 & .AND.IHPR2(21).EQ.0) THEN
756 IF(IHPR2(10).NE.0) WRITE(6,*) 'Energy not conserved, repeat the
758 C call LULIST_HIJING(1)