]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/code/hevolv.F
Bug in V0A fixed (Guillermo)
[u/mrichter/AliRoot.git] / ISAJET / code / hevolv.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 SUBROUTINE HEVOLV
3C
4C CARRY OUT BACKWARDS EVOLUTION QK --> QK + W FOR LONGITUDINAL
5C W-W FUSION, GENERATING Z AND KT**2 FROM RELATION OF W AND
6C QUARK STRUCTURE FUNCTIONS.
7C
8#include "isajet/itapes.inc"
9#include "isajet/qcdpar.inc"
10#include "isajet/jetpar.inc"
11#include "isajet/pjets.inc"
12#include "isajet/jetset.inc"
13#include "isajet/primar.inc"
14#include "isajet/wcon.inc"
15#include "isajet/const.inc"
16#include "isajet/idrun.inc"
17#include "isajet/hcon.inc"
18C
19 DIMENSION X(2)
20 EQUIVALENCE (X1,X(1))
21 DIMENSION FZIQ(13),IWPICK(2),PFINAL(5),BST1(5),BST2(5),B2B1(5)
22 DIMENSION PSAVE(5,2)
23C LAMBDA FUNCTION
24 ALAMF(A,B,C)=SQRT((A-B-C)**2-4.*B*C)
25C
26 NJSAVE=NJSET
27 NREJ2=-1
28C
29C INITIALIZE
30 DO 10 I=1,2
31 DO 10 K=1,5
3210 PSAVE(K,I)=PJSET(K,I)
3320 CONTINUE
34 DO 30 I=1,2
35 DO 30 K=1,5
3630 PJSET(K,I)=PSAVE(K,I)
37 DO 40 K=1,5
3840 PFINAL(K)=QWJET(K)
39 NJSET=NJSAVE
40C
41C CHOOSE A W AND DO BACKWARDS EVOLUTION FOR QK -> QK + W.
42C
43 IF(RANF().LT..5) THEN
44 IWPICK(1)=1
45 IWPICK(2)=2
46 SGN=+1.
47 ELSE
48 IWPICK(1)=2
49 IWPICK(2)=1
50 SGN=-1.
51 ENDIF
52 DO 100 JJ=1,2
53C
54C OTHER PARTICLE IS W FOR JJ=1, QUARK FOR JJ=2:
55 IF(JJ.EQ.1) THEN
56 J1=IWPICK(1)
57 J2=IWPICK(2)
58 ELSE
59 J1=IWPICK(2)
60 J2=NJSAVE+1
61 SGN=-SGN
62 ENDIF
63 JTLV1=JTYPE(J1)
64 IF(JTLV1.EQ.10) THEN
65 IW=1
66 ELSEIF(JTLV1.EQ.80) THEN
67 IW=2
68 ELSEIF(JTLV1.EQ.-80) THEN
69 IW=3
70 ELSEIF(JTLV1.EQ.90) THEN
71 IW=4
72 ENDIF
73 XV=(PJSET(4,J1)+ABS(PJSET(3,J1)))/ECM
74 AMV=AMASS(JTLV1)
75C
76C GENERATE VARIABLES FOR BRANCHING
77C FIND MAXIMUM OF INTEGRAND USING 20 POINTS IN LOG(Z)
78 FMAX=0.
79 ZMULT=(1./XV)**.05
80 ZIZ=XV
81 DO 110 IZ=1,19
82 ZIZ=ZIZ*ZMULT
83 FSUM=0.
84 DO 115 IQ=2,13
85 IF(MATCH(IQ,IW).NE.0) THEN
86 IFL=IQ/2
87 CIQ=AQ(IFL,IW)**2+BQ(IFL,IW)**2
88 FSUM=FSUM+CIQ*(1.-ZIZ)/ZIZ*STRUC(XV/ZIZ,AMV**2,IQ,IDIN(J1))
89 ENDIF
90115 CONTINUE
91 FMAX=AMAX1(FMAX,FSUM)
92110 CONTINUE
93C GENERATE Z UNIFORMLY IN (XV,1) AND TEST
94 NREJ1=-1
95120 ZV=XV+(1.-XV)*RANF()
96 FZ=0.
97 DO 130 IQ=2,13
98 IF(MATCH(IQ,IW).NE.0) THEN
99 IFL=IQ/2
100 CIQ=AQ(IFL,IW)**2+BQ(IFL,IW)**2
101 FZIQ(IQ)=CIQ*(1.-ZV)/ZV*STRUC(XV/ZV,AMV**2,IQ,IDIN(J1))
102 ELSE
103 FZIQ(IQ)=0.
104 ENDIF
105130 FZ=FZ+FZIQ(IQ)
106 IF(FZ.LT.FMAX*RANF()) THEN
107 NREJ1=NREJ1+1
108 IF(NREJ1.GT.NTRIES) GO TO 9999
109 GO TO 120
110 ENDIF
111C DETERMINE QUARK TYPE
112 TRY=RANF()
113 SUM=0.
114 DO 140 IQ=2,13
115 IQ1=IQ
116 SUM=SUM+FZIQ(IQ)/FZ
117140 IF(SUM.GT.TRY) GO TO 150
118150 IQ3=MATCH(IQ1,IW)
119 IQ3=MATCH(IQ3,4)
120C GENERATE T=-K**2 AND UNIFORM PHI
121 T=AMV**2*(1./RANF()-1.)
122 PHIK=2.*PI*RANF()
123C
124C SOLVE KINEMATICS FOR THIS SIDE
125 S=(PJSET(4,J1)+PJSET(4,J2))**2-(PJSET(1,J1)+PJSET(1,J2))**2
126 $-(PJSET(2,J1)+PJSET(2,J2))**2-(PJSET(3,J1)+PJSET(3,J2))**2
127 SP=S/ZV
128 IFL1=IQ1/2
129 IFL2=JTYPE(J2)
130 IFL3=IQ3/2
131 AM1=AMASS(IFL1)
132 AM2=PJSET(5,J2)
133 AM3=AMASS(IFL3)
134 AM1SQ=AM1**2
135 AM2SQ=AM2**2
136 AM3SQ=AM3**2
137 IF(SGN.LT.0.) THEN
138 P2PL=PJSET(4,J2)+PJSET(3,J2)
139 P2MN=AM2SQ/P2PL
140 ELSE
141 P2MN=PJSET(4,J2)-PJSET(3,J2)
142 P2PL=AM2SQ/P2MN
143 ENDIF
144C STEP 1: SOLVE FOR PP1=PJSET(K,NEWV)
145 IF(SGN.GT.0.) THEN
146 PP1PL=(SP-AM1SQ-AM2SQ+ALAMF(SP,AM1SQ,AM2SQ))/(2.*P2MN)
147 PP1MN=AM1SQ/PP1PL
148 ELSE
149 PP1MN=(SP-AM1SQ-AM2SQ+ALAMF(SP,AM1SQ,AM2SQ))/(2.*P2PL)
150 PP1PL=AM1SQ/PP1MN
151 ENDIF
152C STEP 2: SOLVE FOR K = VIRTUAL W MOMENTUM
153 DEN=PP1PL*P2MN-PP1MN*P2PL
154 AKPL=(+PP1PL*(S+T-AM2SQ)+P2PL*(T+AM3SQ-AM1SQ))/DEN
155 AKMN=(-PP1MN*(S+T-AM2SQ)-P2MN*(T+AM3SQ-AM1SQ))/DEN
156 WPL=PP1PL-AKPL
157 WMN=PP1MN-AKMN
158 AKT2=T+AKPL*AKMN
159C STEP 3: START OVER IF AKT2 UNPHYSICAL
160 IF(AKT2.LE.0..OR.PP1PL.GE.ECM.OR.PP1MN.GE.ECM.OR.
161 $P2PL.GE.ECM.OR.P2MN.GE.ECM) THEN
162 NREJ2=NREJ2+1
163 IF(NREJ2.GT.NTRIES) GO TO 9999
164 GO TO 20
165 ENDIF
166C
167C SAVE NEW VECTORS
168 NJ1=NJSET+1
169 NJ2=NJSET+2
170 AKT=SQRT(AKT2)
171 AKX=AKT*COS(PHIK)
172 AKY=AKT*SIN(PHIK)
173 PJSET(1,J1)=AKX
174 PJSET(2,J1)=AKY
175 PJSET(3,J1)=.5*(AKPL-AKMN)
176 PJSET(4,J1)=.5*(AKPL+AKMN)
177 PJSET(5,J1)=-SQRT(T)
178 JDCAY(J1)=JPACK*NJ1+NJ2
179 JET=IABS(JORIG(J1))/JPACK
180C
181 PJSET(1,NJ1)=0.
182 PJSET(2,NJ1)=0.
183 PJSET(3,NJ1)=.5*(PP1PL-PP1MN)
184 PJSET(4,NJ1)=.5*(PP1PL+PP1MN)
185 PJSET(5,NJ1)=AM1
186 JORIG(NJ1)=JPACK*JET+J1
187 JTYPE(NJ1)=IFL1
188 JDCAY(NJ1)=0
189C
190 PJSET(1,NJ2)=-AKX
191 PJSET(2,NJ2)=-AKY
192 PJSET(3,NJ2)=.5*(WPL-WMN)
193 PJSET(4,NJ2)=.5*(WPL+WMN)
194 PJSET(5,NJ2)=AM3
195 JORIG(NJ2)=JPACK*JET+J1
196 JTYPE(NJ2)=IFL3
197 JDCAY(NJ2)=0
198C
199C BOOST OTHER VECTORS TO NEW FRAME GIVEN BY DIFFERENCE OF
200C OLD AND NEW FINAL MOMENTA.
201 DO 200 K=1,4
202 BST1(K)=PFINAL(K)
203200 BST2(K)=PJSET(K,J1)+PJSET(K,J2)
204 BMASS=PFINAL(5)
205 BST1(5)=BMASS
206 BST2(5)=BMASS
207C
208C PARAMETERS FOR COMBINED BOOSTS.
209 BDOTB=BST1(4)*BST2(4)-BST1(1)*BST2(1)-BST1(2)*BST2(2)
210 $-BST1(3)*BST2(3)
211 DO 210 K=1,4
212210 B2B1(K)=BST2(K)-BST1(K)
213C
214 B44=BDOTB/BMASS**2
215 BI41=1./BMASS
216 BI42=(BDOTB-BMASS**2-B2B1(4)*BMASS)/(BMASS**2*(BST2(4)+BMASS))
217 B4K1=BI41
218 B4K2=(BMASS**2-BDOTB-B2B1(4)*BMASS)/(BMASS**2*(BST1(4)+BMASS))
219 BIK1=-1./(BMASS*(BST1(4)+BMASS))
220 BIK2=1./(BMASS*(BST2(4)+BMASS))
221 BIK3=(BMASS**2-BDOTB)/(BMASS**2*(BST1(4)+BMASS)
222 $*(BST2(4)+BMASS))
223C
224C BOOST FINAL JETS
225 DO 220 J=1,NJSET
226 IF(J.EQ.J1.OR.J.EQ.J2) GO TO 220
227 IF(PJSET(5,J).LT.0.) GO TO 220
228 BP1=0.
229 BP21=0.
230 DO 221 K=1,3
231 BP1=BP1+BST1(K)*PJSET(K,J)
232221 BP21=BP21+B2B1(K)*PJSET(K,J)
233 DO 222 K=1,3
234222 PJSET(K,J)=PJSET(K,J)
235 $+(B2B1(K)*BI41+BST2(K)*BI42)*PJSET(4,J)
236 $+B2B1(K)*BP1*BIK1+BST2(K)*BP21*BIK2+BST2(K)*BP1*BIK3
237 PJSET(4,J)=B44*PJSET(4,J)+BP21*B4K1+BP1*B4K2
238220 CONTINUE
239C
240C RESET VIRTUAL MOMENTA
241 DO 230 J=1,NJSET
242 IF(J.EQ.J1.OR.J.EQ.J2) GO TO 230
243 IF(PJSET(5,J).GE.0.) GO TO 230
244 JX1=JDCAY(J)/JPACK
245 JX2=JDCAY(J)-JPACK*JX1
246 DO 231 K=1,4
247231 PJSET(K,J)=PJSET(K,JX1)-PJSET(K,JX2)
248 AMJ=PJSET(4,J)**2-PJSET(1,J)**2-PJSET(2,J)**2-PJSET(3,J)**2
249 PJSET(5,J)=-SQRT(ABS(AMJ))
250230 CONTINUE
251C
252C RESET PFINAL AND NJSET
253 DO 240 K=1,4
254240 PFINAL(K)=PJSET(K,J2)+PJSET(K,NJ1)
255 PFINAL(5)=SQRT(SP)
256 NJSET=NJSET+2
257100 CONTINUE
258 RETURN
259C
2609999 CONTINUE
261 WRITE(ITLIS,9998) IEVT
2629998 FORMAT(/' ***** ERROR IN HEVOLV ... EVENT',I8,' DISCARDED *****')
263 NJSET=-1
264 RETURN
265 END