]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TAmpt/AMPT/hijing1.383_ampt.f
Changes for #91126: Request to commit a patch for AMPT
[u/mrichter/AliRoot.git] / TAmpt / AMPT / hijing1.383_ampt.f
CommitLineData
0119ef9a 1c.................... hijing1.383_ampt.f
2c Version 1.383
3c The variables isng in HIJSFT and JL in ATTRAD were not initialized.
4c The version initialize them. (as found by Fernando Marroquim)
5c
6c
7c
8c Version 1.382
9c Nuclear distribution for deuteron is taken as the Hulthen wave
10c function as provided by Brian Cole (Columbia)
11clin used my own implementation of impact parameter
12clin & proton-neutron distance within a deuteron.
13c
14c
15c Version 1.381
16c
17c The parameters for Wood-Saxon distribution for deuteron are
18c constrained to give the right rms ratius 2.116 fm
19c (R=0.0, D=0.5882)
20c
21c
22c Version 1.38
23c
24c The following common block is added to record the number of elastic
25c (NELT, NELP) and inelastic (NINT, NINP) participants
26c
27c COMMON/HJGLBR/NELT,NINT,NELP,NINP
28c SAVE /HJGLBR/
29c
30c Version 1.37
31c
32c A bug in the quenching subroutine is corrected. When calculating the
33c distance between two wounded nucleons, the displacement of the
34c impact parameter was not inculded. This bug was discovered by
35c Dr. V.Uzhinskii JINR, Dubna, Russia
36c
37c
38C Version 1.36
39c
40c Modification Oct. 8, 1998. In hijing, log(ran(nseed)) occasionally
41c causes overfloat. It is modified to log(max(ran(nseed),1.0e-20)).
42c
43c
44C Nothing important has been changed here. A few 'garbage' has been
45C cleaned up here, like common block HJJET3 for the sea quark strings
46C which were originally created to implement the DPM scheme which
47C later was abadoned in the final version. The lines which operate
48C on these data are also deleted in the program.
49C
50C
51C Version 1.35
52C There are some changes in the program: subroutine HARDJET is now
53C consolidated with HIJHRD. HARDJET is used to re-initiate PYTHIA
54C for the triggered hard processes. Now that is done altogether
55C with other normal hard processes in modified JETINI. In the new
56C version one calls JETINI every time one calls HIJHRD. In the new
57C version the effect of the isospin of the nucleon on hard processes,
58C especially direct photons is correctly considered.
59C For A+A collisions, one has to initilize pythia
60C separately for each type of collisions, pp, pn,np and nn,
61C or hp and hn for hA collisions. In JETINI we use the following
62C catalogue for different types of collisions:
63C h+h: h+h (itype=1)
64C h+A: h+p (itype=1), h+n (itype=2)
65C A+h: p+h (itype=1), n+h (itype=2)
66C A+A: p+p (itype=1), p+n (itype=2), n+p (itype=3), n+n (itype=4)
67C*****************************************************************
68c
69C
70C Version 1.34
71C Last modification on January 5, 1998. Two mistakes are corrected in
72C function G. A Mistake in the subroutine Parton is also corrected.
73C (These are pointed out by Ysushi Nara).
74C
75C
76C Last modifcation on April 10, 1996. To conduct final
77C state radiation, PYTHIA reorganize the two scattered
78C partons and their final momenta will be a little
79C different. The summed total momenta of the partons
80C from the final state radiation are stored in HINT1(26-29)
81C and HINT1(36-39) which are little different from
82C HINT1(21-24) and HINT1(41-44).
83C
84C Version 1.33
85C
86C Last modfication on September 11, 1995. When HIJING and
87C PYTHIA are initialized, the shadowing is evaluated at
88C b=0 which is the maximum. This will cause overestimate
89C of shadowing for peripheral interactions. To correct this
90C problem, shadowing is set to zero when initializing. Then
91C use these maximum cross section without shadowing as a
92C normalization of the Monte Carlo. This however increase
93C the computing time. IHNT2(16) is used to indicate whether
94C the sturcture function is called for (IHNT2(16)=1) initialization
95C or for (IHNT2(16)=0)normal collisions simulation
96C
97C Last modification on Aagust 28, 1994. Two bugs associate
98C with the impact parameter dependence of the shadowing is
99C corrected.
100C
101C
102c Last modification on October 14, 1994. One bug is corrected
103c in the direct photon production option in subroutine
104C HIJHRD.( this problem was reported by Jim Carroll and Mike Beddo).
105C Another bug associated with keeping the decay history
106C in the particle information is also corrected.(this problem
107C was reported by Matt Bloomer)
108C
109C
110C Last modification on July 15, 1994. The option to trig on
111C heavy quark production (charm IHPR2(18)=0 or beauty IHPR2(18)=1)
112C is added. To do this, set IHPR2(3)=3. For inclusive production,
113C one should reset HIPR1(10)=0.0. One can also trig larger pt
114C QQbar production by giving HIPR1(10) a nonvanishing value.
115C The mass of the heavy quark in the calculation of the cross
116C section (HINT1(59)--HINT1(65)) is given by HIPR1(7) (the
117C default is the charm mass D=1.5). We also include a separate
118C K-factor for heavy quark and direct photon production by
119C HIPR1(23)(D=2.0).
120C
121C Last modification on May 24, 1994. The option to
122C retain the information of all particles including those
123C who have decayed is IHPR(21)=1 (default=0). KATT(I,3) is
124C added to contain the line number of the parent particle
125C of the current line which is produced via a decay.
126C KATT(I,4) is the status number of the particle: 11=particle
127C which has decayed; 1=finally produced particle.
128C
129C
130C Last modification on May 24, 1994( in HIJSFT when valence quark
131C is quenched, the following error is corrected. 1.2*IHNT2(1) -->
132C 1.2*IHNT2(1)**0.333333, 1.2*IHNT2(3) -->1.2*IHNT(3)**0.333333)
133C
134C
135C Last modification on March 16, 1994 (heavy flavor production
136C processes MSUB(81)=1 MSUB(82)=1 have been switched on,
137C charm production is the default, B-quark option is
138C IHPR2(18), when it is switched on, charm quark is
139C automatically off)
140C
141C
142C Last modification on March 23, 1994 (an error is corrected
143C in the impact parameter dependence of the jet cross section)
144C
145C Last modification Oct. 1993 to comply with non-vax
146C machines' compiler
147C
148C*********************************************
149C LAST MODIFICATION April 5, 1991
150CQUARK DISTRIBUTIOIN (1-X)**A/(X**2+C**2/S)**B
151C(A=HIPR1(44),B=HIPR1(46),C=HIPR1(45))
152C STRING FLIP, VENUS OPTION IHPR2(15)=1,IN WHICH ONE CAN HAVE ONE AND
153C TWO COLOR CHANGES, (1-W)**2,W*(1-W),W*(1-W),AND W*2, W=HIPR1(18),
154C AMONG PT DISTRIBUTION OF SEA QUARKS IS CONTROLLED BY HIPR1(42)
155C
156C gluon jets can form a single string system
157C
158C initial state radiation is included
159C
160C all QCD subprocesses are included
161c
162c direct particles production is included(currently only direct
163C photon)
164c
165C Effect of high P_T trigger bias on multiple jets distribution
166c
167C******************************************************************
168C HIJING.10 *
169C Heavy Ion Jet INteraction Generator *
170C by *
171C X. N. Wang and M. Gyulassy *
172C Lawrence Berkeley Laboratory *
173C *
174C******************************************************************
175C
176C******************************************************************
177C NFP(K,1),NFP(K,2)=flavor of q and di-q, NFP(K,3)=present ID of *
178C proj, NFP(K,4) original ID of proj. NFP(K,5)=colli status(0=no,*
179C 1=elastic,2=the diffrac one in single-diffrac,3= excited string.*
180C |NFP(K,6)| is the total # of jet production, if NFP(K,6)<0 it *
181C can not produce jet anymore. NFP(K,10)=valence quarks scattering*
182C (0=has not been,1=is going to be, -1=has already been scattered *
183C NFP(k,11) total number of interactions this proj has suffered *
184C PP(K,1)=PX,PP(K,2)=PY,PP(K,3)=PZ,PP(K,4)=E,PP(K,5)=M(invariant *
185C mass), PP(K,6,7),PP(K,8,9)=transverse momentum of quark and *
186C diquark,PP(K,10)=PT of the hard scattering between the valence *
187C quarks; PP(K,14,15)=the mass of quark,diquark. *
188C******************************************************************
189C
190C****************************************************************
191C
192C SUBROUTINE HIJING
193C
194C****************************************************************
195 SUBROUTINE HIJING(FRAME,BMIN0,BMAX0)
196
197cgsfs Added following for consistency with AMPT call
198 double precision BMIN0, BMAX0
199
200cbz1/25/99
201 PARAMETER (MAXPTN=400001)
202clin-4/20/01 PARAMETER (MAXSTR = 1600)
203 PARAMETER (MAXSTR=150001)
204cbz1/25/99end
205clin-4/26/01:
206 PARAMETER (MAXIDL=4001)
207
208cbz1/31/99
209 DOUBLE PRECISION GX0, GY0, GZ0, FT0, PX0, PY0, PZ0, E0, XMASS0
210 DOUBLE PRECISION GX5, GY5, GZ5, FT5, PX5, PY5, PZ5, E5, XMASS5
211 DOUBLE PRECISION ATAUI, ZT1, ZT2, ZT3
212 DOUBLE PRECISION xnprod,etprod,xnfrz,etfrz,
213 & dnprod,detpro,dnfrz,detfrz
214
215cbz1/31/99end
216
217 CHARACTER FRAME*8
218 DIMENSION SCIP(300,300),RNIP(300,300),SJIP(300,300),JTP(3),
219 & IPCOL(90000),ITCOL(90000)
220 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
221cc SAVE /HPARNT/
222C
223 COMMON/hjcrdn/YP(3,300),YT(3,300)
224cc SAVE /hjcrdn/
225clin-7/16/03 NINT is a intrinsic fortran function, rename it to NINTHJ
226c COMMON/HJGLBR/NELT,NINT,NELP,NINP
227 COMMON/HJGLBR/NELT,NINTHJ,NELP,NINP
228cc SAVE /HJGLBR/
229 COMMON/HMAIN1/EATT,JATT,NATT,NT,NP,N0,N01,N10,N11
230cc SAVE /HMAIN1/
231clin-4/26/01
232c COMMON/HMAIN2/KATT(130000,4),PATT(130000,4)
233 COMMON/HMAIN2/KATT(MAXSTR,4),PATT(MAXSTR,4)
234cc SAVE /HMAIN2/
235 COMMON/HSTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
236cc SAVE /HSTRNG/
237 COMMON/HJJET1/NPJ(300),KFPJ(300,500),PJPX(300,500),
238 & PJPY(300,500),PJPZ(300,500),PJPE(300,500),
239 & PJPM(300,500),NTJ(300),KFTJ(300,500),
240 & PJTX(300,500),PJTY(300,500),PJTZ(300,500),
241 & PJTE(300,500),PJTM(300,500)
242cc SAVE /HJJET1/
243clin-4/2008
244c COMMON/HJJET2/NSG,NJSG(900),IASG(900,3),K1SG(900,100),
245c & K2SG(900,100),PXSG(900,100),PYSG(900,100),
246c & PZSG(900,100),PESG(900,100),PMSG(900,100)
247 COMMON/HJJET2/NSG,NJSG(MAXSTR),IASG(MAXSTR,3),K1SG(MAXSTR,100),
248 & K2SG(MAXSTR,100),PXSG(MAXSTR,100),PYSG(MAXSTR,100),
249 & PZSG(MAXSTR,100),PESG(MAXSTR,100),PMSG(MAXSTR,100)
250cc SAVE /HJJET2/
251 COMMON/HJJET4/NDR,IADR(MAXSTR,2),KFDR(MAXSTR),PDR(MAXSTR,5)
252clin-4/2008:
253c common/xydr/rtdr(900,2)
254 common/xydr/rtdr(MAXSTR,2)
255cc SAVE /HJJET4/
256 COMMON/RNDF77/NSEED
257cc SAVE /RNDF77/
258C
259 COMMON/LUJETSA/N,K(9000,5),P(9000,5),V(9000,5)
260cc SAVE /LUJETSA/
261 COMMON/LUDAT1A/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
262cc SAVE /LUDAT1A/
263
264clin-9/29/03 changed name in order to distinguish from /prec2/
265 COMMON /ARPRC/ ITYPAR(MAXSTR),
266 & GXAR(MAXSTR), GYAR(MAXSTR), GZAR(MAXSTR), FTAR(MAXSTR),
267 & PXAR(MAXSTR), PYAR(MAXSTR), PZAR(MAXSTR), PEAR(MAXSTR),
268 & XMAR(MAXSTR)
269ccbz11/11/98
270c COMMON /ARPRC/ ITYP(MAXSTR),
271c & GX(MAXSTR), GY(MAXSTR), GZ(MAXSTR), FT(MAXSTR),
272c & PX(MAXSTR), PY(MAXSTR), PZ(MAXSTR), EE(MAXSTR),
273c & XM(MAXSTR)
274cc SAVE /ARPRC/
275ccbz11/11/98end
276
277cbz1/25/99
278 COMMON /PARA1/ MUL
279cc SAVE /PARA1/
280 COMMON /prec1/GX0(MAXPTN),GY0(MAXPTN),GZ0(MAXPTN),FT0(MAXPTN),
281 & PX0(MAXPTN), PY0(MAXPTN), PZ0(MAXPTN), E0(MAXPTN),
282 & XMASS0(MAXPTN), ITYP0(MAXPTN)
283cc SAVE /prec1/
284 COMMON /prec2/GX5(MAXPTN),GY5(MAXPTN),GZ5(MAXPTN),FT5(MAXPTN),
285 & PX5(MAXPTN), PY5(MAXPTN), PZ5(MAXPTN), E5(MAXPTN),
286 & XMASS5(MAXPTN), ITYP5(MAXPTN)
287cc SAVE /prec2/
288 COMMON /ilist7/ LSTRG0(MAXPTN), LPART0(MAXPTN)
289cc SAVE /ilist7/
290 COMMON /ilist8/ LSTRG1(MAXPTN), LPART1(MAXPTN)
291cc SAVE /ilist8/
292 COMMON /SREC1/ NSP, NST, NSI
293cc SAVE /SREC1/
294 COMMON /SREC2/ATAUI(MAXSTR),ZT1(MAXSTR),ZT2(MAXSTR),ZT3(MAXSTR)
295cc SAVE /SREC2/
296cbz1/25/99end
297
298clin-2/25/00
299 COMMON /frzout/ xnprod(30),etprod(30),xnfrz(30),etfrz(30),
300 & dnprod(30),detpro(30),dnfrz(30),detfrz(30)
301cc SAVE /frzout/
302clin-4/11/01 soft:
303 common/anim/nevent,isoft,isflag,izpc
304cc SAVE /anim/
305clin-4/25/01 soft3:
306 DOUBLE PRECISION PXSGS,PYSGS,PZSGS,PESGS,PMSGS,
307 1 GXSGS,GYSGS,GZSGS,FTSGS
308 COMMON/SOFT/PXSGS(MAXSTR,3),PYSGS(MAXSTR,3),PZSGS(MAXSTR,3),
309 & PESGS(MAXSTR,3),PMSGS(MAXSTR,3),GXSGS(MAXSTR,3),
310 & GYSGS(MAXSTR,3),GZSGS(MAXSTR,3),FTSGS(MAXSTR,3),
311 & K1SGS(MAXSTR,3),K2SGS(MAXSTR,3),NJSGS(MAXSTR)
312cc SAVE /SOFT/
313clin-4/26/01 lepton and photon info:
314 COMMON /NOPREC/ NNOZPC, ITYPN(MAXIDL),
315 & GXN(MAXIDL), GYN(MAXIDL), GZN(MAXIDL), FTN(MAXIDL),
316 & PXN(MAXIDL), PYN(MAXIDL), PZN(MAXIDL), EEN(MAXIDL),
317 & XMN(MAXIDL)
318cc SAVE /NOPREC/
319clin-6/22/01:
320 common /lastt/itimeh,bimp
321cc SAVE /lastt/
322 COMMON /AREVT/ IAEVT, IARUN, MISS
323 common/phidcy/iphidcy,pttrig,ntrig,maxmiss
324cwei DOUBLE PRECISION PATT
325 SAVE
326
327cgsfs WRITE(*,*) "IN Hijing, FRAME=",FRAME
328cgsfs WRITE(*,*) "IN Hijing, BMIN=",BMIN0
329cgsfs WRITE(*,*) "IN Hijing, BMAX=",BMAX0
330
331 BMAX=MIN(BMAX0,HIPR1(34)+HIPR1(35))
332 BMIN=MIN(BMIN0,BMAX)
333 IF(IHNT2(1).LE.1 .AND. IHNT2(3).LE.1) THEN
334 BMIN=0.0
335 BMAX=2.5*SQRT(HIPR1(31)*0.1/HIPR1(40))
336 ENDIF
337C ********HIPR1(31) is in mb =0.1fm**2
338C*******THE FOLLOWING IS TO SELECT THE COORDINATIONS OF NUCLEONS
339C BOTH IN PROJECTILE AND TARGET NUCLEAR( in fm)
340C
341cgsfs WRITE(*,*) "IN Hijing, Modified BMIN=",BMIN
342cgsfs WRITE(*,*) "IN Hijing, Modified BMAX=",BMAX
343 YP(1,1)=0.0
344 YP(2,1)=0.0
345 YP(3,1)=0.0
346 IF(IHNT2(1).LE.1) GO TO 14
347 DO 10 KP=1,IHNT2(1)
3485 R=HIRND(1)
349 X=RANART(NSEED)
350 CX=2.0*X-1.0
351 SX=SQRT(1.0-CX*CX)
352C ********choose theta from uniform cos(theta) distr
353 PHI=RANART(NSEED)*2.0*HIPR1(40)
354C ********choose phi form uniform phi distr 0 to 2*pi
355 YP(1,KP)=R*SX*COS(PHI)
356 YP(2,KP)=R*SX*SIN(PHI)
357 YP(3,KP)=R*CX
358 IF(HIPR1(29).EQ.0.0) GO TO 10
359 DO 8 KP2=1,KP-1
360 DNBP1=(YP(1,KP)-YP(1,KP2))**2
361 DNBP2=(YP(2,KP)-YP(2,KP2))**2
362 DNBP3=(YP(3,KP)-YP(3,KP2))**2
363 DNBP=DNBP1+DNBP2+DNBP3
364 IF(DNBP.LT.HIPR1(29)*HIPR1(29)) GO TO 5
365C ********two neighbors cannot be closer than
366C HIPR1(29)
3678 CONTINUE
36810 CONTINUE
369
370clin-1/27/03 Hulthen wavefn for deuteron borrowed from hijing1.382.f,
371c but modified [divide by 2, & x(p)=-x(n)]:
372c (Note: hijing1.383.f has corrected this bug in hijing1.382.f)
373 if(IHNT2(1).EQ.2) then
374 rnd1=max(RANART(NSEED),1.0e-20)
375 rnd2=max(RANART(NSEED),1.0e-20)
376 rnd3=max(RANART(NSEED),1.0e-20)
377 R=-(log(rnd1)*4.38/2.0+log(rnd2)*0.85/2.0
378 & +4.38*0.85*log(rnd3)/(4.38+0.85))
379 X=RANART(NSEED)
380 CX=2.0*X-1.0
381 SX=SQRT(1.0-CX*CX)
382 PHI=RANART(NSEED)*2.0*HIPR1(40)
383c R above is the relative distance between p & n in a deuteron:
384 R=R/2.
385 YP(1,1)=R*SX*COS(PHI)
386 YP(2,1)=R*SX*SIN(PHI)
387 YP(3,1)=R*CX
388c p & n has opposite coordinates in the deuteron frame:
389 YP(1,2)=-YP(1,1)
390 YP(2,2)=-YP(2,1)
391 YP(3,2)=-YP(3,1)
392 endif
393
394 DO 12 I=1,IHNT2(1)-1
395 DO 12 J=I+1,IHNT2(1)
396 IF(YP(3,I).GT.YP(3,J)) GO TO 12
397 Y1=YP(1,I)
398 Y2=YP(2,I)
399 Y3=YP(3,I)
400 YP(1,I)=YP(1,J)
401 YP(2,I)=YP(2,J)
402 YP(3,I)=YP(3,J)
403 YP(1,J)=Y1
404 YP(2,J)=Y2
405 YP(3,J)=Y3
40612 CONTINUE
407C
408C******************************
40914 YT(1,1)=0.0
410 YT(2,1)=0.0
411 YT(3,1)=0.0
412 IF(IHNT2(3).LE.1) GO TO 24
413 DO 20 KT=1,IHNT2(3)
41415 R=HIRND(2)
415 X=RANART(NSEED)
416 CX=2.0*X-1.0
417 SX=SQRT(1.0-CX*CX)
418C ********choose theta from uniform cos(theta) distr
419 PHI=RANART(NSEED)*2.0*HIPR1(40)
420C ********chose phi form uniform phi distr 0 to 2*pi
421 YT(1,KT)=R*SX*COS(PHI)
422 YT(2,KT)=R*SX*SIN(PHI)
423 YT(3,KT)=R*CX
424 IF(HIPR1(29).EQ.0.0) GO TO 20
425 DO 18 KT2=1,KT-1
426 DNBT1=(YT(1,KT)-YT(1,KT2))**2
427 DNBT2=(YT(2,KT)-YT(2,KT2))**2
428 DNBT3=(YT(3,KT)-YT(3,KT2))**2
429 DNBT=DNBT1+DNBT2+DNBT3
430 IF(DNBT.LT.HIPR1(29)*HIPR1(29)) GO TO 15
431C ********two neighbors cannot be closer than
432C HIPR1(29)
43318 CONTINUE
43420 CONTINUE
435c
436clin-1/27/03 Hulthen wavefn for deuteron borrowed from hijing1.382.f,
437c but modified [divide by 2, & x(p)=-x(n)]:
438 if(IHNT2(3).EQ.2) then
439 rnd1=max(RANART(NSEED),1.0e-20)
440 rnd2=max(RANART(NSEED),1.0e-20)
441 rnd3=max(RANART(NSEED),1.0e-20)
442 R=-(log(rnd1)*4.38/2.0+log(rnd2)*0.85/2.0
443 & +4.38*0.85*log(rnd3)/(4.38+0.85))
444 X=RANART(NSEED)
445 CX=2.0*X-1.0
446 SX=SQRT(1.0-CX*CX)
447 PHI=RANART(NSEED)*2.0*HIPR1(40)
448 R=R/2.
449 YT(1,1)=R*SX*COS(PHI)
450 YT(2,1)=R*SX*SIN(PHI)
451 YT(3,1)=R*CX
452 YT(1,2)=-YT(1,1)
453 YT(2,2)=-YT(2,1)
454 YT(3,2)=-YT(3,1)
455 endif
456c
457 DO 22 I=1,IHNT2(3)-1
458 DO 22 J=I+1,IHNT2(3)
459 IF(YT(3,I).LT.YT(3,J)) GO TO 22
460 Y1=YT(1,I)
461 Y2=YT(2,I)
462 Y3=YT(3,I)
463 YT(1,I)=YT(1,J)
464 YT(2,I)=YT(2,J)
465 YT(3,I)=YT(3,J)
466 YT(1,J)=Y1
467 YT(2,J)=Y2
468 YT(3,J)=Y3
46922 CONTINUE
470
471C********************
47224 MISS=-1
47350 MISS=MISS+1
474
475clin-6/2009 ctest on
476c IF(MISS.GT.50) THEN
477 IF(MISS.GT.maxmiss) THEN
478 WRITE(6,*) 'infinite loop happened in HIJING'
479 STOP
480 ENDIF
481
482clin-4/30/01:
483 itest=0
484
485 NATT=0
486 JATT=0
487 EATT=0.0
488 CALL HIJINI
489 NLOP=0
490C ********Initialize for a new event
49160 NT=0
492 NP=0
493 N0=0
494 N01=0
495 N10=0
496 N11=0
497 NELT=0
498 NINTHJ=0
499 NELP=0
500 NINP=0
501 NSG=0
502 NCOLT=0
503
504C**** BB IS THE ABSOLUTE VALUE OF IMPACT PARAMETER,BB**2 IS
505C RANDOMLY GENERATED AND ITS ORIENTATION IS RANDOMLY SET
506C BY THE ANGLE PHI FOR EACH COLLISION.******************
507C
508 BB=SQRT(BMIN**2+RANART(NSEED)*(BMAX**2-BMIN**2))
509cbz6/28/99 flow1
48beeea0 510c PHI=2.0*HIPR1(40)*RANART(NSEED)
511 PHI=0.
0119ef9a 512cbz6/28/99 flow1 end
513 BBX=BB*COS(PHI)
514 BBY=BB*SIN(PHI)
515 HINT1(19)=BB
516 HINT1(20)=PHI
517C
518 DO 70 JP=1,IHNT2(1)
519 DO 70 JT=1,IHNT2(3)
520 SCIP(JP,JT)=-1.0
521 B2=(YP(1,JP)+BBX-YT(1,JT))**2+(YP(2,JP)+BBY-YT(2,JT))**2
522 R2=B2*HIPR1(40)/HIPR1(31)/0.1
523C ********mb=0.1*fm, YP is in fm,HIPR1(31) is in mb
524 RRB1=MIN((YP(1,JP)**2+YP(2,JP)**2)
525 & /1.2**2/REAL(IHNT2(1))**0.6666667,1.0)
526 RRB2=MIN((YT(1,JT)**2+YT(2,JT)**2)
527 & /1.2**2/REAL(IHNT2(3))**0.6666667,1.0)
528 APHX1=HIPR1(6)*4.0/3.0*(IHNT2(1)**0.3333333-1.0)
529 & *SQRT(1.0-RRB1)
530 APHX2=HIPR1(6)*4.0/3.0*(IHNT2(3)**0.3333333-1.0)
531 & *SQRT(1.0-RRB2)
532 HINT1(18)=HINT1(14)-APHX1*HINT1(15)
533 & -APHX2*HINT1(16)+APHX1*APHX2*HINT1(17)
534 IF(IHPR2(14).EQ.0.OR.
535 & (IHNT2(1).EQ.1.AND.IHNT2(3).EQ.1)) THEN
536 GS=1.0-EXP(-(HIPR1(30)+HINT1(18))*ROMG(R2)/HIPR1(31))
537 RANTOT=RANART(NSEED)
538 IF(RANTOT.GT.GS) GO TO 70
539 GO TO 65
540 ENDIF
541 GSTOT0=2.0*(1.0-EXP(-(HIPR1(30)+HINT1(18))
542 & /HIPR1(31)/2.0*ROMG(0.0)))
543 R2=R2/GSTOT0
544 GS=1.0-EXP(-(HIPR1(30)+HINT1(18))/HIPR1(31)*ROMG(R2))
545 GSTOT=2.0*(1.0-SQRT(1.0-GS))
546 RANTOT=RANART(NSEED)*GSTOT0
547 IF(RANTOT.GT.GSTOT) GO TO 70
548 IF(RANTOT.GT.GS) THEN
549 CALL HIJCSC(JP,JT)
550 GO TO 70
551C ********perform elastic collisions
552 ENDIF
553 65 SCIP(JP,JT)=R2
554 RNIP(JP,JT)=RANTOT
555 SJIP(JP,JT)=HINT1(18)
556 NCOLT=NCOLT+1
557 IPCOL(NCOLT)=JP
558 ITCOL(NCOLT)=JT
55970 CONTINUE
560C ********total number interactions proj and targ has
561C suffered
562
563clin-5/22/01 write impact parameter:
564 bimp=bb
565c write(6,*) '#impact parameter,nlop,ncolt=',bimp,nlop,ncolt
566
567 IF(NCOLT.EQ.0) THEN
568 NLOP=NLOP+1
569 IF(NLOP.LE.20.OR.
570 & (IHNT2(1).EQ.1.AND.IHNT2(3).EQ.1)) GO TO 60
571 RETURN
572 ENDIF
573C ********At large impact parameter, there maybe no
574C interaction at all. For NN collision
575C repeat the event until interaction happens
576C
577 IF(IHPR2(3).NE.0) THEN
578 NHARD=1+INT(RANART(NSEED)*(NCOLT-1)+0.5)
579 NHARD=MIN(NHARD,NCOLT)
580 JPHARD=IPCOL(NHARD)
581 JTHARD=ITCOL(NHARD)
582clin-6/2009 ctest off:
583c write(99,*) IAEVT,NHARD,NCOLT,JPHARD,JTHARD
584 ENDIF
585C
586 IF(IHPR2(9).EQ.1) THEN
587 NMINI=1+INT(RANART(NSEED)*(NCOLT-1)+0.5)
588 NMINI=MIN(NMINI,NCOLT)
589 JPMINI=IPCOL(NMINI)
590 JTMINI=ITCOL(NMINI)
591 ENDIF
592C ********Specifying the location of the hard and
593C minijet if they are enforced by user
594C
595 DO 200 JP=1,IHNT2(1)
596 DO 200 JT=1,IHNT2(3)
597 IF(SCIP(JP,JT).EQ.-1.0) GO TO 200
598 NFP(JP,11)=NFP(JP,11)+1
599 NFT(JT,11)=NFT(JT,11)+1
600 IF(NFP(JP,5).LE.1 .AND. NFT(JT,5).GT.1) THEN
601 NP=NP+1
602 N01=N01+1
603 ELSE IF(NFP(JP,5).GT.1 .AND. NFT(JT,5).LE.1) THEN
604 NT=NT+1
605 N10=N10+1
606 ELSE IF(NFP(JP,5).LE.1 .AND. NFT(JT,5).LE.1) THEN
607 NP=NP+1
608 NT=NT+1
609 N0=N0+1
610 ELSE IF(NFP(JP,5).GT.1 .AND. NFT(JT,5).GT.1) THEN
611 N11=N11+1
612 ENDIF
613 JOUT=0
614 NFP(JP,10)=0
615 NFT(JT,10)=0
616C*****************************************************************
617 IF(IHPR2(8).EQ.0 .AND. IHPR2(3).EQ.0) GO TO 160
618C ********When IHPR2(8)=0 no jets are produced
619 IF(NFP(JP,6).LT.0 .OR. NFT(JT,6).LT.0) GO TO 160
620C ********jets can not be produced for (JP,JT)
621C because not enough energy avaible for
622C JP or JT
623 R2=SCIP(JP,JT)
624 HINT1(18)=SJIP(JP,JT)
625 TT=ROMG(R2)*HINT1(18)/HIPR1(31)
626 TTS=HIPR1(30)*ROMG(R2)/HIPR1(31)
627 NJET=0
628
629 IF(IHPR2(3).NE.0 .AND. JP.EQ.JPHARD .AND. JT.EQ.JTHARD) THEN
630 CALL JETINI(JP,JT,1)
631 CALL HIJHRD(JP,JT,0,JFLG,0)
632 HINT1(26)=HINT1(47)
633 HINT1(27)=HINT1(48)
634 HINT1(28)=HINT1(49)
635 HINT1(29)=HINT1(50)
636 HINT1(36)=HINT1(67)
637 HINT1(37)=HINT1(68)
638 HINT1(38)=HINT1(69)
639 HINT1(39)=HINT1(70)
640C
641 IF(ABS(HINT1(46)).GT.HIPR1(11).AND.JFLG.EQ.2) NFP(JP,7)=1
642 IF(ABS(HINT1(56)).GT.HIPR1(11).AND.JFLG.EQ.2) NFT(JT,7)=1
643 IF(MAX(ABS(HINT1(46)),ABS(HINT1(56))).GT.HIPR1(11).AND.
644 & JFLG.GE.3) IASG(NSG,3)=1
645 IHNT2(9)=IHNT2(14)
646 IHNT2(10)=IHNT2(15)
647 DO 105 I05=1,5
648 HINT1(20+I05)=HINT1(40+I05)
649 HINT1(30+I05)=HINT1(50+I05)
650 105 CONTINUE
651clin-6/2009 ctest off:
652c write(99,*) jp,jt,IHPR2(3),HIPR1(10),njet,
653c 1 ihnt2(9),hint1(21),hint1(22),hint1(23),
654c 2 ihnt2(10),hint1(31),hint1(32),hint1(33)
655c write(99,*) ' '
656 JOUT=1
657 IF(IHPR2(8).EQ.0) GO TO 160
658 RRB1=MIN((YP(1,JP)**2+YP(2,JP)**2)/1.2**2
659 & /REAL(IHNT2(1))**0.6666667,1.0)
660 RRB2=MIN((YT(1,JT)**2+YT(2,JT)**2)/1.2**2
661 & /REAL(IHNT2(3))**0.6666667,1.0)
662 APHX1=HIPR1(6)*4.0/3.0*(IHNT2(1)**0.3333333-1.0)
663 & *SQRT(1.0-RRB1)
664 APHX2=HIPR1(6)*4.0/3.0*(IHNT2(3)**0.3333333-1.0)
665 & *SQRT(1.0-RRB2)
666 HINT1(65)=HINT1(61)-APHX1*HINT1(62)
667 & -APHX2*HINT1(63)+APHX1*APHX2*HINT1(64)
668 TTRIG=ROMG(R2)*HINT1(65)/HIPR1(31)
669 NJET=-1
670C ********subtract the trigger jet from total number
671C of jet production to be done since it has
672C already been produced here
673 XR1=-ALOG(EXP(-TTRIG)+RANART(NSEED)*(1.0-EXP(-TTRIG)))
674 106 NJET=NJET+1
675 XR1=XR1-ALOG(max(RANART(NSEED),1.0e-20))
676 IF(XR1.LT.TTRIG) GO TO 106
677 XR=0.0
678 107 NJET=NJET+1
679 XR=XR-ALOG(max(RANART(NSEED),1.0e-20))
680 IF(XR.LT.TT-TTRIG) GO TO 107
681 NJET=NJET-1
682 GO TO 112
683 ENDIF
684C ********create a hard interaction with specified P_T
685c when IHPR2(3)>0
686 IF(IHPR2(9).EQ.1.AND.JP.EQ.JPMINI.AND.JT.EQ.JTMINI) GO TO 110
687C ********create at least one pair of mini jets
688C when IHPR2(9)=1
689C
690 IF(IHPR2(8).GT.0 .AND.RNIP(JP,JT).LT.EXP(-TT)*
691 & (1.0-EXP(-TTS))) GO TO 160
692C ********this is the probability for no jet production
693110 XR=-ALOG(EXP(-TT)+RANART(NSEED)*(1.0-EXP(-TT)))
694111 NJET=NJET+1
695 XR=XR-ALOG(max(RANART(NSEED),1.0e-20))
696 IF(XR.LT.TT) GO TO 111
697112 NJET=MIN(NJET,IHPR2(8))
698 IF(IHPR2(8).LT.0) NJET=ABS(IHPR2(8))
699C ******** Determine number of mini jet production
700C
701 DO 150 ijet=1,NJET
702 CALL JETINI(JP,JT,0)
703 CALL HIJHRD(JP,JT,JOUT,JFLG,1)
704C ********JFLG=1 jets valence quarks, JFLG=2 with
705C gluon jet, JFLG=3 with q-qbar prod for
706C (JP,JT). If JFLG=0 jets can not be produced
707C this time. If JFLG=-1, error occured abandon
708C this event. JOUT is the total hard scat for
709C (JP,JT) up to now.
710 IF(JFLG.EQ.0) GO TO 160
711 IF(JFLG.LT.0) THEN
712 IF(IHPR2(10).NE.0) WRITE(6,*) 'error occured in HIJHRD'
713 GO TO 50
714 ENDIF
715 JOUT=JOUT+1
716 IF(ABS(HINT1(46)).GT.HIPR1(11).AND.JFLG.EQ.2) NFP(JP,7)=1
717 IF(ABS(HINT1(56)).GT.HIPR1(11).AND.JFLG.EQ.2) NFT(JT,7)=1
718 IF(MAX(ABS(HINT1(46)),ABS(HINT1(56))).GT.HIPR1(11).AND.
719 & JFLG.GE.3) IASG(NSG,3)=1
720C ******** jet with PT>HIPR1(11) will be quenched
721 150 CONTINUE
722 160 CONTINUE
723
724 CALL HIJSFT(JP,JT,JOUT,IERROR)
725 IF(IERROR.NE.0) THEN
726 IF(IHPR2(10).NE.0) WRITE(6,*) 'error occured in HIJSFT'
727 GO TO 50
728 ENDIF
729C
730C ********conduct soft scattering between JP and JT
731 JATT=JATT+JOUT
732200 CONTINUE
733c
734c**************************
735c
736clin-6/2009 write out initial minijet information:
737 call minijet_out(BB)
738 if(pttrig.gt.0.and.ntrig.eq.0) goto 50
739clin-6/2009 write out initial transverse positions of initial nucleons:
740c write(94,*) IAEVT,MISS,IHNT2(1),IHNT2(3)
741 DO 201 JP=1,IHNT2(1)
742clin-6/2009:
743c write(94,203) YP(1,JP)+0.5*BB, YP(2,JP), JP, NFP(JP,5)
744 IF(NFP(JP,5).GT.2) THEN
745 NINP=NINP+1
746 ELSE IF(NFP(JP,5).EQ.2.OR.NFP(JP,5).EQ.1) THEN
747 NELP=NELP+1
748 ENDIF
749 201 continue
750 DO 202 JT=1,IHNT2(3)
751clin-6/2009 target nucleon # has a minus sign for distinction from projectile:
752c write(94,203) YT(1,JT)-0.5*BB, YT(2,JT), -JT, NFT(JT,5)
753 IF(NFT(JT,5).GT.2) THEN
754 NINTHJ=NINTHJ+1
755 ELSE IF(NFT(JT,5).EQ.2.OR.NFT(JT,5).EQ.1) THEN
756 NELT=NELT+1
757 ENDIF
758 202 continue
759 203 format(f10.3,1x,f10.3,2(1x,I5))
760c
761c*******************************
762
763
764C********perform jet quenching for jets with PT>HIPR1(11)**********
765
766 IF((IHPR2(8).NE.0.OR.IHPR2(3).NE.0).AND.IHPR2(4).GT.0.AND.
767 & IHNT2(1).GT.1.AND.IHNT2(3).GT.1) THEN
768 DO 271 I=1,IHNT2(1)
769 IF(NFP(I,7).EQ.1) CALL QUENCH(I,1)
770271 CONTINUE
771 DO 272 I=1,IHNT2(3)
772 IF(NFT(I,7).EQ.1) CALL QUENCH(I,2)
773272 CONTINUE
774 DO 273 ISG=1,NSG
775 IF(IASG(ISG,3).EQ.1) CALL QUENCH(ISG,3)
776273 CONTINUE
777 ENDIF
778
779clin*****4/09/01-soft1, default way of treating strings:
780 if(isoft.eq.1) then
781clin-4/16/01 allow fragmentation:
782 isflag=1
783
784cbz1/25/99
785c.....transfer data from HIJING to ZPC
786 NSP = IHNT2(1)
787 NST = IHNT2(3)
788 NSI = NSG
789 ISTR = 0
790 NPAR = 0
791 DO 1008 I = 1, IHNT2(1)
792 ISTR = ISTR + 1
793 DO 1007 J = 1, NPJ(I)
794cbz1/27/99
795c.....for now only consider gluon cascade
796 IF (KFPJ(I, J) .EQ. 21) THEN
797cbz1/27/99end
798
799 NPAR = NPAR + 1
800 LSTRG0(NPAR) = ISTR
801 LPART0(NPAR) = J
802 ITYP0(NPAR) = KFPJ(I, J)
803cbz6/28/99 flow1
804clin-7/20/01 add dble or sngl to make precisions consistent
805c GX0(NPAR) = YP(1, I)
806 GX0(NPAR) = dble(YP(1, I) + 0.5 * BB)
807cbz6/28/99 flow1 end
808 GY0(NPAR) = dble(YP(2, I))
809 GZ0(NPAR) = 0d0
810 FT0(NPAR) = 0d0
811 PX0(NPAR) = dble(PJPX(I, J))
812 PY0(NPAR) = dble(PJPY(I, J))
813 PZ0(NPAR) = dble(PJPZ(I, J))
814 XMASS0(NPAR) = dble(PJPM(I, J))
815c E0(NPAR) = dble(PJPE(I, J))
816 E0(NPAR) = dsqrt(PX0(NPAR)**2+PY0(NPAR)**2
817 1 +PZ0(NPAR)**2+XMASS0(NPAR)**2)
818clin-7/20/01-end
819
820cbz1/27/99
821c.....end gluon selection
822 END IF
823cbz1/27/99end
824 1007 CONTINUE
825 1008 CONTINUE
826 DO 1010 I = 1, IHNT2(3)
827 ISTR = ISTR + 1
828 DO 1009 J = 1, NTJ(I)
829cbz1/27/99
830c.....for now only consider gluon cascade
831 IF (KFTJ(I, J) .EQ. 21) THEN
832cbz1/27/99end
833 NPAR = NPAR + 1
834 LSTRG0(NPAR) = ISTR
835 LPART0(NPAR) = J
836 ITYP0(NPAR) = KFTJ(I, J)
837cbz6/28/99 flow1
838clin-7/20/01 add dble or sngl to make precisions consistent
839c GX0(NPAR) = YT(1, I)
840 GX0(NPAR) = dble(YT(1, I) - 0.5 * BB)
841cbz6/28/99 flow1 end
842 GY0(NPAR) = dble(YT(2, I))
843 GZ0(NPAR) = 0d0
844 FT0(NPAR) = 0d0
845 PX0(NPAR) = dble(PJTX(I, J))
846 PY0(NPAR) = dble(PJTY(I, J))
847 PZ0(NPAR) = dble(PJTZ(I, J))
848 XMASS0(NPAR) = dble(PJTM(I, J))
849c E0(NPAR) = dble(PJTE(I, J))
850 E0(NPAR) = dsqrt(PX0(NPAR)**2+PY0(NPAR)**2
851 1 +PZ0(NPAR)**2+XMASS0(NPAR)**2)
852
853cbz1/27/99
854c.....end gluon selection
855 END IF
856cbz1/27/99end
857 1009 CONTINUE
858 1010 CONTINUE
859 DO 1012 I = 1, NSG
860 ISTR = ISTR + 1
861 DO 1011 J = 1, NJSG(I)
862cbz1/27/99
863c.....for now only consider gluon cascade
864 IF (K2SG(I, J) .EQ. 21) THEN
865cbz1/27/99end
866 NPAR = NPAR + 1
867 LSTRG0(NPAR) = ISTR
868 LPART0(NPAR) = J
869 ITYP0(NPAR) = K2SG(I, J)
870clin-7/20/01 add dble or sngl to make precisions consistent:
871 GX0(NPAR) = 0.5d0 *
872 1 dble(YP(1, IASG(I, 1)) + YT(1, IASG(I, 2)))
873 GY0(NPAR) = 0.5d0 *
874 2 dble(YP(2, IASG(I, 1)) + YT(2, IASG(I, 2)))
875 GZ0(NPAR) = 0d0
876 FT0(NPAR) = 0d0
877 PX0(NPAR) = dble(PXSG(I, J))
878 PY0(NPAR) = dble(PYSG(I, J))
879 PZ0(NPAR) = dble(PZSG(I, J))
880 XMASS0(NPAR) = dble(PMSG(I, J))
881c E0(NPAR) = dble(PESG(I, J))
882 E0(NPAR) = dsqrt(PX0(NPAR)**2+PY0(NPAR)**2
883 1 +PZ0(NPAR)**2+XMASS0(NPAR)**2)
884cbz1/27/99
885c.....end gluon selection
886 END IF
887cbz1/27/99end
888 1011 CONTINUE
889 1012 CONTINUE
890 MUL = NPAR
891
892cbz2/4/99
893 CALL HJANA1
894cbz2/4/99end
895
896clin-6/2009:
897 if(ioscar.eq.3) WRITE (95, *) IAEVT, mul
898c.....call ZPC for parton cascade
899 CALL ZPCMN
900
901c write out parton and wounded nucleon information to ana/zpc1.mom:
902clin-6/2009:
903c WRITE (14, 395) ITEST, MUL, bimp, NELP,NINP,NELT,NINTHJ
904c WRITE (14, 395) IAEVT, MISS, MUL, bimp, NELP,NINP,NELT,NINTHJ
905 DO 1013 I = 1, MUL
906cc WRITE (14, 411) PX5(I), PY5(I), PZ5(I), ITYP5(I),
907c & XMASS5(I), E5(I)
908 if(dmax1(abs(GX5(I)),abs(GY5(I)),abs(GZ5(I)),abs(FT5(I)))
909 1 .lt.9999) then
910c write(14,210) ITYP5(I), PX5(I), PY5(I), PZ5(I), XMASS5(I),
911c 1 GX5(I), GY5(I), GZ5(I), FT5(I)
912 else
913c change format for large numbers:
914c write(14,211) ITYP5(I), PX5(I), PY5(I), PZ5(I), XMASS5(I),
915c 1 GX5(I), GY5(I), GZ5(I), FT5(I)
916 endif
917
918 1013 CONTINUE
919 210 format(I6,2(1x,f8.3),1x,f10.3,1x,f6.3,4(1x,f8.2))
920 211 format(I6,2(1x,f8.3),1x,f10.3,1x,f6.3,4(1x,e8.2))
921 395 format(3I8,f10.4,4I5)
922
923clin-4/09/01:
924 itest=itest+1
925c 411 FORMAT(1X, 3F10.3, I6, 2F10.3)
926cbz3/19/99 end
927
928clin-5/2009 ctest off:
929c call frztm(1,1)
930
931c.....transfer data back from ZPC to HIJING
932 DO 1014 I = 1, MUL
933 IF (LSTRG1(I) .LE. NSP) THEN
934 NSTRG = LSTRG1(I)
935 NPART = LPART1(I)
936 KFPJ(NSTRG, NPART) = ITYP5(I)
937clin-7/20/01 add dble or sngl to make precisions consistent
938 PJPX(NSTRG, NPART) = sngl(PX5(I))
939 PJPY(NSTRG, NPART) = sngl(PY5(I))
940 PJPZ(NSTRG, NPART) = sngl(PZ5(I))
941 PJPE(NSTRG, NPART) = sngl(E5(I))
942 PJPM(NSTRG, NPART) = sngl(XMASS5(I))
943 ELSE IF (LSTRG1(I) .LE. NSP + NST) THEN
944 NSTRG = LSTRG1(I) - NSP
945 NPART = LPART1(I)
946 KFTJ(NSTRG, NPART) = ITYP5(I)
947 PJTX(NSTRG, NPART) = sngl(PX5(I))
948 PJTY(NSTRG, NPART) = sngl(PY5(I))
949 PJTZ(NSTRG, NPART) = sngl(PZ5(I))
950 PJTE(NSTRG, NPART) = sngl(E5(I))
951 PJTM(NSTRG, NPART) = sngl(XMASS5(I))
952 ELSE
953 NSTRG = LSTRG1(I) - NSP - NST
954 NPART = LPART1(I)
955 K2SG(NSTRG, NPART) = ITYP5(I)
956 PXSG(NSTRG, NPART) = sngl(PX5(I))
957 PYSG(NSTRG, NPART) = sngl(PY5(I))
958 PZSG(NSTRG, NPART) = sngl(PZ5(I))
959 PESG(NSTRG, NPART) = sngl(E5(I))
960 PMSG(NSTRG, NPART) = sngl(XMASS5(I))
961 END IF
962 1014 CONTINUE
963cbz1/25/99end
964
965cbz2/4/99
966 CALL HJANA2
967cbz2/4/99end
968
969clin*****4/09/01-soft2, put q+dq+X in strings into ZPC:
970 elseif(isoft.eq.2) then
971 NSP = IHNT2(1)
972 NST = IHNT2(3)
973clin-4/27/01:
974 NSI = NSG
975 NPAR=0
976 ISTR=0
977C
978clin No fragmentation to hadrons, only on parton level,
979c and transfer minijet and string data from HIJING to ZPC:
980 MSTJ(1)=0
981clin-4/12/01 forbid soft radiation before ZPC to avoid small-mass strings,
982c and forbid jet order reversal before ZPC to avoid unphysical flavors:
983 IHPR2(1)=0
984 isflag=0
985
986 IF(IHPR2(20).NE.0) THEN
987 DO 320 NTP=1,2
988 DO 310 jjtp=1,IHNT2(2*NTP-1)
989 ISTR = ISTR + 1
990c change: do gluon kink only once: either here or in fragmentation.
991 CALL HIJFRG(jjtp,NTP,IERROR)
992c call lulist(1)
993 if(NTP.eq.1) then
994c 354 continue
995 NPJ(jjtp)=MAX0(N-2,0)
996
997clin-4/12/01: NPJ(jjtp)=MAX0(ipartn-2,0)
998 else
999c 355 continue
1000 NTJ(jjtp)=MAX0(N-2,0)
1001clin-4/12/01: NTJ(jjtp)=MAX0(ipartn-2,0)
1002 endif
1003
1004 do 300 ii=1,N
1005 NPAR = NPAR + 1
1006 LSTRG0(NPAR) = ISTR
1007 LPART0(NPAR) = II
1008 ITYP0(NPAR) = K(II,2)
1009 GZ0(NPAR) = 0d0
1010 FT0(NPAR) = 0d0
1011clin-7/20/01 add dble or sngl to make precisions consistent
1012 PX0(NPAR) = dble(P(II,1))
1013 PY0(NPAR) = dble(P(II,2))
1014 PZ0(NPAR) = dble(P(II,3))
1015 XMASS0(NPAR) = dble(P(II,5))
1016c E0(NPAR) = dble(P(II,4))
1017 E0(NPAR) = dsqrt(PX0(NPAR)**2+PY0(NPAR)**2
1018 1 +PZ0(NPAR)**2+XMASS0(NPAR)**2)
1019 IF (NTP .EQ. 1) THEN
1020clin-7/20/01 add dble or sngl to make precisions consistent
1021 GX0(NPAR) = dble(YP(1, jjtp)+0.5 * BB)
1022 GY0(NPAR) = dble(YP(2, jjtp))
1023 IITYP=ITYP0(NPAR)
1024 nstrg=LSTRG0(NPAR)
1025 if(IITYP.eq.2112.or.IITYP.eq.2212) then
1026 elseif((IITYP.eq.1.or.IITYP.eq.2).and.
1027 1 (II.eq.1.or.II.eq.N)) then
1028 PP(nstrg,6)=sngl(PX0(NPAR))
1029 PP(nstrg,7)=sngl(PY0(NPAR))
1030 PP(nstrg,14)=sngl(XMASS0(NPAR))
1031 elseif((IITYP.eq.1103.or.IITYP.eq.2101
1032 1 .or.IITYP.eq.2103.or.IITYP.eq.2203.
1033 2 .or.IITYP.eq.3101.or.IITYP.eq.3103.
1034 3 .or.IITYP.eq.3201.or.IITYP.eq.3203.or.IITYP.eq.3303)
1035 4 .and.(II.eq.1.or.II.eq.N)) then
1036 PP(nstrg,8)=sngl(PX0(NPAR))
1037 PP(nstrg,9)=sngl(PY0(NPAR))
1038 PP(nstrg,15)=sngl(XMASS0(NPAR))
1039 else
1040 NPART = LPART0(NPAR)-1
1041 KFPJ(NSTRG, NPART) = ITYP0(NPAR)
1042 PJPX(NSTRG, NPART) = sngl(PX0(NPAR))
1043 PJPY(NSTRG, NPART) = sngl(PY0(NPAR))
1044 PJPZ(NSTRG, NPART) = sngl(PZ0(NPAR))
1045 PJPE(NSTRG, NPART) = sngl(E0(NPAR))
1046 PJPM(NSTRG, NPART) = sngl(XMASS0(NPAR))
1047 endif
1048 ELSE
1049 GX0(NPAR) = dble(YT(1, jjtp)-0.5 * BB)
1050 GY0(NPAR) = dble(YT(2, jjtp))
1051 IITYP=ITYP0(NPAR)
1052 nstrg=LSTRG0(NPAR)-NSP
1053 if(IITYP.eq.2112.or.IITYP.eq.2212) then
1054 elseif((IITYP.eq.1.or.IITYP.eq.2).and.
1055 1 (II.eq.1.or.II.eq.N)) then
1056 PT(nstrg,6)=sngl(PX0(NPAR))
1057 PT(nstrg,7)=sngl(PY0(NPAR))
1058 PT(nstrg,14)=sngl(XMASS0(NPAR))
1059 elseif((IITYP.eq.1103.or.IITYP.eq.2101
1060 1 .or.IITYP.eq.2103.or.IITYP.eq.2203.
1061 2 .or.IITYP.eq.3101.or.IITYP.eq.3103.
1062 3 .or.IITYP.eq.3201.or.IITYP.eq.3203.or.IITYP.eq.3303)
1063 4 .and.(II.eq.1.or.II.eq.N)) then
1064 PT(nstrg,8)=sngl(PX0(NPAR))
1065 PT(nstrg,9)=sngl(PY0(NPAR))
1066 PT(nstrg,15)=sngl(XMASS0(NPAR))
1067 else
1068 NPART = LPART0(NPAR)-1
1069 KFTJ(NSTRG, NPART) = ITYP0(NPAR)
1070 PJTX(NSTRG, NPART) = sngl(PX0(NPAR))
1071 PJTY(NSTRG, NPART) = sngl(PY0(NPAR))
1072 PJTZ(NSTRG, NPART) = sngl(PZ0(NPAR))
1073 PJTE(NSTRG, NPART) = sngl(E0(NPAR))
1074 PJTM(NSTRG, NPART) = sngl(XMASS0(NPAR))
1075 endif
1076 END IF
1077 300 continue
1078 310 continue
1079 320 continue
1080 DO 330 ISG=1,NSG
1081 ISTR = ISTR + 1
1082 CALL HIJFRG(ISG,3,IERROR)
1083c call lulist(2)
1084c
1085 NJSG(ISG)=N
1086c
1087 do 1001 ii=1,N
1088 NPAR = NPAR + 1
1089 LSTRG0(NPAR) = ISTR
1090 LPART0(NPAR) = II
1091 ITYP0(NPAR) = K(II,2)
1092 GX0(NPAR)=0.5d0*
1093 1 dble(YP(1,IASG(ISG,1))+YT(1,IASG(ISG,2)))
1094 GY0(NPAR)=0.5d0*
1095 2 dble(YP(2,IASG(ISG,1))+YT(2,IASG(ISG,2)))
1096 GZ0(NPAR) = 0d0
1097 FT0(NPAR) = 0d0
1098 PX0(NPAR) = dble(P(II,1))
1099 PY0(NPAR) = dble(P(II,2))
1100 PZ0(NPAR) = dble(P(II,3))
1101 XMASS0(NPAR) = dble(P(II,5))
1102c E0(NPAR) = dble(P(II,4))
1103 E0(NPAR) = dsqrt(PX0(NPAR)**2+PY0(NPAR)**2
1104 1 +PZ0(NPAR)**2+XMASS0(NPAR)**2)
1105 1001 continue
1106 330 continue
1107 endif
1108
1109 MUL = NPAR
1110cbz2/4/99
1111 CALL HJANA1
1112cbz2/4/99end
1113clin-6/2009:
1114 if(ioscar.eq.3) WRITE (95, *) IAEVT, mul
1115c.....call ZPC for parton cascade
1116 CALL ZPCMN
1117cbz3/19/99
1118clin-6/2009:
1119c WRITE (14, 395) ITEST, MUL, bimp, NELP,NINP,NELT,NINTHJ
1120 WRITE (14, 395) IAEVT, MISS, MUL, bimp, NELP,NINP,NELT,NINTHJ
1121 itest=itest+1
1122
1123 DO 1015 I = 1, MUL
1124c WRITE (14, 311) PX5(I), PY5(I), PZ5(I), ITYP5(I),
1125c & XMASS5(I), E5(I)
1126 WRITE (14, 312) PX5(I), PY5(I), PZ5(I), ITYP5(I),
1127 & XMASS5(I), E5(I),LSTRG1(I), LPART1(I)
1128 1015 CONTINUE
1129c 311 FORMAT(1X, 3F10.4, I6, 2F10.4)
1130 312 FORMAT(1X, 3F10.3, I6, 2F10.3,1X,I6,1X,I3)
1131cbz3/19/99 end
1132
1133clin-5/2009 ctest off:
1134c call frztm(1,1)
1135
1136clin-4/13/01 initialize four momenta and invariant mass of strings after ZPC:
1137 do 1004 nmom=1,5
1138 do 1002 nstrg=1,nsp
1139 PP(nstrg,nmom)=0.
1140 1002 continue
1141 do 1003 nstrg=1,nst
1142 PT(nstrg,nmom)=0.
1143 1003 continue
1144 1004 continue
1145clin-4/13/01-end
1146
1147 DO 1005 I = 1, MUL
1148 IITYP=ITYP5(I)
1149 IF (LSTRG1(I) .LE. NSP) THEN
1150 NSTRG = LSTRG1(I)
1151c nucleons without interactions:
1152 if(IITYP.eq.2112.or.IITYP.eq.2212) then
1153clin-7/20/01 add dble or sngl to make precisions consistent
1154 PP(nstrg,1)=sngl(PX5(I))
1155 PP(nstrg,2)=sngl(PY5(I))
1156 PP(nstrg,3)=sngl(PZ5(I))
1157 PP(nstrg,4)=sngl(E5(I))
1158 PP(nstrg,5)=sngl(XMASS5(I))
1159c valence quark:
1160 elseif((IITYP.eq.1.or.IITYP.eq.2).and.
1161 1 (LPART1(I).eq.1.or.LPART1(I).eq.(NPJ(NSTRG)+2))) then
1162 PP(nstrg,6)=sngl(PX5(I))
1163 PP(nstrg,7)=sngl(PY5(I))
1164 PP(nstrg,14)=sngl(XMASS5(I))
1165 PP(nstrg,1)=PP(nstrg,1)+sngl(PX5(I))
1166 PP(nstrg,2)=PP(nstrg,2)+sngl(PY5(I))
1167 PP(nstrg,3)=PP(nstrg,3)+sngl(PZ5(I))
1168 PP(nstrg,4)=PP(nstrg,4)+sngl(E5(I))
1169 PP(nstrg,5)=sqrt(PP(nstrg,4)**2-PP(nstrg,1)**2
1170 1 -PP(nstrg,2)**2-PP(nstrg,3)**2)
1171c diquark:
1172 elseif((IITYP.eq.1103.or.IITYP.eq.2101
1173 1 .or.IITYP.eq.2103.or.IITYP.eq.2203.
1174 2 .or.IITYP.eq.3101.or.IITYP.eq.3103.
1175 3 .or.IITYP.eq.3201.or.IITYP.eq.3203.or.IITYP.eq.3303)
1176 4 .and.(LPART1(I).eq.1.or.LPART1(I).eq.(NPJ(NSTRG)+2))) then
1177 PP(nstrg,8)=sngl(PX5(I))
1178 PP(nstrg,9)=sngl(PY5(I))
1179 PP(nstrg,15)=sngl(XMASS5(I))
1180 PP(nstrg,1)=PP(nstrg,1)+sngl(PX5(I))
1181 PP(nstrg,2)=PP(nstrg,2)+sngl(PY5(I))
1182 PP(nstrg,3)=PP(nstrg,3)+sngl(PZ5(I))
1183 PP(nstrg,4)=PP(nstrg,4)+sngl(E5(I))
1184 PP(nstrg,5)=sqrt(PP(nstrg,4)**2-PP(nstrg,1)**2
1185 1 -PP(nstrg,2)**2-PP(nstrg,3)**2)
1186c partons in projectile or target strings:
1187 else
1188 NPART = LPART1(I)-1
1189 KFPJ(NSTRG, NPART) = ITYP5(I)
1190 PJPX(NSTRG, NPART) = sngl(PX5(I))
1191 PJPY(NSTRG, NPART) = sngl(PY5(I))
1192 PJPZ(NSTRG, NPART) = sngl(PZ5(I))
1193 PJPE(NSTRG, NPART) = sngl(E5(I))
1194 PJPM(NSTRG, NPART) = sngl(XMASS5(I))
1195 endif
1196 ELSE IF (LSTRG1(I) .LE. NSP + NST) THEN
1197 NSTRG = LSTRG1(I) - NSP
1198 if(IITYP.eq.2112.or.IITYP.eq.2212) then
1199 PT(nstrg,1)=sngl(PX5(I))
1200 PT(nstrg,2)=sngl(PY5(I))
1201 PT(nstrg,3)=sngl(PZ5(I))
1202 PT(nstrg,4)=sngl(E5(I))
1203 PT(nstrg,5)=sngl(XMASS5(I))
1204 elseif((IITYP.eq.1.or.IITYP.eq.2).and.
1205 1 (LPART1(I).eq.1.or.LPART1(I).eq.(NTJ(NSTRG)+2))) then
1206 PT(nstrg,6)=sngl(PX5(I))
1207 PT(nstrg,7)=sngl(PY5(I))
1208 PT(nstrg,14)=sngl(XMASS5(I))
1209 PT(nstrg,1)=PT(nstrg,1)+sngl(PX5(I))
1210 PT(nstrg,2)=PT(nstrg,2)+sngl(PY5(I))
1211 PT(nstrg,3)=PT(nstrg,3)+sngl(PZ5(I))
1212 PT(nstrg,4)=PT(nstrg,4)+sngl(E5(I))
1213 PT(nstrg,5)=sqrt(PT(nstrg,4)**2-PT(nstrg,1)**2
1214 1 -PT(nstrg,2)**2-PT(nstrg,3)**2)
1215 elseif((IITYP.eq.1103.or.IITYP.eq.2101
1216 1 .or.IITYP.eq.2103.or.IITYP.eq.2203.
1217 2 .or.IITYP.eq.3101.or.IITYP.eq.3103.
1218 3 .or.IITYP.eq.3201.or.IITYP.eq.3203.or.IITYP.eq.3303)
1219 4 .and.(LPART1(I).eq.1.or.LPART1(I).eq.(NTJ(NSTRG)+2))) then
1220 PT(nstrg,8)=sngl(PX5(I))
1221 PT(nstrg,9)=sngl(PY5(I))
1222 PT(nstrg,15)=sngl(XMASS5(I))
1223 PT(nstrg,1)=PT(nstrg,1)+sngl(PX5(I))
1224 PT(nstrg,2)=PT(nstrg,2)+sngl(PY5(I))
1225 PT(nstrg,3)=PT(nstrg,3)+sngl(PZ5(I))
1226 PT(nstrg,4)=PT(nstrg,4)+sngl(E5(I))
1227 PT(nstrg,5)=sqrt(PT(nstrg,4)**2-PT(nstrg,1)**2
1228 1 -PT(nstrg,2)**2-PT(nstrg,3)**2)
1229 else
1230 NPART = LPART1(I)-1
1231 KFTJ(NSTRG, NPART) = ITYP5(I)
1232 PJTX(NSTRG, NPART) = sngl(PX5(I))
1233 PJTY(NSTRG, NPART) = sngl(PY5(I))
1234 PJTZ(NSTRG, NPART) = sngl(PZ5(I))
1235 PJTE(NSTRG, NPART) = sngl(E5(I))
1236 PJTM(NSTRG, NPART) = sngl(XMASS5(I))
1237 endif
1238 ELSE
1239 NSTRG = LSTRG1(I) - NSP - NST
1240 NPART = LPART1(I)
1241 K2SG(NSTRG, NPART) = ITYP5(I)
1242 PXSG(NSTRG, NPART) = sngl(PX5(I))
1243 PYSG(NSTRG, NPART) = sngl(PY5(I))
1244 PZSG(NSTRG, NPART) = sngl(PZ5(I))
1245 PESG(NSTRG, NPART) = sngl(E5(I))
1246 PMSG(NSTRG, NPART) = sngl(XMASS5(I))
1247 END IF
1248 1005 CONTINUE
1249cbz1/25/99end
1250
1251clin-4/09/01 turn on fragmentation with soft radiation
1252c and jet order reversal to form hadrons after ZPC:
1253 MSTJ(1)=1
1254 IHPR2(1)=1
1255 isflag=1
1256clin-4/13/01 allow small mass strings (D=1.5GeV):
1257 HIPR1(1)=0.94
1258
1259cbz2/4/99
1260 CALL HJANA2
1261cbz2/4/99end
1262
1263clin-4/19/01-soft3, fragment strings, then convert hadrons to partons
1264c and input to ZPC:
1265 elseif(isoft.eq.3.or.isoft.eq.4.or.isoft.eq.5) then
1266clin-4/24/01 normal fragmentation first:
1267 isflag=0
1268
1269 IF(IHPR2(20).NE.0) THEN
1270 DO 560 ISG=1,NSG
1271 CALL HIJFRG(ISG,3,IERROR)
1272C
1273 nsbst=1
1274 IDSTR=92
1275 IF(IHPR2(21).EQ.0) THEN
1276 CALL LUEDIT(2)
1277 ELSE
1278 551 nsbst=nsbst+1
1279 IF(K(nsbst,2).LT.91.OR.K(nsbst,2).GT.93) GO TO 551
1280 IDSTR=K(nsbst,2)
1281 nsbst=nsbst+1
1282 ENDIF
1283
1284 IF(FRAME.EQ.'LAB') THEN
1285 CALL HBOOST
1286 ENDIF
1287C ******** boost back to lab frame(if it was in)
1288C
1289 nsbstR=0
1290 DO 560 I=nsbst,N
1291 IF(K(I,2).EQ.IDSTR) THEN
1292 nsbstR=nsbstR+1
1293 GO TO 560
1294 ENDIF
1295 K(I,4)=nsbstR
1296 NATT=NATT+1
1297 KATT(NATT,1)=K(I,2)
1298 KATT(NATT,2)=20
1299 KATT(NATT,4)=K(I,1)
1300c from Yasushi, to avoid violation of array limits:
1301c IF(K(I,3).EQ.0 .OR. K(K(I,3),2).EQ.IDSTR) THEN
1302clin-4/2008 to avoid out-of-bound error in K():
1303c IF(K(I,3).EQ.0 .OR.
1304c 1 (K(I,3).ne.0.and.K(K(I,3),2).EQ.IDSTR)) THEN
1305c KATT(NATT,3)=0
1306 IF(K(I,3).EQ.0) THEN
1307 KATT(NATT,3)=0
1308 ELSEIF(K(I,3).ne.0.and.K(K(I,3),2).EQ.IDSTR) THEN
1309 KATT(NATT,3)=0
1310clin-4/2008-end
1311 ELSE
1312 KATT(NATT,3)=NATT-I+K(I,3)+nsbstR-K(K(I,3),4)
1313 ENDIF
1314
1315C ****** identify the mother particle
1316 PATT(NATT,1)=P(I,1)
1317 PATT(NATT,2)=P(I,2)
1318 PATT(NATT,3)=P(I,3)
1319 PATT(NATT,4)=P(I,4)
1320 EATT=EATT+P(I,4)
1321 GXAR(NATT) = 0.5 * (YP(1, IASG(ISG, 1)) +
1322 & YT(1, IASG(ISG, 2)))
1323 GYAR(NATT) = 0.5 * (YP(2, IASG(ISG, 1)) +
1324 & YT(2, IASG(ISG, 2)))
1325 GZAR(NATT) = 0.
1326 FTAR(NATT) = 0.
1327 ITYPAR(NATT) = K(I, 2)
1328 PXAR(NATT) = P(I, 1)
1329 PYAR(NATT) = P(I, 2)
1330 PZAR(NATT) = P(I, 3)
1331 PEAR(NATT) = P(I, 4)
1332 XMAR(NATT) = P(I, 5)
1333cbz11/11/98end
1334
1335 560 CONTINUE
1336C ********Fragment the q-qbar jets systems *****
1337C
1338 JTP(1)=IHNT2(1)
1339 JTP(2)=IHNT2(3)
1340 DO 600 NTP=1,2
1341 DO 600 jjtp=1,JTP(NTP)
1342 CALL HIJFRG(jjtp,NTP,IERROR)
1343C
1344 nsbst=1
1345 IDSTR=92
1346 IF(IHPR2(21).EQ.0) THEN
1347 CALL LUEDIT(2)
1348 ELSE
1349 581 nsbst=nsbst+1
1350 IF(K(nsbst,2).LT.91.OR.K(nsbst,2).GT.93) GO TO 581
1351 IDSTR=K(nsbst,2)
1352 nsbst=nsbst+1
1353 ENDIF
1354 IF(FRAME.EQ.'LAB') THEN
1355 CALL HBOOST
1356 ENDIF
1357C ******** boost back to lab frame(if it was in)
1358C
1359 NFTP=NFP(jjtp,5)
1360 IF(NTP.EQ.2) NFTP=10+NFT(jjtp,5)
1361 nsbstR=0
1362 DO 590 I=nsbst,N
1363 IF(K(I,2).EQ.IDSTR) THEN
1364 nsbstR=nsbstR+1
1365 GO TO 590
1366 ENDIF
1367 K(I,4)=nsbstR
1368 NATT=NATT+1
1369 KATT(NATT,1)=K(I,2)
1370 KATT(NATT,2)=NFTP
1371 KATT(NATT,4)=K(I,1)
1372c IF(K(I,3).EQ.0 .OR. K(K(I,3),2).EQ.IDSTR) THEN
1373clin-4/2008
1374c IF(K(I,3).EQ.0 .OR.
1375c 1 (K(I,3).ne.0.and.K(K(I,3),2).EQ.IDSTR)) THEN
1376c KATT(NATT,3)=0
1377 IF(K(I,3).EQ.0) THEN
1378 KATT(NATT,3)=0
1379 ELSEIF(K(I,3).ne.0.and.K(K(I,3),2).EQ.IDSTR) THEN
1380 KATT(NATT,3)=0
1381clin-4/2008-end
1382 ELSE
1383 KATT(NATT,3)=NATT-I+K(I,3)+nsbstR-K(K(I,3),4)
1384 ENDIF
1385
1386C ****** identify the mother particle
1387 PATT(NATT,1)=P(I,1)
1388 PATT(NATT,2)=P(I,2)
1389 PATT(NATT,3)=P(I,3)
1390 PATT(NATT,4)=P(I,4)
1391 EATT=EATT+P(I,4)
1392 IF (NTP .EQ. 1) THEN
1393 GXAR(NATT) = YP(1, jjtp)+0.5 * BB
1394 GYAR(NATT) = YP(2, jjtp)
1395 ELSE
1396 GXAR(NATT) = YT(1, jjtp)-0.5 * BB
1397 GYAR(NATT) = YT(2, jjtp)
1398 END IF
1399 GZAR(NATT) = 0.
1400 FTAR(NATT) = 0.
1401 ITYPAR(NATT) = K(I, 2)
1402 PXAR(NATT) = P(I, 1)
1403 PYAR(NATT) = P(I, 2)
1404 PZAR(NATT) = P(I, 3)
1405 PEAR(NATT) = P(I, 4)
1406 XMAR(NATT) = P(I, 5)
1407cbz11/11/98end
1408
1409 590 CONTINUE
1410 600 CONTINUE
1411C ********Fragment the q-qq related string systems
1412 ENDIF
1413clin-4/2008 check for zero NDR value:
1414 if(NDR.ge.1) then
1415c
1416 DO 650 I=1,NDR
1417 NATT=NATT+1
1418 KATT(NATT,1)=KFDR(I)
1419 KATT(NATT,2)=40
1420 KATT(NATT,3)=0
1421 PATT(NATT,1)=PDR(I,1)
1422 PATT(NATT,2)=PDR(I,2)
1423 PATT(NATT,3)=PDR(I,3)
1424 PATT(NATT,4)=PDR(I,4)
1425 EATT=EATT+PDR(I,4)
1426clin-11/11/03 set direct photons positions and time at formation:
1427 GXAR(NATT) = rtdr(I,1)
1428 GYAR(NATT) = rtdr(I,2)
1429 GZAR(NATT) = 0.
1430 FTAR(NATT) = 0.
1431 ITYPAR(NATT) =KATT(NATT,1)
1432 PXAR(NATT) = PATT(NATT,1)
1433 PYAR(NATT) = PATT(NATT,2)
1434 PZAR(NATT) = PATT(NATT,3)
1435 PEAR(NATT) = PATT(NATT,4)
1436 XMAR(NATT) = PDR(I,5)
1437 650 CONTINUE
1438clin-4/2008:
1439 endif
1440clin-6/2009 ctest on:
1441 call embedHighPt
1442c
1443 CALL HJANA1
1444
1445clin-4/19/01 convert hadrons to partons for ZPC (with GX0 given):
1446 call htop
1447
1448clin-7/03/01 move up, used in zpstrg (otherwise not set and incorrect):
1449 nsp=0
1450 nst=0
1451 nsg=natt
1452 NSI=NSG
1453clin-7/03/01-end
1454
1455clin-6/2009:
1456 if(ioscar.eq.3) WRITE (95, *) IAEVT, mul
1457c.....call ZPC for parton cascade
1458 CALL ZPCMN
1459clin-6/2009:
1460c WRITE (14, 395) ITEST, MUL, bimp, NELP,NINP,NELT,NINTHJ
1461 WRITE (14, 395) IAEVT, MISS, MUL, bimp, NELP,NINP,NELT,NINTHJ
1462 itest=itest+1
1463
1464 DO 1016 I = 1, MUL
1465c WRITE (14, 511) PX5(I), PY5(I), PZ5(I), ITYP5(I),
1466c & XMASS5(I), E5(I)
1467 WRITE (14, 512) ITYP5(I), PX5(I), PY5(I), PZ5(I),
1468 & XMASS5(I), LSTRG1(I), LPART1(I), FT5(I)
1469
1470 1016 CONTINUE
1471c 511 FORMAT(1X, 3F10.4, I6, 2F10.4)
1472 512 FORMAT(I6,4(1X,F10.3),1X,I6,1X,I3,1X,F10.3)
1473c 513 FORMAT(1X, 4F10.4)
1474
1475clin-5/2009 ctest off:
1476c call frztm(1,1)
1477
1478clin save data after ZPC for fragmentation purpose:
1479c.....transfer data back from ZPC to HIJING
1480 DO 1018 I = 1, MAXSTR
1481 DO 1017 J = 1, 3
1482 K1SGS(I, J) = 0
1483 K2SGS(I, J) = 0
1484 PXSGS(I, J) = 0d0
1485 PYSGS(I, J) = 0d0
1486 PZSGS(I, J) = 0d0
1487 PESGS(I, J) = 0d0
1488 PMSGS(I, J) = 0d0
1489 GXSGS(I, J) = 0d0
1490 GYSGS(I, J) = 0d0
1491 GZSGS(I, J) = 0d0
1492 FTSGS(I, J) = 0d0
1493 1017 CONTINUE
1494 1018 CONTINUE
1495 DO 1019 I = 1, MUL
1496 IITYP=ITYP5(I)
1497 NSTRG = LSTRG1(I)
1498 NPART = LPART1(I)
1499 K2SGS(NSTRG, NPART) = ITYP5(I)
1500 PXSGS(NSTRG, NPART) = PX5(I)
1501 PYSGS(NSTRG, NPART) = PY5(I)
1502 PZSGS(NSTRG, NPART) = PZ5(I)
1503 PMSGS(NSTRG, NPART) = XMASS5(I)
1504clin-7/20/01 E5(I) does no include the finite parton mass XMASS5(I),
1505c so define it anew:
1506c PESGS(NSTRG, NPART) = E5(I)
1507c if(abs(PZ5(i)/E5(i)).gt.0.9999999d0)
1508c 1 write(91,*) 'a',PX5(i),PY5(i),XMASS5(i),PZ5(i),E5(i)
1509 E5(I)=dsqrt(PX5(I)**2+PY5(I)**2+PZ5(I)**2+XMASS5(I)**2)
1510 PESGS(NSTRG, NPART) = E5(I)
1511c if(abs(PZ5(i)/E5(i)).gt.0.9999999d0)
1512c 1 write(91,*) 'b: new E5(I)=',E5(i)
1513clin-7/20/01-end
1514 GXSGS(NSTRG, NPART) = GX5(I)
1515 GYSGS(NSTRG, NPART) = GY5(I)
1516 GZSGS(NSTRG, NPART) = GZ5(I)
1517 FTSGS(NSTRG, NPART) = FT5(I)
1518 1019 CONTINUE
1519 CALL HJANA2
1520
1521clin-4/19/01-end
1522
1523 endif
1524clin-4/09/01-end
1525
1526C
1527C**************fragment all the string systems in the following*****
1528C
1529C********nsbst is where particle information starts
1530C********nsbstR+1 is the number of strings in fragmentation
1531C********the number of strings before a line is stored in K(I,4)
1532C********IDSTR is id number of the string system (91,92 or 93)
1533C
1534clin-4/30/01 convert partons to hadrons after ZPC:
1535 if(isoft.eq.3.or.isoft.eq.4.or.isoft.eq.5) then
1536 NATT=0
1537 EATT=0.
1538 call ptoh
1539 do 1006 I=1,nnozpc
1540 NATT=NATT+1
1541 KATT(NATT,1)=ITYPN(I)
1542 PATT(NATT,1)=PXN(I)
1543 PATT(NATT,2)=PYN(I)
1544 PATT(NATT,3)=PZN(I)
1545 PATT(NATT,4)=EEN(I)
1546 EATT=EATT+EEN(I)
1547 GXAR(NATT)=GXN(I)
1548 GYAR(NATT)=GYN(I)
1549 GZAR(NATT)=GZN(I)
1550 FTAR(NATT)=FTN(I)
1551 ITYPAR(NATT)=ITYPN(I)
1552 PXAR(NATT)=PXN(I)
1553 PYAR(NATT)=PYN(I)
1554 PZAR(NATT)=PZN(I)
1555 PEAR(NATT)=EEN(I)
1556 XMAR(NATT)=XMN(I)
1557 1006 continue
1558 goto 565
1559 endif
1560clin-4/30/01-end
1561 IF(IHPR2(20).NE.0) THEN
1562 DO 360 ISG=1,NSG
1563 CALL HIJFRG(ISG,3,IERROR)
1564 IF(MSTU(24).NE.0 .OR.IERROR.GT.0) THEN
1565 MSTU(24)=0
1566 MSTU(28)=0
1567 IF(IHPR2(10).NE.0) THEN
1568c call lulist(2)
1569 WRITE(6,*) 'error occured ISG, repeat the event'
1570 write(6,*) ISG
1571
1572 ENDIF
1573 GO TO 50
1574 ENDIF
1575C ********Check errors
1576C
1577 nsbst=1
1578 IDSTR=92
1579 IF(IHPR2(21).EQ.0) THEN
1580 CALL LUEDIT(2)
1581 ELSE
1582351 nsbst=nsbst+1
1583 IF(K(nsbst,2).LT.91.OR.K(nsbst,2).GT.93) GO TO 351
1584 IDSTR=K(nsbst,2)
1585 nsbst=nsbst+1
1586 ENDIF
1587C
1588 IF(FRAME.EQ.'LAB') THEN
1589 CALL HBOOST
1590 ENDIF
1591C ******** boost back to lab frame(if it was in)
1592C
1593 nsbstR=0
1594 DO 360 I=nsbst,N
1595 IF(K(I,2).EQ.IDSTR) THEN
1596 nsbstR=nsbstR+1
1597 GO TO 360
1598 ENDIF
1599 K(I,4)=nsbstR
1600 NATT=NATT+1
1601 KATT(NATT,1)=K(I,2)
1602 KATT(NATT,2)=20
1603 KATT(NATT,4)=K(I,1)
1604c IF(K(I,3).EQ.0 .OR. K(K(I,3),2).EQ.IDSTR) THEN
1605clin-4/2008:
1606c IF(K(I,3).EQ.0 .OR.
1607c 1 (K(I,3).ne.0.and.K(K(I,3),2).EQ.IDSTR)) THEN
1608c KATT(NATT,3)=0
1609 IF(K(I,3).EQ.0) THEN
1610 KATT(NATT,3)=0
1611 ELSEIF(K(I,3).ne.0.and.K(K(I,3),2).EQ.IDSTR) THEN
1612 KATT(NATT,3)=0
1613clin-4/2008-end
1614 ELSE
1615 KATT(NATT,3)=NATT-I+K(I,3)+nsbstR-K(K(I,3),4)
1616 ENDIF
1617
1618C ****** identify the mother particle
1619 PATT(NATT,1)=P(I,1)
1620 PATT(NATT,2)=P(I,2)
1621 PATT(NATT,3)=P(I,3)
1622 PATT(NATT,4)=P(I,4)
1623 EATT=EATT+P(I,4)
1624
1625cbz11/11/98
1626cbz1/25/99
1627c GXAR(NATT) = 0.5 * (YP(1, IASG(ISG, 1)) +
1628c & YT(1, IASG(ISG, 2)))
1629c GYAR(NATT) = 0.5 * (YP(2, IASG(ISG, 1)) +
1630c & YT(2, IASG(ISG, 2)))
1631 LSG = NSP + NST + ISG
1632 GXAR(NATT) = sngl(ZT1(LSG))
1633 GYAR(NATT) = sngl(ZT2(LSG))
1634 GZAR(NATT) = sngl(ZT3(LSG))
1635 FTAR(NATT) = sngl(ATAUI(LSG))
1636cbz1/25/99end
1637 ITYPAR(NATT) = K(I, 2)
1638 PXAR(NATT) = P(I, 1)
1639 PYAR(NATT) = P(I, 2)
1640 PZAR(NATT) = P(I, 3)
1641 PEAR(NATT) = P(I, 4)
1642 XMAR(NATT) = P(I, 5)
1643cbz11/11/98end
1644
1645360 CONTINUE
1646C ********Fragment the q-qbar jets systems *****
1647C
1648 JTP(1)=IHNT2(1)
1649 JTP(2)=IHNT2(3)
1650 DO 400 NTP=1,2
1651 DO 400 jjtp=1,JTP(NTP)
1652 CALL HIJFRG(jjtp,NTP,IERROR)
1653 IF(MSTU(24).NE.0 .OR. IERROR.GT.0) THEN
1654 MSTU(24)=0
1655 MSTU(28)=0
1656 IF(IHPR2(10).NE.0) THEN
1657c call lulist(2)
1658 WRITE(6,*) 'error occured P&T, repeat the event'
1659 WRITE(6,*) NTP,jjtp
1660clin-6/2009 when this happens, the event will be repeated,
1661c and another record for the same event number will be written into
1662c zpc.dat, zpc.res, minijet-initial-beforePropagation.dat,
1663c parton-initial-afterPropagation.dat, parton-after-coalescence.dat,
1664c and parton-collisionsHistory.dat.
1665 ENDIF
1666 GO TO 50
1667 ENDIF
1668C ********check errors
1669C
1670 nsbst=1
1671 IDSTR=92
1672 IF(IHPR2(21).EQ.0) THEN
1673 CALL LUEDIT(2)
1674 ELSE
1675381 nsbst=nsbst+1
1676 IF(K(nsbst,2).LT.91.OR.K(nsbst,2).GT.93) GO TO 381
1677 IDSTR=K(nsbst,2)
1678 nsbst=nsbst+1
1679 ENDIF
1680 IF(FRAME.EQ.'LAB') THEN
1681 CALL HBOOST
1682 ENDIF
1683C ******** boost back to lab frame(if it was in)
1684C
1685 NFTP=NFP(jjtp,5)
1686 IF(NTP.EQ.2) NFTP=10+NFT(jjtp,5)
1687 nsbstR=0
1688 DO 390 I=nsbst,N
1689 IF(K(I,2).EQ.IDSTR) THEN
1690 nsbstR=nsbstR+1
1691 GO TO 390
1692 ENDIF
1693 K(I,4)=nsbstR
1694 NATT=NATT+1
1695 KATT(NATT,1)=K(I,2)
1696 KATT(NATT,2)=NFTP
1697 KATT(NATT,4)=K(I,1)
1698c IF(K(I,3).EQ.0 .OR. K(K(I,3),2).EQ.IDSTR) THEN
1699clin-4/2008:
1700c IF(K(I,3).EQ.0 .OR.
1701c 1 (K(I,3).ne.0.and.K(K(I,3),2).EQ.IDSTR)) THEN
1702c KATT(NATT,3)=0
1703 IF(K(I,3).EQ.0) THEN
1704 KATT(NATT,3)=0
1705 ELSEIF(K(I,3).ne.0.and.K(K(I,3),2).EQ.IDSTR) THEN
1706 KATT(NATT,3)=0
1707clin-4/2008-end
1708 ELSE
1709 KATT(NATT,3)=NATT-I+K(I,3)+nsbstR-K(K(I,3),4)
1710 ENDIF
1711C ****** identify the mother particle
1712 PATT(NATT,1)=P(I,1)
1713 PATT(NATT,2)=P(I,2)
1714 PATT(NATT,3)=P(I,3)
1715 PATT(NATT,4)=P(I,4)
1716 EATT=EATT+P(I,4)
1717cbz11/11/98
1718cbz1/25/99
1719c IF (NTP .EQ. 1) THEN
1720c GXAR(NATT) = YP(1, jjtp)
1721c ELSE
1722c GXAR(NATT) = YT(1, jjtp)
1723c END IF
1724c IF (NTP .EQ. 1) THEN
1725c GYAR(NATT) = YP(2, jjtp)
1726c ELSE
1727c GYAR(NATT) = YT(2, jjtp)
1728c END IF
1729 IF (NTP .EQ. 1) THEN
1730 LSG = jjtp
1731 ELSE
1732 LSG = jjtp + NSP
1733 END IF
1734 GXAR(NATT) = sngl(ZT1(LSG))
1735 GYAR(NATT) = sngl(ZT2(LSG))
1736 GZAR(NATT) = sngl(ZT3(LSG))
1737 FTAR(NATT) = sngl(ATAUI(LSG))
1738cbz1/25/99end
1739 ITYPAR(NATT) = K(I, 2)
1740 PXAR(NATT) = P(I, 1)
1741 PYAR(NATT) = P(I, 2)
1742 PZAR(NATT) = P(I, 3)
1743 PEAR(NATT) = P(I, 4)
1744 XMAR(NATT) = P(I, 5)
1745cbz11/11/98end
1746
1747390 CONTINUE
1748400 CONTINUE
1749C ********Fragment the q-qq related string systems
1750 ENDIF
1751
1752 DO 450 I=1,NDR
1753 NATT=NATT+1
1754 KATT(NATT,1)=KFDR(I)
1755 KATT(NATT,2)=40
1756 KATT(NATT,3)=0
1757 PATT(NATT,1)=PDR(I,1)
1758 PATT(NATT,2)=PDR(I,2)
1759 PATT(NATT,3)=PDR(I,3)
1760 PATT(NATT,4)=PDR(I,4)
1761 EATT=EATT+PDR(I,4)
1762clin-11/11/03 set direct photons positions and time at formation:
1763 GXAR(NATT) = rtdr(I,1)
1764 GYAR(NATT) = rtdr(I,2)
1765 GZAR(NATT) = 0.
1766 FTAR(NATT) = 0.
1767 ITYPAR(NATT) =KATT(NATT,1)
1768 PXAR(NATT) = PATT(NATT,1)
1769 PYAR(NATT) = PATT(NATT,2)
1770 PZAR(NATT) = PATT(NATT,3)
1771 PEAR(NATT) = PATT(NATT,4)
1772 XMAR(NATT) = PDR(I,5)
1773 450 CONTINUE
1774
1775C ********store the direct-produced particles
1776C
1777
1778clin-4/19/01 soft3:
1779 565 continue
1780
1781 DENGY=EATT/(IHNT2(1)*HINT1(6)+IHNT2(3)*HINT1(7))-1.0
1782 IF(ABS(DENGY).GT.HIPR1(43).AND.IHPR2(20).NE.0
1783 & .AND.IHPR2(21).EQ.0) THEN
1784 IF(IHPR2(10).NE.0)
1785 & WRITE(6,*) 'Energy not conserved, repeat the event'
1786c call lulist(1)
1787 write(6,*) 'violated:EATT,NATT,B=',EATT,NATT,bimp
1788 GO TO 50
1789 ENDIF
1790c write(6,*) 'satisfied:EATT,NATT,B=',EATT,NATT,bimp
1791c write(6,*) ' '
1792
1793 RETURN
1794 END
1795C
1796C
1797C
1798 SUBROUTINE HIJSET(EFRM,FRAME,PROJ,TARG,IAP,IZP,IAT,IZT)
1799 CHARACTER FRAME*4,PROJ*4,TARG*4,EFRAME*4
1800 DOUBLE PRECISION DD1,DD2,DD3,DD4
1801 COMMON/HSTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
1802cc SAVE /HSTRNG/
1803 COMMON/hjcrdn/YP(3,300),YT(3,300)
1804cc SAVE /hjcrdn/
1805 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
1806cc SAVE /HPARNT/
1807 COMMON/HIJDAT/HIDAT0(10,10),HIDAT(10)
1808cc SAVE /HIJDAT/
1809 COMMON/LUDAT1A/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
1810cc SAVE /LUDAT1A/
1811 EXTERNAL FNKICK,FNKC2,FNSTRU,FNSTRM,FNSTRS
1812 SAVE
1813
1814 CALL TITLE
1815 IHNT2(1)=IAP
1816 IHNT2(2)=IZP
1817 IHNT2(3)=IAT
1818 IHNT2(4)=IZT
1819 IHNT2(5)=0
1820 IHNT2(6)=0
1821C
1822 HINT1(8)=MAX(ULMASS(2112),ULMASS(2212))
1823 HINT1(9)=HINT1(8)
1824C
1825 IF(PROJ.NE.'A') THEN
1826 IF(PROJ.EQ.'P') THEN
1827 IHNT2(5)=2212
1828 ELSE IF(PROJ.EQ.'PBAR') THEN
1829 IHNT2(5)=-2212
1830 ELSE IF(PROJ.EQ.'PI+') THEN
1831 IHNT2(5)=211
1832 ELSE IF(PROJ.EQ.'PI-') THEN
1833 IHNT2(5)=-211
1834 ELSE IF(PROJ.EQ.'K+') THEN
1835 IHNT2(5)=321
1836 ELSE IF(PROJ.EQ.'K-') THEN
1837 IHNT2(5)=-321
1838 ELSE IF(PROJ.EQ.'N') THEN
1839 IHNT2(5)=2112
1840 ELSE IF(PROJ.EQ.'NBAR') THEN
1841 IHNT2(5)=-2112
1842 ELSE
1843 WRITE(6,*) PROJ, 'wrong or unavailable proj name'
1844 STOP
1845 ENDIF
1846 HINT1(8)=ULMASS(IHNT2(5))
1847 ENDIF
1848 IF(TARG.NE.'A') THEN
1849 IF(TARG.EQ.'P') THEN
1850 IHNT2(6)=2212
1851 ELSE IF(TARG.EQ.'PBAR') THEN
1852 IHNT2(6)=-2212
1853 ELSE IF(TARG.EQ.'PI+') THEN
1854 IHNT2(6)=211
1855 ELSE IF(TARG.EQ.'PI-') THEN
1856 IHNT2(6)=-211
1857 ELSE IF(TARG.EQ.'K+') THEN
1858 IHNT2(6)=321
1859 ELSE IF(TARG.EQ.'K-') THEN
1860 IHNT2(6)=-321
1861 ELSE IF(TARG.EQ.'N') THEN
1862 IHNT2(6)=2112
1863 ELSE IF(TARG.EQ.'NBAR') THEN
1864 IHNT2(6)=-2112
1865 ELSE
1866 WRITE(6,*) TARG,'wrong or unavailable targ name'
1867 STOP
1868 ENDIF
1869 HINT1(9)=ULMASS(IHNT2(6))
1870 ENDIF
1871
1872C...Switch off decay of pi0, K0S, Lambda, Sigma+-, Xi0-, Omega-.
1873 IF(IHPR2(12).GT.0) THEN
1874 CALL LUGIVE('MDCY(C221,1)=0')
1875clin-11/07/00 no K* decays:
1876 CALL LUGIVE('MDCY(C313,1)=0')
1877 CALL LUGIVE('MDCY(C-313,1)=0')
1878 CALL LUGIVE('MDCY(C323,1)=0')
1879 CALL LUGIVE('MDCY(C-323,1)=0')
1880clin-1/04/01 no K0 and K0bar decays so K0L and K0S do not appear,
1881c this way the K/Kbar difference is accounted for exactly:
1882 CALL LUGIVE('MDCY(C311,1)=0')
1883 CALL LUGIVE('MDCY(C-311,1)=0')
1884clin-11/08/00 no Delta decays:
1885 CALL LUGIVE('MDCY(C1114,1)=0')
1886 CALL LUGIVE('MDCY(C2114,1)=0')
1887 CALL LUGIVE('MDCY(C2214,1)=0')
1888 CALL LUGIVE('MDCY(C2224,1)=0')
1889 CALL LUGIVE('MDCY(C-1114,1)=0')
1890 CALL LUGIVE('MDCY(C-2114,1)=0')
1891 CALL LUGIVE('MDCY(C-2214,1)=0')
1892 CALL LUGIVE('MDCY(C-2224,1)=0')
1893clin-11/07/00-end
1894cbz12/4/98
1895 CALL LUGIVE('MDCY(C213,1)=0')
1896 CALL LUGIVE('MDCY(C-213,1)=0')
1897 CALL LUGIVE('MDCY(C113,1)=0')
1898 CALL LUGIVE('MDCY(C223,1)=0')
1899 CALL LUGIVE('MDCY(C333,1)=0')
1900cbz12/4/98end
1901 CALL LUGIVE('MDCY(C111,1)=0')
1902 CALL LUGIVE('MDCY(C310,1)=0')
1903 CALL LUGIVE('MDCY(C411,1)=0;MDCY(C-411,1)=0')
1904 CALL LUGIVE('MDCY(C421,1)=0;MDCY(C-421,1)=0')
1905 CALL LUGIVE('MDCY(C431,1)=0;MDCY(C-431,1)=0')
1906 CALL LUGIVE('MDCY(C511,1)=0;MDCY(C-511,1)=0')
1907 CALL LUGIVE('MDCY(C521,1)=0;MDCY(C-521,1)=0')
1908 CALL LUGIVE('MDCY(C531,1)=0;MDCY(C-531,1)=0')
1909 CALL LUGIVE('MDCY(C3122,1)=0;MDCY(C-3122,1)=0')
1910 CALL LUGIVE('MDCY(C3112,1)=0;MDCY(C-3112,1)=0')
1911 CALL LUGIVE('MDCY(C3212,1)=0;MDCY(C-3212,1)=0')
1912 CALL LUGIVE('MDCY(C3222,1)=0;MDCY(C-3222,1)=0')
1913 CALL LUGIVE('MDCY(C3312,1)=0;MDCY(C-3312,1)=0')
1914 CALL LUGIVE('MDCY(C3322,1)=0;MDCY(C-3322,1)=0')
1915 CALL LUGIVE('MDCY(C3334,1)=0;MDCY(C-3334,1)=0')
1916 ENDIF
1917 MSTU(12)=0
1918 MSTU(21)=1
1919 IF(IHPR2(10).EQ.0) THEN
1920 MSTU(22)=0
1921 MSTU(25)=0
1922 MSTU(26)=0
1923 ENDIF
1924
1925clin parj(41) and (42) are a, b parameters in Lund, read from input.ampt:
1926c PARJ(41)=HIPR1(3)
1927c PARJ(42)=HIPR1(4)
1928c PARJ(41)=2.2
1929c PARJ(42)=0.5
1930
1931clin 2 popcorn parameters read from input.ampt:
1932c IHPR2(11) = 3
1933c PARJ(5) = 0.5
1934 MSTJ(12)=IHPR2(11)
1935
1936clin parj(21) gives the mean gaussian width for hadron Pt:
1937 PARJ(21)=HIPR1(2)
1938clin parj(2) is gamma_s=P(s)/P(u), kappa propto 1/b/(2+a) assumed.
1939 rkp=HIPR1(4)*(2+HIPR1(3))/PARJ(42)/(2+PARJ(41))
1940 PARJ(2)=PARJ(2)**(1./rkp)
1941 PARJ(21)=PARJ(21)*sqrt(rkp)
1942clin-10/31/00 update when string tension is changed:
1943 HIPR1(2)=PARJ(21)
1944
1945C ******** set up for jetset
1946 IF(FRAME.EQ.'LAB') THEN
1947 DD1=dble(EFRM)
1948 DD2=dble(HINT1(8))
1949 DD3=dble(HINT1(9))
1950 HINT1(1)=SQRT(HINT1(8)**2+2.0*HINT1(9)*EFRM+HINT1(9)**2)
1951 DD4=DSQRT(DD1**2-DD2**2)/(DD1+DD3)
1952 HINT1(2)=sngl(DD4)
1953 HINT1(3)=0.5*sngl(DLOG((1.D0+DD4)/(1.D0-DD4)))
1954 DD4=DSQRT(DD1**2-DD2**2)/DD1
1955 HINT1(4)=0.5*sngl(DLOG((1.D0+DD4)/(1.D0-DD4)))
1956 HINT1(5)=0.0
1957 HINT1(6)=EFRM
1958 HINT1(7)=HINT1(9)
1959 ELSE IF(FRAME.EQ.'CMS') THEN
1960 HINT1(1)=EFRM
1961 HINT1(2)=0.0
1962 HINT1(3)=0.0
1963 DD1=dble(HINT1(1))
1964 DD2=dble(HINT1(8))
1965 DD3=dble(HINT1(9))
1966 DD4=DSQRT(1.D0-4.D0*DD2**2/DD1**2)
1967 HINT1(4)=0.5*sngl(DLOG((1.D0+DD4)/(1.D0-DD4)))
1968 DD4=DSQRT(1.D0-4.D0*DD3**2/DD1**2)
1969 HINT1(5)=-0.5*sngl(DLOG((1.D0+DD4)/(1.D0-DD4)))
1970 HINT1(6)=HINT1(1)/2.0
1971 HINT1(7)=HINT1(1)/2.0
1972 ENDIF
1973C ********define Lorentz transform to lab frame
1974c
1975C ********calculate the cross sections involved with
1976C nucleon collisions.
1977 IF(IHNT2(1).GT.1) THEN
1978 CALL HIJWDS(IHNT2(1),1,RMAX)
1979 HIPR1(34)=RMAX
1980C ********set up Wood-Sax distr for proj.
1981 ENDIF
1982 IF(IHNT2(3).GT.1) THEN
1983 CALL HIJWDS(IHNT2(3),2,RMAX)
1984 HIPR1(35)=RMAX
1985C ********set up Wood-Sax distr for targ.
1986 ENDIF
1987C
1988C
1989 I=0
199020 I=I+1
1991 IF(I.EQ.10) GO TO 30
1992 IF(HIDAT0(10,I).LE.HINT1(1)) GO TO 20
199330 IF(I.EQ.1) I=2
1994 DO 40 J=1,9
1995 HIDAT(J)=HIDAT0(J,I-1)+(HIDAT0(J,I)-HIDAT0(J,I-1))
1996 & *(HINT1(1)-HIDAT0(10,I-1))/(HIDAT0(10,I)-HIDAT0(10,I-1))
199740 CONTINUE
1998 HIPR1(31)=HIDAT(5)
1999 HIPR1(30)=2.0*HIDAT(5)
2000C
2001C
2002 CALL HIJCRS
2003C
2004 IF(IHPR2(5).NE.0) THEN
2005 CALL HIFUN(3,0.0,36.0,FNKICK)
2006C ********booking for generating pt**2 for pt kick
2007 ENDIF
2008 CALL HIFUN(7,0.0,6.0,FNKC2)
2009 CALL HIFUN(4,0.0,1.0,FNSTRU)
2010 CALL HIFUN(5,0.0,1.0,FNSTRM)
2011 CALL HIFUN(6,0.0,1.0,FNSTRS)
2012C ********booking for x distribution of valence quarks
2013 EFRAME='Ecm'
2014 IF(FRAME.EQ.'LAB') EFRAME='Elab'
2015 WRITE(6,100) EFRAME,EFRM,PROJ,IHNT2(1),IHNT2(2),
2016 & TARG,IHNT2(3),IHNT2(4)
2017100 FORMAT(
2018 & 10X,'**************************************************'/
2019 & 10X,'*',48X,'*'/
7a129c8c 2020 & 10X,'* HIJING for AMPT initialized at *'/
0119ef9a 2021 & 10X,'*',13X,A4,'= ',F10.2,' GeV/n',13X,'*'/
2022 & 10X,'*',48X,'*'/
2023 & 10X,'*',8X,'for ',
2024 & A4,'(',I3,',',I3,')',' + ',A4,'(',I3,',',I3,')',7X,'*'/
2025 & 10X,'**************************************************')
2026 RETURN
2027 END
2028C
2029C
2030C
2031 FUNCTION FNKICK(X)
2032 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
2033cc SAVE /HPARNT/
2034 SAVE
2035 FNKICK=1.0/(X+HIPR1(19)**2)/(X+HIPR1(20)**2)
2036 & /(1+EXP((SQRT(X)-HIPR1(20))/0.4))
2037 RETURN
2038 END
2039C
2040C
2041 FUNCTION FNKC2(X)
2042 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
2043cc SAVE /HPARNT/
2044 SAVE
2045 FNKC2=X*EXP(-2.0*X/HIPR1(42))
2046 RETURN
2047 END
2048C
2049C
2050C
2051 FUNCTION FNSTRU(X)
2052 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
2053cc SAVE /HPARNT/
2054 SAVE
2055 FNSTRU=(1.0-X)**HIPR1(44)/
2056 & (X**2+HIPR1(45)**2/HINT1(1)**2)**HIPR1(46)
2057 RETURN
2058 END
2059C
2060C
2061C
2062 FUNCTION FNSTRM(X)
2063 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
2064cc SAVE /HPARNT/
2065 SAVE
2066 FNSTRM=1.0/((1.0-X)**2+HIPR1(45)**2/HINT1(1)**2)**HIPR1(46)
2067 & /(X**2+HIPR1(45)**2/HINT1(1)**2)**HIPR1(46)
2068 RETURN
2069 END
2070C
2071C
2072 FUNCTION FNSTRS(X)
2073 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
2074cc SAVE /HPARNT/
2075 SAVE
2076 FNSTRS=(1.0-X)**HIPR1(47)/
2077 & (X**2+HIPR1(45)**2/HINT1(1)**2)**HIPR1(48)
2078 RETURN
2079 END
2080C
2081C
2082C
2083C
2084 SUBROUTINE HBOOST
2085 IMPLICIT DOUBLE PRECISION(D)
2086 COMMON/LUJETSA/N,K(9000,5),P(9000,5),V(9000,5)
2087cc SAVE /LUJETSA/
2088 COMMON/LUDAT1A/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
2089cc SAVE /LUDAT1A/
2090 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
2091cc SAVE /HPARNT/
2092 SAVE
2093 DO 100 I=1,N
2094 DBETA=dble(P(I,3)/P(I,4))
2095 IF(ABS(DBETA).GE.1.D0) THEN
2096 DB=dble(HINT1(2))
2097 IF(DB.GT.0.99999999D0) THEN
2098C ********Rescale boost vector if too close to unity.
2099 WRITE(6,*) '(HIBOOT:) boost vector too large'
2100 DB=0.99999999D0
2101 ENDIF
2102 DGA=1D0/SQRT(1D0-DB**2)
2103 DP3=dble(P(I,3))
2104 DP4=dble(P(I,4))
2105 P(I,3)=sngl((DP3+DB*DP4)*DGA)
2106 P(I,4)=sngl((DP4+DB*DP3)*DGA)
2107 GO TO 100
2108 ENDIF
2109 Y=0.5*sngl(DLOG((1.D0+DBETA)/(1.D0-DBETA)))
2110 AMT=SQRT(P(I,1)**2+P(I,2)**2+P(I,5)**2)
2111 P(I,3)=AMT*SINH(Y+HINT1(3))
2112 P(I,4)=AMT*COSH(Y+HINT1(3))
2113100 CONTINUE
2114 RETURN
2115 END
2116C
2117C
2118C
2119C
2120 SUBROUTINE QUENCH(JPJT,NTP)
2121 PARAMETER (MAXSTR=150001)
2122 DIMENSION RDP(300),LQP(300),RDT(300),LQT(300)
2123 COMMON/hjcrdn/YP(3,300),YT(3,300)
2124cc SAVE /hjcrdn/
2125 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
2126cc SAVE /HPARNT/
2127C
2128 COMMON/HJJET1/NPJ(300),KFPJ(300,500),PJPX(300,500),
2129 & PJPY(300,500),PJPZ(300,500),PJPE(300,500),
2130 & PJPM(300,500),NTJ(300),KFTJ(300,500),
2131 & PJTX(300,500),PJTY(300,500),PJTZ(300,500),
2132 & PJTE(300,500),PJTM(300,500)
2133cc SAVE /HJJET1/
2134 COMMON/HJJET2/NSG,NJSG(MAXSTR),IASG(MAXSTR,3),K1SG(MAXSTR,100),
2135 & K2SG(MAXSTR,100),PXSG(MAXSTR,100),PYSG(MAXSTR,100),
2136 & PZSG(MAXSTR,100),PESG(MAXSTR,100),PMSG(MAXSTR,100)
2137cc SAVE /HJJET2/
2138 COMMON/HSTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
2139cc SAVE /HSTRNG/
2140 COMMON/RNDF77/NSEED
2141cc SAVE /RNDF77/
2142 SAVE
2143C
2144c Uzhi:
2145 BB=HINT1(19)
2146 PHI=HINT1(20)
2147 BBX=BB*COS(PHI)
2148 BBY=BB*SIN(PHI)
2149c
2150 IF(NTP.EQ.2) GO TO 400
2151 IF(NTP.EQ.3) GO TO 2000
2152C*******************************************************
2153C Jet interaction for proj jet in the direction PHIP
2154C******************************************************
2155C
2156 IF(NFP(JPJT,7).NE.1) RETURN
2157
2158 JP=JPJT
2159 DO 290 I=1,NPJ(JP)
2160 PTJET0=SQRT(PJPX(JP,I)**2+PJPY(JP,I)**2)
2161 IF(PTJET0.LE.HIPR1(11)) GO TO 290
2162 PTOT=SQRT(PTJET0*PTJET0+PJPZ(JP,I)**2)
2163 IF(PTOT.LT.HIPR1(8)) GO TO 290
2164 PHIP=ULANGL(PJPX(JP,I),PJPY(JP,I))
2165C******* find the wounded proj which can interact with jet***
2166 KP=0
2167 DO 100 I2=1,IHNT2(1)
2168 IF(NFP(I2,5).NE.3 .OR. I2.EQ.JP) GO TO 100
2169 DX=YP(1,I2)-YP(1,JP)
2170 DY=YP(2,I2)-YP(2,JP)
2171 PHI=ULANGL(DX,DY)
2172 DPHI=ABS(PHI-PHIP)
2173c Uzhi:
2174 IF(DPHI.GE.HIPR1(40)) DPHI=2.*HIPR1(40)-DPHI
2175 IF(DPHI.GE.HIPR1(40)/2.0) GO TO 100
2176 RD0=SQRT(DX*DX+DY*DY)
2177 IF(RD0*SIN(DPHI).GT.HIPR1(12)) GO TO 100
2178 KP=KP+1
2179 LQP(KP)=I2
2180 RDP(KP)=COS(DPHI)*RD0
2181 100 CONTINUE
2182C******* rearrange according decending rd************
2183 DO 110 I2=1,KP-1
2184 DO 110 J2=I2+1,KP
2185 IF(RDP(I2).LT.RDP(J2)) GO TO 110
2186 RD=RDP(I2)
2187 LQ=LQP(I2)
2188 RDP(I2)=RDP(J2)
2189 LQP(I2)=LQP(J2)
2190 RDP(J2)=RD
2191 LQP(J2)=LQ
2192 110 CONTINUE
2193C****** find wounded targ which can interact with jet********
2194 KT=0
2195 DO 120 I2=1,IHNT2(3)
2196 IF(NFT(I2,5).NE.3) GO TO 120
2197 DX=YT(1,I2)-YP(1,JP)-BBX
2198 DY=YT(2,I2)-YP(2,JP)-BBY
2199 PHI=ULANGL(DX,DY)
2200 DPHI=ABS(PHI-PHIP)
2201c Uzhi:
2202 IF(DPHI.GE.HIPR1(40)) DPHI=2.*HIPR1(40)-DPHI
2203 IF(DPHI.GT.HIPR1(40)/2.0) GO TO 120
2204 RD0=SQRT(DX*DX+DY*DY)
2205 IF(RD0*SIN(DPHI).GT.HIPR1(12)) GO TO 120
2206 KT=KT+1
2207 LQT(KT)=I2
2208 RDT(KT)=COS(DPHI)*RD0
2209 120 CONTINUE
2210C******* rearrange according decending rd************
2211 DO 130 I2=1,KT-1
2212 DO 130 J2=I2+1,KT
2213 IF(RDT(I2).LT.RDT(J2)) GO TO 130
2214 RD=RDT(I2)
2215 LQ=LQT(I2)
2216 RDT(I2)=RDT(J2)
2217 LQT(I2)=LQT(J2)
2218 RDT(J2)=RD
2219 LQT(J2)=LQ
2220 130 CONTINUE
2221
2222 MP=0
2223 MT=0
2224 R0=0.0
2225 NQ=0
2226 DP=0.0
2227 PTOT=SQRT(PJPX(JP,I)**2+PJPY(JP,I)**2+PJPZ(JP,I)**2)
2228 V1=PJPX(JP,I)/PTOT
2229 V2=PJPY(JP,I)/PTOT
2230 V3=PJPZ(JP,I)/PTOT
2231
2232 200 RN=RANART(NSEED)
2233 210 IF(MT.GE.KT .AND. MP.GE.KP) GO TO 290
2234 IF(MT.GE.KT) GO TO 220
2235 IF(MP.GE.KP) GO TO 240
2236 IF(RDP(MP+1).GT.RDT(MT+1)) GO TO 240
2237 220 MP=MP+1
2238 DRR=RDP(MP)-R0
2239 IF(RN.GE.1.0-EXP(-DRR/HIPR1(13))) GO TO 210
2240 DP=DRR*HIPR1(14)
2241 IF(KFPJ(JP,I).NE.21) DP=0.5*DP
2242C ********string tension of quark jet is 0.5 of gluon's
2243 IF(DP.LE.0.2) GO TO 210
2244 IF(PTOT.LE.0.4) GO TO 290
2245 IF(PTOT.LE.DP) DP=PTOT-0.2
2246 DE=DP
2247
2248 IF(KFPJ(JP,I).NE.21) THEN
2249 PRSHU=PP(LQP(MP),1)**2+PP(LQP(MP),2)**2
2250 & +PP(LQP(MP),3)**2
2251 DE=SQRT(PJPM(JP,I)**2+PTOT**2)
2252 & -SQRT(PJPM(JP,I)**2+(PTOT-DP)**2)
2253 ERSHU=(PP(LQP(MP),4)+DE-DP)**2
2254 AMSHU=ERSHU-PRSHU
2255 IF(AMSHU.LT.HIPR1(1)*HIPR1(1)) GO TO 210
2256 PP(LQP(MP),4)=SQRT(ERSHU)
2257 PP(LQP(MP),5)=SQRT(AMSHU)
2258 ENDIF
2259C ********reshuffle the energy when jet has mass
2260 R0=RDP(MP)
2261 DP1=DP*V1
2262 DP2=DP*V2
2263 DP3=DP*V3
2264C ********momentum and energy transfer from jet
2265
2266 NPJ(LQP(MP))=NPJ(LQP(MP))+1
2267 KFPJ(LQP(MP),NPJ(LQP(MP)))=21
2268 PJPX(LQP(MP),NPJ(LQP(MP)))=DP1
2269 PJPY(LQP(MP),NPJ(LQP(MP)))=DP2
2270 PJPZ(LQP(MP),NPJ(LQP(MP)))=DP3
2271 PJPE(LQP(MP),NPJ(LQP(MP)))=DP
2272 PJPM(LQP(MP),NPJ(LQP(MP)))=0.0
2273 GO TO 260
2274
2275 240 MT=MT+1
2276 DRR=RDT(MT)-R0
2277 IF(RN.GE.1.0-EXP(-DRR/HIPR1(13))) GO TO 210
2278 DP=DRR*HIPR1(14)
2279 IF(DP.LE.0.2) GO TO 210
2280 IF(PTOT.LE.0.4) GO TO 290
2281 IF(PTOT.LE.DP) DP=PTOT-0.2
2282 DE=DP
2283
2284 IF(KFPJ(JP,I).NE.21) THEN
2285 PRSHU=PT(LQT(MT),1)**2+PT(LQT(MT),2)**2
2286 & +PT(LQT(MT),3)**2
2287 DE=SQRT(PJPM(JP,I)**2+PTOT**2)
2288 & -SQRT(PJPM(JP,I)**2+(PTOT-DP)**2)
2289 ERSHU=(PT(LQT(MT),4)+DE-DP)**2
2290 AMSHU=ERSHU-PRSHU
2291 IF(AMSHU.LT.HIPR1(1)*HIPR1(1)) GO TO 210
2292 PT(LQT(MT),4)=SQRT(ERSHU)
2293 PT(LQT(MT),5)=SQRT(AMSHU)
2294 ENDIF
2295C ********reshuffle the energy when jet has mass
2296
2297 R0=RDT(MT)
2298 DP1=DP*V1
2299 DP2=DP*V2
2300 DP3=DP*V3
2301C ********momentum and energy transfer from jet
2302 NTJ(LQT(MT))=NTJ(LQT(MT))+1
2303 KFTJ(LQT(MT),NTJ(LQT(MT)))=21
2304 PJTX(LQT(MT),NTJ(LQT(MT)))=DP1
2305 PJTY(LQT(MT),NTJ(LQT(MT)))=DP2
2306 PJTZ(LQT(MT),NTJ(LQT(MT)))=DP3
2307 PJTE(LQT(MT),NTJ(LQT(MT)))=DP
2308 PJTM(LQT(MT),NTJ(LQT(MT)))=0.0
2309
2310 260 PJPX(JP,I)=(PTOT-DP)*V1
2311 PJPY(JP,I)=(PTOT-DP)*V2
2312 PJPZ(JP,I)=(PTOT-DP)*V3
2313 PJPE(JP,I)=PJPE(JP,I)-DE
2314
2315 PTOT=PTOT-DP
2316 NQ=NQ+1
2317 GO TO 200
2318 290 CONTINUE
2319
2320 RETURN
2321
2322C*******************************************************
2323C Jet interaction for target jet in the direction PHIT
2324C******************************************************
2325C
2326C******* find the wounded proj which can interact with jet***
2327
2328 400 IF(NFT(JPJT,7).NE.1) RETURN
2329 JT=JPJT
2330 DO 690 I=1,NTJ(JT)
2331 PTJET0=SQRT(PJTX(JT,I)**2+PJTY(JT,I)**2)
2332 IF(PTJET0.LE.HIPR1(11)) GO TO 690
2333 PTOT=SQRT(PTJET0*PTJET0+PJTZ(JT,I)**2)
2334 IF(PTOT.LT.HIPR1(8)) GO TO 690
2335 PHIT=ULANGL(PJTX(JT,I),PJTY(JT,I))
2336 KP=0
2337 DO 500 I2=1,IHNT2(1)
2338 IF(NFP(I2,5).NE.3) GO TO 500
2339 DX=YP(1,I2)+BBX-YT(1,JT)
2340 DY=YP(2,I2)+BBY-YT(2,JT)
2341 PHI=ULANGL(DX,DY)
2342 DPHI=ABS(PHI-PHIT)
2343c Uzhi:
2344 IF(DPHI.GE.HIPR1(40)) DPHI=2.*HIPR1(40)-DPHI
2345 IF(DPHI.GT.HIPR1(40)/2.0) GO TO 500
2346 RD0=SQRT(DX*DX+DY*DY)
2347 IF(RD0*SIN(DPHI).GT.HIPR1(12)) GO TO 500
2348 KP=KP+1
2349 LQP(KP)=I2
2350 RDP(KP)=COS(DPHI)*RD0
2351 500 CONTINUE
2352C******* rearrange according to decending rd************
2353 DO 510 I2=1,KP-1
2354 DO 510 J2=I2+1,KP
2355 IF(RDP(I2).LT.RDP(J2)) GO TO 510
2356 RD=RDP(I2)
2357 LQ=LQP(I2)
2358 RDP(I2)=RDP(J2)
2359 LQP(I2)=LQP(J2)
2360 RDP(J2)=RD
2361 LQP(J2)=LQ
2362 510 CONTINUE
2363C****** find wounded targ which can interact with jet********
2364 KT=0
2365 DO 520 I2=1,IHNT2(3)
2366 IF(NFT(I2,5).NE.3 .OR. I2.EQ.JT) GO TO 520
2367 DX=YT(1,I2)-YT(1,JT)
2368 DY=YT(2,I2)-YT(2,JT)
2369 PHI=ULANGL(DX,DY)
2370 DPHI=ABS(PHI-PHIT)
2371c Uzhi:
2372 IF(DPHI.GE.HIPR1(40)) DPHI=2.*HIPR1(40)-DPHI
2373 IF(DPHI.GT.HIPR1(40)/2.0) GO TO 520
2374 RD0=SQRT(DX*DX+DY*DY)
2375 IF(RD0*SIN(DPHI).GT.HIPR1(12)) GO TO 520
2376 KT=KT+1
2377 LQT(KT)=I2
2378 RDT(KT)=COS(DPHI)*RD0
2379 520 CONTINUE
2380C******* rearrange according to decending rd************
2381 DO 530 I2=1,KT-1
2382 DO 530 J2=I2+1,KT
2383 IF(RDT(I2).LT.RDT(J2)) GO TO 530
2384 RD=RDT(I2)
2385 LQ=LQT(I2)
2386 RDT(I2)=RDT(J2)
2387 LQT(I2)=LQT(J2)
2388 RDT(J2)=RD
2389 LQT(J2)=LQ
2390 530 CONTINUE
2391
2392 MP=0
2393 MT=0
2394 NQ=0
2395 DP=0.0
2396 R0=0.0
2397 PTOT=SQRT(PJTX(JT,I)**2+PJTY(JT,I)**2+PJTZ(JT,I)**2)
2398 V1=PJTX(JT,I)/PTOT
2399 V2=PJTY(JT,I)/PTOT
2400 V3=PJTZ(JT,I)/PTOT
2401
2402 600 RN=RANART(NSEED)
2403 610 IF(MT.GE.KT .AND. MP.GE.KP) GO TO 690
2404 IF(MT.GE.KT) GO TO 620
2405 IF(MP.GE.KP) GO TO 640
2406 IF(RDP(MP+1).GT.RDT(MT+1)) GO TO 640
2407620 MP=MP+1
2408 DRR=RDP(MP)-R0
2409 IF(RN.GE.1.0-EXP(-DRR/HIPR1(13))) GO TO 610
2410 DP=DRR*HIPR1(14)
2411 IF(KFTJ(JT,I).NE.21) DP=0.5*DP
2412C ********string tension of quark jet is 0.5 of gluon's
2413 IF(DP.LE.0.2) GO TO 610
2414 IF(PTOT.LE.0.4) GO TO 690
2415 IF(PTOT.LE.DP) DP=PTOT-0.2
2416 DE=DP
2417C
2418 IF(KFTJ(JT,I).NE.21) THEN
2419 PRSHU=PP(LQP(MP),1)**2+PP(LQP(MP),2)**2
2420 & +PP(LQP(MP),3)**2
2421 DE=SQRT(PJTM(JT,I)**2+PTOT**2)
2422 & -SQRT(PJTM(JT,I)**2+(PTOT-DP)**2)
2423 ERSHU=(PP(LQP(MP),4)+DE-DP)**2
2424 AMSHU=ERSHU-PRSHU
2425 IF(AMSHU.LT.HIPR1(1)*HIPR1(1)) GO TO 610
2426 PP(LQP(MP),4)=SQRT(ERSHU)
2427 PP(LQP(MP),5)=SQRT(AMSHU)
2428 ENDIF
2429C ********reshuffle the energy when jet has mass
2430C
2431 R0=RDP(MP)
2432 DP1=DP*V1
2433 DP2=DP*V2
2434 DP3=DP*V3
2435C ********momentum and energy transfer from jet
2436 NPJ(LQP(MP))=NPJ(LQP(MP))+1
2437 KFPJ(LQP(MP),NPJ(LQP(MP)))=21
2438 PJPX(LQP(MP),NPJ(LQP(MP)))=DP1
2439 PJPY(LQP(MP),NPJ(LQP(MP)))=DP2
2440 PJPZ(LQP(MP),NPJ(LQP(MP)))=DP3
2441 PJPE(LQP(MP),NPJ(LQP(MP)))=DP
2442 PJPM(LQP(MP),NPJ(LQP(MP)))=0.0
2443
2444 GO TO 660
2445
2446640 MT=MT+1
2447 DRR=RDT(MT)-R0
2448 IF(RN.GE.1.0-EXP(-DRR/HIPR1(13))) GO TO 610
2449 DP=DRR*HIPR1(14)
2450 IF(DP.LE.0.2) GO TO 610
2451 IF(PTOT.LE.0.4) GO TO 690
2452 IF(PTOT.LE.DP) DP=PTOT-0.2
2453 DE=DP
2454
2455 IF(KFTJ(JT,I).NE.21) THEN
2456 PRSHU=PT(LQT(MT),1)**2+PT(LQT(MT),2)**2
2457 & +PT(LQT(MT),3)**2
2458 DE=SQRT(PJTM(JT,I)**2+PTOT**2)
2459 & -SQRT(PJTM(JT,I)**2+(PTOT-DP)**2)
2460 ERSHU=(PT(LQT(MT),4)+DE-DP)**2
2461 AMSHU=ERSHU-PRSHU
2462 IF(AMSHU.LT.HIPR1(1)*HIPR1(1)) GO TO 610
2463 PT(LQT(MT),4)=SQRT(ERSHU)
2464 PT(LQT(MT),5)=SQRT(AMSHU)
2465 ENDIF
2466C ********reshuffle the energy when jet has mass
2467
2468 R0=RDT(MT)
2469 DP1=DP*V1
2470 DP2=DP*V2
2471 DP3=DP*V3
2472C ********momentum and energy transfer from jet
2473 NTJ(LQT(MT))=NTJ(LQT(MT))+1
2474 KFTJ(LQT(MT),NTJ(LQT(MT)))=21
2475 PJTX(LQT(MT),NTJ(LQT(MT)))=DP1
2476 PJTY(LQT(MT),NTJ(LQT(MT)))=DP2
2477 PJTZ(LQT(MT),NTJ(LQT(MT)))=DP3
2478 PJTE(LQT(MT),NTJ(LQT(MT)))=DP
2479 PJTM(LQT(MT),NTJ(LQT(MT)))=0.0
2480
2481660 PJTX(JT,I)=(PTOT-DP)*V1
2482 PJTY(JT,I)=(PTOT-DP)*V2
2483 PJTZ(JT,I)=(PTOT-DP)*V3
2484 PJTE(JT,I)=PJTE(JT,I)-DE
2485
2486 PTOT=PTOT-DP
2487 NQ=NQ+1
2488 GO TO 600
2489690 CONTINUE
2490 RETURN
2491C********************************************************
2492C Q-QBAR jet interaction
2493C********************************************************
24942000 ISG=JPJT
2495 IF(IASG(ISG,3).NE.1) RETURN
2496C
2497 JP=IASG(ISG,1)
2498 JT=IASG(ISG,2)
2499 XJ=(YP(1,JP)+BBX+YT(1,JT))/2.0
2500 YJ=(YP(2,JP)+BBY+YT(2,JT))/2.0
2501 DO 2690 I=1,NJSG(ISG)
2502 PTJET0=SQRT(PXSG(ISG,I)**2+PYSG(ISG,I)**2)
2503 IF(PTJET0.LE.HIPR1(11).OR.PESG(ISG,I).LT.HIPR1(1))
2504 & GO TO 2690
2505 PTOT=SQRT(PTJET0*PTJET0+PZSG(ISG,I)**2)
2506 IF(PTOT.LT.MAX(HIPR1(1),HIPR1(8))) GO TO 2690
2507 PHIQ=ULANGL(PXSG(ISG,I),PYSG(ISG,I))
2508 KP=0
2509 DO 2500 I2=1,IHNT2(1)
2510 IF(NFP(I2,5).NE.3.OR.I2.EQ.JP) GO TO 2500
2511 DX=YP(1,I2)+BBX-XJ
2512 DY=YP(2,I2)+BBY-YJ
2513 PHI=ULANGL(DX,DY)
2514 DPHI=ABS(PHI-PHIQ)
2515c Uzhi:
2516 IF(DPHI.GE.HIPR1(40)) DPHI=2.*HIPR1(40)-DPHI
2517 IF(DPHI.GT.HIPR1(40)/2.0) GO TO 2500
2518 RD0=SQRT(DX*DX+DY*DY)
2519 IF(RD0*SIN(DPHI).GT.HIPR1(12)) GO TO 2500
2520 KP=KP+1
2521 LQP(KP)=I2
2522 RDP(KP)=COS(DPHI)*RD0
2523 2500 CONTINUE
2524C******* rearrange according to decending rd************
2525 DO 2510 I2=1,KP-1
2526 DO 2510 J2=I2+1,KP
2527 IF(RDP(I2).LT.RDP(J2)) GO TO 2510
2528 RD=RDP(I2)
2529 LQ=LQP(I2)
2530 RDP(I2)=RDP(J2)
2531 LQP(I2)=LQP(J2)
2532 RDP(J2)=RD
2533 LQP(J2)=LQ
2534 2510 CONTINUE
2535C****** find wounded targ which can interact with jet********
2536 KT=0
2537 DO 2520 I2=1,IHNT2(3)
2538 IF(NFT(I2,5).NE.3 .OR. I2.EQ.JT) GO TO 2520
2539 DX=YT(1,I2)-XJ
2540 DY=YT(2,I2)-YJ
2541 PHI=ULANGL(DX,DY)
2542 DPHI=ABS(PHI-PHIQ)
2543c Uzhi:
2544 IF(DPHI.GE.HIPR1(40)) DPHI=2.*HIPR1(40)-DPHI
2545 IF(DPHI.GT.HIPR1(40)/2.0) GO TO 2520
2546 RD0=SQRT(DX*DX+DY*DY)
2547 IF(RD0*SIN(DPHI).GT.HIPR1(12)) GO TO 2520
2548 KT=KT+1
2549 LQT(KT)=I2
2550 RDT(KT)=COS(DPHI)*RD0
2551 2520 CONTINUE
2552C******* rearrange according to decending rd************
2553 DO 2530 I2=1,KT-1
2554 DO 2530 J2=I2+1,KT
2555 IF(RDT(I2).LT.RDT(J2)) GO TO 2530
2556 RD=RDT(I2)
2557 LQ=LQT(I2)
2558 RDT(I2)=RDT(J2)
2559 LQT(I2)=LQT(J2)
2560 RDT(J2)=RD
2561 LQT(J2)=LQ
2562 2530 CONTINUE
2563
2564 MP=0
2565 MT=0
2566 NQ=0
2567 DP=0.0
2568 R0=0.0
2569 PTOT=SQRT(PXSG(ISG,I)**2+PYSG(ISG,I)**2
2570 & +PZSG(ISG,I)**2)
2571 V1=PXSG(ISG,I)/PTOT
2572 V2=PYSG(ISG,I)/PTOT
2573 V3=PZSG(ISG,I)/PTOT
2574
2575 2600 RN=RANART(NSEED)
2576 2610 IF(MT.GE.KT .AND. MP.GE.KP) GO TO 2690
2577 IF(MT.GE.KT) GO TO 2620
2578 IF(MP.GE.KP) GO TO 2640
2579 IF(RDP(MP+1).GT.RDT(MT+1)) GO TO 2640
2580 2620 MP=MP+1
2581 DRR=RDP(MP)-R0
2582 IF(RN.GE.1.0-EXP(-DRR/HIPR1(13))) GO TO 2610
2583 DP=DRR*HIPR1(14)/2.0
2584 IF(DP.LE.0.2) GO TO 2610
2585 IF(PTOT.LE.0.4) GO TO 2690
2586 IF(PTOT.LE.DP) DP=PTOT-0.2
2587 DE=DP
2588C
2589 IF(K2SG(ISG,I).NE.21) THEN
2590 IF(PTOT.LT.DP+HIPR1(1)) GO TO 2690
2591 PRSHU=PP(LQP(MP),1)**2+PP(LQP(MP),2)**2
2592 & +PP(LQP(MP),3)**2
2593 DE=SQRT(PMSG(ISG,I)**2+PTOT**2)
2594 & -SQRT(PMSG(ISG,I)**2+(PTOT-DP)**2)
2595 ERSHU=(PP(LQP(MP),4)+DE-DP)**2
2596 AMSHU=ERSHU-PRSHU
2597 IF(AMSHU.LT.HIPR1(1)*HIPR1(1)) GO TO 2610
2598 PP(LQP(MP),4)=SQRT(ERSHU)
2599 PP(LQP(MP),5)=SQRT(AMSHU)
2600 ENDIF
2601C ********reshuffle the energy when jet has mass
2602C
2603 R0=RDP(MP)
2604 DP1=DP*V1
2605 DP2=DP*V2
2606 DP3=DP*V3
2607C ********momentum and energy transfer from jet
2608 NPJ(LQP(MP))=NPJ(LQP(MP))+1
2609 KFPJ(LQP(MP),NPJ(LQP(MP)))=21
2610 PJPX(LQP(MP),NPJ(LQP(MP)))=DP1
2611 PJPY(LQP(MP),NPJ(LQP(MP)))=DP2
2612 PJPZ(LQP(MP),NPJ(LQP(MP)))=DP3
2613 PJPE(LQP(MP),NPJ(LQP(MP)))=DP
2614 PJPM(LQP(MP),NPJ(LQP(MP)))=0.0
2615
2616 GO TO 2660
2617
2618 2640 MT=MT+1
2619 DRR=RDT(MT)-R0
2620 IF(RN.GE.1.0-EXP(-DRR/HIPR1(13))) GO TO 2610
2621 DP=DRR*HIPR1(14)
2622 IF(DP.LE.0.2) GO TO 2610
2623 IF(PTOT.LE.0.4) GO TO 2690
2624 IF(PTOT.LE.DP) DP=PTOT-0.2
2625 DE=DP
2626
2627 IF(K2SG(ISG,I).NE.21) THEN
2628 IF(PTOT.LT.DP+HIPR1(1)) GO TO 2690
2629 PRSHU=PT(LQT(MT),1)**2+PT(LQT(MT),2)**2
2630 & +PT(LQT(MT),3)**2
2631 DE=SQRT(PMSG(ISG,I)**2+PTOT**2)
2632 & -SQRT(PMSG(ISG,I)**2+(PTOT-DP)**2)
2633 ERSHU=(PT(LQT(MT),4)+DE-DP)**2
2634 AMSHU=ERSHU-PRSHU
2635 IF(AMSHU.LT.HIPR1(1)*HIPR1(1)) GO TO 2610
2636 PT(LQT(MT),4)=SQRT(ERSHU)
2637 PT(LQT(MT),5)=SQRT(AMSHU)
2638 ENDIF
2639C ********reshuffle the energy when jet has mass
2640
2641 R0=RDT(MT)
2642 DP1=DP*V1
2643 DP2=DP*V2
2644 DP3=DP*V3
2645C ********momentum and energy transfer from jet
2646 NTJ(LQT(MT))=NTJ(LQT(MT))+1
2647 KFTJ(LQT(MT),NTJ(LQT(MT)))=21
2648 PJTX(LQT(MT),NTJ(LQT(MT)))=DP1
2649 PJTY(LQT(MT),NTJ(LQT(MT)))=DP2
2650 PJTZ(LQT(MT),NTJ(LQT(MT)))=DP3
2651 PJTE(LQT(MT),NTJ(LQT(MT)))=DP
2652 PJTM(LQT(MT),NTJ(LQT(MT)))=0.0
2653
2654 2660 PXSG(ISG,I)=(PTOT-DP)*V1
2655 PYSG(ISG,I)=(PTOT-DP)*V2
2656 PZSG(ISG,I)=(PTOT-DP)*V3
2657 PESG(ISG,I)=PESG(ISG,I)-DE
2658
2659 PTOT=PTOT-DP
2660 NQ=NQ+1
2661 GO TO 2600
2662 2690 CONTINUE
2663 RETURN
2664 END
2665
2666C
2667C
2668C
2669C
2670 SUBROUTINE HIJFRG(JTP,NTP,IERROR)
2671C NTP=1, fragment proj string, NTP=2, targ string,
2672C NTP=3, independent
2673C strings from jets. JTP is the line number of the string
2674C*******Fragment all leadng strings of proj and targ**************
2675C IHNT2(1)=atomic #, IHNT2(2)=proton #(=-1 if anti-proton) *
2676C******************************************************************
2677 PARAMETER (MAXSTR=150001)
2678 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
2679cc SAVE /HPARNT/
2680 COMMON/HIJDAT/HIDAT0(10,10),HIDAT(10)
2681cc SAVE /HIJDAT/
2682 COMMON/HSTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
2683cc SAVE /HSTRNG/
2684 COMMON/HJJET1/NPJ(300),KFPJ(300,500),PJPX(300,500),
2685 & PJPY(300,500),PJPZ(300,500),PJPE(300,500),
2686 & PJPM(300,500),NTJ(300),KFTJ(300,500),
2687 & PJTX(300,500),PJTY(300,500),PJTZ(300,500),
2688 & PJTE(300,500),PJTM(300,500)
2689cc SAVE /HJJET1/
2690 COMMON/HJJET2/NSG,NJSG(MAXSTR),IASG(MAXSTR,3),K1SG(MAXSTR,100),
2691 & K2SG(MAXSTR,100),PXSG(MAXSTR,100),PYSG(MAXSTR,100),
2692 & PZSG(MAXSTR,100),PESG(MAXSTR,100),PMSG(MAXSTR,100)
2693cc SAVE /HJJET2/
2694C
2695 COMMON/LUJETSA/N,K(9000,5),P(9000,5),V(9000,5)
2696cc SAVE /LUJETSA/
2697 COMMON/LUDAT1A/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
2698cc SAVE /LUDAT1A/
2699 COMMON/RNDF77/NSEED
2700cc SAVE /RNDF77/
2701clin-4/11/01 soft:
2702 common/anim/nevent,isoft,isflag,izpc
2703cc SAVE /anim/
2704 SAVE
2705
2706cbz3/12/99
2707c.....set up fragmentation function according to the number of collisions
2708c.....a wounded nucleon has suffered
2709c IF (NTP .EQ. 1) THEN
2710c NCOLL = NFP(JTP, 11)
2711c ELSE IF (NTP .EQ. 2) THEN
2712c NCOLL = NFT(JTP, 11)
2713c ELSE IF (NTP .EQ. 3) THEN
2714c NCOLL = (NFP(IASG(JTP,1), 11) + NFT(IASG(JTP,2), 11)) / 2
2715c END IF
2716c IF (NCOLL .LE. 1) THEN
2717c PARJ(5) = 0.5
2718c ELSE IF (NCOLL .EQ. 2) THEN
2719c PARJ(5) = 0.75
2720c ELSE IF (NCOLL .EQ. 3) THEN
2721c PARJ(5) = 1.17
2722c ELSE IF (NCOLL .EQ. 4) THEN
2723c PARJ(5) = 2.0
2724c ELSE IF (NCOLL .EQ. 5) THEN
2725c PARJ(5) = 4.5
2726c ELSE IF (NCOLL .GE. 6) THEN
2727c PARJ(5) = 49.5
2728c END IF
2729c PARJ(5) = 0.5
2730cbz3/12/99 end
2731
2732 IERROR=0
2733 CALL LUEDIT(0)
2734 N=0
2735C ********initialize the document lines
2736 IF(NTP.EQ.3) THEN
2737 ISG=JTP
2738 N=NJSG(ISG)
2739 DO 100 I=1,NJSG(ISG)
2740 K(I,1)=K1SG(ISG,I)
2741 K(I,2)=K2SG(ISG,I)
2742 P(I,1)=PXSG(ISG,I)
2743 P(I,2)=PYSG(ISG,I)
2744 P(I,3)=PZSG(ISG,I)
2745 P(I,4)=PESG(ISG,I)
2746 P(I,5)=PMSG(ISG,I)
2747 100 CONTINUE
2748
2749C IF(IHPR2(1).GT.0) CALL ATTRAD(IERROR)
2750c IF(IERROR.NE.0) RETURN
2751C CALL LULIST(1)
2752 if(isoft.ne.2.or.isflag.ne.0) CALL LUEXEC
2753 RETURN
2754 ENDIF
2755C
2756 IF(NTP.EQ.2) GO TO 200
2757 IF(JTP.GT.IHNT2(1)) RETURN
2758 IF(NFP(JTP,5).NE.3.AND.NFP(JTP,3).NE.0
2759 & .AND.NPJ(JTP).EQ.0.AND.NFP(JTP,10).EQ.0) GO TO 1000
2760 IF(NFP(JTP,15).EQ.-1) THEN
2761 KF1=NFP(JTP,2)
2762 KF2=NFP(JTP,1)
2763 PQ21=PP(JTP,6)
2764 PQ22=PP(JTP,7)
2765 PQ11=PP(JTP,8)
2766 PQ12=PP(JTP,9)
2767 AM1=PP(JTP,15)
2768 AM2=PP(JTP,14)
2769 ELSE
2770 KF1=NFP(JTP,1)
2771 KF2=NFP(JTP,2)
2772 PQ21=PP(JTP,8)
2773 PQ22=PP(JTP,9)
2774 PQ11=PP(JTP,6)
2775 PQ12=PP(JTP,7)
2776 AM1=PP(JTP,14)
2777 AM2=PP(JTP,15)
2778 ENDIF
2779
2780C ********for NFP(JTP,15)=-1 NFP(JTP,1) IS IN -Z DIRECTION
2781 PB1=PQ11+PQ21
2782 PB2=PQ12+PQ22
2783 PB3=PP(JTP,3)
2784 PECM=PP(JTP,5)
2785 BTZ=PB3/PP(JTP,4)
2786 IF((ABS(PB1-PP(JTP,1)).GT.0.01.OR.
2787 & ABS(PB2-PP(JTP,2)).GT.0.01).AND.IHPR2(10).NE.0)
2788 & WRITE(6,*) ' Pt of Q and QQ do not sum to the total',jtp
2789 & ,ntp,pq11,pq21,pb1,'*',pq12,pq22,pb2,'*',pp(JTP,1),pp(JTP,2)
2790 GO TO 300
2791
2792200 IF(JTP.GT.IHNT2(3)) RETURN
2793 IF(NFT(JTP,5).NE.3.AND.NFT(JTP,3).NE.0
2794 & .AND.NTJ(JTP).EQ.0.AND.NFT(JTP,10).EQ.0) GO TO 1200
2795 IF(NFT(JTP,15).EQ.1) THEN
2796 KF1=NFT(JTP,1)
2797 KF2=NFT(JTP,2)
2798 PQ11=PT(JTP,6)
2799 PQ12=PT(JTP,7)
2800 PQ21=PT(JTP,8)
2801 PQ22=PT(JTP,9)
2802 AM1=PT(JTP,14)
2803 AM2=PT(JTP,15)
2804 ELSE
2805 KF1=NFT(JTP,2)
2806 KF2=NFT(JTP,1)
2807 PQ11=PT(JTP,8)
2808 PQ12=PT(JTP,9)
2809 PQ21=PT(JTP,6)
2810 PQ22=PT(JTP,7)
2811 AM1=PT(JTP,15)
2812 AM2=PT(JTP,14)
2813 ENDIF
2814C ********for NFT(JTP,15)=1 NFT(JTP,1) IS IN +Z DIRECTION
2815 PB1=PQ11+PQ21
2816 PB2=PQ12+PQ22
2817 PB3=PT(JTP,3)
2818 PECM=PT(JTP,5)
2819 BTZ=PB3/PT(JTP,4)
2820
2821 IF((ABS(PB1-PT(JTP,1)).GT.0.01.OR.
2822 & ABS(PB2-PT(JTP,2)).GT.0.01).AND.IHPR2(10).NE.0)
2823 & WRITE(6,*) ' Pt of Q and QQ do not sum to the total',jtp
2824 & ,ntp,pq11,pq21,pb1,'*',pq12,pq22,pb2,'*',pt(JTP,1),pt(JTP,2)
2825300 IF(PECM.LT.HIPR1(1)) THEN
2826 IERROR=1
2827 IF(IHPR2(10).EQ.0) RETURN
2828 WRITE(6,*) ' ECM=',PECM,' energy of the string is too small'
2829clin:
2830 write (6,*) 'JTP,NTP,pq=',JTP,NTP,pq11,pq12,pq21,pq22
2831 RETURN
2832 ENDIF
2833 AMT=PECM**2+PB1**2+PB2**2
2834 AMT1=AM1**2+PQ11**2+PQ12**2
2835 AMT2=AM2**2+PQ21**2+PQ22**2
2836 PZCM=SQRT(ABS(AMT**2+AMT1**2+AMT2**2-2.0*AMT*AMT1
2837 & -2.0*AMT*AMT2-2.0*AMT1*AMT2))/2.0/SQRT(AMT)
2838C *******PZ of end-partons in c.m. frame of the string
2839 K(1,1)=2
2840 K(1,2)=KF1
2841 P(1,1)=PQ11
2842 P(1,2)=PQ12
2843 P(1,3)=PZCM
2844 P(1,4)=SQRT(AMT1+PZCM**2)
2845 P(1,5)=AM1
2846 K(2,1)=1
2847 K(2,2)=KF2
2848 P(2,1)=PQ21
2849 P(2,2)=PQ22
2850 P(2,3)=-PZCM
2851 P(2,4)=SQRT(AMT2+PZCM**2)
2852 P(2,5)=AM2
2853 N=2
2854C*****
2855 CALL HIROBO(0.0,0.0,0.0,0.0,BTZ)
2856 JETOT=0
2857 IF((PQ21**2+PQ22**2).GT.(PQ11**2+PQ12**2)) THEN
2858 PMAX1=P(2,1)
2859 PMAX2=P(2,2)
2860 PMAX3=P(2,3)
2861 ELSE
2862 PMAX1=P(1,1)
2863 PMAX2=P(1,2)
2864 PMAX3=P(1,3)
2865 ENDIF
2866 IF(NTP.EQ.1) THEN
2867 PP(JTP,10)=PMAX1
2868 PP(JTP,11)=PMAX2
2869 PP(JTP,12)=PMAX3
2870 ELSE IF(NTP.EQ.2) THEN
2871 PT(JTP,10)=PMAX1
2872 PT(JTP,11)=PMAX2
2873 PT(JTP,12)=PMAX3
2874 ENDIF
2875C*******************attach produced jets to the leadng partons****
2876 IF(NTP.EQ.1.AND.NPJ(JTP).NE.0) THEN
2877 JETOT=NPJ(JTP)
2878C IF(NPJ(JTP).GE.2) CALL HIJSRT(JTP,1)
2879C ********sort jets in order of y
2880 IEX=0
2881 IF((ABS(KF1).GT.1000.AND.KF1.LT.0)
2882 & .OR.(ABS(KF1).LT.1000.AND.KF1.GT.0)) IEX=1
2883 DO 520 I=N,2,-1
2884 DO 520 J=1,5
2885 II=NPJ(JTP)+I
2886 K(II,J)=K(I,J)
2887 P(II,J)=P(I,J)
2888 V(II,J)=V(I,J)
2889520 CONTINUE
2890
2891 DO 540 I=1,NPJ(JTP)
2892 DO 542 J=1,5
2893 K(I+1,J)=0
2894 V(I+1,J)=0
2895542 CONTINUE
2896 I0=I
2897clin-4/12/01: IF(IEX.EQ.1) I0=NPJ(JTP)-I+1
2898 IF(IEX.EQ.1.and.(isoft.ne.2.or.isflag.ne.0))
2899 1 I0=NPJ(JTP)-I+1
2900C ********reverse the order of jets
2901 KK1=KFPJ(JTP,I0)
2902 K(I+1,1)=2
2903 K(I+1,2)=KK1
2904 IF(KK1.NE.21 .AND. KK1.NE.0) K(I+1,1)=
2905 & 1+(ABS(KK1)+(2*IEX-1)*KK1)/2/ABS(KK1)
2906 P(I+1,1)=PJPX(JTP,I0)
2907 P(I+1,2)=PJPY(JTP,I0)
2908 P(I+1,3)=PJPZ(JTP,I0)
2909 P(I+1,4)=PJPE(JTP,I0)
2910 P(I+1,5)=PJPM(JTP,I0)
2911540 CONTINUE
2912 N=N+NPJ(JTP)
2913 ELSE IF(NTP.EQ.2.AND.NTJ(JTP).NE.0) THEN
2914 JETOT=NTJ(JTP)
2915c IF(NTJ(JTP).GE.2) CALL HIJSRT(JTP,2)
2916C ********sort jets in order of y
2917 IEX=1
2918 IF((ABS(KF2).GT.1000.AND.KF2.LT.0)
2919 & .OR.(ABS(KF2).LT.1000.AND.KF2.GT.0)) IEX=0
2920 DO 560 I=N,2,-1
2921 DO 560 J=1,5
2922 II=NTJ(JTP)+I
2923 K(II,J)=K(I,J)
2924 P(II,J)=P(I,J)
2925 V(II,J)=V(I,J)
2926560 CONTINUE
2927 DO 580 I=1,NTJ(JTP)
2928 DO 582 J=1,5
2929 K(I+1,J)=0
2930 V(I+1,J)=0
2931582 CONTINUE
2932 I0=I
2933clin-4/12/01: IF(IEX.EQ.1) I0=NTJ(JTP)-I+1
2934 IF(IEX.EQ.1.and.(isoft.ne.2.or.isflag.ne.0))
2935 1 I0=NTJ(JTP)-I+1
2936C ********reverse the order of jets
2937 KK1=KFTJ(JTP,I0)
2938 K(I+1,1)=2
2939 K(I+1,2)=KK1
2940 IF(KK1.NE.21 .AND. KK1.NE.0) K(I+1,1)=
2941 & 1+(ABS(KK1)+(2*IEX-1)*KK1)/2/ABS(KK1)
2942 P(I+1,1)=PJTX(JTP,I0)
2943 P(I+1,2)=PJTY(JTP,I0)
2944 P(I+1,3)=PJTZ(JTP,I0)
2945 P(I+1,4)=PJTE(JTP,I0)
2946 P(I+1,5)=PJTM(JTP,I0)
2947580 CONTINUE
2948 N=N+NTJ(JTP)
2949 ENDIF
2950 IF(IHPR2(1).GT.0.AND.RANART(NSEED).LE.HIDAT(3)) THEN
2951 HDAT20=HIDAT(2)
2952 HPR150=HIPR1(5)
2953 IF(IHPR2(8).EQ.0.AND.IHPR2(3).EQ.0.AND.IHPR2(9).EQ.0)
2954 & HIDAT(2)=2.0
2955 IF(HINT1(1).GE.1000.0.AND.JETOT.EQ.0)THEN
2956 HIDAT(2)=3.0
2957 HIPR1(5)=5.0
2958 ENDIF
2959 CALL ATTRAD(IERROR)
2960 HIDAT(2)=HDAT20
2961 HIPR1(5)=HPR150
2962 ELSE IF(JETOT.EQ.0.AND.IHPR2(1).GT.0.AND.
2963 & HINT1(1).GE.1000.0.AND.
2964 & RANART(NSEED).LE.0.8) THEN
2965 HDAT20=HIDAT(2)
2966 HPR150=HIPR1(5)
2967 HIDAT(2)=3.0
2968 HIPR1(5)=5.0
2969 IF(IHPR2(8).EQ.0.AND.IHPR2(3).EQ.0.AND.IHPR2(9).EQ.0)
2970 & HIDAT(2)=2.0
2971 CALL ATTRAD(IERROR)
2972 HIDAT(2)=HDAT20
2973 HIPR1(5)=HPR150
2974 ENDIF
2975 IF(IERROR.NE.0) RETURN
2976C ******** conduct soft radiations
2977C****************************
2978C
2979C
2980clin-4/11/01 soft:
2981c CALL LUEXEC
2982 if(isoft.ne.2.or.isflag.ne.0) CALL LUEXEC
2983
2984 RETURN
2985
29861000 N=1
2987 K(1,1)=1
2988 K(1,2)=NFP(JTP,3)
2989 DO 1100 JJ=1,5
2990 P(1,JJ)=PP(JTP,JJ)
29911100 CONTINUE
2992C ********proj remain as a nucleon or delta
2993clin-4/11/01 soft:
2994c CALL LUEXEC
2995 if(isoft.ne.2.or.isflag.ne.0) CALL LUEXEC
2996
2997C call lulist(1)
2998 RETURN
2999C
30001200 N=1
3001 K(1,1)=1
3002 K(1,2)=NFT(JTP,3)
3003 DO 1300 JJ=1,5
3004 P(1,JJ)=PT(JTP,JJ)
30051300 CONTINUE
3006C ********targ remain as a nucleon or delta
3007clin-4/11/01 soft:
3008c CALL LUEXEC
3009 if(isoft.ne.2.or.isflag.ne.0) CALL LUEXEC
3010
3011C call lulist(1)
3012 RETURN
3013 END
3014C
3015C
3016C
3017C
3018C****************************************************************
3019C conduct soft radiation according to dipole approxiamtion
3020C****************************************************************
3021 SUBROUTINE ATTRAD(IERROR)
3022C
3023 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
3024cc SAVE /HPARNT/
3025 COMMON/HIJDAT/HIDAT0(10,10),HIDAT(10)
3026cc SAVE /HIJDAT/
3027 COMMON/LUJETSA/N,K(9000,5),P(9000,5),V(9000,5)
3028cc SAVE /LUJETSA/
3029 COMMON/RNDF77/NSEED
3030cc SAVE /RNDF77/
3031 SAVE
3032 IERROR=0
3033
3034C.....S INVARIANT MASS-SQUARED BETWEEN PARTONS I AND I+1......
3035C.....SM IS THE LARGEST MASS-SQUARED....
3036
303740 SM=0.
3038 JL=1
3039 DO 30 I=1,N-1
3040 S=2.*(P(I,4)*P(I+1,4)-P(I,1)*P(I+1,1)-P(I,2)*P(I+1,2)
3041 & -P(I,3)*P(I+1,3))+P(I,5)**2+P(I+1,5)**2
3042 IF(S.LT.0.) S=0.
3043 WP=SQRT(S)-1.5*(P(I,5)+P(I+1,5))
3044 IF(WP.GT.SM) THEN
3045 PBT1=P(I,1)+P(I+1,1)
3046 PBT2=P(I,2)+P(I+1,2)
3047 PBT3=P(I,3)+P(I+1,3)
3048 PBT4=P(I,4)+P(I+1,4)
3049 BTT=(PBT1**2+PBT2**2+PBT3**2)/PBT4**2
3050 IF(BTT.GE.1.0-1.0E-10) GO TO 30
3051 IF((I.NE.1.OR.I.NE.N-1).AND.
3052 & (K(I,2).NE.21.AND.K(I+1,2).NE.21)) GO TO 30
3053 JL=I
3054 SM=WP
3055 ENDIF
305630 CONTINUE
3057 S=(SM+1.5*(P(JL,5)+P(JL+1,5)))**2
3058 IF(SM.LT.HIPR1(5)) GOTO 2
3059
3060C.....MAKE PLACE FOR ONE GLUON.....
3061 IF(JL+1.EQ.N) GOTO 190
3062 DO 160 J=N,JL+2,-1
3063 K(J+1,1)=K(J,1)
3064 K(J+1,2)=K(J,2)
3065 DO 150 M=1,5
3066150 P(J+1,M)=P(J,M)
3067160 CONTINUE
3068190 N=N+1
3069
3070C.....BOOST TO REST SYSTEM FOR PARTICLES JL AND JL+1.....
3071 P1=P(JL,1)+P(JL+1,1)
3072 P2=P(JL,2)+P(JL+1,2)
3073 P3=P(JL,3)+P(JL+1,3)
3074 P4=P(JL,4)+P(JL+1,4)
3075 BEX=-P1/P4
3076 BEY=-P2/P4
3077 BEZ=-P3/P4
3078 IMIN=JL
3079 IMAX=JL+1
3080 CALL ATROBO(0.,0.,BEX,BEY,BEZ,IMIN,IMAX,IERROR)
3081 IF(IERROR.NE.0) RETURN
3082C.....ROTATE TO Z-AXIS....
3083 CTH=P(JL,3)/SQRT(P(JL,4)**2-P(JL,5)**2)
3084 IF(ABS(CTH).GT.1.0) CTH=MAX(-1.,MIN(1.,CTH))
3085 THETA=ACOS(CTH)
3086 PHI=ULANGL(P(JL,1),P(JL,2))
3087 CALL ATROBO(0.,-PHI,0.,0.,0.,IMIN,IMAX,IERROR)
3088 CALL ATROBO(-THETA,0.,0.,0.,0.,IMIN,IMAX,IERROR)
3089
3090C.....CREATE ONE GLUON AND ORIENTATE.....
3091
30921 CALL AR3JET(S,X1,X3,JL)
3093 CALL ARORIE(S,X1,X3,JL)
3094 IF(HIDAT(2).GT.0.0) THEN
3095 PTG1=SQRT(P(JL,1)**2+P(JL,2)**2)
3096 PTG2=SQRT(P(JL+1,1)**2+P(JL+1,2)**2)
3097 PTG3=SQRT(P(JL+2,1)**2+P(JL+2,2)**2)
3098 PTG=MAX(PTG1,PTG2,PTG3)
3099 IF(PTG.GT.HIDAT(2)) THEN
3100 FMFACT=EXP(-(PTG**2-HIDAT(2)**2)/HIPR1(2)**2)
3101 IF(RANART(NSEED).GT.FMFACT) GO TO 1
3102 ENDIF
3103 ENDIF
3104C.....ROTATE AND BOOST BACK.....
3105 IMIN=JL
3106 IMAX=JL+2
3107 CALL ATROBO(THETA,PHI,-BEX,-BEY,-BEZ,IMIN,IMAX,IERROR)
3108 IF(IERROR.NE.0) RETURN
3109C.....ENUMERATE THE GLUONS.....
3110 K(JL+2,1)=K(JL+1,1)
3111 K(JL+2,2)=K(JL+1,2)
3112 K(JL+2,3)=K(JL+1,3)
3113 K(JL+2,4)=K(JL+1,4)
3114 K(JL+2,5)=K(JL+1,5)
3115 P(JL+2,5)=P(JL+1,5)
3116 K(JL+1,1)=2
3117 K(JL+1,2)=21
3118 K(JL+1,3)=0
3119 K(JL+1,4)=0
3120 K(JL+1,5)=0
3121 P(JL+1,5)=0.
3122C----THETA FUNCTION DAMPING OF THE EMITTED GLUONS. FOR HADRON-HADRON.
3123C----R0=VFR(2)
3124C IF(VFR(2).GT.0.) THEN
3125C PTG=SQRT(P(JL+1,1)**2+P(JL+1,2)**2)
3126C PTGMAX=WSTRI/2.
3127C DOPT=SQRT((4.*PAR(71)*VFR(2))/WSTRI)
3128C PTOPT=(DOPT*WSTRI)/(2.*VFR(2))
3129C IF(PTG.GT.PTOPT) IORDER=IORDER-1
3130C IF(PTG.GT.PTOPT) GOTO 1
3131C ENDIF
3132C-----
3133 IF(SM.GE.HIPR1(5)) GOTO 40
3134
31352 K(1,1)=2
3136 K(1,3)=0
3137 K(1,4)=0
3138 K(1,5)=0
3139 K(N,1)=1
3140 K(N,3)=0
3141 K(N,4)=0
3142 K(N,5)=0
3143
3144 RETURN
3145 END
3146
3147
3148 SUBROUTINE AR3JET(S,X1,X3,JL)
3149C
3150 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
3151cc SAVE /HPARNT/
3152 COMMON/LUJETSA/N,K(9000,5),P(9000,5),V(9000,5)
3153cc SAVE /LUJETSA/
3154 COMMON/RNDF77/NSEED
3155cc SAVE /RNDF77/
3156 SAVE
3157C
3158 C=1./3.
3159 IF(K(JL,2).NE.21 .AND. K(JL+1,2).NE.21) C=8./27.
3160 EXP1=3
3161 EXP3=3
3162 IF(K(JL,2).NE.21) EXP1=2
3163 IF(K(JL+1,2).NE.21) EXP3=2
3164 A=0.24**2/S
3165 YMA=ALOG(.5/SQRT(A)+SQRT(.25/A-1))
3166 D=4.*C*YMA
3167 SM1=P(JL,5)**2/S
3168 SM3=P(JL+1,5)**2/S
3169 XT2M=(1.-2.*SQRT(SM1)+SM1-SM3)*(1.-2.*SQRT(SM3)-SM1+SM3)
3170 XT2M=MIN(.25,XT2M)
3171 NTRY=0
31721 IF(NTRY.EQ.5000) THEN
3173 X1=.5*(2.*SQRT(SM1)+1.+SM1-SM3)
3174 X3=.5*(2.*SQRT(SM3)+1.-SM1+SM3)
3175 RETURN
3176 ENDIF
3177 NTRY=NTRY+1
3178
3179 XT2=A*(XT2M/A)**(RANART(NSEED)**(1./D))
3180
3181 YMAX=ALOG(.5/SQRT(XT2)+SQRT(.25/XT2-1.))
3182 Y=(2.*RANART(NSEED)-1.)*YMAX
3183 X1=1.-SQRT(XT2)*EXP(Y)
3184 X3=1.-SQRT(XT2)*EXP(-Y)
3185 X2=2.-X1-X3
3186 NEG=0
3187 IF(K(JL,2).NE.21 .OR. K(JL+1,2).NE.21) THEN
3188 IF((1.-X1)*(1.-X2)*(1.-X3)-X2*SM1*(1.-X1)-X2*SM3*(1.-X3).
3189 & LE.0..OR.X1.LE.2.*SQRT(SM1)-SM1+SM3.OR.X3.LE.2.*SQRT(SM3)
3190 & -SM3+SM1) NEG=1
3191 X1=X1+SM1-SM3
3192 X3=X3-SM1+SM3
3193 ENDIF
3194 IF(NEG.EQ.1) GOTO 1
3195
3196 FG=2.*YMAX*C*(X1**EXP1+X3**EXP3)/D
3197 XT2M=XT2
3198 IF(FG.LT.RANART(NSEED)) GOTO 1
3199
3200 RETURN
3201 END
3202C*************************************************************
3203
3204
3205 SUBROUTINE ARORIE(S,X1,X3,JL)
3206C
3207 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
3208cc SAVE /HPARNT/
3209 COMMON/LUJETSA/N,K(9000,5),P(9000,5),V(9000,5)
3210cc SAVE /LUJETSA/
3211 COMMON/RNDF77/NSEED
3212cc SAVE /RNDF77/
3213 SAVE
3214C
3215 W=SQRT(S)
3216 X2=2.-X1-X3
3217 E1=.5*X1*W
3218 E3=.5*X3*W
3219 P1=SQRT(E1**2-P(JL,5)**2)
3220 P3=SQRT(E3**2-P(JL+1,5)**2)
3221 CBET=1.
3222 IF(P1.GT.0..AND.P3.GT.0.) CBET=(P(JL,5)**2
3223 & +P(JL+1,5)**2+2.*E1*E3-S*(1.-X2))/(2.*P1*P3)
3224 IF(ABS(CBET).GT.1.0) CBET=MAX(-1.,MIN(1.,CBET))
3225 BET=ACOS(CBET)
3226
3227C.....MINIMIZE PT1-SQUARED PLUS PT3-SQUARED.....
3228 IF(P1.GE.P3) THEN
3229 PSI=.5*ULANGL(P1**2+P3**2*COS(2.*BET),-P3**2*SIN(2.*BET))
3230 PT1=P1*SIN(PSI)
3231 PZ1=P1*COS(PSI)
3232 PT3=P3*SIN(PSI+BET)
3233 PZ3=P3*COS(PSI+BET)
3234 ELSE IF(P3.GT.P1) THEN
3235 PSI=.5*ULANGL(P3**2+P1**2*COS(2.*BET),-P1**2*SIN(2.*BET))
3236 PT1=P1*SIN(BET+PSI)
3237 PZ1=-P1*COS(BET+PSI)
3238 PT3=P3*SIN(PSI)
3239 PZ3=-P3*COS(PSI)
3240 ENDIF
3241
3242 DEL=2.0*HIPR1(40)*RANART(NSEED)
3243 P(JL,4)=E1
3244 P(JL,1)=PT1*SIN(DEL)
3245 P(JL,2)=-PT1*COS(DEL)
3246 P(JL,3)=PZ1
3247 P(JL+2,4)=E3
3248 P(JL+2,1)=PT3*SIN(DEL)
3249 P(JL+2,2)=-PT3*COS(DEL)
3250 P(JL+2,3)=PZ3
3251 P(JL+1,4)=W-E1-E3
3252 P(JL+1,1)=-P(JL,1)-P(JL+2,1)
3253 P(JL+1,2)=-P(JL,2)-P(JL+2,2)
3254 P(JL+1,3)=-P(JL,3)-P(JL+2,3)
3255 RETURN
3256 END
3257
3258
3259C
3260C*******************************************************************
3261C make boost and rotation to entries from IMIN to IMAX
3262C*******************************************************************
3263 SUBROUTINE ATROBO(THE,PHI,BEX,BEY,BEZ,IMIN,IMAX,IERROR)
3264 COMMON/LUJETSA/N,K(9000,5),P(9000,5),V(9000,5)
3265cc SAVE /LUJETSA/
3266 DIMENSION ROT(3,3),PV(3)
3267 DOUBLE PRECISION DP(4),DBEX,DBEY,DBEZ,DGA,DGA2,DBEP,DGABEP
3268 SAVE
3269 IERROR=0
3270
3271 IF(IMIN.LE.0 .OR. IMAX.GT.N .OR. IMIN.GT.IMAX) RETURN
3272
3273 IF(THE**2+PHI**2.GT.1E-20) THEN
3274C...ROTATE (TYPICALLY FROM Z AXIS TO DIRECTION THETA,PHI)
3275 ROT(1,1)=COS(THE)*COS(PHI)
3276 ROT(1,2)=-SIN(PHI)
3277 ROT(1,3)=SIN(THE)*COS(PHI)
3278 ROT(2,1)=COS(THE)*SIN(PHI)
3279 ROT(2,2)=COS(PHI)
3280 ROT(2,3)=SIN(THE)*SIN(PHI)
3281 ROT(3,1)=-SIN(THE)
3282 ROT(3,2)=0.
3283 ROT(3,3)=COS(THE)
3284 DO 120 I=IMIN,IMAX
3285C************** IF(MOD(K(I,1)/10000,10).GE.6) GOTO 120
3286 DO 100 J=1,3
3287 100 PV(J)=P(I,J)
3288 DO 110 J=1,3
3289 110 P(I,J)=ROT(J,1)*PV(1)+ROT(J,2)*PV(2)
3290 & +ROT(J,3)*PV(3)
3291 120 CONTINUE
3292 ENDIF
3293
3294 IF(BEX**2+BEY**2+BEZ**2.GT.1E-20) THEN
3295C...LORENTZ BOOST (TYPICALLY FROM REST TO MOMENTUM/ENERGY=BETA)
3296 DBEX=dble(BEX)
3297 DBEY=dble(BEY)
3298 DBEZ=dble(BEZ)
3299 DGA2=1D0-DBEX**2-DBEY**2-DBEZ**2
3300 IF(DGA2.LE.0D0) THEN
3301 IERROR=1
3302 RETURN
3303 ENDIF
3304 DGA=1D0/DSQRT(DGA2)
3305 DO 140 I=IMIN,IMAX
3306C************* IF(MOD(K(I,1)/10000,10).GE.6) GOTO 140
3307 DO 130 J=1,4
3308 130 DP(J)=dble(P(I,J))
3309 DBEP=DBEX*DP(1)+DBEY*DP(2)+DBEZ*DP(3)
3310 DGABEP=DGA*(DGA*DBEP/(1D0+DGA)+DP(4))
3311 P(I,1)=sngl(DP(1)+DGABEP*DBEX)
3312 P(I,2)=sngl(DP(2)+DGABEP*DBEY)
3313 P(I,3)=sngl(DP(3)+DGABEP*DBEZ)
3314 P(I,4)=sngl(DGA*(DP(4)+DBEP))
3315140 CONTINUE
3316 ENDIF
3317
3318 RETURN
3319 END
3320C
3321C
3322C
3323 SUBROUTINE HIJHRD(JP,JT,JOUT,JFLG,IOPJT0)
3324C
3325C IOPTJET=1, ALL JET WILL FORM SINGLE STRING SYSTEM
3326C 0, ONLY Q-QBAR JET FORM SINGLE STRING SYSTEM
3327C*******Perform jets production and fragmentation when JP JT *******
3328C scatter. JOUT-> number of hard scatterings precede this one *
3329C for the the same pair(JP,JT). JFLG->a flag to show whether *
3330C jets can be produced (with valence quark=1,gluon=2, q-qbar=3)*
3331C or not(0). Information of jets are in COMMON/ATTJET and *
3332C /MINJET. ABS(NFP(JP,6)) is the total number jets produced by *
3333C JP. If NFP(JP,6)<0 JP can not produce jet anymore. *
3334C*******************************************************************
3335 PARAMETER (MAXSTR=150001)
3336 DIMENSION IP(100,2),IPQ(50),IPB(50),IT(100,2),ITQ(50),ITB(50)
3337 COMMON/hjcrdn/YP(3,300),YT(3,300)
3338cc SAVE /hjcrdn/
3339 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
3340cc SAVE /HPARNT/
3341 COMMON/HIJDAT/HIDAT0(10,10),HIDAT(10)
3342cc SAVE /HIJDAT/
3343 COMMON/HSTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
3344cc SAVE /HSTRNG/
3345 COMMON/HJJET1/NPJ(300),KFPJ(300,500),PJPX(300,500),
3346 & PJPY(300,500),PJPZ(300,500),PJPE(300,500),
3347 & PJPM(300,500),NTJ(300),KFTJ(300,500),
3348 & PJTX(300,500),PJTY(300,500),PJTZ(300,500),
3349 & PJTE(300,500),PJTM(300,500)
3350cc SAVE /HJJET1/
3351 COMMON/HJJET2/NSG,NJSG(MAXSTR),IASG(MAXSTR,3),K1SG(MAXSTR,100),
3352 & K2SG(MAXSTR,100),PXSG(MAXSTR,100),PYSG(MAXSTR,100),
3353 & PZSG(MAXSTR,100),PESG(MAXSTR,100),PMSG(MAXSTR,100)
3354cc SAVE /HJJET2/
3355c COMMON/HJJET4/NDR,IADR(900,2),KFDR(900),PDR(900,5)
3356 COMMON/HJJET4/NDR,IADR(MAXSTR,2),KFDR(MAXSTR),PDR(MAXSTR,5)
3357 common/xydr/rtdr(MAXSTR,2)
3358cc SAVE /HJJET4/
3359 COMMON/RNDF77/NSEED
3360cc SAVE /RNDF77/
3361C************************************ HIJING common block
3362 COMMON/LUJETSA/N,K(9000,5),P(9000,5),V(9000,5)
3363cc SAVE /LUJETSA/
3364 COMMON/LUDAT1A/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
3365cc SAVE /LUDAT1A/
3366 COMMON/PYSUBSA/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
3367cc SAVE /PYSUBSA/
3368 COMMON/PYPARSA/MSTP(200),PARP(200),MSTI(200),PARI(200)
3369cc SAVE /PYPARSA/
3370 COMMON/PYINT1A/MINT(400),VINT(400)
3371cc SAVE /PYINT1A/
3372 COMMON/PYINT2A/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
3373cc SAVE /PYINT2A/
3374 COMMON/PYINT5A/NGEN(0:200,3),XSEC(0:200,3)
3375cc SAVE /PYINT5A/
3376 COMMON/HPINT/MINT4,MINT5,ATCO(200,20),ATXS(0:200)
3377cc SAVE /HPINT/
3378 SAVE
3379C*********************************** LU common block
3380 MXJT=500
3381C SIZE OF COMMON BLOCK FOR # OF PARTON PER STRING
3382 MXSG=900
3383C SIZE OF COMMON BLOCK FOR # OF SINGLE STRINGS
3384 MXSJ=100
3385C SIZE OF COMMON BLOCK FOR # OF PARTON PER SINGLE
3386C STRING
3387 JFLG=0
3388 IHNT2(11)=JP
3389 IHNT2(12)=JT
3390C
3391 IOPJET=IOPJT0
3392 IF(IOPJET.EQ.1.AND.(NFP(JP,6).NE.0.OR.NFT(JT,6).NE.0))
3393 & IOPJET=0
3394 IF(JP.GT.IHNT2(1) .OR. JT.GT.IHNT2(3)) RETURN
3395 IF(NFP(JP,6).LT.0 .OR. NFT(JT,6).LT.0) RETURN
3396C ******** JP or JT can not produce jet anymore
3397C
3398 IF(JOUT.EQ.0) THEN
3399 EPP=PP(JP,4)+PP(JP,3)
3400 EPM=PP(JP,4)-PP(JP,3)
3401 ETP=PT(JT,4)+PT(JT,3)
3402 ETM=PT(JT,4)-PT(JT,3)
3403 IF(EPP.LT.0.0) GO TO 1000
3404 IF(EPM.LT.0.0) GO TO 1000
3405 IF(ETP.LT.0.0) GO TO 1000
3406 IF(ETM.LT.0.0) GO TO 1000
3407 IF(EPP/(EPM+0.01).LE.ETP/(ETM+0.01)) RETURN
3408 ENDIF
3409C ********for the first hard scattering of (JP,JT)
3410C have collision only when Ycm(JP)>Ycm(JT)
3411
3412 ECUT1=HIPR1(1)+HIPR1(8)+PP(JP,14)+PP(JP,15)
3413 ECUT2=HIPR1(1)+HIPR1(8)+PT(JT,14)+PT(JT,15)
3414 IF(PP(JP,4).LE.ECUT1) THEN
3415 NFP(JP,6)=-ABS(NFP(JP,6))
3416 RETURN
3417 ENDIF
3418 IF(PT(JT,4).LE.ECUT2) THEN
3419 NFT(JT,6)=-ABS(NFT(JT,6))
3420 RETURN
3421 ENDIF
3422C *********must have enough energy to produce jets
3423
3424 MISS=0
3425 MISP=0
3426 MIST=0
3427C
3428 IF(NFP(JP,10).EQ.0 .AND. NFT(JT,10).EQ.0) THEN
3429 MINT(44)=MINT4
3430 MINT(45)=MINT5
3431 XSEC(0,1)=ATXS(0)
3432 XSEC(11,1)=ATXS(11)
3433 XSEC(12,1)=ATXS(12)
3434 XSEC(28,1)=ATXS(28)
3435 DO 120 I=1,20
3436 COEF(11,I)=ATCO(11,I)
3437 COEF(12,I)=ATCO(12,I)
3438 COEF(28,I)=ATCO(28,I)
3439120 CONTINUE
3440 ELSE
3441 ISUB11=0
3442 ISUB12=0
3443 ISUB28=0
3444 IF(XSEC(11,1).NE.0) ISUB11=1
3445 IF(XSEC(12,1).NE.0) ISUB12=1
3446 IF(XSEC(28,1).NE.0) ISUB28=1
3447 MINT(44)=MINT4-ISUB11-ISUB12-ISUB28
3448 MINT(45)=MINT5-ISUB11-ISUB12-ISUB28
3449 XSEC(0,1)=ATXS(0)-ATXS(11)-ATXS(12)-ATXS(28)
3450 XSEC(11,1)=0.0
3451 XSEC(12,1)=0.0
3452 XSEC(28,1)=0.0
3453 DO 110 I=1,20
3454 COEF(11,I)=0.0
3455 COEF(12,I)=0.0
3456 COEF(28,I)=0.0
3457110 CONTINUE
3458 ENDIF
3459C ********Scatter the valence quarks only once per NN
3460C collision,
3461C afterwards only gluon can have hard scattering.
440e3d40 3462 155 CALL PYTHIAA
0119ef9a 3463 JJ=MINT(31)
3464 IF(JJ.NE.1) GO TO 155
3465C *********one hard collision at a time
3466 IF(K(7,2).EQ.-K(8,2)) THEN
3467 QMASS2=(P(7,4)+P(8,4))**2-(P(7,1)+P(8,1))**2
3468 & -(P(7,2)+P(8,2))**2-(P(7,3)+P(8,3))**2
3469 QM=ULMASS(K(7,2))
3470 IF(QMASS2.LT.(2.0*QM+HIPR1(1))**2) GO TO 155
3471 ENDIF
3472C ********q-qbar jets must has minimum mass HIPR1(1)
3473 PXP=PP(JP,1)-P(3,1)
3474 PYP=PP(JP,2)-P(3,2)
3475 PZP=PP(JP,3)-P(3,3)
3476 PEP=PP(JP,4)-P(3,4)
3477 PXT=PT(JT,1)-P(4,1)
3478 PYT=PT(JT,2)-P(4,2)
3479 PZT=PT(JT,3)-P(4,3)
3480 PET=PT(JT,4)-P(4,4)
3481
3482 IF(PEP.LE.ECUT1) THEN
3483 MISP=MISP+1
3484 IF(MISP.LT.50) GO TO 155
3485 NFP(JP,6)=-ABS(NFP(JP,6))
3486 RETURN
3487 ENDIF
3488 IF(PET.LE.ECUT2) THEN
3489 MIST=MIST+1
3490 IF(MIST.LT.50) GO TO 155
3491 NFT(JT,6)=-ABS(NFT(JT,6))
3492 RETURN
3493 ENDIF
3494C ******** if the remain energy<ECUT the proj or targ
3495C can not produce jet anymore
3496
3497 WP=PEP+PZP+PET+PZT
3498 WM=PEP-PZP+PET-PZT
3499 IF(WP.LT.0.0 .OR. WM.LT.0.0) THEN
3500 MISS=MISS+1
3501clin-6/2009 Let user set the limit when selecting high-Pt events
3502c because more attempts may be needed:
3503c IF(MISS.LT.50) GO TO 155
3504 if(pttrig.gt.0) then
3505 if(MISS.LT.maxmiss) then
3506 write(6,*) 'Failed to generate minijet Pt>',pttrig,'GeV'
3507 GO TO 155
3508 endif
3509 else
3510 IF(MISS.LT.50) GO TO 155
3511 endif
3512
3513 RETURN
3514 ENDIF
3515C ********the total W+, W- must be positive
3516 SW=WP*WM
3517 AMPX=SQRT((ECUT1-HIPR1(8))**2+PXP**2+PYP**2+0.01)
3518 AMTX=SQRT((ECUT2-HIPR1(8))**2+PXT**2+PYT**2+0.01)
3519 SXX=(AMPX+AMTX)**2
3520 IF(SW.LT.SXX.OR.VINT(43).LT.HIPR1(1)) THEN
3521 MISS=MISS+1
3522clin-6/2009 ctest on
3523c IF(MISS.LT.50) GO TO 155
3524 IF(MISS.GT.maxmiss) GO TO 155
3525 RETURN
3526 ENDIF
3527C ********the proj and targ remnants must have at least
3528C a CM energy that can produce two strings
3529C with minimum mass HIPR1(1)(see HIJSFT HIJFRG)
3530C
3531 HINT1(41)=P(7,1)
3532 HINT1(42)=P(7,2)
3533 HINT1(43)=P(7,3)
3534 HINT1(44)=P(7,4)
3535 HINT1(45)=P(7,5)
3536 HINT1(46)=SQRT(P(7,1)**2+P(7,2)**2)
3537 HINT1(51)=P(8,1)
3538 HINT1(52)=P(8,2)
3539 HINT1(53)=P(8,3)
3540 HINT1(54)=P(8,4)
3541 HINT1(55)=P(8,5)
3542 HINT1(56)=SQRT(P(8,1)**2+P(8,2)**2)
3543 IHNT2(14)=K(7,2)
3544 IHNT2(15)=K(8,2)
3545C
3546 PINIRD=(1.0-EXP(-2.0*(VINT(47)-HIDAT(1))))
3547 & /(1.0+EXP(-2.0*(VINT(47)-HIDAT(1))))
3548 IINIRD=0
3549 IF(RANART(NSEED).LE.PINIRD) IINIRD=1
3550 IF(K(7,2).EQ.-K(8,2)) GO TO 190
3551 IF(K(7,2).EQ.21.AND.K(8,2).EQ.21.AND.IOPJET.EQ.1) GO TO 190
3552C*******************************************************************
3553C gluon jets are going to be connectd with
3554C the final leadng string of quark-aintquark
3555C*******************************************************************
3556 JFLG=2
3557 JPP=0
3558 LPQ=0
3559 LPB=0
3560 JTT=0
3561 LTQ=0
3562 LTB=0
3563 IS7=0
3564 IS8=0
3565 HINT1(47)=0.0
3566 HINT1(48)=0.0
3567 HINT1(49)=0.0
3568 HINT1(50)=0.0
3569 HINT1(67)=0.0
3570 HINT1(68)=0.0
3571 HINT1(69)=0.0
3572 HINT1(70)=0.0
3573 DO 180 I=9,N
3574 IF(K(I,3).EQ.1 .OR. K(I,3).EQ.2.OR.
3575 & ABS(K(I,2)).GT.30) GO TO 180
3576C************************************************************
3577 IF(K(I,3).EQ.7) THEN
3578 HINT1(47)=HINT1(47)+P(I,1)
3579 HINT1(48)=HINT1(48)+P(I,2)
3580 HINT1(49)=HINT1(49)+P(I,3)
3581 HINT1(50)=HINT1(50)+P(I,4)
3582 ENDIF
3583 IF(K(I,3).EQ.8) THEN
3584 HINT1(67)=HINT1(67)+P(I,1)
3585 HINT1(68)=HINT1(68)+P(I,2)
3586 HINT1(69)=HINT1(69)+P(I,3)
3587 HINT1(70)=HINT1(70)+P(I,4)
3588 ENDIF
3589C************************modifcation made on Apr 10. 1996*****
3590 IF(K(I,2).GT.21.AND.K(I,2).LE.30) THEN
3591 NDR=NDR+1
3592 IADR(NDR,1)=JP
3593 IADR(NDR,2)=JT
3594 KFDR(NDR)=K(I,2)
3595 PDR(NDR,1)=P(I,1)
3596 PDR(NDR,2)=P(I,2)
3597 PDR(NDR,3)=P(I,3)
3598 PDR(NDR,4)=P(I,4)
3599 PDR(NDR,5)=P(I,5)
3600 rtdr(NDR,1)=0.5*(YP(1,JP)+YT(1,JT))
3601 rtdr(NDR,2)=0.5*(YP(2,JP)+YT(2,JT))
3602C************************************************************
3603 GO TO 180
3604C************************correction made on Oct. 14,1994*****
3605 ENDIF
3606 IF(K(I,3).EQ.7.OR.K(I,3).EQ.3) THEN
3607 IF(K(I,3).EQ.7.AND.K(I,2).NE.21.AND.K(I,2).EQ.K(7,2)
3608 & .AND.IS7.EQ.0) THEN
3609 PP(JP,10)=P(I,1)
3610 PP(JP,11)=P(I,2)
3611 PP(JP,12)=P(I,3)
3612 PZP=PZP+P(I,3)
3613 PEP=PEP+P(I,4)
3614 NFP(JP,10)=1
3615 IS7=1
3616 GO TO 180
3617 ENDIF
3618 IF(K(I,3).EQ.3.AND.(K(I,2).NE.21.OR.
3619 & IINIRD.EQ.0)) THEN
3620 PXP=PXP+P(I,1)
3621 PYP=PYP+P(I,2)
3622 PZP=PZP+P(I,3)
3623 PEP=PEP+P(I,4)
3624 GO TO 180
3625 ENDIF
3626 JPP=JPP+1
3627 IP(JPP,1)=I
3628 IP(JPP,2)=0
3629 IF(K(I,2).NE.21) THEN
3630 IF(K(I,2).GT.0) THEN
3631 LPQ=LPQ+1
3632 IPQ(LPQ)=JPP
3633 IP(JPP,2)=LPQ
3634 ELSE IF(K(I,2).LT.0) THEN
3635 LPB=LPB+1
3636 IPB(LPB)=JPP
3637 IP(JPP,2)=-LPB
3638 ENDIF
3639 ENDIF
3640 ELSE IF(K(I,3).EQ.8.OR.K(I,3).EQ.4) THEN
3641 IF(K(I,3).EQ.8.AND.K(I,2).NE.21.AND.K(I,2).EQ.K(8,2)
3642 & .AND.IS8.EQ.0) THEN
3643 PT(JT,10)=P(I,1)
3644 PT(JT,11)=P(I,2)
3645 PT(JT,12)=P(I,3)
3646 PZT=PZT+P(I,3)
3647 PET=PET+P(I,4)
3648 NFT(JT,10)=1
3649 IS8=1
3650 GO TO 180
3651 ENDIF
3652 IF(K(I,3).EQ.4.AND.(K(I,2).NE.21.OR.
3653 & IINIRD.EQ.0)) THEN
3654 PXT=PXT+P(I,1)
3655 PYT=PYT+P(I,2)
3656 PZT=PZT+P(I,3)
3657 PET=PET+P(I,4)
3658 GO TO 180
3659 ENDIF
3660 JTT=JTT+1
3661 IT(JTT,1)=I
3662 IT(JTT,2)=0
3663 IF(K(I,2).NE.21) THEN
3664 IF(K(I,2).GT.0) THEN
3665 LTQ=LTQ+1
3666 ITQ(LTQ)=JTT
3667 IT(JTT,2)=LTQ
3668 ELSE IF(K(I,2).LT.0) THEN
3669 LTB=LTB+1
3670 ITB(LTB)=JTT
3671 IT(JTT,2)=-LTB
3672 ENDIF
3673 ENDIF
3674 ENDIF
3675 180 CONTINUE
3676c
3677c
3678 IF(LPQ.NE.LPB .OR. LTQ.NE.LTB) THEN
3679 MISS=MISS+1
3680clin-6/2009 ctest on
3681c IF(MISS.LE.50) GO TO 155
3682 IF(MISS.LE.maxmiss) GO TO 155
3683 WRITE(6,*) ' Q -QBAR NOT MATCHED IN HIJHRD'
3684 JFLG=0
3685 RETURN
3686 ENDIF
3687C****The following will rearrange the partons so that a quark is***
3688C****allways followed by an anti-quark ****************************
3689
3690 J=0
3691181 J=J+1
3692 IF(J.GT.JPP) GO TO 182
3693 IF(IP(J,2).EQ.0) THEN
3694 GO TO 181
3695 ELSE IF(IP(J,2).NE.0) THEN
3696 LP=ABS(IP(J,2))
3697 IP1=IP(J,1)
3698 IP2=IP(J,2)
3699 IP(J,1)=IP(IPQ(LP),1)
3700 IP(J,2)=IP(IPQ(LP),2)
3701 IP(IPQ(LP),1)=IP1
3702 IP(IPQ(LP),2)=IP2
3703 IF(IP2.GT.0) THEN
3704 IPQ(IP2)=IPQ(LP)
3705 ELSE IF(IP2.LT.0) THEN
3706 IPB(-IP2)=IPQ(LP)
3707 ENDIF
3708C ********replace J with a quark
3709 IP1=IP(J+1,1)
3710 IP2=IP(J+1,2)
3711 IP(J+1,1)=IP(IPB(LP),1)
3712 IP(J+1,2)=IP(IPB(LP),2)
3713 IP(IPB(LP),1)=IP1
3714 IP(IPB(LP),2)=IP2
3715 IF(IP2.GT.0) THEN
3716 IPQ(IP2)=IPB(LP)
3717 ELSE IF(IP2.LT.0) THEN
3718 IPB(-IP2)=IPB(LP)
3719 ENDIF
3720C ******** replace J+1 with anti-quark
3721 J=J+1
3722 GO TO 181
3723 ENDIF
3724
3725182 J=0
3726183 J=J+1
3727 IF(J.GT.JTT) GO TO 184
3728 IF(IT(J,2).EQ.0) THEN
3729 GO TO 183
3730 ELSE IF(IT(J,2).NE.0) THEN
3731 LT=ABS(IT(J,2))
3732 IT1=IT(J,1)
3733 IT2=IT(J,2)
3734 IT(J,1)=IT(ITQ(LT),1)
3735 IT(J,2)=IT(ITQ(LT),2)
3736 IT(ITQ(LT),1)=IT1
3737 IT(ITQ(LT),2)=IT2
3738 IF(IT2.GT.0) THEN
3739 ITQ(IT2)=ITQ(LT)
3740 ELSE IF(IT2.LT.0) THEN
3741 ITB(-IT2)=ITQ(LT)
3742 ENDIF
3743C ********replace J with a quark
3744 IT1=IT(J+1,1)
3745 IT2=IT(J+1,2)
3746 IT(J+1,1)=IT(ITB(LT),1)
3747 IT(J+1,2)=IT(ITB(LT),2)
3748 IT(ITB(LT),1)=IT1
3749 IT(ITB(LT),2)=IT2
3750 IF(IT2.GT.0) THEN
3751 ITQ(IT2)=ITB(LT)
3752 ELSE IF(IT2.LT.0) THEN
3753 ITB(-IT2)=ITB(LT)
3754 ENDIF
3755C ******** replace J+1 with anti-quark
3756 J=J+1
3757 GO TO 183
3758
3759 ENDIF
3760
3761184 CONTINUE
3762 IF(NPJ(JP)+JPP.GT.MXJT.OR.NTJ(JT)+JTT.GT.MXJT) THEN
3763 JFLG=0
3764 WRITE(6,*) 'number of partons per string exceeds'
3765 WRITE(6,*) 'the common block size'
3766 RETURN
3767 ENDIF
3768C ********check the bounds of common blocks
3769 DO 186 J=1,JPP
3770 KFPJ(JP,NPJ(JP)+J)=K(IP(J,1),2)
3771 PJPX(JP,NPJ(JP)+J)=P(IP(J,1),1)
3772 PJPY(JP,NPJ(JP)+J)=P(IP(J,1),2)
3773 PJPZ(JP,NPJ(JP)+J)=P(IP(J,1),3)
3774 PJPE(JP,NPJ(JP)+J)=P(IP(J,1),4)
3775 PJPM(JP,NPJ(JP)+J)=P(IP(J,1),5)
3776186 CONTINUE
3777 NPJ(JP)=NPJ(JP)+JPP
3778 DO 188 J=1,JTT
3779 KFTJ(JT,NTJ(JT)+J)=K(IT(J,1),2)
3780 PJTX(JT,NTJ(JT)+J)=P(IT(J,1),1)
3781 PJTY(JT,NTJ(JT)+J)=P(IT(J,1),2)
3782 PJTZ(JT,NTJ(JT)+J)=P(IT(J,1),3)
3783 PJTE(JT,NTJ(JT)+J)=P(IT(J,1),4)
3784 PJTM(JT,NTJ(JT)+J)=P(IT(J,1),5)
3785188 CONTINUE
3786 NTJ(JT)=NTJ(JT)+JTT
3787 GO TO 900
3788C*****************************************************************
3789CThis is the case of a quark-antiquark jet it will fragment alone
3790C****************************************************************
3791190 JFLG=3
3792 IF(K(7,2).NE.21.AND.K(8,2).NE.21.AND.
3793 & K(7,2)*K(8,2).GT.0) GO TO 155
3794 JPP=0
3795 LPQ=0
3796 LPB=0
3797 DO 200 I=9,N
3798 IF(K(I,3).EQ.1.OR.K(I,3).EQ.2.OR.
3799 & ABS(K(I,2)).GT.30) GO TO 200
3800 IF(K(I,2).GT.21.AND.K(I,2).LE.30) THEN
3801 NDR=NDR+1
3802 IADR(NDR,1)=JP
3803 IADR(NDR,2)=JT
3804 KFDR(NDR)=K(I,2)
3805 PDR(NDR,1)=P(I,1)
3806 PDR(NDR,2)=P(I,2)
3807 PDR(NDR,3)=P(I,3)
3808 PDR(NDR,4)=P(I,4)
3809 PDR(NDR,5)=P(I,5)
3810 rtdr(NDR,1)=0.5*(YP(1,JP)+YT(1,JT))
3811 rtdr(NDR,2)=0.5*(YP(2,JP)+YT(2,JT))
3812C************************************************************
3813 GO TO 200
3814C************************correction made on Oct. 14,1994*****
3815 ENDIF
3816 IF(K(I,3).EQ.3.AND.(K(I,2).NE.21.OR.
3817 & IINIRD.EQ.0)) THEN
3818 PXP=PXP+P(I,1)
3819 PYP=PYP+P(I,2)
3820 PZP=PZP+P(I,3)
3821 PEP=PEP+P(I,4)
3822 GO TO 200
3823 ENDIF
3824 IF(K(I,3).EQ.4.AND.(K(I,2).NE.21.OR.
3825 & IINIRD.EQ.0)) THEN
3826 PXT=PXT+P(I,1)
3827 PYT=PYT+P(I,2)
3828 PZT=PZT+P(I,3)
3829 PET=PET+P(I,4)
3830 GO TO 200
3831 ENDIF
3832 JPP=JPP+1
3833 IP(JPP,1)=I
3834 IP(JPP,2)=0
3835 IF(K(I,2).NE.21) THEN
3836 IF(K(I,2).GT.0) THEN
3837 LPQ=LPQ+1
3838 IPQ(LPQ)=JPP
3839 IP(JPP,2)=LPQ
3840 ELSE IF(K(I,2).LT.0) THEN
3841 LPB=LPB+1
3842 IPB(LPB)=JPP
3843 IP(JPP,2)=-LPB
3844 ENDIF
3845 ENDIF
3846200 CONTINUE
3847 IF(LPQ.NE.LPB) THEN
3848 MISS=MISS+1
3849clin-6/2009 ctest on
3850c IF(MISS.LE.50) GO TO 155
3851 IF(MISS.LE.maxmiss) GO TO 155
3852 WRITE(6,*) LPQ,LPB, 'Q-QBAR NOT CONSERVED OR NOT MATCHED'
3853 JFLG=0
3854 RETURN
3855 ENDIF
3856
3857C**** The following will rearrange the partons so that a quark is***
3858C**** allways followed by an anti-quark ****************************
3859 J=0
3860220 J=J+1
3861 IF(J.GT.JPP) GO TO 222
3862 IF(IP(J,2).EQ.0) GO TO 220
3863 LP=ABS(IP(J,2))
3864 IP1=IP(J,1)
3865 IP2=IP(J,2)
3866 IP(J,1)=IP(IPQ(LP),1)
3867 IP(J,2)=IP(IPQ(LP),2)
3868 IP(IPQ(LP),1)=IP1
3869 IP(IPQ(LP),2)=IP2
3870 IF(IP2.GT.0) THEN
3871 IPQ(IP2)=IPQ(LP)
3872 ELSE IF(IP2.LT.0) THEN
3873 IPB(-IP2)=IPQ(LP)
3874 ENDIF
3875 IPQ(LP)=J
3876C ********replace J with a quark
3877 IP1=IP(J+1,1)
3878 IP2=IP(J+1,2)
3879 IP(J+1,1)=IP(IPB(LP),1)
3880 IP(J+1,2)=IP(IPB(LP),2)
3881 IP(IPB(LP),1)=IP1
3882 IP(IPB(LP),2)=IP2
3883 IF(IP2.GT.0) THEN
3884 IPQ(IP2)=IPB(LP)
3885 ELSE IF(IP2.LT.0) THEN
3886 IPB(-IP2)=IPB(LP)
3887 ENDIF
3888C ******** replace J+1 with an anti-quark
3889 IPB(LP)=J+1
3890 J=J+1
3891 GO TO 220
3892
3893222 CONTINUE
3894 IF(LPQ.GE.1) THEN
3895 DO 240 L0=2,LPQ
3896 IP1=IP(2*L0-3,1)
3897 IP2=IP(2*L0-3,2)
3898 IP(2*L0-3,1)=IP(IPQ(L0),1)
3899 IP(2*L0-3,2)=IP(IPQ(L0),2)
3900 IP(IPQ(L0),1)=IP1
3901 IP(IPQ(L0),2)=IP2
3902 IF(IP2.GT.0) THEN
3903 IPQ(IP2)=IPQ(L0)
3904 ELSE IF(IP2.LT.0) THEN
3905 IPB(-IP2)=IPQ(L0)
3906 ENDIF
3907 IPQ(L0)=2*L0-3
3908C
3909 IP1=IP(2*L0-2,1)
3910 IP2=IP(2*L0-2,2)
3911 IP(2*L0-2,1)=IP(IPB(L0),1)
3912 IP(2*L0-2,2)=IP(IPB(L0),2)
3913 IP(IPB(L0),1)=IP1
3914 IP(IPB(L0),2)=IP2
3915 IF(IP2.GT.0) THEN
3916 IPQ(IP2)=IPB(L0)
3917 ELSE IF(IP2.LT.0) THEN
3918 IPB(-IP2)=IPB(L0)
3919 ENDIF
3920 IPB(L0)=2*L0-2
3921240 CONTINUE
3922C ********move all the qqbar pair to the front of
3923C the list, except the first pair
3924 IP1=IP(2*LPQ-1,1)
3925 IP2=IP(2*LPQ-1,2)
3926 IP(2*LPQ-1,1)=IP(IPQ(1),1)
3927 IP(2*LPQ-1,2)=IP(IPQ(1),2)
3928 IP(IPQ(1),1)=IP1
3929 IP(IPQ(1),2)=IP2
3930 IF(IP2.GT.0) THEN
3931 IPQ(IP2)=IPQ(1)
3932 ELSE IF(IP2.LT.0) THEN
3933 IPB(-IP2)=IPQ(1)
3934 ENDIF
3935 IPQ(1)=2*LPQ-1
3936C ********move the first quark to the beginning of
3937C the last string system
3938 IP1=IP(JPP,1)
3939 IP2=IP(JPP,2)
3940 IP(JPP,1)=IP(IPB(1),1)
3941 IP(JPP,2)=IP(IPB(1),2)
3942 IP(IPB(1),1)=IP1
3943 IP(IPB(1),2)=IP2
3944 IF(IP2.GT.0) THEN
3945 IPQ(IP2)=IPB(1)
3946 ELSE IF(IP2.LT.0) THEN
3947 IPB(-IP2)=IPB(1)
3948 ENDIF
3949 IPB(1)=JPP
3950C ********move the first anti-quark to the end of the
3951C last string system
3952 ENDIF
3953 IF(NSG.GE.MXSG) THEN
3954 JFLG=0
3955 WRITE(6,*) 'number of jets forming single strings exceeds'
3956 WRITE(6,*) 'the common block size'
3957 RETURN
3958 ENDIF
3959 IF(JPP.GT.MXSJ) THEN
3960 JFLG=0
3961 WRITE(6,*) 'number of partons per single jet system'
3962 WRITE(6,*) 'exceeds the common block size'
3963 RETURN
3964 ENDIF
3965C ********check the bounds of common block size
3966 NSG=NSG+1
3967 NJSG(NSG)=JPP
3968 IASG(NSG,1)=JP
3969 IASG(NSG,2)=JT
3970 IASG(NSG,3)=0
3971 DO 300 I=1,JPP
3972 K1SG(NSG,I)=2
3973 K2SG(NSG,I)=K(IP(I,1),2)
3974 IF(K2SG(NSG,I).LT.0) K1SG(NSG,I)=1
3975 PXSG(NSG,I)=P(IP(I,1),1)
3976 PYSG(NSG,I)=P(IP(I,1),2)
3977 PZSG(NSG,I)=P(IP(I,1),3)
3978 PESG(NSG,I)=P(IP(I,1),4)
3979 PMSG(NSG,I)=P(IP(I,1),5)
3980300 CONTINUE
3981 K1SG(NSG,1)=2
3982 K1SG(NSG,JPP)=1
3983C******* reset the energy-momentum of incoming particles ********
3984900 PP(JP,1)=PXP
3985 PP(JP,2)=PYP
3986 PP(JP,3)=PZP
3987 PP(JP,4)=PEP
3988 PP(JP,5)=0.0
3989 PT(JT,1)=PXT
3990 PT(JT,2)=PYT
3991 PT(JT,3)=PZT
3992 PT(JT,4)=PET
3993 PT(JT,5)=0.0
3994
3995 NFP(JP,6)=NFP(JP,6)+1
3996 NFT(JT,6)=NFT(JT,6)+1
3997 RETURN
3998C
39991000 JFLG=-1
4000 IF(IHPR2(10).EQ.0) RETURN
4001 WRITE(6,*) 'Fatal HIJHRD error'
4002 WRITE(6,*) JP, ' proj E+,E-',EPP,EPM,' status',NFP(JP,5)
4003 WRITE(6,*) JT, ' targ E+,E_',ETP,ETM,' status',NFT(JT,5)
4004 RETURN
4005 END
4006C
4007C
4008C
4009C
4010C
4011 SUBROUTINE JETINI(JP,JT,itrig)
4012C*******Initialize PYTHIA for jet production**********************
4013C itrig=0: for normal processes
4014C itrig=1: for triggered processes
4015C JP: sequence number of the projectile
4016C JT: sequence number of the target
4017C For A+A collisions, one has to initilize pythia
4018C separately for each type of collisions, pp, pn,np and nn,
4019C or hp and hn for hA collisions. In this subroutine we use the following
4020C catalogue for different type of collisions:
4021C h+h: h+h (itype=1)
4022C h+A: h+p (itype=1), h+n (itype=2)
4023C A+h: p+h (itype=1), n+h (itype=2)
4024C A+A: p+p (itype=1), p+n (itype=2), n+p (itype=3), n+n (itype=4)
4025C*****************************************************************
4026 CHARACTER BEAM*16,TARG*16
4027 DIMENSION XSEC0(8,0:200),COEF0(8,200,20),INI(8),
4028 & MINT44(8),MINT45(8)
4029 COMMON/hjcrdn/YP(3,300),YT(3,300)
4030cc SAVE /hjcrdn/
4031 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
4032cc SAVE /HPARNT/
4033 COMMON/HSTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
4034cc SAVE /HSTRNG/
4035 COMMON/HPINT/MINT4,MINT5,ATCO(200,20),ATXS(0:200)
4036cc SAVE /HPINT/
4037C
4038 COMMON/LUDAT1A/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
4039cc SAVE /LUDAT1A/
4040 COMMON/LUDAT3A/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
4041cc SAVE /LUDAT3A/
4042 COMMON/PYSUBSA/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
4043cc SAVE /PYSUBSA/
4044 COMMON/PYPARSA/MSTP(200),PARP(200),MSTI(200),PARI(200)
4045cc SAVE /PYPARSA/
4046 COMMON/PYINT1A/MINT(400),VINT(400)
4047cc SAVE /PYINT1A/
4048 COMMON/PYINT2A/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
4049cc SAVE /PYINT2A/
4050 COMMON/PYINT5A/NGEN(0:200,3),XSEC(0:200,3)
4051cc SAVE /PYINT5A/
4052 SAVE
4053clin DATA INI/8*0/ilast/-1/
4054 DATA INI/8*0/,ilast/-1/
4055C
4056 IHNT2(11)=JP
4057 IHNT2(12)=JT
4058 IF(IHNT2(5).NE.0 .AND. IHNT2(6).NE.0) THEN
4059 itype=1
4060 ELSE IF(IHNT2(5).NE.0 .AND. IHNT2(6).EQ.0) THEN
4061 itype=1
4062 IF(NFT(JT,4).EQ.2112) itype=2
4063 ELSE IF(IHNT2(5).EQ.0 .AND. IHNT2(6).NE.0) THEN
4064 itype=1
4065 IF(NFP(JP,4).EQ.2112) itype=2
4066 ELSE
4067 IF(NFP(JP,4).EQ.2212 .AND. NFT(JT,4).EQ.2212) THEN
4068 itype=1
4069 ELSE IF(NFP(JP,4).EQ.2212 .AND. NFT(JT,4).EQ.2112) THEN
4070 itype=2
4071 ELSE IF(NFP(JP,4).EQ.2112 .AND. NFT(JT,4).EQ.2212) THEN
4072 itype=3
4073 ELSE
4074 itype=4
4075 ENDIF
4076 ENDIF
4077c
4078 IF(itrig.NE.0) GO TO 160
4079 IF(itrig.EQ.ilast) GO TO 150
4080 MSTP(2)=2
4081c ********second order running alpha_strong
4082 MSTP(33)=1
4083 PARP(31)=HIPR1(17)
4084C ********inclusion of K factor
4085 MSTP(51)=3
4086C ********Duke-Owens set 1 structure functions
4087 MSTP(61)=1
4088C ********INITIAL STATE RADIATION
4089 MSTP(71)=1
4090C ********FINAL STATE RADIATION
4091 IF(IHPR2(2).EQ.0.OR.IHPR2(2).EQ.2) MSTP(61)=0
4092 IF(IHPR2(2).EQ.0.OR.IHPR2(2).EQ.1) MSTP(71)=0
4093c
4094 MSTP(81)=0
4095C ******** NO MULTIPLE INTERACTION
4096 MSTP(82)=1
4097C *******STRUCTURE OF MUTLIPLE INTERACTION
4098 MSTP(111)=0
4099C ********frag off(have to be done by local call)
4100 IF(IHPR2(10).EQ.0) MSTP(122)=0
4101C ********No printout of initialization information
4102 PARP(81)=HIPR1(8)
4103 CKIN(5)=HIPR1(8)
4104 CKIN(3)=HIPR1(8)
4105 CKIN(4)=HIPR1(9)
4106 IF(HIPR1(9).LE.HIPR1(8)) CKIN(4)=-1.0
4107 CKIN(9)=-10.0
4108 CKIN(10)=10.0
4109 MSEL=0
4110 DO 100 ISUB=1,200
4111 MSUB(ISUB)=0
4112 100 CONTINUE
4113 MSUB(11)=1
4114 MSUB(12)=1
4115 MSUB(13)=1
4116 MSUB(28)=1
4117 MSUB(53)=1
4118 MSUB(68)=1
4119 MSUB(81)=1
4120 MSUB(82)=1
4121 DO 110 J=1,MIN(8,MDCY(21,3))
4122 110 MDME(MDCY(21,2)+J-1,1)=0
4123 ISEL=4
4124 IF(HINT1(1).GE.20.0 .and. IHPR2(18).EQ.1) ISEL=5
4125 MDME(MDCY(21,2)+ISEL-1,1)=1
4126C ********QCD subprocesses
4127 MSUB(14)=1
4128 MSUB(18)=1
4129 MSUB(29)=1
4130C ******* direct photon production
4131 150 IF(INI(itype).NE.0) GO TO 800
4132 GO TO 400
4133C
4134C *****triggered subprocesses, jet, photon, heavy quark and DY
4135C
4136 160 itype=4+itype
4137 IF(itrig.EQ.ilast) GO TO 260
4138 PARP(81)=ABS(HIPR1(10))-0.25
4139 CKIN(5)=ABS(HIPR1(10))-0.25
4140 CKIN(3)=ABS(HIPR1(10))-0.25
4141 CKIN(4)=ABS(HIPR1(10))+0.25
4142 IF(HIPR1(10).LT.HIPR1(8)) CKIN(4)=-1.0
4143c
4144 MSEL=0
4145 DO 101 ISUB=1,200
4146 MSUB(ISUB)=0
4147 101 CONTINUE
4148 IF(IHPR2(3).EQ.1) THEN
4149 MSUB(11)=1
4150 MSUB(12)=1
4151 MSUB(13)=1
4152 MSUB(28)=1
4153 MSUB(53)=1
4154 MSUB(68)=1
4155 MSUB(81)=1
4156 MSUB(82)=1
4157 MSUB(14)=1
4158 MSUB(18)=1
4159 MSUB(29)=1
4160 DO 102 J=1,MIN(8,MDCY(21,3))
4161 102 MDME(MDCY(21,2)+J-1,1)=0
4162 ISEL=4
4163 IF(HINT1(1).GE.20.0 .and. IHPR2(18).EQ.1) ISEL=5
4164 MDME(MDCY(21,2)+ISEL-1,1)=1
4165C ********QCD subprocesses
4166 ELSE IF(IHPR2(3).EQ.2) THEN
4167 MSUB(14)=1
4168 MSUB(18)=1
4169 MSUB(29)=1
4170C ********Direct photon production
4171c q+qbar->g+gamma,q+qbar->gamma+gamma, q+g->q+gamma
4172 ELSE IF(IHPR2(3).EQ.3) THEN
4173 CKIN(3)=MAX(0.0,HIPR1(10))
4174 CKIN(5)=HIPR1(8)
4175 PARP(81)=HIPR1(8)
4176 MSUB(81)=1
4177 MSUB(82)=1
4178 DO 105 J=1,MIN(8,MDCY(21,3))
4179 105 MDME(MDCY(21,2)+J-1,1)=0
4180 ISEL=4
4181 IF(HINT1(1).GE.20.0 .and. IHPR2(18).EQ.1) ISEL=5
4182 MDME(MDCY(21,2)+ISEL-1,1)=1
4183C **********Heavy quark production
4184 ENDIF
4185260 IF(INI(itype).NE.0) GO TO 800
4186C
4187C
4188400 INI(itype)=1
4189 IF(IHPR2(10).EQ.0) MSTP(122)=0
4190 IF(NFP(JP,4).EQ.2212) THEN
4191 BEAM='P'
4192 ELSE IF(NFP(JP,4).EQ.-2212) THEN
4193 BEAM='P~'
4194 ELSE IF(NFP(JP,4).EQ.2112) THEN
4195 BEAM='N'
4196 ELSE IF(NFP(JP,4).EQ.-2112) THEN
4197 BEAM='N~'
4198 ELSE IF(NFP(JP,4).EQ.211) THEN
4199 BEAM='PI+'
4200 ELSE IF(NFP(JP,4).EQ.-211) THEN
4201 BEAM='PI-'
4202 ELSE IF(NFP(JP,4).EQ.321) THEN
4203 BEAM='PI+'
4204 ELSE IF(NFP(JP,4).EQ.-321) THEN
4205 BEAM='PI-'
4206 ELSE
4207 WRITE(6,*) 'unavailable beam type', NFP(JP,4)
4208 ENDIF
4209 IF(NFT(JT,4).EQ.2212) THEN
4210 TARG='P'
4211 ELSE IF(NFT(JT,4).EQ.-2212) THEN
4212 TARG='P~'
4213 ELSE IF(NFT(JT,4).EQ.2112) THEN
4214 TARG='N'
4215 ELSE IF(NFT(JT,4).EQ.-2112) THEN
4216 TARG='N~'
4217 ELSE IF(NFT(JT,4).EQ.211) THEN
4218 TARG='PI+'
4219 ELSE IF(NFT(JT,4).EQ.-211) THEN
4220 TARG='PI-'
4221 ELSE IF(NFT(JT,4).EQ.321) THEN
4222 TARG='PI+'
4223 ELSE IF(NFT(JT,4).EQ.-321) THEN
4224 TARG='PI-'
4225 ELSE
4226 WRITE(6,*) 'unavailable target type', NFT(JT,4)
4227 ENDIF
4228C
4229 IHNT2(16)=1
4230C ******************indicate for initialization use when
4231C structure functions are called in PYTHIA
4232C
ce320da8 4233 CALL PYINITA('CMS',BEAM,TARG,HINT1(1))
0119ef9a 4234 MINT4=MINT(44)
4235 MINT5=MINT(45)
4236 MINT44(itype)=MINT(44)
4237 MINT45(itype)=MINT(45)
4238 ATXS(0)=XSEC(0,1)
4239 XSEC0(itype,0)=XSEC(0,1)
4240 DO 500 I=1,200
4241 ATXS(I)=XSEC(I,1)
4242 XSEC0(itype,I)=XSEC(I,1)
4243 DO 500 J=1,20
4244 ATCO(I,J)=COEF(I,J)
4245 COEF0(itype,I,J)=COEF(I,J)
4246500 CONTINUE
4247C
4248 IHNT2(16)=0
4249C
4250 RETURN
4251C ********Store the initialization information for
4252C late use
4253C
4254C
4255800 MINT(44)=MINT44(itype)
4256 MINT(45)=MINT45(itype)
4257 MINT4=MINT(44)
4258 MINT5=MINT(45)
4259 XSEC(0,1)=XSEC0(itype,0)
4260 ATXS(0)=XSEC(0,1)
4261 DO 900 I=1,200
4262 XSEC(I,1)=XSEC0(itype,I)
4263 ATXS(I)=XSEC(I,1)
4264 DO 900 J=1,20
4265 COEF(I,J)=COEF0(itype,I,J)
4266 ATCO(I,J)=COEF(I,J)
4267900 CONTINUE
4268 ilast=itrig
4269 MINT(11)=NFP(JP,4)
4270 MINT(12)=NFT(JT,4)
4271 RETURN
4272 END
4273C
4274C
4275C
4276 SUBROUTINE HIJINI
4277 PARAMETER (MAXSTR=150001)
4278 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
4279cc SAVE /HPARNT/
4280 COMMON/HSTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
4281cc SAVE /HSTRNG/
4282 COMMON/HJJET1/NPJ(300),KFPJ(300,500),PJPX(300,500),
4283 & PJPY(300,500),PJPZ(300,500),PJPE(300,500),
4284 & PJPM(300,500),NTJ(300),KFTJ(300,500),
4285 & PJTX(300,500),PJTY(300,500),PJTZ(300,500),
4286 & PJTE(300,500),PJTM(300,500)
4287cc SAVE /HJJET1/
4288 COMMON/HJJET2/NSG,NJSG(MAXSTR),IASG(MAXSTR,3),K1SG(MAXSTR,100),
4289 & K2SG(MAXSTR,100),PXSG(MAXSTR,100),PYSG(MAXSTR,100),
4290 & PZSG(MAXSTR,100),PESG(MAXSTR,100),PMSG(MAXSTR,100)
4291cc SAVE /HJJET2/
4292c COMMON/HJJET4/NDR,IADR(900,2),KFDR(900),PDR(900,5)
4293 COMMON/HJJET4/NDR,IADR(MAXSTR,2),KFDR(MAXSTR),PDR(MAXSTR,5)
4294cc SAVE /HJJET4/
4295 COMMON/RNDF77/NSEED
4296cc SAVE /RNDF77/
4297 SAVE
4298C****************Reset the momentum of initial particles************
4299C and assign flavors to the proj and targ string *
4300C*******************************************************************
4301 NSG=0
4302 NDR=0
4303 IPP=2212
4304 IPT=2212
4305 IF(IHNT2(5).NE.0) IPP=IHNT2(5)
4306 IF(IHNT2(6).NE.0) IPT=IHNT2(6)
4307C ********in case the proj or targ is a hadron.
4308C
4309 DO 100 I=1,IHNT2(1)
4310 PP(I,1)=0.0
4311 PP(I,2)=0.0
4312 PP(I,3)=SQRT(HINT1(1)**2/4.0-HINT1(8)**2)
4313 PP(I,4)=HINT1(1)/2
4314 PP(I,5)=HINT1(8)
4315 PP(I,6)=0.0
4316 PP(I,7)=0.0
4317 PP(I,8)=0.0
4318 PP(I,9)=0.0
4319 PP(I,10)=0.0
4320cbzdbg2/22/99
4321ctest OFF
4322 PP(I, 11) = 0.0
4323 PP(I, 12) = 0.0
4324cbzdbg2/22/99end
4325 NFP(I,3)=IPP
4326 NFP(I,4)=IPP
4327 NFP(I,5)=0
4328 NFP(I,6)=0
4329 NFP(I,7)=0
4330 NFP(I,8)=0
4331 NFP(I,9)=0
4332 NFP(I,10)=0
4333 NFP(I,11)=0
4334 NPJ(I)=0
4335 IF(I.GT.ABS(IHNT2(2))) NFP(I,3)=2112
4336 CALL ATTFLV(NFP(I,3),IDQ,IDQQ)
4337 NFP(I,1)=IDQ
4338 NFP(I,2)=IDQQ
4339 NFP(I,15)=-1
4340 IF(ABS(IDQ).GT.1000.OR.(ABS(IDQ*IDQQ).LT.100.AND.
4341 & RANART(NSEED).LT.0.5)) NFP(I,15)=1
4342 PP(I,14)=ULMASS(IDQ)
4343 PP(I,15)=ULMASS(IDQQ)
4344100 CONTINUE
4345C
4346 DO 200 I=1,IHNT2(3)
4347 PT(I,1)=0.0
4348 PT(I,2)=0.0
4349 PT(I,3)=-SQRT(HINT1(1)**2/4.0-HINT1(9)**2)
4350 PT(I,4)=HINT1(1)/2.0
4351 PT(I,5)=HINT1(9)
4352 PT(I,6)=0.0
4353 PT(I,7)=0.0
4354 PT(I,8)=0.0
4355 PT(I,9)=0.0
4356 PT(I,10)=0.0
4357ctest OFF
4358cbzdbg2/22/99
4359 PT(I, 11) = 0.0
4360 PT(I, 12) = 0.0
4361cbzdbg2/22/99end
4362 NFT(I,3)=IPT
4363 NFT(I,4)=IPT
4364 NFT(I,5)=0
4365 NFT(I,6)=0
4366 NFT(I,7)=0
4367 NFT(I,8)=0
4368 NFT(I,9)=0
4369 NFT(I,10)=0
4370 NFT(I,11)=0
4371 NTJ(I)=0
4372 IF(I.GT.ABS(IHNT2(4))) NFT(I,3)=2112
4373 CALL ATTFLV(NFT(I,3),IDQ,IDQQ)
4374 NFT(I,1)=IDQ
4375 NFT(I,2)=IDQQ
4376 NFT(I,15)=1
4377 IF(ABS(IDQ).GT.1000.OR.(ABS(IDQ*IDQQ).LT.100.AND.
4378 & RANART(NSEED).LT.0.5)) NFT(I,15)=-1
4379 PT(I,14)=ULMASS(IDQ)
4380 PT(I,15)=ULMASS(IDQQ)
4381200 CONTINUE
4382 RETURN
4383 END
4384C
4385C
4386C
4387 SUBROUTINE ATTFLV(ID,IDQ,IDQQ)
4388 COMMON/RNDF77/NSEED
4389cc SAVE /RNDF77/
4390 SAVE
4391C
4392 IF(ABS(ID).LT.100) THEN
4393 NSIGN=1
4394 IDQ=ID/100
4395 IDQQ=-ID/10+IDQ*10
4396 IF(ABS(IDQ).EQ.3) NSIGN=-1
4397 IDQ=NSIGN*IDQ
4398 IDQQ=NSIGN*IDQQ
4399 IF(IDQ.LT.0) THEN
4400 ID0=IDQ
4401 IDQ=IDQQ
4402 IDQQ=ID0
4403 ENDIF
4404 RETURN
4405 ENDIF
4406C ********return ID of quark(IDQ) and anti-quark(IDQQ)
4407C for pions and kaons
4408c
4409C Return LU ID for quarks and diquarks for proton(ID=2212)
4410C anti-proton(ID=-2212) and nuetron(ID=2112)
4411C LU ID for d=1,u=2, (ud)0=2101, (ud)1=2103,
4412C (dd)1=1103,(uu)1=2203.
4413C Use SU(6) weight proton=1/3d(uu)1 + 1/6u(ud)1 + 1/2u(ud)0
4414C nurtron=1/3u(dd)1 + 1/6d(ud)1 + 1/2d(ud)0
4415C
4416 IDQ=2
4417 IF(ABS(ID).EQ.2112) IDQ=1
4418 IDQQ=2101
4419 X=RANART(NSEED)
4420 IF(X.LE.0.5) GO TO 30
4421 IF(X.GT.0.666667) GO TO 10
4422 IDQQ=2103
4423 GO TO 30
442410 IDQ=1
4425 IDQQ=2203
4426 IF(ABS(ID).EQ.2112) THEN
4427 IDQ=2
4428 IDQQ=1103
4429 ENDIF
443030 IF(ID.LT.0) THEN
4431 ID00=IDQQ
4432 IDQQ=-IDQ
4433 IDQ=-ID00
4434 ENDIF
4435 RETURN
4436 END
4437C
4438C*******************************************************************
4439C This subroutine performs elastic scatterings and possible
4440C elastic cascading within their own nuclei
4441c*******************************************************************
4442 SUBROUTINE HIJCSC(JP,JT)
4443 DIMENSION PSC1(5),PSC2(5)
4444 COMMON/hjcrdn/YP(3,300),YT(3,300)
4445cc SAVE /hjcrdn/
4446 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
4447cc SAVE /HPARNT/
4448 COMMON/RNDF77/NSEED
4449cc SAVE /RNDF77/
4450 COMMON/HSTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
4451cc SAVE /HSTRNG/
4452 SAVE
4453 IF(JP.EQ.0 .OR. JT.EQ.0) GO TO 25
4454 DO 10 I=1,5
4455 PSC1(I)=PP(JP,I)
4456 PSC2(I)=PT(JT,I)
445710 CONTINUE
4458 CALL HIJELS(PSC1,PSC2)
4459 DPP1=PSC1(1)-PP(JP,1)
4460 DPP2=PSC1(2)-PP(JP,2)
4461 DPT1=PSC2(1)-PT(JT,1)
4462 DPT2=PSC2(2)-PT(JT,2)
4463 PP(JP,6)=PP(JP,6)+DPP1/2.0
4464 PP(JP,7)=PP(JP,7)+DPP2/2.0
4465 PP(JP,8)=PP(JP,8)+DPP1/2.0
4466 PP(JP,9)=PP(JP,9)+DPP2/2.0
4467 PT(JT,6)=PT(JT,6)+DPT1/2.0
4468 PT(JT,7)=PT(JT,7)+DPT2/2.0
4469 PT(JT,8)=PT(JT,8)+DPT1/2.0
4470 PT(JT,9)=PT(JT,9)+DPT2/2.0
4471 DO 20 I=1,4
4472 PP(JP,I)=PSC1(I)
4473 PT(JT,I)=PSC2(I)
447420 CONTINUE
4475 NFP(JP,5)=MAX(1,NFP(JP,5))
4476 NFT(JT,5)=MAX(1,NFT(JT,5))
4477C ********Perform elastic scattering between JP and JT
4478 RETURN
4479C ********The following is for possible elastic cascade
4480c
448125 IF(JP.EQ.0) GO TO 45
4482 PABS=SQRT(PP(JP,1)**2+PP(JP,2)**2+PP(JP,3)**2)
4483 BX=PP(JP,1)/PABS
4484 BY=PP(JP,2)/PABS
4485 BZ=PP(JP,3)/PABS
4486 DO 40 I=1,IHNT2(1)
4487 IF(I.EQ.JP) GO TO 40
4488 DX=YP(1,I)-YP(1,JP)
4489 DY=YP(2,I)-YP(2,JP)
4490 DZ=YP(3,I)-YP(3,JP)
4491 DIS=DX*BX+DY*BY+DZ*BZ
4492 IF(DIS.LE.0) GO TO 40
4493 BB=DX**2+DY**2+DZ**2-DIS**2
4494 R2=BB*HIPR1(40)/HIPR1(31)/0.1
4495C ********mb=0.1*fm, YP is in fm,HIPR1(31) is in mb
4496 GS=1.0-EXP(-(HIPR1(30)+HINT1(11))/HIPR1(31)/2.0
4497 & *ROMG(R2))**2
4498 GS0=1.0-EXP(-(HIPR1(30)+HINT1(11))/HIPR1(31)/2.0
4499 & *ROMG(0.0))**2
4500 IF(RANART(NSEED).GT.GS/GS0) GO TO 40
4501 DO 30 K=1,5
4502 PSC1(K)=PP(JP,K)
4503 PSC2(K)=PP(I,K)
450430 CONTINUE
4505 CALL HIJELS(PSC1,PSC2)
4506 DPP1=PSC1(1)-PP(JP,1)
4507 DPP2=PSC1(2)-PP(JP,2)
4508 DPT1=PSC2(1)-PP(I,1)
4509 DPT2=PSC2(2)-PP(I,2)
4510 PP(JP,6)=PP(JP,6)+DPP1/2.0
4511 PP(JP,7)=PP(JP,7)+DPP2/2.0
4512 PP(JP,8)=PP(JP,8)+DPP1/2.0
4513 PP(JP,9)=PP(JP,9)+DPP2/2.0
4514 PP(I,6)=PP(I,6)+DPT1/2.0
4515 PP(I,7)=PP(I,7)+DPT2/2.0
4516 PP(I,8)=PP(I,8)+DPT1/2.0
4517 PP(I,9)=PP(I,9)+DPT2/2.0
4518 DO 35 K=1,5
4519 PP(JP,K)=PSC1(K)
4520 PP(I,K)=PSC2(K)
452135 CONTINUE
4522 NFP(I,5)=MAX(1,NFP(I,5))
4523 GO TO 45
452440 CONTINUE
452545 IF(JT.EQ.0) GO TO 80
4526clin 50 PABS=SQRT(PT(JT,1)**2+PT(JT,2)**2+PT(JT,3)**2)
4527 PABS=SQRT(PT(JT,1)**2+PT(JT,2)**2+PT(JT,3)**2)
4528 BX=PT(JT,1)/PABS
4529 BY=PT(JT,2)/PABS
4530 BZ=PT(JT,3)/PABS
4531 DO 70 I=1,IHNT2(3)
4532 IF(I.EQ.JT) GO TO 70
4533 DX=YT(1,I)-YT(1,JT)
4534 DY=YT(2,I)-YT(2,JT)
4535 DZ=YT(3,I)-YT(3,JT)
4536 DIS=DX*BX+DY*BY+DZ*BZ
4537 IF(DIS.LE.0) GO TO 70
4538 BB=DX**2+DY**2+DZ**2-DIS**2
4539 R2=BB*HIPR1(40)/HIPR1(31)/0.1
4540C ********mb=0.1*fm, YP is in fm,HIPR1(31) is in mb
4541 GS=(1.0-EXP(-(HIPR1(30)+HINT1(11))/HIPR1(31)/2.0
4542 & *ROMG(R2)))**2
4543 GS0=(1.0-EXP(-(HIPR1(30)+HINT1(11))/HIPR1(31)/2.0
4544 & *ROMG(0.0)))**2
4545 IF(RANART(NSEED).GT.GS/GS0) GO TO 70
4546 DO 60 K=1,5
4547 PSC1(K)=PT(JT,K)
4548 PSC2(K)=PT(I,K)
454960 CONTINUE
4550 CALL HIJELS(PSC1,PSC2)
4551 DPP1=PSC1(1)-PT(JT,1)
4552 DPP2=PSC1(2)-PT(JT,2)
4553 DPT1=PSC2(1)-PT(I,1)
4554 DPT2=PSC2(2)-PT(I,2)
4555 PT(JT,6)=PT(JT,6)+DPP1/2.0
4556 PT(JT,7)=PT(JT,7)+DPP2/2.0
4557 PT(JT,8)=PT(JT,8)+DPP1/2.0
4558 PT(JT,9)=PT(JT,9)+DPP2/2.0
4559 PT(I,6)=PT(I,6)+DPT1/2.0
4560 PT(I,7)=PT(I,7)+DPT2/2.0
4561 PT(I,8)=PT(I,8)+DPT1/2.0
4562 PT(I,9)=PT(I,9)+DPT2/2.0
4563 DO 65 K=1,5
4564 PT(JT,K)=PSC1(K)
4565 PT(I,K)=PSC2(K)
456665 CONTINUE
4567 NFT(I,5)=MAX(1,NFT(I,5))
4568 GO TO 80
456970 CONTINUE
457080 RETURN
4571 END
4572C
4573C
4574C*******************************************************************
4575CThis subroutine performs elastic scattering between two nucleons
4576C
4577C*******************************************************************
4578 SUBROUTINE HIJELS(PSC1,PSC2)
4579 IMPLICIT DOUBLE PRECISION(D)
4580 DIMENSION PSC1(5),PSC2(5)
4581 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
4582cc SAVE /HPARNT/
4583 COMMON/RNDF77/NSEED
4584cc SAVE /RNDF77/
4585 SAVE
4586C
4587 CC=1.0-HINT1(12)/HINT1(13)
4588 RR=(1.0-CC)*HINT1(13)/HINT1(12)/(1.0-HIPR1(33))-1.0
4589 BB=0.5*(3.0+RR+SQRT(9.0+10.0*RR+RR**2))
4590 EP=SQRT((PSC1(1)-PSC2(1))**2+(PSC1(2)-PSC2(2))**2
4591 & +(PSC1(3)-PSC2(3))**2)
4592 IF(EP.LE.0.1) RETURN
4593 ELS0=98.0/EP+52.0*(1.0+RR)**2
4594 PCM1=PSC1(1)+PSC2(1)
4595 PCM2=PSC1(2)+PSC2(2)
4596 PCM3=PSC1(3)+PSC2(3)
4597 ECM=PSC1(4)+PSC2(4)
4598 AM1=PSC1(5)**2
4599 AM2=PSC2(5)**2
4600 AMM=ECM**2-PCM1**2-PCM2**2-PCM3**2
4601 IF(AMM.LE.PSC1(5)+PSC2(5)) RETURN
4602C ********elastic scattering only when approaching
4603C to each other
4604 PMAX=(AMM**2+AM1**2+AM2**2-2.0*AMM*AM1-2.0*AMM*AM2
4605 & -2.0*AM1*AM2)/4.0/AMM
4606 PMAX=ABS(PMAX)
460720 TT=RANART(NSEED)*MIN(PMAX,1.5)
4608 ELS=98.0*EXP(-2.8*TT)/EP
4609 & +52.0*EXP(-9.2*TT)*(1.0+RR*EXP(-4.6*(BB-1.0)*TT))**2
4610 IF(RANART(NSEED).GT.ELS/ELS0) GO TO 20
4611 PHI=2.0*HIPR1(40)*RANART(NSEED)
4612C
4613 DBX=dble(PCM1/ECM)
4614 DBY=dble(PCM2/ECM)
4615 DBZ=dble(PCM3/ECM)
4616 DB=dSQRT(DBX**2+DBY**2+DBZ**2)
4617 IF(DB.GT.0.99999999D0) THEN
4618 DBX=DBX*(0.99999999D0/DB)
4619 DBY=DBY*(0.99999999D0/DB)
4620 DBZ=DBZ*(0.99999999D0/DB)
4621 DB=0.99999999D0
4622 WRITE(6,*) ' (HIJELS) boost vector too large'
4623C ********Rescale boost vector if too close to unity.
4624 ENDIF
4625 DGA=1D0/SQRT(1D0-DB**2)
4626C
4627 DP1=dble(SQRT(TT)*SIN(PHI))
4628 DP2=dble(SQRT(TT)*COS(PHI))
4629 DP3=dble(SQRT(PMAX-TT))
4630 DP4=dble(SQRT(PMAX+AM1))
4631 DBP=DBX*DP1+DBY*DP2+DBZ*DP3
4632 DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP4)
4633 PSC1(1)=sngl(DP1+DGABP*DBX)
4634 PSC1(2)=sngl(DP2+DGABP*DBY)
4635 PSC1(3)=sngl(DP3+DGABP*DBZ)
4636 PSC1(4)=sngl(DGA*(DP4+DBP))
4637C
4638 DP1=-dble(SQRT(TT)*SIN(PHI))
4639 DP2=-dble(SQRT(TT)*COS(PHI))
4640 DP3=-dble(SQRT(PMAX-TT))
4641 DP4=dble(SQRT(PMAX+AM2))
4642 DBP=DBX*DP1+DBY*DP2+DBZ*DP3
4643 DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP4)
4644 PSC2(1)=sngl(DP1+DGABP*DBX)
4645 PSC2(2)=sngl(DP2+DGABP*DBY)
4646 PSC2(3)=sngl(DP3+DGABP*DBZ)
4647 PSC2(4)=sngl(DGA*(DP4+DBP))
4648 RETURN
4649 END
4650C
4651C
4652C*******************************************************************
4653C *
4654C Subroutine HIJSFT *
4655C *
4656C Scatter two excited strings, JP from proj and JT from target *
4657C*******************************************************************
4658 SUBROUTINE HIJSFT(JP,JT,JOUT,IERROR)
4659 PARAMETER (MAXSTR=150001)
4660 COMMON/hjcrdn/YP(3,300),YT(3,300)
4661cc SAVE /hjcrdn/
4662 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
4663cc SAVE /HPARNT/
4664 COMMON/HIJDAT/HIDAT0(10,10),HIDAT(10)
4665cc SAVE /HIJDAT/
4666 COMMON/RNDF77/NSEED
4667cc SAVE /RNDF77/
4668 COMMON/HJJET1/NPJ(300),KFPJ(300,500),PJPX(300,500),
4669 & PJPY(300,500),PJPZ(300,500),PJPE(300,500),
4670 & PJPM(300,500),NTJ(300),KFTJ(300,500),
4671 & PJTX(300,500),PJTY(300,500),PJTZ(300,500),
4672 & PJTE(300,500),PJTM(300,500)
4673cc SAVE /HJJET1/
4674clin-4/25/01
4675c COMMON/HJJET2/NSG,NJSG(900),IASG(900,3),K1SG(900,100),
4676c & K2SG(900,100),PXSG(900,100),PYSG(900,100),
4677c & PZSG(900,100),PESG(900,100),PMSG(900,100)
4678cc SAVE /HJJET2/
4679 COMMON/HSTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
4680cc SAVE /HSTRNG/
4681 COMMON/DPMCM1/JJP,JJT,AMP,AMT,APX0,ATX0,AMPN,AMTN,AMP0,AMT0,
4682 & NFDP,NFDT,WP,WM,SW,XREMP,XREMT,DPKC1,DPKC2,PP11,PP12,
4683 & PT11,PT12,PTP2,PTT2
4684cc SAVE /DPMCM1/
4685 COMMON/DPMCM2/NDPM,KDPM(20,2),PDPM1(20,5),PDPM2(20,5)
4686cc SAVE /DPMCM2/
4687 SAVE
4688C*******************************************************************
4689C JOUT-> the number
4690C of hard scatterings preceding this soft collision.
4691C IHNT2(13)-> 1=
4692C double diffrac 2=single diffrac, 3=non-single diffrac.
4693C*******************************************************************
4694 IERROR=0
4695 JJP=JP
4696 JJT=JT
4697 NDPM=0
4698c IOPMAIN=0
4699 IF(JP.GT.IHNT2(1) .OR. JT.GT.IHNT2(3)) RETURN
4700
4701 EPP=PP(JP,4)+PP(JP,3)
4702 EPM=PP(JP,4)-PP(JP,3)
4703 ETP=PT(JT,4)+PT(JT,3)
4704 ETM=PT(JT,4)-PT(JT,3)
4705
4706 WP=EPP+ETP
4707 WM=EPM+ETM
4708 SW=WP*WM
4709C ********total W+,W- and center-of-mass energy
4710
4711 IF(WP.LT.0.0 .OR. WM.LT.0.0) GO TO 1000
4712
4713 IF(JOUT.EQ.0) THEN
4714 IF(EPP.LT.0.0) GO TO 1000
4715 IF(EPM.LT.0.0) GO TO 1000
4716 IF(ETP.LT.0.0) GO TO 1000
4717 IF(ETM.LT.0.0) GO TO 1000
4718 IF(EPP/(EPM+0.01).LE.ETP/(ETM+0.01)) RETURN
4719 ENDIF
4720C ********For strings which does not follow a jet-prod,
4721C scatter only if Ycm(JP)>Ycm(JT). When jets
4722C are produced just before this collision
4723C this requirement has already be enforced
4724C (see SUBROUTINE HIJHRD)
4725 IHNT2(11)=JP
4726 IHNT2(12)=JT
4727C
4728C
4729C
4730 MISS=0
4731 PKC1=0.0
4732 PKC2=0.0
4733 PKC11=0.0
4734 PKC12=0.0
4735 PKC21=0.0
4736 PKC22=0.0
4737 DPKC11=0.0
4738 DPKC12=0.0
4739 DPKC21=0.0
4740 DPKC22=0.0
4741 IF(NFP(JP,10).EQ.1.OR.NFT(JT,10).EQ.1) THEN
4742 IF(NFP(JP,10).EQ.1) THEN
4743 PHI1=ULANGL(PP(JP,10),PP(JP,11))
4744 PPJET=SQRT(PP(JP,10)**2+PP(JP,11)**2)
4745 PKC1=PPJET
4746 PKC11=PP(JP,10)
4747 PKC12=PP(JP,11)
4748 ENDIF
4749 IF(NFT(JT,10).EQ.1) THEN
4750 PHI2=ULANGL(PT(JT,10),PT(JT,11))
4751 PTJET=SQRT(PT(JT,10)**2+PT(JT,11)**2)
4752 PKC2=PTJET
4753 PKC21=PT(JT,10)
4754 PKC22=PT(JT,11)
4755 ENDIF
4756 IF(IHPR2(4).GT.0.AND.IHNT2(1).GT.1.AND.IHNT2(3).GT.1) THEN
4757 IF(NFP(JP,10).EQ.0) THEN
4758 PHI=-PHI2
4759 ELSE IF(NFT(JT,10).EQ.0) THEN
4760 PHI=PHI1
4761 ELSE
4762 PHI=(PHI1+PHI2-HIPR1(40))/2.0
4763 ENDIF
4764 BX=HINT1(19)*COS(HINT1(20))
4765 BY=HINT1(19)*SIN(HINT1(20))
4766 XP0=YP(1,JP)
4767 YP0=YP(2,JP)
4768 XT0=YT(1,JT)+BX
4769 YT0=YT(2,JT)+BY
4770 R1=MAX(1.2*IHNT2(1)**0.3333333,
4771 & SQRT(XP0**2+YP0**2))
4772 R2=MAX(1.2*IHNT2(3)**0.3333333,
4773 & SQRT((XT0-BX)**2+(YT0-BY)**2))
4774 IF(ABS(COS(PHI)).LT.1.0E-5) THEN
4775 DD1=R1
4776 DD2=R1
4777 DD3=ABS(BY+SQRT(R2**2-(XP0-BX)**2)-YP0)
4778 DD4=ABS(BY-SQRT(R2**2-(XP0-BX)**2)-YP0)
4779 GO TO 5
4780 ENDIF
4781 BB=2.0*SIN(PHI)*(COS(PHI)*YP0-SIN(PHI)*XP0)
4782 CC=(YP0**2-R1**2)*COS(PHI)**2+XP0*SIN(PHI)*(
4783 & XP0*SIN(PHI)-2.0*YP0*COS(PHI))
4784 DD=BB**2-4.0*CC
4785 IF(DD.LT.0.0) GO TO 10
4786 XX1=(-BB+SQRT(DD))/2.0
4787 XX2=(-BB-SQRT(DD))/2.0
4788 DD1=ABS((XX1-XP0)/COS(PHI))
4789 DD2=ABS((XX2-XP0)/COS(PHI))
4790C
4791 BB=2.0*SIN(PHI)*(COS(PHI)*(YT0-BY)-SIN(PHI)*XT0)-2.0*BX
4792 CC=(BX**2+(YT0-BY)**2-R2**2)*COS(PHI)**2+XT0*SIN(PHI)
4793 & *(XT0*SIN(PHI)-2.0*COS(PHI)*(YT0-BY))
4794 & -2.0*BX*SIN(PHI)*(COS(PHI)*(YT0-BY)-SIN(PHI)*XT0)
4795 DD=BB**2-4.0*CC
4796 IF(DD.LT.0.0) GO TO 10
4797 XX1=(-BB+SQRT(DD))/2.0
4798 XX2=(-BB-SQRT(DD))/2.0
4799 DD3=ABS((XX1-XT0)/COS(PHI))
4800 DD4=ABS((XX2-XT0)/COS(PHI))
4801C
4802 5 DD1=MIN(DD1,DD3)
4803 DD2=MIN(DD2,DD4)
4804 IF(DD1.LT.HIPR1(13)) DD1=0.0
4805 IF(DD2.LT.HIPR1(13)) DD2=0.0
4806 IF(NFP(JP,10).EQ.1.AND.PPJET.GT.HIPR1(11)) THEN
4807 DP1=DD1*HIPR1(14)/2.0
4808 DP1=MIN(DP1,PPJET-HIPR1(11))
4809 PKC1=PPJET-DP1
4810 DPX1=COS(PHI1)*DP1
4811 DPY1=SIN(PHI1)*DP1
4812 PKC11=PP(JP,10)-DPX1
4813 PKC12=PP(JP,11)-DPY1
4814 IF(DP1.GT.0.0) THEN
4815 CTHEP=PP(JP,12)/SQRT(PP(JP,12)**2+PPJET**2)
4816 DPZ1=DP1*CTHEP/SQRT(1.0-CTHEP**2)
4817 DPE1=SQRT(DPX1**2+DPY1**2+DPZ1**2)
4818 EPPPRM=PP(JP,4)+PP(JP,3)-DPE1-DPZ1
4819 EPMPRM=PP(JP,4)-PP(JP,3)-DPE1+DPZ1
4820 IF(EPPPRM.LE.0.0.OR.EPMPRM.LE.0.0) GO TO 15
4821 EPP=EPPPRM
4822 EPM=EPMPRM
4823 PP(JP,10)=PKC11
4824 PP(JP,11)=PKC12
4825 NPJ(JP)=NPJ(JP)+1
4826 KFPJ(JP,NPJ(JP))=21
4827 PJPX(JP,NPJ(JP))=DPX1
4828 PJPY(JP,NPJ(JP))=DPY1
4829 PJPZ(JP,NPJ(JP))=DPZ1
4830 PJPE(JP,NPJ(JP))=DPE1
4831 PJPM(JP,NPJ(JP))=0.0
4832 PP(JP,3)=PP(JP,3)-DPZ1
4833 PP(JP,4)=PP(JP,4)-DPE1
4834 ENDIF
4835 ENDIF
4836 15 IF(NFT(JT,10).EQ.1.AND.PTJET.GT.HIPR1(11)) THEN
4837 DP2=DD2*HIPR1(14)/2.0
4838 DP2=MIN(DP2,PTJET-HIPR1(11))
4839 PKC2=PTJET-DP2
4840 DPX2=COS(PHI2)*DP2
4841 DPY2=SIN(PHI2)*DP2
4842 PKC21=PT(JT,10)-DPX2
4843 PKC22=PT(JT,11)-DPY2
4844 IF(DP2.GT.0.0) THEN
4845 CTHET=PT(JT,12)/SQRT(PT(JT,12)**2+PTJET**2)
4846 DPZ2=DP2*CTHET/SQRT(1.0-CTHET**2)
4847 DPE2=SQRT(DPX2**2+DPY2**2+DPZ2**2)
4848 ETPPRM=PT(JT,4)+PT(JT,3)-DPE2-DPZ2
4849 ETMPRM=PT(JT,4)-PT(JT,3)-DPE2+DPZ2
4850 IF(ETPPRM.LE.0.0.OR.ETMPRM.LE.0.0) GO TO 16
4851 ETP=ETPPRM
4852 ETM=ETMPRM
4853 PT(JT,10)=PKC21
4854 PT(JT,11)=PKC22
4855 NTJ(JT)=NTJ(JT)+1
4856 KFTJ(JT,NTJ(JT))=21
4857 PJTX(JT,NTJ(JT))=DPX2
4858 PJTY(JT,NTJ(JT))=DPY2
4859 PJTZ(JT,NTJ(JT))=DPZ2
4860 PJTE(JT,NTJ(JT))=DPE2
4861 PJTM(JT,NTJ(JT))=0.0
4862 PT(JT,3)=PT(JT,3)-DPZ2
4863 PT(JT,4)=PT(JT,4)-DPE2
4864 ENDIF
4865 ENDIF
4866 16 DPKC11=-(PP(JP,10)-PKC11)/2.0
4867 DPKC12=-(PP(JP,11)-PKC12)/2.0
4868 DPKC21=-(PT(JT,10)-PKC21)/2.0
4869 DPKC22=-(PT(JT,11)-PKC22)/2.0
4870 WP=EPP+ETP
4871 WM=EPM+ETM
4872 SW=WP*WM
4873 ENDIF
4874 ENDIF
4875C ********If jet is quenched the pt from valence quark
4876C hard scattering has to reduced by d*kapa
4877C
4878C
487910 PTP02=PP(JP,1)**2+PP(JP,2)**2
4880 PTT02=PT(JT,1)**2+PT(JT,2)**2
4881C
4882 AMQ=MAX(PP(JP,14)+PP(JP,15),PT(JT,14)+PT(JT,15))
4883 AMX=HIPR1(1)+AMQ
4884C ********consider mass cut-off for strings which
4885C must also include quark's mass
4886 AMP0=AMX
4887 DPM0=AMX
4888 NFDP=0
4889 IF(NFP(JP,5).LE.2.AND.NFP(JP,3).NE.0) THEN
4890 AMP0=ULMASS(NFP(JP,3))
4891 NFDP=NFP(JP,3)+2*NFP(JP,3)/ABS(NFP(JP,3))
4892 DPM0=ULMASS(NFDP)
4893 IF(DPM0.LE.0.0) THEN
4894 NFDP=NFDP-2*NFDP/ABS(NFDP)
4895 DPM0=ULMASS(NFDP)
4896 ENDIF
4897 ENDIF
4898 AMT0=AMX
4899 DTM0=AMX
4900 NFDT=0
4901 IF(NFT(JT,5).LE.2.AND.NFT(JT,3).NE.0) THEN
4902 AMT0=ULMASS(NFT(JT,3))
4903 NFDT=NFT(JT,3)+2*NFT(JT,3)/ABS(NFT(JT,3))
4904 DTM0=ULMASS(NFDT)
4905 IF(DTM0.LE.0.0) THEN
4906 NFDT=NFDT-2*NFDT/ABS(NFDT)
4907 DTM0=ULMASS(NFDT)
4908 ENDIF
4909 ENDIF
4910C
4911 AMPN=SQRT(AMP0**2+PTP02)
4912 AMTN=SQRT(AMT0**2+PTT02)
4913 SNN=(AMPN+AMTN)**2+0.001
4914C
4915 IF(SW.LT.SNN+0.001) GO TO 4000
4916C ********Scatter only if SW>SNN
4917C*****give some PT kick to the two exited strings******************
4918clin 20 SWPTN=4.0*(MAX(AMP0,AMT0)**2+MAX(PTP02,PTT02))
4919 SWPTN=4.0*(MAX(AMP0,AMT0)**2+MAX(PTP02,PTT02))
4920 SWPTD=4.0*(MAX(DPM0,DTM0)**2+MAX(PTP02,PTT02))
4921 SWPTX=4.0*(AMX**2+MAX(PTP02,PTT02))
4922 IF(SW.LE.SWPTN) THEN
4923 PKCMX=0.0
4924 ELSE IF(SW.GT.SWPTN .AND. SW.LE.SWPTD
4925 & .AND.NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0) THEN
4926 PKCMX=SQRT(SW/4.0-MAX(AMP0,AMT0)**2)
4927 & -SQRT(MAX(PTP02,PTT02))
4928 ELSE IF(SW.GT.SWPTD .AND. SW.LE.SWPTX
4929 & .AND.NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0) THEN
4930 PKCMX=SQRT(SW/4.0-MAX(DPM0,DTM0)**2)
4931 & -SQRT(MAX(PTP02,PTT02))
4932 ELSE IF(SW.GT.SWPTX) THEN
4933 PKCMX=SQRT(SW/4.0-AMX**2)-SQRT(MAX(PTP02,PTT02))
4934 ENDIF
4935C ********maximun PT kick
4936C*********************************************************
4937C
4938 IF(NFP(JP,10).EQ.1.OR.NFT(JT,10).EQ.1) THEN
4939 IF(PKC1.GT.PKCMX) THEN
4940 PKC1=PKCMX
4941 PKC11=PKC1*COS(PHI1)
4942 PKC12=PKC1*SIN(PHI1)
4943 DPKC11=-(PP(JP,10)-PKC11)/2.0
4944 DPKC12=-(PP(JP,11)-PKC12)/2.0
4945 ENDIF
4946 IF(PKC2.GT.PKCMX) THEN
4947 PKC2=PKCMX
4948 PKC21=PKC2*COS(PHI2)
4949 PKC22=PKC2*SIN(PHI2)
4950 DPKC21=-(PT(JT,10)-PKC21)/2.0
4951 DPKC22=-(PT(JT,11)-PKC22)/2.0
4952 ENDIF
4953 DPKC1=DPKC11+DPKC21
4954 DPKC2=DPKC12+DPKC22
4955 NFP(JP,10)=-NFP(JP,10)
4956 NFT(JT,10)=-NFT(JT,10)
4957 GO TO 40
4958 ENDIF
4959C ********If the valence quarks had a hard-collision
4960C the pt kick is the pt from hard-collision.
4961 isng=0
4962 IF(IHPR2(13).NE.0 .AND. RANART(NSEED).LE.HIDAT(4)) isng=1
4963 IF((NFP(JP,5).EQ.3 .OR.NFT(JT,5).EQ.3).OR.
4964 & (NPJ(JP).NE.0.OR.NFP(JP,10).NE.0).OR.
4965 & (NTJ(JT).NE.0.OR.NFT(JT,10).NE.0)) isng=0
4966C
4967C ********decite whether to have single-diffractive
4968 IF(IHPR2(5).EQ.0) THEN
4969 PKC=HIPR1(2)*SQRT(-ALOG(1.0-RANART(NSEED)
4970 & *(1.0-EXP(-PKCMX**2/HIPR1(2)**2))))
4971 GO TO 30
4972 ENDIF
4973
4974clin-10/28/02 get rid of argument usage mismatch in HIRND2():
4975c PKC=HIRND2(3,0.0,PKCMX**2)
4976 xminhi=0.0
4977 xmaxhi=PKCMX**2
4978 PKC=HIRND2(3,xminhi,xmaxhi)
4979
4980 PKC=SQRT(PKC)
4981 IF(PKC.GT.HIPR1(20))
4982 & PKC=HIPR1(2)*SQRT(-ALOG(EXP(-HIPR1(20)**2/HIPR1(2)**2)
4983 & -RANART(NSEED)*(EXP(-HIPR1(20)**2/HIPR1(2)**2)-
4984 & EXP(-PKCMX**2/HIPR1(2)**2))))
4985C
4986 IF(isng.EQ.1) PKC=0.65*SQRT(
4987 & -ALOG(1.0-RANART(NSEED)*(1.0-EXP(-PKCMX**2/0.65**2))))
4988C ********select PT kick
498930 PHI0=2.0*HIPR1(40)*RANART(NSEED)
4990 PKC11=PKC*SIN(PHI0)
4991 PKC12=PKC*COS(PHI0)
4992 PKC21=-PKC11
4993 PKC22=-PKC12
4994 DPKC1=0.0
4995 DPKC2=0.0
499640 PP11=PP(JP,1)+PKC11-DPKC1
4997 PP12=PP(JP,2)+PKC12-DPKC2
4998 PT11=PT(JT,1)+PKC21-DPKC1
4999 PT12=PT(JT,2)+PKC22-DPKC2
5000 PTP2=PP11**2+PP12**2
5001 PTT2=PT11**2+PT12**2
5002C
5003 AMPN=SQRT(AMP0**2+PTP2)
5004 AMTN=SQRT(AMT0**2+PTT2)
5005 SNN=(AMPN+AMTN)**2+0.001
5006C***************************************
5007 WP=EPP+ETP
5008 WM=EPM+ETM
5009 SW=WP*WM
5010C****************************************
5011 IF(SW.LT.SNN) THEN
5012 MISS=MISS+1
5013 IF(MISS.LE.100) then
5014 PKC=0.0
5015 GO TO 30
5016 ENDIF
5017 IF(IHPR2(10).NE.0)
5018 & WRITE(6,*) 'Error occured in Pt kick section of HIJSFT'
5019 GO TO 4000
5020 ENDIF
5021C******************************************************************
5022 AMPD=SQRT(DPM0**2+PTP2)
5023 AMTD=SQRT(DTM0**2+PTT2)
5024
5025 AMPX=SQRT(AMX**2+PTP2)
5026 AMTX=SQRT(AMX**2+PTT2)
5027
5028 DPN=AMPN**2/SW
5029 DTN=AMTN**2/SW
5030 DPD=AMPD**2/SW
5031 DTD=AMTD**2/SW
5032 DPX=AMPX**2/SW
5033 DTX=AMTX**2/SW
5034C
5035 SPNTD=(AMPN+AMTD)**2
5036 SPNTX=(AMPN+AMTX)**2
5037C ********CM energy if proj=N,targ=N*
5038 SPDTN=(AMPD+AMTN)**2
5039 SPXTN=(AMPX+AMTN)**2
5040C ********CM energy if proj=N*,targ=N
5041 SPDTX=(AMPD+AMTX)**2
5042 SPXTD=(AMPX+AMTD)**2
5043 SDD=(AMPD+AMTD)**2
5044 SXX=(AMPX+AMTX)**2
5045
5046C
5047C
5048C ********CM energy if proj=delta, targ=delta
5049C****************There are many different cases**********
5050c IF(IHPR2(15).EQ.1) GO TO 500
5051C
5052C ********to have DPM type soft interactions
5053C
5054clin 45 CONTINUE
5055 IF(SW.GT.SXX+0.001) THEN
5056 IF(isng.EQ.0) THEN
5057 D1=DPX
5058 D2=DTX
5059 NFP3=0
5060 NFT3=0
5061 GO TO 400
5062 ELSE
5063c**** 5/30/1998 this is identical to the above statement. Added to
5064c**** avoid questional branching to block.
5065 IF((NFP(JP,5).EQ.3 .AND.NFT(JT,5).EQ.3).OR.
5066 & (NPJ(JP).NE.0.OR.NFP(JP,10).NE.0).OR.
5067 & (NTJ(JT).NE.0.OR.NFT(JT,10).NE.0)) THEN
5068 D1=DPX
5069 D2=DTX
5070 NFP3=0
5071 NFT3=0
5072 GO TO 400
5073 ENDIF
5074C ********do not allow excited strings to have
5075C single-diffr
5076 IF(RANART(NSEED).GT.0.5.OR.(NFT(JT,5).GT.2.OR.
5077 & NTJ(JT).NE.0.OR.NFT(JT,10).NE.0)) THEN
5078 D1=DPN
5079 D2=DTX
5080 NFP3=NFP(JP,3)
5081 NFT3=0
5082 GO TO 220
5083 ELSE
5084 D1=DPX
5085 D2=DTN
5086 NFP3=0
5087 NFT3=NFT(JT,3)
5088 GO TO 240
5089 ENDIF
5090C ********have single diffractive collision
5091 ENDIF
5092 ELSE IF(SW.GT.MAX(SPDTX,SPXTD)+0.001 .AND.
5093 & SW.LE.SXX+0.001) THEN
5094 IF(((NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0.AND.
5095 & RANART(NSEED).GT.0.5).OR.(NPJ(JP).EQ.0
5096 & .AND.NTJ(JT).NE.0)).AND.NFP(JP,5).LE.2) THEN
5097 D1=DPD
5098 D2=DTX
5099 NFP3=NFDP
5100 NFT3=0
5101 GO TO 220
5102 ELSE IF(NTJ(JT).EQ.0.AND.NFT(JT,5).LE.2) THEN
5103 D1=DPX
5104 D2=DTD
5105 NFP3=0
5106 NFT3=NFDT
5107 GO TO 240
5108 ENDIF
5109 GO TO 4000
5110 ELSE IF(SW.GT.MIN(SPDTX,SPXTD)+0.001.AND.
5111 & SW.LE.MAX(SPDTX,SPXTD)+0.001) THEN
5112 IF(SPDTX.LE.SPXTD.AND.NPJ(JP).EQ.0
5113 & .AND.NFP(JP,5).LE.2) THEN
5114 D1=DPD
5115 D2=DTX
5116 NFP3=NFDP
5117 NFT3=0
5118 GO TO 220
5119 ELSE IF(SPDTX.GT.SPXTD.AND.NTJ(JT).EQ.0
5120 & .AND.NFT(JT,5).LE.2) THEN
5121 D1=DPX
5122 D2=DTD
5123 NFP3=0
5124 NFT3=NFDT
5125 GO TO 240
5126 ENDIF
5127c*** 5/30/1998 added to avoid questional branching to another block
5128c*** this is identical to the statement following the next ELSE IF
5129 IF(((NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0
5130 & .AND.RANART(NSEED).GT.0.5).OR.(NPJ(JP).EQ.0
5131 & .AND.NTJ(JT).NE.0)).AND.NFP(JP,5).LE.2) THEN
5132 D1=DPN
5133 D2=DTX
5134 NFP3=NFP(JP,3)
5135 NFT3=0
5136 GO TO 220
5137 ELSE IF(NTJ(JT).EQ.0.AND.NFT(JT,5).LE.2) THEN
5138 D1=DPX
5139 D2=DTN
5140 NFP3=0
5141 NFT3=NFT(JT,3)
5142 GO TO 240
5143 ENDIF
5144 GO TO 4000
5145 ELSE IF(SW.GT.MAX(SPNTX,SPXTN)+0.001 .AND.
5146 & SW.LE.MIN(SPDTX,SPXTD)+0.001) THEN
5147 IF(((NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0
5148 & .AND.RANART(NSEED).GT.0.5).OR.(NPJ(JP).EQ.0
5149 & .AND.NTJ(JT).NE.0)).AND.NFP(JP,5).LE.2) THEN
5150 D1=DPN
5151 D2=DTX
5152 NFP3=NFP(JP,3)
5153 NFT3=0
5154 GO TO 220
5155 ELSE IF(NTJ(JT).EQ.0.AND.NFT(JT,5).LE.2) THEN
5156 D1=DPX
5157 D2=DTN
5158 NFP3=0
5159 NFT3=NFT(JT,3)
5160 GO TO 240
5161 ENDIF
5162 GO TO 4000
5163 ELSE IF(SW.GT.MIN(SPNTX,SPXTN)+0.001 .AND.
5164 & SW.LE.MAX(SPNTX,SPXTN)+0.001) THEN
5165 IF(SPNTX.LE.SPXTN.AND.NPJ(JP).EQ.0
5166 & .AND.NFP(JP,5).LE.2) THEN
5167 D1=DPN
5168 D2=DTX
5169 NFP3=NFP(JP,3)
5170 NFT3=0
5171 GO TO 220
5172 ELSEIF(SPNTX.GT.SPXTN.AND.NTJ(JT).EQ.0
5173 & .AND.NFT(JT,5).LE.2) THEN
5174 D1=DPX
5175 D2=DTN
5176 NFP3=0
5177 NFT3=NFT(JT,3)
5178 GO TO 240
5179 ENDIF
5180 GO TO 4000
5181 ELSE IF(SW.LE.MIN(SPNTX,SPXTN)+0.001 .AND.
5182 & (NPJ(JP).NE.0 .OR.NTJ(JT).NE.0)) THEN
5183 GO TO 4000
5184 ELSE IF(SW.LE.MIN(SPNTX,SPXTN)+0.001 .AND.
5185 & NFP(JP,5).GT.2.AND.NFT(JT,5).GT.2) THEN
5186 GO TO 4000
5187 ELSE IF(SW.GT.SDD+0.001.AND.SW.LE.
5188 & MIN(SPNTX,SPXTN)+0.001) THEN
5189 D1=DPD
5190 D2=DTD
5191 NFP3=NFDP
5192 NFT3=NFDT
5193 GO TO 100
5194 ELSE IF(SW.GT.MAX(SPNTD,SPDTN)+0.001
5195 & .AND. SW.LE.SDD+0.001) THEN
5196 IF(RANART(NSEED).GT.0.5) THEN
5197 D1=DPD
5198 D2=DTN
5199 NFP3=NFDP
5200 NFT3=NFT(JT,3)
5201 GO TO 100
5202 ELSE
5203 D1=DPN
5204 D2=DTD
5205 NFP3=NFP(JP,3)
5206 NFT3=NFDT
5207 GO TO 100
5208 ENDIF
5209 ELSE IF(SW.GT.MIN(SPNTD,SPDTN)+0.001
5210 & .AND. SW.LE.MAX(SPNTD,SPDTN)+0.001) THEN
5211 IF(SPNTD.GT.SPDTN) THEN
5212 D1=DPD
5213 D2=DTN
5214 NFP3=NFDP
5215 NFT3=NFT(JT,3)
5216 GO TO 100
5217 ELSE
5218 D1=DPN
5219 D2=DTD
5220 NFP3=NFP(JP,3)
5221 NFT3=NFDT
5222 GO TO 100
5223 ENDIF
5224 ELSE IF(SW.LE.MIN(SPNTD,SPDTN)+0.001) THEN
5225 D1=DPN
5226 D2=DTN
5227 NFP3=NFP(JP,3)
5228 NFT3=NFT(JT,3)
5229 GO TO 100
5230 ENDIF
5231 WRITE(6,*) ' Error in HIJSFT: There is no path to here'
5232 RETURN
5233C
5234C*************** elastic scattering ***************
5235C this is like elastic, both proj and targ mass
5236C must be fixed
5237C***************************************************
5238100 NFP5=MAX(2,NFP(JP,5))
5239 NFT5=MAX(2,NFT(JT,5))
5240 BB1=1.0+D1-D2
5241 BB2=1.0+D2-D1
5242 IF(BB1**2.LT.4.0*D1 .OR. BB2**2.LT.4.0*D2) THEN
5243 MISS=MISS+1
5244 IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 3000
5245 PKC=PKC*0.5
5246 GO TO 30
5247 ENDIF
5248 IF(RANART(NSEED).LT.0.5) THEN
5249 X1=(BB1-SQRT(BB1**2-4.0*D1))/2.0
5250 X2=(BB2-SQRT(BB2**2-4.0*D2))/2.0
5251 ELSE
5252 X1=(BB1+SQRT(BB1**2-4.0*D1))/2.0
5253 X2=(BB2+SQRT(BB2**2-4.0*D2))/2.0
5254 ENDIF
5255 IHNT2(13)=2
5256 GO TO 600
5257C
5258C********** Single diffractive ***********************
5259C either proj or targ's mass is fixed
5260C*****************************************************
5261220 NFP5=MAX(2,NFP(JP,5))
5262 NFT5=3
5263 IF(NFP3.EQ.0) NFP5=3
5264 BB2=1.0+D2-D1
5265 IF(BB2**2.LT.4.0*D2) THEN
5266 MISS=MISS+1
5267 IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 3000
5268 PKC=PKC*0.5
5269 GO TO 30
5270 ENDIF
5271 XMIN=(BB2-SQRT(BB2**2-4.0*D2))/2.0
5272 XMAX=(BB2+SQRT(BB2**2-4.0*D2))/2.0
5273 MISS4=0
5274222 X2=HIRND2(6,XMIN,XMAX)
5275 X1=D1/(1.0-X2)
5276 IF(X2*(1.0-X1).LT.(D2+1.E-4/SW)) THEN
5277 MISS4=MISS4+1
5278 IF(MISS4.LE.1000) GO TO 222
5279 GO TO 5000
5280 ENDIF
5281 IHNT2(13)=2
5282 GO TO 600
5283C ********Fix proj mass*********
5284240 NFP5=3
5285 NFT5=MAX(2,NFT(JT,5))
5286 IF(NFT3.EQ.0) NFT5=3
5287 BB1=1.0+D1-D2
5288 IF(BB1**2.LT.4.0*D1) THEN
5289 MISS=MISS+1
5290 IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 3000
5291 PKC=PKC*0.5
5292 GO TO 30
5293 ENDIF
5294 XMIN=(BB1-SQRT(BB1**2-4.0*D1))/2.0
5295 XMAX=(BB1+SQRT(BB1**2-4.0*D1))/2.0
5296 MISS4=0
5297242 X1=HIRND2(6,XMIN,XMAX)
5298 X2=D2/(1.0-X1)
5299 IF(X1*(1.0-X2).LT.(D1+1.E-4/SW)) THEN
5300 MISS4=MISS4+1
5301 IF(MISS4.LE.1000) GO TO 242
5302 GO TO 5000
5303 ENDIF
5304 IHNT2(13)=2
5305 GO TO 600
5306C ********Fix targ mass*********
5307C
5308C*************non-single diffractive**********************
5309C both proj and targ may not be fixed in mass
5310C*********************************************************
5311C
5312400 NFP5=3
5313 NFT5=3
5314 BB1=1.0+D1-D2
5315 BB2=1.0+D2-D1
5316 IF(BB1**2.LT.4.0*D1 .OR. BB2**2.LT.4.0*D2) THEN
5317 MISS=MISS+1
5318 IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 3000
5319 PKC=PKC*0.5
5320 GO TO 30
5321 ENDIF
5322 XMIN1=(BB1-SQRT(BB1**2-4.0*D1))/2.0
5323 XMAX1=(BB1+SQRT(BB1**2-4.0*D1))/2.0
5324 XMIN2=(BB2-SQRT(BB2**2-4.0*D2))/2.0
5325 XMAX2=(BB2+SQRT(BB2**2-4.0*D2))/2.0
5326 MISS4=0
5327410 X1=HIRND2(4,XMIN1,XMAX1)
5328 X2=HIRND2(4,XMIN2,XMAX2)
5329 IF(NFP(JP,5).EQ.3.OR.NFT(JT,5).EQ.3) THEN
5330 X1=HIRND2(6,XMIN1,XMAX1)
5331 X2=HIRND2(6,XMIN2,XMAX2)
5332 ENDIF
5333C ********
5334 IF(ABS(NFP(JP,1)*NFP(JP,2)).GT.1000000.OR.
5335 & ABS(NFP(JP,1)*NFP(JP,2)).LT.100) THEN
5336 X1=HIRND2(5,XMIN1,XMAX1)
5337 ENDIF
5338 IF(ABS(NFT(JT,1)*NFT(JT,2)).GT.1000000.OR.
5339 & ABS(NFT(JT,1)*NFT(JT,2)).LT.100) THEN
5340 X2=HIRND2(5,XMIN2,XMAX2)
5341 ENDIF
5342c IF(IOPMAIN.EQ.3) X1=HIRND2(6,XMIN1,XMAX1)
5343c IF(IOPMAIN.EQ.2) X2=HIRND2(6,XMIN2,XMAX2)
5344C ********For q-qbar or (qq)-(qq)bar system use symetric
5345C distribution, for q-(qq) or qbar-(qq)bar use
5346C unsymetrical distribution
5347C
5348 IF(ABS(NFP(JP,1)*NFP(JP,2)).GT.1000000) X1=1.0-X1
5349 XXP=X1*(1.0-X2)
5350 XXT=X2*(1.0-X1)
5351 IF(XXP.LT.(D1+1.E-4/SW) .OR. XXT.LT.(D2+1.E-4/SW)) THEN
5352 MISS4=MISS4+1
5353 IF(MISS4.LE.1000) GO TO 410
5354 GO TO 5000
5355 ENDIF
5356 IHNT2(13)=3
5357C***************************************************
5358C***************************************************
5359600 CONTINUE
5360 IF(X1*(1.0-X2).LT.(AMPN**2-1.E-4)/SW.OR.
5361 & X2*(1.0-X1).LT.(AMTN**2-1.E-4)/SW) THEN
5362 MISS=MISS+1
5363 IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 2000
5364 PKC=0.0
5365 GO TO 30
5366 ENDIF
5367C
5368 EPP=(1.0-X2)*WP
5369 EPM=X1*WM
5370 ETP=X2*WP
5371 ETM=(1.0-X1)*WM
5372 PP(JP,3)=(EPP-EPM)/2.0
5373 PP(JP,4)=(EPP+EPM)/2.0
5374 IF(EPP*EPM-PTP2.LT.0.0) GO TO 6000
5375 PP(JP,5)=SQRT(EPP*EPM-PTP2)
5376 NFP(JP,3)=NFP3
5377 NFP(JP,5)=NFP5
5378
5379 PT(JT,3)=(ETP-ETM)/2.0
5380 PT(JT,4)=(ETP+ETM)/2.0
5381 IF(ETP*ETM-PTT2.LT.0.0) GO TO 6000
5382 PT(JT,5)=SQRT(ETP*ETM-PTT2)
5383 NFT(JT,3)=NFT3
5384 NFT(JT,5)=NFT5
5385C*****recoil PT from hard-inter is shared by two end-partons
5386C so that pt=p1+p2
5387 PP(JP,1)=PP11-PKC11
5388 PP(JP,2)=PP12-PKC12
5389
5390 KCDIP=1
5391 KCDIT=1
5392 IF(ABS(NFP(JP,1)*NFP(JP,2)).GT.1000000.OR.
5393 & ABS(NFP(JP,1)*NFP(JP,2)).LT.100) THEN
5394 KCDIP=0
5395 ENDIF
5396 IF(ABS(NFT(JT,1)*NFT(JT,2)).GT.1000000.OR.
5397 & ABS(NFT(JT,1)*NFT(JT,2)).LT.100) THEN
5398 KCDIT=0
5399 ENDIF
5400 IF((KCDIP.EQ.0.AND.RANART(NSEED).LT.0.5)
5401 & .OR.(KCDIP.NE.0.AND.RANART(NSEED)
5402 & .LT.0.5/(1.0+(PKC11**2+PKC12**2)/HIPR1(22)**2))) THEN
5403 PP(JP,6)=(PP(JP,1)-PP(JP,6)-PP(JP,8)-DPKC1)/2.0+PP(JP,6)
5404 PP(JP,7)=(PP(JP,2)-PP(JP,7)-PP(JP,9)-DPKC2)/2.0+PP(JP,7)
5405 PP(JP,8)=(PP(JP,1)-PP(JP,6)-PP(JP,8)-DPKC1)/2.0
5406 & +PP(JP,8)+PKC11
5407 PP(JP,9)=(PP(JP,2)-PP(JP,7)-PP(JP,9)-DPKC2)/2.0
5408 & +PP(JP,9)+PKC12
5409 ELSE
5410 PP(JP,8)=(PP(JP,1)-PP(JP,6)-PP(JP,8)-DPKC1)/2.0+PP(JP,8)
5411 PP(JP,9)=(PP(JP,2)-PP(JP,7)-PP(JP,9)-DPKC2)/2.0+PP(JP,9)
5412 PP(JP,6)=(PP(JP,1)-PP(JP,6)-PP(JP,8)-DPKC1)/2.0
5413 & +PP(JP,6)+PKC11
5414 PP(JP,7)=(PP(JP,2)-PP(JP,7)-PP(JP,9)-DPKC2)/2.0
5415 & +PP(JP,7)+PKC12
5416 ENDIF
5417 PP(JP,1)=PP(JP,6)+PP(JP,8)
5418 PP(JP,2)=PP(JP,7)+PP(JP,9)
5419C ********pt kick for proj
5420 PT(JT,1)=PT11-PKC21
5421 PT(JT,2)=PT12-PKC22
5422 IF((KCDIT.EQ.0.AND.RANART(NSEED).LT.0.5)
5423 & .OR.(KCDIT.NE.0.AND.RANART(NSEED)
5424 & .LT.0.5/(1.0+(PKC21**2+PKC22**2)/HIPR1(22)**2))) THEN
5425 PT(JT,6)=(PT(JT,1)-PT(JT,6)-PT(JT,8)-DPKC1)/2.0+PT(JT,6)
5426 PT(JT,7)=(PT(JT,2)-PT(JT,7)-PT(JT,9)-DPKC2)/2.0+PT(JT,7)
5427 PT(JT,8)=(PT(JT,1)-PT(JT,6)-PT(JT,8)-DPKC1)/2.0
5428 & +PT(JT,8)+PKC21
5429 PT(JT,9)=(PT(JT,2)-PT(JT,7)-PT(JT,9)-DPKC2)/2.0
5430 & +PT(JT,9)+PKC22
5431 ELSE
5432 PT(JT,8)=(PT(JT,1)-PT(JT,6)-PT(JT,8)-DPKC1)/2.0+PT(JT,8)
5433 PT(JT,9)=(PT(JT,2)-PT(JT,7)-PT(JT,9)-DPKC2)/2.0+PT(JT,9)
5434 PT(JT,6)=(PT(JT,1)-PT(JT,6)-PT(JT,8)-DPKC1)/2.0
5435 & +PT(JT,6)+PKC21
5436 PT(JT,7)=(PT(JT,2)-PT(JT,7)-PT(JT,9)-DPKC2)/2.0
5437 & +PT(JT,7)+PKC22
5438 ENDIF
5439 PT(JT,1)=PT(JT,6)+PT(JT,8)
5440 PT(JT,2)=PT(JT,7)+PT(JT,9)
5441C ********pt kick for targ
5442
5443 IF(NPJ(JP).NE.0) NFP(JP,5)=3
5444 IF(NTJ(JT).NE.0) NFT(JT,5)=3
5445C ********jets must be connected to string
5446 IF(EPP/(EPM+0.0001).LT.ETP/(ETM+0.0001).AND.
5447 & ABS(NFP(JP,1)*NFP(JP,2)).LT.1000000)THEN
5448 DO 620 JSB=1,15
5449 PSB=PP(JP,JSB)
5450 PP(JP,JSB)=PT(JT,JSB)
5451 PT(JT,JSB)=PSB
5452 NSB=NFP(JP,JSB)
5453 NFP(JP,JSB)=NFT(JT,JSB)
5454 NFT(JT,JSB)=NSB
5455620 CONTINUE
5456C ********when Ycm(JP)<Ycm(JT) after the collision
5457C exchange the positions of the two
5458 ENDIF
5459C
5460 RETURN
5461C**************************************************
5462C**************************************************
54631000 IERROR=1
5464 IF(IHPR2(10).EQ.0) RETURN
5465 WRITE(6,*) ' Fatal HIJSFT start error,abandon this event'
5466 WRITE(6,*) ' PROJ E+,E-,W+',EPP,EPM,WP
5467 WRITE(6,*) ' TARG E+,E-,W-',ETP,ETM,WM
5468 WRITE(6,*) ' W+*W-, (APN+ATN)^2',SW,SNN
5469 RETURN
54702000 IERROR=0
5471 IF(IHPR2(10).EQ.0) RETURN
5472 WRITE(6,*) ' (2)energy partition fail,'
5473 WRITE(6,*) ' HIJSFT not performed, but continue'
5474 WRITE(6,*) ' MP1,MPN',X1*(1.0-X2)*SW,AMPN**2
5475 WRITE(6,*) ' MT2,MTN',X2*(1.0-X1)*SW,AMTN**2
5476 RETURN
54773000 IERROR=0
5478 IF(IHPR2(10).EQ.0) RETURN
5479 WRITE(6,*) ' (3)something is wrong with the pt kick, '
5480 WRITE(6,*) ' HIJSFT not performed, but continue'
5481 WRITE(6,*) ' D1=',D1,' D2=',D2,' SW=',SW
5482 WRITE(6,*) ' HISTORY NFP5=',NFP(JP,5),' NFT5=',NFT(JT,5)
5483 WRITE(6,*) ' THIS COLLISON NFP5=',NFP5, ' NFT5=',NFT5
5484 WRITE(6,*) ' # OF JET IN PROJ',NPJ(JP),' IN TARG',NTJ(JT)
5485 RETURN
54864000 IERROR=0
5487 IF(IHPR2(10).EQ.0) RETURN
5488 WRITE(6,*) ' (4)unable to choose process, but not harmful'
5489 WRITE(6,*) ' HIJSFT not performed, but continue'
5490 WRITE(6,*) ' PTP=',SQRT(PTP2),' PTT=',SQRT(PTT2),' SW=',SW
5491 WRITE(6,*) ' AMCUT=',AMX,' JP=',JP,' JT=',JT
5492 WRITE(6,*) ' HISTORY NFP5=',NFP(JP,5),' NFT5=',NFT(JT,5)
5493 RETURN
54945000 IERROR=0
5495 IF(IHPR2(10).EQ.0) RETURN
5496 WRITE(6,*) ' energy partition failed(5),for limited try'
5497 WRITE(6,*) ' HIJSFT not performed, but continue'
5498 WRITE(6,*) ' NFP5=',NFP5,' NFT5=',NFT5
5499 WRITE(6,*) ' D1',D1,' X1(1-X2)',X1*(1.0-X2)
5500 WRITE(6,*) ' D2',D2,' X2(1-X1)',X2*(1.0-X1)
5501 RETURN
55026000 PKC=0.0
5503 MISS=MISS+1
5504 IF(MISS.LT.100) GO TO 30
5505 IERROR=1
5506 IF(IHPR2(10).EQ.0) RETURN
5507 WRITE(6,*) ' ERROR OCCURED, HIJSFT NOT PERFORMED'
5508 WRITE(6,*) ' Abort this event'
5509 WRITE(6,*) 'MTP,PTP2',EPP*EPM,PTP2,' MTT,PTT2',ETP*ETM,PTT2
5510 RETURN
5511 END
5512C
5513C
5514C
5515C ********************************************************
5516C ************************ WOOD-SAX
5517 SUBROUTINE HIJWDS(IA,IDH,XHIGH)
5518C SETS UP HISTOGRAM IDH WITH RADII FOR
5519C NUCLEUS IA DISTRIBUTED ACCORDING TO THREE PARAM WOOD SAXON
5520 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
5521cc SAVE /HPARNT/
5522 COMMON/WOOD/R,D,FNORM,W
5523cc SAVE /WOOD/
5524c DIMENSION IAA(20),RR(20),DD(20),WW(20),RMS(20)
5525 DIMENSION IAA(20),RR(20),DD(20),WW(20)
5526 EXTERNAL RWDSAX,WDSAX
5527 SAVE
5528C
5529C PARAMETERS OF SPECIAL NUCLEI FROM ATOMIC DATA AND NUC DATA TABLES
5530C VOL 14, 5-6 1974
5531 DATA IAA/2,4,12,16,27,32,40,56,63,93,184,197,208,7*0./
5532 DATA RR/0.01,.964,2.355,2.608,2.84,3.458,3.766,3.971,4.214,
5533 1 4.87,6.51,6.38,6.624,7*0./
5534 DATA DD/0.5882,.322,.522,.513,.569,.61,.586,.5935,.586,.573,
5535 1 .535,.535,.549,7*0./
5536 DATA WW/0.0,.517,-0.149,-0.051,0.,-0.208,-0.161,13*0./
5537c DATA RMS/2.11,1.71,2.46,2.73,3.05,3.247,3.482,3.737,3.925,4.31,
5538c 1 5.42,5.33,5.521,7*0./
5539C
5540 A=IA
5541C
5542C ********SET WOOD-SAX PARAMS FIRST AS IN DATE ET AL
5543 D=0.54
5544C ********D IS WOOD SAX DIFFUSE PARAM IN FM
5545 R=1.19*A**(1./3.) - 1.61*A**(-1./3.)
5546C ********R IS RADIUS PARAM
5547 W=0.
5548C ********W IS The third of three WOOD-SAX PARAM
5549C
5550C ********CHECK TABLE FOR SPECIAL CASES
5551 DO 10 I=1,13
5552 IF (IA.EQ.IAA(I)) THEN
5553 R=RR(I)
5554 D=DD(I)
5555 W=WW(I)
5556clin RS not used RS=RMS(I)
5557 END IF
555810 CONTINUE
5559C ********FNORM is the normalize factor
5560 FNORM=1.0
5561 XLOW=0.
5562 XHIGH=R+ 12.*D
5563 IF (W.LT.-0.01) THEN
5564 IF (XHIGH.GT.R/SQRT(ABS(W))) XHIGH=R/SQRT(ABS(W))
5565 END IF
5566 FGAUS=GAUSS1(RWDSAX,XLOW,XHIGH,0.001)
5567 FNORM=1./FGAUS
5568C
5569 IF (IDH.EQ.1) THEN
5570 HINT1(72)=R
5571 HINT1(73)=D
5572 HINT1(74)=W
5573 HINT1(75)=FNORM/4.0/HIPR1(40)
5574 ELSE IF (IDH.EQ.2) THEN
5575 HINT1(76)=R
5576 HINT1(77)=D
5577 HINT1(78)=W
5578 HINT1(79)=FNORM/4.0/HIPR1(40)
5579 ENDIF
5580C
5581C NOW SET UP HBOOK FUNCTIONS IDH FOR R**2*RHO(R)
5582C THESE HISTOGRAMS ARE USED TO GENERATE RANDOM RADII
5583 CALL HIFUN(IDH,XLOW,XHIGH,RWDSAX)
5584 RETURN
5585 END
5586C
5587C
5588 FUNCTION WDSAX(X)
5589C ********THREE PARAMETER WOOD SAXON
5590 COMMON/WOOD/R,D,FNORM,W
5591cc SAVE /WOOD/
5592 SAVE
5593 WDSAX=FNORM*(1.+W*(X/R)**2)/(1+EXP((X-R)/D))
5594 IF (W.LT.0.) THEN
5595 IF (X.GE.R/SQRT(ABS(W))) WDSAX=0.
5596 ENDIF
5597 RETURN
5598 END
5599C
5600C
5601 FUNCTION RWDSAX(X)
5602 SAVE
5603 RWDSAX=X*X*WDSAX(X)
5604 RETURN
5605 END
5606C
5607C
5608C
5609C
5610C The next three subroutines are for Monte Carlo generation
5611C according to a given function FHB. One calls first HIFUN
5612C with assigned channel number I, low and up limits. Then to
5613C generate the distribution one can call HIRND(I) which gives
5614C you a random number generated according to the given function.
5615C
5616 SUBROUTINE HIFUN(I,XMIN,XMAX,FHB)
5617 COMMON/HIJHB/RR(10,201),XX(10,201)
5618cc SAVE /HIJHB/
5619 EXTERNAL FHB
5620 SAVE
5621 FNORM=GAUSS1(FHB,XMIN,XMAX,0.001)
5622 DO 100 J=1,201
5623 XX(I,J)=XMIN+(XMAX-XMIN)*(J-1)/200.0
5624 XDD=XX(I,J)
5625 RR(I,J)=GAUSS1(FHB,XMIN,XDD,0.001)/FNORM
5626100 CONTINUE
5627 RETURN
5628 END
5629C
5630C
5631C
5632 FUNCTION HIRND(I)
5633 COMMON/HIJHB/RR(10,201),XX(10,201)
5634cc SAVE /HIJHB/
5635 COMMON/RNDF77/NSEED
5636cc SAVE /RNDF77/
5637 SAVE
5638 RX=RANART(NSEED)
5639 JL=0
5640 JU=202
564110 IF(JU-JL.GT.1) THEN
5642 JM=(JU+JL)/2
5643 IF((RR(I,201).GT.RR(I,1)).EQV.(RX.GT.RR(I,JM))) THEN
5644 JL=JM
5645 ELSE
5646 JU=JM
5647 ENDIF
5648 GO TO 10
5649 ENDIF
5650 J=JL
5651 IF(J.LT.1) J=1
5652 IF(J.GE.201) J=200
5653 HIRND=(XX(I,J)+XX(I,J+1))/2.0
5654 RETURN
5655 END
5656C
5657C
5658C
5659C
5660C This generate random number between XMIN and XMAX
5661 FUNCTION HIRND2(I,XMIN,XMAX)
5662 COMMON/HIJHB/RR(10,201),XX(10,201)
5663cc SAVE /HIJHB/
5664 COMMON/RNDF77/NSEED
5665cc SAVE /RNDF77/
5666 SAVE
5667 IF(XMIN.LT.XX(I,1)) XMIN=XX(I,1)
5668 IF(XMAX.GT.XX(I,201)) XMAX=XX(I,201)
5669 JMIN=1+int(200*(XMIN-XX(I,1))/(XX(I,201)-XX(I,1)))
5670 JMAX=1+int(200*(XMAX-XX(I,1))/(XX(I,201)-XX(I,1)))
5671 RX=RR(I,JMIN)+(RR(I,JMAX)-RR(I,JMIN))*RANART(NSEED)
5672 JL=0
5673 JU=202
567410 IF(JU-JL.GT.1) THEN
5675 JM=(JU+JL)/2
5676 IF((RR(I,201).GT.RR(I,1)).EQV.(RX.GT.RR(I,JM))) THEN
5677 JL=JM
5678 ELSE
5679 JU=JM
5680 ENDIF
5681 GO TO 10
5682 ENDIF
5683 J=JL
5684 IF(J.LT.1) J=1
5685 IF(J.GE.201) J=200
5686 HIRND2=(XX(I,J)+XX(I,J+1))/2.0
5687 RETURN
5688 END
5689C
5690C
5691C
5692C
5693 SUBROUTINE HIJCRS
5694C THIS IS TO CALCULATE THE CROSS SECTIONS OF JET PRODUCTION AND
5695C THE TOTAL INELASTIC CROSS SECTIONS.
5696 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
5697cc SAVE /HPARNT/
5698 COMMON/NJET/N,ipcrs
5699cc SAVE /NJET/
5700 EXTERNAL FHIN,FTOT,FNJET,FTOTJT,FTOTRG
5701 SAVE
5702 IF(HINT1(1).GE.10.0) CALL CRSJET
5703C ********calculate jet cross section(in mb)
5704C
5705 APHX1=HIPR1(6)*(IHNT2(1)**0.3333333-1.0)
5706 APHX2=HIPR1(6)*(IHNT2(3)**0.3333333-1.0)
5707 HINT1(11)=HINT1(14)-APHX1*HINT1(15)
5708 & -APHX2*HINT1(16)+APHX1*APHX2*HINT1(17)
5709 HINT1(10)=GAUSS1(FTOTJT,0.0,20.0,0.01)
5710 HINT1(12)=GAUSS1(FHIN,0.0,20.0,0.01)
5711 HINT1(13)=GAUSS1(FTOT,0.0,20.0,0.01)
5712 HINT1(60)=HINT1(61)-APHX1*HINT1(62)
5713 & -APHX2*HINT1(63)+APHX1*APHX2*HINT1(64)
5714 HINT1(59)=GAUSS1(FTOTRG,0.0,20.0,0.01)
5715 IF(HINT1(59).EQ.0.0) HINT1(59)=HINT1(60)
5716 IF(HINT1(1).GE.10.0) Then
5717 DO 20 I=0,20
5718 N=I
5719 HINT1(80+I)=GAUSS1(FNJET,0.0,20.0,0.01)/HINT1(12)
5720 20 CONTINUE
5721 ENDIF
5722 HINT1(10)=HINT1(10)*HIPR1(31)
5723 HINT1(12)=HINT1(12)*HIPR1(31)
5724 HINT1(13)=HINT1(13)*HIPR1(31)
5725 HINT1(59)=HINT1(59)*HIPR1(31)
5726C ********Total and Inel cross section are calculated
5727C by Gaussian integration.
5728 IF(IHPR2(13).NE.0) THEN
5729 HIPR1(33)=1.36*(1.0+36.0/HINT1(1)**2)
5730 & *ALOG(0.6+0.1*HINT1(1)**2)
5731 HIPR1(33)=HIPR1(33)/HINT1(12)
5732 ENDIF
5733C ********Parametrized cross section for single
5734C diffractive reaction(Goulianos)
5735 RETURN
5736 END
5737C
5738C
5739C
5740C
5741 FUNCTION FTOT(X)
5742 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
5743cc SAVE /HPARNT/
5744 SAVE
5745 OMG=OMG0(X)*(HIPR1(30)+HINT1(11))/HIPR1(31)/2.0
5746 FTOT=2.0*(1.0-EXP(-OMG))
5747 RETURN
5748 END
5749C
5750C
5751C
5752 FUNCTION FHIN(X)
5753 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
5754cc SAVE /HPARNT/
5755 SAVE
5756 OMG=OMG0(X)*(HIPR1(30)+HINT1(11))/HIPR1(31)/2.0
5757 FHIN=1.0-EXP(-2.0*OMG)
5758 RETURN
5759 END
5760C
5761C
5762C
5763 FUNCTION FTOTJT(X)
5764 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
5765cc SAVE /HPARNT/
5766 SAVE
5767 OMG=OMG0(X)*HINT1(11)/HIPR1(31)/2.0
5768 FTOTJT=1.0-EXP(-2.0*OMG)
5769 RETURN
5770 END
5771C
5772C
5773C
5774 FUNCTION FTOTRG(X)
5775 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
5776cc SAVE /HPARNT/
5777 SAVE
5778 OMG=OMG0(X)*HINT1(60)/HIPR1(31)/2.0
5779 FTOTRG=1.0-EXP(-2.0*OMG)
5780 RETURN
5781 END
5782C
5783C
5784C
5785C
5786 FUNCTION FNJET(X)
5787 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
5788cc SAVE /HPARNT/
5789 COMMON/NJET/N,ipcrs
5790cc SAVE /NJET/
5791 SAVE
5792 OMG1=OMG0(X)*HINT1(11)/HIPR1(31)
5793 C0=EXP(N*ALOG(OMG1)-SGMIN(N+1))
5794 IF(N.EQ.0) C0=1.0-EXP(-2.0*OMG0(X)*HIPR1(30)/HIPR1(31)/2.0)
5795 FNJET=C0*EXP(-OMG1)
5796 RETURN
5797 END
5798C
5799C
5800C
5801C
5802C
5803 FUNCTION SGMIN(N)
5804 SAVE
5805 GA=0.
5806 IF(N.LE.2) GO TO 20
5807 DO 10 I=1,N-1
5808 Z=I
5809 GA=GA+ALOG(Z)
581010 CONTINUE
581120 SGMIN=GA
5812 RETURN
5813 END
5814C
5815C
5816C
5817 FUNCTION OMG0(X)
5818 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
5819cc SAVE /HPARNT/
5820 COMMON /BESEL/X4
5821cc SAVE /BESEL/
5822 EXTERNAL BK
5823 SAVE
5824 X4=HIPR1(32)*SQRT(X)
5825 OMG0=HIPR1(32)**2*GAUSS2(BK,X4,X4+20.0,0.01)/96.0
5826 RETURN
5827 END
5828C
5829C
5830C
5831 FUNCTION ROMG(X)
5832C ********This gives the eikonal function from a table
5833C calculated in the first call
5834 DIMENSION FR(0:1000)
5835clin-10/29/02 unsaved FR causes wrong values for ROMG with f77 compiler:
5836cc SAVE FR
5837 SAVE
5838 DATA I0/0/
5839
5840 IF(I0.NE.0) GO TO 100
5841 DO 50 I=1,1001
5842 XR=(I-1)*0.01
5843 FR(I-1)=OMG0(XR)
584450 CONTINUE
5845100 I0=1
5846 IF(X.GE.10.0) THEN
5847 ROMG=0.0
5848 RETURN
5849 ENDIF
5850 IX=INT(X*100)
5851 ROMG=(FR(IX)*((IX+1)*0.01-X)+FR(IX+1)*(X-IX*0.01))/0.01
5852 RETURN
5853 END
5854C
5855C
5856C
5857 FUNCTION BK(X)
5858 COMMON /BESEL/X4
5859cc SAVE /BESEL/
5860 SAVE
5861 BK=EXP(-X)*(X**2-X4**2)**2.50/15.0
5862 RETURN
5863 END
5864C
5865C
5866C THIS PROGRAM IS TO CALCULATE THE JET CROSS SECTION
5867C THE INTEGRATION IS DONE BY USING VEGAS
5868C
5869 SUBROUTINE CRSJET
5870 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
5871 REAL HIPR1(100),HINT1(100)
5872 COMMON/HPARNT/HIPR1,IHPR2(50),HINT1,IHNT2(50)
5873cc SAVE /HPARNT/
5874 COMMON/NJET/N,ipcrs
5875cc SAVE /NJET/
5876 COMMON/BVEG1/XL(10),XU(10),ACC,NDIM,NCALL,ITMX,NPRN
5877cc SAVE /BVEG1/
5878 COMMON/BVEG2/XI(50,10),SI,SI2,SWGT,SCHI,NDO,IT
5879cc SAVE /BVEG2/
5880 COMMON/BVEG3/F,TI,TSI
5881cc SAVE /BVEG3/
5882 COMMON/SEDVAX/NUM1
5883cc SAVE /SEDVAX/
5884 EXTERNAL FJET,FJETRG
5885 SAVE
5886C
5887c************************
5888c NCALL give the number of inner-iteration, ITMX
5889C gives the limit of out-iteration. Nprn is an option
5890C ( 1: print the integration process. 0: do not print)
5891C
5892 NDIM=3
5893 ipcrs=0
5894 CALL VEGAS(FJET,AVGI,SD,CHI2A)
5895 HINT1(14)=sngl(AVGI)/2.5682
5896 IF(IHPR2(6).EQ.1 .AND. IHNT2(1).GT.1) THEN
5897 ipcrs=1
5898 CALL VEGAS(FJET,AVGI,SD,CHI2A)
5899 HINT1(15)=sngl(AVGI)/2.5682
5900 ENDIF
5901 IF(IHPR2(6).EQ.1 .AND. IHNT2(3).GT.1) THEN
5902 ipcrs=2
5903 CALL VEGAS(FJET,AVGI,SD,CHI2A)
5904 HINT1(16)=sngl(AVGI)/2.5682
5905 ENDIF
5906 IF(IHPR2(6).EQ.1.AND.IHNT2(1).GT.1.AND.IHNT2(3).GT.1) THEN
5907 ipcrs=3
5908 CALL VEGAS(FJET,AVGI,SD,CHI2A)
5909 HINT1(17)=sngl(AVGI)/2.5682
5910 ENDIF
5911C ********Total inclusive jet cross section(Pt>P0)
5912C
5913 IF(IHPR2(3).NE.0) THEN
5914 ipcrs=0
5915 CALL VEGAS(FJETRG,AVGI,SD,CHI2A)
5916 HINT1(61)=sngl(AVGI)/2.5682
5917 IF(IHPR2(6).EQ.1 .AND. IHNT2(1).GT.1) THEN
5918 ipcrs=1
5919 CALL VEGAS(FJETRG,AVGI,SD,CHI2A)
5920 HINT1(62)=sngl(AVGI)/2.5682
5921 ENDIF
5922 IF(IHPR2(6).EQ.1 .AND. IHNT2(3).GT.1) THEN
5923 ipcrs=2
5924 CALL VEGAS(FJETRG,AVGI,SD,CHI2A)
5925 HINT1(63)=sngl(AVGI)/2.5682
5926 ENDIF
5927 IF(IHPR2(6).EQ.1.AND.IHNT2(1).GT.1.AND.IHNT2(3).GT.1) THEN
5928 ipcrs=3
5929 CALL VEGAS(FJETRG,AVGI,SD,CHI2A)
5930 HINT1(64)=sngl(AVGI)/2.5682
5931 ENDIF
5932 ENDIF
5933C ********cross section of trigger jet
5934C
5935 RETURN
5936 END
5937C
5938C
5939C
5940 FUNCTION FJET(X,WGT)
5941 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
5942 REAL HIPR1(100),HINT1(100)
5943 COMMON/HPARNT/HIPR1,IHPR2(50),HINT1,IHNT2(50)
5944cc SAVE /HPARNT/
5945 DIMENSION X(10)
5946 SAVE
5947 WGT=WGT
5948 PT2=dble(HINT1(1)**2/4.0-HIPR1(8)**2)*X(1)+dble(HIPR1(8))**2
5949 XT=2.0d0*DSQRT(PT2)/dble(HINT1(1))
5950 YMX1=DLOG(1.0d0/XT+DSQRT(1.0d0/XT**2-1.0d0))
5951 Y1=2.0d0*YMX1*X(2)-YMX1
5952 YMX2=DLOG(2.0d0/XT-DEXP(Y1))
5953 YMN2=DLOG(2.0d0/XT-DEXP(-Y1))
5954 Y2=(YMX2+YMN2)*X(3)-YMN2
5955 FJET=2.0d0*YMX1*(YMX2+YMN2)*dble(HINT1(1)**2/4.0-HIPR1(8)**2)
5956 & *G(Y1,Y2,PT2)/2.0d0
5957 RETURN
5958 END
5959C
5960C
5961C
5962 FUNCTION FJETRG(X,WGT)
5963 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
5964 REAL HIPR1(100),HINT1(100),PTMAX,PTMIN
5965 COMMON/HPARNT/HIPR1,IHPR2(50),HINT1,IHNT2(50)
5966cc SAVE /HPARNT/
5967 DIMENSION X(10)
5968 SAVE
5969 WGT=WGT
5970 PTMIN=ABS(HIPR1(10))-0.25
5971 PTMIN=MAX(PTMIN,HIPR1(8))
5972 AM2=0.D0
5973 IF(IHPR2(3).EQ.3) THEN
5974 AM2=dble(HIPR1(7)**2)
5975 PTMIN=MAX(0.0,HIPR1(10))
5976 ENDIF
5977 PTMAX=ABS(HIPR1(10))+0.25
5978 IF(HIPR1(10).LE.0.0) PTMAX=HINT1(1)/2.0-sngl(AM2)
5979 IF(PTMAX.LE.PTMIN) PTMAX=PTMIN+0.25
5980 PT2=dble(PTMAX**2-PTMIN**2)*X(1)+dble(PTMIN)**2
5981 AMT2=PT2+AM2
5982 XT=2.0d0*DSQRT(AMT2)/dble(HINT1(1))
5983 YMX1=DLOG(1.0d0/XT+DSQRT(1.0d0/XT**2-1.0d0))
5984 Y1=2.0d0*YMX1*X(2)-YMX1
5985 YMX2=DLOG(2.0d0/XT-DEXP(Y1))
5986 YMN2=DLOG(2.0d0/XT-DEXP(-Y1))
5987 Y2=(YMX2+YMN2)*X(3)-YMN2
5988 IF(IHPR2(3).EQ.3) THEN
5989 GTRIG=2.0d0*GHVQ(Y1,Y2,AMT2)
5990 ELSE IF(IHPR2(3).EQ.2) THEN
5991 GTRIG=2.0d0*GPHOTN(Y1,Y2,PT2)
5992 ELSE
5993 GTRIG=G(Y1,Y2,PT2)
5994 ENDIF
5995 FJETRG=2.0d0*YMX1*(YMX2+YMN2)*dble(PTMAX**2-PTMIN**2)
5996 & *GTRIG/2.0d0
5997 RETURN
5998 END
5999C
6000C
6001C
6002 FUNCTION GHVQ(Y1,Y2,AMT2)
6003 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
6004 REAL HIPR1(100),HINT1(100)
6005 COMMON/HPARNT/HIPR1,IHPR2(50),HINT1,IHNT2(50)
6006cc SAVE /HPARNT/
6007 DIMENSION F(2,7)
6008 SAVE
6009 XT=2.0d0*DSQRT(AMT2)/dble(HINT1(1))
6010 X1=0.5d0*XT*(DEXP(Y1)+DEXP(Y2))
6011 X2=0.5d0*XT*(DEXP(-Y1)+DEXP(-Y2))
6012 SS=X1*X2*dble(HINT1(1))**2
6013 AF=4.0d0
6014 IF(IHPR2(18).NE.0) AF=5.0d0
6015 DLAM=dble(HIPR1(15))
6016 APH=12.0d0*3.1415926d0/(33.d0-2.d0*AF)/DLOG(AMT2/DLAM**2)
6017C
6018 CALL PARTON(F,X1,X2,AMT2)
6019C
6020 Gqq=4.d0*(DCOSH(Y1-Y2)+dble(HIPR1(7))**2/AMT2)
6021 & /(1.D0+DCOSH(Y1-Y2))
6022 & /9.d0*(F(1,1)*F(2,2)+F(1,2)*F(2,1)+F(1,3)*F(2,4)
6023 & +F(1,4)*F(2,3)+F(1,5)*F(2,6)+F(1,6)*F(2,5))
6024 Ggg=(8.D0*DCOSH(Y1-Y2)-1.D0)
6025 & *(DCOSH(Y1-Y2)+2.d0*dble(HIPR1(7))**2
6026 & /AMT2-2.d0*dble(HIPR1(7))**4/AMT2**2)/(1.d0+DCOSH(Y1-Y2))
6027 & /24.d0*F(1,7)*F(2,7)
6028C
6029 GHVQ=(Gqq+Ggg)*dble(HIPR1(23))*3.14159d0*APH**2/SS**2
6030 RETURN
6031 END
6032C
6033C
6034C
6035 FUNCTION GPHOTN(Y1,Y2,PT2)
6036 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
6037 REAL HIPR1(100),HINT1(100)
6038 COMMON/HPARNT/HIPR1,IHPR2(50),HINT1,IHNT2(50)
6039cc SAVE /HPARNT/
6040 DIMENSION F(2,7)
6041 SAVE
6042 XT=2.d0*DSQRT(PT2)/dble(HINT1(1))
6043 X1=0.5d0*XT*(DEXP(Y1)+DEXP(Y2))
6044 X2=0.5d0*XT*(DEXP(-Y1)+DEXP(-Y2))
6045 Z=DSQRT(1.D0-XT**2/X1/X2)
6046 SS=X1*X2*dble(HINT1(1))**2
6047 T=-(1.d0-Z)/2.d0
6048 U=-(1.d0+Z)/2.d0
6049 AF=3.d0
6050 DLAM=dble(HIPR1(15))
6051 APH=12.d0*3.1415926d0/(33.d0-2.d0*AF)/DLOG(PT2/DLAM**2)
6052 APHEM=1.d0/137.d0
6053C
6054 CALL PARTON(F,X1,X2,PT2)
6055C
6056 G11=-(U**2+1.d0)/U/3.d0*F(1,7)*(4.d0*F(2,1)+4.d0*F(2,2)
6057 & +F(2,3)+F(2,4)+F(2,5)+F(2,6))/9.d0
6058 G12=-(T**2+1.d0)/T/3.d0*F(2,7)*(4.d0*F(1,1)+4.d0*F(1,2)
6059 & +F(1,3)+F(1,4)+F(1,5)+F(1,6))/9.d0
6060 G2=8.d0*(U**2+T**2)/U/T/9.d0*(4.d0*F(1,1)*F(2,2)
6061 & +4.d0*F(1,2)*F(2,1)+F(1,3)*F(2,4)+F(1,4)*F(2,3)
6062 & +F(1,5)*F(2,6)+F(1,6)*F(2,5))/9.d0
6063C
6064 GPHOTN=(G11+G12+G2)*dble(HIPR1(23))*3.14159d0*APH*APHEM/SS**2
6065 RETURN
6066 END
6067C
6068C
6069C
6070C
6071 FUNCTION G(Y1,Y2,PT2)
6072 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
6073 REAL HIPR1(100),HINT1(100)
6074 COMMON/HPARNT/HIPR1,IHPR2(50),HINT1,IHNT2(50)
6075cc SAVE /HPARNT/
6076 DIMENSION F(2,7)
6077 SAVE
6078 XT=2.d0*DSQRT(PT2)/dble(HINT1(1))
6079 X1=0.5d0*XT*(DEXP(Y1)+DEXP(Y2))
6080 X2=0.5d0*XT*(DEXP(-Y1)+DEXP(-Y2))
6081 Z=DSQRT(1.D0-XT**2/X1/X2)
6082 SS=X1*X2*dble(HINT1(1))**2
6083 T=-(1.d0-Z)/2.d0
6084 U=-(1.d0+Z)/2.d0
6085 AF=3.d0
6086 DLAM=dble(HIPR1(15))
6087 APH=12.d0*3.1415926d0/(33.d0-2.d0*AF)/DLOG(PT2/DLAM**2)
6088C
6089 CALL PARTON(F,X1,X2,PT2)
6090C
6091 G11=( (F(1,1)+F(1,2))*(F(2,3)+F(2,4)+F(2,5)+F(2,6))
6092 & +(F(1,3)+F(1,4))*(F(2,5)+F(2,6)) )*SUBCR1(T,U)
6093C
6094 G12=( (F(2,1)+F(2,2))*(F(1,3)+F(1,4)+F(1,5)+F(1,6))
6095 & +(F(2,3)+F(2,4))*(F(1,5)+F(1,6)) )*SUBCR1(U,T)
6096C
6097 G13=(F(1,1)*F(2,1)+F(1,2)*F(2,2)+F(1,3)*F(2,3)+F(1,4)*F(2,4)
6098 & +F(1,5)*F(2,5)+F(1,6)*F(2,6))*(SUBCR1(U,T)
6099 & +SUBCR1(T,U)-8.D0/T/U/27.D0)
6100C
6101 G2=(AF-1)*(F(1,1)*F(2,2)+F(2,1)*F(1,2)+F(1,3)*F(2,4)
6102 & +F(2,3)*F(1,4)+F(1,5)*F(2,6)+F(2,5)*F(1,6))*SUBCR2(T,U)
6103C
6104 G31=(F(1,1)*F(2,2)+F(1,3)*F(2,4)+F(1,5)*F(2,6))*SUBCR3(T,U)
6105 G32=(F(2,1)*F(1,2)+F(2,3)*F(1,4)+F(2,5)*F(1,6))*SUBCR3(U,T)
6106C
6107 G4=(F(1,1)*F(2,2)+F(2,1)*F(1,2)+F(1,3)*F(2,4)+F(2,3)*F(1,4)+
6108 1 F(1,5)*F(2,6)+F(2,5)*F(1,6))*SUBCR4(T,U)
6109C
6110 G5=AF*F(1,7)*F(2,7)*SUBCR5(T,U)
6111C
6112 G61=F(1,7)*(F(2,1)+F(2,2)+F(2,3)+F(2,4)+F(2,5)
6113 & +F(2,6))*SUBCR6(T,U)
6114 G62=F(2,7)*(F(1,1)+F(1,2)+F(1,3)+F(1,4)+F(1,5)
6115 & +F(1,6))*SUBCR6(U,T)
6116C
6117 G7=F(1,7)*F(2,7)*SUBCR7(T,U)
6118C
6119 G=(G11+G12+G13+G2+G31+G32+G4+G5+G61+G62+G7)*dble(HIPR1(17))*
6120 1 3.14159D0*APH**2/SS**2
6121 RETURN
6122 END
6123C
6124C
6125C
6126 FUNCTION SUBCR1(T,U)
6127 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
6128 SUBCR1=4.D0/9.D0*(1.D0+U**2)/T**2
6129 RETURN
6130 END
6131C
6132C
6133 FUNCTION SUBCR2(T,U)
6134 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
6135 SUBCR2=4.D0/9.D0*(T**2+U**2)
6136 RETURN
6137 END
6138C
6139C
6140 FUNCTION SUBCR3(T,U)
6141 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
6142 SUBCR3=4.D0/9.D0*(T**2+U**2+(1.D0+U**2)/T**2
6143 1 -2.D0*U**2/3.D0/T)
6144 RETURN
6145 END
6146C
6147C
6148 FUNCTION SUBCR4(T,U)
6149 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
6150 SUBCR4=8.D0/3.D0*(T**2+U**2)*(4.D0/9.D0/T/U-1.D0)
6151 RETURN
6152 END
6153C
6154C
6155C
6156 FUNCTION SUBCR5(T,U)
6157 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
6158 SUBCR5=3.D0/8.D0*(T**2+U**2)*(4.D0/9.D0/T/U-1.D0)
6159 RETURN
6160 END
6161C
6162C
6163 FUNCTION SUBCR6(T,U)
6164 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
6165 SUBCR6=(1.D0+U**2)*(1.D0/T**2-4.D0/U/9.D0)
6166 RETURN
6167 END
6168C
6169C
6170 FUNCTION SUBCR7(T,U)
6171 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
6172 SUBCR7=9.D0/2.D0*(3.D0-T*U-U/T**2-T/U**2)
6173 RETURN
6174 END
6175C
6176C
6177C
6178 SUBROUTINE PARTON(F,X1,X2,QQ)
6179 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
6180 REAL HIPR1(100),HINT1(100)
6181 COMMON/HPARNT/HIPR1,IHPR2(50),HINT1,IHNT2(50)
6182cc SAVE /HPARNT/
6183 COMMON/NJET/N,ipcrs
6184cc SAVE /NJET/
6185 DIMENSION F(2,7)
6186 SAVE
6187 DLAM=dble(HIPR1(15))
6188 Q0=dble(HIPR1(16))
6189 S=DLOG(DLOG(QQ/DLAM**2)/DLOG(Q0**2/DLAM**2))
6190 IF(IHPR2(7).EQ.2) GO TO 200
6191C*******************************************************
6192 AT1=0.419d0+0.004d0*S-0.007d0*S**2
6193 AT2=3.460d0+0.724d0*S-0.066d0*S**2
6194 GMUD=4.40d0-4.86d0*S+1.33d0*S**2
6195 AT3=0.763d0-0.237d0*S+0.026d0*S**2
6196 AT4=4.00d0+0.627d0*S-0.019d0*S**2
6197 GMD=-0.421d0*S+0.033d0*S**2
6198C*******************************************************
6199 CAS=1.265d0-1.132d0*S+0.293d0*S**2
6200 AS=-0.372d0*S-0.029d0*S**2
6201 BS=8.05d0+1.59d0*S-0.153d0*S**2
6202 APHS=6.31d0*S-0.273d0*S**2
6203 BTAS=-10.5d0*S-3.17d0*S**2
6204 GMS=14.7d0*S+9.80d0*S**2
6205C********************************************************
6206C CAC=0.135*S-0.075*S**2
6207C AC=-0.036-0.222*S-0.058*S**2
6208C BC=6.35+3.26*S-0.909*S**2
6209C APHC=-3.03*S+1.50*S**2
6210C BTAC=17.4*S-11.3*S**2
6211C GMC=-17.9*S+15.6*S**2
6212C***********************************************************
6213 CAG=1.56d0-1.71d0*S+0.638d0*S**2
6214 AG=-0.949d0*S+0.325d0*S**2
6215 BG=6.0d0+1.44d0*S-1.05d0*S**2
6216 APHG=9.0d0-7.19d0*S+0.255d0*S**2
6217 BTAG=-16.5d0*S+10.9d0*S**2
6218 GMG=15.3d0*S-10.1d0*S**2
6219 GO TO 300
6220C********************************************************
6221200 AT1=0.374d0+0.014d0*S
6222 AT2=3.33d0+0.753d0*S-0.076d0*S**2
6223 GMUD=6.03d0-6.22d0*S+1.56d0*S**2
6224 AT3=0.761d0-0.232d0*S+0.023d0*S**2
6225 AT4=3.83d0+0.627d0*S-0.019d0*S**2
6226 GMD=-0.418d0*S+0.036d0*S**2
6227C************************************
6228 CAS=1.67d0-1.92d0*S+0.582d0*S**2
6229 AS=-0.273d0*S-0.164d0*S**2
6230 BS=9.15d0+0.530d0*S-0.763d0*S**2
6231 APHS=15.7d0*S-2.83d0*S**2
6232 BTAS=-101.0d0*S+44.7d0*S**2
6233 GMS=223.0d0*S-117.0d0*S**2
6234C*********************************
6235C CAC=0.067*S-0.031*S**2
6236C AC=-0.120-0.233*S-0.023*S**2
6237C BC=3.51+3.66*S-0.453*S**2
6238C APHC=-0.474*S+0.358*S**2
6239C BTAC=9.50*S-5.43*S**2
6240C GMC=-16.6*S+15.5*S**2
6241C**********************************
6242 CAG=0.879d0-0.971d0*S+0.434d0*S**2
6243 AG=-1.16d0*S+0.476d0*S**2
6244 BG=4.0d0+1.23d0*S-0.254d0*S**2
6245 APHG=9.0d0-5.64d0*S-0.817d0*S**2
6246 BTAG=-7.54d0*S+5.50d0*S**2
6247 GMG=-0.596d0*S+1.26d0*S**2
6248C*********************************
6249300 B12=DEXP(GMRE(AT1)+GMRE(AT2+1.D0)-GMRE(AT1+AT2+1.D0))
6250 B34=DEXP(GMRE(AT3)+GMRE(AT4+1.D0)-GMRE(AT3+AT4+1.D0))
6251 CNUD=3.D0/B12/(1.D0+GMUD*AT1/(AT1+AT2+1.D0))
6252 CND=1.D0/B34/(1.D0+GMD*AT3/(AT3+AT4+1.D0))
6253C********************************************************
6254C FUD=X*(U+D)
6255C FS=X*2(UBAR+DBAR+SBAR) AND UBAR=DBAR=SBAR
6256C*******************************************************
6257 FUD1=CNUD*X1**AT1*(1.D0-X1)**AT2*(1.D0+GMUD*X1)
6258 FS1=CAS*X1**AS*(1.D0-X1)**BS*(1.D0+APHS*X1
6259 & +BTAS*X1**2+GMS*X1**3)
6260 F(1,3)=CND*X1**AT3*(1.D0-X1)**AT4*(1.D0+GMD*X1)+FS1/6.D0
6261 F(1,1)=FUD1-F(1,3)+FS1/3.D0
6262 F(1,2)=FS1/6.D0
6263 F(1,4)=FS1/6.D0
6264 F(1,5)=FS1/6.D0
6265 F(1,6)=FS1/6.D0
6266 F(1,7)=CAG*X1**AG*(1.D0-X1)**BG*(1.D0+APHG*X1
6267 & +BTAG*X1**2+GMG*X1**3)
6268C
6269 FUD2=CNUD*X2**AT1*(1.D0-X2)**AT2*(1.D0+GMUD*X2)
6270 FS2=CAS*X2**AS*(1.D0-X2)**BS*(1.D0+APHS*X2
6271 & +BTAS*X2**2+GMS*X2**3)
6272 F(2,3)=CND*X2**AT3*(1.D0-X2)**AT4*(1.D0+GMD*X2)+FS2/6.D0
6273 F(2,1)=FUD2-F(2,3)+FS2/3.D0
6274 F(2,2)=FS2/6.D0
6275 F(2,4)=FS2/6.D0
6276 F(2,5)=FS2/6.D0
6277 F(2,6)=FS2/6.D0
6278 F(2,7)=CAG*X2**AG*(1.D0-X2)**BG*(1.D0+APHG*X2
6279 & +BTAG*X2**2+GMG*X2**3)
6280C***********Nuclear effect on the structure function****************
6281C
6282 IF(IHPR2(6).EQ.1 .AND. IHNT2(1).GT.1) THEN
6283 AAX=1.193d0*dble(ALOG(FLOAT(IHNT2(1)))**0.16666666)
6284 RRX=AAX*(X1**3-1.2d0*X1**2+0.21d0*X1)+1.d0
6285 & +dble(1.079*(FLOAT(IHNT2(1))**0.33333333-1.0))
6286 & /dble(ALOG(float(IHNT2(1))+1.0))*DSQRT(X1)
6287 & *DEXP(-X1**2/0.01d0)
6288c & /DLOG(IHNT2(1)+1.0D0)*(DSQRT(X1)*DEXP(-X1**2/0.01)
6289 IF(ipcrs.EQ.1 .OR.ipcrs.EQ.3) RRX=DEXP(-X1**2/0.01d0)
6290 DO 400 I=1,7
6291 F(1,I)=RRX*F(1,I)
6292 400 CONTINUE
6293 ENDIF
6294 IF(IHPR2(6).EQ.1 .AND. IHNT2(3).GT.1) THEN
6295 AAX=1.193d0*dble(ALOG(FLOAT(IHNT2(3)))**0.16666666)
6296 RRX=AAX*(X2**3-1.2d0*X2**2+0.21d0*X2)+1.d0
6297 & +dble(1.079*(FLOAT(IHNT2(3))**0.33333-1.0))
6298 & /dble(ALOG(float(IHNT2(3))+1.0))*DSQRT(X2)
6299 & *DEXP(-X2**2/0.01d0)
6300c & /DLOG(IHNT2(3)+1.0D0)*DSQRT(X2)*DEXP(-X2**2/0.01)
6301 IF(ipcrs.EQ.2 .OR. ipcrs.EQ.3) RRX=DEXP(-X2**2/0.01d0)
6302 DO 500 I=1,7
6303 F(2,I)=RRX*F(2,I)
6304 500 CONTINUE
6305 ENDIF
6306c
6307 RETURN
6308 END
6309C
6310C
6311C
6312 FUNCTION GMRE(X)
6313 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
6314 SAVE
6315 Z=X
6316 IF(X.GT.3.0D0) GO TO 10
6317 Z=X+3.D0
631810 GMRE=0.5D0*DLOG(2.D0*3.14159265D0/Z)+Z*DLOG(Z)-Z+DLOG(1.D0
6319 1 +1.D0/12.D0/Z+1.D0/288.D0/Z**2-139.D0/51840.D0/Z**3
6320 1 -571.D0/2488320.D0/Z**4)
6321 IF(Z.EQ.X) GO TO 20
6322 GMRE=GMRE-DLOG(Z-1.D0)-DLOG(Z-2.D0)-DLOG(Z-3.D0)
632320 CONTINUE
6324 RETURN
6325 END
6326c
6327C
6328C
6329C***************************************************************
6330
6331 BLOCK DATA HIDATA
6332 PARAMETER (MAXSTR=150001)
6333 DOUBLE PRECISION XL(10),XU(10),ACC
6334 COMMON/BVEG1/XL,XU,ACC,NDIM,NCALL,ITMX,NPRN
6335cc SAVE /BVEG1/
6336 COMMON/SEDVAX/NUM1
6337cc SAVE /SEDVAX/
6338 COMMON/HPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
6339cc SAVE /HPARNT/
6340 COMMON/HMAIN1/EATT,JATT,NATT,NT,NP,N0,N01,N10,N11
6341cc SAVE /HMAIN1/
6342 COMMON/HMAIN2/KATT(MAXSTR,4),PATT(MAXSTR,4)
6343cc SAVE /HMAIN2/
6344 COMMON/HSTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
6345cc SAVE /HSTRNG/
6346 COMMON/hjcrdn/YP(3,300),YT(3,300)
6347cc SAVE /hjcrdn/
6348 COMMON/HJJET1/NPJ(300),KFPJ(300,500),PJPX(300,500),
6349 & PJPY(300,500),PJPZ(300,500),PJPE(300,500),
6350 & PJPM(300,500),NTJ(300),KFTJ(300,500),
6351 & PJTX(300,500),PJTY(300,500),PJTZ(300,500),
6352 & PJTE(300,500),PJTM(300,500)
6353cc SAVE /HJJET1/
6354 COMMON/HJJET2/NSG,NJSG(MAXSTR),IASG(MAXSTR,3),K1SG(MAXSTR,100),
6355 & K2SG(MAXSTR,100),PXSG(MAXSTR,100),PYSG(MAXSTR,100),
6356 & PZSG(MAXSTR,100),PESG(MAXSTR,100),PMSG(MAXSTR,100)
6357cc SAVE /HJJET2/
6358 COMMON/HIJDAT/HIDAT0(10,10),HIDAT(10)
6359cc SAVE /HIJDAT/
6360 COMMON/HPINT/MINT4,MINT5,ATCO(200,20),ATXS(0:200)
6361cc SAVE /HPINT/
6362cwei DOUBLE PRECISION PATT
6363 SAVE
6364 DATA NUM1/30123984/,XL/10*0.D0/,XU/10*1.D0/
6365 DATA NCALL/1000/,ITMX/100/,ACC/0.01/,NPRN/0/
6366C...give all the switchs and parameters the default values
6367clin-4/2008 input.ampt provides NSEED for AMPT:
6368c DATA NSEED/74769375/
6369 DATA HIPR1/
6370 & 1.5, 0.35, 0.5, 0.9, 2.0, 0.1, 1.5, 2.0, -1.0, -2.25,
6371 & 2.0, 0.5, 1.0, 2.0, 0.2, 2.0, 2.5, 0.3, 0.1, 1.4,
6372 & 1.6, 1.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.4, 57.0,
6373 & 28.5, 3.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6374 & 3.14159,
6375 & 0.0, 0.4, 0.1, 1.5, 0.1, 0.25, 0.0, 0.5, 0.0, 0.0,
6376 & 50*0.0/
6377
6378 DATA IHPR2/
6379 & 1, 3, 0, 1, 1, 1, 1, 10, 0, 0,
6380 & 1, 1, 1, 1, 0, 0, 1, 0, 0, 1,
6381 & 30*0/
6382
6383 DATA HINT1/100*0/
6384 DATA IHNT2/50*0/
6385
6386C...initialize all the data common blocks
6387 DATA NATT/0/,EATT/0.0/,JATT/0/,NT/0/,NP/0/,
6388 1 N0/0/,N01/0/,N10/0/,N11/0/
6389clin-4/26/01
6390c DATA KATT/520000*0/PATT/520000*0.0/
6391 DATA KATT/600004*0/,PATT/600004*0.0/
6392
6393 DATA NFP/4500*0/,PP/4500*0.0/,NFT/4500*0/,PT/4500*0.0/
6394
6395 DATA YP/900*0.0/,YT/900*0.0/
6396
6397 DATA NPJ/300*0/,KFPJ/150000*0/,PJPX/150000*0.0/,PJPY/150000*0.0/
6398 & ,PJPZ/150000*0.0/,PJPE/150000*0.0/,PJPM/150000*0.0/
6399 DATA NTJ/300*0/,KFTJ/150000*0/,PJTX/150000*0.0/,PJTY/150000*0.0/
6400 & ,PJTZ/150000*0.0/,PJTE/150000*0.0/,PJTM/150000*0.0/
6401
6402clin-4/2008
6403c DATA NSG/0/,NJSG/900*0/,IASG/2700*0/,K1SG/90000*0/,K2SG/90000*0/
6404c & ,PXSG/90000*0.0/,PYSG/90000*0.0/,PZSG/90000*0.0/
6405c & ,PESG/90000*0.0/,PMSG/90000*0.0/
6406 DATA NSG/0/,NJSG/150001*0/,IASG/450003*0/,
6407 & K1SG/15000100*0/,K2SG/15000100*0/,
6408 & PXSG/15000100*0.0/,PYSG/15000100*0.0/,PZSG/15000100*0.0/,
6409 & PESG/15000100*0.0/,PMSG/15000100*0.0/
6410 DATA MINT4/0/,MINT5/0/,ATCO/4000*0.0/,ATXS/201*0.0/
6411 DATA (HIDAT0(1,I),I=1,10)/0.0,0.0,0.0,0.0,0.0,0.0,2.25,
6412 & 2.5,4.0,4.1/
6413 DATA (HIDAT0(2,I),I=1,10)/2.0,3.0,5.0,6.0,7.0,8.0,8.0,10.0,
6414 & 10.0,10.0/
6415 DATA (HIDAT0(3,I),I=1,10)/1.0,0.8,0.8,0.7,0.45,0.215,
6416 & 0.21,0.19,0.19,0.19/
6417 DATA (HIDAT0(4,I),I=1,10)/0.35,0.35,0.3,0.3,0.3,0.3,
6418 & 0.5,0.6,0.6,0.6/
6419 DATA (HIDAT0(5,I),I=1,10)/23.8,24.0,26.0,26.2,27.0,28.5,28.5,
6420 & 28.5,28.5,28.5/
6421 DATA ((HIDAT0(J,I),I=1,10),J=6,9)/40*0.0/
6422 DATA (HIDAT0(10,I),I=1,10)/5.0,20.0,53.0,62.0,100.0,200.0,
6423 & 546.0,900.0,1800.0,4000.0/
6424 DATA HIDAT/10*0.0/
6425 END
6426C*******************************************************************
6427C
6428C
6429C
6430C
6431C*******************************************************************
6432C SUBROUTINE PERFORMS N-DIMENSIONAL MONTE CARLO INTEG'N
6433C - BY G.P. LEPAGE SEPT 1976/(REV)APR 1978
6434C*******************************************************************
6435C
6436 SUBROUTINE VEGAS(FXN,AVGI,SD,CHI2A)
6437 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
6438 COMMON/BVEG1/XL(10),XU(10),ACC,NDIM,NCALL,ITMX,NPRN
6439cc SAVE /BVEG1/
6440 COMMON/BVEG2/XI(50,10),SI,SI2,SWGT,SCHI,NDO,IT
6441cc SAVE /BVEG2/
6442 COMMON/BVEG3/F,TI,TSI
6443cc SAVE /BVEG3/
6444 EXTERNAL FXN
6445 DIMENSION D(50,10),DI(50,10),XIN(50),R(50),DX(10),DT(10),X(10)
6446 1 ,KG(10),IA(10)
6447c REAL*4 QRAN(10)
6448 REAL QRAN(10)
6449 SAVE
6450 DATA NDMX/50/,ALPH/1.5D0/,ONE/1.D0/,MDS/-1/
6451C
6452 NDO=1
6453 DO 1 J=1,NDIM
64541 XI(1,J)=ONE
6455C
6456 ENTRY VEGAS1(FXN,AVGI,SD,CHI2A)
6457C - INITIALIZES CUMMULATIVE VARIABLES, BUT NOT GRID
6458 IT=0
6459 SI=0.d0
6460 SI2=SI
6461 SWGT=SI
6462 SCHI=SI
6463C
6464 ENTRY VEGAS2(FXN,AVGI,SD,CHI2A)
6465C - NO INITIALIZATION
6466 ND=NDMX
6467 NG=1
6468 IF(MDS.EQ.0) GO TO 2
6469 NG=int((real(NCALL)/2.)**(1./real(NDIM)))
6470 MDS=1
6471 IF((2*NG-NDMX).LT.0) GO TO 2
6472 MDS=-1
6473 NPG=NG/NDMX+1
6474 ND=NG/NPG
6475 NG=NPG*ND
64762 K=NG**NDIM
6477 NPG=NCALL/K
6478 IF(NPG.LT.2) NPG=2
6479 CALLS=NPG*K
6480 DXG=ONE/NG
6481 DV2G=(CALLS*DXG**NDIM)**2/NPG/NPG/(NPG-ONE)
6482 XND=ND
6483 NDM=ND-1
6484 DXG=DXG*XND
6485 XJAC=ONE/CALLS
6486 DO 3 J=1,NDIM
6487c***this is the line 50
6488 DX(J)=XU(J)-XL(J)
64893 XJAC=XJAC*DX(J)
6490C
6491C REBIN PRESERVING BIN DENSITY
6492C
6493 IF(ND.EQ.NDO) GO TO 8
6494 RC=NDO/XND
6495 DO 7 J=1,NDIM
6496 K=0
6497 XN=0.d0
6498 DR=XN
6499 I=K
65004 K=K+1
6501 DR=DR+ONE
6502 XO=XN
6503 XN=XI(K,J)
65045 IF(RC.GT.DR) GO TO 4
6505 I=I+1
6506 DR=DR-RC
6507 XIN(I)=XN-(XN-XO)*DR
6508 IF(I.LT.NDM) GO TO 5
6509 DO 6 I=1,NDM
65106 XI(I,J)=XIN(I)
65117 XI(ND,J)=ONE
6512 NDO=ND
6513C
65148 CONTINUE
6515c IF(NPRN.NE.0) WRITE(16,200) NDIM,CALLS,IT,ITMX,ACC,MDS,ND
6516c 1 ,(XL(J),XU(J),J=1,NDIM)
6517C
6518 ENTRY VEGAS3(FXN,AVGI,SD,CHI2A)
6519C - MAIN INTEGRATION LOOP
65209 IT=IT+1
6521 TI=0.d0
6522 TSI=TI
6523 DO 10 J=1,NDIM
6524 KG(J)=1
6525 DO 10 I=1,ND
6526 D(I,J)=TI
652710 DI(I,J)=TI
6528C
652911 FB=0.d0
6530 F2B=FB
6531 K=0
653212 K=K+1
6533 CALL ARAN9(QRAN,NDIM)
6534 WGT=XJAC
6535 DO 15 J=1,NDIM
6536 XN=dble(float(KG(J))-QRAN(J))*DXG+ONE
6537c*****this is the line 100
6538 IA(J)=int(XN)
6539 IF(IA(J).GT.1) GO TO 13
6540 XO=XI(IA(J),J)
6541 RC=(XN-IA(J))*XO
6542 GO TO 14
654313 XO=XI(IA(J),J)-XI(IA(J)-1,J)
6544 RC=XI(IA(J)-1,J)+(XN-IA(J))*XO
654514 X(J)=XL(J)+RC*DX(J)
6546 WGT=WGT*XO*XND
654715 CONTINUE
6548C
6549 F=WGT
6550 F=F*FXN(X,WGT)
6551 F2=F*F
6552 FB=FB+F
6553 F2B=F2B+F2
6554 DO 16 J=1,NDIM
6555 DI(IA(J),J)=DI(IA(J),J)+F
655616 IF(MDS.GE.0) D(IA(J),J)=D(IA(J),J)+F2
6557 IF(K.LT.NPG) GO TO 12
6558C
6559 F2B=DSQRT(F2B*NPG)
6560 F2B=(F2B-FB)*(F2B+FB)
6561 TI=TI+FB
6562 TSI=TSI+F2B
6563 IF(MDS.GE.0) GO TO 18
6564 DO 17 J=1,NDIM
656517 D(IA(J),J)=D(IA(J),J)+F2B
656618 K=NDIM
656719 KG(K)=MOD(KG(K),NG)+1
6568 IF(KG(K).NE.1) GO TO 11
6569 K=K-1
6570 IF(K.GT.0) GO TO 19
6571C
6572C FINAL RESULTS FOR THIS ITERATION
6573C
6574 TSI=TSI*DV2G
6575 TI2=TI*TI
6576 WGT=TI2/(TSI+1.0d-37)
6577 SI=SI+TI*WGT
6578 SI2=SI2+TI2
6579 SWGT=SWGT+WGT
6580 SWGT=SWGT+1.0D-37
6581 SI2=SI2+1.0D-37
6582 SCHI=SCHI+TI2*WGT
6583 AVGI=SI/SWGT
6584 SD=SWGT*IT/SI2
6585 CHI2A=SD*(SCHI/SWGT-AVGI*AVGI)/dble(float(IT)-.999)
6586 SD=DSQRT(ONE/SD)
6587C****this is the line 150
6588 IF(NPRN.EQ.0) GO TO 21
6589 TSI=DSQRT(TSI)
6590c WRITE(16,201) IT,TI,TSI,AVGI,SD,CHI2A
6591c IF(NPRN.GE.0) GO TO 21
6592c DO 20 J=1,NDIM
6593c20 WRITE(16,202) J,(XI(I,J),DI(I,J),D(I,J),I=1,ND)
6594C
6595C REFINE GRID
6596C
659721 DO 23 J=1,NDIM
6598 XO=D(1,J)
6599 XN=D(2,J)
6600 D(1,J)=(XO+XN)/2.d0
6601 DT(J)=D(1,J)
6602 DO 22 I=2,NDM
6603 D(I,J)=XO+XN
6604 XO=XN
6605 XN=D(I+1,J)
6606 D(I,J)=(D(I,J)+XN)/3.d0
660722 DT(J)=DT(J)+D(I,J)
6608 D(ND,J)=(XN+XO)/2.d0
660923 DT(J)=DT(J)+D(ND,J)
6610C
6611 DO 28 J=1,NDIM
6612 RC=0.d0
6613 DO 24 I=1,ND
6614 R(I)=0.d0
6615 IF (DT(J).GE.1.0D18) THEN
6616 WRITE(6,*) '************** A SINGULARITY >1.0D18'
6617C WRITE(5,1111)
6618C1111 FORMAT(1X,'**************IMPORTANT NOTICE***************')
6619C WRITE(5,1112)
6620C1112 FORMAT(1X,'THE INTEGRAND GIVES RISE A SINGULARITY >1.0D18')
6621C WRITE(5,1113)
6622C1113 FORMAT(1X,'PLEASE CHECK THE INTEGRAND AND THE LIMITS')
6623C WRITE(5,1114)
6624C1114 FORMAT(1X,'**************END NOTICE*************')
6625 END IF
6626 IF(D(I,J).LE.1.0D-18) GO TO 24
6627 XO=DT(J)/D(I,J)
6628 R(I)=((XO-ONE)/XO/DLOG(XO))**ALPH
662924 RC=RC+R(I)
6630 RC=RC/XND
6631 K=0
6632 XN=0.d0
6633 DR=XN
6634 I=K
663525 K=K+1
6636 DR=DR+R(K)
6637 XO=XN
6638c****this is the line 200
6639 XN=XI(K,J)
664026 IF(RC.GT.DR) GO TO 25
6641 I=I+1
6642 DR=DR-RC
6643 XIN(I)=XN-(XN-XO)*DR/(R(K)+1.0d-30)
6644 IF(I.LT.NDM) GO TO 26
6645 DO 27 I=1,NDM
664627 XI(I,J)=XIN(I)
664728 XI(ND,J)=ONE
6648C
6649 IF(IT.LT.ITMX.AND.ACC*DABS(AVGI).LT.SD) GO TO 9
6650c200 FORMAT('0INPUT PARAMETERS FOR VEGAS: NDIM=',I3,' NCALL=',F8.0
6651c 1 /28X,' IT=',I5,' ITMX=',I5/28X,' ACC=',G9.3
6652c 2 /28X,' MDS=',I3,' ND=',I4/28X,' (XL,XU)=',
6653c 3 (T40,'( ',G12.6,' , ',G12.6,' )'))
6654c201 FORMAT(///' INTEGRATION BY VEGAS' / '0ITERATION NO.',I3,
6655c 1 ': INTEGRAL =',G14.8/21X,'STD DEV =',G10.4 /
6656c 2 ' ACCUMULATED RESULTS: INTEGRAL =',G14.8 /
6657c 3 24X,'STD DEV =',G10.4 / 24X,'CHI**2 PER IT''N =',G10.4)
6658c202 FORMAT('0DATA FOR AXIS',I2 / ' ',6X,'X',7X,' DELT I ',
6659c 1 2X,' CONV''CE ',11X,'X',7X,' DELT I ',2X,' CONV''CE '
6660c 2 ,11X,'X',7X,' DELT I ',2X,' CONV''CE ' /
6661c 2 (' ',3G12.4,5X,3G12.4,5X,3G12.4))
6662 RETURN
6663 END
6664C
6665C
6666 SUBROUTINE ARAN9(QRAN,NDIM)
6667 DIMENSION QRAN(10)
6668 COMMON/SEDVAX/NUM1
6669 SAVE
6670 DO 1 I=1,NDIM
6671 1 QRAN(I)=RANART(NUM1)
6672 RETURN
6673 END
6674
6675C
6676C
6677C*********GAUSSIAN ONE-DIMENSIONAL INTEGRATION PROGRAM*************
6678C
6679 FUNCTION GAUSS1(F,A,B,EPS)
6680 EXTERNAL F
6681 DIMENSION W(12),X(12)
6682 SAVE
6683 DATA CONST/1.0E-12/
6684 DATA W/0.1012285,.2223810,.3137067,.3623838,.0271525,
6685 & .0622535,0.0951585,.1246290,.1495960,.1691565,
6686 & .1826034,.1894506/
6687 DATA X/0.9602899,.7966665,.5255324,.1834346,.9894009,
6688 & .9445750,0.8656312,.7554044,.6178762,.4580168,
6689 & .2816036,.0950125/
6690
6691 DELTA=CONST*ABS(A-B)
6692 GAUSS1=0.0
6693 AA=A
66945 Y=B-AA
6695 IF(ABS(Y).LE.DELTA) RETURN
66962 BB=AA+Y
6697 C1=0.5*(AA+BB)
6698 C2=C1-AA
6699 S8=0.0
6700 S16=0.0
6701 DO 1 I=1,4
6702 U=X(I)*C2
67031 S8=S8+W(I)*(F(C1+U)+F(C1-U))
6704 DO 3 I=5,12
6705 U=X(I)*C2
67063 S16=S16+W(I)*(F(C1+U)+F(C1-U))
6707 S8=S8*C2
6708 S16=S16*C2
6709 IF(ABS(S16-S8).GT.EPS*(1.+ABS(S16))) GOTO 4
6710 GAUSS1=GAUSS1+S16
6711 AA=BB
6712 GOTO 5
67134 Y=0.5*Y
6714 IF(ABS(Y).GT.DELTA) GOTO 2
6715 WRITE(6,7)
6716 GAUSS1=0.0
6717 RETURN
67187 FORMAT(1X,'GAUSS1....TOO HIGH ACURACY REQUIRED')
6719 END
6720C
6721C
6722C
6723 FUNCTION GAUSS2(F,A,B,EPS)
6724 EXTERNAL F
6725 DIMENSION W(12),X(12)
6726 SAVE
6727 DATA CONST/1.0E-12/
6728 DATA W/0.1012285,.2223810,.3137067,.3623838,.0271525,
6729 & .0622535,0.0951585,.1246290,.1495960,.1691565,
6730 & .1826034,.1894506/
6731 DATA X/0.9602899,.7966665,.5255324,.1834346,.9894009,
6732 & .9445750,0.8656312,.7554044,.6178762,.4580168,
6733 & .2816036,.0950125/
6734
6735 DELTA=CONST*ABS(A-B)
6736 GAUSS2=0.0
6737 AA=A
67385 Y=B-AA
6739 IF(ABS(Y).LE.DELTA) RETURN
67402 BB=AA+Y
6741 C1=0.5*(AA+BB)
6742 C2=C1-AA
6743 S8=0.0
6744 S16=0.0
6745 DO 1 I=1,4
6746 U=X(I)*C2
67471 S8=S8+W(I)*(F(C1+U)+F(C1-U))
6748 DO 3 I=5,12
6749 U=X(I)*C2
67503 S16=S16+W(I)*(F(C1+U)+F(C1-U))
6751 S8=S8*C2
6752 S16=S16*C2
6753 IF(ABS(S16-S8).GT.EPS*(1.+ABS(S16))) GOTO 4
6754 GAUSS2=GAUSS2+S16
6755 AA=BB
6756 GOTO 5
67574 Y=0.5*Y
6758 IF(ABS(Y).GT.DELTA) GOTO 2
6759 WRITE(6,7)
6760 GAUSS2=0.0
6761 RETURN
67627 FORMAT(1X,'GAUSS2....TOO HIGH ACURACY REQUIRED')
6763 END
6764C
6765C
6766C
6767C
6768C
6769 SUBROUTINE TITLE
6770
6771 COMMON/RNDF77/NSEED
6772cc SAVE /RNDF77/
6773 SAVE
6774
6775 WRITE(6,200)
6776clin-8/15/02 f77:
6777c200 FORMAT(//10X,
6778c & '**************************************************'/10X,
6779c & '* | \ _______ / ------/ *'/10X,
6780c & '* ----- ------ |_____| /_/ / *'/10X,
6781c & '* ||\ / |_____| / / \ *'/10X,
6782c & '* /| \ /_/ /_______ /_ / \_ *'/10X,
6783c & '* / | / / / / / | ------- *'/10X,
6784c & '* | / /\ / / | / | *'/10X,
6785c & '* | / / \ / / \_| / ------- *'/10X,
6786200 FORMAT(//10X,
6787 & '**************************************************'/10X,
6788 & '* | | _______ / ------/ *'/10X,
6789 & '* ----- ------ |_____| /_/ / *'/10X,
6790 & '* ||| / |_____| / / | *'/10X,
6791 & '* /| | /_/ /_______ /_ / | *'/10X,
6792 & '* / | / / / / / | ------- *'/10X,
6793 & '* | / /| / / | / | *'/10X,
6794 & '* | / / | / / _| / ------- *'/10X,
6795 & '* *'/10X,
6796 & '**************************************************'/10X,
7a129c8c 6797 & ' HIJING (for AMPT) '/10X,
0119ef9a 6798 & ' Heavy Ion Jet INteraction Generator '/10X,
6799 & ' by '/10X,
6800 & ' X. N. Wang and M. Gyulassy '/10X,
6801 & ' Lawrence Berkeley Laboratory '//)
6802 RETURN
6803 END
6804