]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HIJING/hijing1_36/hijfrg.F
This commit was generated by cvs2svn to compensate for changes in r1073,
[u/mrichter/AliRoot.git] / HIJING / hijing1_36 / hijfrg.F
CommitLineData
e74335a4 1* $Id$
2
3C
4C
5C
6C
7 SUBROUTINE HIJFRG(JTP,NTP,IERROR)
8C NTP=1, fragment proj string, NTP=2, targ string,
9C NTP=3, independent
10C strings from jets. JTP is the line number of the string
11C*******Fragment all leading strings of proj and targ**************
12C IHNT2(1)=atomic #, IHNT2(2)=proton #(=-1 if anti-proton) *
13C******************************************************************
14#include "hiparnt.inc"
15#include "hijdat.inc"
16#include "histrng.inc"
17#include "hijjet1.inc"
18#include "hijjet2.inc"
19C
20#include "lujets_hijing.inc"
21#include "ludat1_hijing.inc"
22 SAVE
23
24 IERROR=0
25 CALL LUEDIT_HIJING(0)
26 N=0
27C ********initialize the document lines
28 IF(NTP.EQ.3) THEN
29 ISG=JTP
30 N=NJSG(ISG)
31 DO 100 I=1,NJSG(ISG)
32 K(I,1)=K1SG(ISG,I)
33 K(I,2)=K2SG(ISG,I)
34 P(I,1)=PXSG(ISG,I)
35 P(I,2)=PYSG(ISG,I)
36 P(I,3)=PZSG(ISG,I)
37 P(I,4)=PESG(ISG,I)
38 P(I,5)=PMSG(ISG,I)
39100 CONTINUE
40C IF(IHPR2(1).GT.0) CALL ATTRAD(IERROR)
41c IF(IERROR.NE.0) RETURN
42C CALL LULIST_HIJING(1)
43 CALL LUEXEC_HIJING
44 RETURN
45 ENDIF
46C
47 IF(NTP.EQ.2) GO TO 200
48 IF(JTP.GT.IHNT2(1)) RETURN
49 IF(NFP(JTP,5).NE.3.AND.NFP(JTP,3).NE.0
50 & .AND.NPJ(JTP).EQ.0.AND.NFP(JTP,10).EQ.0) GO TO 1000
51 IF(NFP(JTP,15).EQ.-1) THEN
52 KF1=NFP(JTP,2)
53 KF2=NFP(JTP,1)
54 PQ21=PP(JTP,6)
55 PQ22=PP(JTP,7)
56 PQ11=PP(JTP,8)
57 PQ12=PP(JTP,9)
58 AM1=PP(JTP,15)
59 AM2=PP(JTP,14)
60 ELSE
61 KF1=NFP(JTP,1)
62 KF2=NFP(JTP,2)
63 PQ21=PP(JTP,8)
64 PQ22=PP(JTP,9)
65 PQ11=PP(JTP,6)
66 PQ12=PP(JTP,7)
67 AM1=PP(JTP,14)
68 AM2=PP(JTP,15)
69 ENDIF
70C ********for NFP(JTP,15)=-1 NFP(JTP,1) IS IN -Z DIRECTION
71 PB1=PQ11+PQ21
72 PB2=PQ12+PQ22
73 PB3=PP(JTP,3)
74 PECM=PP(JTP,5)
75 BTZ=PB3/PP(JTP,4)
76 IF((ABS(PB1-PP(JTP,1)).GT.0.01.OR.
77 & ABS(PB2-PP(JTP,2)).GT.0.01).AND.IHPR2(10).NE.0)
78 & WRITE(6,*) ' Pt of Q and QQ do not sum to the total'
79
80 GO TO 300
81
82200 IF(JTP.GT.IHNT2(3)) RETURN
83 IF(NFT(JTP,5).NE.3.AND.NFT(JTP,3).NE.0
84 & .AND.NTJ(JTP).EQ.0.AND.NFT(JTP,10).EQ.0) GO TO 1200
85 IF(NFT(JTP,15).EQ.1) THEN
86 KF1=NFT(JTP,1)
87 KF2=NFT(JTP,2)
88 PQ11=PT(JTP,6)
89 PQ12=PT(JTP,7)
90 PQ21=PT(JTP,8)
91 PQ22=PT(JTP,9)
92 AM1=PT(JTP,14)
93 AM2=PT(JTP,15)
94 ELSE
95 KF1=NFT(JTP,2)
96 KF2=NFT(JTP,1)
97 PQ11=PT(JTP,8)
98 PQ12=PT(JTP,9)
99 PQ21=PT(JTP,6)
100 PQ22=PT(JTP,7)
101 AM1=PT(JTP,15)
102 AM2=PT(JTP,14)
103 ENDIF
104C ********for NFT(JTP,15)=1 NFT(JTP,1) IS IN +Z DIRECTION
105 PB1=PQ11+PQ21
106 PB2=PQ12+PQ22
107 PB3=PT(JTP,3)
108 PECM=PT(JTP,5)
109 BTZ=PB3/PT(JTP,4)
110
111 IF((ABS(PB1-PT(JTP,1)).GT.0.01.OR.
112 & ABS(PB2-PT(JTP,2)).GT.0.01).AND.IHPR2(10).NE.0)
113 & WRITE(6,*) ' Pt of Q and QQ do not sum to the total'
114
115300 IF(PECM.LT.HIPR1(1)) THEN
116 IERROR=1
117 IF(IHPR2(10).EQ.0) RETURN
118 WRITE(6,*) ' ECM=',PECM,' energy of the string is too small'
119 RETURN
120 ENDIF
121 AMT=PECM**2+PB1**2+PB2**2
122 AMT1=AM1**2+PQ11**2+PQ12**2
123 AMT2=AM2**2+PQ21**2+PQ22**2
124 PZCM=SQRT(ABS(AMT**2+AMT1**2+AMT2**2-2.0*AMT*AMT1
125 & -2.0*AMT*AMT2-2.0*AMT1*AMT2))/2.0/SQRT(AMT)
126C *******PZ of end-partons in c.m. frame of the string
127 K(1,1)=2
128 K(1,2)=KF1
129 P(1,1)=PQ11
130 P(1,2)=PQ12
131 P(1,3)=PZCM
132 P(1,4)=SQRT(AMT1+PZCM**2)
133 P(1,5)=AM1
134 K(2,1)=1
135 K(2,2)=KF2
136 P(2,1)=PQ21
137 P(2,2)=PQ22
138 P(2,3)=-PZCM
139 P(2,4)=SQRT(AMT2+PZCM**2)
140 P(2,5)=AM2
141 N=2
142C*****
143 CALL HIROBO(0.0,0.0,0.0,0.0,BTZ)
144 JETOT=0
145 IF((PQ21**2+PQ22**2).GT.(PQ11**2+PQ12**2)) THEN
146 PMAX1=P(2,1)
147 PMAX2=P(2,2)
148 PMAX3=P(2,3)
149 ELSE
150 PMAX1=P(1,1)
151 PMAX2=P(1,2)
152 PMAX3=P(1,3)
153 ENDIF
154 IF(NTP.EQ.1) THEN
155 PP(JTP,10)=PMAX1
156 PP(JTP,11)=PMAX2
157 PP(JTP,12)=PMAX3
158 ELSE IF(NTP.EQ.2) THEN
159 PT(JTP,10)=PMAX1
160 PT(JTP,11)=PMAX2
161 PT(JTP,12)=PMAX3
162 ENDIF
163C*******************attach produced jets to the leading partons****
164 IF(NTP.EQ.1.AND.NPJ(JTP).NE.0) THEN
165 JETOT=NPJ(JTP)
166C IF(NPJ(JTP).GE.2) CALL HIJSRT(JTP,1)
167C ********sort jets in order of y
168 IEX=0
169 IF((ABS(KF1).GT.1000.AND.KF1.LT.0)
170 & .OR.(ABS(KF1).LT.1000.AND.KF1.GT.0)) IEX=1
171 DO 520 I=N,2,-1
172 DO 520 J=1,5
173 II=NPJ(JTP)+I
174 K(II,J)=K(I,J)
175 P(II,J)=P(I,J)
176 V(II,J)=V(I,J)
177520 CONTINUE
178 DO 540 I=1,NPJ(JTP)
179 DO 542 J=1,5
180 K(I+1,J)=0
181 V(I+1,J)=0
182542 CONTINUE
183 I0=I
184 IF(IEX.EQ.1) I0=NPJ(JTP)-I+1
185C ********reverse the order of jets
186 KK1=KFPJ(JTP,I0)
187 K(I+1,1)=2
188 K(I+1,2)=KK1
189 IF(KK1.NE.21 .AND. KK1.NE.0) K(I+1,1)=
190 & 1+(ABS(KK1)+(2*IEX-1)*KK1)/2/ABS(KK1)
191 P(I+1,1)=PJPX(JTP,I0)
192 P(I+1,2)=PJPY(JTP,I0)
193 P(I+1,3)=PJPZ(JTP,I0)
194 P(I+1,4)=PJPE(JTP,I0)
195 P(I+1,5)=PJPM(JTP,I0)
196540 CONTINUE
197 N=N+NPJ(JTP)
198 ELSE IF(NTP.EQ.2.AND.NTJ(JTP).NE.0) THEN
199 JETOT=NTJ(JTP)
200c IF(NTJ(JTP).GE.2) CALL HIJSRT(JTP,2)
201C ********sort jets in order of y
202 IEX=1
203 IF((ABS(KF2).GT.1000.AND.KF2.LT.0)
204 & .OR.(ABS(KF2).LT.1000.AND.KF2.GT.0)) IEX=0
205 DO 560 I=N,2,-1
206 DO 560 J=1,5
207 II=NTJ(JTP)+I
208 K(II,J)=K(I,J)
209 P(II,J)=P(I,J)
210 V(II,J)=V(I,J)
211560 CONTINUE
212 DO 580 I=1,NTJ(JTP)
213 DO 582 J=1,5
214 K(I+1,J)=0
215 V(I+1,J)=0
216582 CONTINUE
217 I0=I
218 IF(IEX.EQ.1) I0=NTJ(JTP)-I+1
219C ********reverse the order of jets
220 KK1=KFTJ(JTP,I0)
221 K(I+1,1)=2
222 K(I+1,2)=KK1
223 IF(KK1.NE.21 .AND. KK1.NE.0) K(I+1,1)=
224 & 1+(ABS(KK1)+(2*IEX-1)*KK1)/2/ABS(KK1)
225 P(I+1,1)=PJTX(JTP,I0)
226 P(I+1,2)=PJTY(JTP,I0)
227 P(I+1,3)=PJTZ(JTP,I0)
228 P(I+1,4)=PJTE(JTP,I0)
229 P(I+1,5)=PJTM(JTP,I0)
230580 CONTINUE
231 N=N+NTJ(JTP)
232 ENDIF
233 IF(IHPR2(1).GT.0.AND.RLU_HIJING(0).LE.HIDAT(3)) THEN
234 HIDAT20=HIDAT(2)
235 HIPR150=HIPR1(5)
236 IF(IHPR2(8).EQ.0.AND.IHPR2(3).EQ.0.AND.IHPR2(9).EQ.0)
237 & HIDAT(2)=2.0
238 IF(HINT1(1).GE.1000.0.AND.JETOT.EQ.0)THEN
239 HIDAT(2)=3.0
240 HIPR1(5)=5.0
241 ENDIF
242 CALL ATTRAD(IERROR)
243 HIDAT(2)=HIDAT20
244 HIPR1(5)=HIPR150
245 ELSE IF(JETOT.EQ.0.AND.IHPR2(1).GT.0.AND.
246 & HINT1(1).GE.1000.0.AND.
247 & RLU_HIJING(0).LE.0.8) THEN
248 HIDAT20=HIDAT(2)
249 HIPR150=HIPR1(5)
250 HIDAT(2)=3.0
251 HIPR1(5)=5.0
252 IF(IHPR2(8).EQ.0.AND.IHPR2(3).EQ.0.AND.IHPR2(9).EQ.0)
253 & HIDAT(2)=2.0
254 CALL ATTRAD(IERROR)
255 HIDAT(2)=HIDAT20
256 HIPR1(5)=HIPR150
257 ENDIF
258 IF(IERROR.NE.0) RETURN
259C ******** conduct soft radiations
260C****************************
261C
262C
263C CALL LULIST_HIJING(1)
264 CALL LUEXEC_HIJING
265 RETURN
266
2671000 N=1
268 K(1,1)=1
269 K(1,2)=NFP(JTP,3)
270 DO 1100 JJ=1,5
271 P(1,JJ)=PP(JTP,JJ)
2721100 CONTINUE
273C ********proj remain as a nucleon or delta
274 CALL LUEXEC_HIJING
275C call LULIST_HIJING(1)
276 RETURN
277C
2781200 N=1
279 K(1,1)=1
280 K(1,2)=NFT(JTP,3)
281 DO 1300 JJ=1,5
282 P(1,JJ)=PT(JTP,JJ)
2831300 CONTINUE
284C ********targ remain as a nucleon or delta
285 CALL LUEXEC_HIJING
286C call LULIST_HIJING(1)
287 RETURN
288 END