4 *CMZ :- -26/04/91 14.55.44 by Federico Carminati
6 *-- Author : Giovanni Abbiendi & Luca Stanco
8 C----------------------------------------------------------------------
12 C----------------------------------------------------------------------
14 C DEEP INELASTIC LEPTON-HADRON SCATTERING: MEAN EVWGT = SIGMA IN NB
16 C----------------------------------------------------------------------
18 INCLUDE 'HERWIG61.INC'
20 DOUBLE PRECISION HWR,HWRUNI,HWUPCM,PRAN,PROB,SAMP,SIG,Q2,
22 & XBJ,Y,W,S,MLEP,MHAD,MLSCAT,LEP,YMIN,YMAX,XXMAX,Q2JAC,XXJAC,
24 & JACOBI,A1,A2,A3,B1,B2,PCM,PCMEP,PCMLW,PCMEQ,PCMLQ,COSPHI,PA,
26 & EQ,PZQ,SHAT,PROP,DLEFT,DRGHT,DUP,DWN,FACT,EFACT,OMY2,YPLUS,
28 & YMNUS,SIGMA,AF(7,12),SMA,Q2SUP,HWUAEM,DCHRG,DNEUT
30 INTEGER I,IQK,IQKIN,IQKOUT,IDSCAT,IHAD,ILEPT
34 EXTERNAL HWR,HWRUNI,HWUPCM
36 SAVE MLEP,MHAD,S,SMA,PCM,MLSCAT,A1,A2,A3,B1,B2,DLEFT,DRGHT,Q2,
38 & AF,XBJ,Y,YPLUS,YMNUS,OMY2,FACT,EFACT,SIGMA,IDSCAT,CHARGD,
40 & ILEPT,DCHRG,DNEUT,LEP
46 IF (JDAHEP(1,IHAD).NE.0) IHAD=JDAHEP(1,IHAD)
48 IF (FSTWGT.OR.IHAD.NE.2) THEN
50 C---INITIALISE PROCESS (MUST BE DONE EVERY TIME IF S VARIES)
52 C---LEPTON AND HADRON MASSES, INVARIANT MASS, MOMENTUM IN C.M. FRAME
62 PCM=HWUPCM(SQRT(S),MLEP,MHAD)
64 C---LEP = 1 FOR LEPTONS, -1 FOR ANTILEPTONS
66 IF (IDHW(1).GE.121.AND.IDHW(1).LE.126) THEN
70 ELSEIF (IDHW(1).GE.127.AND.IDHW(1).LE.132) THEN
76 CALL HWWARN('HWHDIS',500,*999)
80 DCHRG=FLOAT(MOD(IDHW(1) ,2))
82 DNEUT=FLOAT(MOD(IDHW(1)+1,2))
84 ILEPT=MOD(IDHW(1)-121,6)+11
86 C---DLEFT,DRIGHT = 1,0 for leptons; = 0,1 for anti-leptons
92 CHARGD=MOD(IPROC,100)/10.EQ.1
94 C---Evaluate constant factor in cross section and
96 C find and store scattered lepton identity
100 IF ((EPOLN(3)-PPOLN(3)).EQ.ONE) THEN
104 CALL HWWARN('HWHDIS',501,*999)
106 5 FORMAT(1X,'WARNING: Cross-section is zero for the',
108 & ' specified lepton helicity')
112 FACT=GEV2NB*(ONE-(EPOLN(3)-PPOLN(3)))*.25D0*PIFAC
114 & /(SWEIN*RMASS(198)**2)**2
116 IDSCAT=IDHW(1)+NINT(DCHRG-DNEUT)
120 FACT=GEV2NB*TWO*PIFAC
128 C---PARAMETERS USED FOR THE WEIGHT GENERATION IN NEUTRAL CURRENT
130 C PROCESSES. ASSUME D(SIGMA)/D(Q**2) GOES LIKE A1+A2/Q**2+A3/Q**4
132 C AND D(SIGMA)/D(X) LIKE B1+B2/X
148 C---GENERATE EVENT (KINEMATICAL VARIABLES AND STRUCTURE FUNCTION
156 C---CHARGED CURRENT PROCESS
160 C---FIND FLAVOUR OF THE STRUCK QUARK (IF NOT SELECTED BY THE USER)
172 & ((DCHRG*(DLEFT*DUP+DRGHT*DWN*OMY2)
174 & +DNEUT*(DLEFT*DWN+DRGHT*DUP*OMY2))*DISF(I ,1)
176 & +(DCHRG*(DLEFT*DWN*OMY2+DRGHT*DUP)
178 & +DNEUT*(DLEFT*DUP*OMY2+DRGHT*DWN))*DISF(I+6,1))
180 IF (PROB.GE.PRAN) GOTO 20
196 IF ((LEP.EQ. 1.AND.MOD(IQK+IDHW(1),2).EQ.0)
198 & .OR.(LEP.EQ.-1.AND.MOD(IQK+IDHW(1),2).EQ.1)) IQKIN=IQK+6
200 C---FIND FLAVOUR OF THE OUTGOING QUARK
210 PROB=PROB+VCKM(IQK/2,I)
212 IF (PROB.GE.PRAN) GOTO 40
220 IF (IQKIN.GT.6) IQKOUT=IQKOUT+6
226 PROB=PROB+VCKM(I,(IQK+1)/2)
228 IF (PROB.GE.PRAN) GOTO 60
236 IF (IQKIN.GT.6) IQKOUT=IQKOUT+6
242 C---NEUTRAL CURRENT PROCESS
248 PROB=EFACT*(AF(1,IQK)*YPLUS*DISF(IQK,1)+
250 & LEP*AF(3,IQK)*YMNUS*DISF(IQK,1))
252 IF (PROB.LT.PRAN) IQKIN=IQK+6
256 C---FIND FLAVOUR OF THE STRUCK QUARK (IF NOT SELECTED BY THE USER)
266 PROB=PROB+EFACT*(AF(1,I)*YPLUS*DISF(I,1)+
268 & LEP*SIG*AF(3,I)*YMNUS*DISF(I,1))
270 IF (PROB.GE.PRAN) GOTO 80
304 C---CHECK PHASE SPACE WITH THE SELECTED FLAVOUR. IF OUTSIDE THE
308 PA=XBJ*(PHEP(4,IHAD)+ABS(PHEP(3,IHAD)))
310 EQ=HALF*(PA+RMASS(IDN(2))**2/PA)
314 SHAT=(PHEP(4,1)+EQ)**2-(PHEP(3,1)+PZQ)**2
316 PCMEQ=HWUPCM(SQRT(SHAT),MLEP,RMASS(IDN(2)))
318 PCMLQ=HWUPCM(SQRT(SHAT),MLSCAT,RMASS(IDN(4)))
320 IF (PCMLQ.LT.ZERO) THEN
322 CALL HWWARN('HWHDIS',101,*999)
324 ELSEIF (PCMLQ.EQ.ZERO) THEN
330 COSTH=(TWO*SQRT(PCMEQ**2+MLEP**2)*SQRT(PCMLQ**2+MLSCAT**2)
332 & -(Q2+MLEP**2+MLSCAT**2))/(TWO*PCMEQ*PCMLQ)
336 IF (ABS(COSTH).GT.ONE) CALL HWWARN('HWHDIS',102,*999)
348 C---CHOOSE X,Y (CC PROCESS)
350 YMIN=MAX(YBMIN,Q2MIN/SMA)
354 IF (YMIN.GT.YMAX) GOTO 999
356 Y=HWRUNI(0,YMIN,YMAX)
360 XXMAX=MIN(Q2MAX/SMA/Y,ONE)
362 IF (XXMIN.GT.XXMAX) GOTO 999
364 XBJ=HWRUNI(0,XXMIN,XXMAX)
366 Q2=XBJ*Y*(S-MLEP**2-MHAD**2)
368 JACOBI=(YMAX-YMIN)*(XXMAX-XXMIN)*(S-MLEP**2-MHAD**2)*XBJ
372 C---CHOOSE X,Q**2 (NC PROCESS)
374 Q2SUP=MIN(Q2MAX,SMA*YBMAX)
376 IF (Q2MIN.GT.Q2SUP) GOTO 999
378 SAMP=(A1+A2+A3)*HWR()
382 Q2=HWRUNI(0,Q2MIN,Q2SUP)
384 ELSEIF (SAMP.LE.(A1+A2)) THEN
386 Q2=EXP(HWRUNI(0,LOG(Q2MIN),LOG(Q2SUP)))
390 Q2=-ONE/HWRUNI(0,-ONE/Q2MIN,-ONE/Q2SUP)
398 & +A2/LOG(Q2SUP/Q2MIN)/Q2
400 & +A3*Q2MIN*Q2SUP/(Q2SUP-Q2MIN)/Q2**2)
406 IF (YBMIN.GT.ZERO) XXMAX=MIN(Q2/SMA/YBMIN,ONE)
408 IF (XXMIN.GT.XXMAX) GOTO 999
414 XBJ=HWRUNI(0,XXMIN,XXMAX)
418 XBJ=EXP(HWRUNI(0,LOG(XXMIN),LOG(XXMAX)))
422 XXJAC=(B1+B2)/(B1/(XXMAX-XXMIN)+B2/LOG(XXMAX/XXMIN)/XBJ)
424 Y=Q2/(S-MLEP**2-MHAD**2)/XBJ
430 C---CHECK IF THE GENERATED POINT IS INSIDE PHASE SPACE. IF NOT
432 C RETURN WITH WEIGHT EQUAL TO ZERO.
434 W=SQRT(MHAD**2+Q2*(ONE-XBJ)/XBJ)
436 IF (W.LT.WHMIN) RETURN
440 PCMLW=HWUPCM(SQRT(S),MLSCAT,W)
442 IF (PCMLW.LT.ZERO) THEN
448 ELSEIF (PCMLW.EQ.ZERO) THEN
456 & (TWO*SQRT(PCMEP**2+MLEP**2)*SQRT(PCMLW**2+MLSCAT**2)
458 & -(Q2+MLEP**2+MLSCAT**2))/(TWO*PCMEP*PCMLW)
462 IF (ABS(COSPHI).GT.ONE) THEN
470 C---SET SCALE EQUAL Q. EVALUATE STRUCTURE FUNCTIONS.
474 CALL HWSFUN(XBJ,EMSCA,IDHW(IHAD),NSTRU,DISF,2)
476 C---SWITCH OFF ANY FLAVOURS THAT ARE BELOW THRESHOLD
480 90 IF (W.LT.2*RMASS(I)) DISF(I,1)=0
482 C---EVALUATE DIFFERENTIAL CROSS SECTION
486 PROP=RMASS(198)**2/(Q2+RMASS(198)**2)
488 EFACT=FACT*(HWUAEM(-Q2)*PROP)**2/XBJ
500 IF (IQK.NE.0.AND.IQK.NE.I) GOTO 100
504 & ((DCHRG*(DLEFT*DUP+DRGHT*DWN*OMY2)
506 & +DNEUT*(DLEFT*DWN+DRGHT*DUP*OMY2))*DISF(I ,1)
508 & +(DCHRG*(DLEFT*DWN*OMY2+DRGHT*DUP)
510 & +DNEUT*(DLEFT*DUP*OMY2+DRGHT*DWN))*DISF(I+6,1))
516 EFACT=FACT/XBJ*(HWUAEM(-Q2)/Q2)**2
524 CALL HWUCFF(ILEPT,I,-Q2,AF(1,I))
536 IF (IQK.NE.0.AND.IQK.NE.I) GOTO 200
538 SIGMA=SIGMA+EFACT*(AF(1,I)*YPLUS*(DISF(I,1)+DISF(I+6,1))+
540 & LEP*AF(3,I)*YMNUS*(DISF(I,1)-DISF(I+6,1)))
546 C---FIND WEIGHT: DIFFERENTIAL CROSS SECTION TIME THE JACOBIAN FACTOR
550 IF (EVWGT.LT.ZERO) EVWGT=ZERO
558 *CMZ :- -18/05/99 12.41.07 by Mike Seymour
560 *-- Author : Bryan Webber, Ian Knowles and Mike Seymour
562 C-----------------------------------------------------------------------
566 C-----------------------------------------------------------------------
568 C Drell-Yan Production of fermion pairs via photon, Z0 & (if ZPRIME)
570 C Z' exchange. Lepton universality is assumed for photon and Z, and
572 C for Z' if no lepton flavour is specified.
574 C MEAN EVWGT = SIGMA IN NB
576 C-----------------------------------------------------------------------
578 INCLUDE 'HERWIG61.INC'
580 DOUBLE PRECISION HWR,HWRUNI,HWUAEM,EPS,C1,C2,C3,EMSQZ,EMGMZ,
582 & EMSQZP,EMGMZP,CQF(7,6,16),QPOW,RPOW,A01,A1,A02,A2,A03,A3,CRAN,
584 & EMJ1,EMJ2,EMJ3,EMJAC,FACT,QSQ,HCS,FACTR,RCS,EXTRA,PMAX,PTHETA
586 INTEGER IMODE,JQMN,JQMX,JQ,JLMN,JLMX,JL,IQ,I,IADD(2,2),ID1,ID2,
590 EXTERNAL HWR,HWRUNI,HWUAEM
592 SAVE HCS,JQMN,JQMX,JLMN,JLMX,C1,C2,C3,QPOW,RPOW,EMSQZ,EMGMZ,
594 & A1,A01,A2,A02,A3,A03,EMSQZP,EMGMZP,FACT,CQF
596 PARAMETER (EPS=1.D-9)
608 C Set limits for which particles to include
626 ELSEIF (IMODE.LE.10) THEN
632 ELSEIF (IMODE.EQ.50) THEN
638 ELSEIF (IMODE.GE.50.AND.IMODE.LE.60) THEN
644 ELSEIF (IMODE.EQ.99) THEN
656 CALL HWWARN('HWHDYP',500,*999)
660 C Set up parameters for importance sampling:
662 C sum of power law and two Breit-Wigners (relative weights C1,C2,C3)
672 IF (EMPOW.EQ.ONE) CALL HWWARN('HWHDYP',501,*999)
674 IF (C2.EQ.ZERO) CALL HWWARN('HWHDYP',502,*999)
676 IF (C3.EQ.ZERO.AND.ZPRIME) CALL HWWARN('HWHDYP',503,*999)
684 EMGMZ=RMASS(200)*GAMZ
688 A1=(EMMAX**QPOW-A01)/C1
690 A02=ATAN((EMMIN**2-EMSQZ)/EMGMZ)
692 A2=(ATAN((EMMAX**2-EMSQZ)/EMGMZ)-A02)/C2
698 EMGMZP=RMASS(202)*GAMZP
700 A03=ATAN((EMMIN**2-EMSQZP)/EMGMZP)
702 A3=(ATAN((EMMAX**2-EMSQZP)/EMGMZP)-A03)/C3
710 C Select a mass for the produced pair
712 CRAN=(C1+C2+C3)*HWR()
718 EMSCA=(A01+A1*CRAN)**RPOW
722 ELSEIF (CRAN.LT.C1+C2) THEN
728 QSQ=EMSQZ+EMGMZ*TAN(A02+A2*CRAN)
734 C Use Z' Breit-Wigner
738 QSQ=EMSQZP+EMGMZP*TAN(A03+A3*CRAN)
744 EMJ1=EMSCA**EMPOW/(1-EMPOW)*A1
746 EMJ2=((QSQ-EMSQZ)**2+EMGMZ**2)/(2*EMSCA*EMGMZ)*A2
750 EMJ3=((QSQ-EMSQZP)**2+EMGMZP**2)/(2*EMSCA*EMGMZP)*A3
752 EMJAC=(C1+C2+C3)/(1/EMJ1+1/EMJ2+1/EMJ3)
756 EMJAC=(C1+C2)/(1/EMJ1+1/EMJ2)
760 C Select initial momentum fractions
762 XXMIN=QSQ/PHEP(5,3)**2
768 FACT=-GEV2NB*HWUAEM(QSQ)**2*PIFAC*8*EMJAC*XLMIN
770 $ /(3*NCOLO*EMSCA**3)
772 C Store cross-section coefficients
778 IF (EMSCA.GT.2.*RMASS(JQ)) THEN
780 CALL HWUCFF(IQ,JQ,QSQ,CQF(1,IQ,JQ))
784 CALL HWVZRO(7,CQF(1,IQ,JQ))
792 IF (EMSCA.GT.2.*RMASS(JL)) THEN
794 CALL HWUCFF(IQ,JL,QSQ,CQF(1,IQ,JL))
798 CALL HWVZRO(7,CQF(1,IQ,JL))
814 C I=1 quark first, I=2 anti-quark first
822 IF (DISF(ID1,1).LT.EPS.OR.DISF(ID2,2).LT.EPS) GOTO 80
824 FACTR=FACT*DISF(ID1,1)*DISF(ID2,2)
836 HCS=HCS+FACTR*(CQF(1,IQ,JQ)*FLOAT(NCOLO)+3*HALF*QFCH(IQ)**4)
838 IF (GENEV.AND.HCS.GT.RCS) CALL HWHQCP(ID3,ID4,2143,50,*99)
842 HCS=HCS+FACTR*CQF(1,IQ,JQ)*FLOAT(NCOLO)
844 IF (GENEV.AND.HCS.GT.RCS) CALL HWHQCP(ID3,ID4,2143,50,*99)
850 C Lepton final states
858 HCS=HCS+FACTR*CQF(1,IQ,JL)
860 IF (GENEV.AND.HCS.GT.RCS) CALL HWHQCP(ID3,ID4,2134,50,*99)
890 C Select polar angle from distribution:
892 C CQF(1,IQ,JF)*(ONE+COSTH**2)+CQF(3,IQ,JF)*COSTH+EXTRA*(ONE+COSTH)
894 IF (ID1.EQ.ID3.OR.ID2.EQ.ID3) THEN
896 EXTRA=TWO*QFCH(ID3)**4/NCOLO
904 PMAX=2.*(CQF(1,IQ,JF)+EXTRA)+ABS(CQF(3,IQ,JF))
906 100 COSTH=HWRUNI(0,-ONE,ONE)
908 PTHETA=CQF(1,IQ,JF)*(ONE+COSTH**2)+CQF(3,IQ,JF)*COSTH
912 IF (PTHETA.LT.PMAX*HWR()) GOTO 100
914 IF (ID1.GT.ID2) COSTH=-COSTH
924 *CMZ :- -19/03/92 10.13.56 by Mike Seymour
926 *-- Author : Mike Seymour
928 C-----------------------------------------------------------------------
932 C----------------------------------------------------------------------
934 C HARD PROCESS: EE --> EEGAMGAM --> EEFFBAR/WW
936 C MEAN EVENT WEIGHT = CROSS-SECTION IN NB
938 C AFTER CUTS ON PT AND MASS OF CENTRE-OF-MASS SYSTEM
940 C AND COS(THETA) IN CENTRE-OF-MASS SYSTEM
942 C AND TIMES BRANCHING FRACTION IF WW
944 C-----------------------------------------------------------------------
946 INCLUDE 'HERWIG61.INC'
948 DOUBLE PRECISION HWR,HWULDO,EMSQ,BETA,S,T,U,TMIN,TMAX,TRAT,
950 & DSDT,PROB,X,Z(2),ZMIN,ZMAX,PCMIN,PCMAX,PCFAC,PLOGMI,PLOGMA,PTCMF,
952 & Q,PC,BLOG,EMCMIN,EMCMAX,EMLMIN,EMLMAX,WGT(6),RWGT,CV,CA,BR,QT(2),
954 & QX(2),QY(2),PX,PY,ROOTS,DOT,A,B,C,SHAT,PCF(2),PCM(2),PCMAC,ZZ(2),
958 INTEGER I,IGAM,ID,IDL,ID1,ID2,IHEP,JHEP,NADD,NTRY,NQ,JGAM
962 EXTERNAL HWR,HWULDO,HWRLOG
964 SAVE S,BETA,X,ID,NQ,WGT,EMLMIN,EMLMAX,PCFAC,PLOGMA,PLOGMI,SHAT,
966 & PCF,PCM,Z,PCMAC,NADD
968 IF (IERROR.NE.0) RETURN
970 C---INITIALIZE LOCAL COPIES OF EMMIN,EMMAX
982 C---CHOOSE Z1,Z2 AND CALCULATE SUB-PROCESS CROSS-SECTION
986 C-----FIND FINAL STATE PARTICLES
1000 ELSEIF (IHPRO.LE.6) THEN
1012 ELSEIF (IHPRO.LE.9) THEN
1024 ELSEIF (IHPRO.LE.10) THEN
1034 CALL HWWARN('HWHEGG',200,*999)
1038 C-----SPLIT ELECTRONS TO PHOTONS
1044 S=2*HWULDO(PHEP(1,1),PHEP(1,2))
1048 EMCMIN=MAX(EMLMIN,MAX(2*RMASS(ID),PTMIN))
1050 EMCMAX=MIN(EMLMAX,ROOTS)
1052 IF (EMCMIN.GT.EMCMAX) RETURN
1056 ZMAX=1-PHEP(5,1)/PHEP(4,1)
1058 IF (ZMIN.GT.ZMAX) RETURN
1060 CALL HWEGAM(1,ZMIN,ZMAX,.TRUE.)
1062 Z(1)=PHEP(4,NHEP-1)/PHEP(4,1)
1064 ZMIN=EMCMIN**2/(Z(1)*S)
1066 ZMAX=MIN(EMCMAX**2/(Z(1)*S), ONE-PHEP(5,2)/PHEP(4,2))
1068 IF (ZMIN.GT.ZMAX) RETURN
1070 CALL HWEGAM(2,ZMIN,ZMAX,.TRUE.)
1072 Z(2)=PHEP(4,NHEP-1)/PHEP(4,2)
1078 C-----REMOVE LOG TERMS FROM WEIGHT, CALCULATE NEW ONES FROM PT LIMITS
1080 GAMWT=GAMWT/(0.5*LOG((1-Z(1))*S/(Z(1)*PHEP(5,1)**2))
1082 & *0.5*LOG((1-Z(2))*Z(1)*S/(Z(2)*PHEP(5,2)**2)))
1084 PCF(1)=Z(1)*PHEP(5,1)
1086 PCF(2)=Z(2)*PHEP(5,2)
1088 PCFAC=SQRT(PCF(1)*PCF(2))
1090 PCM(1)=(1-Z(1))*PHEP(4,1)
1092 PCM(2)=(1-Z(2))*PHEP(4,2)
1094 PCMAC=SQRT(PCM(1)*PCM(2))
1096 PCMIN=MAX(PTMIN,MAX(PCF(1),PCF(2)))
1098 PCMAX=MIN( MIN(PTMAX,PHEP(5,3)) , MIN(PCM(1),PCM(2)) )
1100 IF (PCMIN.GT.PCMAX) RETURN
1102 PLOGMI=(LOG(PCMIN/PCFAC))**2
1104 PLOGMA=(LOG(PCMAX/PCFAC))**2
1106 GAMWT=GAMWT*(PLOGMA-PLOGMI)
1108 C-----CALCULATE CROSS-SECTION
1114 IF (IHPRO.EQ.0) THEN
1126 IF (X.GT.ONE) GOTO 10
1130 BLOG=LOG((1+BETA*CTMAX)/(1-BETA*CTMAX))/BETA
1132 IF (IHPRO.LE.9) THEN
1134 EVWGT=EVWGT+GEV2NB*4*PIFAC*COLFAC*Q**4*ALPHEM**2*BETA
1136 & /SHAT * GAMWT * ( (1+X-0.5*X**2)*BLOG
1138 & - CTMAX*(1+X**2/(CTMAX**2*(X-1)+1)) )
1144 CALL HWDBOZ(198,ID1,ID2,CV,CA,BR,1)
1146 CALL HWDBOZ(199,ID1,ID2,CV,CA,BR,1)
1148 EVWGT=EVWGT + GEV2NB*6*PIFAC*ALPHEM**2*BETA/SHAT*BR
1150 & * GAMWT * (-( X-0.5*X**2)*BLOG
1152 & + CTMAX*(1+(X**2+16/3.)/(CTMAX**2*(X-1)+1)) )
1158 C-----GAMWT MUST BE RESET TO ONE, SINCE IT IS REAPPLIED LATER!
1166 C-----CHOOSE PT OF THE CMF
1168 PTCMF=PCFAC*EXP(SQRT(HWR()*(PLOGMA-PLOGMI)+PLOGMI))
1170 C-----CHOOSE WHICH PHOTON USUALLY HAS SMALLER PT
1176 IF (LOG(PCM(1)/PCF(1)).LT.HWR()*2*LOG(PCMAC/PCFAC)) IGAM=2
1184 IF (NTRY.GT.NBTRY) CALL HWWARN('HWHEGG',100,*999)
1186 QT(IGAM)=(PCM(IGAM)/PCF(IGAM))**HWR()
1188 PROB=(QT(IGAM)**2/(QT(IGAM)**2+1))**2
1190 QT(IGAM)=QT(IGAM)*PCF(IGAM)
1192 IF (HWRLOG(1-PROB)) GOTO 30
1194 C-----CHOOSE ITS DIRECTION
1196 CALL HWRAZM(QT(IGAM),QX(IGAM),QY(IGAM))
1198 C-----CALCULATE THE OTHER PHOTON'S PT
1200 QX(JGAM)=PTCMF-QX(IGAM)
1204 QT(JGAM)=SQRT(QX(JGAM)**2+QY(JGAM)**2)
1206 IF (QT(JGAM).LT.PCF(JGAM).OR.QT(JGAM).GT.PCM(JGAM)) GOTO 20
1208 C-----APPLY A RANDOM ROTATION AROUND THE BEAM AXIS
1210 CALL HWRAZM(ONE,PX,PY)
1212 IF (PX.EQ.ZERO) PX=1D-20
1214 QX(1)=(QX(1)*PX -QY(1)*PY)
1216 QY(1)=(QY(1) +QX(1)*PY)/PX
1218 QX(2)=(QX(2)*PX -QY(2)*PY)
1220 QY(2)=(QY(2) +QX(2)*PY)/PX
1222 C-----RECONSTRUCT MOMENTA
1224 IF (QT(IGAM).GT.QT(JGAM)) THEN
1232 DOT=-Z(JGAM)*S+SHAT+2*(QX(1)*QX(2)+QY(1)*QY(2))
1234 C-------SOLVE QUADRATIC IN Z(IGAM) TO FIND ELECTRON ENERGIES
1236 A=S*(S*Z(JGAM)+QT(JGAM)**2)
1240 C=DOT**2+S*QT(IGAM)**2*(1-Z(JGAM))**2-4*QT(IGAM)**2*QT(JGAM)**2
1242 IF (B**2.LT.4*A*C) GOTO 20
1244 ZZ(IGAM)=(-B+SQRT(B**2-4*A*C))/(2*A)
1246 IF (ZZ(IGAM).LT.ZERO .OR. ZZ(IGAM).GT.ONE-Z(IGAM)) GOTO 20
1250 C-------REJECT AGAINST PHOTON DISTRIBUTION FUNCTION
1252 PROB=((1+ZZ(IGAM)**2)/(1-ZZ(IGAM)))/((1+(1-Z(IGAM))**2)/Z(IGAM))
1254 & *((1+ZZ(JGAM)**2)/(1-ZZ(JGAM)))/((1+(1-Z(JGAM))**2)/Z(JGAM))
1256 IF (HWRLOG(1-PROB)) GOTO 20
1258 C-------RECONSTRUCT ALL OTHER VARIABLES
1268 PHEP(4,IGAM)=ZZ(I)*PHEP(4,I)
1270 PHEP(5,IGAM)=RMASS(IDHW(IGAM))
1272 C---------IF MOMENTUM CANNOT BE CONSERVED TRY AGAIN
1274 IF (PHEP(4,IGAM)**2-PHEP(5,IGAM)**2-QT(I)**2 .LT. 0) GOTO 20
1276 PHEP(3,IGAM)=SIGN(SQRT(PHEP(4,IGAM)**2-PHEP(5,IGAM)**2-
1278 & QT(I)**2),PHEP(3,IGAM))
1280 CALL HWVDIF(4,PHEP(1,I),PHEP(1,IGAM),PHEP(1,IGAM-1))
1282 CALL HWUMAS(PHEP(1,IGAM-1))
1286 C-----TIDY UP EVENT RECORD
1292 IDHEP(NHEP)=IDHEP(3)
1296 CALL HWVSUM(4,PHEP(1,4),PHEP(1,6),PHEP(1,NHEP))
1298 CALL HWVSUM(4,PHEP(1,1),PHEP(1,2),PHEP(1,3))
1300 CALL HWUMAS(PHEP(1,NHEP))
1302 CALL HWUMAS(PHEP(1,3))
1312 C-----CHOOSE FINAL STATE QUARK
1314 IF (IHPRO.EQ.0) THEN
1322 IF (RWGT.GT.WGT(IDL)) ID=IDL+1
1334 C-----CHOOSE T (WHERE T = MANDELSTAM_T - EMSQ)
1338 TMAX=-SHAT/2*(1-BETA*CTMAX)
1344 IF (IHPRO.LE.9) THEN
1346 C-------FOR FFBAR, CHOOSE T ACCORDING TO -SHAT/T
1350 IF (NTRY.GT.NBTRY) CALL HWWARN('HWHEGG',101,*999)
1356 C-------REWEIGHT TO CORRECT DISTRIBUTION
1358 DSDT=(T*U-2*EMSQ*(T+2*EMSQ))/T**2
1360 & +( 2*EMSQ*(SHAT-4*EMSQ))/(T*U)
1362 & +(T*U-2*EMSQ*(U+2*EMSQ))/U**2
1364 PROB=-DSDT*T/SHAT / (1 + 2*X - 2*X**2)
1366 IF (HWRLOG(1-PROB)) GOTO 60
1370 C-------FOR WW, CHOOSE T ACCORDING TO (SHAT/T)**2
1374 IF (NTRY.GT.NBTRY) CALL HWWARN('HWHEGG',102,*999)
1376 T=TMAX/(1-(1-TRAT)*HWR())
1380 C-------REWEIGHT TO CORRECT DISTRIBUTION
1382 DSDT=( 3*(T*U)**2 - SHAT*T*U*(4*SHAT+6*EMSQ)
1384 & + SHAT**2*(2*SHAT**2+6*EMSQ**2) ) / (T*U)**2
1386 PROB=DSDT*(T/SHAT)**2 / (4.75 - 1.5*X + 1.5*X**2)
1388 IF (HWRLOG(1-PROB)) GOTO 70
1392 C-----SYMMETRIZE IN T,U
1394 IF (HWRLOG(HALF)) T=U
1396 C-----FILL EVENT RECORD
1398 COSTH=(1+2*T/SHAT)/BETA
1400 PC=0.5*BETA*PHEP(5,NHEP)
1402 PHEP(5,NHEP+1)=RMASS(ID)
1404 PHEP(5,NHEP+2)=RMASS(ID)
1406 CALL HWDTWO(PHEP(1,NHEP),PHEP(1,NHEP+1),PHEP(1,NHEP+2),
1418 IF (IHPRO.LE.6) ISTHEP(IHEP)=112+I
1420 IDHW(IHEP)=ID+NADD*(I-1)
1422 IDHEP(IHEP)=IDPDG(IDHW(IHEP))
1432 IF (IHPRO.EQ.10) THEN
1434 RHOHEP(1,IHEP)=0.3333
1436 RHOHEP(2,IHEP)=0.3333
1438 RHOHEP(3,IHEP)=0.3333
1452 *CMZ :- -26/04/91 10.18.56 by Bryan Webber
1454 *-- Author : Mike Seymour
1456 C-----------------------------------------------------------------------
1460 C----------------------------------------------------------------------
1462 C W + GAMMA --> FF'BAR : MEAN EVWGT = CROSS SECTION IN NANOBARN
1464 C BASED ON BOSON GLUON FUSION OF ABBIENDI AND STANCO
1466 C-----------------------------------------------------------------------
1468 INCLUDE 'HERWIG61.INC'
1470 DOUBLE PRECISION HWR,GMASS,EV(3),RV,LEP,Y,Q2,SHAT,Z,PHI,AJACOB,
1472 & DSIGMA,ME,MP,ML,MREMIF(18),MFIN1(18),MFIN2(18),RS,SMA,W2,RSHAT
1474 INTEGER LEPFIN,ID1,ID2,I,IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,IPROO
1476 LOGICAL CHARGD,INCLUD(18),INSIDE(18)
1482 COMMON /HWAREA/ LEP,Y,Q2,SHAT,Z,PHI,AJACOB,DSIGMA,ME,MP,ML,MREMIF,
1484 & MFIN1,MFIN2,RS,SMA,W2,RSHAT,IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,
1486 & IPROO,CHARGD,INCLUD,INSIDE
1510 1 IDHEP(I)=IDPDG(IDHW(I))
1582 C---COMPUTATION OF MOMENTA IN LABORATORY FRAME OF REFERENCE
1584 C---Persuade HWHBKI that the gluon is actually a photon...
1594 C---put the other outgoing lepton in as well
1598 IDHEP(10)=IDPDG(IDHW(10))
1614 CALL HWVDIF(4,PHEP(1,2),PHEP(1,5),PHEP(1,10))
1616 CALL HWUMAS(PHEP(1,10))
1622 C---if antilepton was first, do charge conjugation
1624 IF (LEP.EQ.ONE) THEN
1628 IF (IDHEP(I).NE.0 .AND. ABS(IDHEP(I)).LT.20) THEN
1630 IDHW(I)=IDHW(I) + 6*SIGN(1,IDHEP(I))
1642 C---half the time, do charge conjugation and parity flip
1644 IF (HWR().GT.HALF) THEN
1648 IF (IDHEP(I).NE.0 .AND. ABS(IDHEP(I)).LT.20) THEN
1650 IDHW(I)=IDHW(I) + 6*SIGN(1,IDHEP(I))
1656 PHEP(1,I)=-PHEP(1,I)
1658 PHEP(2,I)=-PHEP(2,I)
1660 PHEP(3,I)=-PHEP(3,I)
1664 JMOHEP(1,10)=3-JMOHEP(1,10)
1676 C---LEP = 1 IF TRACK 1 IS A LEPTON, -1 FOR ANTILEPTON
1680 IF (IDHW(1).GE.121.AND.IDHW(1).LE.126) THEN
1684 ELSEIF (IDHW(1).GE.127.AND.IDHW(1).LE.132) THEN
1690 IF (LEP.EQ.ZERO) CALL HWWARN('HWHEGW',500,*999)
1692 C---program only works if beam and target are charge conjugates
1694 IF (INT(LEP)*(IDHW(2)-IDHW(1)).NE.6)
1696 & CALL HWWARN('HWHEGW',501,*999)
1698 C---program only works for equal energy beams colliding
1700 IF (PHEP(3,3).NE.ZERO) CALL HWWARN('HWHEGW',503,*999)
1704 C---FINAL STATE IS ALWAYS SET UP AS IF PARTICLE IS BEFORE ANTI-PARTICLE
1706 C AND THEN INVERTED IF NECESSARY
1708 LEPFIN = MIN(IDHW(1),IDHW(2))+1
1720 ELSEIF (IQK.LE.4) THEN
1730 ELSEIF (IQK.LE.6) THEN
1740 ELSEIF (IQK.EQ.7) THEN
1750 C---INTERFERENCE TERMS IN EE -> EE NUE NUEB NEGLECTED: SIGMA UNRELIABLE
1752 IF (FSTWGT) CALL HWWARN('HWHEGW',1,*999)
1754 ELSEIF (IQK.EQ.8) THEN
1764 ELSEIF (IQK.EQ.9) THEN
1776 CALL HWWARN('HWHEGW',504,*999)
1788 EVWGT = 2 * DSIGMA * AJACOB
1790 IF (EVWGT.LT.ZERO) EVWGT=ZERO
1794 C---SUM OVER QUARK FLAVOURS
1800 IF (SHAT.GT.(RMASS(IFLAVD)+RMASS(IFLAVU))**2) THEN
1804 EV(I) = 2 * DSIGMA * AJACOB
1806 IF (EV(I).LT.ZERO) EV(I)=ZERO
1824 C---CHOOSE QUARK FLAVOUR
1828 IF (RV.LT.EV(1)) THEN
1834 ELSEIF (RV.LT.EV(2)) THEN
1856 *CMZ :- -17/07/92 16.42.56 by Mike Seymour
1858 *-- Author : Mike Seymour
1860 C-----------------------------------------------------------------------
1864 C-----------------------------------------------------------------------
1866 C COMPUTES DIFFERENTIAL CROSS SECTION DSIGMA IN (Y,Q2,ETA,Z,PHI)
1868 C-----------------------------------------------------------------------
1870 INCLUDE 'HERWIG61.INC'
1872 DOUBLE PRECISION TMAX,TMIN,A1,A2,B1,B2,I0,I1,I2,I3,I4,I5,MUSQ,
1874 & MDSQ,ETA,Q1,COSTHE,S,G,T,U,C1,C2,D1,D2,F1,F2,COSBET,WPROP,D(4,4),
1876 & C(4,4),QU,QD,QE,QW,PHOTON,EMWSQ,EMSSQ,CFAC,LEP,Y,Q2,SHAT,Z,PHI,
1878 & AJACOB,DSIGMA,ME,MP,ML,MREMIF(18),MFIN1(18),MFIN2(18),RS,SMA,W2,
1882 INTEGER IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,IPROO,I,J
1884 LOGICAL CHARGD,INCLUD(18),INSIDE(18)
1886 COMMON /HWAREA/ LEP,Y,Q2,SHAT,Z,PHI,AJACOB,DSIGMA,ME,MP,ML,MREMIF,
1888 & MFIN1,MFIN2,RS,SMA,W2,RSHAT,IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,
1890 & IPROO,CHARGD,INCLUD,INSIDE
1894 IF (IERROR.NE.0) RETURN
1898 IF (IFLAVU.LE.12) THEN
1900 QU=QFCH(MOD(IFLAVU-1,6)+1)
1902 QD=QFCH(MOD(IFLAVD-1,6)+1)
1908 QU=QFCH(MOD(IFLAVU-1,6)+11)
1910 QD=QFCH(MOD(IFLAVD-1,6)+11)
1926 MUSQ=RMASS(IFLAVU)**2
1928 MDSQ=RMASS(IFLAVD)**2
1930 ETA=(SHAT+Q2)/EMSSQ/Y
1932 IF (ETA.GT.ONE) RETURN
1934 C---CALCULATE KINEMATIC TERMS
1936 G=0.5*(ETA*EMSSQ*Y-Q2) -0.5*(MUSQ+MDSQ)
1940 T=0.5*ETA*EMSSQ*(1-Y)
1944 C1=0.5*ETA*EMSSQ*Y*Z
1946 C2=0.5*ETA*EMSSQ*Y*(1-Z)
1948 COSBET=(-ETA*EMSSQ*Y+Q2*(2-Y))/(Y*(ETA*EMSSQ-Q2))
1950 IF (SHAT.LE.(RMASS(IFLAVU)+RMASS(IFLAVD))**2) RETURN
1952 Q1=SQRT((SHAT**2+MUSQ**2+MDSQ**2
1954 & -2*SHAT*MUSQ-2*SHAT*MDSQ-2*MUSQ*MDSQ)/SHAT**2)
1956 COSTHE=(1+(MDSQ-MUSQ)/SHAT-2*Z)/Q1
1958 IF (ABS(COSTHE).GE.ONE .OR. ABS(COSBET).GE.ONE) RETURN
1960 D1=0.25*(ETA*EMSSQ-Q2)*(1+(MDSQ-MUSQ)/SHAT-Q1*
1962 & (COSTHE*COSBET+SQRT((1-COSTHE**2)*(1-COSBET**2))*COS(PHI)))
1970 C---CALCULATE TRACE TERMS
1980 D(3,3)=-D1*(2*F2*G-D2*(F1+2*U))
1982 & -D2*F1*(F2+U-D2+F1)
1986 & -G*(-2*D1*(F1+F2+U)-F1*(D2+2*U)+2*D2*(U-F2)+2*U*(F2-U+G))
1990 D(1,2)=(D1+U-F2)*(D1*F2-F1*D2)-G*(D1*(F2+U)+U*(U-F2-G)+F1*D2)
1992 D(1,3)=D1*F2*(-2*F1+U-F2+D1)
1994 & +F1*(F2*(D2-2*U)+F1*D2)
1996 & +G*(-D1*(2*F1+F2+U)-F1*(D2+2*U)+U*(F2-U+G))
1998 D(1,4)=-2*F1*(D1+U)*(F2+G)
2000 D(2,3)=D1*(D2*(F1+2*(U-F2))+F2*(F2-U-D1))
2004 & +G*(D1*(F2+U)+D2*(F1-2*(U-F2))+U*(U-F2-G))
2006 D(2,4)=-D1*F2*(U-F2+D1)
2008 & -F1*D2*(U-D1-G-F2)
2010 & -G*(U*(F2-U+G)-D1*(F2+U))
2012 D(3,4)=D1*(F1*(D2+2*F2)+F2*(F2-U-D1))
2014 & +F1*(2*F2*U-D2*(U+F1))
2016 & +G*(D1*(2*F1+F2+U)+U*(2*F1-F2+U-G))
2018 C---REGULATE PROPAGATORS
2024 A1=2*C1+MDSQ*(G+U)/G
2026 A2=2*C2+MUSQ*(G+U)/G
2028 B1=(2*U+MUSQ)/(2*G+2*U)
2030 B2=(2*U+MDSQ)/(2*G+2*U)
2034 I1=1/A1*(I0-LOG((A1+B1*TMAX)/(A1+B1*TMIN)))
2036 I2=1/A2*(I0-LOG((A2+B2*TMAX)/(A2+B2*TMIN)))
2038 I3=(B1*I1-B2*I2)/(B1*A2-B2*A1)
2040 I4=1/A1*(I1+1/(A1+B1*TMAX)-1/(A1+B1*TMIN))
2042 I5=1/A2*(I2+1/(A2+B2*TMAX)-1/(A2+B2*TMIN))
2044 WPROP=1/((2*G-EMWSQ)**2+GAMW**2*EMWSQ)
2046 C---CALCULATE COEFFICIENTS
2048 C(1,1)= QU**2/(2*U+EMWSQ)**2 *I5
2050 C(2,2)= QD**2/(2*U+EMWSQ)**2 *I4
2052 C(3,3)= QW**2/(2*U+EMWSQ)**2 *WPROP *I0
2054 C(4,4)= QE**2/(2*S)**2 *WPROP *I0
2056 C(1,2)= 2*QU*QD/(2*U+EMWSQ)**2 *I3
2058 C(1,3)= 2*QW*QU/(2*U+EMWSQ)**2 *WPROP*(2*G-EMWSQ) *I2
2060 C(1,4)= 2*QU*QE/(2*S*(2*U+EMWSQ)) *WPROP*(2*G-EMWSQ) *I2
2062 C(2,3)= 2*QW*QD/(2*U+EMWSQ)**2 *WPROP*(2*G-EMWSQ) *I1
2064 C(2,4)= 2*QD*QE/(2*S*(2*U+EMWSQ)) *WPROP*(2*G-EMWSQ) *I1
2066 C(3,4)= 2*QW*QE/(2*S*(2*U+EMWSQ)) *WPROP *I0
2068 C---CALCULATE PHOTON STRUCTURE FUNCTION
2070 PHOTON=ALPHEM * (1+(1-ETA)**2) / (2*PIFAC*ETA)
2072 C---SUM ALL TENSOR CONTRIBUTIONS
2078 10 DSIGMA=DSIGMA + C(I,J)*D(I,J)
2080 C---CALCULATE TOTAL SUMMED AND AVERAGED MATRIX ELEMENT SQUARED
2082 DSIGMA = DSIGMA * 2*CFAC*(4*PIFAC*ALPHEM)**3/SWEIN**2
2084 C---CALCULATE DIFFERENTIAL CROSS-SECTION
2086 DSIGMA = DSIGMA * GEV2NB*PHOTON/(512*PIFAC**4*ETA*EMSSQ)
2092 *CMZ :- -26/04/91 14.55.44 by Federico Carminati
2094 *-- Author : Bryan Webber and Ian Knowles
2096 C-----------------------------------------------------------------------
2100 C-----------------------------------------------------------------------
2102 C (Initially polarised) e+e- --> ffbar (f=quark, mu or tau)
2104 C If IPROC=107: --> gg, distributed as sum of light quarks.
2106 C If fermion flavour specified mass effects fully included.
2108 C EVWGT=sig(e+e- --> ffbar) in nb
2110 C-----------------------------------------------------------------------
2112 INCLUDE 'HERWIG61.INC'
2114 DOUBLE PRECISION HWR,HWRUNI,HWUPCM,HWUAEM,Q2NOW,Q2LST,FACTR,
2116 & VF2,VF,CLF(7),PRAN,PQWT,PMAX,PTHETA,SINTH2,CPHI,SPHI,C2PHI,S2PHI,
2118 & PPHI,SINTH,PCM,PP(5),EWGT
2120 INTEGER ID1,ID2,IDF,IQ,IQ1,I
2122 EXTERNAL HWR,HWRUNI,HWUPCM,HWUAEM
2124 SAVE Q2LST,FACTR,ID1,ID2,VF2,VF,CLF,EWGT
2132 C Choose quark flavour
2142 IF (PQWT.GT.PRAN) GOTO 11
2160 C Label particles, assign outgoing particle masses
2178 PHEP(5,NHEP+2)=RMASS(13)
2180 PHEP(5,NHEP+3)=RMASS(13)
2188 IDHEP(NHEP+2)=IDPDG(IQ1)
2190 IDHEP(NHEP+3)=-IDHEP(NHEP+2)
2192 PHEP(5,NHEP+2)=RMASS(IQ1)
2194 PHEP(5,NHEP+3)=RMASS(IQ1)
2204 IF (JDAHEP(1,1).NE.0) JMOHEP(1,NHEP+1)=JDAHEP(1,1)
2208 IF (JDAHEP(1,2).NE.0) JMOHEP(1,NHEP+1)=JDAHEP(1,2)
2210 JMOHEP(1,NHEP+2)=NHEP+1
2212 JMOHEP(2,NHEP+2)=NHEP+3
2214 JMOHEP(1,NHEP+3)=NHEP+1
2216 JMOHEP(2,NHEP+3)=NHEP+2
2218 JDAHEP(1,NHEP+1)=NHEP+2
2220 JDAHEP(2,NHEP+1)=NHEP+3
2224 JDAHEP(2,NHEP+2)=NHEP+3
2228 JDAHEP(2,NHEP+3)=NHEP+2
2230 C Generate polar and azimuthal angular distributions:
2232 C CLF(1)*(1+(VF*COSTH)**2)+CLF(2)*(1-VF**2)+CLF(3)*2.*VF*COSTH
2234 C +(VF*SINTH)**2*(CLF(4)*COS(2*PHI-PHI1-PHI2)
2236 C +CLF(6)*SIN(2*PHI-PHI1-PHI2))
2238 PMAX=CLF(1)*(1.+VF2)+CLF(2)*(1.-VF2)+ABS(CLF(3))*2.*VF
2240 30 COSTH=HWRUNI(0,-ONE, ONE)
2242 PTHETA=CLF(1)*(1.+VF2*COSTH**2)+CLF(2)*(1.-VF2)
2244 & +CLF(3)*2.*VF*COSTH
2246 IF (PTHETA.LT.PMAX*HWR()) GOTO 30
2248 IF (IDHW(1).GT.IDHW(2)) COSTH=-COSTH
2254 PMAX=PTHETA+VF2*SINTH2*SQRT(CLF(4)**2+CLF(6)**2)
2256 40 CALL HWRAZM(ONE,CPHI,SPHI)
2262 PPHI=PTHETA+(CLF(4)*(C2PHI*COSS+S2PHI*SINS)
2264 & +CLF(6)*(S2PHI*COSS-C2PHI*SINS))*VF2*SINTH2
2266 IF (PPHI.LT.PMAX*HWR()) GOTO 40
2270 CALL HWRAZM(ONE,CPHI,SPHI)
2274 C Construct final state 4-mommenta
2276 CALL HWVEQU(5,PHEP(1,3),PHEP(1,NHEP+1))
2278 PCM=HWUPCM(PHEP(5,NHEP+1),PHEP(5,NHEP+2),PHEP(5,NHEP+3))
2280 C PP is momentum of track NHEP+2 in CoM (track NHEP+1) frame
2284 PP(5)=PHEP(5,NHEP+2)
2286 PP(1)=PCM*SINTH*CPHI
2288 PP(2)=PCM*SINTH*SPHI
2292 PP(4)=SQRT(PCM**2+PP(5)**2)
2294 CALL HWULOB(PHEP(1,NHEP+1),PP(1),PHEP(1,NHEP+2))
2296 CALL HWVDIF(4,PHEP(1,NHEP+1),PHEP(1,NHEP+2),PHEP(1,NHEP+3))
2298 C Set production vertices
2300 CALL HWVZRO(4,VHEP(1,NHEP+2))
2302 CALL HWVEQU(4,VHEP(1,NHEP+2),VHEP(1,NHEP+3))
2312 IF (Q2NOW.NE.Q2LST) THEN
2314 C Calculate coefficients for cross-section
2320 FACTR=PIFAC*GEV2NB*HWUAEM(Q2NOW)**2/Q2NOW
2334 EWGT=FACTR*FLOAT(NCOLO)*TQWT*4./3.
2338 IF (IPROC.LT.150) THEN
2342 FACTR=FACTR*FLOAT(NCOLO)
2352 IF (EMSCA.LE.2.*RMASS(ID1)) then
2358 CALL HWUCFF(11,IDF,Q2NOW,CLF(1))
2360 VF2=1.-4.*RMASS(ID1)**2/Q2NOW
2364 EWGT=FACTR*VF*(CLF(1)*(1.+VF2/3.)+CLF(2)*(1.-VF2))
2380 *CMZ :- -02/05/91 10.57.27 by Federico Carminati
2382 *-- Author : Bryan Webber and Ian Knowles
2384 C-----------------------------------------------------------------------
2388 C-----------------------------------------------------------------------
2390 C (Initially polarised) e-e+ --> qqbar g with parton thrust < THMAX,
2392 C equivalent to: maximum parton energy < THMAX*EMSCA/2; or a JADE E0
2394 c scheme, y_cut=1.-THMAX.
2396 C If flavour specified mass effects fully included.
2398 C EVWGT=sig(e^-e^+ --> qqbar g) in nb
2400 C-----------------------------------------------------------------------
2402 INCLUDE 'HERWIG61.INC'
2404 DOUBLE PRECISION HWR,HWUALF,HWUAEM,HWULDO,HWDPWT,Q2NOW,Q2LST,
2406 & PHASP,QGMAX,QGMIN,FACTR,QM2,CLF(7),ORDER,PRAN,PQWT,QQG,QBG,SUM,
2408 & RUT,QQLM,QQLP,QBLM,QBLP,DYN1,DYN2,DYN3,DYN4,DYN5,DYN6,XQ2,X2SUM,
2412 INTEGER ID1,IQ,I,LM,LP,IQ1
2416 EXTERNAL HWR,HWUALF,HWUAEM,HWULDO,HWDPWT
2418 SAVE Q2NOW,Q2LST,QGMAX,QGMIN,FACTR,ORDER,ID1,MASS,QM2,CLF,LM,LP,
2426 C Label produced partons and calculate gluon spin
2456 JMOHEP(1,NHEP+2)=NHEP+1
2458 JMOHEP(2,NHEP+2)=NHEP+3
2460 JMOHEP(1,NHEP+3)=NHEP+1
2462 JMOHEP(2,NHEP+3)=NHEP+4
2464 JMOHEP(1,NHEP+4)=NHEP+1
2466 JMOHEP(2,NHEP+4)=NHEP+2
2468 JDAHEP(1,NHEP+1)=NHEP+2
2470 JDAHEP(2,NHEP+1)=NHEP+4
2474 JDAHEP(2,NHEP+2)=NHEP+4
2478 JDAHEP(2,NHEP+3)=NHEP+2
2482 JDAHEP(2,NHEP+4)=NHEP+3
2484 C Decide which quark radiated and assign production vertices
2486 XQ2=(Q2NOW-2.*QBG)**2
2488 X2SUM=XQ2+(Q2NOW-2.*QQG)**2
2490 IF (XQ2.LT.HWR()*X2SUM) THEN
2492 C Quark radiated the gluon
2494 CALL HWVZRO(4,VHEP(1,NHEP+4))
2496 CALL HWVSUM(4,PHEP(1,NHEP+2),PHEP(1,NHEP+3),PVRT)
2498 CALL HWUDKL(IQ1,PVRT,VHEP(1,NHEP+3))
2500 CALL HWVEQU(4,VHEP(1,NHEP+3),VHEP(1,NHEP+2))
2504 C Anti-quark radiated the gluon
2506 CALL HWVZRO(4,VHEP(1,NHEP+2))
2508 CALL HWVSUM(4,PHEP(1,NHEP+4),PHEP(1,NHEP+3),PVRT)
2510 CALL HWUDKL(IQ1,PVRT,VHEP(1,NHEP+3))
2512 CALL HWVEQU(4,VHEP(1,NHEP+3),VHEP(1,NHEP+4))
2518 C Calculate the transverse polarisation of the gluon
2520 C Correlation with leptons presently neglected
2522 GPOLN=(QQG**2+QBG**2)/((Q2NOW-2.*SUM)*Q2NOW)
2536 IF (Q2NOW.NE.Q2LST) THEN
2542 IF (PHASP.LE.ZERO) CALL HWWARN('HWHEPG',400,*999)
2544 QGMAX=.5*Q2NOW*THMAX
2546 QGMIN=.5*Q2NOW*(1.-THMAX)
2548 FACTR=GEV2NB*FLOAT(NCOLO)*CFFAC*HWUALF(1,EMSCA)
2550 & *.5*(HWUAEM(Q2NOW)*PHASP)**2/Q2NOW
2554 IF (JDAHEP(1,LM).NE.0) LM=JDAHEP(1,LM)
2558 IF (JDAHEP(1,LP).NE.0) LP=JDAHEP(1,LP)
2562 IF (IDHW(1).GT.IDHW(2)) ORDER=-ORDER
2572 CALL HWUCFF(11,ID1,Q2NOW,CLF(1))
2590 C Select quark flavour
2600 IF (PQWT.GT.PRAN) GOTO 11
2612 ELSEIF (Q2NOW.GT.4*QM2/(2*THMAX-1)) THEN
2624 C Select final state momentum configuration
2626 CALL HWVEQU(5,PHEP(1,3),PHEP(1,NHEP+1))
2628 PHEP(5,NHEP+2)=RMASS(IQ1)
2630 PHEP(5,NHEP+3)=RMASS(13)
2632 PHEP(5,NHEP+4)=RMASS(IQ1)
2634 30 CALL HWDTHR(PHEP(1,NHEP+1),PHEP(1,NHEP+2),
2636 & PHEP(1,NHEP+3),PHEP(1,NHEP+4),HWDPWT)
2638 QQG=HWULDO(PHEP(1,NHEP+2),PHEP(1,NHEP+3))
2640 IF (QQG.LT.QGMIN) GOTO 30
2642 QBG=HWULDO(PHEP(1,NHEP+4),PHEP(1,NHEP+3))
2646 IF (QBG.LT.QGMIN.OR.SUM.GT.QGMAX) GOTO 30
2648 QQLM=HWULDO(PHEP(1,NHEP+2),PHEP(1,LM))
2650 QQLP=HWULDO(PHEP(1,NHEP+2),PHEP(1,LP))
2652 QBLM=HWULDO(PHEP(1,NHEP+4),PHEP(1,LM))
2654 QBLP=HWULDO(PHEP(1,NHEP+4),PHEP(1,LP))
2656 DYN1=QQLM**2+QQLP**2+QBLM**2+QBLP**2
2660 DYN3=DYN1-2.*(QQLM**2+QBLP**2)
2666 DYN1=DYN1+8.*QM2*(1.-.25*Q2NOW*RUT
2668 & +QQLM*QQLP/(Q2NOW*QBG)+QBLM*QBLP/(Q2NOW*QQG))
2670 DYN2=QM2*(Q2NOW-SUM*(2.+QM2*RUT)
2672 & -4.*HWULDO(PHEP(1,NHEP+3),PHEP(1,LM))
2674 & *HWULDO(PHEP(1,NHEP+3),PHEP(1,LP))/Q2NOW)
2676 DYN3=DYN3+QM2*2.*RUT*(QBG*(QBLP-QBLM)-QQG*(QQLP-QQLM))
2680 EVWGT=CLF(1)*DYN1+CLF(2)*DYN2+ORDER*CLF(3)*DYN3
2684 C Include event plane azimuthal angle
2694 DYN4=DYN4-QM2*SUM/QBG
2696 DYN5=DYN5-QM2*SUM/QQG
2704 & +(CLF(4)*COSS-CLF(6)*SINS)
2706 & *(DYN4*(PHEP(1,NHEP+2)**2-PHEP(2,NHEP+2)**2)
2708 & +DYN5*(PHEP(1,NHEP+4)**2-PHEP(2,NHEP+4)**2))
2710 & +(CLF(4)*SINS+CLF(6)*COSS)*2.
2712 & *(DYN4*PHEP(1,NHEP+2)*PHEP(2,NHEP+2)
2714 & +DYN5*PHEP(1,NHEP+4)*PHEP(2,NHEP+4))
2716 & +(CLF(5)*COSS-CLF(7)*SINS)*DYN6
2718 & *(PHEP(1,NHEP+3)**2-PHEP(2,NHEP+3)**2)
2720 & +(CLF(5)*SINS+CLF(7)*COSS)*DYN6*2.
2722 & *PHEP(1,NHEP+3)*PHEP(2,NHEP+3)
2726 C Assign event weight
2728 EVWGT=EVWGT*FACTR/(QQG*QBG*CLF(1))
2736 *CMZ :- -26/04/91 11.11.55 by Bryan Webber
2738 *-- Author : Zoltan Kunszt, modified by Bryan Webber & Mike Seymour
2740 C-----------------------------------------------------------------------
2742 SUBROUTINE HWHEW0(IP,ETOT,XM,PR,WEIGHT,CR)
2744 C-----------------------------------------------------------------------
2746 INCLUDE 'HERWIG61.INC'
2748 DOUBLE PRECISION HWR,ETOT,XM(2),PR(5,2),WEIGHT,CR,XM1,XM2,S,
2750 & D1,PABS,D,CX,C,E,F,SC,G
2766 PABS=D1*D1-4.*XM1*XM2
2768 IF (PABS.LE.ZERO) RETURN
2778 C=D-(D+CX)*((D-CR)/(D+CX))**HWR()
2782 3 E=((D+ONE)/(D-ONE))*(TWO*HWR()-ONE)
2784 C=D*((E-ONE)/(E+ONE))
2790 PR(4,1)=(S+XM1-XM2)/(TWO*ETOT)
2792 PR(5,1)=PR(4,1)*PR(4,1)-XM1
2794 IF (PR(5,1).LE.ZERO) RETURN
2796 PR(5,1)=SQRT(PR(5,1))
2798 PR(4,2)=ETOT-PR(4,1)
2804 PR(2,1)=PR(5,1)*SC*COS(F)
2806 PR(1,1)=PR(5,1)*SC*SIN(F)
2814 IF(IP.EQ.1)G=(D-C)*LOG((D+CX)/(D-CR))
2816 IF(IP.EQ.2)G=(D*D-C*C)/D*LOG((D+ONE)/(D-ONE))
2818 WEIGHT=PIFAC*G*PR(5,1)/ETOT*HALF