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