]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/code/sigww.F
Separated TOF libraries (base,rec,sim)
[u/mrichter/AliRoot.git] / ISAJET / code / sigww.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 SUBROUTINE SIGWW
3C
4C Calculate D(SIGMA)/D(PT**2)D(Y1)D(Y2) for QK+QB-->W+W
5C summed over W types allowed on JETTYPE cards and
6C including branching ratio implied by WMODE cards.
7C
8C SIGMA = cross section summed over quark types allowed by
9C JETTYPE card.
10C SIGS(I) = partial cross section for I1 + I2 --> I3 + I4.
11C INOUT(I) = IOPAK**3*I4 + IOPAK**2*I3 + IOPAK*I2 + I1
12C using JETTYPE code.
13C
14C Cross sections from Brown and Mikaelian,
15C Phys Rev D19, 922, D20, 1164.
16C Include extra factor of 1/2 for double counting.
17C
18C Double precision needed for 32-bit machines.
19C
20C Ver. 6.22: Modified to used W + GM decay distributions from
21C Cortes, Hagiwara, and Herzog, NP B278, 26 (1986)
22C
23#if defined(CERNLIB_IMPNONE)
24 IMPLICIT NONE
25#endif
26#include "isajet/itapes.inc"
27#include "isajet/qcdpar.inc"
28#include "isajet/jetpar.inc"
29#include "isajet/primar.inc"
30#include "isajet/q1q2.inc"
31#include "isajet/jetsig.inc"
32#include "isajet/const.inc"
33#include "isajet/qsave.inc"
34#include "isajet/wcon.inc"
35#include "isajet/wwpar.inc"
36C
37 DIMENSION X(2),LISTW(4),QSGN(6)
38 EQUIVALENCE (X(1),X1)
39 EQUIVALENCE (S,SWW),(T,TWW),(U,UWW)
40#if defined(CERNLIB_SINGLE)
41 REAL S,T,U,TX,UX,TT,UU
42 $,WWA,WWI,WWE,WZA,WZI,WZE,TERM
43 $,GA,GI,GE,GJ,GZ
44#endif
45#if defined(CERNLIB_DOUBLE)
46 DOUBLE PRECISION S,T,U,TX,UX,TT,UU
47 $,WWA,WWI,WWE,WZA,WZI,WZE,TERM
48 $,GA,GI,GE,GJ,GZ
49#endif
50 REAL WM2S,ZM2S,X,STRUC,FJAC,SGN,QSGN,SIG,FACTOR,EQ3(12)
51 INTEGER I,IH,IQ,IW1,IW2,JW,JZ,IW,IQ1,IQ2,JG,LISTW,IFOUR
52 INTEGER IFLI,IFLJ
53 LOGICAL LQK1
54C
55 DATA LISTW/10,80,-80,90/
56 DATA QSGN/1.,-1.,-1.,1.,-1.,1./
57 DATA EQ3/2.,-1.,-1.,2.,-1.,2.,0.,-3.,0.,-3.,0.,-3./
58C
59C Functions for W+W-
60 WWA(S,T,U)=(U*T/WM2**2-1.)*(.25-WM2/S+3.*(WM2/S)**2)+S/WM2-4.
61 WWI(S,T,U)=(U*T/WM2**2-1.)*(.25-.5*WM2/S-WM2**2/(S*T))
62 $+S/WM2-2.+2.*WM2/T
63 WWE(S,T,U)=(U*T/WM2**2-1.)*(.25+(WM2/T)**2)+S/WM2
64C Functions for W+-Z0
65 WZA(S,T,U)=(U*T/(WM2*ZM2)-1.)*(.25-(WM2+ZM2)/(2.*S)
66 $+((WM2+ZM2)**2+8.*WM2*ZM2)/(4.*S**2))
67 $+(WM2+ZM2)/(WM2*ZM2)*(.5*S-WM2-ZM2+(WM2-ZM2)**2/(2.*S))
68 WZI(S,T,U)=.25*(U*T/(WM2*ZM2)-1.)*(1.-(WM2+ZM2)/S
69 $-4.*WM2*ZM2/(S*T))
70 $+(WM2+ZM2)/(2.*WM2*ZM2)*(S-WM2-ZM2+2.*WM2*ZM2/T)
71 WZE(S,T,U)=.25*(U*T/(WM2*ZM2)-1.)+.5*S*(WM2+ZM2)/(WM2*ZM2)
72C
73C Initialize
74 DO 10 I=1,MXSIGS
7510 SIGS(I)=0.
76 SIGMA=0.
77 NSIGS=0
78C
79C Convention is that even for double precision single
80C precision mass is exact.
81 WM2=WMASS(2)
82 WM2=WM2**2
83 ZM2=WMASS(4)
84 ZM2=ZM2**2
85C Also need single precision mass**2.
86 WM2S=WM2
87 ZM2S=ZM2
88C
89C W+ W- pairs
90C
91 IF(.NOT.((GOQ(2,1).AND.GOQ(3,2)).OR.(GOQ(3,1).AND.GOQ(2,2))))
92 $GO TO 200
93 CALL WWKIN(WMASS(2),WMASS(2))
94 IF(X1.GE.1..OR.X2.GE.1.) GO TO 200
95 DO 110 IH=1,2
96 DO 110 IQ=2,9
97110 QSAVE(IQ,IH)=STRUC(X(IH),QSQ,IQ,IDIN(IH))/X(IH)
98 FJAC=S/SCM*UNITS
99 FJAC=FJAC*PI*ALFA**2/(3.*S**2)
100 FJAC=FJAC*P(1)*P(2)/SQRT((P(1)**2+WM2S)*(P(2)**2+WM2S))
101 FJAC=.5*FJAC
102C Sum over jet1 = W+ and jet2 = W+.
103C Swap t and u in latter case.
104 DO 120 IW1=2,3
105 IW2=5-IW1
106 IF(.NOT.(GOQ(IW1,1).AND.GOQ(IW2,2))) GO TO 120
107 IF(IW1.EQ.3) GO TO 121
108 TX=T
109 UX=U
110 GO TO 122
111121 TX=U
112 UX=T
113C
114C Sum over quarks, swapping t and u for negative charge.
115122 DO 130 IQ=1,4
116 GA=2.*(AQDP(IQ,1)+EZDP*AQDP(IQ,4)*S/(S-ZM2))**2
117 $+2.*(EZDP*BQDP(IQ,4)*S/(S-ZM2))**2
118 GI=8.*(AQDP(IQ,1)+EZDP*(AQDP(IQ,4)+BQDP(IQ,4))*S/(S-ZM2))
119 $*(AQDP(IQ,2))**2
120 GE=16.*(AQDP(IQ,2))**4
121 SGN=QSGN(IQ)
122 IF(SGN.LT.0.) GO TO 131
123 TT=TX
124 UU=UX
125 GO TO 132
126131 TT=UX
127 UU=TX
128132 SIG=QSAVE(2*IQ,1)*QSAVE(2*IQ+1,2)*FJAC*TBRWW(IW1,1)*TBRWW(IW2,2)
129 $*(GA*WWA(S,TT,UU)-SGN*GI*WWI(S,TT,UU)+GE*WWE(S,TT,UU))
130 CALL SIGFIL(SIG,2*IQ,2*IQ+1,IW1,IW2)
131 SIG=QSAVE(2*IQ+1,1)*QSAVE(2*IQ,2)*FJAC*TBRWW(IW1,1)*TBRWW(IW2,2)
132 $*(GA*WWA(S,UU,TT)-SGN*GI*WWI(S,UU,TT)+GE*WWE(S,UU,TT))
133 CALL SIGFIL(SIG,2*IQ+1,2*IQ,IW1,IW2)
134130 CONTINUE
135120 CONTINUE
136C
137C Z0 Z0 pairs
138C
139200 IF(.NOT.(GOQ(4,1).AND.GOQ(4,2))) GO TO 300
140 CALL WWKIN(WMASS(4),WMASS(4))
141 IF(X1.GE.1..OR.X2.GE.1.) RETURN
142 DO 210 IH=1,2
143 DO 210 IQ=2,9
144210 QSAVE(IQ,IH)=STRUC(X(IH),QSQ,IQ,IDIN(IH))/X(IH)
145C Jacobean -- including factor of 1/2 for identical particles.
146 FJAC=.5*S/SCM*UNITS
147 FJAC=FJAC*PI*ALFA**2/(3.*S**2)
148 FJAC=FJAC*P(1)*P(2)/SQRT((P(1)**2+ZM2S)*(P(2)**2+ZM2S))
149 DO 220 IQ=1,4
150 GZ=2.*(AQDP(IQ,4)**4+BQDP(IQ,4)**4
151 $+6.*AQDP(IQ,4)**2*BQDP(IQ,4)**2)
152 FACTOR=(T/U+U/T+4.*ZM2*S/(T*U)-ZM2**2*(1./T**2+1./U**2))
153 FACTOR=FACTOR*FJAC*GZ*TBRWW(4,1)*TBRWW(4,2)
154 SIG=FACTOR*QSAVE(2*IQ,1)*QSAVE(2*IQ+1,2)
155 CALL SIGFIL(SIG,2*IQ,2*IQ+1,4,4)
156 SIG=FACTOR*QSAVE(2*IQ+1,1)*QSAVE(2*IQ,2)
157 CALL SIGFIL(SIG,2*IQ+1,2*IQ,4,4)
158220 CONTINUE
159C
160C W+- Z0 pairs
161C
162C JW and JZ are W+- and Z0 jet numbers.
163300 DO 310 JW=1,2
164 JZ=3-JW
165 IF(.NOT.((GOQ(2,JW).OR.GOQ(3,JW)).AND.GOQ(4,JZ))) GO TO 310
166C
167C Must swap t and u if JW=2.
168 IF(JW.EQ.1) THEN
169 CALL WWKIN(WMASS(2),WMASS(4))
170 TX=T
171 UX=U
172 FJAC=S/SCM*UNITS
173 FJAC=FJAC*PI*ALFA**2/(3.*S**2)
174 FJAC=.5*FJAC
175 FJAC=FJAC*P(1)*P(2)/SQRT((P(1)**2+WM2S)*(P(2)**2+ZM2S))
176 ELSE
177 CALL WWKIN(WMASS(4),WMASS(2))
178 TX=U
179 UX=T
180 FJAC=S/SCM*UNITS
181 FJAC=FJAC*PI*ALFA**2/(3.*S**2)
182 FJAC=.5*FJAC
183 FJAC=FJAC*P(1)*P(2)/SQRT((P(1)**2+ZM2S)*(P(2)**2+WM2S))
184 ENDIF
185 IF(X1.GE.1..OR.X2.GE.1.) GO TO 310
186 DO 320 IH=1,2
187 DO 320 IQ=1,9
188320 QSAVE(IQ,IH)=STRUC(X(IH),QSQ,IQ,IDIN(IH))/X(IH)
189C
190C Sum over W+ and W-
191 DO 340 IW=2,3
192 IF(IW.EQ.2) THEN
193 SGN=+1
194 ELSE
195 SGN=+1
196 ENDIF
197C
198C Sum over quarks, swapping t and u as needed.
199 DO 350 IQ1=2,9
200 IQ2=MATCH(IQ1,IW)
201 IF(IQ2.EQ.0) GO TO 350
202 IQ=IQ1/2
203 IF(2*IQ.EQ.IQ1) THEN
204 LQK1=.TRUE.
205 ELSE
206 LQK1=.FALSE.
207 ENDIF
208 IF((LQK1.AND.IW.EQ.3).OR.(.NOT.LQK1.AND.IW.EQ.2)) THEN
209 TT=TX
210 UU=UX
211 IFLI=IQ1/2
212 IFLJ=IQ2/2
213 ELSE
214 TT=UX
215 UU=TX
216 IFLI=IQ2/2
217 IFLJ=IQ1/2
218 ENDIF
219C
220 GA=AQDP(IQ,IW)*EZDP*S/(S-WM2)
221 GI=AQDP(IQ,IW)*(AQDP(IFLI,4)+BQDP(IFLI,4))
222 GJ=AQDP(IQ,IW)*(AQDP(IFLJ,4)+BQDP(IFLJ,4))
223 TERM=GA**2*WZA(S,TT,UU)
224 TERM=TERM+2.*GA*SGN*(-GJ*WZI(S,TT,UU)+GI*WZI(S,UU,TT))
225 TERM=TERM+(GI-GJ)**2*WZE(S,TT,UU)
226 TERM=TERM+GI**2*(UU*TT-WM2*ZM2)/UU**2
227 $ +2.*GI*GJ*S*(WM2+ZM2)/(TT*UU)+GJ**2*(UU*TT-WM2*ZM2)/TT**2
228 TERM=TERM*4.*FJAC*QSAVE(IQ1,1)*QSAVE(IQ2,2)
229 TERM=TERM*TBRWW(IW,JW)*TBRWW(4,JZ)
230 SIG=TERM
231 IF(JW.EQ.1) THEN
232 CALL SIGFIL(SIG,IQ1,IQ2,IW,4)
233 ELSE
234 CALL SIGFIL(SIG,IQ1,IQ2,4,IW)
235 ENDIF
236350 CONTINUE
237340 CONTINUE
238310 CONTINUE
239C
240C W+- GM pairs.
241C
242400 DO 410 JW=1,2
243 JG=3-JW
244 IF(.NOT.((GOQ(2,JW).OR.GOQ(3,JW)).AND.GOQ(1,JG))) GO TO 410
245C
246C Must swap t and u if JW=2.
247 IF(JW.EQ.1) THEN
248 CALL WWKIN(WMASS(2),0.)
249 TX=T
250 UX=U
251 FJAC=S/SCM*UNITS
252 FJAC=FJAC*PI*ALFA**2/S**2
253 FJAC=.5*FJAC
254 FJAC=FJAC*P(1)/SQRT(P(1)**2+WM2S)
255 ELSE
256 CALL WWKIN(0.,WMASS(2))
257 TX=U
258 UX=T
259 FJAC=S/SCM*UNITS
260 FJAC=FJAC*PI*ALFA**2/S**2
261 FJAC=.5*FJAC
262 FJAC=FJAC*P(2)/SQRT(P(2)**2+WM2S)
263 ENDIF
264C
265 IF(X1.GE.1..OR.X2.GE.1.) GO TO 410
266 DO 420 IH=1,2
267 DO 420 IQ=1,9
268420 QSAVE(IQ,IH)=STRUC(X(IH),QSQ,IQ,IDIN(IH))/X(IH)
269C
270C Sum over W+ and W-
271 DO 440 IW=2,3
272C
273C Sum over quarks, swapping t and u as needed.
274 DO 450 IQ1=2,9
275 IQ2=MATCH(IQ1,IW)
276 IF(IQ2.EQ.0) GO TO 450
277 IQ=IQ1/2
278 IF(2*IQ.EQ.IQ1) THEN
279 LQK1=.TRUE.
280 ELSE
281 LQK1=.FALSE.
282 ENDIF
283 IF((LQK1.AND.IW.EQ.3).OR.(.NOT.LQK1.AND.IW.EQ.2)) THEN
284 TT=TX
285 UU=UX
286 ELSE
287 TT=UX
288 UU=TX
289 ENDIF
290C
291 SIG=TBRWW(IW,JW)/(6.*SIN2W)*(-1./3.+UU/(TT+UU))**2
292 $ *(UU**2+TT**2+2.*S*WM2)/(TT*UU)
293 SIG=SIG*FJAC*QSAVE(IQ1,1)*QSAVE(IQ2,2)
294 IF(JW.EQ.1) CALL SIGFIL(SIG,IQ1,IQ2,IW,1)
295 IF(JW.EQ.2) CALL SIGFIL(SIG,IQ1,IQ2,1,IW)
296450 CONTINUE
297440 CONTINUE
298410 CONTINUE
299C
300C Z0 GM pairs
301C
302 IF (GOQ(4,1).AND.GOQ(1,2)) THEN
303 CALL WWKIN(WMASS(4),0.)
304 IF(X1.GE.1..OR.X2.GE.1.) GO TO 500
305 DO 510 IH=1,2
306 DO 510 IQ=2,9
307510 QSAVE(IQ,IH)=STRUC(X(IH),QSQ,IQ,IDIN(IH))/X(IH)
308 FJAC=S/SCM*P(1)/SQRT(P(1)**2+ZM2S)*UNITS
309 FJAC=FJAC*PI*ALFA**2/(3.*S**2)
310 DO 520 IQ=1,4
311 GZ=AQDP(IQ,4)**2+(AQDP(IQ,4)-BQDP(IQ,4))**2
312 FACTOR=(S**2+ZM2**2)/2./T/U+1.
313 FACTOR=(EQ3(IQ)/3.)**2*FACTOR*FJAC*GZ*TBRWW(4,1)
314 SIG=FACTOR*QSAVE(2*IQ,1)*QSAVE(2*IQ+1,2)
315 CALL SIGFIL(SIG,2*IQ,2*IQ+1,4,1)
316 SIG=FACTOR*QSAVE(2*IQ+1,1)*QSAVE(2*IQ,2)
317 CALL SIGFIL(SIG,2*IQ+1,2*IQ,4,1)
318520 CONTINUE
319500 CONTINUE
320 END IF
321C
322 IF (GOQ(1,1).AND.GOQ(4,2)) THEN
323 CALL WWKIN(0.,WMASS(4))
324 IF(X1.GE.1..OR.X2.GE.1.) GO TO 600
325 DO 610 IH=1,2
326 DO 610 IQ=2,9
327610 QSAVE(IQ,IH)=STRUC(X(IH),QSQ,IQ,IDIN(IH))/X(IH)
328 FJAC=S/SCM*P(2)/SQRT(P(2)**2+ZM2S)*UNITS
329 FJAC=FJAC*PI*ALFA**2/(3.*S**2)
330 DO 620 IQ=1,4
331 GZ=AQDP(IQ,4)**2+(AQDP(IQ,4)-BQDP(IQ,4))**2
332 FACTOR=(S**2+ZM2**2)/2./T/U+1.
333 FACTOR=(EQ3(IQ)/3.)**2*FACTOR*FJAC*GZ*TBRWW(4,2)
334 SIG=FACTOR*QSAVE(2*IQ,1)*QSAVE(2*IQ+1,2)
335 CALL SIGFIL(SIG,2*IQ,2*IQ+1,1,4)
336 SIG=FACTOR*QSAVE(2*IQ+1,1)*QSAVE(2*IQ,2)
337 CALL SIGFIL(SIG,2*IQ+1,2*IQ,1,4)
338620 CONTINUE
339600 CONTINUE
340 END IF
341C
342 RETURN
343 END