]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/code/drllyn.F
Mostly minor style modifications to be ready for cloning with EMCAL
[u/mrichter/AliRoot.git] / ISAJET / code / drllyn.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 SUBROUTINE DRLLYN
3C
4C Generate QMW (and QTW) for DRELLYAN or HIGGS event using
5C integrated cross section. Then generate decay -- for HIGGS,
6C the mode must be chosen using the integrated cross sections
7C because of interference with W+W->W+W scattering.
8C
9C Note that NOGOOD calls the cross section.
10C
11C Ver. 6.40: Add technicolor resonances. Use logs for QDEN,
12C PTDEN, WTFAC, etc. Also scale QMW generation by QMAX.
13C
14C Ver. 7.01: Correct QDEN to correspond to correct fit form:
15C SIGMA = ANOMR(K)*(QMAX**2/Q**2)**QPOW
16C See QFUNC.
17C
18C Ver. 7.14: Add SUSY Higgs
19C Ver. 7.15: Fix bug with THETAW limits by adding epsilon to
20C allowed range. Check for possible invalid Higgs decays.
21C
22#if defined(CERNLIB_IMPNONE)
23 IMPLICIT NONE
24#endif
25#include "isajet/itapes.inc"
26#include "isajet/jetsig.inc"
27#include "isajet/totals.inc"
28#include "isajet/q1q2.inc"
29#include "isajet/partcl.inc"
30#include "isajet/pjets.inc"
31#include "isajet/pinits.inc"
32#include "isajet/wcon.inc"
33#include "isajet/primar.inc"
34#include "isajet/dylim.inc"
35#include "isajet/const.inc"
36#include "isajet/jetpar.inc"
37#include "isajet/jetlim.inc"
38#include "isajet/wgen.inc"
39#include "isajet/dypar.inc"
40#include "isajet/keys.inc"
41#include "isajet/hcon.inc"
42#include "isajet/isloop.inc"
43#include "isajet/idrun.inc"
44#include "isajet/xmssm.inc"
45#include "isajet/listss.inc"
46C
47 DIMENSION X(2)
48 EQUIVALENCE (X(1),X1)
49 DIMENSION PREST(5),PL(5),EL(3),EML(3),EMSQL(3)
50 DIMENSION WTFAC(3)
51 LOGICAL NOGOOD
52 LOGICAL YGENJ
53 DIMENSION BRANCH(29),LISTJ(29),LISTW(5)
54 REAL ACOSH,XXX,ASINH,CHOOSE,RANF,SUM,WTFAC,PTDEN,QDEN,ETA,QPW,
55 $S12,BRANCH,SUMBR,BRMODE,AMASS,BRINV,TRY,EMSQL,EL,PL12,PREST,
56 $COSTHL,THL,PHL,PTL,SGN,PL,BP,PLPL,PLMN,AMINI,AMFIN,PINI,PFIN,
57 $ QPL,QMN,AM1SQ,AM2SQ,ROOT,P1PL,P1MN,P2PL,P2MN,X,EML
58 INTEGER NTRY,K,IQ1,IQ2,IFL1,IFL2,LISTJ,IQ,NTRY2,IFL,LISTW,I
59 REAL ZZSTAR
60 INTEGER IZSTAR,JVIR,N0J
61C
62 DATA LISTJ/
63 $9,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,
64 $11,-11,12,-12,13,-13,14,-14,15,-15,16,-16,
65 $10,80,-80,90/
66 DATA LISTW/10,80,-80,90,92/
67 ACOSH(XXX)=ALOG(XXX+SQRT(XXX**2-1.))
68 ASINH(XXX)=ALOG(XXX+SQRT(XXX**2+1.))
69C
70C Entry
71C
72 NPTCL=0
73 NTRY=0
74200 CONTINUE
75 SIGMA=0.
76 WT=1.
77 1 CONTINUE
78 NTRY=NTRY+1
79 IF(NTRY.GT.NTRIES) GO TO 999
80 SUMWT=SUMWT+SIGMA*WT/(NEVOLV*NFRGMN)
81 NKINPT=NKINPT+1
82 SIGMA=0.
83 WT=1.
84 DO 2 K=1,3
85 2 SIGSL(K)=0
86C Choose interval for cross section calculation
87 CHOOSE=RANF()
88 SUM=0.
89 DO 3 K=NKL,NKH
90 SUM=SUM+QSELWT(K)
91 IF(CHOOSE.LE.SUM) GO TO 30
923 CONTINUE
9330 KSEL=K
94C Generate QTW in selected region
95 IF(.NOT.FIXQT) THEN
96 ETA=(PTGN(1,K)+PTGN(2,K)*RANF())**PTGN(3,K)
97 PTSEL(K)=SQRT(ETA-RNU2(K))
98 PTDEN=ALOG(ETA)*PTPOW(K)
99 WTFAC(1)=ALOG(ABS(PTGN(2,K)))+ALOG(ABS(PTGN(3,K)))
100 1 +ALOG(ABS(PTSEL(K)**2+RNU2(K)))*((PTGN(3,K)-1.)/PTGN(3,K))
101 PT(3)=PTSEL(K)
102 ELSE
103 PTDEN=0.
104 WTFAC(1)=-1000.
105 ENDIF
106C Generate QMW
107 IF(.NOT.FIXQM) THEN
108 IF(.NOT.K.EQ.2) THEN
109 QSEL(K)=QMAX**2*(QGEN(1,K)+QGEN(2,K)*RANF())**QGEN(3,K)
110 QDEN=ALOG(QSEL(K)/QMAX**2)*QPOW(K)
111 WTFAC(2)=ALOG(ABS(QGEN(2,K)))+ALOG(ABS(QGEN(3,K)))
112 1 +ALOG(QSEL(K)/QMAX**2)*((QGEN(3,K)-1.)/QGEN(3,K))
113 2 +ALOG(QMAX**2)
114 QSEL(K)=SQRT(QSEL(K))
115 QMW=QSEL(K)
116 ELSE
117 ETA=QGEN(3,K)*TAN(QGEN(1,K)+QGEN(2,K)*RANF())
118 QSEL(K)=SQRT(ETA+EMSQ)
119 WTFAC(2)=ALOG(QGEN(2,K))+ALOG(QGEN(3,K))
120 1 +ALOG((ETA/QGEN(3,K))**2+1.)
121 QMW=QSEL(K)
122 QDEN=ALOG((QMW**2-EMSQ)**2+EMGAM**2)
123 ENDIF
124 ELSE
125 QDEN=0.
126 WTFAC(2)=-1000.
127 ENDIF
128 SIGSL(K)=EXP(ANORM(K)-PTDEN-QDEN)
129C
130 IF(STDDY) THEN
131 WT=EXP(WTFAC(2)-ALOG(QSELWT(K)))
132 ELSE
133 WT=EXP(WTFAC(1)+WTFAC(2)-ALOG(QSELWT(K)))
134 ENDIF
135 QTW=PT(3)
136 YW=YWMIN+(YWMAX-YWMIN)*RANF()
137 WT=WT*(YWMAX-YWMIN)
138 PHIW=PHWMIN+(PHWMAX-PHWMIN)*RANF()
139 PHI(3)=AMOD(PHIW+PI,2.*PI)
140 QPW=SQRT(QTW**2+QMW**2)*SINH(YW)
141 QW=SQRT(QTW**2+QPW**2)
142 THW=QPW/QW
143 IF(ABS(THW).GT.1.) THW=SIGN(1.,THW)
144 THW=ACOS(THW)
145 IF(THW.LT.THWMIN-1.E-6.OR.THW.GT.THWMAX+1.E-6) GOTO 1
146 XW=QPW/HALFE
147 IF(XW.LT.XWMIN.OR.XW.GT.XWMAX) GOTO 1
148 IF(.NOT.STDDY) THEN
149 IF(.NOT.YGENJ(3)) GOTO 1
150 P(3)=PT(3)/STH(3)
151 XJ(3)=P(3)*CTH(3)/HALFE
152 IF(XJ(3).LT.XJMIN(3).OR.XJ(3).GT.XJMAX(3)) GOTO 1
153 ENDIF
154C
155C Check integrated cross section
156C
157 IF(NOGOOD(2)) GO TO 1
158 SUMWT=SUMWT+SIGMA*WT/(NEVOLV*NFRGMN)
159 NWGEN=NWGEN+1
160 S12=QMW**2
161C
162C No decay for KKG:
163C For compatibility reasons, the jet is still the 3rd one.
164C Jets 1 and 2 (W decay products) are voided; no decay step.
165C
166 IF(KEYS(11)) THEN
167 DO 50 I=1,2
168 P(I)=0.
169 PT(I)=0.
170 CTH(I)=0.
171 PHI(I)=0.
172 EMSQL(I)=0.
173 IDJETS(I)=0
17450 CONTINUE
175 GOTO 350
176 ENDIF
177C
178C Select W decay mode
179C QMW dependence neglected in branching ratios
180C BRANCH is cum. br. with heavy modes subtracted.
181C
182 IF(KEYS(3)) THEN
183 BRANCH(1)=0.
184 SUMBR=0.
185 DO 105 IQ1=2,25
186 IQ2=MATCH(IQ1,JWTYP)
187 IF(IQ2.EQ.0) THEN
188 BRMODE=0.
189 ELSE
190 BRMODE=WCBR(IQ1,JWTYP)-WCBR(IQ1-1,JWTYP)
191 IFL1=LISTJ(IQ1)
192 IFL2=LISTJ(IQ2)
193 IF(S12.LE.(AMASS(IFL1)+AMASS(IFL2))**2) BRMODE=0.
194 ENDIF
195 BRANCH(IQ1)=BRANCH(IQ1-1)+BRMODE
196 SUMBR=SUMBR+BRMODE
197105 CONTINUE
198 BRINV=1./SUMBR
199C
200 TRY=RANF()
201 DO 110 IQ=1,25
202 IF(TRY.LT.BRANCH(IQ)*BRINV.AND.MATCH(IQ,JWTYP).NE.0) THEN
203 JETTYP(1)=IQ
204 JETTYP(2)=MATCH(IQ,JWTYP)
205 GO TO 120
206 ENDIF
207110 CONTINUE
208 ENDIF
209C
210120 IF(GOMSSM) THEN
211 IFL1=LISTSS(JETTYP(1))
212 IFL2=LISTSS(JETTYP(2))
213 ELSE
214 IFL1=LISTJ(JETTYP(1))
215 IFL2=LISTJ(JETTYP(2))
216 ENDIF
217C
218C Select masses of decay products. These are just normal masses
219C except for Z Z* decay of Higgs, where one is virtual.
220C
221 EML(1)=AMASS(IFL1)
222 EML(2)=AMASS(IFL2)
223 IF(KEYS(7).AND.EML(1)+EML(2).GT.QMW) THEN
224C WW* or ZZ* decay - generate/check W* or Z* mass
225 IF((IABS(IFL1).EQ.80.AND.IABS(IFL2).EQ.80)
226 $ .OR.(IFL1.EQ.90.AND.IFL2.EQ.90)) THEN
227 IZSTAR=3-2*RANF()
228 IF(GOMSSM) THEN
229 JVIR=JETTYP(IZSTAR)-76
230 ELSE
231 JVIR=JETTYP(IZSTAR)-25
232 ENDIF
233 EML(IZSTAR)=ZZSTAR(QMW,JVIR)
234 IF(EML(IZSTAR).LT.ZSTARS(JVIR,IZSTAR)) GO TO 200
235C Other decay - invalid for this QMW
236 ELSE
237 GO TO 200
238 ENDIF
239 ENDIF
240C
241C Generate W decay in its rest frame and compare with SIGDY2.
242C First set up momenta of decay products:
243C
244 EMSQL(1)=EML(1)**2
245 EMSQL(2)=EML(2)**2
246 EL(1)=(S12+EMSQL(1)-EMSQL(2))/(2.*QMW)
247 EL(2)=(S12+EMSQL(2)-EMSQL(1))/(2.*QMW)
248 PL12=SQRT((S12-(EML(1)+EML(2))**2)*(S12-(EML(1)-EML(2))**2))
249 $/(2.*QMW)
250C W momentum
251 PREST(1)=QTW*COS(PHIW)
252 PREST(2)=QTW*SIN(PHIW)
253 PREST(3)=QPW
254 PREST(4)=SQRT(QW**2+QMW**2)
255 PREST(5)=QMW
256 NTRY2=0
257C Generate next W decay
25820 CONTINUE
259 NTRY2=NTRY2+1
260 IF(NTRY2.GT.NTRIES) GO TO 999
261 COSTHL=2.*RANF()-1.
262 THL=ACOS(COSTHL)
263 PHL=2.*PI*RANF()
264 PTL=PL12*SIN(THL)
265C
266 DO 300 I=1,2
267 SGN=3-2*I
268 PL(1)=SGN*PTL*COS(PHL)
269 PL(2)=SGN*PTL*SIN(PHL)
270 PL(3)=SGN*PL12*COSTHL
271 PL(4)=EL(I)
272 PL(5)=EML(I)
273C Boost with W momentum
274 BP=0.
275 DO 310 K=1,3
276310 BP=BP+PL(K)*PREST(K)
277 BP=BP/PREST(5)
278 DO 320 K=1,3
279320 PL(K)=PL(K)+PREST(K)*PL(4)/PREST(5)
280 $ +PREST(K)*BP/(PREST(4)+PREST(5))
281 PL(4)=PL(4)*PREST(4)/PREST(5)+BP
282C Fill common blocks
283 PT(I)=SQRT(PL(1)**2+PL(2)**2)
284 P(I)=SQRT(PT(I)**2+PL(3)**2)
285 IF(PT(I).GT.0.) THEN
286 PHI(I)=ATAN2(PL(2),PL(1))
287 ELSE
288 PHI(I)=(I-1)*PI
289 ENDIF
290 IF(PHI(I).LT.0.) PHI(I)=PHI(I)+2.*PI
291 CTH(I)=PL(3)/P(I)
292 STH(I)=PT(I)/P(I)
293 TH(I)=ACOS(CTH(I))
294 XJ(I)=PL(3)/HALFE
295 IF(CTH(I).GT.0.) THEN
296 PLPL=PL(4)+PL(3)
297 PLMN=(PT(I)**2+EMSQL(I))/PLPL
298 ELSE
299 PLMN=PL(4)-PL(3)
300 PLPL=(PT(I)**2+EMSQL(I))/PLMN
301 ENDIF
302 YJ(I)=.5*ALOG(PLPL/PLMN)
303300 CONTINUE
304C
305C Test cross section
306C Extra kinematics for W+W->W+W
307C
308 IF(KEYS(7).OR.KEYS(9)) THEN
309 SHAT=S12
310 IF(GOMSSM) THEN
311 AMINI=AMASS(LISTSS(INITYP(1)))
312 ELSE
313 AMINI=AMASS(LISTJ(INITYP(1)))
314 ENDIF
315 AMFIN=EML(1)
316 PINI=.5*SQRT(S12-4.*AMINI**2)
317 PFIN=PL12
318 THAT=AMINI**2+AMFIN**2-.5*S12+2.*PINI*PFIN*COSTHL
319 UHAT=AMINI**2+AMFIN**2-.5*S12-2.*PINI*PFIN*COSTHL
320 ENDIF
321C
322C Check W decay
323C
324 IF(NOGOOD(3)) GO TO 20
325C
326C Check W decay with kinematic limits
327C
328 IF(NOGOOD(4)) GO TO 200
329350 NKEEP=NKEEP+1
330C
331C Set PBEAM
332C
333 PBEAM(1)=(1.-X1)*HALFE
334 PBEAM(2)=(1.-X2)*HALFE
335 IF(NJET.LT.3) GO TO 502
336 IFL=LISTJ(JETTYP(3))
337 EMSQL(3)=AMASS(IFL)**2
338502 CONTINUE
339C
340C Set PJETS
341C
342 IF(KEYS(11)) THEN
343 N0J=3
344 ELSE
345 N0J=1
346 ENDIF
347 DO 501 I=N0J,NJET
348 PJETS(3,I)=P(I)*CTH(I)
349 PJETS(1,I)=PT(I)*COS(PHI(I))
350 PJETS(2,I)=PT(I)*SIN(PHI(I))
351 PJETS(4,I)=SQRT(P(I)**2+EMSQL(I))
352 PJETS(5,I)=SQRT(EMSQL(I))
353 IF(KEYS(7).AND.GOMSSM) THEN
354 IDJETS(I)=LISTSS(JETTYP(I))
355 ELSE
356 IDJETS(I)=LISTJ(JETTYP(I))
357 ENDIF
358501 CONTINUE
359C No technicolor IDENT's defined, so...
360 IF(KEYS(3)) THEN
361 IDENTW=LISTW(JWTYP)
362 ELSEIF(KEYS(7).AND..NOT.GOMSSM) THEN
363 IDENTW=81
364 ELSEIF(KEYS(7).AND.GOMSSM) THEN
365 IDENTW=IHTYPE
366 ELSEIF(KEYS(11)) THEN
367 IDENTW=92
368 ELSE
369 IDENTW=0
370 ENDIF
371C W momentum in /PJETS/
372 IF(KEYS(11)) THEN
373 QWJET(1)=QTW*COS(PHIW)
374 QWJET(2)=QTW*SIN(PHIW)
375 QWJET(3)=QPW
376 QWJET(4)=SQRT(QW**2+QMW**2)
377 QWJET(5)=QMW
378 ELSE
379 DO 503 K=1,4
380503 QWJET(K)=PJETS(K,1)+PJETS(K,2)
381 QWJET(5)=QMW
382 ENDIF
383C
384C Set PINITS
385 DO 504 I=1,2
386 IF(KEYS(7).AND.GOMSSM) THEN
387 IDINIT(I)=LISTSS(INITYP(I))
388 ELSE
389 IDINIT(I)=LISTJ(INITYP(I))
390 ENDIF
391 PINITS(5,I)=AMASS(IDINIT(I))
392 PINITS(1,I)=0.
393 PINITS(2,I)=0.
394504 CONTINUE
395C Calculate total momentum
396 QPL=QWJET(4)+QWJET(3)
397 QMN=QWJET(4)-QWJET(3)
398 IF(NJET.EQ.3) THEN
399 QPL=QPL+PJETS(4,3)+PJETS(3,3)
400 QMN=QMN+PJETS(4,3)-PJETS(3,3)
401 ENDIF
402C and solve initial kinematics
403 AM1SQ=PINITS(5,1)**2
404 AM2SQ=PINITS(5,2)**2
405 ROOT=SQRT((QPL*QMN-AM1SQ-AM2SQ)**2-4.*AM1SQ*AM2SQ)
406 P1PL=(QPL*QMN+AM1SQ-AM2SQ+ROOT)/(2.*QMN)
407 P1MN=AM1SQ/P1PL
408 P2MN=(QPL*QMN+AM2SQ-AM1SQ+ROOT)/(2.*QPL)
409 P2PL=AM2SQ/P2MN
410 PINITS(3,1)=.5*(P1PL-P1MN)
411 PINITS(4,1)=.5*(P1PL+P1MN)
412 PINITS(3,2)=.5*(P2PL-P2MN)
413 PINITS(4,2)=.5*(P2PL+P2MN)
414 RETURN
415C
416999 CALL PRTEVT(0)
417 WRITE(ITLIS,9999) NTRIES
4189999 FORMAT(//' IT IS TAKING MORE THAN',I5,' TRIES TO GENERATE AN',
419 C' EVENT. CHECK LIMITS OR INCREASE NTRIES')
420 STOP 99
421 END