]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HIJING/hijing1_36/hijfrg.F
Avoid duplicated SAVE statements for G95
[u/mrichter/AliRoot.git] / HIJING / hijing1_36 / hijfrg.F
1 * $Id$
2
3 C
4 C
5 C
6 C
7         SUBROUTINE HIJFRG(JTP,NTP,IERROR)
8 C       NTP=1, fragment proj string, NTP=2, targ string, 
9 C       NTP=3, independent 
10 C       strings from jets.  JTP is the line number of the string
11 C*******Fragment all leading strings of proj and targ**************
12 C       IHNT2(1)=atomic #, IHNT2(2)=proton #(=-1 if anti-proton)  *
13 C******************************************************************
14 #define BLANKET_SAVE
15 #include "hiparnt.inc"
16 #include "hijdat.inc"
17 #include "histrng.inc"
18 #include "hijjet1.inc"
19 #include "hijjet2.inc"
20 C
21 #include "lujets_hijing.inc"
22 #include "ludat1_hijing.inc"
23         SAVE
24         
25         IERROR=0
26         CALL LUEDIT_HIJING(0)
27         N=0
28 C                       ********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)
40 100             CONTINUE
41 C               IF(IHPR2(1).GT.0) CALL ATTRAD(IERROR)
42 c               IF(IERROR.NE.0) RETURN
43 C               CALL LULIST_HIJING(1)
44                 CALL LUEXEC_HIJING
45                 RETURN
46         ENDIF
47 C
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
71 C       ********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
83 200     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   
105 C       ********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
116 300     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)
127 C               *******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
143 C*****
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
164 C*******************attach produced jets to the leading partons****
165         IF(NTP.EQ.1.AND.NPJ(JTP).NE.0) THEN
166                 JETOT=NPJ(JTP)
167 C               IF(NPJ(JTP).GE.2) CALL HIJSRT(JTP,1)
168 C                       ********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)
178 520             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
183 542                     CONTINUE                                
184                         I0=I
185                         IF(IEX.EQ.1) I0=NPJ(JTP)-I+1
186 C                               ********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)
197 540             CONTINUE
198                 N=N+NPJ(JTP)
199         ELSE IF(NTP.EQ.2.AND.NTJ(JTP).NE.0) THEN
200                 JETOT=NTJ(JTP)
201 c               IF(NTJ(JTP).GE.2)  CALL HIJSRT(JTP,2)
202 C                       ********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)
212 560             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
217 582                     CONTINUE                                
218                         I0=I
219                         IF(IEX.EQ.1) I0=NTJ(JTP)-I+1
220 C                               ********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)
231 580             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
260 C               ******** conduct soft radiations
261 C****************************
262 C
263 C
264 C       CALL LULIST_HIJING(1)
265         CALL LUEXEC_HIJING
266         RETURN
267
268 1000    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)
273 1100            CONTINUE
274 C                       ********proj remain as a nucleon or delta
275         CALL LUEXEC_HIJING
276 C       call LULIST_HIJING(1)
277         RETURN
278 C
279 1200    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)
284 1300    CONTINUE
285 C                       ********targ remain as a nucleon or delta
286         CALL LUEXEC_HIJING
287 C       call LULIST_HIJING(1)
288         RETURN
289         END