1 #include "isajet/pilot.h"
4 C Generate QMW (and QTW) for DRELLYAN or HIGGS event using
5 C integrated cross section. Then generate decay -- for HIGGS,
6 C the mode must be chosen using the integrated cross sections
7 C because of interference with W+W->W+W scattering.
9 C Note that NOGOOD calls the cross section.
11 C Ver. 6.40: Add technicolor resonances. Use logs for QDEN,
12 C PTDEN, WTFAC, etc. Also scale QMW generation by QMAX.
14 C Ver. 7.01: Correct QDEN to correspond to correct fit form:
15 C SIGMA = ANOMR(K)*(QMAX**2/Q**2)**QPOW
18 C Ver. 7.14: Add SUSY Higgs
19 C Ver. 7.15: Fix bug with THETAW limits by adding epsilon to
20 C allowed range. Check for possible invalid Higgs decays.
22 #if defined(CERNLIB_IMPNONE)
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"
49 DIMENSION PREST(5),PL(5),EL(3),EML(3),EMSQL(3)
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
60 INTEGER IZSTAR,JVIR,N0J
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,
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.))
79 IF(NTRY.GT.NTRIES) GO TO 999
80 SUMWT=SUMWT+SIGMA*WT/(NEVOLV*NFRGMN)
86 C Choose interval for cross section calculation
91 IF(CHOOSE.LE.SUM) GO TO 30
94 C Generate QTW in selected region
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))
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))
114 QSEL(K)=SQRT(QSEL(K))
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.)
122 QDEN=ALOG((QMW**2-EMSQ)**2+EMGAM**2)
128 SIGSL(K)=EXP(ANORM(K)-PTDEN-QDEN)
131 WT=EXP(WTFAC(2)-ALOG(QSELWT(K)))
133 WT=EXP(WTFAC(1)+WTFAC(2)-ALOG(QSELWT(K)))
136 YW=YWMIN+(YWMAX-YWMIN)*RANF()
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)
143 IF(ABS(THW).GT.1.) THW=SIGN(1.,THW)
145 IF(THW.LT.THWMIN-1.E-6.OR.THW.GT.THWMAX+1.E-6) GOTO 1
147 IF(XW.LT.XWMIN.OR.XW.GT.XWMAX) GOTO 1
149 IF(.NOT.YGENJ(3)) GOTO 1
151 XJ(3)=P(3)*CTH(3)/HALFE
152 IF(XJ(3).LT.XJMIN(3).OR.XJ(3).GT.XJMAX(3)) GOTO 1
155 C Check integrated cross section
157 IF(NOGOOD(2)) GO TO 1
158 SUMWT=SUMWT+SIGMA*WT/(NEVOLV*NFRGMN)
163 C For compatibility reasons, the jet is still the 3rd one.
164 C Jets 1 and 2 (W decay products) are voided; no decay step.
178 C Select W decay mode
179 C QMW dependence neglected in branching ratios
180 C BRANCH is cum. br. with heavy modes subtracted.
190 BRMODE=WCBR(IQ1,JWTYP)-WCBR(IQ1-1,JWTYP)
193 IF(S12.LE.(AMASS(IFL1)+AMASS(IFL2))**2) BRMODE=0.
195 BRANCH(IQ1)=BRANCH(IQ1-1)+BRMODE
202 IF(TRY.LT.BRANCH(IQ)*BRINV.AND.MATCH(IQ,JWTYP).NE.0) THEN
204 JETTYP(2)=MATCH(IQ,JWTYP)
211 IFL1=LISTSS(JETTYP(1))
212 IFL2=LISTSS(JETTYP(2))
214 IFL1=LISTJ(JETTYP(1))
215 IFL2=LISTJ(JETTYP(2))
218 C Select masses of decay products. These are just normal masses
219 C except for Z Z* decay of Higgs, where one is virtual.
223 IF(KEYS(7).AND.EML(1)+EML(2).GT.QMW) THEN
224 C 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
229 JVIR=JETTYP(IZSTAR)-76
231 JVIR=JETTYP(IZSTAR)-25
233 EML(IZSTAR)=ZZSTAR(QMW,JVIR)
234 IF(EML(IZSTAR).LT.ZSTARS(JVIR,IZSTAR)) GO TO 200
235 C Other decay - invalid for this QMW
241 C Generate W decay in its rest frame and compare with SIGDY2.
242 C First set up momenta of decay products:
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))
251 PREST(1)=QTW*COS(PHIW)
252 PREST(2)=QTW*SIN(PHIW)
254 PREST(4)=SQRT(QW**2+QMW**2)
257 C Generate next W decay
260 IF(NTRY2.GT.NTRIES) GO TO 999
268 PL(1)=SGN*PTL*COS(PHL)
269 PL(2)=SGN*PTL*SIN(PHL)
270 PL(3)=SGN*PL12*COSTHL
273 C Boost with W momentum
276 310 BP=BP+PL(K)*PREST(K)
279 320 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
283 PT(I)=SQRT(PL(1)**2+PL(2)**2)
284 P(I)=SQRT(PT(I)**2+PL(3)**2)
286 PHI(I)=ATAN2(PL(2),PL(1))
290 IF(PHI(I).LT.0.) PHI(I)=PHI(I)+2.*PI
295 IF(CTH(I).GT.0.) THEN
297 PLMN=(PT(I)**2+EMSQL(I))/PLPL
300 PLPL=(PT(I)**2+EMSQL(I))/PLMN
302 YJ(I)=.5*ALOG(PLPL/PLMN)
306 C Extra kinematics for W+W->W+W
308 IF(KEYS(7).OR.KEYS(9)) THEN
311 AMINI=AMASS(LISTSS(INITYP(1)))
313 AMINI=AMASS(LISTJ(INITYP(1)))
316 PINI=.5*SQRT(S12-4.*AMINI**2)
318 THAT=AMINI**2+AMFIN**2-.5*S12+2.*PINI*PFIN*COSTHL
319 UHAT=AMINI**2+AMFIN**2-.5*S12-2.*PINI*PFIN*COSTHL
324 IF(NOGOOD(3)) GO TO 20
326 C Check W decay with kinematic limits
328 IF(NOGOOD(4)) GO TO 200
333 PBEAM(1)=(1.-X1)*HALFE
334 PBEAM(2)=(1.-X2)*HALFE
335 IF(NJET.LT.3) GO TO 502
337 EMSQL(3)=AMASS(IFL)**2
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))
356 IDJETS(I)=LISTJ(JETTYP(I))
359 C No technicolor IDENT's defined, so...
362 ELSEIF(KEYS(7).AND..NOT.GOMSSM) THEN
364 ELSEIF(KEYS(7).AND.GOMSSM) THEN
366 ELSEIF(KEYS(11)) THEN
371 C W momentum in /PJETS/
373 QWJET(1)=QTW*COS(PHIW)
374 QWJET(2)=QTW*SIN(PHIW)
376 QWJET(4)=SQRT(QW**2+QMW**2)
380 503 QWJET(K)=PJETS(K,1)+PJETS(K,2)
386 IF(KEYS(7).AND.GOMSSM) THEN
387 IDINIT(I)=LISTSS(INITYP(I))
389 IDINIT(I)=LISTJ(INITYP(I))
391 PINITS(5,I)=AMASS(IDINIT(I))
395 C Calculate total momentum
396 QPL=QWJET(4)+QWJET(3)
397 QMN=QWJET(4)-QWJET(3)
399 QPL=QPL+PJETS(4,3)+PJETS(3,3)
400 QMN=QMN+PJETS(4,3)-PJETS(3,3)
402 C and solve initial kinematics
405 ROOT=SQRT((QPL*QMN-AM1SQ-AM2SQ)**2-4.*AM1SQ*AM2SQ)
406 P1PL=(QPL*QMN+AM1SQ-AM2SQ+ROOT)/(2.*QMN)
408 P2MN=(QPL*QMN+AM2SQ-AM1SQ+ROOT)/(2.*QPL)
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)
417 WRITE(ITLIS,9999) NTRIES
418 9999 FORMAT(//' IT IS TAKING MORE THAN',I5,' TRIES TO GENERATE AN',
419 C' EVENT. CHECK LIMITS OR INCREASE NTRIES')