C----------------------------------------------------------------------- C H E R W I G C C a Monte Carlo event generator for simulating C +---------------------------------------------------+ C | Hadron Emission Reactions With Interfering Gluons | C +---------------------------------------------------+ C I.G. Knowles(*), G. Marchesini(+), M.H.Seymour($,&) and B.R. Webber(#) C----------------------------------------------------------------------- C with Minimal Supersymmetric Standard Model Matrix Elements by C S. Moretti(") and K. Odagiri(^) C----------------------------------------------------------------------- C R parity violating Supersymmetric Decays and Matrix Elements by C P. Richardson(X) C----------------------------------------------------------------------- C matrix element corrections to top decay and Drell-Yan type processes C by G. Corcella(&) C----------------------------------------------------------------------- C Deep Inelastic Scattering and Heavy Flavour Electroproduction by C G. Abbiendi(@) and L. Stanco(%) C----------------------------------------------------------------------- C and Jet Photoproduction in Lepton-Hadron Collisions by J. Chyla(~) C----------------------------------------------------------------------- C(*) Department of Physics & Astronomy, University of Edinburgh C(+) Dipartimento di Fisica, Universita di Milano-Bicocca C($) School of Physics & Astronomy, University of Manchester C(&) Theory Physics Group, CERN C(#) Cavendish Laboratory, Cambridge C(") School of Physics & Astronomy, Southampton C(^) Academia Sinica, Taiwan C(X) Institute of Particle Physics Phenomenology, University of Durham C(@) Dipartimento di Fisica, Universita di Bologna C(%) Dipartimento di Fisica, Universita di Padova C(~) Institute of Physics, Prague C----------------------------------------------------------------------- C Version 6.510 - 31st October 2005 C----------------------------------------------------------------------- C Main references: C C G.Corcella, I.G.Knowles, G.Marchesini, S.Moretti, K.Odagiri, C P.Richardson, M.H.Seymour and B.R.Webber, JHEP 0101 (2001) 010 C C G.Marchesini, B.R.Webber, G.Abbiendi, I.G.Knowles, M.H.Seymour, C and L.Stanco, Computer Physics Communications 67 (1992) 465. C----------------------------------------------------------------------- C Please see the official HERWIG information page: C http://hepwww.rl.ac.uk/theory/seymour/herwig/ C----------------------------------------------------------------------- CDECK ID>, CIRCEE. *CMZ :- -03/07/01 17.07.47 by Bryan Webber *-- Author : Bryan Webber C----------------------------------------------------------------------- FUNCTION CIRCEE (X1, X2) C----------------------------------------------------------------------- C DUMMY FUNCTION: DELETE AND SET CIRCOP NON-ZERO C IN MAIN PROGRAM IF YOU USE CIRCE BEAM SPECTRUM PACKAGE C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION CIRCEE, X1, X2 WRITE (6,10) 10 FORMAT(/10X,'CIRCEE CALLED BUT NOT LINKED') CIRCEE = 0.0D0 STOP END CDECK ID>, CIRCES. *CMZ :- -03/07/01 17.07.47 by Bryan Webber *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE CIRCES (XX1M, XX2M, XROOTS, XACC, XVER, XREV, XCHAT) C----------------------------------------------------------------------- C DUMMY SUBROUTINE: DELETE AND SET CIRCOP NON-ZERO C IN MAIN PROGRAM IF YOU USE CIRCE BEAM SPECTRUM PACKAGE C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION XX1M, XX2M, XROOTS INTEGER XACC, XVER, XREV, XCHAT WRITE (6,10) 10 FORMAT(/10X,'CIRCES CALLED BUT NOT LINKED') STOP END CDECK ID>, CIRCGG. *CMZ :- -03/07/01 17.07.47 by Bryan Webber *-- Author : Bryan Webber C----------------------------------------------------------------------- FUNCTION CIRCGG (X1, X2) C----------------------------------------------------------------------- C DUMMY FUNCTION: DELETE AND SET CIRCOP NON-ZERO C IN MAIN PROGRAM IF YOU USE CIRCE BEAM SPECTRUM PACKAGE C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION CIRCGG, X1, X2 WRITE (6,10) 10 FORMAT(/10X,'CIRCGG CALLED BUT NOT LINKED') CIRCGG = 0.0D0 STOP END CDECK ID>, DECADD. *CMZ :- -28/01/92 12.34.44 by Mike Seymour *-- Author : Luca Stanco C----------------------------------------------------------------------- SUBROUTINE DECADD(LOGI) C----------------------------------------------------------------------- C DUMMY SUBROUTINE: DELETE AND SET BDECAY='CLEO' C IN MAIN PROGRAM IF YOU USE CLEO DECAY PACKAGE C----------------------------------------------------------------------- IMPLICIT NONE LOGICAL LOGI WRITE (6,10) 10 FORMAT(/10X,'DECADD CALLED BUT NOT LINKED') STOP END CDECK ID>, DEXAY. *CMZ :- -17/10/01 10.03.37 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE DEXAY(IMODE,POL) C----------------------------------------------------------------------- C DUMMY SUBROUTINE: DELETE AND SET TAUDEC='TAUOLA' C IN MAIN PROGRAM IF YOU USE TAUOLA DECAY PACKAGE C----------------------------------------------------------------------- IMPLICIT NONE INTEGER IMODE REAL POL(4) WRITE (6,10) 10 FORMAT(/10X,'DEXAY CALLED BUT NOT LINKED') STOP END CDECK ID>, EUDINI. *CMZ :- -28/01/92 12.34.44 by Mike Seymour *-- Author : Luca Stanco C----------------------------------------------------------------------- SUBROUTINE EUDINI C----------------------------------------------------------------------- C DUMMY SUBROUTINE: DELETE AND SET BDECAY='EURO' C IN MAIN PROGRAM IF YOU USE EURODEC DECAY PACKAGE C----------------------------------------------------------------------- IMPLICIT NONE WRITE (6,10) 10 FORMAT(/10X,'EUDINI CALLED BUT NOT LINKED') STOP END CDECK ID>, FILHEP. *CMZ :- -17/10/01 09:42:21 by Peter Richardson *-- Author : Martin W. Gruenewald C----------------------------------------------------------------------- SUBROUTINE FILHEP(N,IST,ID,JMO1,JMO2,JDA1,JDA2,P4,PINV,PHFLAG) C ---------------------------------------------------------------------- C this subroutine fills one entry into the HEPEVT common C and updates the information for affected mother entries C used by TAUOLA C C written by Martin W. Gruenewald (91/01/28) C ---------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' LOGICAL QEDRAD COMMON /PHORAD/ QEDRAD(NMXHEP) INTEGER N,IHEP,IST,ID,JMO1,JMO2,JDA1,JDA2,I,IP REAL PINV LOGICAL PHFLAG REAL*4 P4(4) C C check address mode IF (N.EQ.0) THEN C append mode IHEP=NHEP+1 ELSE IF (N.GT.0) THEN C absolute position IHEP=N ELSE C relative position IHEP=NHEP+N END IF C check on IHEP IF ((IHEP.LE.0).OR.(IHEP.GT.NMXHEP)) RETURN C add entry NHEP=IHEP ISTHEP(IHEP)=IST IDHEP(IHEP)=ID JMOHEP(1,IHEP)=JMO1 IF(JMO1.LT.0)JMOHEP(1,IHEP)=JMOHEP(1,IHEP)+IHEP JMOHEP(2,IHEP)=JMO2 IF(JMO2.LT.0)JMOHEP(2,IHEP)=JMOHEP(2,IHEP)+IHEP JDAHEP(1,IHEP)=JDA1 JDAHEP(2,IHEP)=JDA2 DO I=1,4 PHEP(I,IHEP)=P4(I) C KORAL-B and KORAL-Z do not provide vertex and/or lifetime informations VHEP(I,IHEP)=0.0 END DO PHEP(5,IHEP)=PINV C FLAG FOR PHOTOS... QEDRAD(IHEP)=PHFLAG C update process: DO IP=JMOHEP(1,IHEP),JMOHEP(2,IHEP) IF(IP.GT.0)THEN C if there is a daughter at IHEP, mother entry at IP has decayed IF(ISTHEP(IP).EQ.1)ISTHEP(IP)=2 C and daughter pointers of mother entry must be updated IF(JDAHEP(1,IP).EQ.0)THEN JDAHEP(1,IP)=IHEP JDAHEP(2,IP)=IHEP ELSE JDAHEP(2,IP)=MAX(IHEP,JDAHEP(2,IP)) END IF END IF END DO END CDECK ID>, FRAGMT. *CMZ :- -28/01/92 12.34.44 by Mike Seymour *-- Author : Luca Stanco C----------------------------------------------------------------------- SUBROUTINE FRAGMT(I,J,K) C----------------------------------------------------------------------- C DUMMY SUBROUTINE: DELETE AND SET BDECAY='EURO' C IN MAIN PROGRAM IF YOU USE EURODEC DECAY PACKAGE C----------------------------------------------------------------------- IMPLICIT NONE INTEGER I,J,K WRITE (6,10) 10 FORMAT(/10X,'FRAGMT CALLED BUT NOT LINKED') STOP END CDECK ID>, HVCBVI. *CMZ :- -28/01/92 12.34.44 by Mike Seymour *-- Author : Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HVCBVI C----------------------------------------------------------------------- C DUMMY ROUTINE: DELETE IF YOU LINK TO BARYON NUMBER VIOLATN PACKAGE C----------------------------------------------------------------------- IMPLICIT NONE WRITE (6,10) 10 FORMAT(/10X,'HVCBVI CALLED BUT NOT LINKED') STOP END CDECK ID>, HVHBVI. *CMZ :- -28/01/92 12.34.44 by Mike Seymour *-- Author : Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HVHBVI C----------------------------------------------------------------------- C DUMMY ROUTINE: DELETE IF YOU LINK TO BARYON NUMBER VIOLATN PACKAGE C----------------------------------------------------------------------- IMPLICIT NONE WRITE (6,10) 10 FORMAT(/10X,'HERBVI CALLED BUT NOT LINKED') STOP END CDECK ID>, HWBAZF. *CMZ :- -26/04/91 11.11.54 by Bryan Webber *-- Author : Ian Knowles C----------------------------------------------------------------------- SUBROUTINE HWBAZF(IPAR,JPAR,VEC1,VEC2,VEC3,VEC) C----------------------------------------------------------------------- C Azimuthal correlation functions for Collins' algorithm, C see I.G.Knowles, Comp. Phys. Comm. 58 (90) 271 for notation. C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION Z1,Z2,DOT12,DOT23,DOT31,TR,FN(7),VEC1(2),VEC2(2), & VEC3(2),VEC(2) INTEGER IPAR,JPAR LOGICAL GLUI,GLUJ IF (.NOT.AZSPIN) RETURN Z1=PPAR(4,JPAR)/PPAR(4,IPAR) Z2=1.-Z1 GLUI=IDPAR(IPAR).EQ.13 GLUJ=IDPAR(JPAR).EQ.13 IF (GLUI) THEN IF (GLUJ) THEN C Branching: g--->gg FN(2)=Z2/Z1 FN(3)=1./FN(2) FN(4)=Z1*Z2 FN(1)=FN(2)+FN(3)+FN(4) FN(5)=FN(2)+2.*Z1 FN(6)=FN(3)+2.*Z2 FN(7)=FN(4)-2. ELSE C Branching: g--->qqbar FN(1)=(Z1*Z1+Z2*Z2)/2. FN(2)=0. FN(3)=0. FN(4)=-Z1*Z2 FN(5)=-(2.*Z1-1.)/2. FN(6)=-FN(5) FN(7)=FN(1) ENDIF ELSE IF (GLUJ) THEN C Branching: q--->gq FN(1)=(1.+Z2*Z2)/(2.*Z1) FN(2)=Z2/Z1 FN(3)=0. FN(4)=0. FN(5)=FN(1) FN(6)=(1.+Z2)/2. FN(7)=-FN(6) ELSE C Branching: q--->qg FN(1)=(1.+Z1*Z1)/(2.*Z2) FN(2)=0. FN(3)=Z1/Z2 FN(4)=0. FN(5)=(1.+Z1)/2. FN(6)=FN(1) FN(7)=-FN(5) ENDIF ENDIF DOT12=VEC1(1)*VEC2(1)+VEC1(2)*VEC2(2) DOT23=VEC2(1)*VEC3(1)+VEC2(2)*VEC3(2) DOT31=VEC3(1)*VEC1(1)+VEC3(2)*VEC1(2) TR=1./(FN(1)+FN(2)*DOT23+FN(3)*DOT31+FN(4)*DOT12) VEC(1)=((FN(2)+FN(5)*DOT23)*VEC1(1) & +(FN(3)+FN(6)*DOT31)*VEC2(1) & +(FN(4)+FN(7)*DOT12)*VEC3(1))*TR VEC(2)=((FN(2)+FN(5)*DOT23)*VEC1(2) & +(FN(3)+FN(6)*DOT31)*VEC2(2) & +(FN(4)+FN(7)*DOT12)*VEC3(2))*TR END CDECK ID>, HWBCON. *CMZ :- -11/10/01 12.01.52 by Peter Richardson *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWBCON C----------------------------------------------------------------------- C MAKES COLOUR CONNECTIONS BETWEEN JETS C MODIFIED 12/10/97 BY BRW FOR SUSY PROCESSES C MODIFIED 11/01/01 BY PR FOR SPIN CORRELATIONS(PROBLEM WITH ORDER C OF DECAYS) C NEW VARAIBLE BACK TO ALLOW CODE TO SEARCH DOWN CHAIN C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IHEP,IST,ID,JC,KC,JD,JHEP,LHEP,ID2,NTRY,KHEP LOGICAL BACK IF (IERROR.NE.0) RETURN IF(.NOT.RPARTY) THEN CALL HWBRCN RETURN ENDIF DO 20 IHEP=1,NHEP BACK = .FALSE. IST=ISTHEP(IHEP) C---LOOK FOR PARTONS WITHOUT COLOUR MOTHERS IF (IST.LT.145.OR.IST.GT.152) GOTO 20 51 IF (JMOHEP(2,IHEP).EQ.0.OR.BACK.OR. & ISTHEP(JMOHEP(2,IHEP)).EQ.155) THEN C---FIND COLOUR-CONNECTED PARTON IF(BACK) GOTO 52 IF(JMOHEP(2,IHEP).EQ.0) THEN JC=JMOHEP(1,IHEP) IF (IST.NE.152) JC=JMOHEP(1,JC) JC =JMOHEP(2,JC) ELSE JC = JMOHEP(2,IHEP) JHEP = JC ENDIF IF (JC.EQ.0) THEN CALL HWWARN('HWBCON',51) GOTO 20 ENDIF C---FIND SPECTATOR WHEN JC IS DECAYED HEAVY QUARK OR SUSY PARTICLE 52 IF (ISTHEP(JC).EQ.155.OR.BACK) THEN IF (IDHEP(JMOHEP(1,JC)).EQ.94.OR.BACK) THEN C---DECAYED BEFORE HADRONIZING IF(BACK.OR.(JMOHEP(2,IHEP).NE.0.AND. & ISTHEP(JMOHEP(2,IHEP)).EQ.155)) GOTO 53 JHEP=JMOHEP(2,JC) C--new bit to try and fix the problems for spin correlations C--move one step further up the tree and hope this helps IF (JHEP.EQ.0) THEN NTRY = 0 1 NTRY = NTRY+1 JC = JMOHEP(1,JC) JHEP = JMOHEP(2,JC) IF(JHEP.NE.0.AND.ISTHEP(JHEP).EQ.155) & JHEP = JMOHEP(2,JHEP) IF(JHEP.EQ.0.AND.NTRY.LT.NHEP) GOTO 1 IF(NHEP.EQ.NTRY) GOTO 20 ENDIF 53 ID=IDHW(JHEP) IF (ISTHEP(JHEP).EQ.155) THEN C---SPECIAL FOR GLUINO DECAYS IF (ID.EQ.449) THEN ID=IDHW(JC) C---N.B. WILL NEED MODS WHEN SUSY PARTICLES CAN SHOWER IF (ID.EQ.449.OR.ID.EQ.13.OR. & (ID.GE.401.AND.ID.LE.406).OR. & (ID.GE.413.AND.ID.LE.418).OR. & ID.LE.6.OR.(ID.GE.115.AND.ID.LE.120)) THEN C---LOOK FOR ANTI(S)QUARK OR GLUON DO KC=JDAHEP(1,JHEP),JDAHEP(2,JHEP) ID=IDHW(KC) IF ((ID.GE. 7.AND.ID.LE. 13).OR. & (ID.GE.407.AND.ID.LE.412).OR. & (ID.GE.419.AND.ID.LE.424)) GOTO 5 ENDDO ELSE C---LOOK FOR (S)QUARK OR GLUON DO KC=JDAHEP(1,JHEP),JDAHEP(2,JHEP) ID=IDHW(KC) IF (ID.LE. 6.OR. ID.EQ. 13.OR. & (ID.GE.401.AND.ID.LE.406).OR. & (ID.GE.413.AND.ID.LE.418)) GOTO 5 ENDDO ENDIF C---COULDNT FIND ONE CALL HWWARN('HWBCON',101) GOTO 999 5 JC=KC ELSE C--PR MOD 30/6/99 should fix HWCFOR 104 errors ID2 = IDHW(IHEP) IF(IDHW(JDAHEP(1,JHEP)).EQ.449.AND. & (ID2.LE.6.OR.(ID2.GE.115.AND.ID2.LE.120).OR. & (ID2.GE.401.AND.ID2.LE.406).OR.ID2.EQ.13.OR. & (ID2.GE.413.AND.ID2.LE.418).OR.ID2.EQ.449)) THEN JC = JDAHEP(1,JHEP) ELSE C--modifcation for top ME correction (modified for additional photon radiation) IF(IDHW(JHEP).EQ.6) THEN JC = JDAHEP(1,JHEP)+1 ELSE JC = JDAHEP(1,JHEP)+1 IF(IDHW(JDAHEP(1,JHEP)+2).EQ.13) JC=JC+1 ENDIF ENDIF ENDIF ELSEIF (ID.EQ.6.OR.ID.EQ.12.OR. & (ID.GE.209.AND.ID.LE.218).OR. & (ID.GE.401.AND.ID.LE.424).OR.ID.EQ.449) THEN C Wait for partner heavy quark to decay C RETURN C---N.B. MAY BE A PROBLEM HERE GOTO 20 ELSE JMOHEP(2,IHEP)=JHEP JDAHEP(2,JHEP)=IHEP GOTO 20 ENDIF ELSE JC=JMOHEP(2,JC) ENDIF ENDIF JC=JDAHEP(1,JC) JD=JDAHEP(2,JC) C---SEARCH IN CORRESPONDING JET IF (JD.LT.JC) JD=JC LHEP=0 DO 10 JHEP=JC,JD IF (ISTHEP(JHEP).LT.145.OR.ISTHEP(JHEP).GT.152) GOTO 10 IF (JDAHEP(2,JHEP).EQ.IHEP) LHEP=JHEP IF (JDAHEP(2,JHEP).NE.0) GOTO 10 C---JOIN IHEP AND JHEP ID=IDHW(JHEP) JMOHEP(2,IHEP)=JHEP JDAHEP(2,JHEP)=IHEP GOTO 20 10 CONTINUE IF (LHEP.NE.0) THEN JMOHEP(2,IHEP)=LHEP ELSE C--search down the tree DO 50 KHEP=JC,JD IF(ISTHEP(KHEP).EQ.3.AND.ISTHEP(JDAHEP(1,KHEP)).EQ.155) THEN JHEP = JDAHEP(1,KHEP) BACK = .TRUE. GOTO 51 ENDIF 50 CONTINUE C---DIDN'T FIND PARTNER OF IHEP YET C CALL HWWARN('HWBCON',52) C GOTO 20 ENDIF ENDIF 20 CONTINUE C---BREAK COLOUR CONNECTIONS WITH PHOTONS IHEP=1 30 IF (IHEP.LE.NHEP) THEN IF (IDHW(IHEP).EQ.59 .AND. ISTHEP(IHEP).EQ.149) THEN C BRW FIX 13/03/99 IF (JMOHEP(2,IHEP).NE.0) THEN IF (JDAHEP(2,JMOHEP(2,IHEP)).EQ.IHEP) & JDAHEP(2,JMOHEP(2,IHEP))=JDAHEP(2,IHEP) ENDIF C END FIX IF (JDAHEP(2,IHEP).NE.0) THEN IF (JMOHEP(2,JDAHEP(2,IHEP)).EQ.IHEP) & JMOHEP(2,JDAHEP(2,IHEP))=JMOHEP(2,IHEP) ENDIF JMOHEP(2,IHEP)=IHEP JDAHEP(2,IHEP)=IHEP ENDIF IHEP=IHEP+1 GOTO 30 ENDIF 999 RETURN END CDECK ID>, HWBDED. *CMZ :- -22/04/96 13.54.08 by Mike Seymour *-- Author : Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWBDED(IOPT) C FILL MISSING AREA OF DALITZ PLOT WITH 3-JET AND 2-JET+GAMMA EVENTS C IF (IOPT.EQ.1) SET UP EVENT RECORD C IF (IOPT.EQ.2) CLEAN UP EVENT RECORD AFTER SHOWERING C C********MODIFIED 13/11/00 BY BRW TO ALLOW MULTIPLE APPLICATION IN C*******SAME EVENT (FOR WW AND ZZ) N.B. NO CLEANUP CALLS FOR THESE! C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWBVMC,HWRGEN,HWUALF,HWUSQR,X(3),W,WMAX,WSUM, & X1MIN,X1MAX,X2MIN,X2MAX,QSCALE,GAMFAC,GLUFAC,R(3,3),CS,SN,M(3), & E(3),LAMBDA,A,B,C,PTSQ,EM,P1(5),P2(5),PVRT(4),EPS,MASDEP INTEGER ID,ID3,EMIT,NOEMIT,IEVT,IHEP,JHEP,KHEP,ICMF,IOPT,IEDT(3), & I,NDEL,LHEP,IP,JP,KP,IDUN EXTERNAL HWBVMC,HWRGEN,HWUALF,HWUSQR SAVE X,WMAX,P1,P2 SAVE WSUM, X1MIN,X1MAX,EMIT,ICMF,IEVT DATA WSUM,WMAX,X1MIN,X1MAX,EMIT,ICMF,IEVT & /0.994651D0,1.84096D0,0.0D0,0.773459D0,3*0.0D0/ LAMBDA(A,B,C)=(A**2+B**2+C**2-2*A*B-2*B*C-2*C*A)/(4*A) IF (IOPT.EQ.1) THEN C---FIND AN UNTREATED CMF IF (IEVT.EQ.NEVHEP+NWGTS) RETURN IEVT=0 ICMF=0 5 IDUN=ICMF DO 10 IHEP=IDUN+1,NHEP 10 IF (ICMF.EQ.IDUN .AND. ISTHEP(IHEP).EQ.110 .AND. & JDAHEP(2,IHEP).EQ.JDAHEP(1,IHEP)+1) ICMF=IHEP IF (ICMF.EQ.IDUN) RETURN EM=PHEP(5,ICMF) IF (EM.LT.2*HWBVMC(1)) GOTO 5 C---ONLY APPLY THE CORRECTION TO HADRONIC DECAYS IF (IDHW(JDAHEP(1,ICMF)).GT.12) GOTO 5 C---GENERATE X1,X2 ACCORDING TO 1/((1-X1)*(1-X2)) 100 CONTINUE C---CHOOSE X1 X(1)=1-(1-X1MAX)*((1-X1MIN)/(1-X1MAX))**HWRGEN(0) C---CHOOSE X2 X2MIN=MAX(X(1),1-X(1)) X2MAX=(4*X(1)-3+2*DREAL( DCMPLX( X(1)**3+135*(X(1)-1)**3, & 3*HWUSQR(3*(128*X(1)**4-368*X(1)**3+405*X(1)**2-216*X(1)+54))* & (X(1)-1) )**(1./3) ))/3 IF (X2MAX.GE.ONE.OR.X2MIN.GE.ONE.OR.X2MAX.LE.X2MIN) GOTO 100 X(2)=1-(1-X2MAX)*((1-X2MIN)/(1-X2MAX))**HWRGEN(1) C---CALCULATE WEIGHT W=2 * LOG((1-X1MIN)/(1-X1MAX))*LOG((1-X2MIN)/(1-X2MAX)) * & (X(1)**2+X(2)**2) C---GENERATE UNWEIGHTED (X1,X2) PAIRS (EFFICIENCY IS ~50%) IF (WMAX*HWRGEN(2).GT.W) GOTO 100 C---SYMMETRIZE X1,X2 X(3)=2-X(1)-X(2) IF (HWRGEN(5).GT.HALF) THEN X(1)=X(2) X(2)=2-X(3)-X(1) ENDIF C---CHOOSE WHICH PARTON WILL EMIT EMIT=1 IF (HWRGEN(6).LT.X(1)**2/(X(1)**2+X(2)**2)) EMIT=2 NOEMIT=3-EMIT IHEP=JDAHEP( EMIT,ICMF) JHEP=JDAHEP(NOEMIT,ICMF) C---PREFACTORS FOR GAMMA AND GLUON CASES QSCALE=HWUSQR((1-X(1))*(1-X(2))*(1-X(3)))*EM/X(NOEMIT) ID=IDHW(JDAHEP(1,ICMF)) GAMFAC=ALPFAC*ALPHEM*ICHRG(ID)**2/(18*PIFAC) GLUFAC=0 IF (QSCALE.GT.HWBVMC(13)) & GLUFAC=CFFAC/(2*PIFAC)*HWUALF(1,QSCALE) C---SWITCH OFF PHOTON EMISSION IN W DECAYS (THE M-E DOES NOT FACTORIZE) IF (ICHRG(IDHW(ICMF)).NE.0) GAMFAC=0 C---IN FRACTION FAC*WSUM OF EVENTS ADD A GAMMA/GLUON IF (GAMFAC*WSUM .GT. HWRGEN(3)) THEN ID3=59 ELSEIF (GLUFAC*WSUM .GT. HWRGEN(4)) THEN ID3=13 ELSE EMIT=0 GOTO 5 ENDIF C---CHECK INFRA-RED CUT-OFF FOR GAMMA/GLUON M(EMIT)=PHEP(5,IHEP)+VQCUT M(NOEMIT)=PHEP(5,JHEP)+VQCUT M(3)=HWBVMC(ID3) E(1)=HALF*EM*(X(1)+(M(1)**2-M(2)**2-M(3)**2)/EM**2) E(2)=HALF*EM*(X(2)+(M(2)**2-M(3)**2-M(1)**2)/EM**2) E(3)=EM-E(1)-E(2) PTSQ=-LAMBDA(E(NOEMIT)**2-M(NOEMIT)**2,E(3)**2-M(3)**2, & E(EMIT)**2-M(EMIT)**2) IF (PTSQ.LE.ZERO .OR. $ E(1).LE.M(1).OR.E(2).LE.M(2).OR.E(3).LE.M(3)) THEN EMIT=0 GOTO 5 ENDIF C---CALCULATE MASS-DEPENDENT SUPRESSION IF (MOD(IPROC,10).GT.0) THEN EPS=(RMASS(ID)/EM)**2 MASDEP=X(1)**2+X(2)**2 $ -4*EPS*X(3)-2*EPS*((1-X(2))/(1-X(1))+(1-X(1))/(1-X(2))) $ -4*EPS**2*X(3)**2/((1-X(1))*(1-X(2))) IF (MASDEP.LT.HWRGEN(7)*(X(1)**2+X(2)**2)) THEN EMIT=0 GOTO 5 ENDIF ENDIF C---STORE OLD MOMENTA CALL HWVEQU(5,PHEP(1,JDAHEP(1,ICMF)),P1) CALL HWVEQU(5,PHEP(1,JDAHEP(2,ICMF)),P2) C---GET THE NON-EMITTING PARTON'S CMF DIRECTION CALL HWULOF(PHEP(1,ICMF),PHEP(1,JHEP),PHEP(1,JHEP)) CALL HWRAZM(ONE,CS,SN) CALL HWUROT(PHEP(1,JHEP),CS,SN,R) M(EMIT)=PHEP(5,IHEP) M(NOEMIT)=PHEP(5,JHEP) M(3)=RMASS(ID3) KHEP=JDAHEP(2,ICMF) LHEP=KHEP+1 IF (NHEP.GT.KHEP) THEN C---MOVE UP REST OF EVENT DO IP=NHEP,LHEP,-1 JP=IP+1 ISTHEP(JP)= ISTHEP(IP) IDHW(JP)=IDHW(IP) IDHEP(JP)=IDHEP(IP) KP=JMOHEP(1,IP) IF (KP.GT.KHEP) THEN KP=KP+1 ELSE IF (JDAHEP(1,KP).EQ.IP) JDAHEP(1,KP)=JP IF (JDAHEP(2,KP).EQ.IP) JDAHEP(2,KP)=JP ENDIF JMOHEP(1,JP)=KP KP=JMOHEP(2,IP) IF (KP.GT.KHEP) KP=KP+1 JMOHEP(2,JP)=KP KP=JDAHEP(1,IP) IF (KP.GT.KHEP) KP=KP+1 JDAHEP(1,JP)=KP KP=JDAHEP(2,IP) IF (KP.GT.KHEP) KP=KP+1 JDAHEP(2,JP)=KP CALL HWVEQU(5,PHEP(1,IP),PHEP(1,JP)) CALL HWVEQU(4,VHEP(1,IP),VHEP(1,JP)) ENDDO ENDIF C---REORDER ENTRIES: IHEP=EMITTER, JHEP=NON-EMITTER, KHEP=EMITTED NHEP=NHEP+1 IF (IDHW(IHEP).LT.IDHW(JHEP)) THEN IHEP=JDAHEP(1,ICMF) JHEP=LHEP ELSE IHEP=LHEP JHEP=JDAHEP(1,ICMF) ENDIF C---SET UP MOMENTA PHEP(5,JHEP)=M(NOEMIT) PHEP(5,IHEP)=M(EMIT) PHEP(5,KHEP)=M(3) PHEP(4,JHEP)=HALF*EM*(X(NOEMIT)+ & (M(NOEMIT)**2-M(EMIT)**2-M(3)**2)/EM**2) PHEP(4,IHEP)=HALF*EM*(X(EMIT)+ & (M(EMIT)**2-M(NOEMIT)**2-M(3)**2)/EM**2) PHEP(4,KHEP)=EM-PHEP(4,IHEP)-PHEP(4,JHEP) PHEP(3,JHEP)=HWUSQR(PHEP(4,JHEP)**2-PHEP(5,JHEP)**2) PHEP(3,IHEP)=( (PHEP(4,KHEP)**2-PHEP(5,KHEP)**2) - & (PHEP(4,IHEP)**2-PHEP(5,IHEP)**2) - & (PHEP(3,JHEP)**2) )*HALF/PHEP(3,JHEP) PHEP(3,KHEP)=-PHEP(3,IHEP)-PHEP(3,JHEP) PHEP(2,JHEP)=0 PHEP(2,IHEP)=0 PHEP(2,KHEP)=0 PHEP(1,JHEP)=0 PHEP(1,IHEP)=HWUSQR(PHEP(4,IHEP)**2- & PHEP(3,IHEP)**2-PHEP(5,IHEP)**2) PHEP(1,KHEP)=-PHEP(1,IHEP) C---ORIENT IN CMF, THEN BOOST TO LAB CALL HWUROB(R,PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWUROB(R,PHEP(1,JHEP),PHEP(1,JHEP)) CALL HWUROB(R,PHEP(1,KHEP),PHEP(1,KHEP)) CALL HWULOB(PHEP(1,ICMF),PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWULOB(PHEP(1,ICMF),PHEP(1,JHEP),PHEP(1,JHEP)) CALL HWULOB(PHEP(1,ICMF),PHEP(1,KHEP),PHEP(1,KHEP)) C---CALCULATE PRODUCTION VERTICES CALL HWVZRO(4,VHEP(1,JHEP)) CALL HWVSUM(4,PHEP(1,IHEP),PHEP(1,KHEP),PVRT) CALL HWUDKL(ID,PVRT,VHEP(1,KHEP)) CALL HWVEQU(4,VHEP(1,KHEP),VHEP(1,IHEP)) C---REORDER ENTRIES: IHEP=QUARK, JHEP=ANTI-QUARK, KHEP=EMITTED IF (IHEP.EQ.LHEP) THEN IHEP=JHEP JHEP=LHEP ENDIF C---STATUS, ID AND POINTERS ISTHEP(JHEP)=114 IDHW(JHEP)=IDHW(KHEP) IDHEP(JHEP)=IDHEP(KHEP) IDHW(KHEP)=ID3 IDHEP(KHEP)=IDPDG(ID3) JDAHEP(2,ICMF)=JHEP JMOHEP(1,JHEP)=ICMF JDAHEP(1,JHEP)=0 C---COLOUR CONNECTIONS AND GLUON POLARIZATION JMOHEP(2,JHEP)=IHEP JDAHEP(2,IHEP)=JHEP IF (ID3.EQ.13) THEN JMOHEP(2,IHEP)=KHEP JMOHEP(2,KHEP)=JHEP JDAHEP(2,JHEP)=KHEP JDAHEP(2,KHEP)=IHEP GPOLN=((1-X(1))**2+(1-X(2))**2)/(4*(1-X(3))) GPOLN=1/(1+GPOLN) ELSE JMOHEP(2,IHEP)=JHEP JMOHEP(2,KHEP)=KHEP JDAHEP(2,JHEP)=IHEP JDAHEP(2,KHEP)=KHEP ENDIF IEVT=NEVHEP+NWGTS GOTO 5 ELSEIF (IOPT.EQ.2) THEN C---MAKE THREE-JET EVENTS FROM THE `DEAD-ZONE' LOOK LIKE TWO-JET EVENTS IF (EMIT.EQ.0.OR.IEVT.NE.NEVHEP+NWGTS) THEN RETURN ELSEIF (EMIT.EQ.1) THEN IHEP=JDAHEP(1,JDAHEP(1,ICMF)+1) JHEP=JDAHEP(1,JDAHEP(1,ICMF)) ELSE IHEP=JDAHEP(1,JDAHEP(2,ICMF)) JHEP=JDAHEP(1,JDAHEP(1,ICMF)+1) JDAHEP(1,JDAHEP(2,ICMF))=JHEP IDHW(JHEP)=IDHW(IHEP) IF (ISTHEP(IHEP+1).EQ.100 .AND. ISTHEP(JHEP+1).EQ.100) & CALL HWVEQU(5,PHEP(1,IHEP+1),PHEP(1,JHEP+1)) ENDIF JMOHEP(2,JDAHEP(1,ICMF))=JDAHEP(2,ICMF) JDAHEP(2,JDAHEP(1,ICMF))=JDAHEP(2,ICMF) JMOHEP(2,JDAHEP(2,ICMF))=JDAHEP(1,ICMF) JDAHEP(2,JDAHEP(2,ICMF))=JDAHEP(1,ICMF) CALL HWVEQU(5,P1,PHEP(1,JDAHEP(1,ICMF))) CALL HWVEQU(5,P2,PHEP(1,JDAHEP(2,ICMF))) CALL HWVSUM(4,PHEP(1,IHEP),PHEP(1,JHEP),PHEP(1,JHEP)) CALL HWUMAS(PHEP(1,JHEP)) JDAHEP(2,JHEP)=JDAHEP(2,IHEP) IEDT(1)=JDAHEP(1,ICMF)+1 IEDT(2)=IHEP IEDT(3)=IHEP+1 NDEL=3 IF (ISTHEP(IHEP+1).NE.100) NDEL=2 CALL HWUEDT(NDEL,IEDT) DO 410 I=1,2 IHEP=JDAHEP(1,JDAHEP(I,ICMF)) JMOHEP(1,IHEP)=JDAHEP(I,ICMF) IF (ISTHEP(IHEP+1).EQ.100) THEN JMOHEP(1,IHEP+1)=JMOHEP(1,IHEP) JMOHEP(2,IHEP+1)=JMOHEP(2,JMOHEP(1,IHEP)) ENDIF DO 400 JHEP=JDAHEP(1,IHEP),JDAHEP(2,IHEP) JMOHEP(1,JHEP)=IHEP 400 CONTINUE CALL HWVZRO(4,VHEP(1,JDAHEP(I,ICMF))) CALL HWVZRO(4,VHEP(1,IHEP)) IF (ISTHEP(IHEP+1).EQ.100) CALL HWVZRO(4,VHEP(1,IHEP+1)) 410 CONTINUE EMIT=0 IEVT=0 ELSE CALL HWWARN('HWBDED',500) ENDIF END CDECK ID>, HWBDIS. *CMZ :- -17/05/94 09.33.08 by Mike Seymour *-- Author : Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWBDIS(IOPT) C----------------------------------------------------------------------- C FILL MISSING AREA OF DIS PHASE-SPACE WITH 2+1-JET EVENTS C IF (IOPT.EQ.1) SET UP EVENT RECORD C IF (IOPT.EQ.2) CLEAN UP EVENT RECORD AFTER SHOWERING C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,HWBVMC,HWUALF,HWULDO,P1(5),P2(5),P3(5), & PCMF(5),L(5),R(3,3),Q,XBJ,RN,XPMIN,XPMAX,XP,ZPMIN,ZPMAX,ZP,FAC, & X1,X2,XTSQ,XT,PTSQ,SIN1,SIN2,W1,W2,CFAC,PDFOLD(13),PDFNEW(13), & PHI,SCALE,Q1(5),Q2(5),DIR1,DIR2,DIR,PM(5),POLD,PNEW,COMINT, & BGFINT,COMWGT,C1,C2,CM,B1,B2,BM,PVRT(4) INTEGER IOPT,EMIT,ICMF,IHEP,JHEP,IIN,IOUT,ILEP,IHAD,ID,IDNEW, & IEDT(3),NDEL,NTRY,ITEMP LOGICAL BGF EXTERNAL HWRGEN,HWBVMC,HWUALF,HWULDO SAVE BGF,IIN,IOUT,ICMF,ID,Q1,Q2,XP,XBJ SAVE EMIT,COMINT,BGFINT,COMWGT,C1,C2,CM,B1,B2,BM DATA EMIT,COMINT,BGFINT,COMWGT/0D0,3.9827D0,1.2462D0,0.3D0/ DATA C1,C2,CM,B1,B2,BM/0.56D0,0.20D0,10D0,0.667D0,0.167D0,3D0/ IF (IERROR.NE.0) RETURN IF (IOPT.EQ.1) THEN C---FIND AN UNTREATED CMF IF (EMIT.EQ.NEVHEP+NWGTS) RETURN ICMF=0 DO 10 IHEP=1,NHEP 10 IF (ICMF.EQ.0 .AND. ISTHEP(IHEP).EQ.110 .AND. & JDAHEP(2,IHEP).EQ.JDAHEP(1,IHEP)+1) ICMF=IHEP IF (ICMF.EQ.0) RETURN IIN=JMOHEP(2,ICMF) IOUT=JDAHEP(2,ICMF) ILEP=JMOHEP(1,ICMF) CALL HWVEQU(5,PHEP(1,IIN),P1) CALL HWVEQU(5,PHEP(1,IOUT),P2) CALL HWVEQU(5,PHEP(1,ILEP),L) IHAD=2 IF (JDAHEP(1,IHAD).NE.0) IHAD=JDAHEP(1,IHAD) ID=IDHW(IIN) C---STORE OLD MOMENTA CALL HWVEQU(5,P1,Q1) CALL HWVEQU(5,P2,Q2) C---BOOST AND ROTATE THE MOMENTA TO THE BREIT FRAME CALL HWVDIF(4,P2,P1,PCMF) CALL HWUMAS(PCMF) CALL HWVEQU(5,PHEP(1,IHAD),PM) Q=-PCMF(5) XBJ=HALF*Q**2/HWULDO(PM,PCMF) CALL HWVSCA(4,HALF/XBJ,PCMF,PCMF) CALL HWVSUM(4,PM,PCMF,PCMF) CALL HWUMAS(PCMF) CALL HWULOF(PCMF,L,L) CALL HWULOF(PCMF,PM,PM) CALL HWUROT(PM,ONE,ZERO,R) CALL HWUROF(R,L,L) PHI=ATAN2(L(2),L(1)) CALL HWUROT(PM,COS(PHI),SIN(PHI),R) C---CHOOSE THE HADRONIC-PLANE CONFIGURATION, XP,ZP IF (HWRGEN(0).LT.COMWGT) THEN C-----CONSIDER GENERATING A QCD COMPTON EVENT BGF=.FALSE. P3(5)=RMASS(13) 100 RN=HWRGEN(1) IF (RN.LT.C1) THEN ZP=HWRGEN(2) XPMAX=MIN(ZP,1-ZP) XP=HWRGEN(3)*XPMAX FAC=1/C1*2*XPMAX/((1-XP)*(1-ZP))* $ (1+(1-XP-ZP+2*XP*ZP)**2+2*(1-XP)*(1-ZP)*XP*ZP) IF (HWRGEN(4).LT.HALF) THEN ZPMAX=ZP ZP=XP XP=ZPMAX ENDIF ELSEIF (RN.LT.C1+C2) THEN XPMAX=0.83 XP=XPMAX*HWRGEN(2) ZPMIN=MAX(XP,1-XP) ZPMAX=1-2./3.*XP*(1+DREAL( DCMPLX(10-45*XP+18*XP**2,3*SQRT( $ 3*(9+66*XP-93*XP**2+12*XP**3-8*XP**4+24*XP**5-8*XP**6))) $ **(1./3.) * DCMPLX(0.5D0,0.86602540378444D0) )) ZP=1-((1-ZPMIN)/(1-ZPMAX))**HWRGEN(4)*(1-ZPMAX) FAC=1/C2*XPMAX*LOG((1-ZPMIN)/(1-ZPMAX))/(1-XP)* $ (1+(1-XP-ZP+2*XP*ZP)**2+2*(1-XP)*(1-ZP)*XP*ZP) ELSE ZPMAX=0.85 ZP=ZPMAX*HWRGEN(2) XPMIN=MAX(ZP,1-ZP) XPMAX=(1+4*ZP*(1-ZP))/(1+6*ZP*(1-ZP)) XP=1-((1-XPMIN)/(1-XPMAX))**HWRGEN(4)*(1-XPMAX) FAC=1/(1-C1-C2)*ZPMAX*LOG((1-XPMIN)/(1-XPMAX))/(1-ZP)* $ (1+(1-XP-ZP+2*XP*ZP)**2+2*(1-XP)*(1-ZP)*XP*ZP) ENDIF XPMAX=(1+4*ZP*(1-ZP))/(1+6*ZP*(1-ZP)) ZPMAX=1-2./3.*XP*(1+DREAL( DCMPLX(10-45*XP+18*XP**2,3*SQRT( $ 3*(9+66*XP-93*XP**2+12*XP**3-8*XP**4+24*XP**5-8*XP**6))) $ **(1./3.) * DCMPLX(0.5D0,0.86602540378444D0) )) IF (XP.GT.XPMAX.OR.ZP.GT.ZPMAX.OR.CM*HWRGEN(4).GT.FAC) $ GOTO 100 ELSE C-----CONSIDER GENERATING A BGF EVENT BGF=.TRUE. P3(5)=P1(5) P1(5)=RMASS(13) 110 RN=HWRGEN(1) IF (RN.LT.B1) THEN ZP=HWRGEN(2) XPMAX=MIN(ZP,1-ZP) XP=HWRGEN(3)*XPMAX FAC=1/B1*2*XPMAX/(1-ZP)* $ (( XP+ZP-2*XP*ZP)**2+2*(1-XP)*(1-ZP)*XP*ZP $ +(1-XP-ZP+2*XP*ZP)**2+2*(1-XP)*(1-ZP)*XP*ZP) IF (HWRGEN(4).LT.HALF) XP=1-XP ELSEIF (RN.LT.B1+B2) THEN XPMAX=0.83 XP=XPMAX*HWRGEN(2) ZPMIN=MAX(XP,1-XP) ZPMAX=1-2./3.*XP*(1+DREAL( DCMPLX(10-45*XP+18*XP**2,3*SQRT( $ 3*(9+66*XP-93*XP**2+12*XP**3-8*XP**4+24*XP**5-8*XP**6))) $ **(1./3.) * DCMPLX(0.5D0,0.86602540378444D0) )) ZP=1-((1-ZPMIN)/(1-ZPMAX))**HWRGEN(4)*(1-ZPMAX) FAC=1/B2*XPMAX*LOG((1-ZPMIN)/(1-ZPMAX))* $ (( XP+ZP-2*XP*ZP)**2+2*(1-XP)*(1-ZP)*XP*ZP $ +(1-XP-ZP+2*XP*ZP)**2+2*(1-XP)*(1-ZP)*XP*ZP) ELSE XPMAX=0.83 XP=XPMAX*HWRGEN(2) ZPMAX=MIN(XP,1-XP) ZPMIN=2./3.*XP*(1+DREAL( DCMPLX(10-45*XP+18*XP**2,3*SQRT( $ 3*(9+66*XP-93*XP**2+12*XP**3-8*XP**4+24*XP**5-8*XP**6))) $ **(1./3.) * DCMPLX(0.5D0,0.86602540378444D0) )) ZP=(ZPMAX-ZPMIN)*HWRGEN(4)+ZPMIN FAC=1/(1-B1-B2)*XPMAX*(ZPMAX-ZPMIN)/(1-ZP)* $ (( XP+ZP-2*XP*ZP)**2+2*(1-XP)*(1-ZP)*XP*ZP $ +(1-XP-ZP+2*XP*ZP)**2+2*(1-XP)*(1-ZP)*XP*ZP) ENDIF ZPMAX=1-2./3.*XP*(1+DREAL( DCMPLX(10-45*XP+18*XP**2,3*SQRT( $ 3*(9+66*XP-93*XP**2+12*XP**3-8*XP**4+24*XP**5-8*XP**6))) $ **(1./3.) * DCMPLX(0.5D0,0.86602540378444D0) )) IF (ZP.GT.ZPMAX.OR.ZP.LT.ONE-ZPMAX.OR.BM*HWRGEN(4).GT.FAC) $ GOTO 110 ENDIF C---CALCULATE THE ADDITIONAL FACTORS IN THE WEIGHT IF (BGF) THEN IDNEW=13 CFAC=1./2 FAC=BGFINT/(1-COMWGT) ELSE IDNEW=ID CFAC=4./3 FAC=COMINT/COMWGT ENDIF SCALE=Q*SQRT((1-XP)*(1-ZP)*ZP/XP+1) ITEMP=ISTAT ISTAT=7 CALL HWSFUN(XBJ,Q,IDHW(IHAD),NSTRU,PDFOLD,2) ISTAT=ITEMP IF (PDFOLD(ID).LE.ZERO) THEN CALL HWWARN('HWBDIS',100) GOTO 999 ENDIF IF (XP.GT.XBJ) THEN CALL HWSFUN(XBJ/XP,SCALE,IDHW(IHAD),NSTRU,PDFNEW,2) FAC=CFAC/(2*PIFAC) * HWUALF(1,SCALE) * FAC * $ PDFNEW(IDNEW)/PDFOLD(ID) ELSE FAC=0 ENDIF C---FOR PHOTON BEAMS, INCLUDE DIRECT PHOTON COUPLING IF (IDHW(IHAD).EQ.59) THEN ZPMIN=2./3.*XBJ*(1+DREAL( DCMPLX(10-45*XBJ+18*XBJ**2,3*SQRT( $ 3*(9+66*XBJ-93*XBJ**2+12*XBJ**3-8*XBJ**4+24*XBJ**5 $ -8*XBJ**6)))**(1./3.)*DCMPLX(0.5D0,0.86602540378444D0) )) ZPMAX=1-ZPMIN DIR1=(XBJ**2+(1-XBJ)**2)*(LOG(ZPMAX/ZPMIN)-(ZPMAX-ZPMIN)) DIR2=4*XBJ*(1-XBJ)*(ZPMAX-ZPMIN) DIR=QFCH(MOD(ID-1,6)+1)**2*ALPHEM/(2*PIFAC*PDFOLD(ID))*XBJ $ *(DIR1+DIR2) ELSE DIR=0 ENDIF C---DECIDE WHETHER TO MAKE AN EVENT HERE IF (HWRGEN(4).GT.FAC+DIR) RETURN C---FOR DIRECT COUPLING, CHOOSE ZP VALUE IF ((FAC+DIR)*HWRGEN(8).GT.FAC) THEN IF ((DIR1+DIR2)*HWRGEN(9).LT.DIR1) THEN NTRY=0 120 NTRY=NTRY+2 ZP=1-(ZPMAX/ZPMIN)**HWRGEN(NTRY+1)*ZPMIN IF ((ZPMIN**2+(1-ZPMIN)**2)*HWRGEN(NTRY).GT.ZP**2+(1-ZP)**2) $ GOTO 120 ELSE ZP=SQRT((ZPMAX-ZPMIN)*HWRGEN(10)+ZPMIN**2) ENDIF XP=XBJ BGF=.TRUE. P3(5)=P2(5) P1(5)=0 ENDIF X1=1- ZP /XP X2=1-(1-ZP)/XP XTSQ=4*(1-XP)*(1-ZP)*ZP/XP XT=SQRT(XTSQ) SIN1=XT/SQRT(X1**2+XTSQ) SIN2=XT/SQRT(X2**2+XTSQ) C---CHOOSE THE AZIMUTH BETWEEN THE TWO PLANES IF (BGF) THEN W1=XP**2*(X1**2+1.5*XTSQ) ELSE W1=1 ENDIF W2=XP**2*(X2**2+1.5*XTSQ) IF (HWRGEN(5)*(W1+W2).GT.W2) THEN IF (BGF) THEN C-----WEIGHTED BY (1+SIN1*COS(PHI))**2 200 PHI=(2*HWRGEN(6)-1)*PIFAC IF (HWRGEN(7)*(1+SIN1)**2.GT.(1+SIN1*COS(PHI))**2) GOTO 200 ELSE C-----UNIFORMLY PHI=(2*HWRGEN(6)-1)*PIFAC ENDIF ELSE C-----WEIGHTED BY (1-SIN2*COS(PHI))**2 210 PHI=(2*HWRGEN(6)-1)*PIFAC IF (HWRGEN(7)*(1+SIN2)**2.GT.(1-SIN2*COS(PHI))**2) GOTO 210 ENDIF C---RECONSTRUCT MOMENTA AND BOOST BACK TO LAB P1(1)=0 P1(2)=0 P1(3)=HALF*Q/XP P1(4)=SQRT(P1(3)**2+P1(5)**2) PTSQ=((ZP*Q*(P1(4)+P1(3)-Q)-P2(5)**2)*(P1(4)-P1(3)+(1-ZP)*Q) $ -P3(5)**2*ZP*Q)/(P1(4)-P1(3)+Q) C---CHECK INFRARED CUTOFF FOR THIS PARTON TYPE IF (PTSQ.LT.MAX(HWBVMC(ID),HWBVMC(IDHW(IOUT)))**2) RETURN P2(1)=SQRT(PTSQ)*COS(PHI) P2(2)=SQRT(PTSQ)*SIN(PHI) P2(3)=-0.5*(ZP*Q-(PTSQ+P2(5)**2)/(ZP*Q)) P2(4)= 0.5*(ZP*Q+(PTSQ+P2(5)**2)/(ZP*Q)) P3(1)=P1(1)-P2(1) P3(2)=P1(2)-P2(2) P3(3)=P1(3)-P2(3)-Q P3(4)=P1(4)-P2(4) CALL HWUROB(R,P1,P1) CALL HWUROB(R,P2,P2) CALL HWUROB(R,P3,P3) CALL HWULOB(PCMF,P1,P1) CALL HWULOB(PCMF,P2,P2) CALL HWULOB(PCMF,P3,P3) C---SPECIAL CASE FOR DIRECT PHOTON - COPY THE EXACT BEAM MOMENTUM C---SHARE THE MISMATCH EQUALLY BETWEEN THE OUTGOING PARTONS C---AND PUT THEM BACK ON SHELL IF (XP.EQ.XBJ) THEN CALL HWVDIF(4,PHEP(1,IHAD),P1,PM) CALL HWVSCA(4,HALF,PM,PM) CALL HWVSUM(4,PM,P2,P2) CALL HWVSUM(4,PM,P3,P3) CALL HWUMAS(P2) CALL HWUMAS(P3) CALL HWVEQU(5,PHEP(1,IHAD),P1) CALL HWVSUM(4,P2,P3,PCMF) CALL HWUMAS(PCMF) POLD=HWULDO(P2,PCMF)**2/PCMF(5)**2-SIGN(P2(5)**2,P2(5)) PNEW=PCMF(5)**2/4-RMASS(ID)**2 IF (PCMF(5).LE.ZERO.OR.POLD.LE.ZERO.OR.PNEW.LE.ZERO) RETURN CALL HWVSCA(4,SQRT(PNEW/POLD),P2,P2) CALL HWVSCA(4,HALF-HWULDO(P2,PCMF)/PCMF(5)**2,PCMF,PM) CALL HWVSUM(4,PM,P2,P2) CALL HWUMAS(P2) CALL HWVDIF(4,PCMF,P2,P3) CALL HWUMAS(P3) ENDIF NHEP=NHEP+1 CALL HWVEQU(5,P1,PHEP(1,IIN)) IF (BGF.AND.ID.GT.6.OR..NOT.BGF.AND.ID.LT.7) THEN CALL HWVEQU(5,P2,PHEP(1,IOUT)) CALL HWVEQU(5,P3,PHEP(1,NHEP)) ELSE CALL HWVEQU(5,P3,PHEP(1,IOUT)) CALL HWVEQU(5,P2,PHEP(1,NHEP)) ENDIF CALL HWVSUM(4,PHEP(1,ILEP),PHEP(1,IIN),PHEP(1,ICMF)) CALL HWUMAS(PHEP(1,ICMF)) C Decide which quark radiated and assign production vertices IF (BGF) THEN C Boson-Gluon fusion case IF (1-ZP.LT.HWRGEN(0)) THEN C Gluon splitting to quark CALL HWVZRO(4,VHEP(1,NHEP-1)) CALL HWVDIF(4,PHEP(1,NHEP-4),PHEP(1,NHEP),PVRT) CALL HWUDKL(ID,PVRT,VHEP(1,NHEP)) CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,NHEP-4)) ELSE C Gluon splitting to antiquark CALL HWVZRO(4,VHEP(1,NHEP)) CALL HWVDIF(4,PHEP(1,NHEP-4),PHEP(1,NHEP-1),PVRT) CALL HWUDKL(ID,PVRT,VHEP(1,NHEP-1)) CALL HWVEQU(4,VHEP(1,NHEP-1),VHEP(1,NHEP-4)) ENDIF ELSE C QCD Compton case IF (1.LT.HWRGEN(0)*(1+(1-XP-ZP)**2+6*XP*(1-XP)*ZP*(1-ZP)))THEN C Incoming quark radiated the gluon CALL HWVZRO(4,VHEP(1,NHEP-1)) CALL HWVDIF(4,PHEP(1,NHEP-4),PHEP(1,NHEP),PVRT) CALL HWUDKL(ID,PVRT,VHEP(1,NHEP)) CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,NHEP-4)) ELSE C Outgoing quark radiated the gluon CALL HWVZRO(4,VHEP(1,NHEP-4)) CALL HWVSUM(4,PHEP(1,NHEP-1),PHEP(1,NHEP),PVRT) CALL HWUDKL(ID,PVRT,VHEP(1,NHEP)) CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,NHEP-1)) ENDIF ENDIF C---STATUS, ID AND POINTERS ISTHEP(NHEP)=114 IF (BGF) THEN IF (XP.EQ.XBJ) THEN IDHW(IIN)=59 IDHEP(IIN)=IDPDG(59) ELSE IDHW(IIN)=13 IDHEP(IIN)=IDPDG(13) ENDIF IF (ID.LT.7) THEN IDHW(NHEP)=IDHW(IOUT) IDHEP(NHEP)=IDHEP(IOUT) IDHW(IOUT)=MOD(ID,6)+6 IDHEP(IOUT)=IDPDG(IDHW(IOUT)) ELSE IDHW(NHEP)=MOD(ID,6) IDHEP(NHEP)=IDPDG(IDHW(NHEP)) ENDIF ELSEIF (ID.LT.7) THEN IDHW(NHEP)=13 IDHEP(NHEP)=IDPDG(13) ELSE IDHW(NHEP)=IDHW(IOUT) IDHEP(NHEP)=IDHEP(IOUT) IDHW(IOUT)=13 IDHEP(IOUT)=IDPDG(13) ENDIF JDAHEP(2,ICMF)=NHEP JMOHEP(1,NHEP)=ICMF C---COLOUR CONNECTIONS IF (XP.EQ.XBJ) THEN JMOHEP(2,IIN)=IIN JDAHEP(2,IIN)=IIN JMOHEP(2,IOUT)=NHEP JDAHEP(2,IOUT)=NHEP JMOHEP(2,NHEP)=IOUT JDAHEP(2,NHEP)=IOUT ELSE JDAHEP(2,IIN)=NHEP JDAHEP(2,NHEP)=IOUT JMOHEP(2,IOUT)=NHEP JMOHEP(2,NHEP)=IIN ENDIF C---FACTORISATION SCALE EMSCA=SCALE EMIT=NEVHEP+NWGTS ELSEIF (IOPT.EQ.2) THEN C---MAKE TWO-JET EVENTS LOOK LIKE ONE-JET EVENTS IF (EMIT.NE.NEVHEP+NWGTS .OR. XP.EQ.XBJ) RETURN IF (.NOT.BGF) THEN CALL HWVEQU(5,Q1,PHEP(1,IIN)) CALL HWVEQU(5,Q2,PHEP(1,IOUT)) JMOHEP(2,IIN)=IOUT JDAHEP(2,IIN)=IOUT JMOHEP(2,IOUT)=IIN JDAHEP(2,IOUT)=IIN JDAHEP(2,ICMF)=IOUT IHEP=JDAHEP(1,IOUT) JHEP=JDAHEP(1,IOUT+1) CALL HWVSUM(4,PHEP(1,IHEP),PHEP(1,JHEP),PHEP(1,IHEP)) CALL HWUMAS(PHEP(1,IHEP)) JDAHEP(2,IHEP)=JDAHEP(2,JHEP) IEDT(1)=IOUT+1 IEDT(2)=JHEP IEDT(3)=JHEP+1 NDEL=3 IF (ISTHEP(JHEP+1).NE.100) NDEL=2 IHEP=JDAHEP(1,IOUT) JMOHEP(1,IHEP)=IOUT IF (ISTHEP(IHEP+1).EQ.100) THEN JMOHEP(1,IHEP+1)=IOUT JMOHEP(2,IHEP+1)=IIN ENDIF DO 300 JHEP=JDAHEP(1,IHEP),JDAHEP(2,IHEP) JMOHEP(1,JHEP)=IHEP 300 CONTINUE IF (IDHW(IOUT).EQ.13) IDHW(IOUT)=IDHW(IOUT+1) IDHEP(IOUT)=IDPDG(IDHW(IOUT)) IDHW(IHEP)=IDHW(IOUT) CALL HWUEDT(NDEL,IEDT) ELSEIF (ID.LT.7) THEN CALL HWVEQU(5,Q1,PHEP(1,IIN)) CALL HWVEQU(5,Q2,PHEP(1,IOUT+1)) JMOHEP(2,IIN)=IOUT+1 JDAHEP(2,IIN)=IOUT+1 JMOHEP(2,IOUT+1)=IIN JDAHEP(2,IOUT+1)=IIN JDAHEP(2,ICMF)=IOUT+1 IHEP=JDAHEP(1,IIN) JHEP=JDAHEP(1,IOUT) CALL HWVDIF(4,PHEP(1,IHEP),PHEP(1,JHEP),PHEP(1,IHEP)) CALL HWUMAS(PHEP(1,IHEP)) CALL HWVDIF(4,PHEP(1,ICMF),PHEP(1,JHEP),PHEP(1,ICMF)) CALL HWUMAS(PHEP(1,ICMF)) CALL HWUEMV(JDAHEP(2,JHEP)-JDAHEP(1,JHEP)+1, $ JDAHEP(1,JHEP),JDAHEP(2,IHEP)) JHEP=JDAHEP(1,IOUT) JDAHEP(2,IHEP)=JDAHEP(2,JHEP) IEDT(1)=IOUT IEDT(2)=JHEP IEDT(3)=JHEP+1 NDEL=3 IF (ISTHEP(JHEP+1).NE.100) NDEL=2 CALL HWUEDT(NDEL,IEDT) IHEP=JDAHEP(1,IIN) DO 400 JHEP=JDAHEP(1,IHEP),JDAHEP(2,IHEP) JMOHEP(1,JHEP)=IHEP 400 CONTINUE IDHW(IIN)=ID IDHEP(IIN)=IDPDG(ID) IDHW(IHEP)=ID ELSE CALL HWVEQU(5,Q1,PHEP(1,IIN)) CALL HWVEQU(5,Q2,PHEP(1,IOUT)) JMOHEP(2,IIN)=IOUT JDAHEP(2,IIN)=IOUT JMOHEP(2,IOUT)=IIN JDAHEP(2,IOUT)=IIN JDAHEP(2,ICMF)=IOUT IHEP=JDAHEP(1,IIN) JHEP=JDAHEP(1,IOUT+1) CALL HWVDIF(4,PHEP(1,IHEP),PHEP(1,JHEP),PHEP(1,IHEP)) CALL HWUMAS(PHEP(1,IHEP)) CALL HWVDIF(4,PHEP(1,ICMF),PHEP(1,JHEP),PHEP(1,ICMF)) CALL HWUMAS(PHEP(1,ICMF)) CALL HWUEMV(JDAHEP(2,JHEP)-JDAHEP(1,JHEP)+1, $ JDAHEP(1,JHEP),JDAHEP(1,IHEP)-1) JHEP=JDAHEP(1,IOUT+1) JDAHEP(1,IHEP)=JDAHEP(1,JHEP) IEDT(1)=IOUT+1 IEDT(2)=JHEP IEDT(3)=JHEP+1 NDEL=3 IF (ISTHEP(JHEP+1).NE.100.OR.JHEP.EQ.NHEP) NDEL=2 CALL HWUEDT(NDEL,IEDT) IHEP=JDAHEP(1,IIN) DO 500 JHEP=JDAHEP(1,IHEP),JDAHEP(2,IHEP) JMOHEP(1,JHEP)=IHEP 500 CONTINUE IDHW(IIN)=ID IDHEP(IIN)=IDPDG(ID) IDHW(IHEP)=ID ENDIF CALL HWVZRO(4,VHEP(1,IIN)) CALL HWVZRO(4,VHEP(1,JDAHEP(1,IIN))) IF (ISTHEP(JDAHEP(1,IIN)+1).EQ.100) $ CALL HWVZRO(4,VHEP(1,JDAHEP(1,IIN)+1)) CALL HWVZRO(4,VHEP(1,IOUT)) CALL HWVZRO(4,VHEP(1,JDAHEP(1,IOUT))) IF (ISTHEP(JDAHEP(1,IOUT)+1).EQ.100) $ CALL HWVZRO(4,VHEP(1,JDAHEP(1,IOUT)+1)) EMIT=0 ELSE CALL HWWARN('HWBDIS',500) ENDIF 999 RETURN END CDECK ID>, HWBDYP. *CMZ :- -26/10/99 17.46.56 by Mike Seymour *-- Author : Gennaro Corcella C----------------------------------------------------------------------- SUBROUTINE HWBDYP(IOPT) C MATRIX ELEMENT CORRECTIONS TO DRELL-YAN PROCESSES C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWBVMC,HWRGEN,HWUALF,HWUSQR,PMODK,AZ,CZ, & T,U,S,EM,TMIN,TMAX,PMOD2,GLUFAC,SMIN,SMAX,SZ,TEST, & JAC,M(3),W1,W,PMOD3,SCAPR,CPHI,SPHI,SCALE,XI1,XI2, & PDFOLD1(13),PDFOLD2(13),PDFNEW1(13),PDFNEW2(13),ETA1,ETA2,Y, & COMWGT1,COMWGT2,WW,COS3,MODP,RN,BETA1,SIN3,R3(3,3),CTH,STH,M1, & M2,M3,GAMMA1,R5(3,3),CW,SW,R4(3,3),SCALE1,X1,X2,X3,MM, & PHAD1(5),PHAD2(5),P1(5),P2(5),P3(5),P4(5),PF(5),PV(5),PK(5), & PR(5),PNE(5),PE(5),PP1(5),PP2(5),PZ(5),PS(5),PD(5),P2N(5), & PBOS(5),PLAB(5),PTOT(5),P3N(5),SVNTN LOGICAL GLUIN,GP INTEGER EMIT,NOEMIT,IHEP,JHEP,KHEP,ICMF,IOPT,CHEP, & ID2,ID1,K,ID4,ID5,IDBOS,IHAD1,IHAD2,NTMP EXTERNAL HWBVMC,HWRGEN,HWUALF,HWUSQR SAVE PS,PF,ICMF,ID4,ID5 SAVE EMIT,NTMP DATA EMIT,NTMP/2*0/ IF (IOPT.EQ.1) THEN EMIT=0 NTMP=0 C-----CHOOSE WEIGHTS COMWGT1=0.1 COMWGT2=0.55 C---FIND AN UNTREATED CMF ICMF=0 DO 10 IHEP=1,NHEP 10 IF (ICMF.EQ.0 .AND. ISTHEP(IHEP).EQ.110.AND. & JDAHEP(2,IHEP).EQ.JDAHEP(1,IHEP)+1) ICMF=IHEP IF (ICMF.EQ.0) RETURN EM=PHEP(5,ICMF) C-----SET THE VECTOR BOSON RAPIDITY Y=HALF*LOG((PHEP(4,ICMF)+PHEP(3,ICMF))/ & (PHEP(4,ICMF)-PHEP(3,ICMF))) C------SET PARTICLE IDENTIES c------ID1=QUARK, ID2=ANTIQUARK, IDBOS=VECTOR BOSON, ID4-5 BOSON DECAY IDBOS=IDHW(ICMF) ID1=IDHW(JMOHEP(1,ICMF)) ID2=IDHW(JMOHEP(2,ICMF)) ID4=IDHW(JDAHEP(1,ICMF)) ID5=IDHW(JDAHEP(2,ICMF)) M1=RMASS(ID1) M2=RMASS(ID2) M3=RMASS(13) C---STORE OLD MOMENTA C------VECTOR BOSON MOMENTUM CALL HWVEQU(5,PHEP(1,ICMF),PBOS) C----QUARK MOMENTUM CALL HWVEQU(5,PHEP(1,JMOHEP(1,ICMF)),P1) C------ANTIQUARK MOMENTUM CALL HWVEQU(5,PHEP(1,JMOHEP(2,ICMF)),P2) C-------VECTOR DECAY (LEPTON) PRODUCT MOMENTA CALL HWVEQU(5,PHEP(1,JDAHEP(1,ICMF)),P3) CALL HWVEQU(5,PHEP(1,JDAHEP(2,ICMF)),P4) C------LEPTON MOMENTA IN THE BOSON REST FRAME CALL HWULOF(PHEP(1,ICMF),P2,P2N) CALL HWULOF(PHEP(1,ICMF),P3,P3N) C------AZ=AZIMUTHAL ANGLE OF P3N AZ=ATAN2(P3N(2),P3N(1)) CZ=COS(AZ) SZ=SIN(AZ) C------PHI=ANGLE BETWEEN P2N AND P3N SCAPR=P2N(1)*P3N(1)+P2N(2)*P3N(2)+P2N(3)*P3N(3) PMOD2=SQRT(P2N(1)**2+P2N(2)**2+P2N(3)**2) PMOD3=SQRT(P3N(1)**2+P3N(2)**2+P3N(3)**2) CPHI=SCAPR/(PMOD3*PMOD2) SPHI=SQRT(1-CPHI**2) C------HADRON MOMENTA IHAD1=1 IHAD2=2 IF (JDAHEP(1,IHAD1).NE.0) IHAD1=JDAHEP(1,IHAD1) IF (JDAHEP(1,IHAD2).NE.0) IHAD2=JDAHEP(1,IHAD2) CALL HWVEQU(5,PHEP(1,IHAD1),PHAD1) CALL HWVEQU(5,PHEP(1,IHAD2),PHAD2) CALL HWVSUM(4,PHAD1,PHAD2,PTOT) CALL HWUMAS(PTOT) C------ Q - QBAR ENERGY FRACTIONS (BORN PROCESS) c---minorimprovement---mhs---4/8/04---include mass effects correctly ETA1=(P1(4)+P1(3))/(PHAD1(4)+PHAD1(3)) ETA2=(P2(4)-P2(3))/(PHAD2(4)-PHAD2(3)) C------ PDFs FOR THE BORN PROCESS CALL HWSFUN(ETA1,EM,IDHW(IHAD1),NSTRU,PDFOLD1,1) CALL HWSFUN(ETA2,EM,IDHW(IHAD2),NSTRU,PDFOLD2,2) C-------CONSIDER Q(QBAR) IN THE INITIAL STATE RN=HWRGEN(9) IF (RN.LT.COMWGT1) THEN C-------NO GLUON IN THE INITIAL STATE GLUIN=.FALSE. C---CHOOSE S ACCORDING TO 1/S**2 SVNTN=17 SMIN=HALF*EM**2*(7-SQRT(SVNTN)) SMAX=PTOT(5)**2 IF (SMAX.LE.SMIN) RETURN S=SMIN*SMAX/(SMIN+HWRGEN(0)*(SMAX-SMIN)) JAC=S**2*(1/SMIN-1/SMAX) C---CHOOSE T ACCORDING TO (S-EM**2)/(T*U)=1/T+1/U TMAX=-HALF*EM**2*(3-HWUSQR(1+8*EM**2/S)) TMIN=EM**2-S-TMAX IF (TMAX.LE.TMIN) RETURN T=TMAX*(TMIN/TMAX)**HWRGEN(1) IF (HWRGEN(2).GT.HALF) T=EM**2-S-T U=EM**2-S-T JAC=JAC*2*T*U/(S-EM**2)*LOG(TMIN/TMAX) SCALE=SQRT(U*T/S) SCALE1=SQRT(U*T/S+EM**2) GLUFAC=0 IF (SCALE1.GT.HWBVMC(13)) GLUFAC=HWUALF(1,SCALE1)/(2*PIFAC) C----Q-QBAR ENERGY FRACTIONS FOR Q QBAR-> VG XI1=(HALF/PHAD1(4))*EXP(Y)*SQRT(S*(S+T)/(S+U)) XI2=S/(4*XI1*PHAD1(4)*PHAD2(4)) c---minorimprovement---mhs---4/8/04---apply infrared cutoff for large x IF ((1-XI1)*SCALE.LT.HWBVMC(ID1)) RETURN IF ((1-XI2)*SCALE.LT.HWBVMC(ID2)) RETURN C-----PDFs WITH AN EMITTED GLUON CALL HWSFUN(XI1,SCALE,IDHW(IHAD1),NSTRU,PDFNEW1,1) CALL HWSFUN(XI2,SCALE,IDHW(IHAD2),NSTRU,PDFNEW2,2) C------CALCULATE WEIGHT W=JAC*((EM**2-T)**2+(EM**2-U)**2)/(S**2*T*U) W1=(GLUFAC/COMWGT1)*W*PDFNEW1(ID1)*PDFNEW2(ID2)/(PDFOLD1(ID1)* & PDFOLD2(ID2))*(CFFAC*ETA1*ETA2/(XI1*XI2)) C-------CHOOSE WHICH PARTON WILL EMIT EMIT=1 IF (HWRGEN(6).LT.(EM**2-U)**2/((EM**2-U)**2+(EM**2-T)**2)) & EMIT=2 NOEMIT=3-EMIT ELSE C--------GLUON IN THE INITIAL STATE GLUIN=.TRUE. C---CHOOSE S ACCORDING TO 1/S**2 SMIN=EM**2 SMAX=PTOT(5)**2 IF (SMAX.LE.SMIN) RETURN S=SMIN*SMAX/(SMIN+HWRGEN(0)*(SMAX-SMIN)) JAC=S**2*(1/SMIN-1/SMAX) C---CHOOSE T ACCORDING TO 1/T TMAX=-HALF*EM**2*(3-HWUSQR(1+8*EM**2/S)) TMIN=EM**2-S IF (TMAX.LE.TMIN) RETURN T=TMAX*(TMIN/TMAX)**HWRGEN(1) JAC=JAC*T*LOG(TMAX/TMIN) U=EM**2-S-T SCALE=SQRT(U*T/S) SCALE1=SQRT(U*T/S+EM**2) GLUFAC=0 IF (SCALE1.GT.HWBVMC(13)) GLUFAC=HWUALF(1,SCALE1)/(2*PIFAC) C--------INITIAL STATE GLUON COMING FROM HADRON 1 IF (RN.LE.COMWGT2) THEN GP=.TRUE. C--------ENERGY FRACTIONS and PDFs c---bug fix---mhs---4/8/04---swap u and t in mtm frac definitions XI1=(HALF/PHAD1(4))*EXP(Y)*SQRT(S*(S+T)/(S+U)) XI2=S/(4*XI1*PHAD1(4)*PHAD2(4)) c---minorimprovement---mhs---4/8/04---apply infrared cutoff for large x IF ((1-XI1)*SCALE.LT.HWBVMC(13)) RETURN IF ((1-XI2)*SCALE.LT.HWBVMC(ID2)) RETURN CALL HWSFUN(XI1,SCALE,IDHW(IHAD1),NSTRU,PDFNEW1,1) CALL HWSFUN(XI2,SCALE,IDHW(IHAD2),NSTRU,PDFNEW2,2) WW=PDFNEW1(13)*PDFNEW2(ID2)/((COMWGT2-COMWGT1)* & PDFOLD1(ID1)*PDFOLD2(ID2)) ELSE C-------INITIAL STATE GLUON COMING FROM HADRON 2 GP=.FALSE. C-------ENERGY FRACTIONS AND PDFs c---bug fix---mhs---4/8/04---swap u and t in mtm frac definitions XI1=(HALF/PHAD1(4))*EXP(Y)*SQRT(S*(S+U)/(S+T)) XI2=S/(4*XI1*PHAD1(4)*PHAD2(4)) c---minorimprovement---mhs---4/8/04---apply infrared cutoff for large x IF ((1-XI1)*SCALE.LT.HWBVMC(ID1)) RETURN IF ((1-XI2)*SCALE.LT.HWBVMC(13)) RETURN CALL HWSFUN(XI1,SCALE,IDHW(IHAD1),NSTRU,PDFNEW1,1) CALL HWSFUN(XI2,SCALE,IDHW(IHAD2),NSTRU,PDFNEW2,2) WW=PDFNEW1(ID1)*PDFNEW2(13)/((1-COMWGT2)* & PDFOLD1(ID1)*PDFOLD2(ID2)) ENDIF W=-HALF*JAC*((EM**2-T)**2+(EM**2-S)**2)/(S**3*T) C-------CHOOSE WHICH PARTON WILL EMIT c---bug fix---mhs---4/8/04---swap emitter and nonemitter EMIT=2 IF (HWRGEN(10).LT.(EM**2-S)**2/((EM**2-S)**2+(EM**2-T)**2)) & EMIT=1 NOEMIT=3-EMIT C-------FINAL WEIGHT FOR ALL THE CONSIDERED OPTIONS W1=GLUFAC*W*WW*ETA1*ETA2/(XI1*XI2) ENDIF C--------ADD ONE MORE GLUON IF (W1.GT.HWRGEN(4)) THEN NTMP=NEVHEP+NWGTS ELSE RETURN ENDIF C---------INCLUDE MASSES S=S+M1**2+M2**2+M3**2 IF (.NOT.GLUIN) THEN TEST=((S+M1**2-M2**2)*(S+M3**2-EM**2)-2*S*(M1**2+M3**2-T))**2 $ -((S-M1**2-M2**2)**2-4*M1**2*M2**2)* $ ((S-M3**2-EM**2)**2-4*M3**2*EM**2) ELSEIF (GP) THEN TEST=((S+M3**2-M2**2)*(S+M1**2-EM**2)-2*S*(M3**2+M1**2-T))**2 $ -((S-M3**2-M2**2)**2-4*M3**2*M2**2)* $ ((S-M1**2-EM**2)**2-4*M1**2*EM**2) ELSE TEST=((S+M3**2-M1**2)*(S+M2**2-EM**2)-2*S*(M3**2+M2**2-T))**2 $ -((S-M3**2-M1**2)**2-4*M3**2*M1**2)* $ ((S-M2**2-EM**2)**2-4*M2**2*EM**2) ENDIF IF (TEST.GE.0) THEN EMIT=0 RETURN ENDIF M(1)=M1 M(2)=M2 M(3)=M3 C----MOMENTA IN THE V-REST FRAME WITH NON EMITTER ALONG THE Z AXIS C----V=BOSON,K=GLUON,E=EMITTER,NE=NON-EMITTER PV(1)=0 PV(2)=0 PV(3)=0 PV(4)=EM PV(5)=EM PNE(2)=0 PNE(1)=0 IF (.NOT.GLUIN) THEN PK(4)=(S-M(3)**2-EM**2)/(2*EM) PMODK=SQRT(PK(4)**2-M(3)**2) IF (EMIT.EQ.1) THEN MM=M(1) X1=T X2=U X3=-1 ELSE MM=M(2) X1=U X2=T X3=+1 ENDIF PNE(4)=(EM**2+MM**2-X1)/(2*EM) PNE(3)=X3*SQRT(PNE(4)**2-MM**2) COS3=HALF*(X2-MM**2-M(3)**2+2*PNE(4)*PK(4))/(PNE(3)*PMODK) ELSE PK(4)=(EM**2+M(3)**2-U)/(2*EM) PMODK=SQRT(PK(4)**2-M(3)**2) IF (EMIT.EQ.1) THEN IF (GP) THEN MM=M(1) X3=+1 ELSE MM=M(2) X3=-1 ENDIF PNE(4)=(S-MM**2-EM**2)/(2*EM) PNE(3)=X3*SQRT(PNE(4)**2-MM**2) COS3=HALF*(T-MM**2-M(3)**2+2*PNE(4)*PK(4))/(PNE(3)*PMODK) ELSE IF (GP) THEN MM=M(2) X3=-1 ELSE MM=M(1) X3=+1 ENDIF PNE(4)=(EM**2+MM**2-T)/(2*EM) PNE(3)=X3*SQRT(PNE(4)**2-MM**2) COS3=HALF*(MM**2+M(3)**2-S+2*PNE(4)*PK(4))/(PNE(3)*PMODK) ENDIF ENDIF CALL HWUMAS(PNE) SIN3=SQRT(1-COS3**2) C---------DEFINE A RANDOM ROTATION AROUND THE Z-AXIS CALL HWRAZM(PMODK*SIN3,PK(1),PK(2)) PK(3)=PMODK*COS3 CALL HWUMAS(PK) DO K=1,4 IF (.NOT.GLUIN) THEN PE(K)=PV(K)+PK(K)-PNE(K) ELSE IF (EMIT.EQ.1) THEN PE(K)=PV(K)+PNE(K)-PK(K) ELSE PE(K)=PNE(K)+PK(K)-PV(K) ENDIF ENDIF ENDDO CALL HWUMAS(PE) c------LEPTON MOMENTA IN THE BOSON REST FRAME, WITH THE DIRECTION C------TAKEN FROM THE BORN PROCESS PS(5)=P3(5) PS(4)=(EM**2+P3(5)**2-P4(5)**2)/(2*EM) PS(3)=-SQRT(PS(4)**2-P3(5)**2)*CPHI PS(2)=SQRT(PS(4)**2-P3(5)**2)*SPHI*SZ PS(1)=SQRT(PS(4)**2-P3(5)**2)*SPHI*CZ PF(5)=P4(5) PF(4)=(EM**2+P4(5)**2-P3(5)**2)/(2*EM) PF(3)=-PS(3) PF(2)=-PS(2) PF(1)=-PS(1) C----FIND A STATIONARY VECTOR PLAB IN THE LAB FRAME IF (.NOT.GLUIN) THEN IF (EMIT.EQ.1) THEN CALL HWVEQU(5,PE,PP1) CALL HWVEQU(5,PNE,PP2) ELSE CALL HWVEQU(5,PNE,PP1) CALL HWVEQU(5,PE,PP2) ENDIF ELSE IF (GP) THEN CALL HWVEQU(5,PK,PP1) IF (EMIT.EQ.1) THEN CALL HWVEQU(5,PE,PP2) ELSE CALL HWVEQU(5,PNE,PP2) ENDIF ELSE CALL HWVEQU(5,PK,PP2) IF (EMIT.EQ.1) THEN CALL HWVEQU(5,PE,PP1) ELSE CALL HWVEQU(5,PNE,PP1) ENDIF ENDIF ENDIF CALL HWVSCA(4,1/XI1,PP1,PP1) CALL HWVSCA(4,1/XI2,PP2,PP2) CALL HWVSUM(4,PP1,PP2,PLAB) CALL HWUMAS(PLAB) C------BOOST TO PLAB REST FRAME CALL HWULOF(PLAB,PE,PE) CALL HWULOF(PLAB,PNE,PNE) CALL HWULOF(PLAB,PK,PK) CALL HWULOF(PLAB,PS,PS) CALL HWULOF(PLAB,PF,PF) CALL HWULOF(PLAB,PV,PV) C----PUT THE INITIAL PARTON BELONGING TO HADRON 1 ON THE Z-AXIS IF (.NOT.GLUIN) THEN IF (EMIT.EQ.1) THEN CALL HWVEQU(5,PE,PZ) ELSE CALL HWVEQU(5,PNE,PZ) ENDIF ELSE IF (GP) THEN CALL HWVEQU(5,PK,PZ) ELSE IF (EMIT.EQ.1) THEN CALL HWVEQU(5,PE,PZ) ELSE CALL HWVEQU(5,PNE,PZ) ENDIF ENDIF ENDIF MODP=SQRT(PZ(1)**2+PZ(2)**2) CTH=PZ(1)/MODP STH=PZ(2)/MODP CALL HWUROT(PZ,CTH,STH,R3) C-----ROTATE EVERYTHING BY R3 CALL HWUROF(R3,PE,PE) CALL HWUROF(R3,PNE,PNE) CALL HWUROF(R3,PV,PV) CALL HWUROF(R3,PK,PK) CALL HWUROF(R3,PS,PS) CALL HWUROF(R3,PF,PF) C--REORDER ENTRIES:--IHEP=EMITTER,JHEP=NON-EMITTER,KHEP=EMITTED IF (.NOT.GLUIN) THEN IHEP=JMOHEP(EMIT,ICMF) JHEP=JMOHEP(NOEMIT,ICMF) ENDIF CHEP=ICMF IDHW(CHEP)=15 IDHEP(CHEP)=IDPDG(15) ICMF=ICMF+1 IDHW(ICMF)=IDBOS IDHEP(ICMF)=IDPDG(IDBOS) C-----NO GLUON IN THE INITIAL STATE: JUST ADD IT AFTER THE VECTOR BOSON IF (.NOT.GLUIN) THEN KHEP=ICMF+1 ISTHEP(KHEP)=114 C---STATUS OF EMITTER/NON EMITTER ISTHEP(IHEP)=110+EMIT ISTHEP(JHEP)=110+NOEMIT ELSE C-----GLUON COMING FROM THE 1ST HADRON IF (GP) THEN KHEP=CHEP-2 ISTHEP(KHEP)=111 C----EMIT=1 IF (EMIT.EQ.1) THEN IHEP=KHEP+1 ISTHEP(IHEP)=112 JHEP=ICMF+1 ISTHEP(JHEP)=114 IDHW(IHEP)=ID2 IF (ID1.LE.6) THEN IDHW(JHEP)=ID1+6 ELSE IDHW(JHEP)=ID1-6 ENDIF ELSE C-------EMIT=2 JHEP=KHEP+1 ISTHEP(JHEP)=112 IDHW(JHEP)=ID2 IHEP=ICMF+1 ISTHEP(IHEP)=114 IF (ID1.LE.6) THEN IDHW(IHEP)=ID1+6 ELSE IDHW(IHEP)=ID1-6 ENDIF ENDIF ENDIF C------GLUON COMING FROM THE HADRON 2 IF (.NOT.GP) THEN KHEP=CHEP-1 ISTHEP(KHEP)=112 C-------EMIT=1 IF (EMIT.EQ.1) THEN IHEP=KHEP-1 ISTHEP(IHEP)=111 IDHW(IHEP)=ID1 JHEP=ICMF+1 ISTHEP(JHEP)=114 IF (ID2.LE.6) THEN IDHW(JHEP)=ID2+6 ELSE IDHW(JHEP)=ID2-6 ENDIF ELSE C-------EMIT=2 JHEP=KHEP-1 ISTHEP(JHEP)=111 IDHW(JHEP)=ID1 IHEP=ICMF+1 ISTHEP(IHEP)=114 IF (ID2.LE.6) THEN IDHW(IHEP)=ID2+6 ELSE IDHW(IHEP)=ID2-6 ENDIF ENDIF ENDIF ENDIF IDHEP(IHEP)=IDPDG(IDHW(IHEP)) IDHEP(JHEP)=IDPDG(IDHW(JHEP)) ISTHEP(ICMF)=113 ISTHEP(CHEP)=110 IDHW(KHEP)=13 IDHEP(KHEP)=IDPDG(13) C---------DEFINE MOMENTA IN THE LAB FRAME CALL HWVEQU(5,PV,PHEP(1,ICMF)) CALL HWVEQU(5,PK,PHEP(1,KHEP)) CALL HWVEQU(5,PNE,PHEP(1,JHEP)) CALL HWVEQU(5,PE,PHEP(1,IHEP)) IF (.NOT.GLUIN) THEN CALL HWVSUM(4,PHEP(1,IHEP),PHEP(1,JHEP),PHEP(1,CHEP)) ELSE IF (EMIT.EQ.1) THEN CALL HWVSUM(4,PHEP(1,IHEP),PHEP(1,KHEP),PHEP(1,CHEP)) ELSE CALL HWVSUM(4,PHEP(1,KHEP),PHEP(1,JHEP),PHEP(1,CHEP)) ENDIF ENDIF CALL HWUMAS(PHEP(1,CHEP)) IF (.NOT.GLUIN) THEN JMOHEP(1,JHEP)=CHEP JMOHEP(1,IHEP)=CHEP JDAHEP(1,JHEP)=CHEP JDAHEP(1,IHEP)=CHEP JMOHEP(1,KHEP)=CHEP JDAHEP(1,KHEP)=0 JMOHEP(1,ICMF)=CHEP JMOHEP(2,ICMF)=ICMF JDAHEP(1,ICMF)=0 JDAHEP(2,ICMF)=ICMF ENDIF IF (GLUIN) THEN JMOHEP(2,ICMF)=ICMF JDAHEP(2,ICMF)=ICMF JMOHEP(1,KHEP)=CHEP JDAHEP(1,KHEP)=CHEP JMOHEP(1,IHEP)=CHEP JMOHEP(1,JHEP)=CHEP IF (EMIT.EQ.1) THEN JDAHEP(1,IHEP)=CHEP JDAHEP(1,JHEP)=0 ELSE JDAHEP(1,JHEP)=CHEP JDAHEP(1,IHEP)=0 ENDIF ENDIF C---COLOUR CONNECTIONS IF (.NOT.GLUIN) THEN IF (IDHW(IHEP).LT.IDHW(JHEP)) THEN JMOHEP(2,KHEP)=IHEP JDAHEP(2,KHEP)=JHEP JMOHEP(2,IHEP)=JHEP JDAHEP(2,IHEP)=KHEP JDAHEP(2,JHEP)=IHEP JMOHEP(2,JHEP)=KHEP ELSE JMOHEP(2,KHEP)=JHEP JDAHEP(2,KHEP)=IHEP JMOHEP(2,JHEP)=IHEP JDAHEP(2,JHEP)=KHEP JDAHEP(2,IHEP)=JHEP JMOHEP(2,IHEP)=KHEP ENDIF ENDIF IF (GLUIN) THEN IF (EMIT.EQ.1) THEN IF (IDHEP(IHEP).GT.0) THEN JMOHEP(2,IHEP)=JHEP JDAHEP(2,IHEP)=KHEP JMOHEP(2,JHEP)=KHEP JDAHEP(2,JHEP)=IHEP JMOHEP(2,KHEP)=IHEP JDAHEP(2,KHEP)=JHEP ELSE JMOHEP(2,IHEP)=KHEP JDAHEP(2,IHEP)=JHEP JMOHEP(2,JHEP)=IHEP JDAHEP(2,JHEP)=KHEP JMOHEP(2,KHEP)=JHEP JDAHEP(2,KHEP)=IHEP ENDIF ELSE IF (IDHEP(JHEP).GT.0) THEN JMOHEP(2,JHEP)=IHEP JDAHEP(2,JHEP)=KHEP JMOHEP(2,IHEP)=KHEP JDAHEP(2,IHEP)=JHEP JMOHEP(2,KHEP)=JHEP JDAHEP(2,KHEP)=IHEP ELSE JMOHEP(2,JHEP)=KHEP JDAHEP(2,JHEP)=IHEP JMOHEP(2,IHEP)=JHEP JDAHEP(2,IHEP)=KHEP JMOHEP(2,KHEP)=IHEP JDAHEP(2,KHEP)=JHEP ENDIF ENDIF ENDIF EMSCA=SQRT(EM**2+PHEP(1,ICMF)**2+PHEP(2,ICMF)**2) C--------SET STATUS AND LEPTON MOMENTA AFTER THE PARTON SHOWER ELSEIF (IOPT.EQ.2) THEN IF (EMIT.EQ.0.OR.NEVHEP+NWGTS.NE.NTMP) RETURN ISTHEP(JDAHEP(1,ICMF))=195 IDHW(NHEP+1)=ID4 IDHW(NHEP+2)=ID5 IDHEP(NHEP+1)=IDPDG(ID4) IDHEP(NHEP+2)=IDPDG(ID5) ISTHEP(NHEP+1)=113 ISTHEP(NHEP+2)=114 CW=PHEP(3,ICMF)/SQRT(PHEP(1,ICMF)**2+PHEP(2,ICMF)**2+ & PHEP(3,ICMF)**2) SW=SQRT(1-CW**2) CALL HWUROT(PHEP(1,ICMF),CW,SW,R4) CALL HWUROF(R4,PHEP(1,ICMF),PR) PR(4)=PHEP(4,ICMF) CALL HWUMAS(PR) CALL HWUROF(R4,PS,PS) CALL HWUROF(R4,PF,PF) CALL HWUMAS(PS) CALL HWUMAS(PF) CALL HWUROT(PHEP(1,JDAHEP(1,ICMF)),CW,SW,R5) CALL HWUROF(R5,PHEP(1,JDAHEP(1,ICMF)),PD) PD(4)=PHEP(4,JDAHEP(1,ICMF)) CALL HWUMAS(PD) BETA1=(PR(4)*PR(3)-SQRT(PR(4)**2*PD(3)**2-PR(3)**2*PD(3)**2+ & PD(3)**4))/(PD(3)**2+PR(4)**2) GAMMA1=1/SQRT(1-BETA1**2) PHEP(4,NHEP+1)=GAMMA1*PS(4)-BETA1*GAMMA1*PS(3) PHEP(3,NHEP+1)=-BETA1*GAMMA1*PS(4)+GAMMA1*PS(3) PHEP(4,NHEP+2)=GAMMA1*PF(4)-BETA1*GAMMA1*PF(3) PHEP(3,NHEP+2)=-BETA1*GAMMA1*PF(4)+GAMMA1*PF(3) PHEP(1,NHEP+1)=PS(1) PHEP(2,NHEP+1)=PS(2) PHEP(1,NHEP+2)=PF(1) PHEP(2,NHEP+2)=PF(2) CALL HWUMAS(PHEP(1,NHEP+1)) CALL HWUMAS(PHEP(1,NHEP+2)) CALL HWUROB(R5,PHEP(1,NHEP+1),PHEP(1,NHEP+1)) CALL HWUROB(R5,PHEP(1,NHEP+2),PHEP(1,NHEP+2)) JDAHEP(1,JDAHEP(1,ICMF))=NHEP+1 JDAHEP(2,JDAHEP(1,ICMF))=NHEP+2 JMOHEP(1,NHEP+1)=JDAHEP(1,ICMF) JMOHEP(1,NHEP+2)=JDAHEP(1,ICMF) JMOHEP(2,NHEP+1)=NHEP+2 JDAHEP(2,NHEP+1)=NHEP+2 JMOHEP(2,NHEP+2)=NHEP+1 JDAHEP(2,NHEP+2)=NHEP+1 C--special for spin correlations(relabel in spin common block) IF(SYSPIN.AND.NSPN.NE.0) THEN IDSPN(2) = NHEP+1 IDSPN(3) = NHEP+2 ISNHEP(NHEP+1) = 2 ISNHEP(NHEP+2) = 3 ENDIF NHEP=NHEP+2 EMIT=0 ENDIF END CDECK ID>, HWBFIN. *CMZ :- -26/04/91 10.18.56 by Bryan Webber *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWBFIN(IHEP) C----------------------------------------------------------------------- C DELETES INTERNAL LINES FROM SHOWER, MAKES COLOUR CONNECTION INDEX C AND COPIES INTO /HEPEVT/ IN COLOUR ORDER. C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IHEP,ID,IJET,KHEP,IPAR,JPAR,NXPAR,IP,JP IF (IERROR.NE.0) RETURN C---SAVE VIRTUAL PARTON DATA NHEP=NHEP+1 IF(NHEP.GT.NMXHEP) THEN CALL HWWARN('HWBFIN',100) GOTO 999 ENDIF ID=IDPAR(2) IDHW(NHEP)=ID IDHEP(NHEP)=IDPDG(ID) ISTHEP(NHEP)=ISTHEP(IHEP)+20 JMOHEP(1,NHEP)=IHEP JMOHEP(2,NHEP)=JMOHEP(1,IHEP) JDAHEP(1,IHEP)=NHEP JDAHEP(1,NHEP)=0 JDAHEP(2,NHEP)=0 CALL HWVEQU(5,PPAR(1,2),PHEP(1,NHEP)) CALL HWVEQU(4,VPAR(1,2),VHEP(1,NHEP)) C---FINISHED FOR SPECTATOR OR NON-PARTON JETS IF (ISTHEP(NHEP).GT.136) RETURN IF (ID.GT.13.AND.ID.LT.209 .AND. ID.NE.59) RETURN IF (ID.GT.220.AND.ABS(IDPDG(ID)).LT.1000000) RETURN IF (ID.GT.424.AND.ID.NE.449) RETURN IF (.NOT.TMPAR(2).AND.ID.EQ.59) RETURN IDHEP(NHEP)=94 IJET=NHEP IF (NPAR.GT.2) THEN C---SAVE CONE DATA NHEP=NHEP+1 IF(NHEP.GT.NMXHEP) THEN CALL HWWARN('HWBFIN',101) GOTO 999 ENDIF IDHW(NHEP)=IDPAR(1) IDHEP(NHEP)=0 ISTHEP(NHEP)=100 JMOHEP(1,NHEP)=IHEP JMOHEP(2,NHEP)=JCOPAR(1,1) JDAHEP(1,NHEP)=0 JDAHEP(2,NHEP)=0 CALL HWVEQU(5,PPAR,PHEP(1,NHEP)) CALL HWVEQU(4,VPAR(1,2),VHEP(1,NHEP)) ENDIF KHEP=NHEP C---START WITH ANTICOLOUR DAUGHTER OF HARDEST PARTON IPAR=2 JPAR=JCOPAR(4,IPAR) NXPAR=NPAR/2 DO 20 IP=1,NXPAR DO 10 JP=1,NXPAR IF (JPAR.EQ.0) GOTO 15 IF (JCOPAR(2,JPAR).EQ.IPAR) THEN IPAR=JPAR JPAR=JCOPAR(4,IPAR) ELSE IPAR=JPAR JPAR=JCOPAR(1,IPAR) ENDIF 10 CONTINUE C---COULDN'T FIND COLOUR PARTNER CALL HWWARN('HWBFIN',1) 15 JPAR=JCOPAR(1,IPAR) KHEP=KHEP+1 IF(KHEP.GT.NMXHEP) THEN CALL HWWARN('HWBFIN',102) GOTO 999 ENDIF ID=IDPAR(IPAR) IF (TMPAR(IPAR)) THEN IF (ID.LT.14) THEN ISTHEP(KHEP)=139 ELSEIF (ID.EQ.59) THEN ISTHEP(KHEP)=139 ELSEIF (ID.LT.109) THEN ISTHEP(KHEP)=130 ELSEIF (ID.LT.120) THEN ISTHEP(KHEP)=139 ELSEIF (ABS(IDPDG(ID)).LT.1000000) THEN ISTHEP(KHEP)=130 ELSEIF (ID.LT.425) THEN ISTHEP(KHEP)=139 ELSEIF (ID.EQ.449) THEN ISTHEP(KHEP)=139 ELSE ISTHEP(KHEP)=130 ENDIF ELSE ISTHEP(KHEP)=ISTHEP(IHEP)+24 ENDIF IDHW(KHEP)=ID IDHEP(KHEP)=IDPDG(ID) CALL HWVEQU(5,PPAR(1,IPAR),PHEP(1,KHEP)) CALL HWVEQU(4,VPAR(1,IPAR),VHEP(1,KHEP)) JMOHEP(1,KHEP)=IJET JMOHEP(2,KHEP)=KHEP+1 JDAHEP(1,KHEP)=0 JDAHEP(2,KHEP)=KHEP-1 20 CONTINUE JMOHEP(2,KHEP)=0 JDAHEP(2,NHEP+1)=0 JDAHEP(1,IJET)=NHEP+1 JDAHEP(2,IJET)=KHEP NHEP=KHEP 999 RETURN END CDECK ID>, HWBGEN. *CMZ :- -14/10/99 18.04.56 by Mike Seymour *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWBGEN C----------------------------------------------------------------------- C BRANCHING GENERATOR WITH INTERFERING GLUONS C HWBGEN EVOLVES QCD JETS ACCORDING TO THE METHOD OF C G.MARCHESINI & B.R.WEBBER, NUCL. PHYS. B238(1984)1 C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWULDO,HWRGAU,EINHEP,ERTXI,RTXI,XF INTEGER NTRY,LASHEP,IHEP,NRHEP,ID,IST,JHEP,KPAR,I,J,IRHEP(NMXJET), & IRST(NMXJET),JPR LOGICAL HWRLOG EXTERNAL HWULDO,HWRGAU IF (IERROR.NE.0) RETURN IF (IPRO.EQ.80) RETURN C---CHECK THAT EMSCA IS SET IF (EMSCA.LE.ZERO) CALL HWWARN('HWBGEN',200) IF (HARDME) THEN C---FORCE A BRANCH INTO THE `DEAD ZONE' IN E+E- JPR=IPROC/10 C**********13/11/00 BRW FIX TO ALLOW ALSO WW AND ZZ IF (JPR.EQ.10.OR.JPR.EQ.20.OR.JPR.EQ.25) CALL HWBDED(1) C**********END FIX C---FORCE A BRANCH INTO THE `DEAD ZONE' IN DIS IF (IPRO.EQ.90) CALL HWBDIS(1) C---FORCE A BRANCH INTO THE `DEAD ZONE' IN DRELL-YAN PROCESSES IF (IPRO.EQ.13.OR.IPRO.EQ.14) CALL HWBDYP(1) C---FORCE A BRANCH INTO THE `DEAD ZONE' IN TOP DECAYS CALL HWBTOP ENDIF C---GENERATE INTRINSIC PT ONCE AND FOR ALL DO 5 JNHAD=1,2 IF (PTRMS.NE.0.) THEN PTINT(1,JNHAD)=HWRGAU(1,ZERO,PXRMS) PTINT(2,JNHAD)=HWRGAU(2,ZERO,PXRMS) PTINT(3,JNHAD)=PTINT(1,JNHAD)**2+PTINT(2,JNHAD)**2 ELSE CALL HWVZRO(3,PTINT(1,JNHAD)) ENDIF 5 CONTINUE NTRY=0 LASHEP=NHEP 10 NTRY=NTRY+1 IF (NTRY.GT.NETRY) THEN CALL HWWARN('HWBGEN',ISLENT*100) GOTO 999 ENDIF NRHEP=0 NHEP=LASHEP FROST=.FALSE. DO 100 IHEP=1,LASHEP IST=ISTHEP(IHEP) IF (IST.GE.111.AND.IST.LE.115) THEN NRHEP=NRHEP+1 IRHEP(NRHEP)=IHEP IRST(NRHEP)=IST ID=IDHW(IHEP) IF (IST.NE.115) THEN C---FOUND A PARTON TO EVOLVE NEVPAR=IHEP NPAR=2 IDPAR(1)=17 IDPAR(2)=ID TMPAR(1)=.TRUE. PPAR(2,1)=0. PPAR(4,1)=1. DO 15 J=1,2 DO 15 I=1,2 JMOPAR(I,J)=0 15 JCOPAR(I,J)=0 C---SET UP EVOLUTION SCALE AND FRAME JHEP=JMOHEP(2,IHEP) IF (ID.EQ.13) THEN IF (HWRLOG(HALF)) JHEP=JDAHEP(2,IHEP) ELSEIF (IST.GT.112) THEN IF ((ID.GT.6.AND.ID.LT.13).OR. & (ID.GT.214.AND.ID.LT.221)) JHEP=JDAHEP(2,IHEP) ELSE IF (ID.LT.7.OR.(ID.GT.208.AND.ID.LT.215)) JHEP=JDAHEP(2,IHEP) ENDIF IF (JHEP.LE.0.OR.JHEP.GT.NHEP) THEN CALL HWWARN('HWBGEN',1) JHEP=IHEP ENDIF JCOPAR(1,1)=JHEP EINHEP=PHEP(4,IHEP) ERTXI=HWULDO(PHEP(1,IHEP),PHEP(1,JHEP)) IF (ERTXI.LT.ZERO) ERTXI=0. IF (IST.LE.112.AND.IHEP.EQ.JHEP) ERTXI=0. IF (ISTHEP(JHEP).EQ.155) THEN ERTXI=ERTXI/PHEP(5,JHEP) RTXI=1. ELSE ERTXI=SQRT(ERTXI) RTXI=ERTXI/EINHEP ENDIF IF (RTXI.EQ.ZERO) THEN XF=1. PPAR(1,1)=0. PPAR(3,1)=1. PPAR(1,2)=EINHEP PPAR(2,2)=0. PPAR(4,2)=EINHEP ELSE XF=1./RTXI PPAR(1,1)=1. PPAR(3,1)=0. PPAR(1,2)=ERTXI PPAR(2,2)=1. PPAR(4,2)=ERTXI ENDIF IF (PPAR(4,2).LT.PHEP(5,IHEP)) PPAR(4,2)=PHEP(5,IHEP) C---STORE MASS PPAR(5,2)=PHEP(5,IHEP) CALL HWVZRO(4,VPAR(1,1)) CALL HWVZRO(4,VPAR(1,2)) IF (IST.GT.112) THEN TMPAR(2)=.TRUE. INHAD=0 JNHAD=0 XFACT=0. ELSE TMPAR(2)=.FALSE. JNHAD=IST-110 INHAD=JNHAD IF (JDAHEP(1,JNHAD).NE.0) INHAD=JDAHEP(1,JNHAD) XFACT=XF/PHEP(4,INHAD) ANOMSC(1,JNHAD)=ZERO ANOMSC(2,JNHAD)=ZERO ENDIF C---FOR QUARKS IN A COLOUR SINGLET, ALLOW SOFT MATRIX-ELEMENT CORRECTION HARDST=PPAR(4,2) IF (SOFTME.AND.IDHW(IHEP).LT.13.AND. $ ((JMOHEP(2,JHEP).EQ.IHEP.AND.JDAHEP(2,JHEP).EQ.IHEP).OR. $ ISTHEP(JHEP).EQ.155)) HARDST=0 C---CREATE BRANCHES AND COMPUTE ENERGIES DO 20 KPAR=2,NMXPAR IF (TMPAR(KPAR)) THEN CALL HWBRAN(KPAR) ELSE CALL HWSBRN(KPAR) ENDIF IF (IERROR.NE.0) RETURN IF (FROST) GOTO 100 IF (KPAR.EQ.NPAR) GOTO 30 20 CONTINUE C---COMPUTE MASSES AND 3-MOMENTA 30 CONTINUE CALL HWBMAS IF (AZSPIN) CALL HWBSPN IF (TMPAR(2)) THEN CALL HWBTIM(2,1) ELSE CALL HWBSPA ENDIF C---ENTER PARTON JET IN /HEPEVT/ CALL HWBFIN(IHEP) ELSE C---COPY SPECTATOR NHEP=NHEP+1 IF (ID.GT.120.AND.ID.LT.133 .OR. ID.GE.198.AND.ID.LE.201) THEN ISTHEP(NHEP)=190 ELSE ISTHEP(NHEP)=152 ENDIF IDHW(NHEP)=ID IDHEP(NHEP)=IDPDG(ID) JMOHEP(1,NHEP)=IHEP JMOHEP(2,NHEP)=0 JDAHEP(2,NHEP)=0 JDAHEP(1,IHEP)=NHEP CALL HWVEQU(5,PHEP(1,IHEP),PHEP(1,NHEP)) ENDIF ISTHEP(IHEP)=ISTHEP(IHEP)+10 ENDIF 100 CONTINUE IF (.NOT.FROST) THEN C---COMBINE JETS ISTAT=20 CALL HWBJCO ENDIF IF (.NOT.FROST) THEN C---ATTACH SPECTATORS ISTAT=30 CALL HWSSPC ENDIF IF (FROST) THEN C---BAD JET: RESTORE PARTONS AND RE-EVOLVE DO 120 I=1,NRHEP 120 ISTHEP(IRHEP(I))=IRST(I) GOTO 10 ENDIF C---CONNECT COLOURS CALL HWBCON ISTAT=40 LASHEP=NHEP IF (HARDME) THEN C---CLEAN UP IF THERE WAS A BRANCH IN THE `DEAD ZONE' IN E+E- IF (IPROC/10.EQ.10) CALL HWBDED(2) C---CLEAN UP IF THERE WAS A BRANCH IN THE `DEAD ZONE' IN DIS IF (IPRO.EQ.90) CALL HWBDIS(2) C---CLEAN UP IF THERE WAS A BRANCH IN THE `DEAD ZONE' IN DRELL-YAN PROC IF (IPRO.EQ.13.OR.IPRO.EQ.14) CALL HWBDYP(2) ENDIF C---IF THE CLEAN-UP OPERATION ADDED ANY PARTONS TO THE EVENT RECORD C IT MIGHT NEED RESHOWERING IF (NHEP.GT.LASHEP) THEN LASHEP=NHEP GOTO 10 ENDIF 999 RETURN END CDECK ID>, HWBGUP. *CMZ :- -16/07/02 09.40.25 by Peter Richardson *-- Author : Peter Richardson C---------------------------------------------------------------------- SUBROUTINE HWBGUP(ISTART,ICMF) C---------------------------------------------------------------------- C Makes the colour connections and performs the parton shower C for events read in from the GUPI (Generic User Process Interface) C event common block C---------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER MAXNUP PARAMETER (MAXNUP=500) INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP, & IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP), & ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP), & SPINUP(MAXNUP) C--Local variables INTEGER ISTART,ICMF,J,K,I,JCOL,ICOL LOGICAL FOUND COMMON /HWGUP/ILOC(NMXHEP),JLOC(MAXNUP) INTEGER ILOC,JLOC C--now we need to do the colour connections 20 ISTART = ISTART+1 IF(ISTART.GT.NHEP) GOTO 30 IF(ISTART.EQ.ICMF) ISTART = ISTART+1 IF(JMOHEP(2,ISTART).NE.0.AND.JDAHEP(2,ISTART).NE.0) GOTO 20 K = ISTART J = ILOC(K) IF(ICOLUP(1,J).NE.0) THEN JCOL = 1 ICOL = ICOLUP(1,J) ELSE JCOL = 2 ICOL = ICOLUP(2,J) ENDIF IF(ICOL.EQ.0) THEN JMOHEP(2,K) = K JDAHEP(2,K) = K GOTO 20 ENDIF C--now search for the partner C--first search for the flavour partner if not looking for colour partner C--search for the flavour partner of the particle C--this must be set or HERWIG won't work 10 IF(JDAHEP(2,K).NE.0.AND.JMOHEP(2,K).NE.0) GOTO 20 IF(ICOL.EQ.0) THEN FOUND = .FALSE. C--look for unpaired particle DO 15 I=1,NUP IF(JLOC(I).EQ.0) GOTO 15 IF(IDUP(I).EQ.21.OR.IDUP(I).EQ.9) GOTO 15 IF(JLOC(I).EQ.ISTART) GOTO 15 IF(ICOLUP(1,I).EQ.0.AND.ICOLUP(2,I).EQ.0) GOTO 15 C--antiflavour partner IF(JDAHEP(2,JLOC(I)).EQ.0) THEN C--pair incoming particle with outgoing particle C-- or outgoing antiparticle with outgoing particle IF(ISTUP(I).GT.0.AND.IDUP(I).GT.0.AND. & ((IDUP(J).GT.0.AND.ISTUP(J).EQ.-1).OR. & (IDUP(J).LT.0.AND.ISTUP(J).GT.0 ))) THEN FOUND = .TRUE. JCOL = 1 C--pair incoming particle with incoming antiparticle C-- or outgoing antiparticle with incoming antiparticle ELSEIF(IDUP(I).LT.0.AND.ISTUP(I).EQ.-1.AND. & ((IDUP(J).GT.0.AND.ISTUP(J).EQ.-1).OR. & (IDUP(J).LT.0.AND.ISTUP(J).GT.0 ))) THEN FOUND = .TRUE. JCOL = 2 ENDIF C--make the connection IF(FOUND) THEN JMOHEP(2,K) = JLOC(I) JDAHEP(2,JLOC(I)) = K ENDIF ENDIF C--flavour partner IF(JMOHEP(2,JLOC(I)).EQ.0.AND.(.NOT.FOUND)) THEN C--pair incoming antiparticle with outgoing antiparticle C-- or outgoing particle with outgoing antiparticle IF(IDUP(I).LT.0.AND.ISTUP(I).GT.0.AND. & ((IDUP(J).LT.0.AND.ISTUP(J).EQ.-1).OR. & (IDUP(J).GT.0.AND.ISTUP(J).GT.0 ))) THEN FOUND = .TRUE. JCOL = 2 C--pair incoming antiparticle with incoming particle C-- or outgoing particle with incoming particle ELSEIF(IDUP(I).GT.0.AND.ISTUP(I).EQ.-1.AND. & ((IDUP(J).LT.0.AND.ISTUP(J).EQ.-1).OR. & (IDUP(J).GT.0.AND.ISTUP(J).GT.0 ))) THEN FOUND = .TRUE. JCOL = 1 ENDIF C--make the connection IF(FOUND) THEN JDAHEP(2,K) = JLOC(I) JMOHEP(2,JLOC(I)) = K ENDIF ENDIF C--set up the search for the next partner IF(FOUND) THEN FOUND = .FALSE. ICOL = ICOLUP(JCOL,I) K = JLOC(I) J = I GOTO 10 ENDIF 15 CONTINUE C--if no other choice then connect to the first particle in the loop IF(JDAHEP(2,K).EQ.0.AND.JMOHEP(2,ISTART).EQ.0) THEN JDAHEP(2,K) = ISTART JMOHEP(2,ISTART) = K ELSEIF(JDAHEP(2,ISTART).EQ.0.AND.JMOHEP(2,K).EQ.0) THEN JMOHEP(2,K) = ISTART JDAHEP(2,ISTART) = K ELSE CALL HWWARN('HWBGUP',100) GOTO 999 ENDIF GOTO 20 ENDIF C--now the bit to find colour partners FOUND = .FALSE. C--special for particle from a decaying coloured particle IF(MOTHUP(1,J).NE.0) THEN IF(ISTUP(MOTHUP(1,J)).EQ.2.OR.ISTUP(MOTHUP(1,J)).EQ.3) THEN IF(IDUP(J).LT.0.AND.ICOL.EQ.ICOLUP(2,MOTHUP(1,J))) THEN JDAHEP(2,K) = JLOC(MOTHUP(1,J)) JMOHEP(2,K) = JLOC(MOTHUP(1,J)) GOTO 20 ELSEIF(IDUP(J).GT.0.AND.ICOL.EQ.ICOLUP(1,MOTHUP(1,J))) THEN JDAHEP(2,K) = JLOC(MOTHUP(1,J)) JMOHEP(2,K) = JLOC(MOTHUP(1,J)) GOTO 20 ENDIF ENDIF ENDIF C--search for the partner DO I=1,NUP IF(ICOLUP(1,I).EQ.ICOL.AND.I.NE.J) THEN IF((JCOL.EQ.1.AND.ISTUP(J).EQ.-1.AND.ISTUP(I).GT.0).OR. & (JCOL.EQ.2.AND.ISTUP(J).GT.0.AND.ISTUP(I).GE.0)) THEN JDAHEP(2,K) = JLOC(I) JMOHEP(2,JLOC(I)) = K FOUND = .TRUE. ELSEIF((JCOL.EQ.1.AND.ISTUP(J).GT.0.AND.ISTUP(I).EQ.-1).OR. & (JCOL.EQ.2.AND.ISTUP(J).EQ.-1.AND.ISTUP(I).EQ.-1)) THEN JMOHEP(2,K) = JLOC(I) JDAHEP(2,JLOC(I)) = K FOUND = .TRUE. ENDIF IF(FOUND) JCOL = 2 ELSEIF(ICOLUP(2,I).EQ.ICOL.AND.I.NE.J) THEN IF((JCOL.EQ.1.AND.ISTUP(J).EQ.-1.AND.ISTUP(I).EQ.-1).OR. & (JCOL.EQ.2.AND.ISTUP(J).GT.0.AND.ISTUP(I).EQ.-1)) THEN JDAHEP(2,K) = JLOC(I) JMOHEP(2,JLOC(I)) = K FOUND = .TRUE. ELSEIF((JCOL.EQ.1.AND.ISTUP(J).GE.0.AND.ISTUP(I).GE.0).OR. & (JCOL.EQ.2.AND.ISTUP(J).EQ.-1.AND.ISTUP(I).GE.0)) THEN JMOHEP(2,K) = JLOC(I) JDAHEP(2,JLOC(I)) = K FOUND = .TRUE. ENDIF IF(FOUND) JCOL = 1 ENDIF IF(FOUND) THEN K = JLOC(I) J = I ICOL = ICOLUP(JCOL,I) GOTO 10 ENDIF ENDDO C--special for self connected gluons IF(IDUP(J).EQ.21.OR.IDUP(J).EQ.9.AND. & ICOLUP(1,J).EQ.ICOLUP(2,J)) THEN JMOHEP(2,K) = K JDAHEP(2,K) = K C--options for self connected gluons IF(LHGLSF) THEN CALL HWWARN('HWBGUP',1) ELSE CALL HWWARN('HWBGUP',101) GOTO 999 ENDIF GOTO 20 ENDIF C--perform the shower 30 CALL HWBGEN 999 RETURN END CDECK ID>, HWBJCO. *CMZ :- -30/09/02 09.19.58 by Peter Richardson *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWBJCO C----------------------------------------------------------------------- C COMBINES JETS WITH REQUIRED KINEMATICS C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWULDO,EPS,PTX,PTY,PF,PTINF,PTCON,CN,CP,SP,PP0, & PM0,ET0,DET,ECM,EMJ,EMP,EMS,DMS,ES,DPF,ALF,AL(2),ET(2),PP(2), & PT(3),PA(5),PB(5),PC(5),PQ(5),PR(5),PS(5),RR(3,3),RS(3,3),ETC, & PJ(NMXJET),PM(NMXJET),PBR(5),RBR(3,3),DISP(4),PLAB(5) INTEGER LJET,IJ1,IST,IP,ICM,IP1,IP2,NP,IHEP,MHEP,JP,KP,LP,KHEP, & JHEP,NE,IJT,IEND(2),IJET(NMXJET),IPAR(NMXJET) LOGICAL AZCOR,JETRAD,DISPRO,DISLOW EXTERNAL HWULDO PARAMETER (EPS=1.D-4) IF (IERROR.NE.0) RETURN AZCOR=AZSOFT.OR.AZSPIN LJET=131 10 IJET(1)=1 20 IJ1=IJET(1) DO 40 IHEP=IJ1,NHEP IST=ISTHEP(IHEP) IF (IST.EQ.137.OR.IST.EQ.138) IST=133 IF (IST.EQ.LJET) THEN C---FOUND AN UNBOOSTED JET - FIND PARTNERS IP=JMOHEP(1,IHEP) ICM=JMOHEP(1,IP) DISPRO=IPRO/10.EQ.9.AND.IDHW(ICM).EQ.15 DISLOW=DISPRO.AND.JDAHEP(1,ICM).EQ.JDAHEP(2,ICM)-1 IF (IST.EQ.131) THEN IP1=JMOHEP(1,ICM) IP2=JMOHEP(2,ICM) ELSE IP1=JDAHEP(1,ICM) IP2=JDAHEP(2,ICM) ENDIF IF (IP1.NE.IP) THEN CALL HWWARN('HWBJCO',100) GOTO 999 ENDIF NP=0 DO 30 JHEP=IP1,IP2 NP=NP+1 IPAR(NP)=JHEP 30 IJET(NP)=JDAHEP(1,JHEP) GOTO 50 ENDIF 40 CONTINUE C---NO MORE JETS? IF (LJET.EQ.131) THEN LJET=133 GOTO 10 ENDIF RETURN 50 IF (LJET.EQ.131) THEN C---SPACELIKE JETS: FIND SPACELIKE PARTONS IF (NP.NE.2) THEN CALL HWWARN('HWBJCO',103) GOTO 999 ENDIF C---special for DIS: FIND BOOST AND ROTATION FROM LAB TO BREIT FRAME IF (DISPRO.AND.BREIT) THEN IP=2 IF (JDAHEP(1,IP).NE.0) IP=JDAHEP(1,IP) CALL HWVDIF(4,PHEP(1,JMOHEP(1,ICM)),PHEP(1,JDAHEP(1,ICM)),PB) CALL HWUMAS(PB) C---IF Q**2<10**-2, SOMETHING MUST HAVE ALREADY GONE WRONG IF (PB(5)**2.LT.1.D-2) THEN CALL HWWARN('HWBJCO',102) GOTO 999 ENDIF CALL HWVSCA(4,PB(5)**2/HWULDO(PHEP(1,IP),PB),PHEP(1,IP),PBR) CALL HWVSUM(4,PB,PBR,PBR) CALL HWUMAS(PBR) CALL HWULOF(PBR,PB,PB) CALL HWUROT(PB,ONE,ZERO,RBR) ENDIF PTX=0. PTY=0. PF=1.D0 DO 90 IP=1,2 MHEP=IJET(IP) IF (JDAHEP(1,MHEP).EQ.0) THEN C---SPECIAL FOR NON-PARTON JETS IHEP=MHEP GOTO 70 ELSE IST=134+IP DO 60 IHEP=MHEP,NHEP 60 IF (ISTHEP(IHEP).EQ.IST) GOTO 70 C---COULDN'T FIND SPACELIKE PARTON CALL HWWARN('HWBJCO',101) GOTO 999 ENDIF 70 CALL HWVSCA(3,PF,PHEP(1,IHEP),PS) IF (PTINT(3,IP).GT.ZERO) THEN C---ADD INTRINSIC PT PT(1)=PTINT(1,IP) PT(2)=PTINT(2,IP) PT(3)=0. CALL HWUROT(PS, ONE,ZERO,RS) CALL HWUROB(RS,PT,PT) CALL HWVSUM(3,PS,PT,PS) ENDIF JP=IJET(IP)+1 IF (AZCOR.AND.JP.LE.NHEP.AND.IDHW(JP).EQ.17) THEN C---ALIGN CONE WITH INTERFERING PARTON CALL HWUROT(PS, ONE,ZERO,RS) CALL HWUROF(RS,PHEP(1,JP),PR) PTCON=PR(1)**2+PR(2)**2 KP=JMOHEP(2,JP) IF (KP.EQ.0) THEN CALL HWWARN('HWBJCO',1) PTINF=0. ELSE CALL HWVEQU(4,PHEP(1,KP),PB) IF (DISPRO.AND.BREIT) THEN CALL HWULOF(PBR,PB,PB) CALL HWUROF(RBR,PB,PB) ENDIF PTINF=PB(1)**2+PB(2)**2 IF (PTINF.LT.EPS) THEN C---COLLINEAR JETS: ALIGN CONES KP=JDAHEP(1,KP)+1 C---BUG FIX BY MHS 17/03/05: RETURNED TO VERSION 6.500! IF (ISTHEP(KP).EQ.100.AND.ISTHEP(KP-1).GE.141 $ .AND.ISTHEP(KP-1).LE.144) THEN C---END FIX CALL HWVEQU(4,PHEP(1,KP),PB) IF (DISPRO.AND.BREIT) THEN CALL HWULOF(PBR,PB,PB) CALL HWUROF(RBR,PB,PB) ENDIF PTINF=PB(1)**2+PB(2)**2 ELSE PTINF=0. ENDIF ENDIF ENDIF IF (PTCON.NE.ZERO.AND.PTINF.NE.ZERO) THEN CN=1./SQRT(PTINF*PTCON) CP=CN*(PR(1)*PB(1)+PR(2)*PB(2)) SP=CN*(PR(1)*PB(2)-PR(2)*PB(1)) ELSE CALL HWRAZM( ONE,CP,SP) ENDIF ELSE CALL HWRAZM( ONE,CP,SP) ENDIF C---ROTATE SO SPACELIKE IS ALONG AXIS (APART FROM INTRINSIC PT) CALL HWUROT(PS,CP,SP,RS) IHEP=IJET(IP) KHEP=JDAHEP(2,IHEP) IF (KHEP.LT.IHEP) KHEP=IHEP IEND(IP)=KHEP DO 80 JHEP=IHEP,KHEP CALL HWUROF(RS,PHEP(1,JHEP),PHEP(1,JHEP)) 80 CALL HWUROF(RS,VHEP(1,JHEP),VHEP(1,JHEP)) PP(IP)=PHEP(4,IHEP)+PF*PHEP(3,IHEP) ET(IP)=PHEP(1,IHEP)**2+PHEP(2,IHEP)**2-PHEP(5,IHEP)**2 C---REDEFINE HARD CM PTX=PTX+PHEP(1,IHEP) PTY=PTY+PHEP(2,IHEP) 90 PF=-PF PHEP(1,ICM)=PTX PHEP(2,ICM)=PTY C---special for DIS: keep lepton momenta fixed IF (DISPRO) THEN IP1=JMOHEP(1,ICM) IP2=JDAHEP(1,ICM) IJT=IJET(1) C---IJT will be used to store lepton momentum transfer CALL HWVDIF(4,PHEP(1,IP1),PHEP(1,IP2),PHEP(1,IJT)) CALL HWUMAS(PHEP(1,IJT)) IF (IDHEP(IP1).EQ.IDHEP(IP2)) THEN IDHW(IJT)=200 ELSEIF (IDHEP(IP1).LT.IDHEP(IP2)) THEN IDHW(IJT)=199 ELSE IDHW(IJT)=198 ENDIF IDHEP(IJT)=IDPDG(IDHW(IJT)) ISTHEP(IJT)=3 C---calculate boost for struck parton C PC is momentum of outgoing parton(s) IP2=JDAHEP(2,ICM) IF (.NOT.DISLOW) THEN C---FOR heavy QQbar PQ and PC are old and new QQbar momenta CALL HWVSUM(4,PHEP(1,IP2-1),PHEP(1,IP2),PQ) CALL HWUMAS(PQ) PC(5)=PQ(5) ELSE PC(5)=PHEP(5,JDAHEP(1,IP2)) ENDIF CALL HWVSUM(2,PHEP(1,IJT),PHEP(1,IJET(2)),PC) ET(1)=ET(2) C---USE BREIT FRAME BOSON MOMENTUM IF NECESSARY IF (BREIT) THEN ET(2)=ET(1)+PC(5)**2+PHEP(5,IJET(2))**2 PM0=PHEP(5,IJT) PP0=-PM0 ELSE ET(2)=PC(1)**2+PC(2)**2+PC(5)**2 PP0=PHEP(4,IJT)+PHEP(3,IJT) PM0=PHEP(4,IJT)-PHEP(3,IJT) ENDIF ET0=(PP0*PM0)+ET(1)-ET(2) DET=ET0**2-4.*(PP0*PM0)*ET(1) IF (DET.LT.ZERO) THEN FROST=.TRUE. RETURN ENDIF ALF=(SQRT(DET)-ET0)/(2.*PP0*PP(2)) PB(1)=0. PB(2)=0. PB(5)=2.D0 PB(3)=ALF-(1./ALF) PB(4)=ALF+(1./ALF) DO 100 IHEP=IJET(2),IEND(2) CALL HWULOF(PB,PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWULF4(PB,VHEP(1,IHEP),VHEP(1,IHEP)) C---BOOST FROM BREIT FRAME IF NECESSARY IF (BREIT) THEN CALL HWUROB(RBR,PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWULOB(PBR,PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWUROB(RBR,VHEP(1,IHEP),VHEP(1,IHEP)) CALL HWULB4(PBR,VHEP(1,IHEP),VHEP(1,IHEP)) ENDIF 100 ISTHEP(IHEP)=ISTHEP(IHEP)+10 CALL HWVDIF(4,VHEP(1,IPAR(2)),VHEP(1,IJET(2)),DISP) DO 110 IHEP=IJET(2),IEND(2) 110 CALL HWVSUM(4,DISP,VHEP(1,IHEP),VHEP(1,IHEP)) IF (IEND(2).GT.IJET(2)+1) ISTHEP(IJET(2)+1)=100 CALL HWVSUM(4,PHEP(1,IJT),PHEP(1,IJET(2)),PC) CALL HWVSUM(4,PHEP(1,IP1),PHEP(1,IJET(2)),PHEP(1,ICM)) CALL HWUMAS(PHEP(1,ICM)) ELSEIF (IPRO/10.EQ.5) THEN C Special to preserve photon momentum ETC=PTX**2+PTY**2+PHEP(5,ICM)**2 ET0=ETC+ET(1)-ET(2) DET=ET0**2-4.*ETC*ET(1) IF (DET.LT.ZERO) THEN FROST=.TRUE. RETURN ENDIF ALF=(SQRT(DET)+ET0-2.*ET(1))/(2.*PP(1)*PP(2)) PB(1)=0. PB(2)=0. PB(3)=ALF-1./ALF PB(4)=ALF+1./ALF PB(5)=2. IJT=IJET(2) DO 120 IHEP=IJT,IEND(2) CALL HWULOF(PB,PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWULF4(PB,VHEP(1,IHEP),VHEP(1,IHEP)) 120 ISTHEP(IHEP)=ISTHEP(IHEP)+10 CALL HWVDIF(4,VHEP(1,IPAR(2)),VHEP(1,IJT),DISP) DO 130 IHEP=IJT,IEND(2) 130 CALL HWVSUM(4,DISP,VHEP(1,IHEP),VHEP(1,IHEP)) IF (IEND(2).GT.IJT+1) ISTHEP(IJT+1)=100 ISTHEP(IJET(1))=ISTHEP(IJET(1))+10 CALL HWVSUM(2,PHEP(3,IPAR(1)),PHEP(3,IJT),PHEP(3,ICM)) ELSE C--change to preserve either long mom or rapidity rather than long mom C--by PR and BRW 30/9/02 IF (PRESPL) THEN C--PRESERVE LONG MOM OF CMF PHEP(4,ICM)= & SQRT(PTX**2+PTY**2+PHEP(3,ICM)**2+PHEP(5,ICM)**2) ELSE C--PRESERVE RAPIDITY OF CMF DET=SQRT(ONE+(PTX**2+PTY**2)/(PHEP(4,ICM)**2 & -PHEP(3,ICM)**2)) CALL HWVSCA(2,DET,PHEP(3,ICM),PHEP(3,ICM)) ENDIF C---NOW BOOST TO REQUIRED Q**2 AND X-F PP0=PHEP(4,ICM)+PHEP(3,ICM) PM0=PHEP(4,ICM)-PHEP(3,ICM) ET0=(PP0*PM0)+ET(1)-ET(2) DET=ET0**2-4.*(PP0*PM0)*ET(1) IF (DET.LT.ZERO) THEN FROST=.TRUE. RETURN ENDIF DET=SQRT(DET)+ET0 AL(1)= 2.*PM0*PP(1)/DET AL(2)=(PM0/PP(2))*(1.-2.*ET(1)/DET) PB(1)=0. PB(2)=0. PB(5)=2. DO 160 IP=1,2 PB(3)=AL(IP)-(1./AL(IP)) PB(4)=AL(IP)+(1./AL(IP)) IJT=IJET(IP) DO 140 IHEP=IJT,IEND(IP) CALL HWULOF(PB,PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWULF4(PB,VHEP(1,IHEP),VHEP(1,IHEP)) 140 ISTHEP(IHEP)=ISTHEP(IHEP)+10 CALL HWVDIF(4,VHEP(1,IPAR(IP)),VHEP(1,IJT),DISP) DO 150 IHEP=IJT,IEND(IP) 150 CALL HWVSUM(4,DISP,VHEP(1,IHEP),VHEP(1,IHEP)) IF (IEND(IP).GT.IJT+1) THEN ISTHEP(IJT+1)=100 ELSEIF (IEND(IP).EQ.IJT) THEN C---NON-PARTON JET ISTHEP(IJT)=3 ENDIF 160 CONTINUE ENDIF ISTHEP(ICM)=120 ELSE C---TIMELIKE JETS C---SPECIAL CASE: IF HARD PROCESS IS W/Z DECAY, PERFORM KINEMATIC C RECONSTRUCTION IN ITS REST FRAME INSTEAD OF THE LAB FRAME IF (IDHW(ICM).GE.198.AND.IDHW(ICM).LE.200.AND.WZRFR) THEN CALL HWVEQU(5,PHEP(1,ICM),PLAB) CALL HWULOF(PLAB,PHEP(1,ICM),PHEP(1,ICM)) CALL HWULF4(PLAB,VHEP(1,ICM),VHEP(1,ICM)) DO 165 IP=1,NP CALL HWULOF(PLAB,PHEP(1,IPAR(IP)),PHEP(1,IPAR(IP))) CALL HWULF4(PLAB,VHEP(1,IPAR(IP)),VHEP(1,IPAR(IP))) 165 CONTINUE ENDIF C special for DIS: preserve outgoing lepton momentum IF (DISPRO) THEN CALL HWVEQU(5,PHEP(1,IPAR(1)),PHEP(1,IJET(1))) ISTHEP(IJET(1))=1 LP=2 ELSE CALL HWVEQU(5,PHEP(1,ICM),PC) C--- PQ AND PC ARE OLD AND NEW PARTON CM CALL HWVSUM(4,PHEP(1,IPAR(1)),PHEP(1,IPAR(2)),PQ) PQ(5)=PHEP(5,ICM) IF (NP.GT.2) THEN DO 170 KP=3,NP 170 CALL HWVSUM(4,PHEP(1,IPAR(KP)),PQ,PQ) ENDIF LP=1 ENDIF IF (.NOT.DISLOW) THEN C---FIND JET CM MOMENTA ECM=PQ(5) EMS=0. JETRAD=.FALSE. DO 180 KP=LP,NP EMJ=PHEP(5,IJET(KP)) EMP=PHEP(5,IPAR(KP)) JETRAD=JETRAD.OR.EMJ.NE.EMP EMS=EMS+EMJ PM(KP)= EMJ**2 C---N.B. ROUNDING ERRORS HERE AT HIGH ENERGIES PJ(KP)=(HWULDO(PHEP(1,IPAR(KP)),PQ)/ECM)**2-EMP**2 IF (PJ(KP).LE.ZERO) THEN CALL HWWARN('HWBJCO',104) GOTO 999 ENDIF 180 CONTINUE PF=1. IF (JETRAD) THEN C---JETS DID RADIATE IF (EMS.GE.ECM) THEN FROST=.TRUE. GOTO 240 ENDIF DO 200 NE=1,NETRY EMS=-ECM DMS=0. DO 190 KP=LP,NP ES=SQRT(PF*PJ(KP)+PM(KP)) EMS=EMS+ES 190 DMS=DMS+PJ(KP)/ES DPF=2.*EMS/DMS IF (DPF.GT.PF) DPF=0.9*PF PF=PF-DPF 200 IF (ABS(DPF).LT.EPS) GOTO 210 CALL HWWARN('HWBJCO',105) GOTO 999 ENDIF 210 CONTINUE ENDIF C---BOOST PC AND PQ TO BREIT FRAME IF NECESSARY IF (DISPRO.AND.BREIT) THEN CALL HWULOF(PBR,PC,PC) CALL HWUROF(RBR,PC,PC) IF (.NOT.DISLOW) THEN CALL HWULOF(PBR,PQ,PQ) CALL HWUROF(RBR,PQ,PQ) ENDIF ENDIF DO 230 IP=LP,NP C---FIND CM ROTATION FOR JET IP IF (.NOT.DISLOW) THEN CALL HWVEQU(4,PHEP(1,IPAR(IP)),PR) IF (DISPRO.AND.BREIT) THEN CALL HWULOF(PBR,PR,PR) CALL HWUROF(RBR,PR,PR) ENDIF C--Modified by MHS 17/08/05 to do unboost in 2 stages (trans,long) PA(1)=PQ(1) PA(2)=PQ(2) PA(3)=ZERO PA(5)=SQRT(PQ(3)**2+PQ(5)**2) PA(4)=PQ(4) CALL HWULOF(PA,PR,PR) PA(1)=ZERO PA(2)=ZERO PA(3)=PQ(3) PA(4)=PA(5) PA(5)=PQ(5) CALL HWULOF(PA,PR,PR) C--End mod CALL HWUROT(PR, ONE,ZERO,RR) PR(1)=ZERO PR(2)=ZERO PR(3)=SQRT(PF*PJ(IP)) PR(4)=SQRT(PF*PJ(IP)+PM(IP)) PR(5)=PHEP(5,IJET(IP)) CALL HWUROB(RR,PR,PR) C--Modified by BRW 25/10/02 to do boost in 2 stages (long,trans) PA(1)=ZERO PA(2)=ZERO PA(3)=PC(3) PA(5)=PC(5) PA(4)=SQRT(PA(3)**2+PA(5)**2) CALL HWULOB(PA,PR,PR) PA(1)=PC(1) PA(2)=PC(2) PA(3)=ZERO PA(5)=PA(4) PA(4)=PC(4) CALL HWULOB(PA,PR,PR) C--End mod ELSE CALL HWVEQU(5,PC,PR) ENDIF C---NOW PR IS LAB/BREIT MOMENTUM OF JET IP KP=IJET(IP)+1 IF (AZCOR.AND.KP.LE.NHEP.AND.IDHW(KP).EQ.17) THEN C---ALIGN CONE WITH INTERFERING PARTON CALL HWUROT(PR, ONE,ZERO,RS) JP=JMOHEP(2,KP) IF (JP.EQ.0) THEN CALL HWWARN('HWBJCO',2) PTINF=0. ELSE CALL HWVEQU(4,PHEP(1,JP),PS) IF (DISPRO.AND.BREIT) THEN CALL HWULOF(PBR,PS,PS) CALL HWUROF(RBR,PS,PS) ENDIF CALL HWUROF(RS,PS,PS) PTINF=PS(1)**2+PS(2)**2 IF (PTINF.LT.EPS) THEN C---COLLINEAR JETS: ALIGN CONES JP=JDAHEP(1,JP)+1 C---BUG FIX BY MHS 17/03/05: RETURNED TO VERSION 6.500! IF (ISTHEP(JP).EQ.100.AND.ISTHEP(JP-1).GE.141 $ .AND.ISTHEP(JP-1).LE.144) THEN C---END FIX CALL HWVEQU(4,PHEP(1,JP),PS) IF (DISPRO.AND.BREIT) THEN CALL HWULOF(PBR,PS,PS) CALL HWUROF(RBR,PS,PS) ENDIF CALL HWUROF(RS,PS,PS) PTINF=PS(1)**2+PS(2)**2 ELSE PTINF=0. ENDIF ENDIF ENDIF CALL HWVEQU(4,PHEP(1,KP),PB) IF (DISPRO.AND.BREIT) THEN CALL HWULOF(PBR,PB,PB) CALL HWUROF(RBR,PB,PB) ENDIF PTCON=PB(1)**2+PB(2)**2 IF (PTCON.NE.ZERO.AND.PTINF.NE.ZERO) THEN CN=1./SQRT(PTINF*PTCON) CP=CN*(PS(1)*PB(1)+PS(2)*PB(2)) SP=CN*(PS(1)*PB(2)-PS(2)*PB(1)) ELSE CALL HWRAZM( ONE,CP,SP) ENDIF ELSE CALL HWRAZM( ONE,CP,SP) ENDIF CALL HWUROT(PR,CP,SP,RS) C---FIND BOOST FOR JET IP ALF=(PHEP(3,IJET(IP))+PHEP(4,IJET(IP)))/ & (PR(4)+SQRT((PR(4)+PR(5))*(PR(4)-PR(5)))) PB(1)=0. PB(2)=0. PB(3)=ALF-(1./ALF) PB(4)=ALF+(1./ALF) PB(5)=2. IHEP=IJET(IP) KHEP=JDAHEP(2,IHEP) IF (KHEP.LT.IHEP) KHEP=IHEP DO 220 JHEP=IHEP,KHEP CALL HWULOF(PB,PHEP(1,JHEP),PHEP(1,JHEP)) CALL HWUROB(RS,PHEP(1,JHEP),PHEP(1,JHEP)) CALL HWULF4(PB,VHEP(1,JHEP),VHEP(1,JHEP)) CALL HWUROB(RS,VHEP(1,JHEP),VHEP(1,JHEP)) C---BOOST FROM BREIT FRAME IF NECESSARY IF (DISPRO.AND.BREIT) THEN CALL HWUROB(RBR,PHEP(1,JHEP),PHEP(1,JHEP)) CALL HWULOB(PBR,PHEP(1,JHEP),PHEP(1,JHEP)) CALL HWUROB(RBR,VHEP(1,JHEP),VHEP(1,JHEP)) CALL HWULB4(PBR,VHEP(1,JHEP),VHEP(1,JHEP)) ENDIF CALL HWVSUM(4,VHEP(1,JHEP),VHEP(1,IPAR(IP)),VHEP(1,JHEP)) C--MHS FIX 07/03/05 FOR VERTEX POSITION OF LONG LIVED NON-PARTON JETS IF (KHEP.EQ.IHEP.AND.(IDHW(JHEP).GE.121.AND.IDHW(JHEP).LE.132 $ .OR.IDHW(JHEP).EQ.59)) $ CALL HWVSUM(4,VTXPIP,VHEP(1,JHEP),VHEP(1,JHEP)) C--END FIX 220 ISTHEP(JHEP)=ISTHEP(JHEP)+10 IF (KHEP.GT.IHEP+1) THEN ISTHEP(IHEP+1)=100 ELSEIF (KHEP.EQ.IHEP) THEN C---NON-PARTON JET ISTHEP(IHEP)=190 ENDIF 230 CONTINUE IF (ISTHEP(ICM).EQ.110) ISTHEP(ICM)=120 C---SPECIAL CASE: FOR W/Z DECAY BOOST BACK TO THE LAB FRAME 240 IF (IDHW(ICM).GE.198.AND.IDHW(ICM).LE.200.AND.WZRFR) THEN CALL HWULOB(PLAB,PHEP(1,ICM),PHEP(1,ICM)) CALL HWULB4(PLAB,VHEP(1,ICM),VHEP(1,ICM)) DO 260 IP=1,NP CALL HWULOB(PLAB,PHEP(1,IPAR(IP)),PHEP(1,IPAR(IP))) CALL HWULB4(PLAB,VHEP(1,IPAR(IP)),VHEP(1,IPAR(IP))) CALL HWULOB(PLAB,PHEP(1,IJET(IP)),PHEP(1,IJET(IP))) C--MHS FIX 07/03/05 - DO NOT REBOOST PRIMARY VERTEX IF (ISTHEP(IJET(IP)).EQ.190) $ CALL HWVDIF(4,VHEP(1,IJET(IP)),VTXPIP,VHEP(1,IJET(IP))) CALL HWULB4(PLAB,VHEP(1,IJET(IP)),VHEP(1,IJET(IP))) IF (ISTHEP(IJET(IP)).EQ.190) $ CALL HWVSUM(4,VHEP(1,IJET(IP)),VTXPIP,VHEP(1,IJET(IP))) C---END FIX IF (JDAHEP(1,IJET(IP)).GT.0) THEN IF (JDAHEP(2,IJET(IP)).GT.JDAHEP(1,IJET(IP))) THEN CALL HWULOB(PLAB,PHEP(1,IJET(IP)+1),PHEP(1,IJET(IP)+1)) CALL HWULB4(PLAB,VHEP(1,IJET(IP)+1),VHEP(1,IJET(IP)+1)) ENDIF DO 250 IHEP=JDAHEP(1,IJET(IP)),JDAHEP(2,IJET(IP)) CALL HWULOB(PLAB,PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWULB4(PLAB,VHEP(1,IHEP),VHEP(1,IHEP)) 250 CONTINUE ENDIF 260 CONTINUE ENDIF IF (FROST) RETURN ENDIF GOTO 20 999 RETURN END CDECK ID>, HWBMAS. *CMZ :- -26/04/91 11.11.54 by Bryan Webber *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWBMAS C----------------------------------------------------------------------- C Passes backwards through a jet cascade calculating the masses C and magnitudes of the longitudinal and transverse three momenta. C Components given relative to direction of parent for a time-like C vertex and with respect to z-axis for space-like vertices. C C On input PPAR(1-5,*) contains: C (E*sqrt(Xi),Xi,3-mom (if external),E,M-sq (if external)) C C On output PPAR(1-5,*) (if TMPAR(*)), containts: C (P-trans,Xi or Xilast,P-long,E,M) C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWUSQR,EXI,PISQ,PJPK,EJEK,PTSQ,Z,ZMIN,ZMAX, $ EMI,EMJ,EMK,C,NQ,HWBVMC,RHO,POLD,PNEW,EOLD,ENEW,A,B INTEGER IPAR,JPAR,KPAR,MPAR,I,J,K EXTERNAL HWUSQR IF (IERROR.NE.0) RETURN IF (NPAR.GT.2) THEN DO 30 MPAR=NPAR-1,3,-2 JPAR=MPAR C Find parent and partner of this branch IPAR=JMOPAR(1,JPAR) KPAR=JPAR+1 C Determine type of branching IF (TMPAR(IPAR)) THEN C Time-like branching C Compute mass of parent EXI=PPAR(1,JPAR)*PPAR(1,KPAR) PPAR(5,IPAR)=PPAR(5,JPAR)+PPAR(5,KPAR)+2.*EXI C Compute three momentum of parent PISQ=PPAR(4,IPAR)*PPAR(4,IPAR)-PPAR(5,IPAR) PPAR(3,IPAR)=HWUSQR(PISQ) C---SPECIAL FOR G-->QQBAR: READJUST ANGULAR DISTRIBUTION IF (IDPAR(IPAR).EQ.13 .AND. IDPAR(JPAR).LT.13) THEN Z=PPAR(4,JPAR)/PPAR(4,IPAR) ZMIN=HWBVMC(IDPAR(JPAR))/PPAR(1,JPAR)*Z RHO=(Z*(3-Z*(3-2*Z))-ZMIN*(3-ZMIN*(3-2*ZMIN))) $ /(2*(1-2*ZMIN)*(1-ZMIN*(1-ZMIN))) NQ=PPAR(3,IPAR)*(PPAR(3,IPAR)+PPAR(4,IPAR)) EMI=PPAR(5,IPAR) EMJ=PPAR(5,JPAR) EMK=PPAR(5,KPAR) ZMIN=MAX((EMI+EMJ-EMK)/(2*(EMI+NQ)), $ (EMI+EMJ-EMK-SQRT(ABS((EMI-EMJ-EMK)**2-4*EMJ*EMK)))/(2*EMI)) ZMAX=1-MAX((EMI-EMJ+EMK)/(2*(EMI+NQ)), $ (EMI-EMJ+EMK-SQRT(ABS((EMI-EMJ-EMK)**2-4*EMJ*EMK)))/(2*EMI)) C=2*RMASS(IDPAR(JPAR))**2/EMI Z=(4*ZMIN*(1.5*(1+C-ZMIN)+ZMIN**2)*(1-RHO) $ +4*ZMAX*(1.5*(1+C-ZMAX)+ZMAX**2)*RHO-2-3*C)/(1+2*C)**1.5 Z=SQRT(1+2*C)*SINH(LOG(Z+SQRT(Z**2+1))/3)+0.5 Z=(Z*NQ+(EMI+EMJ-EMK)/2)/(NQ+EMI) PPAR(4,JPAR)=Z*PPAR(4,IPAR) PPAR(4,KPAR)=PPAR(4,IPAR)-PPAR(4,JPAR) PPAR(3,JPAR)=HWUSQR(PPAR(4,JPAR)**2-EMJ) PPAR(3,KPAR)=HWUSQR(PPAR(4,KPAR)**2-EMK) PPAR(2,JPAR)=EXI/(PPAR(4,JPAR)*PPAR(4,KPAR)) IF(JDAPAR(2,JPAR).NE.0)PPAR(2,JDAPAR(2,JPAR))=PPAR(2,JPAR) IF(JDAPAR(2,KPAR).NE.0)PPAR(2,JDAPAR(2,KPAR))=PPAR(2,JPAR) C---FIND DESCENDENTS OF THIS SPLITTING AND READJUST THEIR MOMENTA TOO DO 20 J=JPAR+2,NPAR-1,2 I=J 10 I=JMOPAR(1,I) IF (I.GT.IPAR) GOTO 10 IF (I.EQ.IPAR) THEN I=JMOPAR(1,J) K=J+1 POLD=PPAR(3,J)+PPAR(3,K) EOLD=PPAR(4,J)+PPAR(4,K) PNEW=HWUSQR(PPAR(4,I)**2-PPAR(5,I)) ENEW=PPAR(4,I) A=(ENEW*EOLD-PNEW*POLD)/PPAR(5,I) B=(PNEW*EOLD-ENEW*POLD)/PPAR(5,I) PPAR(3,J)=A*PPAR(3,J)+B*PPAR(4,J) PPAR(4,J)=(PPAR(4,J)+B*PPAR(3,J))/A PPAR(3,K)=PNEW-PPAR(3,J) PPAR(4,K)=ENEW-PPAR(4,J) PPAR(2,J)=1-(PPAR(3,J)*PPAR(3,K)+PPAR(1,J)*PPAR(1,K)) $ /(PPAR(4,J)*PPAR(4,K)) IF (JDAPAR(2,J).NE.0) PPAR(2,JDAPAR(2,J))=PPAR(2,J) IF (JDAPAR(2,K).NE.0) PPAR(2,JDAPAR(2,K))=PPAR(2,J) ENDIF 20 CONTINUE ENDIF C Compute daughter' transverse and longitudinal momenta PJPK=PPAR(3,JPAR)*PPAR(3,KPAR) EJEK=PPAR(4,JPAR)*PPAR(4,KPAR)-EXI PTSQ=(PJPK+EJEK)*(PJPK-EJEK)/PISQ PPAR(1,JPAR)=HWUSQR(PTSQ) PPAR(3,JPAR)=HWUSQR(PPAR(3,JPAR)*PPAR(3,JPAR)-PTSQ) PPAR(1,KPAR)=-PPAR(1,JPAR) PPAR(3,KPAR)= PPAR(3,IPAR)-PPAR(3,JPAR) ELSE C Space-like branching C Re-arrange such that JPAR is time-like IF (TMPAR(KPAR)) THEN KPAR=JPAR JPAR=JPAR+1 ENDIF C Compute time-like branch PTSQ=(2.-PPAR(2,JPAR))*PPAR(1,JPAR)*PPAR(1,JPAR) & -PPAR(5,JPAR) PPAR(1,JPAR)=HWUSQR(PTSQ) PPAR(3,JPAR)=(1.-PPAR(2,JPAR))*PPAR(4,JPAR) PPAR(3,IPAR)=PPAR(3,KPAR)-PPAR(3,JPAR) PPAR(5,IPAR)=0. PPAR(1,KPAR)=0. ENDIF C Reset Xi to Xilast PPAR(2,KPAR)=PPAR(2,IPAR) 30 CONTINUE ENDIF DO 40 IPAR=2,NPAR 40 PPAR(5,IPAR)=HWUSQR(PPAR(5,IPAR)) PPAR(1,2)=0. PPAR(2,2)=0. END CDECK ID>, HWBRAN. *CMZ :- -14/10/99 18.04.56 by Mike Seymour *-- Author : Bryan Webber & Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWBRAN(KPAR) C----------------------------------------------------------------------- C BRANCHES TIMELIKE PARTON KPAR INTO TWO, PUTS PRODUCTS C INTO NPAR+1 AND NPAR+2, AND INCREASES NPAR BY TWO C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWBVMC,HWRGEN,HWUALF,HWUTAB,HWRUNI,HWULDO,PMOM, & QNOW,QLST,QKTHR,RN,QQBAR,DQQ,QGTHR,SNOW,QSUD,ZMIN,ZMAX,ZRAT,WMIN, & QLAM,Z1,Z2,ETEST,ZTEST,ENOW,XI,XIPREV,EPREV,QMAX,QGAM,SLST,SFNL, & TARG,ALF,BETA0(3:6),BETAP(3:6),SQRK(4:6,5),REJFAC,Z,X1,X2,OTHXI, & OTHZ,X3,FF,AW,XCUT,CC,JJ,HWUSQR INTEGER HWRINT,KPAR,ID,JD,IS,NTRY,N,ID1,ID2,MPAR,ISUD(13),IHEP, & JHEP,M,NF,NN,IREJ,NREJ,ITOP EXTERNAL HWBVMC,HWRGEN,HWUALF,HWUTAB,HWRUNI,HWULDO,HWRINT,HWUSQR SAVE BETA0,BETAP,SQRK SAVE ISUD DATA ISUD,BETA0/2,2,3,4,5,6,2,2,3,4,5,6,1,4*ZERO/ IF (IERROR.NE.0) RETURN C---SET SQRK(M,N) TO THE PROBABILITY THAT A GLUON WILL NOT PRODUCE A C QUARK-ANTIQUARK PAIR BETWEEN SCALES RMASS(M) AND 2*HWBVMC(N) IF (SUDORD.NE.1.AND.BETA0(3).EQ.ZERO) THEN DO 100 M=3,6 BETA0(M)=(11.*CAFAC-2.*M)*0.5 100 BETAP(M)=(17.*CAFAC**2-(5.*CAFAC+3.*CFFAC)*M) & /BETA0(M)*0.25/PIFAC DO 120 N=1,5 DO 110 M=4,6 IF (M.LE.N) THEN SQRK(M,N)=ONE ELSEIF (M.EQ.4.OR.M.EQ.N+1) THEN NF=M IF (2*HWBVMC(N).GT.RMASS(M)) NF=M+1 SQRK(M,N)=((BETAP(NF-1)+1/HWUALF(1,2*HWBVMC(N)))/ $ (BETAP(NF-1)+1/HWUALF(1,RMASS(M))))**(1/BETA0(NF-1)) ELSE SQRK(M,N)=SQRK(M-1,N)* $ ((BETAP(M-1)+1/HWUALF(1,RMASS(M-1)))/ $ (BETAP(M-1)+1/HWUALF(1,RMASS(M))))**(1/BETA0(M-1)) ENDIF 110 CONTINUE 120 CONTINUE ENDIF ID=IDPAR(KPAR) C--TEST FOR PARTON TYPE IF (ID.LE.13) THEN JD=ID IS=ISUD(ID) ELSEIF (ID.GE.209.AND.ID.LE.220) THEN JD=ID-208 IS=7 ELSE IS=0 END IF QNOW=-1. IF (IS.NE.0) THEN C--TIMELIKE PARTON BRANCHING ENOW=PPAR(4,KPAR) XIPREV=PPAR(2,KPAR) IF (JMOPAR(1,KPAR).EQ.0) THEN EPREV=PPAR(4,KPAR) ELSE EPREV=PPAR(4,JMOPAR(1,KPAR)) ENDIF C--IF THIS IS CHARGED & PHOTONS ARE ALLOWED, ANGLES MIGHT NOT BE ORDERED QMAX=0 QLST=PPAR(1,KPAR) IF (ICHRG(ID).NE.0 .AND. VPCUT.LT.PPAR(1,2)) THEN C--LOOK FOR A PREVIOUS G->QQBAR, IF ANY MPAR=KPAR 1 IF (JMOPAR(1,MPAR).NE.0) THEN IF (IDPAR(JMOPAR(1,MPAR)).EQ.ID) THEN MPAR=JMOPAR(1,MPAR) GOTO 1 ENDIF ENDIF C--IF CLIMBED TO THE TOP OF THE LIST, FIND QED INTERFERENCE PARTNER IF (MPAR.EQ.2) THEN JHEP=0 IF (ID.LT.7) THEN IHEP=JDAHEP(2,JCOPAR(1,1)) IF (IHEP.GT.0) JHEP=JDAHEP(2,IHEP) ELSE IHEP=JMOHEP(2,JCOPAR(1,1)) IF (IHEP.GT.0) JHEP=JMOHEP(2,IHEP) ENDIF IF (IHEP.GT.0.AND.JHEP.GT.0) THEN QMAX=HWULDO(PHEP(1,IHEP),PHEP(1,JHEP)) & *(ENOW/PPAR(4,2))**2 ELSE C--FIX AT HARD PROCESS SCALE IF POINTER NOT YET SET C (CAN HAPPEN IN SUSY EVENTS) QMAX=EMSCA**2 ENDIF ELSE QMAX=ENOW**2*PPAR(2,MPAR) ENDIF C--IF PREVIOUS BRANCHING WAS Q->QGAMMA, LOOK FOR A QCD BRANCHING MPAR=KPAR 2 IF (JMOPAR(1,MPAR).NE.0) THEN IF (IDPAR(JDAPAR(1,JMOPAR(1,MPAR))).EQ.59 .OR. & IDPAR(JDAPAR(2,JMOPAR(1,MPAR))).EQ.59) THEN MPAR=JMOPAR(1,MPAR) GOTO 2 ENDIF ENDIF QLST=ENOW**2*PPAR(2,MPAR) QMAX=SQRT(MAX(ZERO,MIN( & QMAX , EPREV**2*XIPREV , ENOW**2*XIPREV*(2-XIPREV)))) QLST=SQRT(MIN( & QLST , EPREV**2*XIPREV , ENOW**2*XIPREV*(2-XIPREV))) ENDIF NTRY=0 5 NTRY=NTRY+1 IF (NTRY.GT.NBTRY) THEN CALL HWWARN('HWBRAN',100) GOTO 999 ENDIF IF (ID.EQ.13) THEN C--GLUON -> QUARK+ANTIQUARK OPTION IF (QLST.GT.QCDL3) THEN DO 8 N=1,NFLAV QKTHR=2.*HWBVMC(N) IF (QLST.GT.QKTHR) THEN RN=HWRGEN(N) IF (SUDORD.NE.1) THEN C---FIND IN WHICH FLAVOUR INTERVAL THE UPPER LIMIT LIES NF=3 DO 200 M=MAX(3,N),NFLAV 200 IF (QLST.GT.RMASS(M)) NF=M C---CALCULATE THE FORM FACTOR IF (NF.EQ.MAX(3,N)) THEN SFNL=((BETAP(NF)+1/HWUALF(1,QKTHR))/ $ (BETAP(NF)+1/HWUALF(1,QLST)))**(1/BETA0(NF)) SLST=SFNL ELSE SFNL=((BETAP(NF)+1/HWUALF(1,RMASS(NF)))/ $ (BETAP(NF)+1/HWUALF(1,QLST)))**(1/BETA0(NF)) SLST=SFNL*SQRK(NF,N) ENDIF ENDIF IF (RN.GT.1.E-3) THEN QQBAR=QCDL3*(QLST/QCDL3)**(RN**BETAF) ELSE QQBAR=QCDL3 ENDIF IF (SUDORD.NE.1) THEN C---FIND IN WHICH FLAVOUR INTERVAL THE SOLUTION LIES IF (RN.GE.SFNL) THEN NN=NF ELSEIF (RN.GE.SLST) THEN NN=MAX(3,N) DO 210 M=MAX(3,N)+1,NF-1 210 IF (RN.GE.SLST/SQRK(M,N)) NN=M ELSE NN=0 QQBAR=QCDL3 ENDIF IF (NN.GT.0) THEN IF (NN.EQ.NF) THEN TARG=HWUALF(1,QLST) ELSE TARG=HWUALF(1,RMASS(NN+1)) RN=RN/SLST*SQRK(NN+1,N) ENDIF TARG=1/((BETAP(NN)+1/TARG)*RN**BETA0(NN)-BETAP(NN)) C---NOW SOLVE HWUALF(1,QQBAR)=TARG FOR QQBAR ITERATIVELY 7 QQBAR=MAX(QQBAR,HALF*QKTHR) ALF=HWUALF(1,QQBAR) IF (ABS(ALF-TARG).GT.ACCUR) THEN NTRY=NTRY+1 IF (NTRY.GT.NBTRY) THEN CALL HWWARN('HWBRAN',101) GOTO 999 ENDIF QQBAR=QQBAR*(1+3*PIFAC*(ALF-TARG) $ /(BETA0(NN)*ALF**2*(1+BETAP(NN)*ALF))) GOTO 7 ENDIF ENDIF ENDIF IF (QQBAR.GT.QNOW.AND.QQBAR.GT.QKTHR) THEN QNOW=QQBAR ID2=N ENDIF ELSE GOTO 9 ENDIF 8 CONTINUE ENDIF C--GLUON->DIQUARKS OPTION 9 IF (QLST.LT.QDIQK) THEN IF (PDIQK.NE.ZERO) THEN RN=HWRGEN(0) DQQ=QLST*EXP(-RN/PDIQK) IF (DQQ.GT.QNOW) THEN IF (DQQ.GT.2.*RMASS(115)) THEN QNOW=DQQ ID2=115 ENDIF ENDIF ENDIF ENDIF ENDIF C--ENHANCE GLUON AND PHOTON EMISSION BY A FACTOR OF TWO IF THIS BRANCH C IS CAPABLE OF BEING THE HARDEST SO FAR NREJ=1 IF (TMPAR(2).AND.0.25*MAX(QLST,QMAX).GT.HARDST) NREJ=2 C--BRANCHING ID->ID+GLUON QGTHR=HWBVMC(ID)+HWBVMC(13) IF (QLST.GT.QGTHR) THEN DO 300 IREJ=1,NREJ RN=HWRGEN(1) SLST=HWUTAB(SUD(1,IS),QEV(1,IS),NQEV,QLST,INTER) IF (RN.EQ.ZERO) THEN SNOW=2. ELSE SNOW=SLST/RN ENDIF IF (SNOW.LT.ONE) THEN QSUD=HWUTAB(QEV(1,IS),SUD(1,IS),NQEV,SNOW,INTER) C---IF FORM FACTOR DID NOT GET INVERTED CORRECTLY TRY LINEAR INSTEAD IF (QSUD.GT.QLST) THEN SNOW=HWUTAB(SUD(1,IS),QEV(1,IS),NQEV,QLST,1)/RN QSUD=HWUTAB(QEV(1,IS),SUD(1,IS),NQEV,SNOW,1) IF (QSUD.GT.QLST) THEN CALL HWWARN('HWBRAN',1) QSUD=-1 ENDIF ENDIF IF (QSUD.GT.QGTHR.AND.QSUD.GT.QNOW) THEN ID2=13 QNOW=QSUD ENDIF ENDIF 300 CONTINUE ENDIF C--BRANCHING ID->ID+PHOTON IF (ICHRG(ID).NE.0) THEN QGTHR=MAX(HWBVMC(ID)+HWBVMC(59),HWBVMC(59)*EXP(0.75)) IF (QMAX.GT.QGTHR) THEN DO 400 IREJ=1,NREJ RN=HWRGEN(2) IF (RN.EQ.ZERO) THEN QGAM=0 ELSE QGAM=(LOG(QMAX/HWBVMC(59))-0.75)**2 & +PIFAC*9/(ICHRG(ID)**2*ALPFAC*ALPHEM)*LOG(RN) IF (QGAM.GT.ZERO) THEN QGAM=HWBVMC(59)*EXP(0.75+SQRT(QGAM)) ELSE QGAM=0 ENDIF ENDIF IF (QGAM.GT.QGTHR.AND.QGAM.GT.QNOW) THEN ID2=59 QNOW=QGAM ENDIF 400 CONTINUE ENDIF ENDIF IF (QNOW.GT.ZERO) THEN C--BRANCHING HAS OCCURRED ZMIN=HWBVMC(ID2)/QNOW ZMAX=1.-ZMIN IF (ID.EQ.13) THEN IF (ID2.EQ.13) THEN C--GLUON -> GLUON + GLUON ID1=13 WMIN=ZMIN*ZMAX ETEST=(1.-WMIN)**2*HWUALF(5-SUDORD*2,QNOW*WMIN) ZRAT=(ZMAX*(1-ZMIN))/(ZMIN*(1-ZMAX)) C--CHOOSE Z1 DISTRIBUTED ON (ZMIN,ZMAX) C ACCORDING TO GLUON BRANCHING FUNCTION 10 Z1=ZMAX/(ZMAX+(1-ZMAX)*ZRAT**HWRGEN(0)) Z2=1.-Z1 ZTEST=(1.-(Z1*Z2))**2*HWUALF(5-SUDORD*2,QNOW*(Z1*Z2)) IF (ZTEST.LT.ETEST*HWRGEN(1)) GOTO 10 Z=Z1 ELSEIF (ID2.NE.115) THEN C--GLUON -> QUARKS ID1=ID2+6 ETEST=ZMIN**2+ZMAX**2 20 Z1=HWRUNI(0,ZMIN,ZMAX) Z2=1.-Z1 ZTEST=Z1*Z1+Z2*Z2 IF (ZTEST.LT.ETEST*HWRGEN(0)) GOTO 20 ELSE C--GLUON -> DIQUARKS ID2=HWRINT(115,117) ID1=ID2-6 Z1=HWRUNI(0,ZMIN,ZMAX) Z2=1.-Z1 ENDIF ELSE C--QUARK OR ANTIQUARK BRANCHING IF (ID2.EQ.13) THEN C--TO GLUON ZMAX=1.-HWBVMC(ID)/QNOW WMIN=MIN(ZMIN*(1.-ZMIN),ZMAX*(1.-ZMAX)) ETEST=(1.+ZMAX**2)*HWUALF(5-SUDORD*2,QNOW*WMIN) ZRAT=ZMAX/ZMIN 30 Z1=ZMIN*ZRAT**HWRGEN(0) Z2=1.-Z1 ZTEST=(1.+Z2*Z2)*HWUALF(5-SUDORD*2,QNOW*Z1*Z2) IF (ZTEST.LT.ETEST*HWRGEN(1)) GOTO 30 ELSE C--TO PHOTON ZMIN= HWBVMC(59)/QNOW ZMAX=1-HWBVMC(ID)/QNOW ZRAT=ZMAX/ZMIN ETEST=1+(1-ZMIN)**2 40 Z1=ZMIN*ZRAT**HWRGEN(0) Z2=1-Z1 ZTEST=1+Z2*Z2 IF (ZTEST.LT.ETEST*HWRGEN(1)) GOTO 40 ENDIF C--QUARKS EMIT ON LOWER SIDE, ANTIQUARKS ON UPPER SIDE Z=Z1 IF (JD.LE.6) THEN Z1=Z2 Z2=1.-Z2 ID1=ID ELSE ID1=ID2 ID2=ID ENDIF ENDIF C--UPDATE THIS BRANCH AND CREATE NEW BRANCHES XI=(QNOW/ENOW)**2 IF (ID1.NE.59.AND.ID2.NE.59) THEN IF (ID.EQ.13.AND.ID1.NE.13) THEN QLAM=QNOW ELSE QLAM=QNOW*Z1*Z2 ENDIF IF (SUDORD.EQ.1.AND.HWUALF(2,QLAM).LT.HWRGEN(0) .OR. & (2.-XI)*(QNOW*Z1*Z2)**2.GT.EMSCA**2) THEN C--BRANCHING REJECTED: REDUCE Q AND REPEAT QMAX=QNOW QLST=QNOW QNOW=-1. GOTO 5 ENDIF ENDIF C--IF THIS IS HARDEST EMISSION SO FAR, APPLY MATRIX-ELEMENT CORRECTION IF (ID.NE.13.OR.ID1.EQ.13) THEN QLAM=QNOW*Z1*Z2 REJFAC=1 IF (TMPAR(2).AND.QLAM.GT.HARDST) THEN C----SOFT MATRIX-ELEMENT CORRECTION TO TOP DECAYS ITOP=JCOPAR(1,1) IF (ISTHEP(ITOP).EQ.155.AND.(IDHW(ITOP).EQ.6 $ .OR.IDHW(ITOP).EQ.12)) THEN AW=(PHEP(5,JDAHEP(1,ITOP))/PHEP(5,ITOP))**2 FF=0.5*(1-AW)*(1-2*AW+1/AW) CC=0.25*(1-AW)**2 X1=1-2*CC*Z*(1-Z)*XI X3=0.5*(1-AW+2*CC*Z*(1-Z)*XI-(1-2*Z) & *HWUSQR(((1+AW-2*CC*Z*(1-Z)*XI)**2-4*AW) & /(1-2*Z*(1-Z)*XI))) C-----JACOBIAN FACTOR JJ=(1-X1)*(2-AW-X1-2*X3)*(1-2*Z*(1-Z)*XI)/( $ 4*CC**2*((X1+AW)**2-4*AW)*Z**2*(1-Z)**2*(1-2*Z)*XI) C-----REJECTION FACTOR XCUT=2*GCUTME/PHEP(5,ITOP) IF (X3.GT.XCUT) REJFAC=FF*JJ & *X3**2*(1-X1)*(1+(1-Z)**2)/(Z*XI) & /((1+1/AW-2*AW)*((1-AW)*X3-(1-X1) & *(1-X3)-X3**2)+(1+1/(2*AW))*X3*(X1+X3-1)**2 & +2*X3**2*(1-X1)) ELSEIF (MOD(ISTHEP(JCOPAR(1,1)),10).GE.3) THEN C---COLOUR PARTNER IS ALSO OUTGOING X1=1-Z*(1-Z)*XI X2=0.5*(1+Z*(1-Z)*XI + $ (1-Z*(1-Z)*XI)*(1-2*Z)/SQRT(1-2*Z*(1-Z)*XI)) REJFAC=SQRT(2*X1-1)/(X1*Z*(1-Z)) $ *(1+(1-Z)**2)/(Z*XI) $ *(1-X1)*(1-X2)/(X1**2+X2**2) C---CHECK WHETHER IT IS IN THE OVERLAP REGION OTHXI=4*(1-X2)*X2**2/(X2**2-(2*X2-1)*(2*X1+X2-2)**2) IF (OTHXI.LT.ONE) THEN OTHZ=0.5*(1-SQRT(2*X2-1)/X2*(2*X1+X2-2)) REJFAC=REJFAC+SQRT(2*X2-1)/(X2*OTHZ*(1-OTHZ)) $ *(1+(1-OTHZ)**2)/(OTHZ*OTHXI) $ *(1-X2)*(1-X1)/(X2**2+X1**2) ENDIF ELSE C---COLOUR PARTNER IS INCOMING (X1=XP, X2=ZP) X1=1/(1+Z*(1-Z)*XI) X2=0.5*(1+(1-2*Z)/SQRT(1-2*Z*(1-Z)*XI)) REJFAC=SQRT(3-2/X1)/(X1**2*Z*(1-Z)) $ *(1+(1-Z)**2)/(Z*XI) $ *(1-X1)*(1-X2)/ $ (1+(1-X1-X2+2*X1*X2)**2+2*(1-X1)*(1-X2)*X1*X2) C---CHECK WHETHER IT IS IN THE OVERLAP REGION OTHXI=(SQRT(X1+2*(1-X2)*(1-X2+X1*X2))-SQRT(X1))**2/ $ (1+X1-X2-SQRT(X1*(X1+2*(1-X2)*(1-X2+X1*X2)))) OTHZ=(SQRT(X1*(X1+2*(1-X2)*(1-X2+X1*X2)))-X1)/(1-X2) IF (OTHXI.LT.OTHZ**2) THEN REJFAC=REJFAC+OTHZ**3*(1-X1-X2+2*X1*X2) $ /(X1**2*(1-OTHZ)*(OTHZ+OTHXI*(1-OTHZ))) $ *(1+OTHZ**2)/((1-OTHZ)*OTHXI) $ *(1-X1)*(1-X2)/ $ (1+(1-X1-X2+2*X1*X2)**2+2*(1-X1)*(1-X2)*X1*X2) ENDIF ENDIF ENDIF IF (NREJ*REJFAC*HWRGEN(NREJ).GT.ONE) THEN QMAX=QNOW QLST=QNOW QNOW=-1. GOTO 5 ENDIF IF (QLAM.GT.HARDST) HARDST=QLAM ENDIF MPAR=NPAR+1 IDPAR(MPAR)=ID1 TMPAR(MPAR)=.TRUE. PPAR(1,MPAR)=QNOW*Z1 PPAR(2,MPAR)=XI PPAR(4,MPAR)=ENOW*Z1 NPAR=NPAR+2 IDPAR(NPAR)=ID2 TMPAR(NPAR)=.TRUE. PPAR(1,NPAR)=QNOW*Z2 PPAR(2,NPAR)=XI PPAR(4,NPAR)=ENOW*Z2 C---NEW MOTHER-DAUGHTER RELATIONS JDAPAR(1,KPAR)=MPAR JDAPAR(2,KPAR)=NPAR JMOPAR(1,MPAR)=KPAR JMOPAR(1,NPAR)=KPAR C---NEW COLOUR CONNECTIONS JCOPAR(3,KPAR)=NPAR JCOPAR(4,KPAR)=MPAR JCOPAR(1,MPAR)=NPAR JCOPAR(2,MPAR)=KPAR JCOPAR(1,NPAR)=KPAR JCOPAR(2,NPAR)=MPAR C ENDIF ENDIF IF (QNOW.LT.ZERO) THEN C--BRANCHING STOPS IF (ID.EQ.IDPAR(2).AND.PPAR(5,2).GT.1D-6) THEN PPAR(5,KPAR)=PPAR(5,2)**2 ELSE PPAR(5,KPAR)=RMASS(ID)**2 ENDIF PMOM=PPAR(4,KPAR)**2-PPAR(5,KPAR) IF (PMOM.LT.-1E-6) THEN CALL HWWARN('HWBRAN',104) GOTO 999 ENDIF IF (PMOM.LT.ZERO) PMOM=ZERO PPAR(3,KPAR)=SQRT(PMOM) JDAPAR(1,KPAR)=0 JDAPAR(2,KPAR)=0 JCOPAR(3,KPAR)=0 JCOPAR(4,KPAR)=0 ENDIF 999 RETURN END CDECK ID>, HWBRCN. *CMZ :- -31/03/00 17:54:05 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWBRCN C----------------------------------------------------------------------- C SUBROUTINE TO REPLACE HWBCON IN RPARITY VIOLATING SUSY C BASED ON HWBCON BY BRW C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IHEP,IST,ID,JC,JD,JHEP,IDP,IDM,IDM2, & RHEP,IST2,ANTC,XHEP,IP,COLP LOGICAL BVVUSE,BVVHRD,BVDEC1,BVDEC2,COLRD,ACOLRD,BVHRD,BVHRD2, & BVDEC3 LOGICAL IFGO C--logical functions to decide if baryon number violating C--BVDEC1 DELTAB=+1 BVDEC1(IP) = ((IDHW(IP).GE.419.AND.IDHW(IP).LE.424).OR. & IDHW(IP).EQ.411.OR.IDHW(IP).EQ.412.OR. & IDHW(IP).EQ.449).AND.IDHW(JDAHEP(1,IP)).LE.6. & AND.IDHW(JDAHEP(1,IP)+1).LE.6.AND. & IDHW(JDAHEP(2,IP)).LE.6 C--BVDEC2 DELTAB=-1 BVDEC2(IP) = ((IDHW(IP).GE.413.AND.IDHW(IP).LE.418).OR. & IDHW(IP).EQ.405.OR.IDHW(IP).EQ.406.OR. & IDHW(IP).EQ.449).AND. & IDHW(JDAHEP(1,IP)).GE.7.AND.IDHW(JDAHEP(1,IP)).LE.12.AND. & IDHW(JDAHEP(1,IP)+1).GE.7.AND.IDHW(JDAHEP(1,IP)+1).LE.12.AND. & IDHW(JDAHEP(2,IP)).GE.7.AND.IDHW(JDAHEP(2,IP)).LE.12 C--Neutralino and Chargino Decays BVDEC3(IP) = ((IDHW(IP).GE.450.AND.IDHW(IP).LE.457).AND. & (IDHW(JDAHEP(1,IP)).LE.12.AND.IDHW(JDAHEP(1,IP)+1).LE.12. & .AND.IDHW(JDAHEP(2,IP)).LE.12)) C--Now the hard vertices BVHRD(IP) = IDHW(IP).EQ.15.AND.IDHW(JMOHEP(1,IP)).LE.12. & AND.IDHW(JMOHEP(2,IP)).LE.12.AND.IDHW(JDAHEP(1,IP)).LE.12. & AND.IDHW(JDAHEP(2,IP)).GE.449.AND.IDHW(JDAHEP(2,IP)).LE.457 BVHRD2(IP) = IDHW(IP).EQ.15.AND.IDHW(JMOHEP(1,IP)).LE.12. & AND.IDHW(JMOHEP(2,IP)).LE.12.AND.IDHW(JDAHEP(1,IP)).GE.198. & AND.IDHW(JDAHEP(1,IP)).LE.207. & AND.ABS(IDHEP(JDAHEP(2,IP))).GT.1000000 C--Those particles which are coloured COLRD(IP) = IP.LE.6.OR.IP.EQ.13.OR.IP.EQ.449.OR. & (IP.GE.401.AND.IP.LE.406).OR.(IP.GE.413.AND.IP.LE.418).OR. & (IP.GE.115.AND.IP.LE.120).OR.IP.EQ.59 C--Those particles which are anticoloured ACOLRD(IP) = (IP.GE.7.AND.IP.LE.12).OR.IP.EQ.13.OR.IP.EQ.449.OR. & (IP.GE.407.AND.IP.LE.412).OR.(IP.GE.419.AND.IP.LE.424).OR. & (IP.GE.109.AND.IP.LE.114).OR.IP.EQ.59 IF (IERROR.NE.0) RETURN C--Added 31/03/00 PR IF(NHEP.GT.NMXHEP) THEN CALL HWWARN('HWBRCN',101) GOTO 999 ENDIF COLP = 0 IF(COLUPD.AND.HRDCOL(1,3).NE.0) THEN JD = 0 DO IHEP = HRDCOL(1,3),HRDCOL(1,3)+4 JD = JD+1 IF(JD.NE.3) THEN JMOHEP(2,IHEP) = HRDCOL(1,JD) JDAHEP(2,IHEP) = HRDCOL(2,JD) ENDIF ENDDO COLUPD=.FALSE. DO IHEP=1,5 DO JHEP=1,2 HRDCOL(JHEP,IHEP)=0 ENDDO ENDDO ELSEIF(COLUPD) THEN RETURN ENDIF DO 110 IHEP=1,NHEP IST=ISTHEP(IHEP) JD =0 BVVUSE = .FALSE. BVVHRD = .FALSE. C---LOOK FOR PARTONS WITHOUT COLOUR MOTHERS IF ((IST.LT.145.OR.IST.GT.152).AND.IST.NE.155) GOTO 110 IF (JMOHEP(2,IHEP).EQ.0) THEN C---FIND COLOUR-CONNECTED PARTON IF(IST.EQ.155.AND.ABS(IDHEP(IHEP)).EQ.6) THEN JC = JMOHEP(1,IHEP) ELSEIF(IST.EQ.155) THEN GOTO 110 ELSE JC=JMOHEP(1,IHEP) ENDIF IF (IST.NE.152) JC=JMOHEP(1,JC) C--Correction for BV IF(HRDCOL(1,1).NE.0) THEN IDP = IDHW(HRDCOL(1,1)) ELSE IDP = 0 ENDIF IDM = JMOHEP(1,JC) IF(BVDEC1(IDM).OR.BVDEC2(IDM)) THEN IF(IDHW(IDM).EQ.449.AND.JDAHEP(1,IDM).EQ.JC) THEN JC=JMOHEP(2,JC) ELSE JD = JMOHEP(2,JC) JC = IDM IF(JC.EQ.JD) JD= JDAHEP(2,JC-1) BVVUSE = .TRUE. ENDIF C--NEW FOR BV HARD PROCESS ELSEIF(BVHRD(IDM)) THEN IF(IDHW(JDAHEP(2,JMOHEP(1,JC))).EQ.449) THEN JD = JMOHEP(2,JC) IDM2 = JDAHEP(2,HRDCOL(1,2)) IF(JD.EQ.IDM2) JD = HRDCOL(1,1) IF(JC.EQ.JDAHEP(2,IDM2).AND.COLRD(IDHW(IHEP))) THEN JC = JMOHEP(2,JC) ELSEIF(JC.EQ.IDM2) THEN IF(JDAHEP(2,JMOHEP(2,JC)).EQ.JC) THEN JC = JMOHEP(2,JC) ELSE JMOHEP(2,IHEP)=JMOHEP(2,JC) GOTO 110 ENDIF ELSE JC = HRDCOL(1,1) BVVUSE = .TRUE. BVVHRD = .TRUE. IF(ACOLRD(IDHW(IHEP))) JC = JD IF(JC.EQ.IDM2) GOTO 110 ENDIF ELSE JC =JMOHEP(2,JC) BVVUSE = .TRUE. BVVHRD = .TRUE. ENDIF ELSEIF(BVHRD2(IDM)) THEN JD = JMOHEP(2,JC) IF(JC.EQ.JDAHEP(2,HRDCOL(1,2))) THEN JMOHEP(2,IHEP)=JMOHEP(2,JC) GOTO 110 ENDIF IF(JD.EQ.JDAHEP(2,HRDCOL(1,2))) JD = HRDCOL(1,1) BVVUSE=.TRUE. BVVHRD = .TRUE. IF(JC.EQ.JDAHEP(2,HRDCOL(1,2))) THEN JC = JMOHEP(2,JC) ELSE JC = HRDCOL(1,1) ENDIF ELSE JC =JMOHEP(2,JC) ENDIF IF (JC.EQ.0) THEN CALL HWWARN('HWBCON',51) GOTO 110 ENDIF C---FIND SPECTATOR WHEN JC IS DECAYED HEAVY QUARK OR SUSY PARTICLE IF (ISTHEP(JC).EQ.155) THEN IF (IDHEP(JMOHEP(1,JC)).EQ.94) THEN C---DECAYED BEFORE HADRONIZING IF(BVVHRD) THEN JHEP = JC ELSEIF(BVVUSE) THEN JHEP=JDAHEP(2,JC-1) ELSE JHEP=JMOHEP(2,JC) ENDIF IF(JHEP.EQ.0.AND.ABS(IDHEP(JC)).EQ.6) THEN JHEP = JMOHEP(1,JMOHEP(1,JC)) IF(BVDEC1(JMOHEP(1,JHEP)).OR.BVDEC2(JMOHEP(1,JHEP))) THEN JC = JHEP JHEP = JDAHEP(2,JC-1) ELSE JHEP = 0 ENDIF ENDIF IF(BVVUSE.AND.ABS(IDHEP(JHEP)).GT.1000000.AND. & ISTHEP(JHEP).NE.155.OR.JHEP.EQ.0) GOTO 110 ID=IDHW(JHEP) IF (ISTHEP(JHEP).EQ.155) THEN C---SPECIAL FOR GLUINO DECAYS IF (ID.EQ.449) THEN ID=IDHW(JC) IF(BVVUSE) THEN ID=IDHW(IHEP) IF(ID.LE.6.OR.ID.EQ.13.OR. & (ID.GE.115.AND.ID.LE.120)) THEN ID = 7 ELSE ID = 1 ENDIF ENDIF CALL HWBRC1(JC,ID,JHEP,.TRUE.,IFGO) IF(IFGO) GOTO 999 IF(BVVUSE.AND.JMOHEP(1,JC).EQ.JMOHEP(1,JD)) JC =JD ELSE JC=JDAHEP(2,JHEP) IF(COLRD(IDHW(IHEP)).AND.IDHW(JDAHEP(1,JHEP)).EQ.449) & JC=JDAHEP(1,JHEP) IF(BVVUSE.AND.JMOHEP(1,JC).EQ.JMOHEP(1,JD)) JC =JD ENDIF ELSE IF(BVVUSE) THEN IF(BVDEC2(JMOHEP(1,JHEP)).OR.JD.NE.JHEP.OR. & BVHRD(JMOHEP(1,JHEP)).OR.BVHRD2(JMOHEP(1,JHEP))) THEN JC = JD GOTO 100 ELSE JMOHEP(2,IHEP)=JHEP ID = IDHW(JHEP) IF((ID.GE.7.AND.ID.LE.12).OR. & (ID.GE.109.AND.ID.LE.114)) JMOHEP(2,JHEP)=IHEP ENDIF ELSE C--new for particles connected to BV IDM = JMOHEP(1,JHEP) IF(BVDEC1(IDM).OR.BVHRD(IDM).OR.BVHRD2(IDM)) THEN JC = JHEP IF(ABS(IDHEP(IHEP)).LT.1000000) GOTO 100 JMOHEP(2,IHEP)=JHEP GOTO 110 ENDIF C--new for top's from BV ID = IDHW(JC) IDP = JMOHEP(1,JMOHEP(1,JMOHEP(1,JC))) IF((ID.EQ.6.AND.(BVDEC1(IDP))). & OR.(ID.EQ.12.AND.BVDEC2(IDP)). & OR.((ID.EQ.12.OR.ID.EQ.449).AND.BVHRD(IDP))) THEN JMOHEP(2,IHEP)=JHEP IF(JDAHEP(2,JHEP).EQ.JC) JDAHEP(2,JHEP)=IHEP ELSE IF((IDHW(IHEP).GE.7.AND.IDHW(IHEP).LE.12. & AND.IDHW(JHEP).GE.7.AND.IDHW(JHEP).LE.12).OR. & (IDHW(IHEP).LE.6.AND.IDHW(JHEP).LE.6)) THEN JMOHEP(2,IHEP)=JHEP ELSE JMOHEP(2,IHEP)=JHEP IF((COLRD(IDHW(IHEP)).AND.ACOLRD(IDHW(JHEP))).OR. & (.NOT.COLRD(IDHW(IHEP)).AND. & .NOT.ACOLRD(IDHW(JHEP)))) THEN IF(JDAHEP(2,JHEP).EQ.0) THEN JDAHEP(2,JHEP)=IHEP ELSEIF(JMOHEP(2,JDAHEP(2,JHEP)).NE.JHEP) THEN JDAHEP(2,JHEP)=IHEP ENDIF ELSE IF(JMOHEP(2,JHEP).EQ.JC) JMOHEP(2,JHEP)=IHEP ENDIF ENDIF ENDIF ENDIF GOTO 110 ENDIF ELSE JC=JMOHEP(2,JC) ENDIF ENDIF 100 CONTINUE IF(BVVUSE.AND.ABS(IDHEP(JC)).LT.1000000.AND.JC.NE.JD & .AND.JD.NE.0.AND.JD.NE.JMOHEP(1,JC)) JC = JD IF(BVVUSE.AND.ABS(IDHEP(JC)).GT.1000000) THEN IF(COLRD(IDHW(IHEP)).AND..NOT.BVVHRD) GOTO 110 ENDIF IF(BVVUSE.AND.ISTHEP(JC).EQ.149) JC=JMOHEP(1,JMOHEP(1,JC)) C--SEARCH IN THE JET IF((ISTHEP(JC).GT.145.AND.ISTHEP(JC).LT.152).AND. & ISTHEP(IHEP).EQ.155) THEN JMOHEP(2,IHEP) = JC GOTO 110 ENDIF CALL HWBRC2(COLP,IHEP,JC,.TRUE.,BVVUSE,BVVHRD) IF(COLP.NE.0) THEN JMOHEP(2,IHEP) = COLP IF(COLRD(IDHW(IHEP)).AND.ACOLRD(IDHW(COLP)). & AND.JDAHEP(2,COLP).EQ.0) & JDAHEP(2,COLP) = IHEP IF((IDHW(IHEP).GE.7.AND.IDHW(IHEP).LE.12).AND. & (IDHW(COLP).GE.7.AND.IDHW(COLP).LE.12)) THEN IF(JMOHEP(2,COLP).EQ.0) JMOHEP(2,COLP) = IHEP ENDIF ENDIF ENDIF 110 CONTINUE C---BREAK COLOUR CONNECTIONS WITH PHOTONS modified for Rslash IHEP=1 130 IF (IHEP.LE.NHEP) THEN IF (IDHW(IHEP).EQ.59 .AND. ISTHEP(IHEP).EQ.149.AND. & (JMOHEP(2,IHEP).NE.IHEP.OR.JDAHEP(2,IHEP).NE.IHEP)) THEN IF(JMOHEP(2,IHEP).NE.0) THEN IF (JDAHEP(2,JMOHEP(2,IHEP)).EQ.IHEP) & JDAHEP(2,JMOHEP(2,IHEP))=JDAHEP(2,IHEP) ENDIF IF (JDAHEP(2,IHEP).NE.0) THEN IF (JMOHEP(2,JDAHEP(2,IHEP)).EQ.IHEP) & JMOHEP(2,JDAHEP(2,IHEP))=JMOHEP(2,IHEP) ENDIF DO RHEP=1,NHEP IST=ISTHEP(RHEP) IF((IST.GE.147.AND.IST.LE.149).AND.JDAHEP(2,RHEP).EQ.IHEP) & JDAHEP(2,RHEP)=JMOHEP(2,IHEP) ENDDO DO RHEP=1,NHEP IST=ISTHEP(RHEP) IF((IST.GE.147.AND.IST.LE.149).AND.JMOHEP(2,RHEP).EQ.IHEP) & JMOHEP(2,RHEP) = JDAHEP(2,IHEP) ENDDO JMOHEP(2,IHEP)=IHEP JDAHEP(2,IHEP)=IHEP ENDIF IHEP=IHEP+1 GOTO 130 ENDIF C--Update the BV anticolour corrections DO 210 IHEP=1,NHEP+1 IF(IHEP.EQ.1) GOTO 210 IST2 = 0 IF(IHEP.EQ.NHEP+1) THEN ANTC = HRDCOL(1,1) IF(ANTC.EQ.0.OR.(IDHW(JMOHEP(1,HRDCOL(1,2))).LE.6)) GOTO 210 IST=155 XHEP=HRDCOL(1,2) IF(ANTC.EQ.JDAHEP(2,XHEP)) ANTC=JDAHEP(1,JDAHEP(1,ANTC)) IF(ANTC.NE.0.AND.JDAHEP(1,ANTC).NE.0) IST2=ISTHEP(ANTC) ELSE ANTC = JDAHEP(2,IHEP-1) IF(ANTC.NE.0) IST2=ISTHEP(ANTC) IST=ISTHEP(IHEP) IDM = IDHW(IHEP) XHEP=IHEP ENDIF JC = 0 JHEP = 0 JD = 0 IF(IST.EQ.155.AND.IST2.EQ.155) THEN IDM = IDHW(XHEP) IF(BVDEC1(XHEP).OR.BVDEC2(XHEP).OR.BVHRD(XHEP).OR. & BVHRD2(XHEP)) THEN JC=ANTC ID = IDHW(JC) JHEP = JC IF(BVDEC1(JC).OR.BVDEC2(JC)) THEN IF(IHEP.EQ.(NHEP+1)) ANTC=JDAHEP(1,JC) GOTO 200 ENDIF IF (ID.EQ.449) THEN C--SPECIAL FOR GLUINO DECAYS ID=IDHW(XHEP) IF(IHEP.EQ.NHEP+1) ID = 407 CALL HWBRC1(JC,ID,JHEP,.FALSE.,IFGO) IF(IFGO) GOTO 999 ELSE IF(IDHW(JDAHEP(1,JHEP)).EQ.449) THEN JC=JDAHEP(1,JHEP) ELSE JC=JDAHEP(2,JHEP) ENDIF ENDIF C--SEARCH IN JET CALL HWBRC2(COLP,XHEP,JC,.FALSE.,BVVUSE,.FALSE.) ANTC = COLP IF(IHEP.LE.NHEP.AND.ACOLRD(IDHW(IHEP)).AND. & COLRD(IDHW(COLP)).AND.JMOHEP(2,COLP).EQ.0) THEN JMOHEP(2,COLP) = IHEP ELSEIF(IHEP.LE.NHEP.AND.IDHW(IHEP).LE.6.AND. & IDHW(COLP).LE.6.AND.JDAHEP(2,COLP).EQ.0) THEN JDAHEP(2,COLP) = IHEP ELSEIF(IHEP.GT.NHEP.AND. & ((BVHRD(XHEP).AND.COLRD(JDAHEP(1,XHEP))). & OR.(BVHRD2(XHEP).AND.ACOLRD(JDAHEP(2,XHEP)))).AND. & ACOLRD(IDHW(COLP)).AND.JDAHEP(2,COLP).EQ.0) THEN JDAHEP(2,COLP) = IHEP ENDIF ENDIF ENDIF 200 CONTINUE IF(IHEP.EQ.NHEP+1) THEN IF(HRDCOL(1,1).NE.ANTC.AND.ANTC.NE.0) THEN HRDCOL(1,1)=ANTC IF(JDAHEP(2,ANTC).EQ.IHEP) THEN IF(JDAHEP(2,JMOHEP(1,HRDCOL(1,2))).EQ.JDAHEP(2,HRDCOL(1,2)). & AND.JMOHEP(2,JDAHEP(2,HRDCOL(1,2))).EQ.JMOHEP(1,HRDCOL(1,2))) & THEN JDAHEP(2,ANTC) = JMOHEP(2,HRDCOL(1,2)) ELSE JDAHEP(2,ANTC) = JMOHEP(1,HRDCOL(1,2)) ENDIF ELSEIF(JMOHEP(2,ANTC).EQ.IHEP) THEN JMOHEP(2,ANTC) = JMOHEP(1,HRDCOL(1,2)) ENDIF ENDIF ELSEIF(IHEP.NE.1) THEN IF(JDAHEP(2,IHEP-1).NE.ANTC.AND.ANTC.NE.0) JDAHEP(2,IHEP-1)=ANTC ENDIF 210 CONTINUE C--Update BV decaying particles connections DO 310 IHEP=1,NHEP+1 IF(IHEP.EQ.1) GOTO 310 IF(IHEP.EQ.NHEP+1) THEN ANTC=HRDCOL(1,1) IF(ANTC.EQ.0.OR.IDHW(JDAHEP(1,HRDCOL(1,2))).LE.6) GOTO 310 IST=155 XHEP=HRDCOL(1,2) IF(ANTC.EQ.JDAHEP(2,XHEP)) ANTC=JDAHEP(1,JDAHEP(1,ANTC)) ELSE ANTC=JMOHEP(2,IHEP) IST=ISTHEP(IHEP) IDM = IDHW(IHEP) XHEP=IHEP ENDIF IST2 = 0 JC = 0 JD = 0 IF(ANTC.NE.0.AND.IHEP.NE.NHEP+1) THEN IF(JDAHEP(1,ANTC).NE.0) IST2 = ISTHEP(ANTC) ELSEIF(ANTC.NE.0.AND.IHEP.EQ.NHEP+1) THEN IST2=ISTHEP(ANTC) ENDIF IF(IST.EQ.155.AND.IST2.EQ.155) THEN IF(BVDEC2(XHEP).OR.BVHRD(XHEP).OR.BVHRD2(XHEP)) THEN C--FIND COLOUR CONNECTED PARTON JC = ANTC ID=IDHW(JC) JHEP = JC IF(BVDEC2(JHEP)) THEN ANTC=JC GOTO 300 ENDIF IF (ID.EQ.449) THEN ID=IDHW(XHEP) IF(IHEP.EQ.NHEP+1) ID = 401 C--SPECIAL FOR GLUINO DECAYS CALL HWBRC1(JC,ID,JHEP,.TRUE.,IFGO) IF(IFGO) GOTO 999 ELSE IF(IDHW(JDAHEP(1,JHEP)).EQ.449) THEN JC=JDAHEP(1,JHEP) ELSE JC=JDAHEP(2,JHEP) ENDIF ENDIF C--SEARCH IN JET CALL HWBRC2(COLP,XHEP,JC,.TRUE.,BVVUSE,.FALSE.) ANTC = COLP IF(COLP.EQ.0) GOTO 300 IF(IHEP.LE.NHEP) THEN IF(JDAHEP(2,COLP).EQ.0) THEN JDAHEP(2,COLP) = JDAHEP(2,IHEP) ELSEIF(JMOHEP(2,JDAHEP(2,COLP)).NE.COLP) THEN JDAHEP(2,COLP) = JDAHEP(2,IHEP) ENDIF ELSEIF(IHEP.GT.NHEP.AND. & ((BVHRD(XHEP).AND.ACOLRD(JDAHEP(1,XHEP)).AND. & IDHW(JDAHEP(2,XHEP)).EQ.449). & OR.(BVHRD2(XHEP).AND.ACOLRD(JDAHEP(2,XHEP)))).AND. & ACOLRD(IDHW(COLP)).AND.JDAHEP(2,COLP).EQ.0) THEN JDAHEP(2,COLP) = IHEP ENDIF ENDIF ENDIF 300 CONTINUE IF(IHEP.NE.NHEP+1.AND.IHEP.NE.1) THEN IF(JMOHEP(2,IHEP).NE.ANTC.AND.ANTC.NE.0) JMOHEP(2,IHEP)=ANTC ELSEIF(IHEP.GT.NHEP) THEN IF(HRDCOL(1,1).NE.ANTC.AND.ANTC.NE.0) HRDCOL(1,1)=ANTC IF(ANTC.EQ.0) GOTO 310 IF(JDAHEP(2,ANTC).EQ.IHEP) THEN IF(JDAHEP(2,JMOHEP(1,HRDCOL(1,2))).EQ.JDAHEP(2,HRDCOL(1,2)). & AND.JMOHEP(2,JDAHEP(2,HRDCOL(1,2))).EQ.JMOHEP(1,HRDCOL(1,2))) & THEN JDAHEP(2,ANTC) = JMOHEP(2,HRDCOL(1,2)) ELSE JDAHEP(2,ANTC) = JMOHEP(1,HRDCOL(1,2)) ENDIF ELSEIF(JMOHEP(2,ANTC).EQ.IHEP) THEN JMOHEP(2,ANTC) = JMOHEP(1,HRDCOL(1,2)) ENDIF ENDIF 310 CONTINUE C--Update partons connected to decaying SUSY particle DO 400 IHEP=1,NHEP IST=ISTHEP(IHEP) C--LOOK FOR PARTONS CONNECTED TO A DECAYING SUSY PARTICLE IF (IST.LT.145.OR.IST.GT.152) GOTO 400 IF(JMOHEP(2,IHEP).EQ.0) GOTO 400 IF(ISTHEP(JMOHEP(2,IHEP)).EQ.155) THEN C--FIND THE COLOUR CONNECTED PARTON JC=JMOHEP(2,IHEP) ID=IDHW(JC) JHEP = JC IF(BVDEC2(JC).AND.IDHW(JC).NE.449) THEN IF(IDHW(IHEP).GE.7.AND.IDHW(IHEP).LE.12) & JMOHEP(2,IHEP)=JDAHEP(1,JC) GOTO 400 ENDIF IF (ID.EQ.449) THEN C--SPECIAL FOR GLUINO DECAYS ID=IDHW(IHEP) CALL HWBRC1(JC,ID,JHEP,.TRUE.,IFGO) IF(IFGO) GOTO 999 ELSE ID=IDHW(IHEP) IF(COLRD(ID).AND.IDHW(JDAHEP(1,JC)).EQ.449) THEN JC=JDAHEP(1,JHEP) ELSE JC=JDAHEP(2,JHEP) IF(IDHW(JHEP).EQ.6.AND.IDHW(JC).EQ.13) JC=JC-1 ENDIF ENDIF C--SEARCH IN JET CALL HWBRC2(COLP,IHEP,JC,.TRUE.,BVVUSE,.FALSE.) JMOHEP(2,IHEP) = COLP ENDIF 400 CONTINUE C--Update partons connected to decaying SUSY particle DO 500 IHEP=1,NHEP IST=ISTHEP(IHEP) C--LOOK FOR PARTONS CONNECTED TO A DECAYING SUSY PARTICLE IF (IST.LT.145.OR.IST.GT.152) GOTO 500 IF(JDAHEP(2,IHEP).EQ.0) GOTO 500 IF(ISTHEP(JDAHEP(2,IHEP)).EQ.155) THEN C--FIND THE COLOUR CONNECTED PARTON JC=JDAHEP(2,IHEP) ID=IDHW(JC) ID=IDHW(JC) IF (ID.EQ.449) THEN ID=IDHW(IHEP) C--SPECIAL FOR GLUINO DECAYS JHEP = JC CALL HWBRC1(JC,ID,JHEP,.FALSE.,IFGO) IF(IFGO) GOTO 999 ELSE IF(ACOLRD(IDHW(IHEP)).AND.IDHW(JDAHEP(1,JC)).EQ.449) THEN JC = JDAHEP(1,JC) ELSE JC=JDAHEP(2,JC) ENDIF ENDIF C--SEARCH IN THE JET CALL HWBRC2(COLP,IHEP,JC,.FALSE.,BVVUSE,.FALSE.) IF(COLP.NE.0) JDAHEP(2,IHEP) = COLP ENDIF 500 CONTINUE C--Flavour and anticolour connections in Rslash DO 610 IHEP=1,NHEP IST=ISTHEP(IHEP) IF(IST.LT.145.OR.IST.GT.152.OR.JDAHEP(2,IHEP).NE.0) GOTO 610 JD = 0 BVVUSE = .FALSE. JC = JMOHEP(1,IHEP) IF(IST.NE.152) JC = JMOHEP(1,JC) IF(JC.EQ.0) THEN CALL HWWARN('HWBRCN',51) GOTO 610 ENDIF C--For particles which came from a top decay IF(ABS(IDHEP(JMOHEP(1,JC))).EQ.6) THEN JD = JMOHEP(1,JMOHEP(1,JMOHEP(1,JC))) C--flavour connect to self if needed IF(JDAHEP(2,JMOHEP(1,JC)-1).EQ.JMOHEP(1,JC)) THEN JDAHEP(2,IHEP) = IHEP GOTO 610 ELSEIF(JDAHEP(2,JMOHEP(1,JC)-1).NE.0) THEN JDAHEP(2,IHEP) = JDAHEP(2,JMOHEP(1,JC)-1) GOTO 610 ELSE JC = JD ENDIF ENDIF C--Decide if this came from a BV decay IDM = JMOHEP(1,JC) IF(BVDEC1(IDM).OR.BVDEC2(IDM).OR.BVDEC3(IDM). & OR.BVHRD(IDM).OR.BVHRD2(IDM)) THEN C--Do BV piece IF(JDAHEP(2,JC).EQ.JMOHEP(1,JC)) THEN IF(IDHW(JMOHEP(1,JC)).EQ.449.AND. & JDAHEP(1,JMOHEP(1,JC)).EQ.JC) THEN JC = JDAHEP(2,JMOHEP(1,JC)-1) ELSE JC = JMOHEP(2,JMOHEP(1,JC)) ENDIF IF(ABS(IDHEP(JC)).LT.1000000) THEN IF(JDAHEP(1,JC).EQ.0) THEN JDAHEP(2,IHEP) = JC GOTO 610 ELSE GOTO 600 ENDIF ELSEIF(ABS(IDHEP(JC)).GT.1000000 & .AND.ISTHEP(JC).NE.155) THEN GOTO 610 ENDIF IF(ISTHEP(JC).EQ.155.AND.ACOLRD(IDHW(IHEP))) THEN JC = JDAHEP(1,JC) ELSE IF(ISTHEP(JC).EQ.155.AND.IDHW(JDAHEP(1,JC)).NE.449) THEN JC = JDAHEP(1,JC) ELSE JC = JDAHEP(2,JC) ENDIF ENDIF ELSE C--For the hard process IF(IDHW(IDM).EQ.15.AND.JC.EQ.JDAHEP(2,JMOHEP(1,JC))) THEN JDAHEP(2,IHEP) = JDAHEP(2,JC) GOTO 610 ELSEIF(IDHW(IDM).EQ.15.AND.IDHW(IHEP).NE.449) THEN JD=HRDCOL(1,1) IF(BVHRD(IDM).AND.IDHW(JDAHEP(2,IDM)).NE.449) THEN JC = JDAHEP(2,JC) GOTO 600 ELSEIF(JMOHEP(1,JDAHEP(2,JC)).EQ.JD) THEN JC=JDAHEP(2,JC) GOTO 600 ENDIF IF(JDAHEP(2,JC).EQ.8) JC = JD ELSE JD=JMOHEP(2,JMOHEP(1,JC)) ENDIF IF(COLRD(IDHW(IHEP)).AND..NOT.ACOLRD(IDHW(IHEP)).AND. & ABS(IDHEP(JD)).GT.1000000.AND.ISTHEP(JD).NE.155) THEN JDAHEP(2,IHEP) = JD IF(JDAHEP(2,JD).EQ.0) JDAHEP(2,JD) = IHEP ENDIF IF(ABS(IDHEP(JD)).GT.1000000 & .AND.ISTHEP(JD).NE.155) GOTO 610 IF(ISTHEP(JC).EQ.149) THEN JDAHEP(2,IHEP)=JC GOTO 610 ENDIF IF(ACOLRD(IDHW(IHEP)).AND.IDHW(JC).EQ.449.AND.BVDEC2(JC)) THEN JC = JDAHEP(1,JC) ELSE JC = JDAHEP(2,JC) ENDIF ENDIF C--SEARCH IN THE JET 600 CALL HWBRC2(COLP,IHEP,JC,.FALSE.,BVVUSE,.FALSE.) IF(COLP.NE.0) THEN IF(ABS(IDHEP(COLP)).EQ.6.AND.JDAHEP(1,COLP).NE.0) THEN IF(ISTHEP(COLP).EQ.155) THEN JC = JDAHEP(2,COLP) ELSE JC = JDAHEP(2,JDAHEP(2,COLP)) ENDIF GOTO 600 ENDIF JDAHEP(2,IHEP) = COLP ENDIF ELSE C--check if it came from a top IF(ABS(IDHEP(JC)).EQ.6) THEN C--start the analysis again JC = JMOHEP(1,IHEP) IF(IST.NE.152) JC = JMOHEP(1,JC) JC = JDAHEP(2,JC) IF(JC.EQ.0) THEN CALL HWWARN('HWBRCN',52) GOTO 610 ENDIF IF(ISTHEP(JC).EQ.155) THEN IF (IDHEP(JMOHEP(1,JC)).EQ.94) THEN C---DECAYED BEFORE HADRONIZING JHEP=JDAHEP(2,JC-1) IF (JHEP.EQ.0) GO TO 610 ID=IDHW(JHEP) IF (ISTHEP(JHEP).EQ.155) THEN C---SPECIAL FOR GLUINO DECAYS IF (ID.EQ.449) THEN CALL HWBRC1(JC,ID,JHEP,.TRUE.,IFGO) IF(IFGO) GOTO 999 ELSE JC=JDAHEP(2,JHEP) ENDIF ELSE IF(JMOHEP(2,JHEP).EQ.JC) JMOHEP(2,JHEP)=IHEP JDAHEP(2,IHEP) = JHEP GOTO 610 ENDIF ELSE JC=JDAHEP(2,JC-1) ENDIF ENDIF C--SEARCH IN JET CALL HWBRC2(COLP,IHEP,JC,.FALSE.,BVVUSE,.FALSE.) IF(COLP.NE.0) JDAHEP(2,IHEP) = COLP ELSE IF(ISTHEP(JMOHEP(1,JC)).EQ.155 & .AND.IDHW(JC).LE.6) THEN JDAHEP(2,IHEP) = JDAHEP(2,JMOHEP(1,JC)-1) IF(JDAHEP(2,IHEP).NE.0) GOTO 610 ENDIF CALL HWWARN('HWBRCN',100) GOTO 610 ENDIF ENDIF 610 CONTINUE 999 RETURN END CDECK ID>, HWBRC1. *CMZ :- -20/07/99 10:56:12 by Peter Richardson *-- Author : PeterRichardson C----------------------------------------------------------------------- SUBROUTINE HWBRC1(JC,ID,JHEP,COL,IFGO) C----------------------------------------------------------------------- C--Function to find the right daugther of a decaying gluino C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER ID,JHEP,KC,JC LOGICAL COL,IFGO C---N.B. WILL NEED MODS WHEN SUSY PARTICLES CAN SHOWER C--Rparity take the first daughther IFGO = .FALSE. IF(IDHW(JDAHEP(1,JHEP)).LE.12.AND.IDHW(JDAHEP(1,JHEP)+1).LE.12 & .AND.IDHW(JDAHEP(2,JHEP)).LE.12) THEN KC = JDAHEP(1,JHEP) GOTO 20 ELSEIF ((COL.AND.(ID.EQ.449.OR.ID.EQ.13)).OR. & (ID.GE.401.AND.ID.LE.406).OR. & (ID.GE.413.AND.ID.LE.418).OR.ID.LE.6.OR. & (ID.GE.115.AND.ID.LE.120)) THEN C---LOOK FOR ANTI(S)QUARK OR GLUON DO KC=JDAHEP(1,JHEP),JDAHEP(2,JHEP) ID=IDHW(KC) IF ((ID.GE.7.AND.ID.LE.13).OR.(ID.GE.407.AND.ID.LE.412).OR. & (ID.GE.419.AND.ID.LE.424)) GOTO 20 ENDDO ELSE C---LOOK FOR (S)QUARK OR GLUON DO KC=JDAHEP(1,JHEP),JDAHEP(2,JHEP) ID=IDHW(KC) IF (ID.LE. 6.OR. ID.EQ. 13.OR.(ID.GE.401.AND.ID.LE.406).OR. & (ID.GE.413.AND.ID.LE.418)) GOTO 20 ENDDO ENDIF C---COULDNT FIND ONE CALL HWWARN('HWBRC1',100) IFGO = .TRUE. RETURN 20 JC=KC END CDECK ID>, HWBRC2. *CMZ :- -20/07/99 10:56:12 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWBRC2(COLP,IHEP,JC,CON,BVVUSE,BVVHRD) C----------------------------------------------------------------------- C--Function to search in the jet for the particle C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER JC,JD,QHEP,LHEP,IHEP,JHEP,IDM,NCOUNT,ID,IP,IDM2,COLP LOGICAL CON,BVVUSE,FLA,AFLA,BVVHRD FLA(IP) = (IP.LE.6.OR.(IP.GE.115.AND.IP.LE.120). & OR.(IP.GE.401.AND.IP.LE.406). & OR.(IP.GE.413.AND.IP.LE.418)) AFLA(IP) = ((IP.LE.12.AND.IP.GE.7).OR.(IP.GE.109.AND.IP.LE.114). & OR.(IP.GE.407.AND.IP.LE.412). & OR.(IP.GE.419.AND.IP.LE.424)) ID = IDHW(IHEP) COLP = 0 C--begining and end of jet IF(JDAHEP(1,JC).NE.0) THEN JC=JDAHEP(1,JC) JD=JDAHEP(2,JC) ELSE COLP = JC RETURN ENDIF IF (JD.LT.JC) JD=JC LHEP=0 IF(CON) THEN C--SEARCH FOR A COLOUR PARTNER DO 110 JHEP=JC,JD IDM = IDHW(JHEP) IF (ISTHEP(JHEP).LT.145.OR.ISTHEP(JHEP).GT.152) GOTO 110 IF(AFLA(ID).AND.IDM.EQ.13) GOTO 110 IF (JDAHEP(2,JHEP).EQ.IHEP) LHEP=JHEP IF ((BVVUSE.AND.JMOHEP(2,JHEP).NE.0).OR. & (.NOT.BVVUSE.AND.JDAHEP(2,JHEP).NE.0)) GOTO 110 IF(BVVUSE.AND.ABS(IDHEP(JHEP)).GT.1000000) THEN IF(BVVHRD.AND.AFLA(ID)) THEN CONTINUE ELSE RETURN ENDIF ENDIF IF(BVVUSE.AND.( & ((FLA(ID).OR.ID.EQ.13.OR.ID.EQ.449).AND.AFLA(IDM)). & OR.(AFLA(ID).AND.(FLA(IDM).OR.IDM.EQ.13.OR.IDM.EQ.449)))) & GOTO 110 IF(AFLA(ID).AND.(IDM.EQ.59.OR.IDM.EQ.449.OR.IDM.EQ.13)) GOTO 110 C---JOIN IHEP AND JHEP COLP=JHEP IF(BVVUSE.OR.(ID.GE.7.AND.ID.LE.12. & AND.((IDM.GE.7.AND.IDM.LE.12)))) RETURN IF(IHEP.NE.HRDCOL(1,2).AND. & (((FLA(ID).OR.ID.EQ.13.OR.ID.EQ.449.OR.ID.EQ.59) & .AND.(AFLA(IDM).OR.IDM.EQ.13.OR.IDM.EQ.449.OR.IDM.EQ.59)) & .OR.(AFLA(ID).AND.(FLA(IDM).OR.IDM.EQ.59)))) & JDAHEP(2,JHEP)=IHEP RETURN 110 CONTINUE IF (LHEP.NE.0) COLP=LHEP C--Additional Baryon number violating piece IF(COLP.EQ.0) THEN IDM2= IDHW(JC) IF(JMOHEP(1,JC).LT.6) THEN IF(IDM2.LE.6) THEN IDM2= IDM2+6 ELSEIF(IDM2.GT.6) THEN IDM2=IDM2-6 ENDIF ENDIF IF(IHEP.EQ.HRDCOL(1,2).OR. & ((FLA(ID).OR.ID.EQ.13.OR.ID.EQ.449.OR.ID.EQ.15.OR.ID.EQ.59) & .AND.(AFLA(IDM2).OR.IDM2.EQ.13.OR.IDM2.EQ.13))) THEN QHEP = JD+1 12 QHEP = QHEP-1 IF(IDHEP(QHEP).EQ.0) GOTO 12 IF(IDHW(QHEP).EQ.59) THEN IF(JC.EQ.JD.AND.IDHW(JMOHEP(1,QHEP)).EQ.59) THEN COLP = IHEP RETURN ELSE GOTO 12 ENDIF ENDIF NCOUNT = 0 11 IF(JDAHEP(2,QHEP).NE.0) THEN IF(JMOHEP(2,JDAHEP(2,QHEP)).EQ.QHEP.AND. & JDAHEP(2,QHEP).NE.QHEP) THEN IF(JDAHEP(2,QHEP).GE.JC.AND.JDAHEP(2,QHEP).LE.JD) THEN QHEP = JDAHEP(2,QHEP) NCOUNT = NCOUNT+1 IF(NCOUNT.LT.NHEP) GOTO 11 ENDIF ENDIF ENDIF ELSE QHEP = JC 13 QHEP = QHEP+1 IF(IDHEP(QHEP).EQ.0) GOTO 13 IF(IDHW(QHEP).EQ.59) THEN IF(JC.EQ.JD.AND.IDHW(JMOHEP(1,QHEP)).EQ.59) THEN COLP = IHEP RETURN ELSE GOTO 13 ENDIF ENDIF NCOUNT = 0 9 IF(JMOHEP(2,QHEP).NE.0) THEN IF(JDAHEP(2,JMOHEP(2,QHEP)).EQ.QHEP.AND. & JMOHEP(2,QHEP).NE.QHEP) THEN IF(JMOHEP(2,QHEP).GE.JC.AND.JMOHEP(2,QHEP).LE.JD) THEN QHEP = JMOHEP(2,QHEP) NCOUNT = NCOUNT+1 IF(NCOUNT.LT.NHEP) GOTO 9 ENDIF ENDIF ENDIF ENDIF IF(ABS(IDHEP(QHEP)).LT.1000000) COLP=QHEP ENDIF ELSE C--Search for an anticolour partner DO 210 JHEP=JC,JD IF (ISTHEP(JHEP).LT.145.OR.ISTHEP(JHEP).GT.152) GOTO 210 IF (JMOHEP(2,JHEP).EQ.IHEP) LHEP=JHEP IF (JMOHEP(2,JHEP).NE.0) GOTO 210 C---JOIN IHEP AND JHEP COLP=JHEP RETURN 210 CONTINUE IF (LHEP.NE.0) COLP=LHEP C--New piece IF(COLP.EQ.0) THEN IDM2=IDHW(JC) IF(JMOHEP(1,JC).LT.6) THEN IF(IDM2.LE.6) THEN IDM2= IDM2+6 ELSEIF(IDM2.GT.6) THEN IDM2=IDM2-6 ENDIF ENDIF C--Additional Baryon number violating piece IF((FLA(ID).AND.AFLA(IDM2)).OR. & ((AFLA(ID).OR.ID.EQ.13.OR.ID.EQ.449.OR.ID.EQ.15.OR.ID.EQ.59) & .AND.(FLA(IDM2).OR.IDM2.EQ.13.OR.IDM2.EQ.449) & .AND..NOT.(IDHW(JMOHEP(1,JC)).EQ.13.AND. & IDHW(JMOHEP(1,JMOHEP(1,JC))).EQ.12.AND. & ISTHEP(JMOHEP(1,JMOHEP(1,JC))).EQ.155) & )) THEN C--special for gluino decay to gluon IF(ID.EQ.449.AND.IDHW(JMOHEP(1,JMOHEP(1,JC))).EQ.449.AND. & IDHW(JMOHEP(1,JC)).EQ.13) RETURN QHEP = JC 211 QHEP = QHEP+1 IF(IDHEP(QHEP).EQ.0) GOTO 211 IF(IDHW(QHEP).EQ.59) THEN IF(JC.EQ.JD.AND.IDHW(JMOHEP(1,QHEP)).EQ.59) THEN COLP = IHEP RETURN ELSE GOTO 211 ENDIF ENDIF NCOUNT = 0 209 IF(JMOHEP(2,QHEP).NE.0) THEN IF(JDAHEP(2,JMOHEP(2,QHEP)).EQ.QHEP.AND. & JMOHEP(2,QHEP).NE.QHEP) THEN IF(JMOHEP(2,QHEP).GE.JC.AND.JMOHEP(2,QHEP).LE.JD) THEN QHEP = JMOHEP(2,QHEP) NCOUNT = NCOUNT+1 IF(NCOUNT.LT.NHEP) GOTO 209 ENDIF ENDIF ENDIF IF(QHEP.NE.0) COLP=QHEP IF(JDAHEP(2,QHEP).EQ.0.AND.IHEP.NE.6) THEN IDM2= IDHW(QHEP) IF(FLA(IHEP).AND.FLA(QHEP).OR. & ((AFLA(IHEP).OR.ID.EQ.13.OR.ID.EQ.449).AND. & (AFLA(QHEP).OR.IDM2.EQ.13.OR.IDM2.EQ.449))) & JDAHEP(2,QHEP)=IHEP ENDIF ELSE QHEP = JD+1 220 QHEP = QHEP-1 IF(IDHEP(QHEP).EQ.0) GOTO 220 IF(IDHW(QHEP).EQ.59) THEN IF(JC.EQ.JD.AND.IDHW(JMOHEP(1,QHEP)).EQ.59) THEN COLP = IHEP RETURN ELSE GOTO 220 ENDIF ENDIF NCOUNT = 0 219 IF(JDAHEP(2,QHEP).NE.0) THEN IF(JMOHEP(2,JDAHEP(2,QHEP)).EQ.QHEP) THEN IF(JDAHEP(2,QHEP).GE.JC.AND.JDAHEP(2,QHEP).LE.JD) THEN QHEP = JDAHEP(2,QHEP) NCOUNT = NCOUNT+1 IF(NCOUNT.LT.200) GOTO 219 ENDIF ENDIF ENDIF IF(QHEP.NE.0) COLP=QHEP IDM2 = IDHW(QHEP) IF(JDAHEP(2,QHEP).EQ.0.AND. & (((AFLA(ID).OR.ID.EQ.13).AND.(AFLA(IDM2).OR.IDM2.EQ.13)).OR. & (FLA(ID).AND.FLA(IDM2)))) JDAHEP(2,QHEP)=IHEP ENDIF ENDIF ENDIF END CDECK ID>, HWBSPA. *CMZ :- -26/04/91 14.26.44 by Federico Carminati *-- Author : Ian Knowles C----------------------------------------------------------------------- SUBROUTINE HWBSPA C----------------------------------------------------------------------- C Constructs time-like 4-momenta & production vertices in space-like C jet started by parton no.2 interference partner 1 and spin density C DECPAR(2). RHOPAR(2) gives the jet spin density matrix. C See I.G. Knowles, Comp. Phys. Comm. 58 (90) 271. C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,DMIN,PT,EIKON,EISCR,EINUM,EIDEN1,EIDEN2, & WT,SPIN,Z1,Z2,TR,PRMAX,CX,SX,CAZ,ROHEP(3),RMAT(3,3),ZERO2(2) INTEGER IPAR,JPAR,KPAR,LPAR,MPAR,JSTR,LSTR,MSTR LOGICAL EICOR EXTERNAL HWRGEN SAVE ZERO2,DMIN DATA ZERO2,DMIN/2*0D0,1D-15/ IF (IERROR.NE.0) RETURN JPAR=2 KPAR=1 IF (NPAR.EQ.2) THEN CALL HWVZRO(2,RHOPAR(1,2)) RETURN ENDIF C Generate azimuthal angle of JPAR's branching using an M-function C Find the daughters of JPAR, with LPAR time-like 10 LPAR=JDAPAR(1,JPAR) IF (TMPAR(LPAR)) THEN MPAR=LPAR+1 ELSE MPAR=LPAR LPAR=MPAR+1 ENDIF C Soft correlations CALL HWUROT(PPAR(1,JPAR), ONE,ZERO,RMAT) CALL HWUROF(RMAT,PPAR(1,KPAR),ROHEP) PT=MAX(SQRT(ROHEP(1)*ROHEP(1)+ROHEP(2)*ROHEP(2)),DMIN) EIKON=1. EICOR=AZSOFT.AND.IDPAR(LPAR).EQ.13 IF (EICOR) THEN IF (ABS(PPAR(5,MPAR)).LT.DMIN) THEN EISCR=ONE ELSE EISCR=ONE-(PPAR(5,MPAR)/PPAR(4,MPAR))**2 & /MIN(PPAR(2,LPAR),PPAR(2,MPAR)) ENDIF EINUM=PPAR(4,KPAR)*PPAR(4,LPAR)*ABS(PPAR(2,LPAR)-PPAR(2,MPAR)) EIDEN1=PPAR(4,KPAR)*PPAR(4,LPAR)-ROHEP(3)*PPAR(3,LPAR) EIDEN2=PT*ABS(PPAR(1,LPAR)) EIKON=MAX(EISCR+EINUM/MAX(EIDEN1-EIDEN2,DMIN),ZERO) ENDIF C Spin correlations WT=ZERO SPIN=ONE IF (AZSPIN.AND.IDPAR(JPAR).EQ.13) THEN Z1=PPAR(4,JPAR)/PPAR(4,MPAR) Z2=ONE-Z1 IF (IDPAR(MPAR).EQ.13) THEN TR=Z1/Z2+Z2/Z1+Z1*Z2 ELSEIF (IDPAR(MPAR).LT.13) THEN TR=(ONE+Z2**2)/(TWO*Z1) ENDIF WT=Z2/(Z1*TR) ENDIF C Assign the azimuthal angle PRMAX=(1.+ABS(WT))*EIKON 50 CALL HWRAZM( ONE,CX,SX) CALL HWUROT(PPAR(1,JPAR),CX,SX,RMAT) C Determine the angle between the branching planes CALL HWUROF(RMAT,PPAR(1,KPAR),ROHEP) CAZ=ROHEP(1)/PT PHIPAR(1,JPAR)=2.*CAZ*CAZ-1. PHIPAR(2,JPAR)=2.*CAZ*ROHEP(2)/PT IF (EICOR) EIKON=MAX(EISCR+EINUM/MAX(EIDEN1-EIDEN2*CAZ,DMIN),ZERO) IF (AZSPIN) SPIN=1.+WT*(DECPAR(1,JPAR)*PHIPAR(1,JPAR) & +DECPAR(2,JPAR)*PHIPAR(2,JPAR)) IF (SPIN*EIKON.LT.HWRGEN(0)*PRMAX) GOTO 50 C Construct full 4-momentum of LPAR, sum P-trans of MPAR PPAR(2,LPAR)=ZERO PPAR(2,MPAR)=ZERO CALL HWUROB(RMAT,PPAR(1,LPAR),PPAR(1,LPAR)) CALL HWVDIF(2,PPAR(1,2),PPAR(1,LPAR),PPAR(1,2)) C Test for end of space-like branches IF (JDAPAR(1,MPAR).EQ.0) GOTO 60 C Generate new Decay matrix CALL HWBAZF(MPAR,JPAR,ZERO2,DECPAR(1,JPAR), & PHIPAR(1,JPAR),DECPAR(1,MPAR)) C Advance along the space-like branch JPAR=MPAR KPAR=LPAR GOTO 10 C Retreat along space-like line C Assign initial spin density matrix 60 CONTINUE CALL HWVEQU(2,ZERO2,RHOPAR(1,MPAR)) CALL HWUMAS(PPAR(1,2)) CALL HWVZRO(4,VPAR(1,MPAR)) JSTR=JPAR LSTR=LPAR MSTR=MPAR 70 JPAR=JSTR LPAR=LSTR MPAR=MSTR CALL HWVEQU(4,VPAR(1,MPAR),VPAR(1,LPAR)) IF (MPAR.EQ.2) RETURN C Construct spin density matrix for time-like branch CALL HWBAZF(MPAR,JPAR,RHOPAR(1,MPAR),PHIPAR(1,JPAR), & DECPAR(1,JPAR),RHOPAR(1,LPAR)) C Evolve time-like side branch CALL HWBTIM(LPAR,MPAR) C Construct spin density matrix for space-like branch CALL HWBAZF(MPAR,JPAR,PHIPAR(1,JPAR),RHOPAR(1,MPAR), & DECPAR(1,LPAR),RHOPAR(1,JPAR)) C Assign production vertex to J CALL HWVDIF(4,PPAR(1,MPAR),PPAR(1,LPAR),PPAR(1,JPAR)) CALL HWUDKL(IDPAR(JPAR),PPAR(1,JPAR),VPAR(1,JPAR)) CALL HWVSUM(4,VPAR(1,MPAR),VPAR(1,JPAR),VPAR(1,JPAR)) C Find parent and partner of MPAR MPAR=JPAR JPAR=JMOPAR(1,MPAR) C BRW modified here 19/06/01 to avoid compiler-dependent bug C (overwriting of JPAR etc.) IPAR=MPAR+1 KPAR=JMOPAR(1,IPAR) IF (JPAR.EQ.KPAR) THEN LPAR=MPAR+1 ELSE LPAR=MPAR-1 ENDIF JSTR=JPAR LSTR=LPAR MSTR=MPAR GOTO 70 END CDECK ID>, HWBSPN. *CMZ :- -26/04/91 11.11.54 by Bryan Webber *-- Author : Ian Knowles C----------------------------------------------------------------------- SUBROUTINE HWBSPN C----------------------------------------------------------------------- C Constructs appropriate spin density/decay matrix for parton C in hard subprocess, otherwise zero. Assignments based upon C Comp. Phys. Comm. 58 (1990) 271. C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION C,V12,V23,V13,TR,C1,C2,C3,R1(2),R2(2) INTEGER IST SAVE R1,R2,V12 IF (IERROR.NE.0) RETURN IST=MOD(ISTHEP(NEVPAR),10) C Assumed partons processed in the order IST=1,2,3,4 IF (IPROC.GE.100.AND.IPROC.LE.116) THEN C An e+e- ---> qqbar g event IF (IDPAR(2).EQ.13) THEN RHOPAR(1,2)=GPOLN RHOPAR(2,2)=0. RETURN ENDIF ELSEIF (IPRO.EQ.15.OR.IPRO.EQ.17) THEN IF (IHPRO.EQ. 7.OR.IHPRO.EQ. 8.OR. & IHPRO.EQ.10.OR.IHPRO.EQ.11.OR. & IHPRO.EQ.15.OR.IHPRO.EQ.16.OR. & (IHPRO.GE.21.AND.IHPRO.LE.31)) THEN C A hard 2 --- > 2 QCD subprocess involving gluons IF (IST.EQ.2) THEN CALL HWVEQU(2,RHOPAR(1,2),R1(1)) C=GCOEF(2)/GCOEF(1) DECPAR(1,2)=C*R1(1) DECPAR(2,2)=C*R1(2) RETURN ELSEIF (IST.EQ.3) THEN CALL HWVEQU(2,RHOPAR(1,2),R2(1)) V12=R1(1)*R2(1)+R1(2)*R2(2) TR=1./(GCOEF(1)+GCOEF(2)*V12) RHOPAR(1,2)= (GCOEF(3)*R1(1)+GCOEF(4)*R2(1))*TR RHOPAR(2,2)=-(GCOEF(3)*R1(2)+GCOEF(4)*R2(2))*TR RETURN ELSEIF (IST.EQ.4) THEN V13=R1(1)*DECPAR(1,2)+R1(2)*DECPAR(2,2) V23=R2(1)*DECPAR(1,2)+R2(2)*DECPAR(2,2) TR=1./(GCOEF(1)+GCOEF(2)*V12+GCOEF(3)*V13+GCOEF(4)*V23) C1=(GCOEF(2)+GCOEF(5))*TR C2=(GCOEF(3)+GCOEF(6))*TR C3=(GCOEF(4)+GCOEF(6))*TR RHOPAR(1,2)=C1*DECPAR(1,2)+C2*R2(1)+C3*R1(1) RHOPAR(2,2)=C1*DECPAR(2,2)-C2*R1(2)-C3*R2(2) RETURN ENDIF ENDIF ELSEIF ((IPRO.EQ.16).OR.(IPRO.EQ.36)) THEN C A gluon fusion ---> Higgs event IF (IST.EQ.2) THEN IF (IHIGGS.NE.4) THEN DECPAR(1,2)=RHOPAR(1,2) DECPAR(2,2)=-RHOPAR(2,2) ELSE DECPAR(1,2)=-RHOPAR(1,2) DECPAR(2,2)=RHOPAR(2,2) END IF RETURN ENDIF ELSEIF (IPRO.EQ.42) THEN C A gluon fusion (or qq-bar annihilation) ---> graviton production event IF (IST.EQ.2) THEN DECPAR(1,2)=RHOPAR(1,2) DECPAR(2,2)=RHOPAR(2,2) RETURN ENDIF ENDIF CALL HWVZRO(2,RHOPAR(1,2)) CALL HWVZRO(2,DECPAR(1,2)) END CDECK ID>, HWBSU1. *CMZ :- -13/07/92 20.15.54 by Mike Seymour *-- Author : Bryan Webber, modified by Mike Seymour C----------------------------------------------------------------------- FUNCTION HWBSU1(ZLOG) C----------------------------------------------------------------------- C Z TIMES THE INTEGRAND IN EXPONENT OF QUARK SUDAKOV FORM FACTOR. C HWBSU1 IS FOR UPPER PART OF Z INTEGRATION REGION C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWBSU1,HWBSUL,Z,ZLOG,U EXTERNAL HWBSUL Z=EXP(ZLOG) U=1.-Z HWBSU1=HWBSUL(Z)*(1.+U*U) END CDECK ID>, HWBSU2. *CMZ :- -13/07/92 20.15.54 by Mike Seymour *-- Author : Bryan Webber, modified by Mike Seymour C----------------------------------------------------------------------- FUNCTION HWBSU2(Z) C----------------------------------------------------------------------- C INTEGRAND IN EXPONENT OF QUARK SUDAKOV FORM FACTOR. C HWBSU2 IS FOR LOWER PART OF Z INTEGRATION REGION C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWBSU2,HWBSUL,Z,U EXTERNAL HWBSUL U=1.-Z HWBSU2=HWBSUL(Z)*(1.+Z*Z)/U END CDECK ID>, HWBSUD. *CMZ :- -14/07/92 13.28.23 by Mike Seymour *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWBSUD C----------------------------------------------------------------------- C COMPUTES (OR READS) TABLES OF SUDAKOV FORM FACTORS C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWUGAU,HWBVMC,HWBSUG,HWBSU1,HWBSU2,G1,G2,QRAT, & QLAM,POWER,AFAC,QMIN,QFAC,QNOW,ZMIN,ZMAX,Q1,QCOLD,VGOLD,VQOLD, & RMOLD(6),ACOLD,ZLO,ZHI INTEGER IQ,IS,L1,L2,L,LL,I,INOLD,NQOLD,NSOLD,NCOLD,NFOLD,SDOLD EXTERNAL HWUGAU,HWBVMC,HWBSUG,HWBSU1,HWBSU2 SAVE NQOLD,NSOLD,NCOLD,NFOLD,SDOLD,QCOLD,VGOLD,VQOLD,RMOLD,ACOLD, & INOLD COMMON/HWSINT/QRAT,QLAM IF (LRSUD.EQ.0) THEN POWER=1./FLOAT(NQEV-1) AFAC=6.*CAFAC/BETAF QMIN=QG+QG QFAC=(1.1*QLIM/QMIN)**POWER SUD(1,1)=1. QEV(1,1)=QMIN C--IS=1 FOR GLUON->GLUON+GLUON FORM FACTOR DO 10 IQ=2,NQEV QNOW=QFAC*QEV(IQ-1,1) QLAM=QNOW/QCDL3 ZMIN=QG/QNOW QRAT=1./ZMIN G1=0 DO 5 I=3,6 ZLO=ZMIN ZHI=HALF IF (I.NE.6) ZLO=MAX(ZLO,QG/RMASS(I+1)) IF (I.NE.3) ZHI=MIN(ZHI,QG/RMASS(I)) IF (ZHI.GT.ZLO) G1=G1+HWUGAU(HWBSUG,LOG(ZLO),LOG(ZHI),ACCUR) 5 CONTINUE SUD(IQ,1)=EXP(AFAC*G1) 10 QEV(IQ,1)=QNOW AFAC=3.*CFFAC/BETAF C--QUARK FORM FACTORS. C--IS=2,3,4,5,6,7 FOR U/D,S,C,B,T,V DO 15 IS=2,NSUD Q1=HWBVMC(IS) IF (IS.EQ.7) Q1=HWBVMC(209) QMIN=Q1+QG IF (QMIN.GT.QLIM) GOTO 15 QFAC=(1.1*QLIM/QMIN)**POWER SUD(1,IS)=1. QEV(1,IS)=QMIN DO 14 IQ=2,NQEV QNOW=QFAC*QEV(IQ-1,IS) QLAM=QNOW/QCDL3 ZMIN=QG/QNOW QRAT=1./ZMIN ZMAX=QG/QMIN G1=0 DO 12 I=3,6 ZLO=ZMIN ZHI=ZMAX IF (I.NE.6) ZLO=MAX(ZLO,QG/RMASS(I+1)) IF (I.NE.3) ZHI=MIN(ZHI,QG/RMASS(I)) IF (ZHI.GT.ZLO) G1=G1+HWUGAU(HWBSU1,LOG(ZLO),LOG(ZHI),ACCUR) 12 CONTINUE ZMIN=Q1/QNOW QRAT=1./ZMIN ZMAX=Q1/QMIN G2=0 DO 13 I=3,6 ZLO=ZMIN ZHI=ZMAX IF (I.NE.6) ZLO=MAX(ZLO,Q1/RMASS(I+1)) IF (I.NE.3) ZHI=MIN(ZHI,Q1/RMASS(I)) IF (ZHI.GT.ZLO) G2=G2+HWUGAU(HWBSU2,ZLO,ZHI,ACCUR) 13 CONTINUE SUD(IQ,IS)=EXP(AFAC*(G1+G2)) 14 QEV(IQ,IS)=QNOW 15 CONTINUE QCOLD=QCDLAM VGOLD=VGCUT VQOLD=VQCUT ACOLD=ACCUR INOLD=INTER NQOLD=NQEV NSOLD=NSUD NCOLD=NCOLO NFOLD=NFLAV SDOLD=SUDORD DO 16 IS=1,NSUD 16 RMOLD(IS)=RMASS(IS) ELSE IF (LRSUD.GT.0) THEN IF (IPRINT.NE.0) WRITE (6,17) LRSUD 17 FORMAT(/10X,'READING SUDAKOV TABLE ON UNIT',I4) OPEN(UNIT=LRSUD,FORM='UNFORMATTED',STATUS='UNKNOWN') READ(UNIT=LRSUD) QCOLD,VGOLD,VQOLD,RMOLD, & ACOLD,QEV,SUD,INOLD,NQOLD,NSOLD,NCOLD,NFOLD,SDOLD CLOSE(UNIT=LRSUD) ENDIF C---CHECK THAT RELEVANT PARAMETERS ARE UNCHANGED IF (QCDLAM.NE.QCOLD) CALL HWWARN('HWBSUD',501) IF (VGCUT .NE.VGOLD) CALL HWWARN('HWBSUD',502) IF (VQCUT .NE.VQOLD) CALL HWWARN('HWBSUD',503) IF (ACCUR .NE.ACOLD) CALL HWWARN('HWBSUD',504) IF (INTER .NE.INOLD) CALL HWWARN('HWBSUD',505) IF (NQEV .NE.NQOLD) CALL HWWARN('HWBSUD',506) IF (NSUD .NE.NSOLD) CALL HWWARN('HWBSUD',507) IF (NCOLO .NE.NCOLD) CALL HWWARN('HWBSUD',508) IF (NFLAV .NE.NFOLD) CALL HWWARN('HWBSUD',509) IF (SUDORD.NE.SDOLD) CALL HWWARN('HWBSUD',510) C---CHECK MASSES AND THAT TABLES ARE BIG ENOUGH FOR THIS RUN DO 18 IS=1,NSUD IF (RMASS(IS).NE.RMOLD(IS)) & CALL HWWARN('HWBSUD',510+IS) IF (QEV(NQEV,IS).LT.QLIM.AND.HWBVMC(IS)+QG.LT.QLIM) & CALL HWWARN('HWBSUD',500) 18 CONTINUE ENDIF IF (LWSUD.GT.0) THEN IF (IPRINT.NE.0) WRITE (6,19) LWSUD 19 FORMAT(/10X,'WRITING SUDAKOV TABLE ON UNIT',I4) OPEN (UNIT=LWSUD,FORM='UNFORMATTED',STATUS='UNKNOWN') WRITE(UNIT=LWSUD) QCDLAM,VGCUT,VQCUT,(RMASS(I),I=1,6), & ACCUR,QEV,SUD,INTER,NQEV,NSUD,NCOLO,NFLAV,SUDORD CLOSE(UNIT=LWSUD) ENDIF IF (IPRINT.GT.2) THEN C--PRINT EXTRACTS FROM TABLES OF FORM FACTORS DO 40 IS=1,NSUD WRITE(6,20) IS,NQEV 20 FORMAT(1H1//10X,'EXTRACT FROM TABLE OF SUDAKOV FORM FACTOR NO.', & I2,' (',I5,' ACTUAL ENTRIES)'//10X,'SUD IS PROBABILITY THAT', & ' PARTON WITH GIVEN UPPER LIMIT ON Q WILL REACH THRESHOLD', & ' WITHOUT BRANCHING'///2X,8(' Q SUD ')/) L2=NQEV/8 L1=L2/32 IF (L1.LT.1) L1=1 DO 40 L=L1,L2,L1 LL=L+7*L2 WRITE(6,30) (QEV(I,IS),SUD(I,IS),I=L,LL,L2) 30 FORMAT(2X,8(F9.2,F7.4)) 40 CONTINUE WRITE(6,50) 50 FORMAT(1H1) ENDIF END CDECK ID>, HWBSUG. *CMZ :- -13/07/92 20.15.54 by Mike Seymour *-- Author : Bryan Webber, modified by Mike Seymour C----------------------------------------------------------------------- FUNCTION HWBSUG(ZLOG) C----------------------------------------------------------------------- C Z TIMES INTEGRAND IN EXPONENT OF GLUON SUDAKOV FORM FACTOR C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWBSUG,HWBSUL,Z,ZLOG,W EXTERNAL HWBSUL Z=EXP(ZLOG) W=Z*(1.-Z) HWBSUG=HWBSUL(Z)*(W-2.+1./W)*Z END CDECK ID>, HWBSUL. *CMZ :- -13/07/92 20.15.54 by Mike Seymour *-- Author : Mike Seymour C----------------------------------------------------------------------- FUNCTION HWBSUL(Z) C----------------------------------------------------------------------- C LOGARITHMIC PART OF INTEGRAND IN EXPONENT OF SUDAKOV FORM FACTOR. C THE SECOND ORDER ALPHAS CASE COMES FROM CONVERTING INTEGRAL OVER C Q^2 INTO ONE OVER ALPHAS, WITH FLAVOUR THRESHOLDS. C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWBSUL,HWUALF,Z,QRAT,QLAM,U,AL,BL,QNOW,QMIN, & BET(6),BEP(6),MUMI(6),MUMA(6),ALMI(6),ALMA(6),FINT(6),ALFINT, & MUMIN,MUMAX,ALMIN,ALMAX INTEGER NF LOGICAL FIRST EXTERNAL HWUALF SAVE FIRST,BET,BEP,MUMI,MUMA COMMON/HWSINT/QRAT,QLAM DATA FIRST/.TRUE./ ALFINT(AL,BL)=1/BET(NF)* & LOG(BL/(AL*(1+BEP(NF)*BL))*(1+BEP(NF)*AL)) HWBSUL=0 U=1.-Z IF (SUDORD.EQ.1) THEN AL=LOG(QRAT*Z) BL=LOG(QLAM*U*Z) HWBSUL=LOG(1.-AL/BL) ELSE IF (FIRST) THEN DO 10 NF=3,6 BET(NF)=(11*CAFAC-2*NF)/(12*PIFAC) BEP(NF)=(17*CAFAC**2-(5*CAFAC+3*CFFAC)*NF)/(24*PIFAC**2) & /BET(NF) IF (NF.EQ.3) THEN MUMI(3)=0 ALMI(3)=1D30 ELSE MUMI(NF)=RMASS(NF) ALMI(NF)=HWUALF(1,MUMI(NF)) ENDIF IF (NF.EQ.6) THEN MUMA(NF)=1D30 ALMA(NF)=0 ELSE MUMA(NF)=RMASS(NF+1) ALMA(NF)=HWUALF(1,MUMA(NF)) ENDIF IF (NF.NE.3.AND.NF.NE.6) FINT(NF)=ALFINT(ALMI(NF),ALMA(NF)) 10 CONTINUE FIRST=.FALSE. ENDIF QNOW=QLAM*QCDL3 QMIN=QNOW/QRAT MUMIN= U*QMIN MUMAX=Z*U*QNOW IF (MUMAX.LE.MUMIN) RETURN ALMIN=HWUALF(1,MUMIN) ALMAX=HWUALF(1,MUMAX) NF=3 20 IF (MUMIN.GT.MUMA(NF)) THEN NF=NF+1 GOTO 20 ENDIF IF (MUMAX.LT.MUMA(NF)) THEN HWBSUL=ALFINT(ALMIN,ALMAX) ELSE HWBSUL=ALFINT(ALMIN,ALMA(NF)) NF=NF+1 30 IF (MUMAX.GT.MUMA(NF)) THEN HWBSUL=HWBSUL+FINT(NF) NF=NF+1 GOTO 30 ENDIF HWBSUL=HWBSUL+ALFINT(ALMI(NF),ALMAX) ENDIF HWBSUL=HWBSUL*BET(5) ENDIF END CDECK ID>, HWBTIM. *CMZ :- -26/04/91 14.27.17 by Federico Carminati *-- Author : Ian Knowles C----------------------------------------------------------------------- SUBROUTINE HWBTIM(INITBR,INTERF) C----------------------------------------------------------------------- C Constructs full 4-momentum & production vertices in time-like jet C initiated by INITBR, interference partner INTERF and spin density C RHOPAR(INITBR). DECPAR(INITBR) returns jet's spin density matrix. C Includes azimuthal angular correlations between branching planes C due to spin (if AZSPIN) using the algorithm of Knowles & Collins. C Ses Nucl. Phys. B304 (1988) 794 & Comp. Phys. Comm. 58 (1990) 271. C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,DMIN,PT,EIKON,EINUM,EIDEN1,EIDEN2,EISCR, & WT,SPIN,Z1,Z2,PRMAX,CAZ,CX,SX,ROHEP(3),RMAT(3,3),ZERO2(2) INTEGER INITBR,INTERF,IPAR,JPAR,KPAR,LPAR,MPAR,NTRY,JOLD LOGICAL EICOR,SWAP EXTERNAL HWRGEN SAVE ZERO2,DMIN DATA ZERO2,DMIN/ZERO,ZERO,1.D-15/ IF (IERROR.NE.0) RETURN JPAR=INITBR KPAR=INTERF IF ((JDAPAR(1,JPAR).NE.0).OR.(IDPAR(JPAR).EQ.13)) GOTO 30 C No branching, assign decay matrix CALL HWVZRO(2,DECPAR(1,JPAR)) RETURN C Advance up the leader C Find the parent and partner of J 10 IPAR=JMOPAR(1,JPAR) KPAR=JPAR+1 C Generate new Rho IF (JMOPAR(1,KPAR).EQ.IPAR) THEN C Generate Rho' CALL HWBAZF(IPAR,JPAR,PHIPAR(1,IPAR),RHOPAR(1,IPAR), & ZERO2,RHOPAR(1,JPAR)) ELSE KPAR=JPAR-1 IF (JMOPAR(1,KPAR).NE.IPAR) THEN CALL HWWARN('HWBTIM',100) GOTO 999 ENDIF C Generate Rho'' CALL HWBAZF(IPAR,KPAR,RHOPAR(1,IPAR),PHIPAR(1,IPAR), & DECPAR(1,KPAR),RHOPAR(1,JPAR)) ENDIF C Generate azimuthal angle of J's branching 30 IF (JDAPAR(1,JPAR).EQ.0) THEN C Final state gluon CALL HWVZRO(2,DECPAR(1,JPAR)) IF (JPAR.EQ.INITBR) RETURN GOTO 70 ELSE C Assign an angle to a branching using an M-function C Find the daughters of J LPAR=JDAPAR(1,JPAR) MPAR=JDAPAR(2,JPAR) C Soft correlations CALL HWUROT(PPAR(1,JPAR), ONE,ZERO,RMAT) CALL HWUROF(RMAT,PPAR(1,KPAR),ROHEP) PT=MAX(SQRT(ROHEP(1)*ROHEP(1)+ROHEP(2)*ROHEP(2)),DMIN) EIKON=1. SWAP=.FALSE. EICOR=AZSOFT.AND.((IDPAR(LPAR).EQ.13).OR.(IDPAR(MPAR).EQ.13)) IF (EICOR) THEN C Rearrange s.t. LPAR is the (softest) gluon IF (IDPAR(MPAR).EQ.13) THEN IF (IDPAR(LPAR).NE.13.OR. & PPAR(4,MPAR).LT.PPAR(4,LPAR)) THEN SWAP=.TRUE. LPAR=MPAR MPAR=LPAR-1 ENDIF ENDIF EINUM=(PPAR(4,KPAR)*PPAR(4,LPAR)) & *ABS(PPAR(2,LPAR)-PPAR(2,MPAR)) EIDEN1=(PPAR(4,KPAR)*PPAR(4,LPAR))-ROHEP(3)*PPAR(3,LPAR) EIDEN2=PT*ABS(PPAR(1,LPAR)) IF (ABS(PPAR(2,MPAR)).LT.DMIN) THEN IF (ABS(PPAR(5,MPAR)).LT.DMIN) THEN EISCR=ONE ELSE CALL HWWARN('HWBTIM',102) GOTO 999 ENDIF ELSE EISCR=ONE-(PPAR(5,MPAR)/PPAR(4,MPAR))**2 & /MIN(PPAR(2,LPAR),PPAR(2,MPAR)) ENDIF EIKON=EISCR+EINUM/MAX(EIDEN1-EIDEN2,DMIN) ENDIF C Spin correlations WT=0. SPIN=1. IF (AZSPIN) THEN Z1=PPAR(4,LPAR)/PPAR(4,JPAR) Z2=1.-Z1 IF (IDPAR(JPAR).EQ.13.AND.IDPAR(LPAR).EQ.13) THEN WT=Z1*Z2/(Z1/Z2+Z2/Z1+Z1*Z2) ELSEIF (IDPAR(JPAR).EQ.13.AND.IDPAR(LPAR).LT.13) THEN WT=-2.*Z1*Z2/(Z1*Z1+Z2*Z2) ENDIF ENDIF C Assign the azimuthal angle PRMAX=(1.+ABS(WT))*EIKON NTRY=0 50 NTRY=NTRY+1 IF (NTRY.GT.NBTRY) THEN CALL HWWARN('HWBTIM',101) GOTO 999 ENDIF CALL HWRAZM( ONE,CX,SX) CALL HWUROT(PPAR(1,JPAR),CX,SX,RMAT) C Determine the angle between the branching planes CALL HWUROF(RMAT,PPAR(1,KPAR),ROHEP) CAZ=ROHEP(1)/PT PHIPAR(1,JPAR)=2.*CAZ*CAZ-1. PHIPAR(2,JPAR)=2.*CAZ*ROHEP(2)/PT IF (EICOR) EIKON=EISCR+EINUM/MAX(EIDEN1-EIDEN2*CAZ,DMIN) IF (AZSPIN) SPIN=1.+WT*(RHOPAR(1,JPAR)*PHIPAR(1,JPAR) & +RHOPAR(2,JPAR)*PHIPAR(2,JPAR)) IF (SPIN*EIKON.LT.HWRGEN(0)*PRMAX) GOTO 50 C Construct full 4-momentum of L and M JOLD=JPAR IF (SWAP) THEN PPAR(1,LPAR)=-PPAR(1,LPAR) PPAR(1,MPAR)=-PPAR(1,MPAR) JPAR=MPAR ELSE JPAR=LPAR ENDIF PPAR(2,LPAR)=0. CALL HWUROB(RMAT,PPAR(1,LPAR),PPAR(1,LPAR)) PPAR(2,MPAR)=0. CALL HWUROB(RMAT,PPAR(1,MPAR),PPAR(1,MPAR)) C Assign production vertex to L and M CALL HWUDKL(IDPAR(JOLD),PPAR(1,JOLD),VPAR(1,LPAR)) CALL HWVSUM(4,VPAR(1,JOLD),VPAR(1,LPAR),VPAR(1,LPAR)) CALL HWVEQU(4,VPAR(1,LPAR),VPAR(1,MPAR)) ENDIF 60 IF (JDAPAR(1,JPAR).NE.0) GOTO 10 C Assign decay matrix CALL HWVZRO(2,DECPAR(1,JPAR)) C Backtrack down the leader 70 IPAR=JMOPAR(1,JPAR) KPAR=JDAPAR(1,IPAR) IF (KPAR.EQ.JPAR) THEN C Develop the side branch JPAR=JDAPAR(2,IPAR) GOTO 60 ELSE C Construct decay matrix CALL HWBAZF(IPAR,KPAR,DECPAR(1,JPAR),DECPAR(1,KPAR), & PHIPAR(1,IPAR),DECPAR(1,IPAR)) ENDIF IF (IPAR.EQ.INITBR) RETURN JPAR=IPAR GOTO 70 999 RETURN END CDECK ID>, HWBTOP. *CMZ :- -31/03/00 17:54:05 by Peter Richardson *-- Author : Gennaro Corcella C----------------------------------------------------------------------- SUBROUTINE HWBTOP C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWBVMC,HWRGEN,HWUALF,HWUSQR,X(3),W, & X3MIN,X3MAX,X1MIN,X1MAX,QSCALE,GLUFAC,R(3,3),M(3), & E(3),AW,PTSQ,EM,EPS,MASDEP,A,B,C,GAMDEP,LAMBDA, & PW(5),PT(5),PW1(5),CS,SN,EPG,QQ,RR,CC INTEGER ID,ID3,IHEP,KHEP,WHEP,ICMF,K EXTERNAL HWBVMC,HWUALF,HWUSQR,HWRGEN LAMBDA(A,B,C)=(A**2+B**2+C**2-2*A*B-2*B*C-2*C*A)/(4*A) C---FIND AN UNTREATED CMF ICMF=0 DO 10 IHEP=1,NHEP C----FIND A DECAYING TOP QUARK 10 IF (ISTHEP(IHEP).EQ.155.AND.ISTHEP(JDAHEP(1,IHEP)).EQ.113 & .AND.(IDHW(IHEP).EQ.6.OR.IDHW(IHEP).EQ.12)) & ICMF=IHEP IF (ICMF.EQ.0) RETURN EM=PHEP(5,ICMF) X3MIN=2*GCUTME/EM C---GENERATE X(1),X(3) ACCORDING TO 1/((1-X(1))*X(3)**2) 100 CONTINUE C-----AW=(MW/MT)**2 AW=(PHEP(5,JDAHEP(1,ICMF))/EM)**2 C---CHOOSE X3 X3MAX=1-AW X(3)=X3MIN*X3MAX/(X3MIN+(X3MAX-X3MIN)*HWRGEN(0)) C--CC, QQ AND RR ARE THE VARIABLE DEFINED IN OUR PAPER C--IN ORDER TO SOLVE THE CUBIC EQUATION CC=(1-AW)**2/4 QQ=(AW**2-4*(1-X(3))*(2-CC-X(3))-2*AW*(3+2*X(3)))/3 & -((3+2*AW-4*X(3))**2)/9 RR=((3+2*AW-4*X(3))*(AW**2-4*(1-X(3))*(2-CC-X(3)) & -2*AW*(3+2*X(3)))-3*(AW*(4-AW)*(2-CC)+(1-CC) & *(2*(1-X(3))-AW)**2))/6-(ONE/27)*(3+2*AW-4*X(3))**3 C---CHOOSE X1 X1MAX=2*(-QQ**3)**(ONE/6)*COS(ACOS(RR/SQRT(-QQ**3))/3) & -(3+2*AW-4*X(3))/3 X1MIN=1-X(3)+(AW*X(3))/(1-X(3)) IF (X1MAX.GE.1.OR.X1MIN.GE.1.OR.X1MAX.LE.X1MIN) GOTO 100 X(1)=1-(1-X1MAX)*((1-X1MIN)/(1-X1MAX))**HWRGEN(1) C---CALCULATE WEIGHT W=((1+1/AW-2*AW)*((1-AW)*X(3)-(1-X(1))*(1-X(3))-X(3)**2) & +(1+1/(2*AW))*X(3)*(X(1)+X(3)-1)**2+2*X(3)**2*(1-X(1))) & *(1/X3MIN-1/X3MAX)*LOG((1-X1MIN)/(1-X1MAX)) C---QSCALE=DURHAM-LIKE TRANSVERSE MOMENTUM OF THE GLUON QSCALE=EM*HWUSQR(X(3)*(1-X(1))/(2-X(1)-X(3)-AW)) C---FACTOR FOR GLUON EMISSION ID=IDHW(JDAHEP(2,ICMF)) GLUFAC=0 IF (QSCALE.GT.HWBVMC(13)) GLUFAC=CFFAC*HWUALF(1,QSCALE) & /(PIFAC*(1-AW)*(1-2*AW+1/AW)) C---IN FRACTION GLUFAC*W OF EVENTS ADD A GLUON IF (GLUFAC*W.GT.HWRGEN(4)) THEN ID3=13 ELSE GOTO 1000 ENDIF C---CHECK INFRA-RED CUT-OFF FOR GLUON M(1)=PHEP(5,JDAHEP(1,ICMF)) M(2)=HWBVMC(ID) M(3)=HWBVMC(ID3) E(1)=HALF*EM*(X(1)+AW+(-M(2)**2-M(3)**2)/EM**2) E(3)=HALF*EM*X(3) E(2)=EM-E(1)-E(3) PTSQ=-LAMBDA(E(1)**2-M(1)**2,E(3)**2-M(3)**2, & E(2)**2-M(2)**2) IF (PTSQ.LE.0.OR.E(1).LE.M(1).OR.E(2).LE.M(2).OR.E(3).LE.M(3)) $ GOTO 1000 C---CALCULATE MASS-DEPENDENT SUPPRESSION EPS=(RMASS(ID)/EM)**2 EPG=(RMASS(ID3)/EM)**2 GAMDEP=(1-AW)*(1+1/AW-2*AW)/(SQRT(1+AW**2+EPS**2 & -2*AW-2*EPS-2*AW*EPS)*(1+EPS+(1-EPS)**2/AW-2*AW)) MASDEP=GAMDEP/(1-X(1))*((1+EPS+(1-EPS)**2/AW-2*AW) & *((1-AW+EPS)*X(3)*(1-X(1))-(1-X(1))**2*(1-X(3)) & -X(3)**2*(1-X(1)+EPS))+(1+(1+EPS)/(2*AW))*X(3) & *(1-X(1))*(X(1)+X(3)-1)**2+2*X(3)**2*(1-X(1))**2) IF (MASDEP.LT.HWRGEN(7)*((1+1/AW-2*AW)*((1-AW)*X(3) & -(1-X(1))*(1-X(3))-X(3)**2)+(1+1/(2*AW))*X(3) & *(X(1)+X(3)-1)**2+2*X(3)**2*(1-X(1)))) GOTO 1000 C---STORE OLD MOMENTA c---PT = TOP MOMENTUM, PW= W MOMENTUM CALL HWVEQU(5,PHEP(1,ICMF),PT) CALL HWVEQU(5,PHEP(1,JDAHEP(1,ICMF)),PW) C--------GET THE NON-EMITTING PARTON CMF DIRECTION CALL HWULOF(PHEP(1,ICMF),PW,PW) CALL HWRAZM(ONE,CS,SN) CALL HWUROT(PW,CS,SN,R) CALL HWUROF(R,PW,PW) CALL HWUMAS(PW) C---REORDER ENTRIES: IHEP=EMITTER, KHEP=EMITTED NHEP=NHEP+1 IHEP=JDAHEP(2,ICMF) WHEP=JDAHEP(1,ICMF) KHEP=NHEP C---SET UP MOMENTA IN TOP REST FRAME PHEP(1,ICMF)=0 PHEP(2,ICMF)=0 PHEP(3,ICMF)=0 PHEP(4,ICMF)=EM PHEP(5,ICMF)=EM PHEP(4,IHEP)=HALF*EM*(2-X(1)-X(3)+EPS-AW+EPG) PHEP(4,KHEP)=HALF*EM*X(3) PHEP(5,IHEP)=RMASS(ID) PHEP(5,KHEP)=RMASS(ID3) PHEP(3,KHEP)=HALF*EM*((X(1)+AW-EPS-EPG)*X(3)-2*(1+EPS-AW $ -EPG-(2+EPS+EPG-AW-X(1)-X(3))))/HWUSQR((X(1)+AW $ -EPS-EPG)**2-4*AW) PHEP(3,IHEP)=-PHEP(3,KHEP)-HALF*EM $ *HWUSQR((X(1)+AW-EPS-EPG)**2-4*AW) PHEP(2,IHEP)=0 PHEP(1,KHEP)=HWUSQR(PHEP(4,KHEP)**2-PHEP(5,KHEP)**2 $ -PHEP(3,KHEP)**2) PHEP(1,IHEP)=-PHEP(1,KHEP) PHEP(2,KHEP)=0 CALL HWVSUM(4,PHEP(1,IHEP),PHEP(1,KHEP),PW1) CALL HWVDIF(4,PHEP(1,ICMF),PW1,PW1) CALL HWUMAS(PW1) DO K=1,5 PHEP(K,WHEP)=PW1(K) ENDDO C---ORIENT IN CMF, THEN BOOST TO LAB CALL HWUROB(R,PHEP(1,ICMF),PHEP(1,ICMF)) CALL HWUROB(R,PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWUROB(R,PHEP(1,WHEP),PHEP(1,WHEP)) CALL HWUROB(R,PHEP(1,KHEP),PHEP(1,KHEP)) CALL HWULOB(PT,PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWULOB(PT,PHEP(1,KHEP),PHEP(1,KHEP)) CALL HWULOB(PT,PHEP(1,ICMF),PHEP(1,ICMF)) CALL HWULOB(PT,PHEP(1,WHEP),PHEP(1,WHEP)) C---STATUS AND COLOUR CONNECTION C--Bug fix 31/03/00 PR ISTHEP(KHEP)=114 IDHW(KHEP)=ID3 IDHEP(KHEP)=IDPDG(ID3) JMOHEP(1,KHEP)=ICMF JMOHEP(1,IHEP)=ICMF JDAHEP(1,KHEP)=0 JDAHEP(2,ICMF)=KHEP IF(IDHW(ICMF).EQ.6) THEN JDAHEP(2,IHEP)=ICMF JDAHEP(2,KHEP)=IHEP JMOHEP(2,IHEP)=KHEP JMOHEP(2,KHEP)=ICMF ELSE JDAHEP(2,IHEP) = KHEP JDAHEP(2,KHEP) = ICMF JMOHEP(2,IHEP) = ICMF JMOHEP(2,KHEP) = IHEP ENDIF C--End of Fix C--modification to allow photon radiation via photos in top decay 1000 IF(ITOPRD.EQ.1) CALL HWPHTP(ICMF) END CDECK ID>, HWBVMC. *CMZ :- -26/04/91 11.11.54 by Bryan Webber *-- Author : Bryan Webber C----------------------------------------------------------------------- FUNCTION HWBVMC(ID) C----------------------------------------------------------------------- C VIRTUAL MASS CUTOFF FOR PARTON TYPE ID C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWBVMC INTEGER ID IF (ID.EQ.13) THEN HWBVMC=RMASS(ID)+VGCUT ELSEIF (ID.LT.13) THEN HWBVMC=RMASS(ID)+VQCUT ELSEIF (ID.EQ.59) THEN HWBVMC=RMASS(ID)+VPCUT ELSE HWBVMC=RMASS(ID) ENDIF END CDECK ID>, HWCBCT. *CMZ :- -20/07/99 10:56:12 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWCBCT(JHEP,KHEP,THEP,PCL,SPLIT) C----------------------------------------------------------------------- C Subroutine to split a baryonic cluster containing two heavy quarks C Based on HWCCUT C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWUPCM,HWRGEN,HWVDOT,EMC,QM1,QM2,QM3,QM4, & PXY,PCX,PCY,RCM,PCL(5),AX(5),PA(5),PB(5),PC(5), & VCLUS(4),DQM,EMX,EMY,SKAPPA,RKAPPA,VTMP(4), & DELTM,PDIQUK(5),AY(5) INTEGER HWRINT,JHEP,KHEP,LHEP,MHEP,THEP,ID1,ID2,ID3,ID4,NTRY, & NTRYMX,J,IB LOGICAL SPLIT EXTERNAL HWUPCM,HWRGEN,HWVDOT PARAMETER(SKAPPA=1.,NTRYMX=100) IF(IERROR.NE.0) RETURN EMC=PCL(5) ID1=IDHW(JHEP) ID2=IDHW(KHEP) ID3=IDHW(THEP) QM1=RMASS(ID1) QM2=RMASS(ID2) QM3=RMASS(ID3) SPLIT = .FALSE. NTRY = 0 C Decide if cluster contains a b-(anti)quark IF (ID1.EQ.5.OR.ID1.EQ.11.OR.ID2.EQ.5.OR.ID2.EQ.11.OR. & ID3.EQ.5.OR.ID3.EQ.11) THEN IB=2 ELSE IB=1 ENDIF C-- Set the positon of the cluster to be that of the heavy quark CALL HWVEQU(4,VHEP(1,THEP),VCLUS) C--SPLIT THE BARYONIC CLUSTER INTO A HEAVY FLAVOUR MESON AND A HEAVY C--FLAVOUR BARYON PXY=EMC-QM1-QM2-QM3 20 NTRY=NTRY+1 IF(NTRY.GT.NTRYMX) RETURN 30 EMX=QM1+QM2+PXY*HWRGEN(0)**PSPLT(IB) EMY= QM3+PXY*HWRGEN(1)**PSPLT(IB) IF(EMX+EMY.GE.EMC) GOTO 30 C--PULL A LIGHT QUARK PAIR OUT OF THE VACUUM 40 ID4=HWRINT(1,3) IF(QWT(ID4).LT.HWRGEN(3)) GOTO 40 QM4=RMASS(ID4) C--Now combine particles 3 & 4 into a diquark C--If three also heavy this diquark doesn't exist in HERWIG C--just assume mass is sum of quark masses,as for other diquarks DQM=QM3+QM4 C--Now obtain the masses for the cluster splitting PCX=HWUPCM(EMX,QM1,DQM) IF(PCX.LT.ZERO) GOTO 20 PCY=HWUPCM(EMY,QM2,QM4) IF(PCY.LT.ZERO) GOTO 20 SPLIT=.TRUE. C--Now we've decided which light quark to pull out of the vacuum C--Find the direction of the second heavy quark CALL HWULOF(PCL,PHEP(1,THEP),AX) RCM=1./SQRT(HWVDOT(3,AX,AX)) CALL HWVSCA(3,RCM,AX,AX) C--Construct the new CoM momenta(collinear) PXY=HWUPCM(EMC,EMX,EMY) CALL HWVSCA(3,PXY,AX,PC) C--pc is momenta of Y cluster along 2nd quark dirn in cluster frame PC(4)=SQRT(PXY**2+EMY**2) PC(5)=EMY C--pa is momenta of 2nd quark in Y frame CALL HWVSCA(3,PCY,AX,PA) PA(4)=SQRT(PCY**2+QM3**2) PA(5)=QM3 C--pb is momenta of 2nd quark in cluster frame,pa now momenta of antiquark CALL HWULOB(PC,PA,PB) CALL HWVDIF(4,PC,PB,PA) PA(5)=QM4 LHEP=NHEP+1 MHEP=NHEP+2 C--boost these momenta back to lab frame CALL HWULOB(PCL,PB,PHEP(1,THEP)) CALL HWULOB(PCL,PA,PHEP(1,MHEP)) C--pc now becomes momenta of X cluster in cluster frame CALL HWVSCA(3,-ONE,PC,PC) PC(4)=EMC-PC(4) PC(5)=EMX C--find the dirn of the 1st heavy quark in the X frame C--transform to cluster frame CALL HWULOF(PCL,PHEP(1,JHEP),AY) C--transform to X-frame CALL HWULOF(PC,AY,AY) RCM=1./SQRT(HWVDOT(3,AY,AY)) CALL HWVSCA(3,RCM,AY,AY) C--pa now momenta of 1st havy quark along this dirn CALL HWVSCA(3,PCX,AY,PA) PA(4)=SQRT(PCX**2+QM1**2) PA(5)=QM1 C--pb now momenta of 1st heavy quark in cluster frame then to lab CALL HWULOB(PC,PA,PB) CALL HWULOB(PCL,PB,PHEP(1,JHEP)) C--now find the diquark momenta by momentum conservation DO 50 J=1,4 50 PDIQUK(J)=PCL(J)-PHEP(J,THEP)-PHEP(J,MHEP)-PHEP(J,JHEP) PDIQUK(5)=DQM C--Now obtain the quark momenta from the diquark DO 60 J=1,3 60 PA(J) = 0 PA(4) = QM2 PA(5) = QM2 CALL HWULOB(PDIQUK,PA,PHEP(1,KHEP)) CALL HWVDIF(4,PDIQUK,PHEP(1,KHEP),PHEP(1,LHEP)) C--Construct new vertex positions RKAPPA=GEV2MM/SKAPPA CALL HWVSCA(3,RKAPPA,AX,AX) DELTM=(EMX-EMY)*(EMX+EMY)/(TWO*EMC) CALL HWVSCA(3,DELTM,AX,VTMP) VTMP(4)=(HALF*EMC-PXY)*RKAPPA CALL HWULB4(PCL,VTMP,VTMP) CALL HWVSUM(4,VTMP,VCLUS,VHEP(1,LHEP)) CALL HWVEQU(4,VHEP(1,LHEP),VHEP(1,MHEP)) C--Relabel the colours of the quarks IDHEP(LHEP) = IDPDG(ID4) IDHEP(MHEP) = IDPDG(ID4) IF(IDHEP(JHEP).GT.0) THEN IDHW(LHEP) = ID4+6 IDHEP(LHEP) = -IDHEP(LHEP) IDHW(MHEP) = ID4 JDAHEP(2,LHEP) = JHEP JMOHEP(2,LHEP) = MHEP JMOHEP(2,MHEP) = JMOHEP(2,JHEP) JDAHEP(2,MHEP) = LHEP JMOHEP(2,JHEP) = LHEP ELSE IDHW(LHEP) = ID4 IDHW(MHEP) = ID4+6 IDHEP(MHEP) = -IDHEP(MHEP) JMOHEP(2,LHEP) = JHEP JDAHEP(2,MHEP) = JDAHEP(2,JHEP) JDAHEP(2,LHEP) = MHEP JMOHEP(2,MHEP) = LHEP JDAHEP(2,JHEP) = LHEP ENDIF ISTHEP(LHEP) = 151 ISTHEP(MHEP) = 151 JMOHEP(1,LHEP) = JMOHEP(1,KHEP) JDAHEP(1,LHEP) = 0 JMOHEP(1,MHEP) = JMOHEP(1,JHEP) JDAHEP(1,MHEP) = 0 NHEP = NHEP+2 END CDECK ID>, HWCBVI. *CMZ :- -12/12/01 14:59:58 by Peter Richardson *-- Author : Mark Gibbs, modified by Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWCBVI C----------------------------------------------------------------------- C FINDS UNPAIRED PARTONS AFTER BARYON-NUMBER VIOLATION C MODIFIED FOR RPARITY VIOLATING SUSY C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' COMMON/HWBVIC/NBV,IBV(18) DOUBLE PRECISION HWRGEN,PDQ(5) INTEGER NBV,IBV,JBV,KBV,LBV,IHEP,IP1,IP2,IP3,JP1,JP2,JP3, & HWCBVT,NBR,MBV,IQ1,IQ2,IQ3,ID1,ID2,IDQ,IDIQK(3,3) LOGICAL SPLIT,DUNBV(18) SAVE IDIQK DATA IDIQK/111,110,113,110,109,112,113,112,114/ C---Check for errors IF (IERROR.NE.0) RETURN C---Correct colour connections are gluon splitting CALL HWCCCC C---Reset bvi clustering flag HVFCEN = .FALSE. C---LIST PARTONS WITH WRONG COLOUR PARTNERS-QUARKS ONLY 5 NBV=0 DO 10 IHEP=1,NHEP IF (ISTHEP(IHEP).GT.149.AND.ISTHEP(IHEP).LT.155) THEN IF (QORQQB(IDHW(IHEP))) THEN IF (.NOT.QORQQB(IDHW(JMOHEP(2,IHEP))). & AND.JMOHEP(2,IHEP).GT.6) GOTO 10 ELSE C---Extra check for Gamma's IF (IDHW(IHEP).EQ.59) GO TO 10 C---End of bug fix. IF (QORQQB(IDHW(JDAHEP(2,IHEP)))) GO TO 10 GO TO 10 ENDIF IF(JMOHEP(2,IHEP).LT.6.AND. & .NOT.QBORQQ(IDHW(JMOHEP(2,IHEP)))) GOTO 10 C--new for hard process NBV=NBV+1 IF (NBV.GT.18) THEN CALL HWWARN('HWCBVI',100) GOTO 999 ENDIF IBV(NBV)=IHEP DUNBV(NBV)=.FALSE. ENDIF 10 CONTINUE C--NOW FIND THE ANTIQUARKS WITH WRONG COLOUR CONNECTIONS DO 11 IHEP=1,NHEP IF(ISTHEP(IHEP).GT.149.AND.ISTHEP(IHEP).LT.155) THEN IF(QBORQQ(IDHW(IHEP))) THEN IF(.NOT.QBORQQ(IDHW(JDAHEP(2,IHEP))).AND. & JDAHEP(2,IHEP).GT.6) GO TO 11 ELSE C--Extra check for gamma's IF(IDHW(IHEP).EQ.59) GO TO 11 IF(QBORQQ(IDHW(JMOHEP(2,IHEP)))) GO TO 11 GO TO 11 ENDIF IF(JDAHEP(2,IHEP).LT.6.AND. & .NOT.QORQQB(IDHW(JDAHEP(2,IHEP)))) GOTO 11 NBV=NBV+1 IF(NBV.GT.18) THEN CALL HWWARN('HWCBVI',100) GOTO 999 ENDIF IBV(NBV)=IHEP DUNBV(NBV)=.FALSE. ENDIF 11 CONTINUE IF (NBV.EQ.0) RETURN IF(MOD(NBV,3).NE.0) THEN CALL HWWARN('HWCBVI',101) GOTO 999 ENDIF C---PROCESS FOUND PARTONS, STARTING AT RANDOM POINT IN LIST NBR=INT(NBV*HWRGEN(0)) DO 100 MBV=1,NBV JBV=MBV+NBR IF (JBV.GT.NBV) JBV=JBV-NBV IF (.NOT.DUNBV(JBV)) THEN DUNBV(JBV)=.TRUE. IP1=IBV(JBV) JP1=HWCBVT(IP1) C---FIND ASSOCIATED PARTONS DO 20 KBV=1,NBV IF (.NOT.DUNBV(KBV)) THEN IP2=IBV(KBV) JP2=HWCBVT(IP2) IF (JP2.EQ.JP1) THEN DUNBV(KBV)=.TRUE. DO 15 LBV=1,NBV IF (.NOT.DUNBV(LBV)) THEN IP3=IBV(LBV) JP3=HWCBVT(IP3) IF (JP3.EQ.JP2) THEN DUNBV(LBV)=.TRUE. GO TO 25 ENDIF ENDIF 15 CONTINUE ENDIF ENDIF 20 CONTINUE CALL HWWARN('HWCBVI',102) GOTO 999 25 IQ1=0 C---LOOK FOR DIQUARK IF (ABS(IDHEP(IP1)).GT.100) THEN IQ1=IP1 IQ2=IP2 IQ3=IP3 ELSEIF (ABS(IDHEP(IP2)).GT.100) THEN IQ1=IP2 IQ2=IP3 IQ3=IP1 ELSEIF (ABS(IDHEP(IP3)).GT.100) THEN IQ1=IP3 IQ2=IP1 IQ3=IP2 ENDIF IF (IQ1.EQ.0) THEN C---NO DIQUARKS: COMBINE TWO (ANTI)QUARKS IF (ABS(IDHEP(IP1)).GT.3) THEN IQ1=IP2 IQ2=IP3 IQ3=IP1 ELSEIF (ABS(IDHEP(IP2)).GT.3) THEN IQ1=IP3 IQ2=IP1 IQ3=IP2 ELSE IQ1=IP1 IQ2=IP2 IQ3=IP3 ENDIF ID1=IDHEP(IQ1) ID2=IDHEP(IQ2) C---CHECK FLAVOURS IF (ID1.GT.0.AND.ID1.LT.4.AND. & ID2.GT.0.AND.ID2.LT.4) THEN IDQ=IDIQK(ID1,ID2) ELSEIF (ID1.LT.0.AND.ID1.GT.-4.AND. & ID1.LT.0.AND.ID2.GT.-4) THEN IDQ=IDIQK(-ID1,-ID2)+6 ELSE C---CANT MAKE DIQUARKS WITH HEAVY QUARKS: TRY CLUSTER SPLITTING CALL HWVSUM(4,PHEP(1,IQ1),PHEP(1,IQ2),PDQ) CALL HWUMAS(PDQ) C--Use the original splitting procedure CALL HWCCUT(IQ1,IQ2,PDQ,.FALSE.,SPLIT) IF (IERROR.NE.0) RETURN IF(SPLIT) GOTO 5 C--If it fails try the new procedure CALL HWVSUM(4,PDQ,PHEP(1,IQ3),PDQ) CALL HWUMAS(PDQ) IF(ABS(ID1).GT.3) THEN CALL HWCBCT(IQ3,IQ2,IQ1,PDQ,SPLIT) ELSEIF(ABS(ID2).GT.3) THEN CALL HWCBCT(IQ3,IQ1,IQ2,PDQ,SPLIT) ELSE CALL HWWARN('HWCBVI',100) GOTO 999 ENDIF IF (SPLIT) GO TO 5 C---Unable to form cluster; dispose of event CALL HWWARN('HWCBVI',-3) GOTO 999 ENDIF C---OVERWRITE FIRST AND CANCEL SECOND IDHW(IQ1)=IDQ IDHEP(IQ1)=IDPDG(IDQ) CALL HWVSUM(4,PHEP(1,IQ1),PHEP(1,IQ2),PHEP(1,IQ1)) CALL HWUMAS(PHEP(1,IQ1)) ISTHEP(IQ2)=0 C---REMAKE COLOUR CONNECTIONS IF (QORQQB(IDQ)) THEN JMOHEP(2,IQ1)=IQ3 JDAHEP(2,IQ3)=IQ1 ELSE JDAHEP(2,IQ1)=IQ3 JMOHEP(2,IQ3)=IQ1 ENDIF ELSE C---SPLIT A DIQUARK NHEP=NHEP+1 CALL HWVSCA(5,HALF,PHEP(1,IQ1),PHEP(1,IQ1)) CALL HWVEQU(5,PHEP(1,IQ1),PHEP(1,NHEP)) ISTHEP(NHEP)=150 JMOHEP(1,NHEP)=JMOHEP(1,IQ1) JDAHEP(1,NHEP)=0 C---FIND FLAVOURS IDQ=IDHW(IQ1) DO 30 ID2=1,3 DO 30 ID1=1,3 IF (IDIQK(ID1,ID2).EQ.IDQ) THEN IDHW(IQ1)=ID1 IDHW(NHEP)=ID2 C---REMAKE COLOUR CONNECTIONS (DIQUARK) JMOHEP(2,IQ1)=IQ2 JMOHEP(2,IQ2)=NHEP JMOHEP(2,IQ3)=IQ1 JMOHEP(2,NHEP)=IQ3 JDAHEP(2,IQ1)=IQ3 JDAHEP(2,IQ2)=IQ1 JDAHEP(2,IQ3)=NHEP JDAHEP(2,NHEP)=IQ2 GO TO 35 ELSEIF (IDIQK(ID1,ID2).EQ.IDQ-6) THEN IDHW(IQ1)=ID1+6 IDHW(NHEP)=ID2+6 C---REMAKE COLOUR CONNECTIONS (ANTIDIQUARK) JMOHEP(2,IQ1)=IQ3 JMOHEP(2,IQ2)=IQ1 JMOHEP(2,IQ3)=NHEP JMOHEP(2,NHEP)=IQ2 JDAHEP(2,IQ1)=IQ2 JDAHEP(2,IQ2)=NHEP JDAHEP(2,IQ3)=IQ1 JDAHEP(2,NHEP)=IQ3 GO TO 35 ENDIF 30 CONTINUE CALL HWWARN('HWCBVI',104) GOTO 999 35 IDHEP(IQ1)=IDPDG(IDHW(IQ1)) IDHEP(NHEP)=IDPDG(IDHW(NHEP)) ENDIF ENDIF 100 CONTINUE 999 RETURN END CDECK ID>, HWCBVT. *CMZ :- *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWCBVT(IP) C----------------------------------------------------------------------- C Function to find the baryon number violating vertex a parton came from C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER HWCBVT,IP,JP(2),KP,I,J,ID,TYPE,IDM,IDM2,IDM3,IDM4 JP(1) = IP ID = IDHW(IP) IF(ID.LE.6.OR.(ID.GE.115.AND.ID.LE.120)) THEN JP(2) = JMOHEP(2,IP) ELSE JP(2) = JDAHEP(2,IP) ENDIF DO I=1,2 IDM = JMOHEP(1,JMOHEP(1,JMOHEP(1,JMOHEP(1,JP(I))))) IF(IDHW(IDM).EQ.6.OR.IDHW(IDM).EQ.12) THEN JP(I)=IDM ENDIF ENDDO DO J=1,7 DO I=1,2 KP = JMOHEP(1,JP(I)) IDM = IDHW(KP) IDM2 = IDHW(JDAHEP(1,KP)) IDM3 = IDHW(JDAHEP(2,KP)) IDM4 = IDHW(JDAHEP(1,KP)+1) IF((ISTHEP(KP).EQ.155.AND. & ((IDM.GE.449.AND.IDM.LE.457.AND.IDM2.LE.12.AND. & IDM3.LE.12.AND.IDM4.LE.12).OR. & (((IDM.GE.411.AND.IDM.LE.424).OR.IDM.EQ.405.OR.IDM.EQ.406) & .AND.IDM2.LE.12.AND.IDM3.LE.12))) & .OR.(IDM.EQ.15.AND.IDM2.LE.12.AND. & IDHW(JMOHEP(1,KP)).LE.12.AND. & IDHW(JMOHEP(2,KP)).LE.12.AND.IDM3.GE.449.AND. & IDM3.LE.457).OR. & (IDM.EQ.15.AND.IDM2.GE.198.AND.IDM2.LE.200. & AND.ABS(IDPDG(IDM3)).GT.1000000)) THEN IF(IDHW(KP).EQ.449.AND.JDAHEP(1,KP).EQ.JP(I)) THEN KP = JMOHEP(1,KP) ELSEIF(IDHW(KP).EQ.15) THEN TYPE=IDHW(JDAHEP(1,KP)) IF(TYPE.GE.7.AND.TYPE.LE.12.AND. & JMOHEP(2,JDAHEP(2,KP)).EQ.JP(I)) THEN KP=IP ELSEIF(TYPE.LE.6.AND. & JDAHEP(2,JDAHEP(2,KP)).EQ.JP(I)) THEN KP=IP ELSE HWCBVT = KP RETURN ENDIF ELSE HWCBVT = KP RETURN ENDIF ENDIF JP(I) =KP ENDDO ENDDO HWCBVT = 0 END CDECK ID>, HWCCCC. *CMZ :- *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWCCCC C----------------------------------------------------------------------- C Subroutine to correct colour connections after the gluon splitting C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IHEP,STFSPT,LHEP,MHEP,RHEP IF(IERROR.NE.0) RETURN C--Find the first particle in the event record with status 150 DO IHEP=1,NHEP IF(ISTHEP(IHEP).GE.150.AND.ISTHEP(IHEP).LE.154) THEN STFSPT = IHEP GOTO 10 ENDIF ENDDO 10 CONTINUE C--Now find any that are colour connected to earlier particles C--in the event record DO IHEP=STFSPT,NHEP C--First the quarks and antidiquarks IF(IDHW(IHEP).LT.6.OR. & (IDHW(IHEP).GE.115.AND.IDHW(IHEP).LE.120)) THEN IF(JMOHEP(2,IHEP).LT.STFSPT) THEN LHEP = IHEP MHEP = JMOHEP(2,IHEP) RHEP = MHEP IF(MHEP.GT.6) RHEP = JDAHEP(1,MHEP) C--As from Rparity connect to particle not to antiparticle IF(IDHW(MHEP).NE.13) THEN JMOHEP(2,LHEP) = RHEP ELSE RHEP = RHEP+1 JMOHEP(2,LHEP) = RHEP ENDIF ENDIF ENDIF C--Now the antiquarks IF((IDHW(IHEP).GT.6.AND.IDHW(IHEP).LE.12).OR. & (IDHW(IHEP).GE.109.AND.IDHW(IHEP).LE.114)) THEN IF(JDAHEP(2,IHEP).LT.STFSPT) THEN LHEP = IHEP MHEP = JDAHEP(2,IHEP) RHEP = MHEP IF(MHEP.GT.6) RHEP = JDAHEP(1,MHEP) C--As from Rparity connect to antiparticle not particle IF(IDHW(MHEP).NE.13) THEN JDAHEP(2,LHEP) = RHEP ELSE JDAHEP(2,LHEP) = RHEP ENDIF ENDIF ENDIF ENDDO END CDECK ID>, HWCCUT. *CMZ :- -26/04/91 14.29.39 by Federico Carminati *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWCCUT(JHEP,KHEP,PCL,BTCLUS,SPLIT) C----------------------------------------------------------------------- C Cuts into 2 the cluster, momentum PCL, made of partons JHEP & KHEP C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWREXQ,HWUPCM,HWRGEN,HWVDOT,EMC,QM1,QM2,EMX,EMY, & QM3,PXY,PCX,PCY,RCM,PCL(5),AX(5),PA(5),PB(5),PC(5),SKAPPA,DELTM, & VSCA,VTMP(4),RKAPPA,VCLUS INTEGER HWRINT,JHEP,KHEP,LHEP,MHEP,ID1,ID2,ID3,NTRY,NTRYMX,J,IB LOGICAL BTCLUS,SPLIT EXTERNAL HWREXQ,HWUPCM,HWRGEN,HWVDOT,HWRINT COMMON/HWCFRM/VCLUS(4,NMXHEP) PARAMETER (SKAPPA=1.,NTRYMX=100) IF (IERROR.NE.0) RETURN EMC=PCL(5) ID1=IDHW(JHEP) ID2=IDHW(KHEP) QM1=RMASS(ID1) QM2=RMASS(ID2) SPLIT=.FALSE. NTRY=0 C Decide if cluster contains a b-(anti)quark IF (ID1.EQ.5.OR.ID1.EQ.11.OR.ID2.EQ.5.OR.ID2.EQ.11) THEN IB=2 ELSE IB=1 ENDIF IF (BTCLUS) THEN C Split beam and target clusters as soft clusters C Both (remnant) children treated like soft clusters if IOPREM=0(1) 10 ID3=HWRINT(1,2) QM3=RMASS(ID3) IF (EMC.LE.QM1+QM2+2.*QM3) THEN ID3=3-ID3 QM3=RMASS(ID3) IF (EMC.LE.QM1+QM2+2.*QM3) RETURN ENDIF PXY=EMC-QM1-QM2-TWO*QM3 IF (ISTHEP(JHEP).EQ.153.OR.ISTHEP(JHEP).EQ.154.OR. & IOPREM.EQ.0) THEN EMX=QM1+QM3+HWREXQ(BTCLM,PXY) ELSE EMX=QM1+QM3+PXY*HWRGEN(0)**PSPLT(IB) ENDIF IF (ISTHEP(KHEP).EQ.153.OR.ISTHEP(KHEP).EQ.154.OR. & IOPREM.EQ.0) THEN EMY=QM2+QM3+HWREXQ(BTCLM,PXY) ELSE EMY=QM2+QM3+PXY*HWRGEN(1)**PSPLT(IB) ENDIF IF (EMX+EMY.GE.EMC) THEN NTRY=NTRY+1 IF (NTRY.GT.NTRYMX) RETURN GOTO 10 ENDIF PCX=HWUPCM(EMX,QM1,QM3) PCY=HWUPCM(EMY,QM2,QM3) ELSE C Choose fragment masses for ordinary cluster PXY=EMC-QM1-QM2 20 NTRY=NTRY+1 IF (NTRY.GT.NTRYMX) RETURN 30 EMX=QM1+PXY*HWRGEN(0)**PSPLT(IB) EMY=QM2+PXY*HWRGEN(1)**PSPLT(IB) IF (EMX+EMY.GE.EMC) GOTO 30 C u,d,s pair production with weights QWT 40 ID3=HWRINT(1,3) IF (QWT(ID3).LT.HWRGEN(3)) GOTO 40 QM3=RMASS(ID3) PCX=HWUPCM(EMX,QM1,QM3) IF (PCX.LT.ZERO) GOTO 20 PCY=HWUPCM(EMY,QM2,QM3) IF (PCY.LT.ZERO) GOTO 20 SPLIT=.TRUE. ENDIF C Boost antiquark to CoM frame to find axis CALL HWULOF(PCL,PHEP(1,KHEP),AX) RCM=1./SQRT(HWVDOT(3,AX,AX)) CALL HWVSCA(3,RCM,AX,AX) C Construct new CoM momenta (collinear) PXY=HWUPCM(EMC,EMX,EMY) CALL HWVSCA(3,PXY,AX,PC) PC(4)=SQRT(PXY**2+EMY**2) PC(5)=EMY CALL HWVSCA(3,PCY,AX,PA) PA(4)=SQRT(PCY**2+QM2**2) PA(5)=QM2 CALL HWULOB(PC,PA,PB) CALL HWVDIF(4,PC,PB,PA) PA(5)=QM3 LHEP=NHEP+1 MHEP=NHEP+2 IF (MHEP.GT.NMXHEP) THEN CALL HWWARN('HWCCUT',100) GOTO 999 ENDIF CALL HWULOB(PCL,PB,PHEP(1,KHEP)) CALL HWULOB(PCL,PA,PHEP(1,MHEP)) CALL HWVSCA(3,-ONE,PC,PC) PC(4)=EMC-PC(4) PC(5)=EMX CALL HWVSCA(3,PCX,AX,PA) PA(4)=SQRT(PCX**2+QM3**2) CALL HWULOB(PC,PA,PB) CALL HWULOB(PCL,PB,PHEP(1,LHEP)) DO 50 J=1,4 50 PHEP(J,JHEP)=PCL(J)-PHEP(J,KHEP)-PHEP(J,LHEP)-PHEP(J,MHEP) PHEP(5,JHEP)=QM1 CALL HWVEQU(4,VHEP(1,LHEP),VHEP(1,MHEP)) C Construct new vertex positions RKAPPA=GEV2MM/SKAPPA CALL HWVSCA(3,RKAPPA,AX,AX) DELTM=(EMX-EMY)*(EMX+EMY)/(TWO*EMC) CALL HWVSCA(3,DELTM,AX,VTMP) VTMP(4)=(HALF*EMC-PXY)*RKAPPA CALL HWULB4(PCL,VTMP,VTMP) CALL HWVSUM(4,VTMP,VCLUS(1,JHEP),VHEP(1,LHEP)) CALL HWVEQU(4,VHEP(1,LHEP),VHEP(1,MHEP)) VSCA=0.25*EMC+HALF*(PXY+DELTM) CALL HWVSCA(3,VSCA,AX,VTMP) VTMP(4)=(EMC-VSCA)*RKAPPA CALL HWULB4(PCL,VTMP,VTMP) CALL HWVSUM(4,VTMP,VCLUS(1,JHEP),VCLUS(1,MHEP)) VSCA=-0.25*EMC+HALF*(DELTM-PXY) CALL HWVSCA(3,VSCA,AX,VTMP) VTMP(4)=(EMC+VSCA)*RKAPPA CALL HWULB4(PCL,VTMP,VTMP) CALL HWVSUM(4,VTMP,VCLUS(1,JHEP),VCLUS(1,JHEP)) C (Re-)label quarks IDHW(LHEP)=ID3+6 IDHW(MHEP)=ID3 IDHEP(MHEP)= IDPDG(ID3) IDHEP(LHEP)=-IDPDG(ID3) ISTHEP(LHEP)=151 ISTHEP(MHEP)=151 JMOHEP(2,JHEP)=LHEP JDAHEP(2,KHEP)=MHEP JMOHEP(1,LHEP)=JMOHEP(1,KHEP) JMOHEP(2,LHEP)=MHEP JDAHEP(1,LHEP)=0 JDAHEP(2,LHEP)=JHEP JMOHEP(1,MHEP)=JMOHEP(1,JHEP) JMOHEP(2,MHEP)=KHEP JDAHEP(1,MHEP)=0 JDAHEP(2,MHEP)=LHEP NHEP=NHEP+2 999 RETURN END CDECK ID>, HWCDEC. *CMZ :- -26/04/91 10.18.56 by Bryan Webber *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWCDEC C----------------------------------------------------------------------- C DECAYS CLUSTERS INTO PRIMARY HADRONS C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER JCL,KCL,IP,JP,KP,IST,ID1,ID2,ID3 IF (IERROR.NE.0) RETURN IF (IPRO/10.EQ.9.OR.IPRO/10.EQ.5) THEN C---RELABEL CLUSTER CONNECTED TO REMNANT IN DIS DO 10 JCL=2,NHEP IF (ISTHEP(JCL).EQ.164) GOTO 20 IF (ISTHEP(JCL).EQ.165) THEN IP=JMOHEP(1,JCL) JP=JMOHEP(2,JCL) KP=IP IF (ISTHEP(IP).EQ.162) THEN KP=JP JP=IP ENDIF IF (JMOHEP(2,KP).NE.JP) THEN IP=JMOHEP(2,KP) ELSE IP=JDAHEP(2,KP) ENDIF KCL=JDAHEP(1,IP) IF (ISTHEP(KCL)/10.NE.16) THEN CALL HWWARN('HWCDEC',100) GOTO 999 ENDIF ISTHEP(KCL)=164 GOTO 20 ENDIF 10 CONTINUE ENDIF 20 CONTINUE DO 30 JCL=1,NHEP IST=ISTHEP(JCL) IF (IST.GT.162.AND.IST.LT.166) THEN C---DON'T HADRONIZE BEAM/TARGET CLUSTERS IF (IST.EQ.163.OR..NOT.GENSOF) THEN C---SET UP FLAVOURS FOR CLUSTER DECAY CALL HWCFLA(IDHW(JMOHEP(1,JCL)),IDHW(JMOHEP(2,JCL)),ID1,ID3) CALL HWCHAD(JCL,ID1,ID3,ID2) ENDIF ENDIF 30 CONTINUE ISTAT=50 999 RETURN END CDECK ID>, HWCFLA. *CMZ :- -26/04/91 10.18.56 by Bryan Webber *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWCFLA(JD1,JD2,ID1,ID2) C----------------------------------------------------------------------- C SETS UP FLAVOURS FOR CLUSTER DECAY C----------------------------------------------------------------------- IMPLICIT NONE INTEGER JD1,JD2,ID1,ID2,JD,JDEC(12) SAVE JDEC DATA JDEC/1,2,3,10,11,12,4,5,6,7,8,9/ JD=JD1 IF (JD.GT.12) JD=JD-108 ID1=JDEC(JD) JD=JD2 IF (JD.GT.12) JD=JD-96 ID2=JDEC(JD-6) END CDECK ID>, HWCFOR. *CMZ :- -26/04/91 14.15.56 by Federico Carminati *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWCFOR C----------------------------------------------------------------------- C Converts colour-connected quark-antiquark pairs into clusters C Modified by IGK to include BRW's colour rearrangement and C MHS's cluster vertices C MODIFIED 16/10/97 BY BRW FOR SUSY PROCESSES C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWULDO,HWVDOT,HWRGEN,HWUPCM,DCL0,DCL(4),DCL1, & DFAC,DISP1(4),DISP2(4),DMAX,PCL(5),DOT1,DOT2,FAC,VCLUS,SCA1,SCA2, & EM0,EM1,EM2,PC0,PC1 INTEGER HWRINT,MAP(120),IBHEP,IBCL,JBHEP,JHEP, & KHEP,LHEP,LCL,IHEP,MCL,I,ISTJ,ISTK,JCL,ID1,ID3,L LOGICAL HWRLOG,SPLIT EXTERNAL HWULDO,HWVDOT,HWRGEN,HWUPCM,HWRINT COMMON/HWCFRM/VCLUS(4,NMXHEP) SAVE MAP DATA MAP/1,2,3,4,5,6,1,2,3,4,5,6,96*0,7,8,9,10,11,12,7,8,9,10,11, & 12/ IF (IERROR.NE.0) RETURN C Split gluons CALL HWCGSP C Find colour partners after baryon number violating event IF (HVFCEN) THEN IF(RPARTY) THEN CALL HVCBVI ELSE CALL HWCBVI ENDIF ENDIF IF (IERROR.NE.0) RETURN C Look for partons to cluster DO 10 IBHEP=1,NHEP 10 IF (ISTHEP(IBHEP).GE.150.AND.ISTHEP(IBHEP).LE.154) GOTO 20 IBCL=1 GOTO 130 20 CONTINUE C--Final check for colour disconnections DO 25 JHEP=IBHEP,NHEP IF (ISTHEP(JHEP).GE.150.AND.ISTHEP(JHEP).LE.154.AND. & QORQQB(IDHW(JHEP))) THEN KHEP=JMOHEP(2,JHEP) C BRW FIX 13/03/99 IF (KHEP.EQ.0.OR..NOT.( & ISTHEP(KHEP).GE.150.AND.ISTHEP(KHEP).LE.154.AND. & QBORQQ(IDHW(KHEP)))) THEN DO KHEP=IBHEP,NHEP IF (ISTHEP(KHEP).GE.150.AND.ISTHEP(KHEP).LE.154 & .AND.QBORQQ(IDHW(KHEP))) THEN LHEP=JDAHEP(2,KHEP) IF (LHEP.EQ.0.OR..NOT.( & ISTHEP(LHEP).GE.150.AND.ISTHEP(LHEP).LE.154.AND. & QORQQB(IDHW(LHEP)))) THEN JMOHEP(2,JHEP)=KHEP JDAHEP(2,KHEP)=JHEP GOTO 25 ENDIF ENDIF ENDDO C END FIX CALL HWWARN('HWCFOR',100) GOTO 999 ENDIF ENDIF 25 CONTINUE IF (CLRECO) THEN C Allow for colour rearrangement of primary clusters NRECO=0 C Randomize starting point JBHEP=HWRINT(IBHEP,NHEP) JHEP=JBHEP 30 JHEP=JHEP+1 IF (JHEP.GT.NHEP) JHEP=IBHEP IF (ISTHEP(JHEP).GE.150.AND.ISTHEP(JHEP).LE.154.AND. & QORQQB(IDHW(JHEP))) THEN C Find colour connected antiquark or diquark KHEP=JMOHEP(2,JHEP) C Find partner antiquark or diquark LHEP=JDAHEP(2,JHEP) C Find closest antiquark or diquark DCL0=1.D15 LCL=0 DO 40 IHEP=IBHEP,NHEP IF (ISTHEP(IHEP).GE.150.AND.ISTHEP(IHEP).LE.154.AND. & QBORQQ(IDHW(IHEP))) THEN C Check whether already reconnected IF (JDAHEP(2,IHEP).GT.0.AND.IHEP.NE.LHEP) THEN CALL HWVDIF(4,VHEP(1,IHEP),VHEP(1,JHEP),DCL) DCL1=ABS(HWULDO(DCL,DCL)) IF (DCL1.LT.DCL0) THEN DCL0=DCL1 LCL=IHEP ENDIF ENDIF ENDIF 40 CONTINUE IF (LCL.NE.0.AND.LCL.NE.KHEP) THEN MCL=JDAHEP(2,LCL) IF (JDAHEP(2,MCL).NE.KHEP) THEN C Pairwise reconnection is possible CALL HWVDIF(4,VHEP(1,KHEP),VHEP(1,MCL ),DCL) DCL0=DCL0+ABS(HWULDO(DCL,DCL)) CALL HWVDIF(4,VHEP(1,JHEP),VHEP(1,KHEP),DCL) DCL1=ABS(HWULDO(DCL,DCL)) CALL HWVDIF(4,VHEP(1,LCL ),VHEP(1,MCL ),DCL) DCL1=DCL1+ABS(HWULDO(DCL,DCL)) IF (DCL0.LT.DCL1.AND.HWRLOG(PRECO)) THEN C Reconnection occurs JMOHEP(2,JHEP)= LCL JDAHEP(2,LCL )=-JHEP JMOHEP(2,MCL) = KHEP JDAHEP(2,KHEP)=-MCL NRECO=NRECO+1 ENDIF ENDIF ENDIF ENDIF IF (JHEP.NE.JBHEP) GOTO 30 IF (NRECO.NE.0) THEN DO 50 IHEP=IBHEP,NHEP 50 JDAHEP(2,IHEP)=ABS(JDAHEP(2,IHEP)) ENDIF ENDIF C Find (adjusted) cluster positions using MHS prescription DFAC=ONE DMAX=1D-10 DO 70 JHEP=IBHEP,NHEP IF (ISTHEP(JHEP).GE.150.AND.ISTHEP(JHEP).LE.154.AND. & QORQQB(IDHW(JHEP))) THEN KHEP=JMOHEP(2,JHEP) CALL HWUDKL(IDHW(JHEP),PHEP(1,JHEP),DISP1) CALL HWVSCA(4,DFAC,DISP1,DISP1) CALL HWUDKL(IDHW(KHEP),PHEP(1,KHEP),DISP2) CALL HWVSCA(4,DFAC,DISP2,DISP2) C Rescale the lengths of DISP1,DISP2 if too long DOT1=HWVDOT(3,DISP1,DISP1) DOT2=HWVDOT(3,DISP2,DISP2) IF (MAX(DOT1,DOT2).GT.DMAX**2) THEN CALL HWVSCA(4,DMAX/SQRT(DOT1),DISP1,DISP1) CALL HWVSCA(4,DMAX/SQRT(DOT2),DISP2,DISP2) ENDIF CALL HWVSUM(4,PHEP(1,JHEP),PHEP(1,KHEP),PCL) DOT1=HWVDOT(3,DISP1,PCL) DOT2=HWVDOT(3,DISP2,PCL) C If PCL > 90^o from either quark, use a vector which isn't IF (DOT1.LE.ZERO.OR. DOT2.LE.ZERO) THEN CALL HWVSUM(4,DISP1,DISP2,PCL) DOT1=HWVDOT(3,DISP1,PCL) DOT2=HWVDOT(3,DISP2,PCL) ENDIF C If vectors are exactly opposite each other this method cannot work IF (DOT1.EQ.ZERO.OR.DOT2.EQ.ZERO) THEN C So use midpoint of quark constituents CALL HWVSUM(4,VHEP(1,JHEP),VHEP(1,KHEP),VCLUS(1,JHEP)) CALL HWVSCA(4,HALF,VCLUS(1,JHEP),VCLUS(1,JHEP)) GOTO 70 ENDIF C Rescale DISP1 or DISP2 to give equal components in the PCL direction FAC=DOT1/DOT2 IF (FAC.GT.ONE) THEN CALL HWVSCA(4, FAC,DISP2,DISP2) DOT2=DOT1 ELSE CALL HWVSCA(4,ONE/FAC,DISP1,DISP1) DOT1=DOT2 ENDIF C Shift VHEP(1,JHEP) or VHEP(1,KHEP) s.t. their line is perp to PCL FAC=(HWVDOT(3,PCL,VHEP(1,KHEP)) & -HWVDOT(3,PCL,VHEP(1,JHEP)))/DOT1 SCA1=MAX(ONE,ONE+FAC) SCA2=MAX(ONE,ONE-FAC) DO 60 I=1,4 60 VCLUS(I,JHEP)=.5*(VHEP(I,JHEP)+VHEP(I,KHEP) & +SCA1*DISP1(I)+SCA2*DISP2(I)) ENDIF 70 CONTINUE C First chop up beam/target clusters DO 80 JHEP=IBHEP,NHEP KHEP=JMOHEP(2,JHEP) ISTJ=ISTHEP(JHEP) ISTK=ISTHEP(KHEP) C--PR MOD here 8/7/99 IF (QORQQB(IDHW(JHEP)).AND. & (((ISTJ.EQ.153.OR.ISTJ.EQ.154).AND.ISTK.NE.151.AND.ISTK.NE.0) & .OR.((ISTK.EQ.153.OR.ISTK.EQ.154). & AND.ISTJ.NE.151.AND.ISTJ.NE.0))) THEN C--end CALL HWVSUM(4,PHEP(1,JHEP),PHEP(1,KHEP),PCL) CALL HWUMAS(PCL) CALL HWCCUT(JHEP,KHEP,PCL,.TRUE.,SPLIT) IF (IERROR.NE.0) RETURN ENDIF 80 CONTINUE C Second chop up massive pairs DO 100 JHEP=IBHEP,NMXHEP IF (JHEP.GT.NHEP) GOTO 110 IF (ISTHEP(JHEP).GE.150.AND.ISTHEP(JHEP).LE.154.AND. & QORQQB(IDHW(JHEP))) THEN 90 KHEP=JMOHEP(2,JHEP) CALL HWVSUM(4,PHEP(1,JHEP),PHEP(1,KHEP),PCL) CALL HWUMAS(PCL) IF (PCL(5).GT.CTHRPW(MAP(IDHW(JHEP)),MAP(IDHW(KHEP)))) THEN CALL HWCCUT(JHEP,KHEP,PCL,.FALSE.,SPLIT) IF (IERROR.NE.0) RETURN IF (SPLIT) GOTO 90 ENDIF ENDIF 100 CONTINUE C Third create clusters and store production vertex 110 IBCL=NHEP+1 JCL=NHEP DO 120 JHEP=IBHEP,NHEP IF (ISTHEP(JHEP).GE.150.AND.ISTHEP(JHEP).LE.154.AND. & QORQQB(IDHW(JHEP))) THEN JCL=JCL+1 IF(JCL.GT.NMXHEP) THEN CALL HWWARN('HWCFOR',105) GOTO 999 ENDIF IDHW(JCL)=19 IDHEP(JCL)=91 KHEP=JMOHEP(2,JHEP) IF (KHEP.EQ.0.OR..NOT.( & ISTHEP(KHEP).GE.150.AND.ISTHEP(KHEP).LE.154.AND. & QBORQQ(IDHW(KHEP)))) THEN CALL HWWARN('HWCFOR',104) GOTO 999 ENDIF CALL HWVSUM(4,PHEP(1,JHEP),PHEP(1,KHEP),PHEP(1,JCL)) CALL HWUMAS(PHEP(1,JCL)) IF (ISTHEP(JHEP).EQ.153.OR.ISTHEP(KHEP).EQ.153) THEN ISTHEP(JCL)=164 ELSEIF (ISTHEP(JHEP).EQ.154.OR.ISTHEP(KHEP).EQ.154) THEN ISTHEP(JCL)=165 ELSE ISTHEP(JCL)=163 ENDIF JMOHEP(1,JCL)=JHEP JMOHEP(2,JCL)=KHEP JDAHEP(1,JCL)=0 JDAHEP(2,JCL)=0 JDAHEP(1,JHEP)=JCL JDAHEP(1,KHEP)=JCL ISTHEP(JHEP)=ISTHEP(JHEP)+8 ISTHEP(KHEP)=ISTHEP(KHEP)+8 CALL HWVEQU(4,VCLUS(1,JHEP),VHEP(1,JCL)) ENDIF 120 CONTINUE NHEP=JCL C Fix up momenta for single-hadron clusters 130 DO 150 JCL=IBCL,NHEP C Don't hadronize beam/target clusters IF (ISTHEP(JCL).LT.163.OR.ISTHEP(JCL).GT.165) GOTO 150 IF (ISTHEP(JCL).NE.163.AND.GENSOF) GOTO 150 C Set up flavours for cluster decay CALL HWCFLA(IDHW(JMOHEP(1,JCL)),IDHW(JMOHEP(2,JCL)),ID1,ID3) EM0=PHEP(5,JCL) IF ((B1LIM.EQ.ZERO).OR.(ID1.NE.11.AND.ID3.NE.11)) THEN IF (EM0.GT.MIN(RMIN(ID1,1)+RMIN(1,ID3), $ RMIN(ID1,2)+RMIN(2,ID3))) GOTO 150 ELSE C Special for b clusters: allow 1-hadron decay above threshold IF (B1LIM*HWRGEN(1).LT.EM0/(MIN(RMIN(ID1,1)+RMIN(1,ID3), $ RMIN(ID1,2)+RMIN(2,ID3)))-1.) & GOTO 150 ENDIF EM1=RMIN(ID1,ID3) IF (ABS(EM0-EM1).LT.1.D-5) GOTO 150 C Decide to go backward or forward to transfer 4-momentum L=1-2*HWRINT(0,1) MCL=NHEP-IBCL+1 LCL=JCL DO 140 I=1,MCL LCL=LCL+L IF (LCL.LT.IBCL) LCL=LCL+MCL IF (LCL.GT.NHEP) LCL=LCL-MCL IF (LCL.EQ.JCL) THEN IF (EM0.GE.EM1+RMIN(1,1)) GOTO 150 CALL HWWARN('HWCFOR',101) GOTO 999 ENDIF IF (ISTHEP(LCL).LT.163.OR.ISTHEP(LCL).GT.165) GOTO 140 C Rescale momenta in 2-cluster CoM CALL HWVSUM(4,PHEP(1,JCL),PHEP(1,LCL),PCL) CALL HWUMAS(PCL) EM2=PHEP(5,LCL) PC0=HWUPCM(PCL(5),EM0,EM2) PC1=HWUPCM(PCL(5),EM1,EM2) IF (PC1.LT.ZERO) THEN C Need to rescale other mass as well CALL HWCFLA(IDHW(JMOHEP(1,LCL)),IDHW(JMOHEP(2,LCL)),ID1,ID3) EM2=RMIN(ID1,ID3) PC1=HWUPCM(PCL(5),EM1,EM2) IF (PC1.LT.ZERO) GOTO 140 PHEP(5,LCL)=EM2 ENDIF IF (PC0.GT.ZERO) THEN PC0=PC1/PC0 CALL HWULOF(PCL,PHEP(1,JCL),PHEP(1,JCL)) CALL HWVSCA(3,PC0,PHEP(1,JCL),PHEP(1,JCL)) PHEP(4,JCL)=SQRT(PC1**2+EM1**2) PHEP(5,JCL)=EM1 CALL HWULOB(PCL,PHEP(1,JCL),PHEP(1,JCL)) CALL HWVDIF(4,PCL,PHEP(1,JCL),PHEP(1,LCL)) GOTO 150 ELSEIF (PC0.EQ.ZERO) THEN PHEP(5,JCL)=EM1 CALL HWDTWO(PCL,PHEP(1,JCL),PHEP(1,LCL),PC1,TWO,.TRUE.) GOTO 150 ELSE CALL HWWARN('HWCFOR',102) GOTO 999 ENDIF 140 CONTINUE CALL HWWARN('HWCFOR',103) GOTO 999 150 CONTINUE ISTAT=60 C Non-partons labelled as partons (ie photons) should get copied DO 160 IHEP=1,NHEP IF (ISTHEP(IHEP).EQ.150) THEN NHEP=NHEP+1 JDAHEP(1,IHEP)=NHEP ISTHEP(IHEP)=157 ISTHEP(NHEP)=190 IDHW(NHEP)=IDHW(IHEP) IDHEP(NHEP)=IDPDG(IDHW(IHEP)) CALL HWVEQU(5,PHEP(1,IHEP),PHEP(1,NHEP)) C--MHS FIX 07/03/05 - VERTEX SHOULD BE RELATIVE TO FIXED AXES CALL HWVSUM(4,VTXPIP,VHEP(1,IHEP),VHEP(1,NHEP)) C--END FIXES JMOHEP(1,NHEP)=IHEP JMOHEP(2,NHEP)=JMOHEP(1,IHEP) JDAHEP(1,NHEP)=0 JDAHEP(2,NHEP)=0 ENDIF 160 CONTINUE 999 RETURN END CDECK ID>, HWCGSP. *CMZ :- -13/07/92 20.15.54 by Mike Seymour *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWCGSP C----------------------------------------------------------------------- C SPLITS ANY TIMELIKE GLUONS REMAINING AFTER PERTURBATIVE C BRANCHING INTO LIGHT (I.E. U OR D) Q-QBAR PAIRS C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,PF INTEGER HWRINT,IHEP,JHEP,KHEP,LHEP,MHEP,ID,J,IST EXTERNAL HWRGEN,HWRINT IF (NGSPL.EQ.0) CALL HWWARN('HWCGSP',400) LHEP=NHEP-1 MHEP=NHEP DO 100 IHEP=1,NHEP IF (ISTHEP(IHEP).GE.147.AND.ISTHEP(IHEP).LE.149) THEN JHEP=JMOHEP(2,IHEP) C BRW FIX 12/03/99 IF (JHEP.LE.0) THEN KHEP=0 DO JHEP=1,NHEP IF (ISTHEP(JHEP).GE.147.AND.ISTHEP(JHEP).LE.149 & .AND.JDAHEP(2,JHEP).LE.0) THEN KHEP=KHEP+1 JMOHEP(2,IHEP)=JHEP JDAHEP(2,JHEP)=IHEP ENDIF ENDDO IF (KHEP.EQ.0) THEN CALL HWWARN('HWCGSP',102) GOTO 999 ENDIF IF (KHEP.NE.1) THEN CALL HWWARN('HWCGSP',103) GOTO 999 ENDIF ENDIF C END FIX C---CHECK FOR DECAYED HEAVY ANTIQUARKS IF (ISTHEP(JHEP).EQ.155) THEN JHEP=JDAHEP(1,JDAHEP(2,JHEP)) DO 10 J=JDAHEP(1,JHEP),JDAHEP(2,JHEP) 10 IF (ISTHEP(J).EQ.149.AND.JDAHEP(2,J).EQ.0) GOTO 20 CALL HWWARN('HWCGSP',100) GOTO 999 20 JHEP=J ENDIF KHEP=JDAHEP(2,IHEP) C BRW FIX 12/03/99 IF (KHEP.LE.0) THEN KHEP=0 DO JHEP=1,NHEP IF (ISTHEP(JHEP).GE.147.AND.ISTHEP(JHEP).LE.149 & .AND.JMOHEP(2,JHEP).LE.0) THEN KHEP=KHEP+1 JDAHEP(2,IHEP)=JHEP JMOHEP(2,JHEP)=IHEP ENDIF ENDDO IF (KHEP.EQ.0) THEN CALL HWWARN('HWCGSP',104) GOTO 999 ENDIF IF (KHEP.NE.1) THEN CALL HWWARN('HWCGSP',105) GOTO 999 ENDIF KHEP=JDAHEP(2,IHEP) ENDIF C END FIX C---CHECK FOR DECAYED HEAVY QUARKS IF (ISTHEP(KHEP).EQ.155) THEN CALL HWWARN('HWCGSP',101) GOTO 999 ENDIF IF (IDHW(IHEP).EQ.13) THEN C---SPLIT A GLUON LHEP=LHEP+2 MHEP=MHEP+2 IF(MHEP.GT.NMXHEP) THEN CALL HWWARN('HWCGSP',106) GOTO 999 ENDIF 30 ID=HWRINT(1,NGSPL) IF (PGSPL(ID).LT.PGSMX*HWRGEN(0)) GOTO 30 PHEP(5,LHEP)=RMASS(ID) PHEP(5,MHEP)=RMASS(ID) C---ASSUME ISOTROPIC ANGULAR DISTRIBUTION IF (PHEP(5,IHEP).GT.PHEP(5,LHEP)+PHEP(5,MHEP)) THEN CALL HWDTWO(PHEP(1,IHEP),PHEP(1,LHEP), & PHEP(1,MHEP),PGSPL(ID),TWO,.TRUE.) ELSE PF=HWRGEN(1) CALL HWVSCA(4,PF,PHEP(1,IHEP),PHEP(1,LHEP)) CALL HWVDIF(4,PHEP(1,IHEP),PHEP(1,LHEP),PHEP(1,MHEP)) PHEP(5,LHEP)=PF*PHEP(5,IHEP) PHEP(5,MHEP)=PHEP(5,IHEP)-PHEP(5,LHEP) ENDIF CALL HWUDKL(13,PHEP(1,IHEP),VHEP(1,LHEP)) CALL HWVSUM(4,VHEP(1,IHEP),VHEP(1,LHEP),VHEP(1,LHEP)) CALL HWVEQU(4,VHEP(1,LHEP),VHEP(1,MHEP)) IDHW(LHEP)=ID+6 IDHW(MHEP)=ID IDHEP(MHEP)= IDPDG(ID) IDHEP(LHEP)=-IDPDG(ID) ISTHEP(IHEP)=2 ISTHEP(LHEP)=150 ISTHEP(MHEP)=150 C---NEW COLOUR CONNECTIONS IF(RPARTY.OR.JMOHEP(2,KHEP).EQ.IHEP) JMOHEP(2,KHEP)=LHEP IF(RPARTY.OR.JDAHEP(2,JHEP).EQ.IHEP) JDAHEP(2,JHEP)=MHEP JMOHEP(1,LHEP)=JMOHEP(1,IHEP) JMOHEP(2,LHEP)=MHEP JMOHEP(1,MHEP)=JMOHEP(1,IHEP) JMOHEP(2,MHEP)=JHEP JDAHEP(1,LHEP)=0 JDAHEP(2,LHEP)=KHEP JDAHEP(1,MHEP)=0 JDAHEP(2,MHEP)=LHEP JDAHEP(1,IHEP)=LHEP JDAHEP(2,IHEP)=MHEP ELSE C---COPY A NON-GLUON LHEP=LHEP+1 MHEP=MHEP+1 IF(MHEP.GT.NMXHEP) THEN CALL HWWARN('HWCGSP',107) GOTO 999 ENDIF CALL HWVEQU(5,PHEP(1,IHEP),PHEP(1,MHEP)) CALL HWVEQU(4,VHEP(1,IHEP),VHEP(1,MHEP)) IDHW(MHEP)=IDHW(IHEP) IDHEP(MHEP)=IDHEP(IHEP) IST=ISTHEP(IHEP) ISTHEP(IHEP)=2 IF (IST.EQ.149) THEN ISTHEP(MHEP)=150 ELSE ISTHEP(MHEP)=IST+6 ENDIF C---NEW COLOUR CONNECTIONS IF(RPARTY.OR.JMOHEP(2,KHEP).EQ.IHEP) & JMOHEP(2,KHEP)=MHEP IF(RPARTY.OR.(JHEP.NE.IHEP.AND.JDAHEP(2,JHEP).EQ.IHEP)) & JDAHEP(2,JHEP)=MHEP JMOHEP(1,MHEP)=JMOHEP(1,IHEP) JMOHEP(2,MHEP)=JMOHEP(2,IHEP) JDAHEP(1,MHEP)=0 JDAHEP(2,MHEP)=JDAHEP(2,IHEP) JDAHEP(1,IHEP)=MHEP ENDIF ENDIF 100 CONTINUE NHEP=MHEP 999 RETURN END CDECK ID>, HWCHAD. *CMZ :- -26/04/91 14.00.57 by Federico Carminati *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWCHAD(JCL,ID1,ID3,ID2) C----------------------------------------------------------------------- C HADRONIZES CLUSTER JCL, CONSISTING OF PARTONS ID1,ID3 C ID2 RETURNS PARTON-ANTIPARTON PAIR CREATED C (IN SPECIAL CLUSTER CODE - SEE HWCFLA) C C MODIFIED 15/11/99 TO SMEAR POSITIONS OF HADRONS BY 1/(CLUSTER MASS) C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,HWRGAU,HWVDOT,EM0,EM1,EM2,EMADU,EMSQ, & PCMAX,PCM,PTEST,PCQK,PP(5),EMLOW,RMAT(3,3),CT,ST,CX,SX,HPSMR INTEGER HWRINT,JCL,ID1,ID2,ID3,ID,IR1,IR2,NTRY,IDMIN,IMAX,I,MHEP, & IM,JM,KM,IB LOGICAL DIQK EXTERNAL HWRGEN,HWRINT DIQK(ID)=ID.GT.3.AND.ID.LT.10 IF (IERROR.NE.0) RETURN ID2=0 EM0=PHEP(5,JCL) IF (LOCN(ID1,ID3).LE.0) THEN CALL HWWARN('HWCHAD',104) GOTO 999 ENDIF IR1=NCLDK(LOCN(ID1,ID3)) EM1=RMIN(ID1,ID3) IF (ABS(EM0-EM1).LT.0.001) THEN C---SINGLE-HADRON CLUSTER NHEP=NHEP+1 IF (NHEP.GT.NMXHEP) THEN CALL HWWARN('HWCHAD',100) GOTO 999 ENDIF IDHW(NHEP)=IR1 IDHEP(NHEP)=IDPDG(IR1) ISTHEP(NHEP)=191 JDAHEP(1,JCL)=NHEP JDAHEP(2,JCL)=NHEP CALL HWVEQU(5,PHEP(1,JCL),PHEP(1,NHEP)) CALL HWVSUM(4,VHEP(1,JCL),VTXPIP,VHEP(1,NHEP)) ELSE NTRY=0 IDMIN=1 EMLOW=RMIN(ID1,1)+RMIN(1,ID3) EMADU=RMIN(ID1,2)+RMIN(2,ID3) IF (EMADU.LT.EMLOW) THEN IDMIN=2 EMLOW=EMADU ENDIF EMSQ=EM0**2 PCMAX=EMSQ-EMLOW**2 IF (PCMAX.GE.ZERO) THEN C---SET UP TWO QUARK-ANTIQUARK PAIRS OR A C QUARK-DIQUARK AND AN ANTIDIQUARK-ANTIQUARK PCMAX=PCMAX*(EMSQ-(RMIN(ID1,IDMIN)-RMIN(IDMIN,ID3))**2) IMAX=12 IF (DIQK(ID1).OR.DIQK(ID3)) IMAX=3 DO 10 I=3,IMAX IF (EM0.LT.RMIN(ID1,I)+RMIN(I,ID3)) GOTO 20 10 CONTINUE I=IMAX+1 20 ID2=HWRINT(1,I-1) IF (PWT(ID2).NE.ONE) THEN IF (PWT(ID2).LT.HWRGEN(1)) GOTO 20 ENDIF C---PICK TWO PARTICLES WITH THESE QUANTUM NUMBERS NTRY=NTRY+1 30 IR1=LOCN(ID1,ID2)+INT(RESN(ID1,ID2)*HWRGEN(2)) IF (CLDKWT(IR1).LT.HWRGEN(3)) GOTO 30 IR1=NCLDK(IR1) 40 IR2=LOCN(ID2,ID3)+INT(RESN(ID2,ID3)*HWRGEN(4)) IF (CLDKWT(IR2).LT.HWRGEN(5)) GOTO 40 IR2=NCLDK(IR2) EM1=RMASS(IR1) EM2=RMASS(IR2) PCM=EMSQ-(EM1+EM2)**2 IF (PCM.GT.ZERO) GOTO 70 IF (NTRY.LE.NDTRY) GOTO 20 C---CAN'T FIND A DECAY MODE - CHOOSE LIGHTEST 60 ID2=HWRINT(1,2) IR1=NCLDK(LOCN(ID1,ID2)) IR2=NCLDK(LOCN(ID2,ID3)) EM1=RMASS(IR1) EM2=RMASS(IR2) PCM=EMSQ-(EM1+EM2)**2 IF (PCM.GT.ZERO) GOTO 70 NTRY=NTRY+1 IF (NTRY.LE.NDTRY+50) GOTO 60 CALL HWWARN('HWCHAD',101) GOTO 999 C---DECAY IS ALLOWED 70 PCM=PCM*(EMSQ-(EM1-EM2)**2) IF (NTRY.GT.NCTRY) GOTO 80 PTEST=PCM*SWTEF(IR1)*SWTEF(IR2) IF (PTEST.LT.PCMAX*HWRGEN(0)**2) GOTO 20 ELSE C---ALLOW DECAY BY PI0 EMISSION IF ONLY POSSIBILITY ID2=1 IR2=NCLDK(LOCN(1,1)) EM2=RMASS(IR2) PCM=(EMSQ-(EM1+EM2)**2)*(EMSQ-(EM1-EM2)**2) ENDIF C---DECAY IS CHOSEN. GENERATE DECAY MOMENTA C AND PUT PARTICLES IN /HEPEVT/ 80 IF (PCM.LT.ZERO) THEN CALL HWWARN('HWCHAD',102) GOTO 999 ENDIF PCM=0.5*SQRT(PCM)/EM0 MHEP=NHEP+1 NHEP=NHEP+2 IF (NHEP.GT.NMXHEP) THEN CALL HWWARN('HWCHAD',103) GOTO 999 ENDIF PHEP(5,MHEP)=EM1 PHEP(5,NHEP)=EM2 C Decide if cluster contains a b-(anti)quark or not IF (ID1.EQ.11.OR.ID2.EQ.11.OR.ID3.EQ.11) THEN IB=2 ELSE IB=1 ENDIF IF (CLDIR(IB).NE.0) THEN DO 110 IM=1,2 JM=JMOHEP(IM,JCL) IF (JM.EQ.0) GOTO 110 IF (ISTHEP(JM).NE.158) GOTO 110 C LOOK FOR PARENT PARTON DO 100 KM=JMOHEP(1,JM)+1,JM IF (ISTHEP(KM).EQ.2) THEN IF (JDAHEP(1,KM).EQ.JM) THEN C FOUND PARENT PARTON IF (IDHW(KM).NE.13) THEN C FIND ITS DIRECTION IN CLUSTER CMF CALL HWULOF(PHEP(1,JCL),PHEP(1,KM),PP) PCQK=PP(1)**2+PP(2)**2+PP(3)**2 IF (PCQK.GT.ZERO) THEN PCQK=SQRT(PCQK) IF (CLSMR(IB).GT.ZERO) THEN C DO GAUSSIAN SMEARING OF DIRECTION 90 CT=ONE+CLSMR(IB)*LOG(HWRGEN(0)) IF (CT.LT.-ONE) GOTO 90 ST=ONE-CT*CT IF (ST.GT.ZERO) ST=SQRT(ST) CALL HWRAZM( ONE,CX,SX) CALL HWUROT(PP,CX,SX,RMAT) PP(1)=ZERO PP(2)=PCQK*ST PP(3)=PCQK*CT CALL HWUROB(RMAT,PP,PP) ENDIF PCQK=PCM/PCQK IF (IM.EQ.2) PCQK=-PCQK CALL HWVSCA(3,PCQK,PP,PHEP(1,MHEP)) PHEP(4,MHEP)=SQRT(PHEP(5,MHEP)**2+PCM**2) CALL HWULOB(PHEP(1,JCL),PHEP(1,MHEP),PHEP(1,MHEP)) CALL HWVDIF(4,PHEP(1,JCL),PHEP(1,MHEP),PHEP(1,NHEP)) GOTO 130 ENDIF ENDIF GOTO 120 ENDIF ELSEIF (ISTHEP(KM).GT.140) THEN C FINISHED THIS JET GOTO 110 ENDIF 100 CONTINUE 110 CONTINUE ENDIF 120 CALL HWDTWO(PHEP(1,JCL),PHEP(1,MHEP),PHEP(1,NHEP), & PCM,TWO,.TRUE.) 130 IDHW(MHEP)=IR1 IDHW(NHEP)=IR2 IDHEP(MHEP)=IDPDG(IR1) IDHEP(NHEP)=IDPDG(IR2) ISTHEP(MHEP)=192 ISTHEP(NHEP)=192 JMOHEP(1,MHEP)=JCL C---SECOND MOTHER OF HADRON IS JET JMOHEP(2,MHEP)=JMOHEP(1,JMOHEP(1,JCL)) JDAHEP(1,JCL)=MHEP JDAHEP(2,JCL)=NHEP C---SMEAR HADRON POSITIONS HPSMR=GEV2MM/PHEP(5,JCL) DO I=1,4 VHEP(I,MHEP)=HWRGAU(I,ZERO,HPSMR) ENDDO VHEP(4,MHEP)=ABS(VHEP(4,MHEP)) & +SQRT(HWVDOT(3,VHEP(1,MHEP),VHEP(1,MHEP))) CALL HWULB4(PHEP(1,JCL),VHEP(1,MHEP),VHEP(1,MHEP)) CALL HWVSUM(4,VHEP(1,JCL),VHEP(1,MHEP),VHEP(1,MHEP)) CALL HWVSUM(4,VTXPIP,VHEP(1,MHEP),VHEP(1,MHEP)) DO I=1,4 VHEP(I,NHEP)=HWRGAU(I,ZERO,HPSMR) ENDDO VHEP(4,NHEP)=ABS(VHEP(4,NHEP)) & +SQRT(HWVDOT(3,VHEP(1,NHEP),VHEP(1,NHEP))) CALL HWULB4(PHEP(1,JCL),VHEP(1,NHEP),VHEP(1,NHEP)) CALL HWVSUM(4,VHEP(1,JCL),VHEP(1,NHEP),VHEP(1,NHEP)) CALL HWVSUM(4,VTXPIP,VHEP(1,NHEP),VHEP(1,NHEP)) ENDIF ISTHEP(JCL)=180+MOD(ISTHEP(JCL),10) JMOHEP(1,NHEP)=JCL JMOHEP(2,NHEP)=JMOHEP(1,JMOHEP(1,JCL)) 999 RETURN END CDECK ID>, HWD2ME. *CMZ :- -09/04/02 13:37:38 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD2ME(IMODE) C----------------------------------------------------------------------- C Computes the width and maximum weight for a two body mode C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IMODE,I DOUBLE PRECISION A(2),M(3),PCM,E1,E2,HWUPCM,PHS,WGT,MWGT,PCM2, & M2(3) EXTERNAL HWUPCM C--set up the masses and couplings M(1) = RMASS(IDK(ID2PRT(IMODE))) DO 1 I=1,2 A(I) = A2MODE(I,IMODE) 1 M(I+1) = RMASS(IDKPRD(I,ID2PRT(IMODE))) DO 2 I=1,3 2 M2(I) = M(I)**2 C--first compute the masses etc PCM = HWUPCM(M(1),M(2),M(3)) PCM2 = PCM**2 PHS = PCM/M2(1)/8.0D0/PIFAC C--now compute the width and max weight C--first the fermion --> fermion scalar diagrams IF(I2DRTP(IMODE).EQ.1) THEN WGT = HALF*((A(1)**2+A(2)**2)*(M2(1)+M2(2)-M2(3)) & +FOUR*A(1)*A(2)*M(1)*M(2)) E1 = SQRT(M2(2)+PCM2) E2 = SQRT(M2(3)+PCM2) MWGT = HALF*M2(1)/(E1+E2)*(E1+PCM)*ABS(A(1)**2-A(2)**2)+WGT C--next the fermion --> scalar fermion diagrams ELSEIF(I2DRTP(IMODE).EQ.2) THEN WGT = HALF*((A(1)**2+A(2)**2)*(M2(1)+M2(3)-M2(2)) & +FOUR*A(1)*A(2)*M(1)*M(3)) E1 = SQRT(M2(2)+PCM2) E2 = SQRT(M2(3)+PCM2) MWGT = HALF*M2(1)/(E1+E2)*(E2+PCM)*ABS(A(1)**2-A(2)**2)+WGT C--next the fermion --> scalar antifermion diagrams ELSEIF(I2DRTP(IMODE).EQ.3) THEN WGT = HALF*((A(1)**2+A(2)**2)*(M2(1)+M2(3)-M2(2)) & +FOUR*A(1)*A(2)*M(1)*M(3)) E1 = SQRT(M2(2)+PCM2) E2 = SQRT(M2(3)+PCM2) MWGT = HALF*M2(1)/(E1+E2)*(E2+PCM)*ABS(A(1)**2-A(2)**2)+WGT C--next the fermion --> fermion gauge boson diagrams ELSEIF(I2DRTP(IMODE).EQ.4) THEN WGT = 2.0D0*(M2(1)-M2(2))**2 MWGT = WGT C--next the scalar --> fermion antifermion diagrams ELSEIF(I2DRTP(IMODE).EQ.5) THEN WGT = (M2(1)-M2(2)-M2(3))*(A(1)**2+A(2)**2) & -FOUR*M(2)*M(3)*A(1)*A(2) MWGT = WGT C--next the scalar --> fermion fermion diagrams ELSEIF(I2DRTP(IMODE).EQ.6) THEN WGT = (M2(1)-M2(2)-M2(3))*(A(1)**2+A(2)**2) & -FOUR*M(2)*M(3)*A(1)*A(2) MWGT = WGT C--next the fermion --> fermion pion diagrams ELSEIF(I2DRTP(IMODE).EQ.7) THEN WGT = HALF/FOUR/RMASS(198)**4*( & (A(1)**2+A(2)**2)*((M2(1)-M2(2))**2-M2(3)*(M2(1)+M2(2))) & +FOUR*M(1)*M(2)*M2(3)*A(1)*A(2)) E1 = SQRT(M2(2)+PCM2) E2 = SQRT(M2(3)+PCM2) MWGT =ONE/8.0D0/RMASS(198)**4*ABS(A(1)**2-A(2)**2)* & M(1)*(M(1)*M2(3)+(M2(1)-M2(2)+M2(3))*(E2+PCM))+WGT C--next scalar --> antifermion fermion diagrams ELSEIF(I2DRTP(IMODE).EQ.8) THEN WGT = (M2(1)-M2(2)-M2(3))*(A(1)**2+A(2)**2) & -FOUR*M(2)*M(3)*A(1)*A(2) MWGT = WGT C--next fermion --> gravitino photon ELSEIF(I2DRTP(IMODE).EQ.9) THEN WGT = 8.0D0*M2(1)**3 MWGT = WGT C--next fermion --> gravitino scalar ELSEIF(I2DRTP(IMODE).EQ.10) THEN WGT = HALF*(M2(1)-M2(3))**3 E1 = SQRT(M2(2)+PCM2) E2 = SQRT(M2(3)+PCM2) MWGT = TWO*M2(1)/(E1+E2)*(E1+PCM)*(M2(1)-M2(3))**2 +WGT C--next sfermion --> fermion gravitino ELSEIF(I2DRTP(IMODE).EQ.11) THEN WGT = (M2(1)-M2(2))**3 MWGT = WGT C--next antisfermion --> fermion gravitino ELSEIF(I2DRTP(IMODE).EQ.12) THEN WGT = (M2(1)-M2(2))**3 MWGT = WGT C--next the scalar --> antifermion antifermion diagrams ELSEIF(I2DRTP(IMODE).EQ.13) THEN WGT = (M2(1)-M2(2)-M2(3))*(A(1)**2+A(2)**2) & -FOUR*M(2)*M(3)*A(1)*A(2) MWGT = WGT C--next the antifermion --> scalar antifermion diagrams ELSEIF(I2DRTP(IMODE).EQ.14) THEN WGT = HALF*((A(1)**2+A(2)**2)*(M2(1)+M2(3)-M2(2)) & +FOUR*A(1)*A(2)*M(1)*M(3)) E1 = SQRT(M2(2)+PCM2) E2 = SQRT(M2(3)+PCM2) MWGT = HALF*M2(1)/(E1+E2)*(E2+PCM)*ABS(A(1)**2-A(2)**2)+WGT C--unrecognised issue warning ELSE CALL HWWARN('HWITWO',500) ENDIF WGT = P2MODE(IMODE)* WGT*PHS MWGT = 1.1D0*P2MODE(IMODE)*MWGT*PHS C--put the information in the common block WT2MAX(IMODE) = MWGT C--output the information IF(IPRINT.EQ.2) THEN WRITE(*,3010) WGT WRITE(*,3020) MWGT WRITE(*,3030) WGT/HBAR/BRFRAC(ID2PRT(IMODE))* & RLTIM(IDK(ID2PRT(IMODE))) ENDIF RETURN C--format statements 3010 FORMAT(' PARTIAL WIDTH = ',G12.4) 3020 FORMAT(' MAXIMUM WEIGHT = ',E12.4) 3030 FORMAT(' RATIO TO ISAJET VALUE = ',G12.4) END CDECK ID>, HWD3ME. *CMZ :- -20/10/99 09:46:43 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3ME(ID,ITYPE,IMODE,RHOIN,IDSPIN) C----------------------------------------------------------------------- C Subroutine to perform the three body decays for spin correlations C and SUSY three body modes C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IMODE,I,J,ID,IDP(4+NDIAGR),ITYPE,NDIA,ID1,ID2, & DRTYPE(NDIAGR),NTRY,IDSPIN,NCTHRE,DRCF(NDIAGR) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,WGT,M342,HWRUNI, & HWUPCM,M232,M242,WMAX,WSUM,WSSUM,MR,PRE,TEMP,HWRGEN,WTMAX, & BRW(6),BRZ(12),P(5,4),PM(5,4),WGTM,CFTHRE(NCFMAX,NCFMAX) DOUBLE COMPLEX S,D,RHOIN(2,2),F0(2,2,8),F3(2,2,8),F1(2,2,8), & F2(2,2,8),F0M(2,2,8),F1M(2,2,8),F01(2,2,8,8) EXTERNAL HWRUNI,HWUPCM,HWRGEN COMMON/HWHEWS/S(8,8,2),D(8,8) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF SAVE BRW,BRZ DATA BRW/0.321D0,0.321D0,0.000D0,0.108D0,0.108D0,0.108D0/ DATA BRZ/0.154D0,0.120D0,0.154D0,0.120D0,0.152D0,0.000D0, & 0.033D0,0.067D0,0.033D0,0.067D0,0.033D0,0.067D0/ C--compute the masses of external particles for the decay mode C--first for true three body decay modes IF(ITYPE.EQ.0) THEN C--initalisation for the diagrams WTMAX = WT3MAX(IMODE) PRE = P3MODE(IMODE) NCTHRE = N3NCFL(IMODE) NDIA = NDI3BY(IMODE) IDP(1) = IDK(ID3PRT(IMODE)) DO 1 I=1,3 1 IDP(I+1) = IDKPRD(I,ID3PRT(IMODE)) DO 2 I=1,NCTHRE DO 2 J=1,NCTHRE 2 CFTHRE(I,J) = SPN3CF(I,J,IMODE) C--enter the couplings for the diagrams DO 3 I=1,NDI3BY(IMODE) DRTYPE(I) = I3DRTP(I,IMODE) DRCF (I) = I3DRCF(I,IMODE) DO 3 J=1,2 A(J,I) = A3MODE(J,I,IMODE) 3 B(J,I) = B3MODE(J,I,IMODE) C--enter the intermediate masses for the diagrams DO 4 I=1,NDI3BY(IMODE) IDP(I+4) = I3MODE(I,IMODE) MR(I) = RMASS(I3MODE(I,IMODE)) MS(I) = MR(I)**2 IF(I3MODE(I,IMODE).GT.200) THEN MWD(I) = RMASS(I3MODE(I,IMODE))*HBAR/RLTIM(I3MODE(I,IMODE)) ELSEIF(I3MODE(I,IMODE).EQ.200) THEN MWD(I) = RMASS(200)*GAMZ ELSEIF(I3MODE(I,IMODE).EQ.198.OR.I3MODE(I,IMODE).EQ.199) THEN MWD(I) = RMASS(198)*GAMW ELSEIF(I3MODE(I,IMODE).EQ.59) THEN MWD(I) = 0.0D0 ENDIF 4 CONTINUE C--reorder for top quark decay modes(b first then W products) IF(IDP(1).EQ.6.OR.IDP(1).EQ.12) THEN I = IDP(2) IDP(2) = IDP(4) IDP(4) = IDP(3) IDP(3) = I ENDIF C--reorder if fermion not first IF(IDP(3).GT.IDP(4).AND.((IDP(1).EQ.6.OR.IDP(1).EQ.12).OR. & IDP(2).GE.400)) THEN I = IDP(3) IDP(3) = IDP(4) IDP(4) = I ENDIF C--then for two body modes to gauge bosons including boson decays ELSE C--initalisation for the diagram WTMAX = WTBMAX(ITYPE,IMODE) NDIA = 1 PRE = PBMODE(ITYPE,IMODE) DRTYPE(1) = IBDRTP(IMODE) DRCF (1) = 1 NCTHRE = 1 CFTHRE(1,1) = ONE C--particles in decay IDP(1) = IDK(IDBPRT(IMODE)) IDP(2) = IDKPRD(1,IDBPRT(IMODE)) IF(IDP(2).GE.198.AND.IDP(2).LE.200) & IDP(2) = IDKPRD(2,IDBPRT(IMODE)) IDP(5) = IBMODE(IMODE) C--masses of virtual particles and couplings MR(1) = RMASS(IBMODE(IMODE)) MS(1) = MR(1)**2 DO J=1,2 A(J,1) = ABMODE(J,IMODE) B(J,1) = BBMODE(J,ITYPE,IMODE) ENDDO IF(IBMODE(IMODE).EQ.200) THEN MWD(1) = RMASS(200)*GAMZ ELSE MWD(1) = RMASS(198)*GAMW ENDIF C--particles from boson decay IF(IBMODE(IMODE).EQ.200) THEN ID1 = ITYPE IF(ITYPE.GT.6) ID1 = ID1+114 ID2 = ID1+6 ELSE ID1 = 2*ITYPE-1 IF(ITYPE.GT.3) ID1 = ID1+114 ID2 = ID1+7 IF(IBMODE(IMODE).EQ.198) THEN I = ID1+6 ID1 = ID2-6 ID2 = I ENDIF ENDIF IDP(3) = ID1 IDP(4) = ID2 C--only do the decay if possible for an on-shell boson IF(RMASS(ID1)+RMASS(ID2).GT.MR(1)) RETURN IF(IPRINT.EQ.2.AND..NOT.GENEV) & WRITE(6,3000) RNAME(IDP(5)),RNAME(IDP(3)),RNAME(IDP(4)) MA(3) = RMASS(IDP(3)) MA(4) = RMASS(IDP(4)) DO 5 I=1,4 5 MA2(I) = MA(I)**2 ENDIF C--set up the masses MA OFF SHELL MB ON SHELL DO 6 I=1,4 MB(I) = RMASS(IDP(I)) MB2(I) = MB(I)**2 IF(.NOT.GENEV) THEN MA (I) = MB (I) MA2(I) = MB2(I) ENDIF 6 CONTINUE IF(MA(1).LT.MA(2)+MA(3)+MA(4)) RETURN C--compute the width and maximum weight if initialising IF(.NOT.GENEV) THEN C--search for maximum weight WMAX = ZERO WSUM = ZERO WSSUM = ZERO DO 7 I=1,NSEARCH CALL HWD3M0(1,NDIA,WGT,WGTM,RHOIN,IDSPIN) WGT = WGT*PRE WGTM=WGTM*PRE IF(WGTM.GT.WMAX) WMAX = WGTM WSUM = WSUM+WGT WSSUM = WSSUM+WGT**2 IF(WGT.LT.ZERO) CALL HWWARN('HWD3ME',500) 7 CONTINUE C--compute width and maximum weight WSUM = WSUM/DBLE(NSEARCH) WSSUM = MAX(ZERO,WSSUM/DBLE(NSEARCH)-WSUM**2) WSSUM = SQRT(WSSUM/DBLE(NSEARCH)) C--if required output results IF(IPRINT.EQ.2) THEN WRITE(6,3010) WSUM,WSSUM WRITE(6,3020) WMAX IF(ITYPE.EQ.0) THEN TEMP = BRFRAC(ID3PRT(IMODE))*HBAR/RLTIM(IDK(ID3PRT(IMODE))) ELSE IF(IBMODE(IMODE).EQ.200) THEN TEMP = BRFRAC(IDBPRT(IMODE))*HBAR/ & RLTIM(IDK(IDBPRT(IMODE)))*BRZ(ITYPE) ELSE TEMP = BRFRAC(IDBPRT(IMODE))*HBAR/ & RLTIM(IDK(IDBPRT(IMODE)))*BRW(ITYPE) ENDIF ENDIF WRITE(6,3030) WSUM/TEMP,WSSUM/TEMP ENDIF C--set up the maximum weight IF(ITYPE.EQ.0) THEN WT3MAX(IMODE) = 1.1D0*WMAX ELSE WTBMAX(ITYPE,IMODE) = 1.1D0*WMAX ENDIF C--if not initialising generate the momenta ELSE C--generate a configuation NTRY = 0 100 NTRY = NTRY+1 CALL HWD3M0(ID,NDIA,WGT,WGTM,RHOIN,IDSPIN) WGT = WGT*PRE C--check maximum isn't violated, increase and issue warning if it is IF(WGT.GT.WTMAX) THEN CALL HWWARN('HWD3ME',1) IF(ITYPE.EQ.0) THEN WRITE(6,3040) RNAME(IDP(1)),RNAME(IDP(2)),RNAME(IDP(3)), & RNAME(IDP(4)),WTMAX,WGT*1.1D0 ELSE WRITE(6,3050) RNAME(IDP(1)),RNAME(IDP(2)),RNAME(IDP(5)) WRITE(6,3060) RNAME(IDP(5)),RNAME(IDP(3)),RNAME(IDP(4)), & WTMAX,WGT*1.1D0 ENDIF WTMAX = WGT*1.1D0 IF(ITYPE.EQ.0) THEN WT3MAX(IMODE) = WTMAX ELSE WTBMAX(ITYPE,IMODE) = WTMAX ENDIF ENDIF IF(HWRGEN(0)*WTMAX.GT.WGT.AND.NTRY.LT.NSNTRY) GOTO 100 IF(NTRY.GE.NSNTRY) THEN CALL HWWARN('HWD3ME',100) GOTO 999 ENDIF ENDIF RETURN C--format statements for the outputs 3000 FORMAT(/' FOLLOWED BY ',A8,' --> ',A8,' ',A8) 3010 FORMAT(' PARTIAL WIDTH = ',G12.4,' +/- ',G12.4) 3020 FORMAT(' MAXIMUM WEIGHT = ',E12.4) 3030 FORMAT(' RATIO TO ISAJET VALUE = ',G12.4,' +/- ',G12.4) 3040 FORMAT(/'WEIGHT FOR DECAY ',A8,' --> ',A8,' ',A8,' ',A8, & 'EXCEEDS MAX', & /10X,' MAXIMUM WEIGHT =',1PG24.16, & /10X,'NEW MAXIMUM WEIGHT =',1PG24.16) 3050 FORMAT(/'WEIGHT FOR DECAY ',A8,' --> ',A8,' ',A8) 3060 FORMAT(/' FOLLOWED BY ',A8,' --> ',A8,' ',A8,' EXCEEDS MAX', & /10X,' MAXIMUM WEIGHT =',1PG24.16, & /10X,'NEW MAXIMUM WEIGHT =',1PG24.16) 999 RETURN END CDECK ID>, HWD3M0. *CMZ :- -09/04/02 13:46:07 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3M0(ID,NDIA,WGT,MWGT,RHOIN,IDSPIN) C----------------------------------------------------------------------- C Subroutine to calculate the matrix element for a given mode C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER I,J,P0,P1,P2,P3,P0P,IB,ID,IDP(4+NDIAGR),IDSPIN,NDIA, & DRTYPE(NDIAGR),NCTHRE,DRCF(NDIAGR) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,WGT,FJAC,M342,HWRUNI, & M34,PCMA,PCMB,HWUPCM,PHS,N(3),HWVDOT,PP,HWULDO,EPS,PTMP(5), & M232,M242,PRE,PLAB,PRW,XMASS,PCM,P(5,4),PM(5,4),MR,PREF(5), & MMIN,MMAX,MWGT,CFTHRE(NCFMAX,NCFMAX),WGTB(NCFMAX),WGTC, & HWRGEN,A02,A2 DOUBLE COMPLEX S,D,ME(2,2,2,2,NCFMAX),MED(2,2,2,2),F01(2,2,8,8), & RHOIN(2,2),F0(2,2,8),F1(2,2,8),F2(2,2,8),F0M(2,2,8), & RHOB(2,2),F1M(2,2,8),F3(2,2,8) EXTERNAL HWRUNI,HWUPCM,HWVDOT,HWULDO,HWRGEN COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF COMMON/HWHEWS/S(8,8,2),D(8,8) PARAMETER(EPS=1D-10) SAVE PREF DATA PREF/1.0D0,0.0D0,0.0D0,1.0D0,0.0D0/ C--select the momenta of the particles C--first see if there is a boson mode IB = -1 DO 1 I=1,NDIA IF(DRTYPE(I).EQ.1.OR.DRTYPE(I).EQ.5.OR.DRTYPE(I).EQ.6.OR. & DRTYPE(I).EQ.7) IB = IDP(I+4) 1 CONTINUE C--compute the mass of the 34 subsystem flat if no boson otherwise Breit-Wigner MMIN = (MA(3)+MA(4))**2 MMAX = (MA(1)-MA(2))**2 IF(IB.GT.0.AND.IB.NE.59) THEN CALL HWHGB1(1,2,IB,FJAC,M342,MMAX,MMIN) ELSEIF(IB.EQ.59) THEN M342 = HWRUNI(1,LOG(MMIN),LOG(MMAX)) M342 = EXP(M342) FJAC = (LOG(MMAX)-LOG(MMIN))*M342 ELSEIF((DRTYPE(1).EQ.2.OR.DRTYPE(1).EQ.17).AND. & IDP(5).EQ.206.OR.IDP(5).EQ.207) THEN A02 = ATAN((MMIN-MS(1))/MWD(1)) A2 = ATAN((MMAX-MS(1))/MWD(1))-A02 M342 = MS(1)+MWD(1)*TAN(A02+A2*HWRGEN(1)) FJAC = A2*((M342-MS(1))**2+MWD(1)**2)/MWD(1) ELSE FJAC = MMAX-MMIN M342 = HWRUNI(1,MMIN,MMAX) ENDIF M34 = SQRT(M342) FJAC = HALF*FJAC/M34 C--copy the momentum of the decaying particle into the internal common block CALL HWVEQU(5,PHEP(1,ID),P(1,1)) DO 2 I=2,4 2 P(5,I) = MA(I) C--perform the decay 1---> 2+34 PCMA = HWUPCM(MA(1),MA(2),M34) PLAB(5,1) = M34 CALL HWDTWO(P(1,1),PLAB(1,1),P(1,2),PCMA,2.0D0,.TRUE.) C--perform the decay 34 --> 3+4 PCMB = HWUPCM(M34,MA(3),MA(4)) CALL HWDTWO(PLAB(1,1),P(1,3),P(1,4),PCMB,2.0D0,.TRUE.) C--compute the phase sapce factors PHS = PCMA*PCMB*FJAC/32.0D0/PIFAC**3/MA2(1) C--compute the other possible masses for the propagator M232 = MA2(2)+MA2(3)+TWO*HWULDO(P(1,2),P(1,3)) M242 = MA2(2)+MA2(4)+TWO*HWULDO(P(1,2),P(1,4)) C--compute the vectors for the helicity amplitudes DO 3 I=1,4 C--compute the references vectors C--not important if SM particle which can't have spin measured C--ie anything other the top and tau C--also not important if particle is approx massless C--first the SM particles other than top and tau IF(IDP(I).LT.400.AND.(IDP(I).NE.6.AND.IDP(I).NE.12 & .AND.IDP(I).NE.125.AND.IDP(I).NE.131)) THEN CALL HWVEQU(5,PREF,PLAB(1,I+4)) C--all other particles ELSE PP = SQRT(HWVDOT(3,P(1,I),P(1,I))) CALL HWVSCA(3,ONE/PP,P(1,I),N) PLAB(4,I+4) = HALF*(P(4,I)-PP) PP = HALF*(PP-MA(I)-PP**2/(MA(I)+P(4,I))) CALL HWVSCA(3,PP,N,PLAB(1,I+4)) CALL HWUMAS(PLAB(1,I+4)) PP = HWVDOT(3,PLAB(1,I+4),PLAB(1,I+4)) C--fix to avoid problems if approx massless due to energy IF(PP.LT.EPS) CALL HWVEQU(5,PREF,PLAB(1,I+4)) ENDIF C--now the massless vectors PP = HALF*MA2(I)/HWULDO(PLAB(1,I+4),P(1,I)) DO 4 J=1,4 4 PLAB(J,I) = P(J,I)-PP*PLAB(J,I+4) 3 CALL HWUMAS(PLAB(1,I)) C--change order of momenta for call to HE code DO 5 I=1,4 PM(1,I) = P(3,I) PM(2,I) = P(1,I) PM(3,I) = P(2,I) PM(4,I) = P(4,I) 5 PM(5,I) = P(5,I) DO 6 I=1,8 PCM(1,I)=PLAB(3,I) PCM(2,I)=PLAB(1,I) PCM(3,I)=PLAB(2,I) PCM(4,I)=PLAB(4,I) 6 PCM(5,I)=PLAB(5,I) C--compute the S functions CALL HWHEW2(8,PCM(1,1),S(1,1,2),S(1,1,1),D) DO 7 I=1,8 DO 7 J=1,8 S(I,J,2) = -S(I,J,2) 7 D(I,J) = TWO*D(I,J) C--compute the F functions CALL HWVSUM(5,PM(1,1),PM(1,2),PTMP) CALL HWUMAS(PTMP) CALL HWH2F2(8,F0 ,5,PM(1,1), MA(1)) CALL HWH2F1(8,F1 ,6,PM(1,2), MA(2)) CALL HWH2F1(8,F2 ,7,PM(1,3), MA(3)) CALL HWH2F1(8,F3 ,8,PM(1,4), MA(4)) CALL HWH2F1(8,F0M,5,PM(1,1),-MA(1)) CALL HWH2F2(8,F1M,6,PM(1,2),-MA(2)) CALL HWH2F3(8,F01,PTMP,ZERO) C--now find the prefactor for all the diagrams PRE = HWULDO(PCM(1,5),PM(1,1))*HWULDO(PCM(1,6),PM(1,2))* & HWULDO(PCM(1,7),PM(1,3))*HWULDO(PCM(1,8),PM(1,4)) PRE = ONE/SQRT(PRE) C--zero the matrix element DO 8 P0=1,2 DO 8 P1=1,2 DO 8 P2=1,2 DO 8 P3=1,2 DO 8 I =1,NCTHRE 8 ME(P0,P1,P2,P3,I) = (0.0D0,0.0D0) C--now call the subroutines to compute the individual diagrams DO 9 I=1,NDIA C--vector boson exchange diagram IF(DRTYPE(I).EQ.1) THEN CALL HWD3M1(I,MED) C--Higgs boson exchange diagram ELSEIF(DRTYPE(I).EQ.2) THEN CALL HWD3M2(I,MED) C--antisfermion exchange diagram ELSEIF(DRTYPE(I).EQ.3) THEN CALL HWD3M3(I,MED) C--sfermion exchange diagram ELSEIF(DRTYPE(I).EQ.4) THEN CALL HWD3M4(I,MED) C--antifermion vector boson exchange diagram ELSEIF(DRTYPE(I).EQ.5) THEN CALL HWD3M5(I,MED) C--scalar vector boson exchange diagram ELSEIF(DRTYPE(I).EQ.6) THEN CALL HWD3M6(I,MED) C--gravitino fermion fermion ELSEIF(DRTYPE(I).EQ.7) THEN CALL HWD3M7(I,MED) C--fermion RPV1 ELSEIF(DRTYPE(I).EQ.8) THEN CALL HWD3M8(I,MED) C--fermion RPV2 ELSEIF(DRTYPE(I).EQ.9) THEN CALL HWD3M9(I,MED) C--fermion RPV3 ELSEIF(DRTYPE(I).EQ.10) THEN CALL HWD3MA(I,MED) C--fermion --> 3 fermions 1 ELSEIF(DRTYPE(I).EQ.11) THEN CALL HWD3MB(I,MED) C--fermion --> 3 fermions 2 ELSEIF(DRTYPE(I).EQ.12) THEN CALL HWD3MC(I,MED) C--fermion --> 3 fermions 3 ELSEIF(DRTYPE(I).EQ.13) THEN CALL HWD3MD(I,MED) C--fermion --> 3 antifermions 1 ELSEIF(DRTYPE(I).EQ.14) THEN CALL HWD3MF(I,MED) C--fermion --> 3 antifermions 2 ELSEIF(DRTYPE(I).EQ.15) THEN CALL HWD3MG(I,MED) C--fermion --> 3 antifermions 3 ELSEIF(DRTYPE(I).EQ.16) THEN CALL HWD3MH(I,MED) C--antifermion --> antifermion fermion fermion ELSEIF(DRTYPE(I).EQ.17) THEN CALL HWD3MI(I,MED) C--error not known ELSE CALL HWWARN('HWD3M0',501) ENDIF C--add up the matrix elements DO 10 P0=1,2 DO 10 P1=1,2 DO 10 P2=1,2 DO 10 P3=1,2 10 ME(P0,P1,P2,P3,DRCF(I)) = ME(P0,P1,P2,P3,DRCF(I)) & +MED(P0,P1,P2,P3) 9 CONTINUE C--preform the final normalisation DO 15 P0=1,2 DO 15 P1=1,2 DO 15 P2=1,2 DO 15 P3=1,2 DO 15 I =1,NCTHRE 15 ME(P0,P1,P2,P3,I) = PRE*ME(P0,P1,P2,P3,I) C--compute the unnormalised spin density matrix DO 35 P0 =1,2 DO 35 P0P=1,2 RHOB(P0,P0P) = (0.0D0,0.0D0) DO 35 P1=1,2 DO 35 P2=1,2 DO 35 P3=1,2 DO 35 I =1,NCTHRE DO 35 J =1,NCTHRE 35 RHOB(P0,P0P)=RHOB(P0,P0P)+CFTHRE(I,J)*ME(P0,P1,P2,P3,I)* & DCONJG(ME(P0P,P1,P2,P3,J)) C--compute the weight WGT = ZERO DO 45 P0=1,2 DO 45 P0P=1,2 45 WGT = WGT+DREAL(RHOIN(P0,P0P)*RHOB(P0,P0P)) C--normalise this for phase space WGT = WGT*PHS C--if initialising select the max weight IF(SYSPIN.OR.THREEB) & MWGT = PHS*(MAX(DBLE(RHOB(1,1)),DBLE(RHOB(2,2))) & +ABS(DBLE(RHOB(1,2)))+ABS(DIMAG(RHOB(1,2)))) C--if generating the event put the information in the common block IF(GENEV) THEN C--put the matrix element into the spin common block IF(SYSPIN) THEN DO 25 P0=1,2 DO 25 P1=1,2 DO 25 P2=1,2 DO 25 P3=1,2 DO 25 I =1,NCTHRE 25 MESPN(P0,P1,P2,P3,I,IDSPIN) = ME(P0,P1,P2,P3,I) NCFL(IDSPIN) = NCTHRE ENDIF C--if more than one colour flow pick the flow IF(SPCOPT.EQ.2.AND.NCTHRE.NE.1) THEN C--contstruct the matrix elements for the colour flows WGTC = ZERO DO 50 I=1,NCTHRE WGTB(I) = ZERO DO 55 P0=1,2 DO 55 P0P=1,2 DO 55 P1=1,2 DO 55 P2=1,2 DO 55 P3=1,2 55 WGTB(I) = WGTB(I)+CFTHRE(I,I)*DREAL( & RHOIN(P0,P0P)*ME(P0 ,P1,P2,P3,I)*DCONJG(ME(P0P,P1,P2,P3,I))) WGTB(I) = WGTB(I)*PHS 50 WGTC = WGTC+WGTB(I) WGTC = WGT/WGTC DO 60 I=1,NCTHRE 60 WGTB(I) = WGTB(I)*WGTC C--select the colour flow WGTC = HWRGEN(1)*WGT DO 70 I=1,NCTHRE IF(WGTB(I).GE.WGTC) THEN NCFL(IDSPIN) = I RETURN ENDIF 70 WGTC = WGTC-WGTB(I) C--otherwise if wrong options set issue warning ELSEIF(NCTHRE.NE.1) THEN WRITE(6,1000) CALL HWWARN('HWD3M0',500) ENDIF ENDIF 1000 FORMAT(/'MULTIPLE COLOUR FLOWS IN DECAY'/'SPCOPT=2 MUST BE USED') END CDECK ID>, HWD3M1. *CMZ :- -10/10/01 14:34:54 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3M1(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for the three body C gauge boson exchange diagram C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,C(2,2),E(2,2),ZI,APP(2,2),APM(2,2), & AMP(2,2),AMM(2,2),F1M(2,2,8),F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,CN, & MR,P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF PARAMETER(ZI=(0.0D0,1.0D0)) COMMON/HWHEWS/S(8,8,2),D(8,8) SAVE O DATA O/2,1/ C--compute the propagator factor PRE = -0.25D0/(M342-MS(ID)+ZI*MWD(ID)) CN = -ONE/MS(ID) C--compute the C and D functions DO 10 P1=1,2 DO 10 P2=1,2 IF(P1.EQ.P2) THEN C--the A functions APP(P1,P2) = B( P2 ,ID)*S(7,3,O(P1))*S(4,8, P1 ) APM(P1,P2) = 0.0D0 AMP(P1,P2) = 0.0D0 AMM(P1,P2) = -B(O(P2),ID)*MA(3)*MA(4) C--the C and E functions C(P1,P2) = A( P1 ,ID)*( MA2(1)*S(6,2,O(P2))*S(2,5, P2 ) & -MA2(2)*S(6,1,O(P2))*S(1,5, P2 )) & +A(O(P1),ID)*MA(1)*MA(2)*( S(6,1,O(P2))*S(1,5, P2 ) & -S(6,2,O(P2))*S(2,5, P2 )) E(P1,P2) =CN*(B( P2 ,ID)*( MA2(3)*S(7,4,O(P1))*S(4,8, P1 ) & +MA2(4)*S(7,3,O(P1))*S(3,8, P1 )) & -B(O(P2),ID)*MA(3)*MA(4)*( S(7,3,O(P1))*S(3,8, P1 ) & +S(7,4,O(P1))*S(4,8, P1 ))) ELSE C--the A functions APP(P1,P2) = 0.0D0 APM(P1,P2) = B( P2 ,ID)*MA(3)*S(4,8,O(P1)) AMP(P1,P2) =-B(O(P2),ID)*MA(4)*S(7,3,O(P1)) AMM(P1,P2) = 0.0D0 C--the C and D functions C(P1,P2) = A( P1 ,ID)*MA(2)*( MA2(1)*S(6,5,O(P2)) & -S(6,2,O(P2))*S(2,1, P2 )*S(1,5,O(P2))) & +A(O(P1),ID)*MA(1)*(-MA2(2)*S(6,5,O(P2)) & +S(6,2,O(P2))*S(2,1, P2 )*S(1,5,O(P2))) E(P1,P2) =CN*( B( P2 ,ID)*MA(3)*( MA2(4)*S(7,8,O(P1)) & +S(7,3,O(P1))*S(3,4, P1 )*S(4,8,O(P1))) & -B(O(P2),ID)*MA(4)*( MA2(3)*S(7,8,O(P1)) & +S(7,3,O(P1))*S(3,4, P1 )*S(4,8,O(P1)))) ENDIF 10 CONTINUE C--compute the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 ME(P0,P1,P2,P3) = & APP(P2,P3)*( A(O(P2),ID)*F1(O(P1), P2 ,4)*F0( P2 ,O(P0),3) & +A( P2 ,ID)*F1(O(P1),O(P2),3)*F0(O(P2),O(P0),4)) & +APM(P2,P3)*( A( P2 ,ID)*F1(O(P1),O(P2),4)*F0(O(P2),O(P0),7) & +A(O(P2),ID)*F1(O(P1), P2 ,7)*F0( P2 ,O(P0),4)) & +AMP(P2,P3)*( A(O(P2),ID)*F1(O(P1), P2 ,8)*F0( P2 ,O(P0),3) & +A( P2 ,ID)*F1(O(P1),O(P2),3)*F0(O(P2),O(P0),8)) & +AMM(P2,P3)*( A( P2 ,ID)*F1(O(P1),O(P2),8)*F0(O(P2),O(P0),7) & +A(O(P2),ID)*F1(O(P1), P2 ,7)*F0( P2 ,O(P0),8)) 20 ME(P0,P1,P2,P3) =PRE*(TWO*ME(P0,P1,P2,P3)+C(P0,P1)*E(P2,P3)) END CDECK ID>, HWD3M2. *CMZ :- -10/10/01 14:34:54 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3M2(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for the three body C Higgs boson exchange diagram C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,ZI,V1(2,2),V2(2,2),F1M(2,2,8), & F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, & P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF COMMON/HWHEWS/S(8,8,2),D(8,8) PARAMETER(ZI=(0.0D0,1.0D0)) SAVE O DATA O/2,1/ C--decide whether to do the diagram IF(MB(2)+MR(ID).LT.MB(1).AND.MR(ID).GT.MB(3)+MB(4).AND. & IDP(4+ID).NE.206) THEN DO 5 P0=1,2 DO 5 P1=1,2 DO 5 P2=1,2 DO 5 P3=1,2 5 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) RETURN ENDIF C--calculate the propagator factor PRE = 0.25D0/(M342-MS(ID)+ZI*MWD(ID)) C--calculate the vertex functions DO 10 P1=1,2 DO 10 P2=1,2 V1(P1,P2) = PRE*( A( P1 ,ID)*F1(O(P2), P1 ,1)*S(1,5,P1) & +A(O(P1),ID)*F1(O(P2),O(P1),5)*MA(1)) 10 V2(P1,P2) = B( P2 ,ID)*F2(O(P1), P2 ,4)*S(4,8,P2) & -B(O(P2),ID)*F2(O(P1),O(P2),8)*MA(4) C--calculate the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 20 ME(P0,P1,P2,P3) = V1(P0,P1)*V2(P2,P3) END CDECK ID>, HWD3M3. *CMZ :- -10/10/01 14:34:54 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3M3(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for the three body C antisfermion exchange diagram C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,V1(2,2),V2(2,2),ZI,F1M(2,2,8), & F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, & P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF COMMON/HWHEWS/S(8,8,2),D(8,8) PARAMETER(ZI=(0.0D0,1.0D0)) SAVE O DATA O/2,1/ C--decide whether to do the diagram IF(MB(3)+MR(ID).LT.MB(1).AND.MR(ID).GT.MB(2)+MB(4)) THEN DO 5 P0=1,2 DO 5 P1=1,2 DO 5 P2=1,2 DO 5 P3=1,2 5 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) RETURN ENDIF C--compute the propagator factor PRE = -0.25D0/(M242-MS(ID)+ZI*MWD(ID)) C--compute the vertex factors DO 10 P1=1,2 DO 10 P2=1,2 V1(P1,P2) = PRE*( A( P1 ,ID)*F2(O(P2), P1 ,1)*S(1,5,P1) & +A(O(P1),ID)*F2(O(P2),O(P1),5)*MA(1)) 10 V2(P1,P2) = B( P2 ,ID)*F1(O(P1), P2 ,4)*S(4,8,P2) & -B(O(P2),ID)*F1(O(P1),O(P2),8)*MA(4) C--compute the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 20 ME(P0,P1,P2,P3) = V1(P0,P2)*V2(P1,P3) END CDECK ID>, HWD3M4. *CMZ :- -10/10/01 14:34:54 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3M4(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for the three body C sfermion exchange diagram C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,ZI,V1(2,2),V2(2,2),F1M(2,2,8), & F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, &P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWHEWS/S(8,8,2),D(8,8) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF PARAMETER(ZI=(0.0D0,1.0D0)) SAVE O DATA O/2,1/ C--decide whether to do the diagram IF(MB(4)+MR(ID).LT.MB(1).AND.MR(ID).GT.MB(2)+MB(3)) THEN DO 5 P0=1,2 DO 5 P1=1,2 DO 5 P2=1,2 DO 5 P3=1,2 5 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) RETURN ENDIF C--compute the propagator factor PRE = 0.25D0/(M232-MS(ID)+ZI*MWD(ID)) C--compute the factors for the two vertices DO 10 P1=1,2 DO 10 P2=1,2 V1(P1,P2) = PRE*( A( P2 ,ID)*F0M( P1 , P2 ,4)*S(4,8, P2 ) & -A(O(P2),ID)*F0M( P1 ,O(P2),8)*MA(4)) 10 V2(P1,P2) = B(O(P1),ID)*F2 (O(P2),O(P1),2)*S(2,6,O(P1)) & -B( P1 ,ID)*F2 (O(P2), P1 ,6)*MA(2) C--now compute the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 20 ME(P0,P1,P2,P3) = V1(P0,P3)*V2(P1,P2) END CDECK ID>, HWD3M5. *CMZ :- -10/10/01 14:34:54 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3M5(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for the three body C gauge boson exchange diagram (antiparticle decay) C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8), & F0M(2,2,8),F2(2,2,8),PRE,C(2,2),E(2,2),ZI,APP(2,2),APM(2,2), & AMP(2,2),AMM(2,2),F1M(2,2,8),F3(2,2,8),F01(2,2,8,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,CN,MR, & P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF PARAMETER(ZI=(0.0D0,1.0D0)) COMMON/HWHEWS/S(8,8,2),D(8,8) SAVE O DATA O/2,1/ C--compute the propagator factor PRE = -0.25D0/(M342-MS(ID)+ZI*MWD(ID)) CN = -ONE/MS(ID) C--compute the C and D functions DO 10 P1=1,2 DO 10 P2=1,2 IF(P1.EQ.P2) THEN C--the A functions APP(P1,P2) = B( P2 ,ID)*S(7,3,O(P1))*S(4,8, P1 ) APM(P1,P2) = 0.0D0 AMP(P1,P2) = 0.0D0 AMM(P1,P2) = -B(O(P2),ID)*MA(3)*MA(4) C--the C and E functions C(P1,P2) = A( P2 ,ID)*( MA2(1)*S(5,2,O(P1))*S(2,6, P1 ) & -MA2(2)*S(5,1,O(P1))*S(1,6, P1 )) & +A(O(P2),ID)*MA(1)*MA(2)*( S(5,1,O(P1))*S(1,6, P1 ) & -S(5,2,O(P1))*S(2,6, P1 )) E(P1,P2) =CN*(B( P2 ,ID)*( MA2(3)*S(7,4,O(P1))*S(4,8, P1 ) & +MA2(4)*S(7,3,O(P1))*S(3,8, P1 )) & -B(O(P2),ID)*MA(3)*MA(4)*( S(7,3,O(P1))*S(3,8, P1 ) & +S(7,4,O(P1))*S(4,8, P1 ))) ELSE C--the A functions APP(P1,P2) = 0.0D0 APM(P1,P2) = B( P2 ,ID)*MA(3)*S(4,8,O(P1)) AMP(P1,P2) =-B(O(P2),ID)*MA(4)*S(7,3,O(P1)) AMM(P1,P2) = 0.0D0 C--the C and D functions C(P1,P2) = A( P2 ,ID)*MA(1)*( MA2(2)*S(5,6,O(P1)) & -S(5,1,O(P1))*S(1,2, P1 )*S(2,6,O(P1))) & +A(O(P2),ID)*MA(2)*(-MA2(1)*S(5,6,O(P1)) & +S(5,1,O(P1))*S(1,2, P1 )*S(2,6,O(P1))) E(P1,P2) =CN*( B( P2 ,ID)*MA(3)*( MA2(4)*S(7,8,O(P1)) & +S(7,3,O(P1))*S(3,4, P1 )*S(4,8,O(P1))) & -B(O(P2),ID)*MA(4)*( MA2(3)*S(7,8,O(P1)) & +S(7,3,O(P1))*S(3,4, P1 )*S(4,8,O(P1)))) ENDIF 10 CONTINUE C--compute the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 ME(P0,P1,P2,P3) = & APP(P2,P3)*( A(O(P2),ID)*F0M(O(P0), P2 ,4)*F1M( P2 ,O(P1),3) & +A( P2 ,ID)*F0M(O(P0),O(P2),3)*F1M(O(P2),O(P1),4)) & +APM(P2,P3)*( A( P2 ,ID)*F0M(O(P0),O(P2),4)*F1M(O(P2),O(P1),7) & +A(O(P2),ID)*F0M(O(P0), P2 ,7)*F1M( P2 ,O(P1),4)) & +AMP(P2,P3)*( A(O(P2),ID)*F0M(O(P0), P2 ,8)*F1M( P2 ,O(P1),3) & +A( P2 ,ID)*F0M(O(P0),O(P2),3)*F1M(O(P2),O(P1),8)) & +AMM(P2,P3)*( A( P2 ,ID)*F0M(O(P0),O(P2),8)*F1M(O(P2),O(P1),7) & +A(O(P2),ID)*F0M(O(P0), P2 ,7)*F1M( P2 ,O(P1),8)) 20 ME(P0,P1,P2,P3) =PRE*(TWO*ME(P0,P1,P2,P3)+C(P0,P1)*E(P2,P3)) END CDECK ID>, HWD3M6. *CMZ :- -10/10/01 14:34:54 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3M6(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for the three body C gauge boson exchange diagram C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8), & F0M(2,2,8),F2(2,2,8),PRE,C(2,2),ZI,APP(2,2),APM(2,2), & AMP(2,2),AMM(2,2),F1M(2,2,8),F3(2,2,8),F01(2,2,8,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,CN,MR, & P(5,4),DOT,HWULDO,PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF DOUBLE PRECISION XMASS,PLAB,PRW,PCM COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10) PARAMETER(ZI=(0.0D0,1.0D0)) COMMON/HWHEWS/S(8,8,2),D(8,8) EXTERNAL HWULDO SAVE O DATA O/2,1/ C--compute the propagator factor PRE = SQRT(HWULDO(PCM(1,5),PM(1,1))*HWULDO(PCM(1,6),PM(1,2))) PRE = -HALF*PRE*A(1,ID)/(M342-MS(ID)+ZI*MWD(ID)) CN = -ONE/MS(ID) DOT = HWULDO(P(1,1),P(1,3))+HWULDO(P(1,1),P(1,4)) & +HWULDO(P(1,2),P(1,3))+HWULDO(P(1,2),P(1,4)) C--compute the C and D functions DO 10 P1=1,2 DO 10 P2=1,2 IF(P1.EQ.P2) THEN C--the A functions APP(P1,P2) = B( P2 ,ID)*S(7,3,O(P1))*S(4,8, P1 ) APM(P1,P2) = 0.0D0 AMP(P1,P2) = 0.0D0 AMM(P1,P2) = -B(O(P2),ID)*MA(3)*MA(4) C--the C function C(P1,P2) =CN*(B( P2 ,ID)*( MA2(3)*S(7,4,O(P1))*S(4,8, P1 ) & +MA2(4)*S(7,3,O(P1))*S(3,8, P1 )) & -B(O(P2),ID)*MA(3)*MA(4)*( S(7,3,O(P1))*S(3,8, P1 ) & +S(7,4,O(P1))*S(4,8, P1 ))) ELSE C--the A functions APP(P1,P2) = 0.0D0 APM(P1,P2) = B( P2 ,ID)*MA(3)*S(4,8,O(P1)) AMP(P1,P2) =-B(O(P2),ID)*MA(4)*S(7,3,O(P1)) AMM(P1,P2) = 0.0D0 C--the C functions C(P1,P2) =CN*( B( P2 ,ID)*MA(3)*( MA2(4)*S(7,8,O(P1)) & +S(7,3,O(P1))*S(3,4, P1 )*S(4,8,O(P1))) & -B(O(P2),ID)*MA(4)*( MA2(3)*S(7,8,O(P1)) & +S(7,3,O(P1))*S(3,4, P1 )*S(4,8,O(P1)))) ENDIF 10 CONTINUE C--compute the matrix element DO 15 P0=1,2 DO 15 P1=1,2 DO 15 P2=1,2 DO 15 P3=1,2 15 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) DO 20 P2=1,2 DO 20 P3=1,2 20 ME(1,1,P2,P3) = PRE*(DOT*C(P2,P3) & +APP(P2,P3)*F01( P2 , P2 ,3,4)+APM(P2,P3)*F01(O(P2),O(P2),7,4) & +AMP(P2,P3)*F01( P2 , P2 ,3,8)+AMM(P2,P3)*F01(O(P2),O(P2),7,8)) END CDECK ID>, HWD3M7. *CMZ :- -13/03/02 14:19:47 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3M7(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for the three body C decay fermion --> gravitino fermion antifermion (via gauge boson) C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,ZI,F1M(2,2,8),F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, &P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX),HWULDO,DL(2,2) INTEGER P0,P1,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWHEWS/S(8,8,2),D(8,8) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF PARAMETER(ZI=(0.0D0,1.0D0)) DOUBLE PRECISION XMASS,PLAB,PRW,PCM COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10) EXTERNAL HWULDO SAVE O,DL DATA O/2,1/ DATA DL/1.0D0,0.0D0,0.0D0,1.0D0/ C--compute the propagator factor PRE = HALF*HWULDO(PCM(1,6),PM(1,2))* & HWULDO(PCM(1,7),PM(1,3))*HWULDO(PCM(1,8),PM(1,4)) PRE = SQRT(PRE) PRE = PRE/(M342-MS(ID)+ZI*MWD(ID)) DO 10 P0=1,2 DO 10 P1=1,2 ME(P0,P1, P1 , P1 ) = PRE*B( P1 ,ID)*( & A(1,ID)*S(2,3,P1)*S(3,4,O(P1))*S(3,2, P1 )*F0(O(P1),O(P0),2) & +A(2,ID)* DL(P1,1)*S(2,3, P1 )*S(4,2,O(P1))*F0( 1 ,O(P0),2)) ME(P0,P1,O(P1),O(P1)) = PRE*B(O(P1),ID)*( & A(1,ID)*S(2,4,P1)*S(4,3,O(P1))*S(4,2, P1 )*F0(O(P1),O(P0),2) & +A(2,ID)* DL(P1,1)*S(2,4, P1 )*S(3,2,O(P1))*F0( 1 ,O(P0),2)) ME(P0,P1,O(P1), P1 ) = (0.0D0,0.0D0) 10 ME(P0,P1, P1 ,O(P1)) = (0.0D0,0.0D0) END CDECK ID>, HWD3M8. *CMZ :- -08/04/02 14:48:42 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3M8(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for 1st 3 body RPV C diagram f--> fbar fbar f C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,ZI,V1(2,2),V2(2,2),F1M(2,2,8), & F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, & P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF COMMON/HWHEWS/S(8,8,2),D(8,8) PARAMETER(ZI=(0.0D0,1.0D0)) SAVE O DATA O/2,1/ C--decide whether to do the diagram IF(MB(2)+MR(ID).LT.MB(1).AND.MR(ID).GT.MB(3)+MB(4)) THEN DO 5 P0=1,2 DO 5 P1=1,2 DO 5 P2=1,2 DO 5 P3=1,2 5 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) RETURN ENDIF C--calculate the propagator factor PRE = 0.25D0/(M342-MS(ID)+ZI*MWD(ID)) C--calculate the vertex functions DO 10 P1=1,2 DO 10 P2=1,2 V1(P1,P2) = PRE*( A( P2 ,ID)*F0M( P1 , P2 ,2)*S(2,6, P2) & -A(O(P2),ID)*F0M( P1 ,O(P2),6)*MA(2)) 10 V2(P1,P2) = B( P1 ,ID)*F3 (O(P2), P1 ,3)*S(3,7,P1) & -B(O(P1),ID)*F3 (O(P2),O(P1),7)*MA(3) C--calculate the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 20 ME(P0,P1,P2,P3) = V1(P0,P1)*V2(P2,P3) END CDECK ID>, HWD3M9. *CMZ :- -08/04/02 14:48:42 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3M9(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for 2nd 3 body RPV C diagram f --> fbar fbar f C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,V1(2,2),V2(2,2),ZI,F1M(2,2,8), & F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, & P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF COMMON/HWHEWS/S(8,8,2),D(8,8) PARAMETER(ZI=(0.0D0,1.0D0)) SAVE O DATA O/2,1/ C--decide whether to do the diagram IF(MB(3)+MR(ID).LT.MB(1).AND.MR(ID).GT.MB(2)+MB(4)) THEN DO 5 P0=1,2 DO 5 P1=1,2 DO 5 P2=1,2 DO 5 P3=1,2 5 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) RETURN ENDIF C--compute the propagator factor PRE = -0.25D0/(M242-MS(ID)+ZI*MWD(ID)) C--compute the vertex factors DO 10 P1=1,2 DO 10 P2=1,2 V1(P1,P2) = PRE*( A( P2 ,ID)*F0M( P1 , P2 ,3)*S(3,7,P2) & -A(O(P2),ID)*F0M( P1 ,O(P2),7)*MA(3)) 10 V2(P1,P2) = B( P1 ,ID)*F3 (O(P2), P1 ,2)*S(2,6,P1) & -B(O(P1),ID)*F3 (O(P2),O(P1),6)*MA(2) C--compute the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 20 ME(P0,P1,P2,P3) = V1(P0,P2)*V2(P1,P3) END CDECK ID>, HWD3MA. *CMZ :- -08/04/02 14:48:42 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3MA(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for 3rd 3 body RPV C diagram f --> fbar fbar f C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,ZI,V1(2,2),V2(2,2),F1M(2,2,8), & F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, &P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWHEWS/S(8,8,2),D(8,8) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF PARAMETER(ZI=(0.0D0,1.0D0)) SAVE O DATA O/2,1/ C--decide whether to do the diagram IF(MB(4)+MR(ID).LT.MB(1).AND.MR(ID).GT.MB(2)+MB(3)) THEN DO 5 P0=1,2 DO 5 P1=1,2 DO 5 P2=1,2 DO 5 P3=1,2 5 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) RETURN ENDIF C--compute the propagator factor PRE = 0.25D0/(M232-MS(ID)+ZI*MWD(ID)) C--compute the factors for the two vertices DO 10 P1=1,2 DO 10 P2=1,2 V1(P1,P2) = PRE*( A( P1 ,ID)*F3(O(P2), P1 ,1)*S(1,5,P1) & +A(O(P1),ID)*F3(O(P2),O(P1),5)*MA(1)) 10 V2(P1,P2) = B( P2 ,ID)*F1( P1 , P2 ,3)*S(3,7,P2) & -B(O(P2),ID)*F1( P1 ,O(P2),7)*MA(3) C--now compute the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 20 ME(P0,P1,P2,P3) = V1(P0,P3)*V2(P1,P2) END CDECK ID>, HWD3MB. *CMZ :- -08/04/02 14:48:42 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3MB(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for 4th 3 body RPV C diagram f --> f f f C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,ZI,V1(2,2),V2(2,2),F1M(2,2,8), & F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, & P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF COMMON/HWHEWS/S(8,8,2),D(8,8) PARAMETER(ZI=(0.0D0,1.0D0)) SAVE O DATA O/2,1/ C--decide whether to do the diagram IF(MB(2)+MR(ID).LT.MB(1).AND.MR(ID).GT.MB(3)+MB(4)) THEN DO 5 P0=1,2 DO 5 P1=1,2 DO 5 P2=1,2 DO 5 P3=1,2 5 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) RETURN ENDIF C--calculate the propagator factor PRE = 0.25D0/(M342-MS(ID)+ZI*MWD(ID)) C--calculate the vertex functions DO 10 P1=1,2 DO 10 P2=1,2 V1(P1,P2) = PRE*( A( P1 ,ID)*F1(O(P2), P1 ,1)*S(1,5,P1) & +A(O(P1),ID)*F1(O(P2),O(P1),5)*MA(1)) 10 V2(P1,P2) = B(O(P2),ID)*F2(O(P1),O(P2),4)*S(4,8,O(P2)) & -B( P2 ,ID)*F2(O(P1), P2 ,8)*MA(4) C--calculate the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 20 ME(P0,P1,P2,P3) = V1(P0,P1)*V2(P2,P3) END CDECK ID>, HWD3MC. *CMZ :- -08/04/02 14:48:42 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3MC(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for 5th 3 body RPV C diagram f --> f f f C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,V1(2,2),V2(2,2),ZI,F1M(2,2,8), & F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, & P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF COMMON/HWHEWS/S(8,8,2),D(8,8) PARAMETER(ZI=(0.0D0,1.0D0)) SAVE O DATA O/2,1/ C--decide whether to do the diagram IF(MB(3)+MR(ID).LT.MB(1).AND.MR(ID).GT.MB(2)+MB(4)) THEN DO 5 P0=1,2 DO 5 P1=1,2 DO 5 P2=1,2 DO 5 P3=1,2 5 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) RETURN ENDIF C--compute the propagator factor PRE =-0.25D0/(M242-MS(ID)+ZI*MWD(ID)) C--compute the vertex factors DO 10 P1=1,2 DO 10 P2=1,2 V1(P1,P2) = PRE*( A( P1 ,ID)*F2(O(P2), P1 ,1)*S(1,5,P1) & +A(O(P1),ID)*F2(O(P2),O(P1),5)*MA(1)) 10 V2(P1,P2) = B(O(P2),ID)*F1(O(P1),O(P2),4)*S(4,8,O(P2)) & -B( P2 ,ID)*F1(O(P1), P2 ,8)*MA(4) C--compute the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 20 ME(P0,P1,P2,P3) = V1(P0,P2)*V2(P1,P3) END CDECK ID>, HWD3MD. *CMZ :- -08/04/02 14:48:42 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3MD(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for 6th 3 body RPV C diagram f --> f f f C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,ZI,V1(2,2),V2(2,2),F1M(2,2,8), & F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, &P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWHEWS/S(8,8,2),D(8,8) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF PARAMETER(ZI=(0.0D0,1.0D0)) SAVE O DATA O/2,1/ C--decide whether to do the diagram IF(MB(4)+MR(ID).LT.MB(1).AND.MR(ID).GT.MB(2)+MB(3)) THEN DO 5 P0=1,2 DO 5 P1=1,2 DO 5 P2=1,2 DO 5 P3=1,2 5 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) RETURN ENDIF C--compute the propagator factor PRE = 0.25D0/(M232-MS(ID)+ZI*MWD(ID)) C--compute the factors for the two vertices DO 10 P1=1,2 DO 10 P2=1,2 V1(P1,P2) = PRE*( A(O(P2),ID)*F0M( P1 ,O(P2),4)*S(4,8,O(P2)) & -A( P2 ,ID)*F0M( P1 , P2 ,8)*MA(4)) 10 V2(P1,P2) = B(O(P1),ID)*F2 (O(P2),O(P1),2)*S(2,6,O(P1)) & -B( P1 ,ID)*F2 (O(P2), P1 ,6)*MA(2) C--now compute the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 20 ME(P0,P1,P2,P3) = V1(P0,P3)*V2(P1,P2) END CDECK ID>, HWD3MF. *CMZ :- -08/04/02 14:48:42 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3MF(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for 7th 3 body RPV C diagram f --> fbar fbar fbar C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,ZI,V1(2,2),V2(2,2),F1M(2,2,8), & F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, & P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF COMMON/HWHEWS/S(8,8,2),D(8,8) PARAMETER(ZI=(0.0D0,1.0D0)) SAVE O DATA O/2,1/ C--decide whether to do the diagram IF(MB(2)+MR(ID).LT.MB(1).AND.MR(ID).GT.MB(3)+MB(4)) THEN DO 5 P0=1,2 DO 5 P1=1,2 DO 5 P2=1,2 DO 5 P3=1,2 5 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) RETURN ENDIF C--calculate the propagator factor PRE = 0.25D0/(M342-MS(ID)+ZI*MWD(ID)) C--calculate the vertex functions DO 10 P1=1,2 DO 10 P2=1,2 V1(P1,P2) = PRE*( A( P2 ,ID)*F0M( P1 , P2 ,2)*S(2,6,P2) & -A(O(P2),ID)*F0M( P1 ,O(P2),6)*MA(2)) 10 V2(P1,P2) = B( P2 ,ID)*F2( P1 , P2 ,4)*S(4,8,P2) & -B(O(P2),ID)*F2( P1 ,O(P2),8)*MA(4) C--calculate the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 20 ME(P0,P1,P2,P3) = V1(P0,P1)*V2(P2,P3) END CDECK ID>, HWD3MG. *CMZ :- -08/04/02 14:48:42 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3MG(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for 8th 3 body RPV C diagram f --> fbar fbar fbar C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,V1(2,2),V2(2,2),ZI,F1M(2,2,8), & F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, & P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF COMMON/HWHEWS/S(8,8,2),D(8,8) PARAMETER(ZI=(0.0D0,1.0D0)) SAVE O DATA O/2,1/ C--decide whether to do the diagram IF(MB(3)+MR(ID).LT.MB(1).AND.MR(ID).GT.MB(2)+MB(4)) THEN DO 5 P0=1,2 DO 5 P1=1,2 DO 5 P2=1,2 DO 5 P3=1,2 5 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) RETURN ENDIF C--compute the propagator factor PRE = 0.25D0/(M242-MS(ID)+ZI*MWD(ID)) C--compute the vertex factors DO 10 P1=1,2 DO 10 P2=1,2 V1(P1,P2) = PRE*( A( P2 ,ID)*F0M( P1 , P2 ,3)*S(3,7, P2 ) & -A(O(P2),ID)*F0M( P1 ,O(P2),7)*MA(3)) 10 V2(P1,P2) = B( P1 ,ID)*F3 ( P2 , P1 ,2)*S(2,6, P1 ) & -B(O(P1),ID)*F3 ( P2 ,O(P1),6)*MA(2) C--compute the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 20 ME(P0,P1,P2,P3) = V1(P0,P2)*V2(P1,P3) END CDECK ID>, HWD3MH. *CMZ :- -08/04/02 14:48:42 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3MH(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for 9th 3 body RPV C diagram f --> fbar fbar fbar C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,ZI,V1(2,2),V2(2,2),F1M(2,2,8), & F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, &P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWHEWS/S(8,8,2),D(8,8) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF PARAMETER(ZI=(0.0D0,1.0D0)) SAVE O DATA O/2,1/ C--decide whether to do the diagram IF(MB(4)+MR(ID).LT.MB(1).AND.MR(ID).GT.MB(2)+MB(3)) THEN DO 5 P0=1,2 DO 5 P1=1,2 DO 5 P2=1,2 DO 5 P3=1,2 5 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) RETURN ENDIF C--compute the propagator factor PRE = -0.25D0/(M232-MS(ID)+ZI*MWD(ID)) C--compute the factors for the two vertices DO 10 P1=1,2 DO 10 P2=1,2 V1(P1,P2) = PRE*( A( P2 ,ID)*F0M( P1 , P2 ,4)*S(4,8,P2) & -A(O(P2),ID)*F0M( P1 ,O(P2),8)*MA(4)) 10 V2(P1,P2) = B( P1 ,ID)*F2 ( P2 , P1 ,2)*S(2,6,P1) & -B(O(P1),ID)*F2 ( P2 ,O(P1),6)*MA(2) C--now compute the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 20 ME(P0,P1,P2,P3) = V1(P0,P3)*V2(P1,P2) END CDECK ID>, HWD3MI. *CMZ :- -09/04/02 13:37:38 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD3MI(ID,ME) C----------------------------------------------------------------------- C Subroutine to calculate the helicity amplitudes for the three body C Higgs boson exchange diagram antifermion decay C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX ME(2,2,2,2),S,D,F0(2,2,8),F1(2,2,8),F01(2,2,8,8), & F0M(2,2,8),F2(2,2,8),PRE,ZI,V1(2,2),V2(2,2),F1M(2,2,8), & F3(2,2,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, & P(5,4),PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),DRTYPE(NDIAGR),NCTHRE, & DRCF(NDIAGR) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF COMMON/HWHEWS/S(8,8,2),D(8,8) PARAMETER(ZI=(0.0D0,1.0D0)) SAVE O DATA O/2,1/ C--decide whether to do the diagram IF(MB(2)+MR(ID).LT.MB(1).AND.MR(ID).GT.MB(3)+MB(4).AND. & IDP(4+ID).NE.207) THEN DO 5 P0=1,2 DO 5 P1=1,2 DO 5 P2=1,2 DO 5 P3=1,2 5 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) RETURN ENDIF C--calculate the propagator factor PRE = 0.25D0/(M342-MS(ID)+ZI*MWD(ID)) C--calculate the vertex functions DO 10 P1=1,2 DO 10 P2=1,2 V1(P1,P2) = PRE*( A( P2 ,ID)*F0M(O(P1), P2 ,2)*S(2,6,P2) & -A(O(P2),ID)*F0M(O(P1),O(P2),6)*MA(2)) 10 V2(P1,P2) = B( P2 ,ID)*F2(O(P1), P2 ,4)*S(4,8,P2) & -B(O(P2),ID)*F2(O(P1),O(P2),8)*MA(4) C--calculate the matrix element DO 20 P0=1,2 DO 20 P1=1,2 DO 20 P2=1,2 DO 20 P3=1,2 20 ME(P0,P1,P2,P3) = V1(P0,P1)*V2(P2,P3) END CDECK ID>, HWD4ME. *CMZ :- -20/10/99 09:46:43 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD4ME(ID,ITYPE1,ITYPE2,IMODE) C----------------------------------------------------------------------- C Subroutine to perform the four body Higgs decays C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IMODE,I,J,ID,IDP(4+NDIAGR),ITYPE(2),NTRY,ITYPE1,ITYPE2 DOUBLE PRECISION A,B,MS,MWD,M,M2,WGT,HWRUNI,BRW(6),BRZ(12), & HWUPCM,WMAX,WSUM,WSSUM,MR,PRE,TEMP,HWRGEN,WTMAX,P(5,5) EXTERNAL HWRUNI,HWUPCM,HWRGEN COMMON/HWD4BY/A(2),B(2),MS(2),MWD(2),MR(2),M(5),M2(5),P,IDP SAVE BRW,BRZ DATA BRW/0.321D0,0.321D0,0.000D0,0.108D0,0.108D0,0.108D0/ DATA BRZ/0.154D0,0.120D0,0.154D0,0.120D0,0.152D0,0.000D0, & 0.033D0,0.067D0,0.033D0,0.067D0,0.033D0,0.067D0/ ITYPE(1) = ITYPE1 ITYPE(2) = ITYPE2 WTMAX = WT4MAX(ITYPE(1),ITYPE(2),IMODE) PRE=P4MODE(ITYPE(1),ITYPE(2),IMODE) C--compute the masses of external particles for the decay mode DO I=1,2 C--couplings and masses of the internal particles A(I) = A4MODE(I,ITYPE1,IMODE) B(I) = B4MODE(I,ITYPE2,IMODE) MR(I) = RMASS(I4MODE(I,IMODE)) MS(I) = MR(I)**2 IF(I4MODE(I,IMODE).EQ.200) THEN MWD(I) = MR(I)*GAMZ ELSE MWD(I) = MR(I)*GAMW ENDIF IDP(5+I) = I4MODE(I,IMODE) C--id's of outgoing particles IF(I4MODE(I,IMODE).EQ.200) THEN IDP(2*I ) = ITYPE(I) IF(ITYPE(I).GT.6) IDP(2*I) = IDP(2*I)+114 IDP(2*I+1) = IDP(2*I)+6 ELSE IDP(2*I ) = 2*ITYPE(I)-1 IF(ITYPE(I).GT.3) IDP(2*I) = IDP(2*I)+114 IDP(2*I+1) = IDP(2*I)+7 IF(I4MODE(I,IMODE).EQ.198) THEN J = IDP(2*I )+6 IDP(2*I) = IDP(2*I+1)-6 IDP(2*I+1) = J ENDIF ENDIF ENDDO IDP(1) = IDK(ID4PRT(IMODE)) DO 1 I=1,5 M(I) = RMASS(IDP(I)) 1 M2(I) = M(I)**2 IF(M(1).LT.M(2)+M(3)+M(4)+M(5).OR.MR(1).LT.M(2)+M(3).OR. & MR(2).LT.M(4)+M(5)) RETURN IF(IPRINT.EQ.2.AND..NOT.GENEV) & WRITE(6,3000) RNAME(IDP(6)),RNAME(IDP(2)),RNAME(IDP(3)), & RNAME(IDP(7)),RNAME(IDP(4)),RNAME(IDP(5)) C--compute the width and maximum weight if initialising IF(.NOT.GENEV) THEN WMAX = ZERO WSUM = ZERO WSSUM = ZERO DO I=1,NSEARCH CALL HWD4M0(1,WGT) WGT = WGT*PRE IF(WGT.GT.WMAX) WMAX = WGT WSUM = WSUM+WGT WSSUM = WSSUM+WGT**2 IF(WGT.LT.ZERO) CALL HWWARN('HWD4ME',500) ENDDO WSUM = WSUM/DBLE(NSEARCH) WSSUM = MAX(ZERO,WSSUM/DBLE(NSEARCH)-WSUM**2) WSSUM = SQRT(WSSUM/DBLE(NSEARCH)) IF(IPRINT.EQ.2) WRITE(6,3010) WSUM,WSSUM IF(IPRINT.EQ.2) WRITE(6,3020) WMAX TEMP = BRFRAC(ID4PRT(IMODE))*HBAR/RLTIM(IDK(ID4PRT(IMODE))) DO J=1,2 IF(I4MODE(J,IMODE).EQ.200) THEN TEMP = TEMP*BRZ(ITYPE(J)) ELSE TEMP = TEMP*BRW(ITYPE(J)) ENDIF ENDDO IF(IPRINT.EQ.2) WRITE(6,3030) WSUM/TEMP,WSSUM/TEMP C--set up the maximum weight WT4MAX(ITYPE(1),ITYPE(2),IMODE) = WMAX ELSE C--generate a configuation NTRY = 0 IF(SYSPIN.AND.NSPN.NE.0) CALL HWWARN('HWD4ME',501) 100 NTRY = NTRY+1 CALL HWD4M0(ID,WGT) WGT = WGT*PRE IF(HWRGEN(0)*WTMAX.GT.WGT.AND.NTRY.LT.NSNTRY) GOTO 100 IF(NTRY.GE.NSNTRY) THEN CALL HWWARN('HWD4ME',100) GOTO 999 ENDIF ENDIF 3000 FORMAT(/' FOLLOWED BY ',A8,' --> ',A8,' ',A8,' AND ', & A8,' --> ',A8,' ',A8) 3010 FORMAT(' PARTIAL WIDTH = ',G12.4,' +/- ',G12.4) 3020 FORMAT(' MAXIMUM WEIGHT = ',E12.4) 3030 FORMAT(' RATIO TO ISAJET VALUE = ',G12.4,' +/- ',G12.4) 999 RETURN END CDECK ID>, HWD4M0. *CMZ :- -11/10/01 12:32:39 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWD4M0(ID,WGT) C----------------------------------------------------------------------- C Subroutine to calculate the matrix element for a given four body C decay mode C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER I,J,P0,P1,P2,P3,ID,O(2),IDP(4+NDIAGR),II,P4 DOUBLE PRECISION A,B,MS,MWD,M,M2,WGT,HWRUNI, & M23,PCMA,PCMB(2),HWUPCM,PHS,N(3),HWVDOT,PP,HWULDO,EPS, & M232,PRE,PLAB,PRW,XMASS,PCM,P(5,5),PM(5,5),MR,PREF(5), & M45,M452,MJAC(2),PTMP(5,2),CN(2),DOT DOUBLE COMPLEX S,D,ME(2,2,2,2),APP(2,2),AMP(2,2),APM(2,2), & AMM(2,2),BPP(2,2),BPM(2,2),BMP(2,2),BMM(2,2),ZI, & F45(2,2,8,8),F23(2,2,8,8),C(2,2),E(2,2) LOGICAL HWRLOG EXTERNAL HWRUNI,HWUPCM,HWVDOT,HWULDO,HWRLOG COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10) COMMON/HWD4BY/A(2),B(2),MS(2),MWD(2),MR(2),M(5),M2(5),P,IDP COMMON/HWHEWS/S(8,8,2),D(8,8) PARAMETER(EPS=1D-20,ZI=(0.0D0,1.0D0)) SAVE O,PREF DATA O/2,1/ DATA PREF/1.0D0,0.0D0,0.0D0,1.0D0,0.0D0/ C--select the masses of the gauge bosons and compute Jacobians IF(HWRLOG(HALF)) THEN CALL HWHGB1(1,2,IDP(6),MJAC(1),M232,(M(1)-M(4)-M(5))**2, & (M(2)+M(3))**2) M23 = SQRT(M232) CALL HWHGB1(1,2,IDP(7),MJAC(2),M452, & (M(1)-M23)**2,(M(4)+M(5))**2) M45 = SQRT(M452) ELSE CALL HWHGB1(1,2,IDP(7),MJAC(2),M452,(M(1)-M(2)-M(3))**2, & (M(4)+M(5))**2) M45 = SQRT(M452) CALL HWHGB1(1,2,IDP(6),MJAC(1),M232,(M(1)-M45)**2, & (M(2)+M(3))**2) M23 = SQRT(M232) ENDIF MJAC(1) = MJAC(1)/((M232-MS(1))**2+MWD(1)**2) MJAC(2) = MJAC(2)/((M452-MS(2))**2+MWD(2)**2) DO 1 I=2,5 1 P(5,I) = M(I) DO 2 I=1,2 2 CN(I) = -ONE/MS(I) C--now perform the decay of the Higgs to the bosons PCMA = HWUPCM(M(1),M23,M45) PLAB(5,1) = M23 PLAB(5,2) = M45 CALL HWVEQU(5,PHEP(1,ID),P(1,1)) CALL HWDTWO(P(1,1),PLAB(1,1),PLAB(1,2),PCMA,2.0D0,.TRUE.) PCMB(1) = HWUPCM(M23,M(2),M(3)) CALL HWDTWO(PLAB(1,1),P(1,2),P(1,3),PCMB(1),2.0D0,.TRUE.) PCMB(2) = HWUPCM(M45,M(4),M(5)) CALL HWDTWO(PLAB(1,2),P(1,4),P(1,5),PCMB(2),2.0D0,.TRUE.) DOT = HWULDO(PLAB(1,1),PLAB(1,2)) C--compute the phase sapce factors PHS = PCMA*PCMB(1)*PCMB(2)*MJAC(1)*MJAC(2)/512.0D0/PIFAC**5/ & M2(1)/M23/M45 C--compute the vectors for the helicity amplitudes DO 3 I=1,4 II=I+1 C--compute the references vectors C--not important if SM particle which can't have spin measured C--ie anything other the top and tau C--also not important if particle is approx massless C--first the SM particles other than top and tau IF(IDP(II).LT.400.AND.(IDP(II).NE.6.AND.IDP(II).NE.12 & .AND.IDP(II).NE.125.AND.IDP(II).NE.131)) THEN CALL HWVEQU(5,PREF,PLAB(1,I+4)) C--all other particles ELSE PP = SQRT(HWVDOT(3,P(1,II),P(1,II))) CALL HWVSCA(3,ONE/PP,P(1,II),N) PLAB(4,I+4) = HALF*(P(4,II)-PP) PP = HALF*(PP-M(II)-PP**2/(M(II)+P(4,II))) CALL HWVSCA(3,PP,N,PLAB(1,I+4)) CALL HWUMAS(PLAB(1,I+4)) PP = HWVDOT(3,PLAB(1,I+4),PLAB(1,I+4)) C--fix to avoid problems if approx massless due to energy IF(PP.LT.EPS) CALL HWVEQU(5,PREF,PLAB(1,I+4)) ENDIF C--now the massless vectors PP = HALF*M2(II)/HWULDO(PLAB(1,I+4),P(1,II)) DO 4 J=1,4 4 PLAB(J,I) = P(J,II)-PP*PLAB(J,I+4) 3 CALL HWUMAS(PLAB(1,I)) C--change ordr of momenta for call to HE code DO 5 I=1,5 PM(1,I) = P(3,I) PM(2,I) = P(1,I) PM(3,I) = P(2,I) PM(4,I) = P(4,I) 5 PM(5,I) = P(5,I) DO 6 I=1,8 PCM(1,I)=PLAB(3,I) PCM(2,I)=PLAB(1,I) PCM(3,I)=PLAB(2,I) PCM(4,I)=PLAB(4,I) 6 PCM(5,I)=PLAB(5,I) C--compute the S functions CALL HWHEW2(8,PCM(1,1),S(1,1,2),S(1,1,1),D) DO 7 I=1,8 DO 7 J=1,8 S(I,J,2) = -S(I,J,2) 7 D(I,J) = TWO*D(I,J) CALL HWVSUM(4,PM(1,2),PM(1,3),PTMP(1,1)) CALL HWVSUM(4,PM(1,4),PM(1,5),PTMP(1,2)) CALL HWUMAS(PTMP(1,1)) CALL HWUMAS(PTMP(1,2)) C--compute the F functions CALL HWH2F3(8,F23,PTMP(1,1),ZERO) CALL HWH2F3(8,F45,PTMP(1,2),ZERO) C--now find the prefactor for all the diagrams PRE = HWULDO(PCM(1,5),PM(1,2))*HWULDO(PCM(1,6),PM(1,3))* & HWULDO(PCM(1,7),PM(1,4))*HWULDO(PCM(1,8),PM(1,5)) PRE = 0.25D0/SQRT(PRE) C--zero the matrix element DO 8 P0=1,2 DO 8 P1=1,2 DO 8 P2=1,2 DO 8 P3=1,2 8 ME(P0,P1,P2,P3) = (0.0D0,0.0D0) C--compute the A, B, C and E functions DO 9 P1=1,2 DO 9 P2=1,2 IF(P1.EQ.P2) THEN C--the A and B functions APP(P1,P2) = A( P2 )*S(5,1,O(P1))*S(2,6, P1 ) APM(P1,P2) = 0.0D0 AMP(P1,P2) = 0.0D0 AMM(P1,P2) = -A(O(P2))*M(2)*M(3) BPP(P1,P2) = B( P2 )*S(7,3,O(P1))*S(4,8, P1 ) BPM(P1,P2) = 0.0D0 BMP(P1,P2) = 0.0D0 BMM(P1,P2) = -B(O(P2))*M(4)*M(5) C--the C and E functions C(P1,P2) =CN(1)*(A( P2 )*( M2(2)*S(5,2,O(P1))*S(2,6, P1 ) & +M2(3)*S(5,1,O(P1))*S(1,6, P1 )) & -A(O(P2))*M(2)*M(3)*( S(5,1,O(P1))*S(1,6, P1 ) & +S(5,2,O(P1))*S(2,6, P1 ))) E(P1,P2) =CN(2)*(B( P2 )*( M2(4)*S(7,4,O(P1))*S(4,8, P1 ) & +M2(5)*S(7,3,O(P1))*S(3,8, P1 )) & -B(O(P2))*M(4)*M(5)*( S(7,3,O(P1))*S(3,8, P1 ) & +S(7,4,O(P1))*S(4,8, P1 ))) ELSE C--the A functions APP(P1,P2) = 0.0D0 APM(P1,P2) = A( P2 )*M(2)*S(2,6,O(P1)) AMP(P1,P2) =-A(O(P2))*M(3)*S(5,1,O(P1)) AMM(P1,P2) = 0.0D0 BPP(P1,P2) = 0.0D0 BPM(P1,P2) = B( P2 )*M(4)*S(4,8,O(P1)) BMP(P1,P2) =-B(O(P2))*M(5)*S(7,3,O(P1)) BMM(P1,P2) = 0.0D0 C--the C and D functions C(P1,P2) =CN(1)*( A( P2 )*M(2)*( M2(3)*S(5,6,O(P1)) & +S(5,1,O(P1))*S(1,2, P1 )*S(2,6,O(P1))) & -A(O(P2))*M(3)*( M2(2)*S(5,6,O(P1)) & +S(5,1,O(P1))*S(1,2, P1 )*S(2,6,O(P1)))) E(P1,P2) =CN(2)*( B( P2 )*M(4)*( M2(5)*S(7,8,O(P1)) & +S(7,3,O(P1))*S(3,4, P1 )*S(4,8,O(P1))) & -B(O(P2))*M(5)*( M2(4)*S(7,8,O(P1)) & +S(7,3,O(P1))*S(3,4, P1 )*S(4,8,O(P1)))) ENDIF 9 CONTINUE C--now put the whole thing together to give the matrix element DO 10 P1=1,2 DO 10 P2=1,2 DO 10 P3=1,2 DO 10 P4=1,2 P0=O(P1) IF(P1.EQ.P3) THEN ME(P1,P2,P3,P4) = & APP(P1,P2)*(S(1,3,P1)*(BPP(P3,P4)*S(4,2,P0)+BMP(P3,P4)*S(8,2,P0)) & +S(7,2,P0)*(BPM(P3,P4)*S(1,4,P1)+BMM(P3,P4)*S(1,8,P1))) &+APM(P1,P2)*(S(5,7,P0)*(BPM(P3,P4)*S(4,2,P1)+BMM(P3,P4)*S(8,2,P1)) & +S(3,2,P1)*(BPP(P3,P4)*S(5,4,P0)+BMP(P3,P4)*S(5,8,P0))) &+AMP(P1,P2)*(S(1,3,P1)*(BPP(P3,P4)*S(4,6,P0)+BMP(P3,P4)*S(8,6,P0)) & +S(7,6,P0)*(BPM(P3,P4)*S(1,4,P1)+BMM(P3,P4)*S(1,8,P1))) &+AMM(P1,P2)*(S(3,6,P1)*(BPP(P3,P4)*S(5,4,P0)+BMP(P3,P4)*S(5,8,P0)) & +S(5,7,P0)*(BPM(P3,P4)*S(4,6,P1)+BMM(P3,P4)*S(8,6,P1))) ELSE ME(P1,P2,P3,P4) = & APP(P1,P2)*(S(3,2,P0)*(BPP(P3,P4)*S(1,4,P1)+BMP(P3,P4)*S(1,8,P1)) & +S(1,7,P1)*(BPM(P3,P4)*S(4,2,P0)+BMM(P3,P4)*S(8,2,P0))) &+APM(P1,P2)*(S(5,3,P0)*(BPP(P3,P4)*S(4,2,P1)+BMP(P3,P4)*S(8,2,P1)) & +S(7,2,P1)*(BPM(P3,P4)*S(5,4,P0)+BMM(P3,P4)*S(5,8,P0))) &+AMP(P1,P2)*(S(3,6,P0)*(BPP(P3,P4)*S(1,4,P1)+BMP(P3,P3)*S(1,8,P1)) & +S(1,7,P1)*(BPM(P3,P4)*S(4,6,P0)+BMM(P3,P4)*S(8,6,P0))) &+AMM(P1,P2)*(S(5,3,P0)*(BPP(P3,P4)*S(4,6,P1)+BMP(P3,P4)*S(8,6,P1)) & +S(7,6,P1)*(BPM(P3,P4)*S(5,4,P0)+BMM(P3,P4)*S(5,8,P0))) ENDIF ME(P1,P2,P3,P4) = TWO*ME(P1,P2,P3,P4) & +C(P1,P2)*( & BPP(P3,P4)*F23(P3,P3,3,4)+BPM(P3,P4)*F23(O(P3),O(P3),7,4) & +BMP(P3,P4)*F23(P3,P3,3,8)+BMM(P3,P4)*F23(O(P3),O(P3),7,8)) & +E(P3,P4)*( & APP(P1,P2)*F45(P1,P1,1,2)+APM(P1,P2)*F45(P0,P0,5,2) & +AMP(P1,P2)*F45(P1,P1,1,6)+AMM(P1,P2)*F45(P0,P0,5,6)) & +DOT*C(P1,P2)*E(P3,P4) 10 ME(P1,P2,P3,P4) = PRE*ME(P1,P2,P3,P4) C--compute the weight WGT = ZERO DO 40 P1=1,2 DO 40 P2=1,2 DO 40 P3=1,2 DO 40 P4=1,2 40 WGT = WGT+DREAL(ME(P1,P2,P3,P4)*DCONJG(ME(P1,P2,P3,P4))) C--normalise this for phase space WGT = WGT*PHS C--enter the matrix element into the spin common block IF(GENEV.AND.SYSPIN) THEN NSPN = 5 DO 11 P1=1,2 DO 11 P2=1,2 DO 11 P3=1,2 DO 11 P4=1,2 11 MESPN(P1,P2,P3,P4,1,1) = ME(P1,P2,P3,P4) SPNCFC(1,1,1) = ONE NCFL(1) = 1 ENDIF END CDECK ID>, HWDBOS. *CMZ :- -23/05/96 18.34.17 by Mike Seymour *-- Author : Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWDBOS(IBOSON) C----------------------------------------------------------------------- C DECAY GAUGE BOSONS (ALREADY FOUND BY HWDHAD) C USES SPIN DENSITY MATRIX IN RHOHEP (1ST CMPT=>-VE,2=>LONG,3=>+VE) C IF BOSON CAME FROM HIGGS DECAY, GIVE BOTH THE SAME HELICITY (EPR) C IF BOSON CAME FROM W+1JET, GIVE IT THE CORRECT DECAY CORRELATIONS C--BRW FIX 20/07/04: ADD FULL DECAY CORRELATIONS FOR W/Z+HIGGS C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,HWRUNI,HWUPCM,HWULDO,R(3,3),CV,CA,BR,PCM, & PBOS(5),PMAX,PROB,RRLL,RLLR INTEGER HWRINT,IBOS,IBOSON,IPAIR,ICMF,IOPT,IHEL,IMOTH, & I,IQRK,IANT,ID,IQ LOGICAL QUARKS EXTERNAL HWRGEN,HWRUNI,HWUPCM,HWULDO,HWRINT IBOS=IBOSON IF (IDHW(IBOS).LT.198.OR.IDHW(IBOS).GT.200) THEN CALL HWWARN('HWDBOS',101) GOTO 999 ENDIF QUARKS=.FALSE. C---SEE IF IT IS PART OF A PAIR IMOTH=JMOHEP(1,IBOS) IPAIR=JMOHEP(2,IBOS) ICMF=JMOHEP(1,IBOS) C--BRW FIX 17/07/03 IF (IPAIR.EQ.IBOS) THEN IOPT=0 IF (IPRO.EQ.26.OR.IPRO.EQ.27) ICMF=JMOHEP(1,IMOTH) ELSE IF (IDHW(ICMF).EQ.IDHW(IBOS).AND.ISTHEP(ICMF)/10.EQ.12) THEN IPAIR=JMOHEP(2,ICMF) IF (IPAIR.NE.0) THEN IPAIR=JDAHEP(1,IPAIR) IF (IPAIR.NE.0) JMOHEP(2,IPAIR)=IBOS ENDIF ICMF=JMOHEP(1,ICMF) ENDIF IOPT=0 IF (IPAIR.NE.0) THEN IF (JMOHEP(2,IPAIR).NE.IBOS.OR. & IDHW(IPAIR).LT.198.OR.IDHW(IPAIR).GT.200) IPAIR=0 ENDIF IF (IPAIR.GT.0.AND.IPAIR.NE.IBOS) IOPT=1 ENDIF C--END FIX C---SELECT DECAY PRODUCTS 10 CALL HWDBOZ(IDHW(IBOS),IDN(1),IDN(2),CV,CA,BR,IOPT) C---V + 1JET, V+HIGGS DECAYS ARE NOW HANDLED HERE ! IF (IPRO.EQ.21.OR.IPRO.EQ.26.OR.IPRO.EQ.27) THEN IQRK=IDHW(JMOHEP(1,ICMF)) IANT=IDHW(JMOHEP(2,ICMF)) IF (IQRK.EQ.13 .AND. IANT.LE.6) THEN IQRK=JMOHEP(2,ICMF) IANT=JDAHEP(2,ICMF) ELSEIF (IQRK.EQ.13) THEN IQRK=JDAHEP(2,ICMF) IANT=JMOHEP(2,ICMF) ELSEIF (IANT.EQ.13 .AND. IQRK.LE.6) THEN IQRK=JMOHEP(1,ICMF) IANT=JDAHEP(2,ICMF) ELSEIF (IANT.EQ.13) THEN IQRK=JDAHEP(2,ICMF) IANT=JMOHEP(1,ICMF) ELSEIF (IQRK.GT.IANT) THEN IQRK=JMOHEP(2,ICMF) IANT=JMOHEP(1,ICMF) ELSE IQRK=JMOHEP(1,ICMF) IANT=JMOHEP(2,ICMF) ENDIF PHEP(5,NHEP+1)=RMASS(IDN(1)) PHEP(5,NHEP+2)=RMASS(IDN(2)) PCM=HWUPCM(PHEP(5,IBOS),PHEP(5,NHEP+1),PHEP(5,NHEP+2)) IF (PCM.LT.ZERO) THEN CALL HWWARN('HWDBOS',103) GOTO 999 ENDIF IF (IDHW(IBOS).EQ.200) THEN ID=IDN(1) IF (ID.GT.120) ID=ID-110 IQ=IDHW(IQRK) IF (IQ.GT.6) IQ=IQ-6 RRLL=(VFCH(IQ,1)**2+AFCH(IQ,1)**2)* $ (VFCH(ID,1)**2+AFCH(ID,1)**2) $ +4*VFCH(IQ,1)*AFCH(IQ,1)* $ VFCH(ID,1)*AFCH(ID,1) RLLR=(VFCH(IQ,1)**2+AFCH(IQ,1)**2)* $ (VFCH(ID,1)**2+AFCH(ID,1)**2) $ -4*VFCH(IQ,1)*AFCH(IQ,1)* $ VFCH(ID,1)*AFCH(ID,1) ELSE RRLL=ONE RLLR=ZERO ENDIF IF (IPRO.EQ.21) THEN PMAX=(RRLL+RLLR)*(HWULDO(PHEP(1,IANT),PHEP(1,IBOS))**2+ & HWULDO(PHEP(1,IQRK),PHEP(1,IBOS))**2) ELSE PMAX=(RRLL+RLLR)* HWULDO(PHEP(1,IANT),PHEP(1,IBOS))* & HWULDO(PHEP(1,IQRK),PHEP(1,IBOS)) ENDIF 1 CALL HWDTWO(PHEP(1,IBOS),PHEP(1,NHEP+1),PHEP(1,NHEP+2), & PCM,TWO,.TRUE.) IF (IPRO.EQ.21) THEN PROB=RRLL*(HWULDO(PHEP(1,IANT),PHEP(1,NHEP+1))**2+ & HWULDO(PHEP(1,IQRK),PHEP(1,NHEP+2))**2)+ & RLLR*(HWULDO(PHEP(1,IANT),PHEP(1,NHEP+2))**2+ & HWULDO(PHEP(1,IQRK),PHEP(1,NHEP+1))**2) ELSE PROB=RRLL* HWULDO(PHEP(1,IANT),PHEP(1,NHEP+1))* & HWULDO(PHEP(1,IQRK),PHEP(1,NHEP+2))+ & RLLR* HWULDO(PHEP(1,IANT),PHEP(1,NHEP+2))* & HWULDO(PHEP(1,IQRK),PHEP(1,NHEP+1)) ENDIF IF (PROB.GT.PMAX.OR.PROB.LT.ZERO) THEN CALL HWWARN('HWDBOS',104) GOTO 999 ENDIF IF (PMAX*HWRGEN(0).GT.PROB) GOTO 1 ELSE C---SELECT HELICITY, UNLESS IT IS THE SECOND OF A HIGGS DECAY (EPR) IF (IPAIR.NE.IBOS .OR. IDHW(ICMF).NE.201) THEN IF (RHOHEP(1,IBOS)+RHOHEP(2,IBOS)+RHOHEP(3,IBOS).LE.ZERO) THEN C---COPY PARENT HELICITY IF IT WAS A GAUGE BOSON IF (IDHW(IMOTH).GE.198.AND.IDHW(IMOTH).LE.200) THEN CALL HWVEQU(3,RHOHEP(1,IMOTH),RHOHEP(1,IBOS)) IF (RHOHEP(1,IBOS)+RHOHEP(2,IBOS)+RHOHEP(3,IBOS).GT.ZERO) & GOTO 20 C---MAY BE FROM A SUSY DECAY ELSEIF (ABS(IDHEP(IMOTH)).LT.1000000) THEN CALL HWWARN('HWDBOS',1) ENDIF RHOHEP(1,IBOS)=1. RHOHEP(2,IBOS)=1. RHOHEP(3,IBOS)=1. ENDIF 20 IHEL=HWRINT(1,3) IF (HWRGEN(0).GT.RHOHEP(IHEL,IBOS)) GOTO 20 ENDIF C---SELECT DIRECTION OF FERMION 30 COSTH=HWRUNI(0,-ONE,ONE) IF (IHEL.EQ.1 .AND. (ONE+COSTH)**2.LT.HWRGEN(0)*FOUR) GOTO 30 IF (IHEL.EQ.2 .AND. (ONE-COSTH**2).LT.HWRGEN(0) ) GOTO 30 IF (IHEL.EQ.3 .AND. (ONE-COSTH)**2.LT.HWRGEN(0)*FOUR) GOTO 30 C---GENERATE DECAY RELATIVE TO Z-AXIS PHEP(5,NHEP+1)=RMASS(IDN(1)) PHEP(5,NHEP+2)=RMASS(IDN(2)) PCM=HWUPCM(PHEP(5,IBOS),PHEP(5,NHEP+1),PHEP(5,NHEP+2)) IF (PCM.LT.ZERO) THEN CALL HWWARN('HWDBOS',102) GOTO 999 ENDIF CALL HWRAZM(PCM*SQRT(1-COSTH**2),PHEP(1,NHEP+1),PHEP(2,NHEP+1)) PHEP(3,NHEP+1)=PCM*COSTH PHEP(4,NHEP+1)=SQRT(PHEP(5,NHEP+1)**2+PCM**2) C---ROTATE SO THAT Z-AXIS BECOMES BOSON'S DIRECTION IN ORIGINAL CM FRAME CALL HWULOF(PHEP(1,ICMF),PHEP(1,IBOS),PBOS) CALL HWUROT(PBOS, ONE,ZERO,R) CALL HWUROB(R,PHEP(1,NHEP+1),PHEP(1,NHEP+1)) C---BOOST BACK TO LAB CALL HWULOB(PHEP(1,IBOS),PHEP(1,NHEP+1),PHEP(1,NHEP+1)) CALL HWVDIF(4,PHEP(1,IBOS),PHEP(1,NHEP+1),PHEP(1,NHEP+2)) ENDIF C---STATUS, IDs AND POINTERS ISTHEP(IBOS)=195 DO 50 I=1,2 ISTHEP(NHEP+I)=193 IDHW(NHEP+I)=IDN(I) IDHEP(NHEP+I)=IDPDG(IDN(I)) JDAHEP(I,IBOS)=NHEP+I JMOHEP(1,NHEP+I)=IBOS JMOHEP(2,NHEP+I)=JMOHEP(1,IBOS) 50 CONTINUE NHEP=NHEP+2 IF (IDN(1).LE.12) THEN ISTHEP(NHEP-1)=113 ISTHEP(NHEP)=114 JMOHEP(2,NHEP)=NHEP-1 JDAHEP(2,NHEP)=NHEP-1 JMOHEP(2,NHEP-1)=NHEP JDAHEP(2,NHEP-1)=NHEP QUARKS=.TRUE. ELSE C--MHS FIX 07/03/05 - VERTEX POSITION FOR DECAYS TO LEPTONS CALL HWVEQU(4,VTXPIP,VHEP(1,NHEP-1)) CALL HWVEQU(4,VTXPIP,VHEP(1,NHEP)) C--END FIX ENDIF C---IF FIRST OF A PAIR, DO SECOND DECAY IF (IPAIR.NE.0 .AND. IPAIR.NE.IBOS) THEN IBOS=IPAIR GOTO 10 ENDIF C---IF QUARK DECAY, HADRONIZE IF (QUARKS) THEN EMSCA=PHEP(5,IBOS) CALL HWBGEN CALL HWDHOB CALL HWCFOR CALL HWCDEC ENDIF 999 RETURN END CDECK ID>, HWDBOZ. *CMZ :- -29/04/91 18.00.03 by Federico Carminati *-- Author : Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWDBOZ(IDBOS,IFER,IANT,CV,CA,BR,IOPT) C----------------------------------------------------------------------- C CHOOSE DECAY MODE OF BOSON C IOPT=2 TO RESET COUNTERS, 1 FOR BOSON PAIR, 0 FOR ANY OTHERS C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,BRMODE(12,3),CV,CA,BR,BRLST,BRCOM,FACZ, & FACW INTEGER HWRINT,IDBOS,IDEC,IDMODE(2,12,3),IFER,IANT,IOPT,I1,I2, & I1LST,I2LST,NWGLST,NUMDEC,NPAIR,MODTMP,JFER LOGICAL GENLST EXTERNAL HWRGEN,HWRINT SAVE FACW,FACZ,NWGLST,GENLST,NUMDEC,NPAIR,I1LST,I2LST,BRLST SAVE IDMODE,BRMODE DATA NWGLST,GENLST,NPAIR/-1,.FALSE.,0/ C---STORE THE DECAY MODES (FERMION FIRST) DATA IDMODE/ 2, 7, 4, 9, 6, 11, 2, 9, 4, 7, & 122,127,124,129,126,131,8*0, & 1, 8, 3, 10, 5, 12, 3, 8, 1, 10, & 121,128,123,130,125,132,8*0, & 1, 7, 2, 8, 3, 9, 4, 10, 5, 11, 6, 12, & 121,127,123,129,125,131,122,128,124,130,126,132/ C---STORE THE BRANCHING RATIOS TO THESE MODES DATA BRMODE/0.321D0,0.321D0,0.000D0,0.017D0,0.017D0,0.108D0, & 0.108D0,0.108D0,4*0.0D0, & 0.321D0,0.321D0,0.000D0,0.017D0,0.017D0,0.108D0, & 0.108D0,0.108D0,4*0.0D0, & 0.154D0,0.120D0,0.154D0,0.120D0,0.152D0,0.000D0, & 0.033D0,0.033D0,0.033D0,0.067D0,0.067D0,0.067D0/ C---FACTORS FOR CV AND CA FOR W AND Z DATA FACW,FACZ/2*0.0D0/ IF (FACZ.EQ.ZERO) FACZ=SQRT(SWEIN) IF (FACW.EQ.ZERO) FACW=0.5/SQRT(2D0) IF (IDBOS.LT.198.OR.IDBOS.GT.200) THEN CALL HWWARN('HWDBOZ',101) GOTO 999 ENDIF C---IF THIS IS A NEW EVENT SINCE LAST TIME, ZERO COUNTERS IF (NWGTS.NE.NWGLST .OR.(GENEV.NEQV.GENLST).OR. IOPT.EQ.2) THEN NPAIR=0 NUMDEC=0 NWGLST=NWGTS GENLST=GENEV IF (IOPT.EQ.2) RETURN ENDIF NUMDEC=NUMDEC+1 IF (NUMDEC.GT.MODMAX) THEN CALL HWWARN('HWDBOZ',102) GOTO 999 ENDIF C---IF PAIR OPTION SPECIFIED FOR THE FIRST TIME, MAKE CHOICE IF (IOPT.EQ.1) THEN IF (NUMDEC.GT.MODMAX-1) THEN CALL HWWARN('HWDBOZ',103) GOTO 999 ENDIF IF (NPAIR.EQ.0) THEN IF (HWRGEN(1).GT.HALF) THEN MODTMP=MODBOS(NUMDEC+1) MODBOS(NUMDEC+1)=MODBOS(NUMDEC) MODBOS(NUMDEC)=MODTMP ENDIF NPAIR=NUMDEC ELSE NPAIR=0 ENDIF ENDIF C---SELECT USER'S CHOICE IF (IDBOS.EQ.200) THEN IF (MODBOS(NUMDEC).EQ.1) THEN I1=1 I2=6 ELSEIF (MODBOS(NUMDEC).EQ.2) THEN I1=7 I2=7 ELSEIF (MODBOS(NUMDEC).EQ.3) THEN I1=8 I2=8 ELSEIF (MODBOS(NUMDEC).EQ.4) THEN I1=9 I2=9 ELSEIF (MODBOS(NUMDEC).EQ.5) THEN I1=7 I2=8 ELSEIF (MODBOS(NUMDEC).EQ.6) THEN I1=10 I2=12 ELSEIF (MODBOS(NUMDEC).EQ.7) THEN I1=5 I2=5 ELSE I1=1 I2=12 ENDIF ELSE IF (MODBOS(NUMDEC).EQ.1) THEN I1=1 I2=5 ELSEIF (MODBOS(NUMDEC).EQ.2) THEN I1=6 I2=6 ELSEIF (MODBOS(NUMDEC).EQ.3) THEN I1=7 I2=7 ELSEIF (MODBOS(NUMDEC).EQ.4) THEN I1=8 I2=8 ELSEIF (MODBOS(NUMDEC).EQ.5) THEN I1=6 I2=7 ELSE I1=1 I2=8 ENDIF ENDIF 10 IDEC=HWRINT(I1,I2) IF (HWRGEN(0).GT.BRMODE(IDEC,IDBOS-197).AND.I1.NE.I2) GOTO 10 IFER=IDMODE(1,IDEC,IDBOS-197) IANT=IDMODE(2,IDEC,IDBOS-197) C---CALCULATE BRANCHING RATIO C (RESULT IS NOT WELL-DEFINED AFTER THE FIRST CALL OF A PAIR) BR=0 DO 20 IDEC=I1,I2 20 BR=BR+BRMODE(IDEC,IDBOS-197) IF (IOPT.EQ.1) THEN IF (NPAIR.NE.0) THEN I1LST=I1 I2LST=I2 BRLST=BR ELSE BRCOM=0 DO 30 IDEC=MAX(I1,I1LST),MIN(I2,I2LST) 30 BRCOM=BRCOM+BRMODE(IDEC,IDBOS-197) BR=2*BR*BRLST - BRCOM**2 ENDIF ENDIF C---SET UP VECTOR AND AXIAL VECTOR COUPLINGS (NORMALIZED TO THE C CONVENTION WHERE THE WEAK CURRENT IS G*(CV-CA*GAM5) ) IF (IDBOS.EQ.200) THEN IF (IFER.LE.6) THEN C Quark couplings CV=VFCH(IFER,1) CA=AFCH(IFER,1) ELSE C lepton couplings JFER=IFER-110 CV=VFCH(JFER,1) CA=AFCH(JFER,1) ENDIF CV=CV * FACZ CA=CA * FACZ ELSE CV=FACW CA=FACW ENDIF 999 RETURN END CDECK ID>, HWDBZ2. *CMZ :- -02/04/01 12.11.55 by Peter Richardson *-- Author : Peter Richardson based on Mike Seymour's HWDBOZ C----------------------------------------------------------------------- SUBROUTINE HWDBZ2(IDBOS,IFER,IANT,CV,CA,BR,IOPT,MASS) C----------------------------------------------------------------------- C CHOOSE DECAY MODE OF BOSON C IOPT=2 TO RESET COUNTERS, 1 FOR BOSON PAIR, 0 FOR ANY OTHERS C IDENTICAL TO HWDBOZ BUT REQUIRES DECAY MODE ACCESSIBLE FOR GIVEN C MASS C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,BRMODE(12,3),CV,CA,BR,BRLST,BRCOM,FACZ, & FACW,MSMODE(12,3),MASS INTEGER HWRINT,IDBOS,IDEC,IDMODE(2,12,3),IFER,IANT,IOPT,I1,I2, & I1LST,I2LST,NWGLST,NUMDEC,NPAIR,MODTMP,JFER,NTRY LOGICAL GENLST EXTERNAL HWRGEN,HWRINT SAVE FACW,FACZ,MSMODE,NWGLST,GENLST,NUMDEC,NPAIR,I1LST,I2LST,BRLST SAVE IDMODE,BRMODE DATA NWGLST,GENLST,NPAIR/-1,.FALSE.,0/ C---STORE THE DECAY MODES (FERMION FIRST) DATA IDMODE/ 2, 7, 4, 9, 6, 11, 2, 9, 4, 7, & 122,127,124,129,126,131,8*0, & 1, 8, 3, 10, 5, 12, 3, 8, 1, 10, & 121,128,123,130,125,132,8*0, & 1, 7, 2, 8, 3, 9, 4, 10, 5, 11, 6, 12, & 121,127,123,129,125,131,122,128,124,130,126,132/ C---STORE THE BRANCHING RATIOS TO THESE MODES DATA BRMODE/0.321D0,0.321D0,0.000D0,0.017D0,0.017D0,0.108D0, & 0.108D0,0.108D0,4*0.0D0, & 0.321D0,0.321D0,0.000D0,0.017D0,0.017D0,0.108D0, & 0.108D0,0.108D0,4*0.0D0, & 0.154D0,0.120D0,0.154D0,0.120D0,0.152D0,0.000D0, & 0.033D0,0.033D0,0.033D0,0.067D0,0.067D0,0.067D0/ DATA MSMODE/36*0.0D0/ C---FACTORS FOR CV AND CA FOR W AND Z DATA FACW,FACZ/2*0.0D0/ IF (FACZ.EQ.ZERO) FACZ=SQRT(SWEIN) IF (FACW.EQ.ZERO) FACW=0.5/SQRT(2D0) IF (IDBOS.LT.198.OR.IDBOS.GT.200) THEN CALL HWWARN('HWDBZ2',101) GOTO 999 ENDIF IF(MSMODE(1,1).EQ.ZERO) THEN DO I1=1,12 DO I2=1,3 MSMODE(I1,I2)=RMASS(IDMODE(1,I1,I2))+RMASS(IDMODE(2,I1,I2)) ENDDO ENDDO ENDIF C---IF THIS IS A NEW EVENT SINCE LAST TIME, ZERO COUNTERS IF (NWGTS.NE.NWGLST .OR.(GENEV.NEQV.GENLST).OR. IOPT.EQ.2) THEN NPAIR=0 NUMDEC=0 NWGLST=NWGTS GENLST=GENEV IF (IOPT.EQ.2) RETURN ENDIF NUMDEC=NUMDEC+1 IF (NUMDEC.GT.MODMAX) THEN CALL HWWARN('HWDBZ2',102) GOTO 999 ENDIF C---IF PAIR OPTION SPECIFIED FOR THE FIRST TIME, MAKE CHOICE IF (IOPT.EQ.1) THEN IF (NUMDEC.GT.MODMAX-1) THEN CALL HWWARN('HWDBZ2',103) GOTO 999 ENDIF IF (NPAIR.EQ.0) THEN IF (HWRGEN(1).GT.HALF) THEN MODTMP=MODBOS(NUMDEC+1) MODBOS(NUMDEC+1)=MODBOS(NUMDEC) MODBOS(NUMDEC)=MODTMP ENDIF NPAIR=NUMDEC ELSE NPAIR=0 ENDIF ENDIF C---SELECT USER'S CHOICE IF (IDBOS.EQ.200) THEN IF (MODBOS(NUMDEC).EQ.1) THEN I1=1 I2=6 ELSEIF (MODBOS(NUMDEC).EQ.2) THEN I1=7 I2=7 ELSEIF (MODBOS(NUMDEC).EQ.3) THEN I1=8 I2=8 ELSEIF (MODBOS(NUMDEC).EQ.4) THEN I1=9 I2=9 ELSEIF (MODBOS(NUMDEC).EQ.5) THEN I1=7 I2=8 ELSEIF (MODBOS(NUMDEC).EQ.6) THEN I1=10 I2=12 ELSEIF (MODBOS(NUMDEC).EQ.7) THEN I1=5 I2=5 ELSE I1=1 I2=12 ENDIF ELSE IF (MODBOS(NUMDEC).EQ.1) THEN I1=1 I2=5 ELSEIF (MODBOS(NUMDEC).EQ.2) THEN I1=6 I2=6 ELSEIF (MODBOS(NUMDEC).EQ.3) THEN I1=7 I2=7 ELSEIF (MODBOS(NUMDEC).EQ.4) THEN I1=8 I2=8 ELSEIF (MODBOS(NUMDEC).EQ.5) THEN I1=6 I2=7 ELSE I1=1 I2=8 ENDIF ENDIF NTRY = 0 10 IDEC=HWRINT(I1,I2) NTRY = NTRY+1 IF (HWRGEN(0).GT.BRMODE(IDEC,IDBOS-197).AND.I1.NE.I2) GOTO 10 IF(MASS.LT.MSMODE(IDEC,IDBOS-197).AND.NTRY.LT.NBTRY) GOTO 10 IF(NTRY.GE.NBTRY) THEN BR = ZERO RETURN ENDIF IFER=IDMODE(1,IDEC,IDBOS-197) IANT=IDMODE(2,IDEC,IDBOS-197) C---CALCULATE BRANCHING RATIO C (RESULT IS NOT WELL-DEFINED AFTER THE FIRST CALL OF A PAIR) BR=0 DO 20 IDEC=I1,I2 20 IF(MSMODE(IDEC,IDBOS-197).LT.MASS) BR=BR+BRMODE(IDEC,IDBOS-197) IF (IOPT.EQ.1) THEN IF (NPAIR.NE.0) THEN I1LST=I1 I2LST=I2 BRLST=BR ELSE BRCOM=0 DO 30 IDEC=MAX(I1,I1LST),MIN(I2,I2LST) 30 IF(MSMODE(IDEC,IDBOS-197).LT.MASS) & BRCOM=BRCOM+BRMODE(IDEC,IDBOS-197) BR=2*BR*BRLST - BRCOM**2 ENDIF ENDIF C---SET UP VECTOR AND AXIAL VECTOR COUPLINGS (NORMALIZED TO THE C CONVENTION WHERE THE WEAK CURRENT IS G*(CV-CA*GAM5) ) IF (IDBOS.EQ.200) THEN IF (IFER.LE.6) THEN C Quark couplings CV=VFCH(IFER,1) CA=AFCH(IFER,1) ELSE C lepton couplings JFER=IFER-110 CV=VFCH(JFER,1) CA=AFCH(JFER,1) ENDIF CV=CV * FACZ CA=CA * FACZ ELSE CV=FACW CA=FACW ENDIF 999 RETURN END CDECK ID>, HWDCHK. *CMZ :- -27/07/99 13.33.03 by Mike Seymour *-- Author : Ian Knowles C----------------------------------------------------------------------- SUBROUTINE HWDCHK(IDKY,L,IFGO) C----------------------------------------------------------------------- C Checks line L of decay table is compatible with decay of particle C IDKY, tidies up the line and sets NPRODS. C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION EPS,QS,Q,DM INTEGER IDKY,L,IFAULT,I,ID,J LOGICAL IFGO PARAMETER (EPS=1.D-6) IFGO = .FALSE. IF (VTOCDK(IDKY).AND.VTORDK(IDKY)) THEN IFGO = .TRUE. RETURN ENDIF IFAULT=0 QS=FLOAT(ICHRG(IDKY)) IF (IDKY.LE.12.OR.(IDKY.GE.109.AND.IDKY.LE.120) & .OR.(IDKY.GE.209.AND.IDKY.LE.220) & .OR.(IDKY.GE.401.AND.IDKY.LE.424)) QS=QS/3. DM=RMASS(IDKY) NPRODS(L)=0 DO 10 I=1,5 ID=IDKPRD(I,L) IF (ID.LT.0.OR.ID.EQ.20.OR.ID.GT.NRES) THEN WRITE(6,20) L,RNAME(IDKY),(RNAME(IDKPRD(J,L)),J=1,5) IFAULT=IFAULT+1 ELSEIF (ID.NE.0) THEN IF (VTORDK(ID)) THEN WRITE(6,30) L,RNAME(IDKY),(RNAME(IDKPRD(J,L)),J=1,5),RNAME(ID) IFAULT=IFAULT+1 ENDIF NPRODS(L)=NPRODS(L)+1 IDKPRD(NPRODS(L),L)=ID Q=FLOAT(ICHRG(ID)) IF (ID.LE.12.OR.(ID.GE.109.AND.ID.LE.120) & .OR.(ID.GE.209.AND.ID.LE.220) & .OR.(ID.GE.401.AND.ID.LE.424)) Q=Q/3. QS=QS-Q DM=DM-RMASS(ID) ENDIF 10 CONTINUE C print any warnings IF (NPRODS(L).EQ.0) THEN WRITE(6,20) L,RNAME(IDKY),(RNAME(IDKPRD(I,L)),I=1,5) IFAULT=IFAULT+1 ELSE IF (ABS(QS).GT.EPS) THEN WRITE(6,40) L,RNAME(IDKY),(RNAME(IDKPRD(I,L)),I=1,5),QS IFAULT=IFAULT+1 ENDIF C--modification so doesn't remove H --> W*W* Z*Z* modes IF (DM.LT.ZERO.AND..NOT. & (FOURB.AND.IDK(L).GE.203.AND.IDK(L).LE.205.AND. & IDKPRD(1,L).GE.198.AND.IDKPRD(2,L).LE.200.AND. & IDKPRD(2,L).GE.198.AND.IDKPRD(2,L).LE.200)) THEN WRITE(6,50) L,RNAME(IDKY),(RNAME(IDKPRD(I,L)),I=1,5),DM IFAULT=IFAULT+1 ENDIF ENDIF 20 FORMAT(1X,'Line ',I4,' decay: ',A8,' --> ',4(A8,1X),A8/ & 1X,'contains no or unrecognised decay product(s)') 30 FORMAT(1X,'Line ',I4,' decay: ',A8,' --> ',4(A8,1X),A8/ & 1X,'contains decay product ',A8,' which is vetoed') 40 FORMAT(1X,'Line ',I4,' decay: ',A8,' --> ',4(A8,1X),A8/ & 1X,'violates charge conservation, Qin-Qout= ',F6.3) 50 FORMAT(1X,'Line ',I4,' decay: ',A8,' --> ',4(A8,1X),A8/ & 1X,'is kinematically not allowed, Min-Mout= ',F10.3) IF (IFAULT.NE.0) THEN IFGO = .TRUE. RETURN ELSE RETURN ENDIF END CDECK ID>, HWDCLE. *CMZ :- -28/01/92 12.34.44 by Mike Seymour *-- Author : Luca Stanco C----------------------------------------------------------------------- SUBROUTINE HWDCLE(IHEP) C----------------------------------------------------------------------- C INTERFACE TO QQ-CLEO MONTE CARLO (LS 11/12/91) C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IHEP,IIHEP,NHEPHF,QQLMAT LOGICAL QQLERR CHARACTER*8 NAME EXTERNAL QQLMAT C---QQ-CLEO COMMON'S C*** MCPARS.INC INTEGER MCTRK, NTRKS, MCVRTX, NVTXS, MCHANS, MCDTRS, MPOLQQ INTEGER MCNUM, MCSTBL, MCSTAB, MCTLQQ, MDECQQ INTEGER MHLPRB, MHLLST, MHLANG, MCPLST, MFDECA PARAMETER (MCTRK = 512) PARAMETER (NTRKS = MCTRK) PARAMETER (MCVRTX = 256) PARAMETER (NVTXS = MCVRTX) PARAMETER (MCHANS = 4000) PARAMETER (MCDTRS = 8000) PARAMETER (MPOLQQ = 300) PARAMETER (MCNUM = 500) PARAMETER (MCSTBL = 40) PARAMETER (MCSTAB = 512) PARAMETER (MCTLQQ = 100) PARAMETER (MDECQQ = 300) PARAMETER (MHLPRB = 500) PARAMETER (MHLLST = 1000) PARAMETER (MHLANG = 500) PARAMETER (MCPLST = 200) PARAMETER (MFDECA = 5) C*** MCPROP.INC REAL AMASS, CHARGE, CTAU, SPIN, RWIDTH, RMASMN, RMASMX REAL RMIXPP, RCPMIX INTEGER NPMNQQ, NPMXQQ, IDMC, INVMC, LPARTY, CPARTY INTEGER IMIXPP, ICPMIX COMMON/MCMAS1/ * NPMNQQ, NPMXQQ, * AMASS(-20:MCNUM), CHARGE(-20:MCNUM), CTAU(-20:MCNUM), * IDMC(-20:MCNUM), SPIN(-20:MCNUM), * RWIDTH(-20:MCNUM), RMASMN(-20:MCNUM), RMASMX(-20:MCNUM), * LPARTY(-20:MCNUM), CPARTY(-20:MCNUM), * IMIXPP(-20:MCNUM), RMIXPP(-20:MCNUM), * ICPMIX(-20:MCNUM), RCPMIX(-20:MCNUM), * INVMC(0:MCSTBL) C INTEGER NPOLQQ, IPOLQQ COMMON/MCPOL1/ * NPOLQQ, IPOLQQ(5,MPOLQQ) C CHARACTER QNAME*10, PNAME*10 COMMON/MCNAMS/ * QNAME(37), PNAME(-20:MCNUM) C C*** MCCOMS.INC INTEGER NCTLQQ, NDECQQ, IVRSQQ, IORGQQ, IRS1QQ INTEGER IEVTQQ, IRUNQQ, IBMRAD INTEGER NTRKMC, QQNTRK, NSTBMC, NSTBQQ, NCHGMC, NCHGQQ INTEGER IRANQQ, IRANMC, IRANCC, IRS2QQ INTEGER IPFTQQ, IPCDQQ, IPRNTV, ITYPEV, IDECSV, IDAUTV INTEGER ISTBMC, NDAUTV INTEGER IVPROD, IVDECA REAL BFLDQQ REAL ENERQQ, BEAMQQ, BMPSQQ, BMNGQQ, EWIDQQ, BWPSQQ, BWNGQQ REAL BPOSQQ, BSIZQQ REAL ECM, P4CMQQ, P4PHQQ, ENERNW, BEAMNW, BEAMP, BEAMN REAL PSAV, P4QQ, HELCQQ CHARACTER DATEQQ*20, TIMEQQ*20, FOUTQQ*80, FCTLQQ*80, FDECQQ*80 CHARACTER FGEOQQ*80 CHARACTER CCTLQQ*80, CDECQQ*80 C COMMON/MCCM1A/ * NCTLQQ, NDECQQ, IVRSQQ, IORGQQ, IRS1QQ(3), BFLDQQ, * ENERQQ, BEAMQQ, BMPSQQ, BMNGQQ, EWIDQQ, BWPSQQ, BWNGQQ, * BPOSQQ(3), BSIZQQ(3), * IEVTQQ, IRUNQQ, * IBMRAD, ECM, P4CMQQ(4), P4PHQQ(4), * ENERNW, BEAMNW, BEAMP, BEAMN, * NTRKMC, QQNTRK, NSTBMC, NSTBQQ, NCHGMC, NCHGQQ, * IRANQQ(2), IRANMC(2), IRANCC(2), IRS2QQ(5), * IPFTQQ(MCTRK), IPCDQQ(MCTRK), IPRNTV(MCTRK), ITYPEV(MCTRK,2), * IDECSV(MCTRK), IDAUTV(MCTRK), ISTBMC(MCTRK), NDAUTV(MCTRK), * IVPROD(MCTRK), IVDECA(MCTRK), * PSAV(MCTRK,4), HELCQQ(MCTRK), P4QQ(4,MCTRK) C COMMON/MCCM1B/ * DATEQQ, TIMEQQ, FOUTQQ, FCTLQQ, FDECQQ, FGEOQQ, * CCTLQQ(MCTLQQ), CDECQQ(MDECQQ) C INTEGER NVRTX, ITRKIN, NTRKOU, ITRKOU, IVKODE REAL XVTX, TVTX, RVTX COMMON/MCCM2/ * NVRTX, XVTX(MCVRTX,3), TVTX(MCVRTX), RVTX(MCVRTX), * ITRKIN(MCVRTX), NTRKOU(MCVRTX), ITRKOU(MCVRTX), * IVKODE(MCVRTX) C*** MCGEN.INC INTEGER QQIST,QQIFR,QQN,QQK,QQMESO,QQNC,QQKC,QQLASTN REAL QQPUD,QQPS1,QQSIGM,QQMAS,QQPAR,QQCMIX,QQCND,QQBSPI,QQBSYM,QQP REAL QQPC,QQCZF C COMMON/DATA1/QQIST,QQIFR,QQPUD,QQPS1,QQSIGM,QQMAS(15),QQPAR(25) COMMON/DATA2/QQCZF(15),QQMESO(36),QQCMIX(6,2) COMMON/DATA3/QQCND(3) COMMON/DATA5/QQBSPI(5),QQBSYM(3) COMMON/JET/QQN,QQK(250,2),QQP(250,5),QQNC,QQKC(10),QQPC(10,4), * QQLASTN C--- IF(FSTEVT) THEN C---INITIALIZE QQ-CLEO CALL QQINIT(QQLERR) IF(QQLERR) CALL HWWARN('HWDEUR',500) ENDIF C---CONSTRUCT THE HADRON FOR QQ-CLEO C NOTE: THE IDPDG CODE IS PROVIDED THROUGH THE QQLMAT ROUTINE C FROM THE CLEO PACKAGE (QQ-CLEO <--> IDPDG CODE TRANSFORMATION) QQN=1 IDHEP(IHEP)=IDPDG(IDHW(IHEP)) QQK(1,1)=0 QQK(1,2)=QQLMAT(IDHEP(IHEP),1) QQP(1,1)=SNGL(PHEP(1,IHEP)) QQP(1,2)=SNGL(PHEP(2,IHEP)) QQP(1,3)=SNGL(PHEP(3,IHEP)) QQP(1,5)=AMASS(QQK(1,2)) QQP(1,4)=SQRT(QQP(1,5)**2+QQP(1,1)**2+QQP(1,2)**2+QQP(1,3)**2) C---LET QQ-CLEO DO THE JOB QQNTRK=0 NVRTX=0 CALL DECADD(.FALSE.) C---UPDATE THE HERWIG TABLE : LOOP OVER QQN-CLEO FINAL PARTICLES DO 40 IIHEP=1,QQN NHEP=NHEP+1 ISTHEP(NHEP)=198 IF(ITYPEV(IIHEP,2).GE.0) ISTHEP(NHEP)=1 IDHEP(NHEP)=QQLMAT(ITYPEV(IIHEP,1),2) CALL HWUIDT(1,IDHEP(NHEP),IDHW(NHEP),NAME) IF(IIHEP.EQ.1) THEN ISTHEP(IHEP)=199 JDAHEP(1,IHEP)=NHEP JDAHEP(2,IHEP)=NHEP ISTHEP(NHEP)=199 NHEPHF=NHEP JMOHEP(1,NHEP)=IHEP JMOHEP(2,NHEP)=IHEP ELSE JMOHEP(1,NHEP)=IPRNTV(IIHEP)+NHEPHF-1 JMOHEP(2,NHEP)=NHEPHF ENDIF JDAHEP(1,NHEP)=0 JDAHEP(2,NHEP)=0 IF(NDAUTV(IIHEP).GT.0) THEN JDAHEP(1,NHEP)=IDAUTV(IIHEP)+NHEPHF-1 JDAHEP(2,NHEP)=JDAHEP(1,NHEP)+NDAUTV(IIHEP)-1 ENDIF PHEP(1,NHEP)=QQP(IIHEP,1) PHEP(2,NHEP)=QQP(IIHEP,2) PHEP(3,NHEP)=QQP(IIHEP,3) PHEP(4,NHEP)=QQP(IIHEP,4) PHEP(5,NHEP)=QQP(IIHEP,5) VHEP(1,NHEP)=XVTX(IVPROD(IIHEP),1) VHEP(2,NHEP)=XVTX(IVPROD(IIHEP),2) VHEP(3,NHEP)=XVTX(IVPROD(IIHEP),3) VHEP(4,NHEP)=0. 40 CONTINUE END CDECK ID>, HWDEUR. *CMZ :- -28/01/92 12.34.44 by Mike Seymour *-- Author : Luca Stanco C----------------------------------------------------------------------- SUBROUTINE HWDEUR(IHEP) C----------------------------------------------------------------------- C INTERFACE TO EURODEC PACKAGE (LS 10/29/91) C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IHEP,IIHEP,NHEPHF,IEUPDG,IPDGEU CHARACTER*8 NAME C---EURODEC COMMON'S : INITIAL INPUT INTEGER EULUN0,EULUN1,EULUN2,EURUN,EUEVNT CHARACTER*4 EUDATD,EUTIT REAL AMINIE(12),EUWEI COMMON/INPOUT/EULUN0,EULUN1,EULUN2 COMMON/FILNAM/EUDATD,EUTIT COMMON/HVYINI/AMINIE COMMON/RUNINF/EURUN,EUEVNT,EUWEI C---EURODEC WORKING COMMON'S INTEGER NPMAX,NTMAX PARAMETER (NPMAX=18,NTMAX=2000) INTEGER EUNP,EUIP(NPMAX),EUPHEL(NPMAX),EUTEIL,EUINDX(NTMAX), & EUORIG(NTMAX),EUDCAY(NTMAX),EUTHEL(NTMAX) REAL EUAPM(NPMAX),EUPCM(5,NPMAX),EUPVTX(3,NPMAX),EUPTEI(5,NTMAX), & EUSECV(3,NTMAX) COMMON/MOMGEN/EUNP,EUIP,EUAPM,EUPCM,EUPHEL,EUPVTX COMMON/RESULT/EUTEIL,EUPTEI,EUINDX,EUORIG,EUDCAY,EUTHEL,EUSECV C---EURODEC COMMON'S FOR DECAY PROPERTIES INTEGER NGMAX,NCMAX PARAMETER (NGMAX=400,NCMAX=9000) INTEGER EUNPA,EUIPC(NGMAX),EUIPDG(NGMAX),EUIDP(NGMAX), & EUCONV(NCMAX) REAL EUPM(NGMAX),EUPLT(NGMAX) COMMON/PCTABL/EUNPA,EUIPC,EUIPDG,EUPM,EUPLT,EUIDP COMMON/CONVRT/EUCONV C--- IF(FSTEVT) THEN C---CHANGE HERE THE DEFAULT VALUES OF EURODEC COMMON'S C C---INITIALIZE EURODEC COMMON'S CC CALL EUDCIN C---INITIALIZE EURODEC CALL EUDINI ENDIF C---CONSTRUCT THE HADRON FOR EURODEC FROM ID1,ID2 EUNP=1 IDHEP(IHEP)=IDPDG(IDHW(IHEP)) EUIP(1)=IPDGEU(IDHEP(IHEP)) EUAPM(1)=EUPM(EUCONV(IABS(EUIP(1)))) EUPCM(1,1)=SNGL(PHEP(1,IHEP)) EUPCM(2,1)=SNGL(PHEP(2,IHEP)) EUPCM(3,1)=SNGL(PHEP(3,IHEP)) EUPCM(5,1)=SQRT(EUPCM(1,1)**2+EUPCM(2,1)**2+EUPCM(3,1)**2) EUPCM(4,1)=SQRT(EUPCM(5,1)**2+EUAPM(1)**2) C NOT POLARIZED HADRONS EUPHEL(1)=0 C HADRONS START FROM PRIMARY VERTEX EUPVTX(1,1)=0. EUPVTX(2,1)=0. EUPVTX(3,1)=0. C---LET EURODEC DO THE JOB EUTEIL=0 CALL FRAGMT(1,1,0) C---UPDATE THE HERWIG TABLE : LOOP OVER N-EURODEC FINAL PARTICLES DO 40 IIHEP=1,EUTEIL NHEP=NHEP+1 ISTHEP(NHEP)=198 IF(EUDCAY(IIHEP).EQ.0) ISTHEP(NHEP)=1 IDHEP(NHEP)=IEUPDG(EUINDX(IIHEP)) CALL HWUIDT(1,IDHEP(NHEP),IDHW(NHEP),NAME) IF(IIHEP.EQ.1) THEN ISTHEP(IHEP)=199 JDAHEP(1,IHEP)=NHEP JDAHEP(2,IHEP)=NHEP ISTHEP(NHEP)=199 NHEPHF=NHEP JMOHEP(1,NHEP)=IHEP JMOHEP(2,NHEP)=IHEP JDAHEP(1,NHEP)=EUDCAY(IIHEP)/10000+NHEPHF-1 JDAHEP(2,NHEP)=MOD(EUDCAY(IIHEP),10000)+NHEPHF-1 ELSE JMOHEP(1,NHEP)=MOD(EUORIG(IIHEP),10000)+NHEPHF-1 JMOHEP(2,NHEP)=NHEPHF JDAHEP(1,NHEP)=EUDCAY(IIHEP)/10000+NHEPHF-1 JDAHEP(2,NHEP)=MOD(EUDCAY(IIHEP),10000)+NHEPHF-1 ENDIF PHEP(1,NHEP)=EUPTEI(1,IIHEP) PHEP(2,NHEP)=EUPTEI(2,IIHEP) PHEP(3,NHEP)=EUPTEI(3,IIHEP) PHEP(4,NHEP)=EUPTEI(4,IIHEP) PHEP(5,NHEP)=EUPTEI(5,IIHEP) VHEP(1,NHEP)=EUSECV(1,IIHEP) VHEP(2,NHEP)=EUSECV(2,IIHEP) VHEP(3,NHEP)=EUSECV(3,IIHEP) VHEP(4,NHEP)=0. IF (IIHEP.GT.NTMAX) THEN CALL HWWARN('HWDEUR',99) GOTO 999 ENDIF 40 CONTINUE 999 RETURN END CDECK ID>, HWDFOR. *CMZ :- -01/04/99 19.52.44 by Mike Seymour *-- Author : Ian Knowles C----------------------------------------------------------------------- SUBROUTINE HWDFOR(P0,P1,P2,P3,P4) C----------------------------------------------------------------------- C Generates 4-body decay 0->1+2+3+4 using pure phase space C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,P0(5),P1(5),P2(5),P3(5),P4(5),B,C,AA,BB, & CC,DD,EE,TT,S1,RS1,FF,S2,PP,QQ,RR,P1CM,P234(5),P2CM,P34(5),P3CM INTEGER NTRY EXTERNAL HWRGEN B=P0(5)-P1(5) C=P2(5)+P3(5)+P4(5) IF (B.LT.C) THEN CALL HWWARN('HWDFOR',100) GOTO 999 ENDIF AA=(P0(5)+P1(5))**2 BB=B**2 CC=C**2 DD=(P3(5)+P4(5))**2 EE=(P3(5)-P4(5))**2 TT=(B-C)*P0(5)**7/16 C Select squared masses S1 and S2 of 234 and 34 subsystems NTRY=0 10 NTRY=NTRY+1 IF(NTRY.GT.NDETRY) THEN CALL HWWARN('HWDFOR',101) GOTO 999 ENDIF S1=BB+HWRGEN(1)*(CC-BB) RS1=SQRT(S1) FF=(RS1-P2(5))**2 S2=DD+HWRGEN(2)*(FF-DD) PP=(AA-S1)*(BB-S1) QQ=((RS1+P2(5))**2-S2)*(FF-S2)/S1 RR=(S2-DD)*(S2-EE)/S2 IF (PP*QQ*RR*(FF-DD)**2.LT.TT*S1*S2*HWRGEN(3)**2) GOTO 10 C Do two body decays: 0-->1+234, 234-->2+34 and 34-->3+4 P1CM=SQRT(PP/4)/P0(5) P234(5)=RS1 P2CM=SQRT(QQ/4) P34(5)=SQRT(S2) P3CM=SQRT(RR/4) CALL HWDTWO(P0 ,P1,P234,P1CM,TWO,.TRUE.) CALL HWDTWO(P234,P2,P34 ,P2CM,TWO,.TRUE.) CALL HWDTWO(P34 ,P3,P4 ,P3CM,TWO,.TRUE.) 999 RETURN END CDECK ID>, HWDFIV. *CMZ :- -01/04/99 19.52.44 by Mike Seymour *-- Author : Ian Knowles C----------------------------------------------------------------------- SUBROUTINE HWDFIV(P0,P1,P2,P3,P4,P5) C----------------------------------------------------------------------- C Generates 5-body decay 0->1+2+3+4+5 using pure phase space C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,P0(5),P1(5),P2(5),P3(5),P4(5),P5(5),B,C, & AA,BB,CC,DD,EE,FF,TT,S1,RS1,GG,S2,RS2,HH,S3,PP,QQ,RR,SS,P1CM, & P2345(5),P2CM,P345(5),P3CM,P45(5),P4CM INTEGER NTRY EXTERNAL HWRGEN B=P0(5)-P1(5) C=P2(5)+P3(5)+P4(5)+P5(5) IF (B.LT.C) THEN CALL HWWARN('HWDFIV',100) GOTO 999 ENDIF AA=(P0(5)+P1(5))**2 BB=B**2 CC=C**2 DD=(P3(5)+P4(5)+P5(5))**2 EE=(P4(5)+P5(5))**2 FF=(P4(5)-P5(5))**2 TT=(B-C)*P0(5)**11/729 C Select squared masses S1, S2 and S3 of 2345, 345 and 45 subsystems NTRY=0 10 NTRY=NTRY+1 IF(NTRY.GT.NDETRY) THEN CALL HWWARN('HWDFIV',101) GOTO 999 ENDIF S1=BB+HWRGEN(1)*(CC-BB) RS1=SQRT(S1) GG=(RS1-P2(5))**2 S2=DD+HWRGEN(2)*(GG-DD) RS2=SQRT(S2) HH=(RS2-P3(5))**2 S3=EE+HWRGEN(3)*(HH-EE) PP=(AA-S1)*(BB-S1) QQ=((RS1+P2(5))**2-S2)*(GG-S2)/S1 RR=((RS2+P3(5))**2-S3)*(HH-S3)/S2 SS=(S3-EE)*(S3-FF)/S3 IF (PP*QQ*RR*SS*((GG-DD)*(HH-EE))**2.LT.TT*S1*S2*S3*HWRGEN(4)**2) & GOTO 10 C Do two body decays: 0-->1+2345, 2345-->2+345, 345-->3+45 and 45-->4+5 P1CM=SQRT(PP/4)/P0(5) P2345(5)=RS1 P2CM=SQRT(QQ/4) P345(5)=RS2 P3CM=SQRT(RR/4) P45(5)=SQRT(S3) P4CM=SQRT(SS/4) CALL HWDTWO(P0 ,P1,P2345,P1CM,TWO,.TRUE.) CALL HWDTWO(P2345,P2,P345 ,P2CM,TWO,.TRUE.) CALL HWDTWO(P345 ,P3,P45 ,P3CM,TWO,.TRUE.) CALL HWDTWO(P45 ,P4,P5 ,P4CM,TWO,.TRUE.) 999 RETURN END CDECK ID>, HWDHAD. *CMZ :- -26/04/91 11.11.54 by Peter Richardson *-- Author : Ian Knowles, Bryan Webber & Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWDHAD C----------------------------------------------------------------------- C GENERATES DECAYS OF UNSTABLE HADRONS AND LEPTONS C Modified for TAUOLA interface 16/10/01 PR C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' COMMON/FFS/TB,BT COMMON/SFF/IT1,IB1,IT2,IB2 DOUBLE PRECISION TB,BT INTEGER IT1,IB1,IT2,IB2 DOUBLE PRECISION HWRGEN,HWULDO,RN,BF,COSANG,RSUM,DIST(4),VERTX(4), & PMIX,WTMX,WTMX2,XS,DOT1,DOT2,HWDPWT,HWDWWT,HWDHWT,XXX,YYY INTEGER IHEP,ID,MHEP,IDM,I,IDS,IM,MO,IPDG LOGICAL STABLE EXTERNAL HWRGEN,HWDPWT,HWDWWT,HWDHWT,HWULDO IF (IERROR.NE.0) RETURN DO 100 IHEP=1,NMXHEP IF (IHEP.GT.NHEP) THEN ISTAT=90 RETURN ELSEIF (ISTHEP(IHEP).EQ.120 .AND. & JDAHEP(1,IHEP).EQ.IHEP.AND.JDAHEP(2,IHEP).EQ.IHEP) THEN C---COPY COLOUR SINGLET CMF NHEP=NHEP+1 IF (NHEP.GT.NMXHEP) THEN CALL HWWARN('HWDHAD',100) GOTO 999 ENDIF CALL HWVEQU(5,PHEP(1,IHEP),PHEP(1,NHEP)) CALL HWVEQU(4,VHEP(1,IHEP),VHEP(1,NHEP)) IDHW(NHEP)=IDHW(IHEP) IDHEP(NHEP)=IDHEP(IHEP) ISTHEP(NHEP)=190 JMOHEP(1,NHEP)=IHEP JMOHEP(2,NHEP)=NHEP JDAHEP(2,NHEP)=NHEP JDAHEP(1,IHEP)=NHEP JDAHEP(2,IHEP)=NHEP ELSEIF (ISTHEP(IHEP).GE.190.AND.ISTHEP(IHEP).LE.193) THEN C---FIRST CHECK FOR STABILITY ID=IDHW(IHEP) IF (RSTAB(ID)) THEN ISTHEP(IHEP)=1 JDAHEP(1,IHEP)=0 JDAHEP(2,IHEP)=0 C---SPECIAL FOR GAUGE BOSON DECAY IF (ID.GE.198.AND.ID.LE.200) CALL HWDBOS(IHEP) C---SPECIAL FOR HIGGS BOSON DECAY IF (ID.EQ.201) CALL HWDHIG(ZERO) ELSE C---UNSTABLE. C Calculate position of decay vertex IF (DKLTM(ID).EQ.ZERO) THEN CALL HWVEQU(4,VHEP(1,IHEP),VERTX) MHEP=IHEP IDM=ID ELSE CALL HWUDKL(ID,PHEP(1,IHEP),DIST) CALL HWVSUM(4,VHEP(1,IHEP),DIST,VERTX) IF (MAXDKL) THEN CALL HWDXLM(VERTX,STABLE) IF (STABLE) THEN ISTHEP(IHEP)=1 JDAHEP(1,IHEP)=0 JDAHEP(2,IHEP)=0 GOTO 100 ENDIF ENDIF IF (MIXING.AND.(ID.EQ.221.OR.ID.EQ.223.OR. & ID.EQ.245.OR.ID.EQ.247)) THEN C Select flavour of decaying b-meson allowing for flavour oscillation IDS=MOD(ID,3) XXX=XMRCT(IDS)*DIST(4)/PHEP(4,IHEP) YYY=YMRCT(IDS)*DIST(4)/PHEP(4,IHEP) IF (ABS(YYY).LT.10) THEN PMIX=HALF*(ONE-COS(XXX)/COSH(YYY)) ELSE PMIX=HALF ENDIF IF (HWRGEN(1).LE.PMIX) THEN IF (ID.LE.223) THEN IDM=ID+24 ELSE IDM=ID-24 ENDIF ELSE IDM=ID ENDIF C Introduce a decaying neutral b-meson IF (NHEP+1.GT.NMXHEP) THEN CALL HWWARN('HWDHAD',101) GOTO 999 ENDIF MHEP=NHEP+1 ISTHEP(MHEP)=ISTHEP(IHEP) ISTHEP(IHEP)=200 JDAHEP(1,IHEP)=MHEP JDAHEP(2,IHEP)=MHEP IDHW(MHEP)=IDM IDHEP(MHEP)=IDPDG(IDM) JMOHEP(1,MHEP)=IHEP JMOHEP(2,MHEP)=JMOHEP(2,IHEP) CALL HWVEQU(5,PHEP(1,IHEP),PHEP(1,MHEP)) CALL HWVEQU(4,VERTX,VHEP(1,MHEP)) NHEP=NHEP+1 ELSE MHEP=IHEP IDM=ID ENDIF ENDIF C Use CLEO/EURODEC packages for b-hadrons if requested IF ((IDM.GE.221.AND.IDM.LE.231).OR. & (IDM.GE.245.AND.IDM.LE.254)) THEN IF (BDECAY.EQ.'CLEO') THEN CALL HWDCLE(MHEP) GOTO 100 ELSEIF (BDECAY.EQ.'EURO') THEN CALL HWDEUR(MHEP) GOTO 100 ENDIF ENDIF C Use TAUOLA package for tau decays if requested IF((IDM.EQ.125.OR.IDM.EQ.131).AND.TAUDEC.EQ.'TAUOLA') THEN CALL HWDTAU(1,MHEP,0.0D0) GOTO 100 ENDIF C Choose decay mode ISTHEP(MHEP)=ISTHEP(MHEP)+5 RN=HWRGEN(2) BF=0. IM=LSTRT(IDM) DO 10 I=1,NMODES(IDM) BF=BF+BRFRAC(IM) IF (BF.GE.RN) GOTO 20 10 IM=LNEXT(IM) CALL HWWARN('HWDHAD',50) GOTO 20 20 IF ((IDKPRD(1,IM).GE.1.AND.IDKPRD(1,IM).LE.13).OR. & (IDKPRD(3,IM).GE.1.AND.IDKPRD(3,IM).LE.13)) THEN C Partonic decay of a heavy-(b,c)-hadron, store details NQDK=NQDK+1 IF (NQDK.GT.NMXQDK) THEN CALL HWWARN('HWDHAD',102) GOTO 999 ENDIF LOCQ(NQDK)=MHEP IMQDK(NQDK)=IM CALL HWVEQU(4,VERTX,VTXQDK(1,NQDK)) GOTO 100 ELSE C Exclusive decay, add decay products to event record IF (NHEP+NPRODS(IM).GT.NMXHEP) THEN CALL HWWARN('HWDHAD',103) GOTO 999 ENDIF JDAHEP(1,MHEP)=NHEP+1 DO 30 I=1,NPRODS(IM) NHEP=NHEP+1 IDHW(NHEP)=IDKPRD(I,IM) IDHEP(NHEP)=IDPDG(IDKPRD(I,IM)) ISTHEP(NHEP)=193 JMOHEP(1,NHEP)=MHEP JMOHEP(2,NHEP)=JMOHEP(2,MHEP) PHEP(5,NHEP)=RMASS(IDKPRD(I,IM)) 30 CALL HWVEQU(4,VERTX,VHEP(1,NHEP)) JDAHEP(2,MHEP)=NHEP ENDIF C Next choose momenta: IF (NPRODS(IM).EQ.1) THEN C 1-body decay: K0(BR) --> K0S,K0L CALL HWVEQU(4,PHEP(1,MHEP),PHEP(1,NHEP)) ELSEIF (NPRODS(IM).EQ.2) THEN C 2-body decay C---SPECIAL TREATMENT OF POLARIZED MESONS COSANG=TWO IF (ID.EQ.IDHW(JMOHEP(1,MHEP))) THEN MO=JMOHEP(1,MHEP) RSUM=0 DO 40 I=1,3 40 RSUM=RSUM+RHOHEP(I,MO) IF (RSUM.GT.ZERO) THEN RSUM=RSUM*HWRGEN(3) IF (RSUM.LT.RHOHEP(1,MO)) THEN C---(1+COSANG)**2 COSANG=MAX(HWRGEN(4),HWRGEN(5),HWRGEN(6))*TWO-ONE ELSEIF (RSUM.LT.RHOHEP(1,MO)+RHOHEP(2,MO)) THEN C---1-COSANG**2 COSANG=2*COS((ACOS(HWRGEN(7)*TWO-ONE)+PIFAC)/THREE) ELSE C---(1-COSANG)**2 COSANG=MIN(HWRGEN(8),HWRGEN(9),HWRGEN(10))*TWO-ONE ENDIF ENDIF ENDIF CALL HWDTWO(PHEP(1,MHEP),PHEP(1,NHEP-1), & PHEP(1,NHEP),CMMOM(IM),COSANG,.FALSE.) ELSEIF (NPRODS(IM).EQ.3) THEN C 3-body decay IF (NME(IM).EQ.100) THEN C Use free massless (V-A)*(V-A) Matrix Element CALL HWDTHR(PHEP(1,MHEP),PHEP(1,NHEP-1),PHEP(1,NHEP-2), & PHEP(1,NHEP),HWDWWT) ELSEIF (NME(IM).EQ.101) THEN C Use bound massless (V-A)*(V-A) Matrix Element WTMX=((PHEP(5,MHEP)-PHEP(5,NHEP)) & *(PHEP(5,MHEP)+PHEP(5,NHEP)) & +(PHEP(5,NHEP-1)-PHEP(5,NHEP-2)) & *(PHEP(5,NHEP-1)+PHEP(5,NHEP-2)))/TWO WTMX2=WTMX**2 IPDG=ABS(IDHEP(MHEP)) XS=ONE-MAX(RMASS(MOD(IPDG/1000,10)), & RMASS(MOD(IPDG/100,10)),RMASS(MOD(IPDG/10,10))) & /(RMASS(MOD(IPDG/1000,10))+RMASS(MOD(IPDG/100,10)) & +RMASS(MOD(IPDG/10,10))) 50 CALL HWDTHR(PHEP(1,MHEP),PHEP(1,NHEP-1),PHEP(1,NHEP-2), & PHEP(1,NHEP),HWDWWT) DOT1=HWULDO(PHEP(1,MHEP),PHEP(1,NHEP-1)) DOT2=HWULDO(PHEP(1,MHEP),PHEP(1,NHEP-2)) IF (DOT1*(WTMX-DOT1-XS*DOT2).LT.HWRGEN(11)*WTMX2) GOTO 50 ELSE IF (NME(IM).EQ.200) THEN C Use free massless ((V-A)*TB1+(V+A)*CT1)*((V-A)*TB2+(V+A)*CT2)) Matrix Element C sort tan(beta) IF((IDK(IM).EQ. 2).OR.(IDK(IM).EQ. 4).OR. & (IDK(IM).EQ. 6).OR.(IDK(IM).EQ. 8).OR. & (IDK(IM).EQ. 10).OR.(IDK(IM).EQ. 12).OR. & (IDK(IM).EQ.122).OR.(IDK(IM).EQ.124).OR. & (IDK(IM).EQ.126).OR.(IDK(IM).EQ.128).OR. & (IDK(IM).EQ.130).OR.(IDK(IM).EQ.132))THEN TB=TANB ELSE TB=1./TANB END IF IF((IDKPRD(1,IM).EQ. 2).OR.(IDKPRD(1,IM).EQ. 4).OR. & (IDKPRD(1,IM).EQ. 6).OR.(IDKPRD(1,IM).EQ. 8).OR. & (IDKPRD(1,IM).EQ. 10).OR.(IDKPRD(1,IM).EQ. 12).OR. & (IDKPRD(1,IM).EQ.122).OR.(IDKPRD(1,IM).EQ.124).OR. & (IDKPRD(1,IM).EQ.126).OR.(IDKPRD(1,IM).EQ.128).OR. & (IDKPRD(1,IM).EQ.130).OR.(IDKPRD(1,IM).EQ.132))THEN BT=TANB ELSE BT=1./TANB END IF IT1=IDK(IM) IB1=IDKPRD(3,IM) IT2=IDKPRD(1,IM) IB2=IDKPRD(2,IM) CALL HWDTHR(PHEP(1,MHEP),PHEP(1,NHEP),PHEP(1,NHEP-2), & PHEP(1,NHEP-1),HWDHWT) ELSE CALL HWDTHR(PHEP(1,MHEP),PHEP(1,NHEP-2),PHEP(1,NHEP-1), & PHEP(1,NHEP),HWDPWT) ENDIF ELSEIF (NPRODS(IM).EQ.4) THEN C 4-body decay CALL HWDFOR(PHEP(1,MHEP ),PHEP(1,NHEP-3),PHEP(1,NHEP-2), & PHEP(1,NHEP-1),PHEP(1,NHEP)) IF(IERROR.NE.0) RETURN ELSEIF (NPRODS(IM).EQ.5) THEN C 5-body decay CALL HWDFIV(PHEP(1,MHEP ),PHEP(1,NHEP-4),PHEP(1,NHEP-3), & PHEP(1,NHEP-2),PHEP(1,NHEP-1),PHEP(1,NHEP)) IF(IERROR.NE.0) RETURN ELSE CALL HWWARN('HWDHAD',104) GOTO 999 ENDIF ENDIF ENDIF 100 CONTINUE C---MAY HAVE OVERFLOWED /HEPEVT/ CALL HWWARN('HWDHAD',105) 999 RETURN END CDECK ID>, HWDHGC. *CMZ :- -26/04/91 11.11.55 by Bryan Webber *-- Author : Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWDHGC(TAU,FNREAL,FNIMAG) C----------------------------------------------------------------------- C CALCULATE THE COMPLEX FUNCTION F OF HHG eq 2.18 C FOR USE IN H-->GAMMGAMM DECAYS C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION TAU,FNREAL,FNIMAG,FNLOG,FNSQR IF (TAU.GT.ONE) THEN FNREAL=(ASIN(1/SQRT(TAU)))**2 FNIMAG=0 ELSEIF (TAU.LT.ONE) THEN FNSQR=SQRT(1-TAU) FNLOG=LOG((1+FNSQR)/(1-FNSQR)) FNREAL=-0.25 * (FNLOG**2 - PIFAC**2) FNIMAG= 0.5 * PIFAC*FNLOG ELSE FNREAL=0.25*PIFAC**2 FNIMAG=0 ENDIF END CDECK ID>, HWDHGF. *CMZ :- -02/05/91 11.11.45 by Federico Carminati *-- Author : Mike Seymour C----------------------------------------------------------------------- FUNCTION HWDHGF(X,Y) C----------------------------------------------------------------------- C CALCULATE THE DOUBLE BREIT-WIGNER INTEGRAL C X=(EMV/EMH)**2 , Y=EMV*GAMV/EMH**2 C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWDHGF,X,Y,CHANGE,X1,X2,FAC1,FAC2,TH1,TH2,TH1HI, & TH1LO,TH2HI,TH2LO,X2MAX,SQFAC INTEGER NBIN,IBIN1,IBIN2 C CHANGE IS THE POINT WHERE DIRECT INTEGRATION BEGINS TO CONVERGE C FASTER THAN STANDARD BREIT-WIGNER SUBSTITUTION SAVE CHANGE,NBIN DATA CHANGE,NBIN/0.425D0,25/ HWDHGF=0 IF (Y.LT.ZERO) RETURN IF (X.GT.CHANGE) THEN C---DIRECT INTEGRATION FAC1=0.25 / NBIN DO 200 IBIN1=1,NBIN X1=(IBIN1-0.5) * FAC1 FAC2=( (1-SQRT(X1))**2-X1 ) / NBIN DO 100 IBIN2=1,NBIN X2=(IBIN2-0.5) * FAC2 + X1 SQFAC=1+X1**2+X2**2-2*(X1+X2+X1*X2) IF (SQFAC.LT.ZERO) GOTO 100 HWDHGF=HWDHGF + 2. & * ((1-X1-X2)**2+8*X1*X2) & * SQRT(SQFAC) & / ((X1-X)**2+Y**2) *Y & / ((X2-X)**2+Y**2) *Y & * FAC1*FAC2 100 CONTINUE 200 CONTINUE ELSE C---INTEGRATION USING TAN THETA SUBSTITUTIONS TH1LO=ATAN((0-X)/Y) TH1HI=ATAN((1-X)/Y) FAC1=(TH1HI-TH1LO) / NBIN DO 400 IBIN1=1,NBIN TH1=(IBIN1-0.5) * FAC1 + TH1LO X1=Y*TAN(TH1) + X X2MAX=MIN(X1,(1-SQRT(X1))**2) TH2LO=ATAN((0-X)/Y) TH2HI=ATAN((X2MAX-X)/Y) FAC2=(TH2HI-TH2LO) / NBIN DO 300 IBIN2=1,NBIN TH2=(IBIN2-0.5) * FAC2 + TH2LO X2=Y*TAN(TH2) + X SQFAC=1+X1**2+X2**2-2*(X1+X2+X1*X2) IF (SQFAC.LT.ZERO) GOTO 300 HWDHGF=HWDHGF + 2. & * ((1-X1-X2)**2+8*X1*X2) & * SQRT(SQFAC) & * FAC1 * FAC2 300 CONTINUE 400 CONTINUE ENDIF HWDHGF=HWDHGF/(PIFAC*PIFAC) END CDECK ID>, HWDHIG. *CMZ :- -24/04/92 14.23.44 by Mike Seymour *-- Author : Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWDHIG(GAMINP) C----------------------------------------------------------------------- C HIGGS DECAY ROUTINE C A) FOR GAMinp=0 FIND AND DECAY HIGGS C B) FOR GAMinp>0 CALCULATE TOTAL HIGGS WIDTH C FOR EMH=GAMINP. STORE RESULT IN GAMINP. C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWDHGF,HWRGEN,HWRUNI,HWUSQR,HWUPCM,GAMINP,EMH, & EMF,COLFAC,ENF,K1,K0,BET0,BET1,GAM0,GAM1,SCLOG,CFAC,XF,EM,GAMLIM, & GAM,XW,EMW,XZ,EMZ,YW,YZ,EMI,TAUT,TAUW,WIDHIG,VECDEC,EMB,GAMB, & TMIN,TMAX1,EM1,TMAX2,EM2,X1,X2,PROB,PCM,SUMR,SUMI,TAUTR,TAUTI, & TAUWR,TAUWI,GFACTR INTEGER HWRINT,IHIG,I,IFERM,NLOOK,I1,I2,IPART,IMODE,IDEC,MMAX LOGICAL HWRLOG EXTERNAL HWDHGF,HWRGEN,HWRUNI,HWUSQR,HWUPCM,HWRINT,HWRLOG SAVE GAM,EM,VECDEC PARAMETER (NLOOK=100) DIMENSION VECDEC(2,0:NLOOK) EQUIVALENCE (EMW,RMASS(198)),(EMZ,RMASS(200)) SAVE GAMLIM DATA GAMLIM,GAM,EM/10D0,2*0D0/ C---IF DECAY, FIND HIGGS (HWDHAD WILL HAVE GIVEN IT STATUS=1) IF (GAMINP.EQ.ZERO) THEN IHIG=0 DO 10 I=1,NHEP 10 IF (IHIG.EQ.0.AND.IDHW(I).EQ.201.AND.ISTHEP(I).EQ.1) IHIG=I IF (IHIG.EQ.0) THEN CALL HWWARN('HWDHIG',101) GOTO 999 ENDIF EMH=PHEP(5,IHIG) IF (EMH.LE.ZERO) THEN CALL HWWARN('HWDHIG',102) GOTO 999 ENDIF EMSCA=EMH ELSE EMH=GAMINP IF (EMH.LE.ZERO) THEN GAMINP=0 RETURN ENDIF ENDIF C---CALCULATE BRANCHING FRACTIONS C---FERMIONS C---NLL CORRECTION TO QUARK DECAY RATE (HHG eq 2.6-9) ENF=0 DO 1 I=1,6 1 IF (2*RMASS(I).LT.EMH) ENF=ENF+1 K1=5/PIFAC**2 K0=3/(4*PIFAC**2) BET0=(11*CAFAC-2*ENF)/3 BET1=(34*CAFAC**2-(10*CAFAC+6*CFFAC)*ENF)/3 GAM0=-8 GAM1=-404./3+40*ENF/9 SCLOG=LOG(EMH**2/QCDLAM**2) CFAC=1 + ( K1/K0 - 2*GAM0 + GAM0*BET1/BET0**2*LOG(SCLOG) & + (GAM0*BET1-GAM1*BET0)/BET0**2) / (BET0*SCLOG) DO 100 IFERM=1,9 IF (IFERM.LE.6) THEN EMF=RMASS(IFERM) XF=(EMF/EMH)**2 COLFAC=FLOAT(NCOLO) IF (EMF.GT.QCDLAM) & EMF=EMF*(LOG(EMH/QCDLAM)/LOG(EMF/QCDLAM))**(GAM0/(2*BET0)) ELSE EMF=RMASS(107+IFERM*2) XF=(EMF/EMH)**2 COLFAC=1 CFAC=1 ENDIF IF (FOUR*XF.LT.ONE) THEN GFACTR=ALPHEM/(8.*SWEIN*EMW**2) BRHIG(IFERM)=COLFAC*GFACTR*EMH*EMF**2 * (1-4*XF)**1.5 * CFAC ELSE BRHIG(IFERM)=0 ENDIF 100 CONTINUE C---W*W*/Z*Z* IF (ABS(EM-EMH).GE.GAMLIM*GAM) THEN C---OFF EDGE OF LOOK-UP TABLE XW=(EMW/EMH)**2 XZ=(EMZ/EMH)**2 YW=EMW*GAMW/EMH**2 YZ=EMZ*GAMZ/EMH**2 BRHIG(10)=.50*GFACTR * EMH**3 * HWDHGF(XW,YW) BRHIG(11)=.25*GFACTR * EMH**3 * HWDHGF(XZ,YZ) ELSE C---LOOK IT UP EMI=((EMH-EM)/(GAM*GAMLIM)+1)*NLOOK/2.0 I1=INT(EMI) I2=INT(EMI+1) BRHIG(10)=.50*GFACTR * EMH**3 * ( VECDEC(1,I1)*(I2-EMI) + & VECDEC(1,I2)*(EMI-I1) ) BRHIG(11)=.25*GFACTR * EMH**3 * ( VECDEC(2,I1)*(I2-EMI) + & VECDEC(2,I2)*(EMI-I1) ) ENDIF C---GAMMAGAMMA TAUT=(2*RMASS(6)/EMH)**2 TAUW=(2*EMW/EMH)**2 CALL HWDHGC(TAUT,TAUTR,TAUTI) CALL HWDHGC(TAUW,TAUWR,TAUWI) SUMR=4./3*( - 2*TAUT*( 1 + (1-TAUT)*TAUTR ) ) * ENHANC(6) & +(2 + 3*TAUW*( 1 + (2-TAUW)*TAUWR ) ) * ENHANC(10) SUMI=4./3*( - 2*TAUT*( (1-TAUT)*TAUTI ) ) * ENHANC(6) & +( 3*TAUW*( (2-TAUW)*TAUWI ) ) * ENHANC(10) BRHIG(12)=GFACTR*.03125*(ALPHEM/PIFAC)**2 & *EMH**3 * (SUMR**2 + SUMI**2) WIDHIG=0 DO 200 IPART=1, 12 IF (IPART.LT.12) BRHIG(IPART)=BRHIG(IPART)*ENHANC(IPART)**2 200 WIDHIG=WIDHIG+BRHIG(IPART) IF (WIDHIG.EQ.ZERO) THEN CALL HWWARN('HWDHIG',103) GOTO 999 ENDIF DO 300 IPART=1, 12 300 BRHIG(IPART)=BRHIG(IPART)/WIDHIG IF (EM.NE.RMASS(201)) THEN C---SET UP W*W*/Z*Z* LOOKUP TABLES EM=EMH GAM=WIDHIG GAMLIM=MAX(GAMLIM,GAMMAX) DO 400 I=0,NLOOK EMH=(I*2.0/NLOOK-1)*GAM*GAMLIM+EM XW=(EMW/EMH)**2 XZ=(EMZ/EMH)**2 YW=EMW*GAMW/EMH**2 YZ=EMZ*GAMZ/EMH**2 VECDEC(1,I)=HWDHGF(XW,YW) VECDEC(2,I)=HWDHGF(XZ,YZ) 400 CONTINUE EMH=EM ENDIF IF (GAMINP.GT.ZERO) THEN GAMINP=WIDHIG RETURN ENDIF C---SEE IF USER SPECIFIED A DECAY MODE IMODE=MOD(ABS(IPROC),100) C---IF NOT, CHOOSE ONE IF (IMODE.LT.1.OR.IMODE.GT.12) THEN MMAX=12 IF (IMODE.LT.1) MMAX=6 500 IMODE=HWRINT(1,MMAX) IF (BRHIG(IMODE).LT.HWRGEN(0)) GOTO 500 ENDIF C---SEE IF SPECIFIED DECAY IS POSSIBLE IF (BRHIG(IMODE).EQ.ZERO) THEN CALL HWWARN('HWDHIG',104) GOTO 999 ENDIF IF (IMODE.LE.6) THEN IDEC=IMODE ELSEIF (IMODE.LE.9) THEN IDEC=107+IMODE*2 ELSEIF (IMODE.EQ.10) THEN IDEC=198 ELSEIF (IMODE.EQ.11) THEN IDEC=200 ELSEIF (IMODE.EQ.12) THEN IDEC=59 ENDIF C---STATUS, IDs AND POINTERS ISTHEP(IHIG)=195 DO 600 I=1,2 ISTHEP(NHEP+I)=193 IDHW(NHEP+I)=IDEC IDHEP(NHEP+I)=IDPDG(IDEC) JDAHEP(I,IHIG)=NHEP+I JMOHEP(1,NHEP+I)=IHIG JMOHEP(2,NHEP+I)=NHEP+(3-I) JDAHEP(2,NHEP+I)=NHEP+(3-I) PHEP(5,NHEP+I)=RMASS(IDEC) IDEC=IDEC+6 IF (IDEC.EQ.204) IDEC=199 IF (IDEC.EQ.206) IDEC=200 IF (IDEC.EQ. 65) IDEC= 59 600 CONTINUE C---ALLOW W/Z TO BE OFF-SHELL IF (IMODE.EQ.10.OR.IMODE.EQ.11) THEN IF (IMODE.EQ.10) THEN EMB=EMW GAMB=GAMW ELSE EMB=EMZ GAMB=GAMZ ENDIF C---STANDARD MASS DISTRIBUTION 700 TMIN=ATAN(-EMB/GAMB) TMAX1=ATAN((EMH**2/EMB-EMB)/GAMB) EM1=HWUSQR(EMB*(GAMB*TAN(HWRUNI(0,TMIN,TMAX1))+EMB)) TMAX2=ATAN(((EMH-EM1)**2/EMB-EMB)/GAMB) EM2=HWUSQR(EMB*(GAMB*TAN(HWRUNI(0,TMIN,TMAX2))+EMB)) X1=(EM1/EMH)**2 X2=(EM2/EMH)**2 C---CORRECT MASS DISTRIBUTION PROB=HWUSQR(1+X1**2+X2**2-2*X1-2*X2-2*X1*X2) & * ((X1+X2-1)**2 + 8*X1*X2) IF (.NOT.HWRLOG(PROB)) GOTO 700 C---CALCULATE SPIN DENSITY MATRIX RHOHEP(1,NHEP+1)=4*X1*X2 / (8*X1*X2 + (X1+X2-1)**2) RHOHEP(2,NHEP+1)=(X1+X2-1)**2 / (8*X1*X2 + (X1+X2-1)**2) RHOHEP(3,NHEP+1)=RHOHEP(1,NHEP+1) C---SYMMETRIZE DISTRIBUTIONS IN PARTICLES 1,2 IF (HWRLOG(HALF)) THEN PHEP(5,NHEP+1)=EM1 PHEP(5,NHEP+2)=EM2 ELSE PHEP(5,NHEP+1)=EM2 PHEP(5,NHEP+2)=EM1 ENDIF ENDIF C---DO DECAY PCM=HWUPCM(EMH,PHEP(5,NHEP+1),PHEP(5,NHEP+2)) IF (PCM.LT.ZERO) THEN CALL HWWARN('HWDHIG',105) GOTO 999 ENDIF CALL HWDTWO(PHEP(1,IHIG),PHEP(1,NHEP+1),PHEP(1,NHEP+2), & PCM,TWO,.TRUE.) NHEP=NHEP+2 C---IF QUARK DECAY, HADRONIZE IF (IMODE.LE.6) THEN ISTHEP(NHEP-1)=113 ISTHEP(NHEP)=114 CALL HWBGEN CALL HWDHOB CALL HWCFOR CALL HWCDEC C--MHS FIX 07/03/05 - VERTEX POSITION FOR DECAYS TO LEPTONS OR PHOTONS ELSEIF (IMODE.LE.9.OR.IMODE.EQ.12) THEN CALL HWVEQU(4,VTXPIP,VHEP(1,NHEP-1)) CALL HWVEQU(4,VTXPIP,VHEP(1,NHEP)) C--END FIX ENDIF 999 RETURN END CDECK ID>, HWDHOB. *CMZ :- -17/10/01 10:19:15 by Peter Richardson *-- Author : Ian Knowles & Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWDHOB C----------------------------------------------------------------------- C Performs decays of heavy objects (heavy quarks & SUSY particles) C MODIFIED TO INCLUDE R-PARITY VIOLATING SUSY PR 9/4/99 C MODIFIED TO CALL A NUMBER OF ROUTINES TO DO THE VARIOUS BITS OF C THE PROCESS C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION PW(5) INTEGER IHEP,IS,ID,IM,KHEP,LHEP,MHEP,NPR,CLSAVE(2),NHEPST LOGICAL FOUND SAVE NHEPST IF (IERROR.NE.0) RETURN 10 FOUND=.FALSE. NHEPST = NHEP CLSAVE(1) = 0 CLSAVE(2) = 0 DO 60 IHEP=1,NMXHEP IS=ISTHEP(IHEP) ID=IDHW(IHEP) IF(SYSPIN.AND.NSPN.NE.0) CALL HWDSIN(CLSAVE) IF (.NOT.RSTAB(ID).AND.(ID.EQ.6.OR.ID.EQ.12.OR. & (ID.GE.203.AND.ID.LE.218).OR.ABS(IDPDG(ID)).GT.1000000).AND. & ((IS.EQ.120.AND.JDAHEP(1,IHEP).EQ.IHEP).OR. & IS.EQ.190.OR.(IS.GE.147.AND.IS.LE.151))) THEN FOUND=.TRUE. C--select the decay mode and enter the decay products in the event record CALL HWDHO1(IHEP,ID,IM,NPR,LHEP,MHEP) IF (IERROR.NE.0) RETURN C--select the momenta of the decay products CALL HWDHO2(IHEP,IM,NPR,MHEP,LHEP,KHEP,PW) IF (IERROR.NE.0) RETURN C--make the colour connections CALL HWDHO3(ID,IM,NPR,MHEP,LHEP,KHEP,CLSAVE) IF (IERROR.NE.0) RETURN C--perform the parton-showers CALL HWDHO4(IHEP,ID,IM,NPR,MHEP,LHEP,KHEP,PW) IF (IERROR.NE.0) RETURN ENDIF C--perform the colour corrections for RPV CALL HWDHO5(MHEP,LHEP,CLSAVE) IF(IERROR.NE.0) RETURN IF (IHEP.EQ.NHEP) GOTO 70 60 CONTINUE 70 IF(SYSPIN.AND.NHEP.NE.NHEPST) FOUND=.TRUE. IF (FOUND) THEN C--final check for colour disconnection CALL HWDHO6 C Go back to check for further heavy decay products GOTO 10 ENDIF END CDECK ID>, HWDHO1. *CMZ :- -17/10/01 10:19:15 by Peter Richardson *-- Author : Ian Knowles & Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWDHO1(IHEP,ID,IM,NPR,LHEP,MHEP) C----------------------------------------------------------------------- C Subroutine to perform the first part of the heavy object decays C IE to select the decay mode C was part of HWDHOB C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWUMBW,HWRGEN,SDKM,RN,BF INTEGER IST(3),IHEP,ID,IM,I,JHEP,LHEP,MHEP,NPR,MTRY,NTRY,IS EXTERNAL HWRGEN SAVE IST DATA IST/113,114,114/ IF (IERROR.NE.0) RETURN IF(.NOT.RPARTY) THEN NHEP = NHEP+1 ISTHEP(NHEP) = 3 IDHW(NHEP) = 20 IDHEP(NHEP) = 0 CALL HWVEQU(5,PHEP(1,IHEP),PHEP(1,NHEP)) CALL HWVEQU(4,VHEP(1,IHEP),VHEP(1,NHEP)) JMOHEP(1,NHEP)=JMOHEP(1,IHEP) JMOHEP(2,NHEP)=JMOHEP(2,IHEP) JDAHEP(1,NHEP)=JDAHEP(1,IHEP) JDAHEP(2,NHEP)=JDAHEP(2,IHEP) ENDIF C Make a copy of decaying object NHEP=NHEP+1 ISTHEP(NHEP)=155 IDHW(NHEP)=IDHW(IHEP) IDHEP(NHEP)=IDHEP(IHEP) CALL HWVEQU(5,PHEP(1,IHEP),PHEP(1,NHEP)) CALL HWVEQU(4,VHEP(1,IHEP),VHEP(1,NHEP)) JMOHEP(1,NHEP)=JMOHEP(1,IHEP) JMOHEP(2,NHEP)=JMOHEP(2,IHEP) C--copy the location of the particle in the spin block IF(SYSPIN.AND.NSPN.NE.0) THEN IF(ISNHEP(IHEP).EQ.0) THEN IS = IHEP MTRY = 0 5 MTRY = MTRY+1 IS = JMOHEP(1,IS) IF(ISNHEP(IS).EQ.0.AND.MTRY.LE.NETRY) GOTO 5 IF(MTRY.GT.NETRY) THEN CALL HWWARN('HWDHO1',102) GOTO 999 ENDIF ISNHEP(IHEP) = ISNHEP(IS) ENDIF ISNHEP(NHEP) = ISNHEP(JMOHEP(1,NHEP)) ENDIF MTRY=0 15 MTRY=MTRY+1 C Select decay mode RN=HWRGEN(0) BF=0. IM=LSTRT(ID) DO 20 I=1,NMODES(ID) BF=BF+BRFRAC(IM) IF (BF.GE.RN) GOTO 30 20 IM=LNEXT(IM) CALL HWWARN('HWDHO1',50) 30 IF (NHEP+5.GT.NMXHEP) THEN CALL HWWARN('HWDHO1',100) GOTO 999 ENDIF NPR=NPRODS(IM) JDAHEP(1,NHEP)=NHEP+1 JDAHEP(2,NHEP)=NHEP+NPR C Reset colour pointers (if set) JHEP=JMOHEP(2,IHEP) IF (JHEP.GT.0) THEN IF (JDAHEP(2,JHEP).EQ.IHEP) JDAHEP(2,JHEP)=NHEP IF(.NOT.RPARTY.AND.ISTHEP(JHEP).EQ.155 & .AND.ABS(IDHEP(JHEP)).GT.1000000 & .AND.JDAHEP(2,JHEP-1).EQ.IHEP) JDAHEP(2,JHEP-1) = NHEP ENDIF JHEP=JDAHEP(2,IHEP) IF (JHEP.GT.0) THEN IF (JMOHEP(2,JHEP).EQ.IHEP) JMOHEP(2,JHEP)=NHEP IF(.NOT.RPARTY.AND.ISTHEP(JHEP).EQ.155 & .AND.ABS(IDHEP(JHEP)).GT.1000000 & .AND.JMOHEP(2,JHEP-1).EQ.IHEP) JMOHEP(2,JHEP-1) = NHEP ENDIF C--Reset colour pointers if baryon number violated IF(.NOT.RPARTY) THEN DO JHEP=1,NHEP IF(ISTHEP(JHEP).EQ.155 & .AND.ABS(IDHEP(JHEP)).GT.1000000.AND. & JDAHEP(2,JHEP-1).EQ.IHEP) JDAHEP(2,JHEP-1)= NHEP IF(JDAHEP(2,JHEP).EQ.IHEP) JDAHEP(2,JHEP)=NHEP IF(JMOHEP(2,JHEP).EQ.IHEP) JMOHEP(2,JHEP)=NHEP ENDDO IF(HRDCOL(1,1).EQ.IHEP) HRDCOL(1,1)=NHEP ENDIF C Relabel original track IF (ISTHEP(IHEP).NE.120) ISTHEP(IHEP)=3 JMOHEP(2,IHEP)=JMOHEP(1,IHEP) JDAHEP(1,IHEP)=NHEP JDAHEP(2,IHEP)=NHEP C Label decay products and choose masses LHEP=NHEP MHEP=LHEP+1 NTRY=0 35 NTRY=NTRY+1 SDKM=PHEP(5,NHEP) DO 40 I=1,NPR NHEP=NHEP+1 IDHW(NHEP)=IDKPRD(I,IM) IDHEP(NHEP)=IDPDG(IDKPRD(I,IM)) ISTHEP(NHEP)=IST(I) JMOHEP(1,NHEP)=LHEP JDAHEP(1,NHEP)=0 PHEP(5,NHEP)=HWUMBW(IDKPRD(I,IM)) 40 SDKM=SDKM-PHEP(5,NHEP) IF (SDKM.LT.ZERO) THEN NHEP=NHEP-NPR IF (NTRY.LE.NETRY) GO TO 35 CALL HWWARN('HWDHO1',1) IF (MTRY.LE.NETRY) GO TO 15 CALL HWWARN('HWDHO1',101) GOTO 999 ENDIF C Assign production vertices to decay products CALL HWUDKL(ID,PHEP(1,IHEP),VHEP(1,MHEP)) CALL HWVSUM(4,VHEP(1,IHEP),VHEP(1,MHEP),VHEP(1,MHEP)) CALL HWVEQU(4,VHEP(1,MHEP),VHEP(1,NHEP)) 999 RETURN END CDECK ID>, HWDH02. *CMZ :- -30/09/02 14:05:28 by Peter Richardson *-- Author : Ian Knowles & Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWDHO2(IHEP,IM,NPR,MHEP,LHEP,KHEP,PW) C----------------------------------------------------------------------- C Subroutine to perform the second part of the heavy object decays C IE generate the kinematics for the decay C was part of HWDHOB C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' COMMON/FFS/TB,BT COMMON/SFF/IT1,IB1,IT2,IB2 DOUBLE PRECISION TB,BT INTEGER IT1,IB1,IT2,IB2,ISP DOUBLE PRECISION GAMHPM DOUBLE PRECISION HWUPCM,HWRGEN,PCM, & EMMX,EMWSQ,GMWSQ,EMLIM,PW(5),EMTST,HWDPWT,HWDWWT,HWULDO,HWDHWT DOUBLE COMPLEX RHOIN(2,2,2) INTEGER IHEP,IM,KHEP,LHEP,MHEP,NPR,RHEP EXTERNAL HWRGEN,HWDPWT,HWDWWT,HWDHWT SAVE RHOIN DATA RHOIN/(1.0D0,0.0D0),(0.0D0,0.0D0), & (0.0D0,0.0D0),(0.0D0,0.0D0), & (0.5D0,0.0D0),(0.0D0,0.0D0), & (0.0D0,0.0D0),(0.5D0,0.0D0)/ ISP = INT(2*RSPIN(IDHW(IHEP)))+1 IF (IERROR.NE.0) RETURN IF (NPR.EQ.2) THEN C Two body decay: LHEP -> MHEP + NHEP IF(NME(IM).GT.20000.AND.NME(IM).LT.30000) THEN C--generate a two body decay to a gauge boson as a three body decay CALL HWDSM3(2,IHEP,MHEP,NHEP,0,NME(IM)-20000,RHOIN(1,1,ISP),1) C--generate a two body decay of a Higgs to two gauge bosons ELSEIF(NME(IM).GT.40000.AND.NME(IM).LT.50000) THEN CALL HWDSM4(1,IHEP,MHEP,NHEP,NME(IM)-40000) C--if spin correlations call the routine to set-up the matrix element ELSEIF(SYSPIN.AND.NME(IM).GE.30000.AND.NME(IM).LE.40000) THEN CALL HWDSM2(IHEP,MHEP,NHEP,NME(IM)-30000,RHOIN(1,1,ISP),1) ELSE PCM=HWUPCM(PHEP(5,IHEP),PHEP(5,MHEP),PHEP(5,NHEP)) CALL HWDTWO(PHEP(1,IHEP),PHEP(1,MHEP), & PHEP(1,NHEP),PCM,TWO,.FALSE.) ENDIF ELSEIF (NPR.EQ.3) THEN C Three body decay: LHEP -> KHEP + MHEP + NHEP KHEP=MHEP MHEP=MHEP+1 C Provisional colour self-connection of KHEP JMOHEP(2,KHEP)=KHEP JDAHEP(2,KHEP)=KHEP IF (NME(IM).EQ.100) THEN C Generate decay momenta using full (V-A)*(V-A) matrix element EMMX=PHEP(5,IHEP)-PHEP(5,NHEP) EMWSQ=RMASS(198)**2 GMWSQ=(RMASS(198)*GAMW)**2 EMLIM=GMWSQ IF (EMMX.LT.RMASS(198)) EMLIM=EMLIM+(EMWSQ-EMMX**2)**2 50 CALL HWDTHR(PHEP(1,IHEP),PHEP(1,MHEP), & PHEP(1,KHEP),PHEP(1,NHEP),HWDWWT) CALL HWVSUM(4,PHEP(1,KHEP),PHEP(1,MHEP),PW) PW(5)=HWULDO(PW,PW) EMTST=(EMWSQ-PW(5))**2 IF ((EMTST+GMWSQ)*HWRGEN(1).GT.EMLIM) GOTO 50 PW(5)=SQRT(PW(5)) C Assign production vertices to 1 and 2 CALL HWUDKL(198,PW,VHEP(1,KHEP)) CALL HWVSUM(4,VHEP(1,NHEP),VHEP(1,KHEP),VHEP(1,KHEP)) ELSE IF (NME(IM).EQ.200) THEN C Generate decay momenta using full C ((V-A)*TB1+(V+A)*CT1)*((V-A)*TB2+(V+A)*CT2)) matrix element GAMHPM=RMASS(206)/DKLTM(206) C sort tan(beta) IF((IDK(IM).EQ. 2).OR.(IDK(IM).EQ. 4).OR. & (IDK(IM).EQ. 6).OR.(IDK(IM).EQ. 8).OR. & (IDK(IM).EQ. 10).OR.(IDK(IM).EQ. 12).OR. & (IDK(IM).EQ.122).OR.(IDK(IM).EQ.124).OR. & (IDK(IM).EQ.126).OR.(IDK(IM).EQ.128).OR. & (IDK(IM).EQ.130).OR.(IDK(IM).EQ.132))THEN TB=TANB ELSE TB=1./TANB END IF IF((IDKPRD(1,IM).EQ. 2).OR.(IDKPRD(1,IM).EQ. 4).OR. & (IDKPRD(1,IM).EQ. 6).OR.(IDKPRD(1,IM).EQ. 8).OR. & (IDKPRD(1,IM).EQ. 10).OR.(IDKPRD(1,IM).EQ. 12).OR. & (IDKPRD(1,IM).EQ.122).OR.(IDKPRD(1,IM).EQ.124).OR. & (IDKPRD(1,IM).EQ.126).OR.(IDKPRD(1,IM).EQ.128).OR. & (IDKPRD(1,IM).EQ.130).OR.(IDKPRD(1,IM).EQ.132))THEN BT=TANB ELSE BT=1./TANB END IF IT1=IDK(IM) IB1=IDKPRD(3,IM) IT2=IDKPRD(1,IM) IB2=IDKPRD(2,IM) EMMX=PHEP(5,IHEP)-PHEP(5,NHEP) EMWSQ=RMASS(206)**2 GMWSQ=(RMASS(206)*GAMHPM)**2 EMLIM=GMWSQ IF (EMMX.LT.RMASS(206)) EMLIM=EMLIM+(EMWSQ-EMMX**2)**2 55 CALL HWDTHR(PHEP(1,IHEP),PHEP(1,NHEP), & PHEP(1,KHEP),PHEP(1,MHEP),HWDHWT) CALL HWVSUM(4,PHEP(1,KHEP),PHEP(1,MHEP),PW) PW(5)=HWULDO(PW,PW) EMTST=(EMWSQ-PW(5))**2 IF ((EMTST+GMWSQ)*HWRGEN(2).GT.EMLIM) GOTO 55 PW(5)=SQRT(PW(5)) C Assign production vertices to 1 and 2 CALL HWUDKL(206,PW,VHEP(1,KHEP)) CALL HWVSUM(4,VHEP(1,NHEP),VHEP(1,KHEP),VHEP(1,KHEP)) ELSEIF(NME(IM).EQ.300) THEN C Generate momenta using 3-body RPV matrix element CALL HWDRME(LHEP,KHEP) C--Three body SUSY decay ELSEIF(NME(IM).GE.10000.AND.NME(IM).LT.20000) THEN CALL HWDSM3(3,IHEP,MHEP,KHEP,NHEP,NME(IM)-10000, & RHOIN(1,1,ISP),1) C--special for top decay IF(ABS(IDHEP(IHEP)).EQ.6) THEN CALL HWVSUM(4,PHEP(1,KHEP),PHEP(1,MHEP),PW) CALL HWUMAS(PW) ENDIF ELSE C Three body phase space decay CALL HWDTHR(PHEP(1,IHEP),PHEP(1,MHEP), & PHEP(1,KHEP),PHEP(1,NHEP),HWDPWT) ENDIF CALL HWVEQU(4,VHEP(1,KHEP),VHEP(1,MHEP)) ELSEIF(NPR.EQ.4) THEN C Four body decay: LHEP -> KHEP + RHEP + MHEP + NHEP KHEP = MHEP RHEP = MHEP+1 MHEP = MHEP+2 ISTHEP(NHEP) = 114 C Provisional colour connections of KHEP and RHEP JMOHEP(2,KHEP)=RHEP JDAHEP(2,KHEP)=RHEP JMOHEP(2,RHEP)=KHEP JDAHEP(2,RHEP)=KHEP C Four body phase space decay CALL HWDFOR(PHEP(1,IHEP),PHEP(1,KHEP),PHEP(1,RHEP), & PHEP(1,MHEP),PHEP(1,NHEP)) IF(IERROR.NE.0) RETURN CALL HWVEQU(4,VHEP(1,KHEP),VHEP(1,RHEP)) CALL HWVEQU(4,VHEP(1,KHEP),VHEP(1,MHEP)) ELSE CALL HWWARN('HWDHO2',100) ENDIF END CDECK ID>, HWDHO3. *CMZ :- -17/10/01 10:19:15 by Peter Richardson *-- Author : Ian Knowles & Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWDHO3(ID,IM,NPR,MHEP,LHEP,KHEP,CLSAVE) C----------------------------------------------------------------------- C Subroutine to perform the third part of the heavy object decays C IE setup the colour connections C was part of HWDHOB C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER ID,IM,KHEP,LHEP,MHEP,NPR,CLSAVE(2) IF (IERROR.NE.0) RETURN C Colour connections IF (ID.EQ.6.OR.ID.EQ.12.OR.(ID.GE.209.AND.ID.LE.212) & .OR.(ID.GE.215.AND.ID.LE.218)) THEN IF ((NPR.EQ.3.AND.NME(IM).EQ.100).OR. & ((SYSPIN.OR.THREEB).AND.NPR.EQ.3.AND. & NME(IM).GE.10000.AND.NME(IM).LE.20000)) THEN C usual heavy quark decay JMOHEP(2,KHEP)=MHEP JDAHEP(2,KHEP)=MHEP JMOHEP(2,MHEP)=KHEP JDAHEP(2,MHEP)=KHEP JMOHEP(2,NHEP)=LHEP JDAHEP(2,NHEP)=LHEP ELSEIF (ABS(IDHEP(MHEP)).EQ.37) THEN C heavy quark to charged Higgs 2->2 JMOHEP(2,MHEP)=MHEP JDAHEP(2,MHEP)=MHEP JMOHEP(2,NHEP)=LHEP JDAHEP(2,NHEP)=LHEP ELSEIF (ABS(IDHEP(NHEP)).EQ.37) THEN C heavy quark to charged Higgs 2->2 JMOHEP(2,MHEP)=LHEP JDAHEP(2,MHEP)=LHEP JMOHEP(2,NHEP)=NHEP JDAHEP(2,NHEP)=NHEP ELSE IF (NPR.EQ.3.AND.NME(IM).EQ.200) THEN C heavy quark to charged Higgs 2->3 JMOHEP(2,KHEP)=MHEP JDAHEP(2,KHEP)=MHEP JMOHEP(2,MHEP)=KHEP JDAHEP(2,MHEP)=KHEP JMOHEP(2,NHEP)=LHEP JDAHEP(2,NHEP)=LHEP ELSE CALL HWWARN('HWDHO3',100) GOTO 999 ENDIF ELSE IF(.NOT.RPARTY.AND. & ((NPR.EQ.2.AND.ID.GE.401.AND.ID.LT.448.AND. & IDHW(MHEP).LE.132.AND.IDHW(NHEP).LE.132) & .OR.(NPR.EQ.3.AND.ID.GE.449.AND.ID.LE.457.AND. & IDHW(MHEP).LE.132.AND.IDHW(NHEP).LE.132.AND. & IDHW(MHEP-1).LE.132))) THEN C R-parity violating SUSY decays IF(NPR.EQ.2) THEN C--Rparity slepton colour connections IF(ID.GE.425.AND.ID.LE.448) THEN IF(IDHW(MHEP).GT.12) THEN JMOHEP(2,MHEP) = MHEP JDAHEP(2,MHEP) = MHEP JMOHEP(2,NHEP) = NHEP JDAHEP(2,NHEP) = NHEP ELSE JMOHEP(2,MHEP) = NHEP JDAHEP(2,MHEP) = NHEP JMOHEP(2,NHEP) = MHEP JDAHEP(2,NHEP) = MHEP ENDIF C--Rparity squark colour connections ELSE IF(IDHEP(LHEP).GT.0) THEN C--LQD decay colour connections IF(IDHW(MHEP).GT.12) THEN JMOHEP(2,MHEP) = MHEP JDAHEP(2,MHEP) = MHEP JMOHEP(2,NHEP) = LHEP JDAHEP(2,NHEP) = LHEP ELSE C--UDD decay colour connections HVFCEN = .TRUE. CALL HWDRCL(LHEP,MHEP,CLSAVE) ENDIF ELSE C--Antisquark connections IF(IDHW(MHEP).GT.12) THEN JMOHEP(2,MHEP) = MHEP JDAHEP(2,MHEP) = MHEP JMOHEP(2,NHEP) = LHEP JDAHEP(2,NHEP) = LHEP ELSE HVFCEN = .TRUE. CALL HWDRCL(LHEP,MHEP,CLSAVE) ENDIF ENDIF ENDIF ELSE IF(ID.GE.450.AND.ID.LE.457) THEN C--Rparity Neutralino/Chargino colour connection IF(IDHW(MHEP-1).LE.12.AND.IDHW(MHEP).LE.12. & AND.IDHW(NHEP).LE.12) THEN HVFCEN = .TRUE. CALL HWDRCL(LHEP,MHEP,CLSAVE) ELSE JMOHEP(2,MHEP) = NHEP JDAHEP(2,MHEP) = NHEP JMOHEP(2,NHEP) = MHEP JDAHEP(2,NHEP) = MHEP ENDIF C--Rparity gluino colour connections ELSEIF(ID.EQ.449) THEN IF(IDHW(MHEP-1).LE.12.AND.IDHW(MHEP).LE.12. & AND.IDHW(NHEP).LE.12) THEN HVFCEN = .TRUE. CALL HWDRCL(LHEP,MHEP,CLSAVE) C--Now the lepton number violating decay ELSE IF(IDHW(MHEP).LE.6) THEN JMOHEP(2,MHEP) = LHEP JDAHEP(2,MHEP) = NHEP JMOHEP(2,NHEP) = MHEP JDAHEP(2,NHEP) = LHEP ELSE JMOHEP(2,MHEP) = NHEP JDAHEP(2,MHEP) = LHEP JMOHEP(2,NHEP) = LHEP JDAHEP(2,NHEP) = MHEP ENDIF ENDIF ELSE CALL HWWARN('HWDHO3',101) GOTO 999 ENDIF ENDIF ELSE C Normal SUSY decays IF (ID.LE.448.AND.ID.GT.207) THEN C Squark (or slepton) IF (IDHW(MHEP).EQ.449) THEN IF (IDHEP(LHEP).GT.0) THEN JMOHEP(2,MHEP)=LHEP JDAHEP(2,MHEP)=NHEP JMOHEP(2,NHEP)=MHEP JDAHEP(2,NHEP)=LHEP ELSE JMOHEP(2,MHEP)=NHEP JDAHEP(2,MHEP)=LHEP JMOHEP(2,NHEP)=LHEP JDAHEP(2,NHEP)=MHEP ENDIF ELSE IF(NPR.EQ.3.AND.IDHW(MHEP).LE.12) THEN JMOHEP(2,MHEP)=NHEP JDAHEP(2,MHEP)=NHEP JMOHEP(2,NHEP)=MHEP JDAHEP(2,NHEP)=MHEP ELSE JMOHEP(2,MHEP)=MHEP JDAHEP(2,MHEP)=MHEP JMOHEP(2,NHEP)=LHEP JDAHEP(2,NHEP)=LHEP ENDIF ENDIF ELSEIF (ID.EQ.449) THEN C Gluino IF (IDHW(NHEP).EQ.13) THEN JMOHEP(2,MHEP)=MHEP JDAHEP(2,MHEP)=MHEP JMOHEP(2,NHEP)=LHEP JDAHEP(2,NHEP)=LHEP ELSEIF (IDHEP(MHEP).GT.0) THEN JMOHEP(2,MHEP)=LHEP JDAHEP(2,MHEP)=NHEP JMOHEP(2,NHEP)=MHEP JDAHEP(2,NHEP)=LHEP ELSE JMOHEP(2,MHEP)=NHEP JDAHEP(2,MHEP)=LHEP JMOHEP(2,NHEP)=LHEP JDAHEP(2,NHEP)=MHEP ENDIF ELSE C Gaugino or Higgs JMOHEP(2,MHEP)=NHEP JDAHEP(2,MHEP)=NHEP JMOHEP(2,NHEP)=MHEP JDAHEP(2,NHEP)=MHEP ENDIF ENDIF ENDIF 999 RETURN END CDECK ID>, HWDHO4. *CMZ :- -30/09/02 14:05:28 by Peter Richardson *-- Author : Ian Knowles & Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWDHO4(IHEP,ID,IM,NPR,MHEP,LHEP,KHEP,PW) C----------------------------------------------------------------------- C Subroutine to perform the fourth part of the heavy object decays C IE parton-showers with special treatment for top C was part of HWDHOB C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION PW(5),PDW(5,3) INTEGER IHEP,ID,IM,I,KHEP,LHEP,MHEP,NPR,NTRY,WHEP,SHEP DOUBLE COMPLEX RHOIN(2,2) SAVE RHOIN DATA RHOIN/(0.5D0,0.0D0),(0.0D0,0.0D0), & (0.0D0,0.0D0),(0.5D0,0.0D0)/ IF (IERROR.NE.0) RETURN SHEP = NHEP C---SPECIAL CASE FOR THREE-BODY TOP DECAYS: C RELABEL THEM AS TWO TWO-BODY DECAYS FOR PARTON SHOWERING IF ((ID.EQ.6.OR.ID.EQ.12).AND.NPR.EQ.3.AND. & (NME(IM).EQ.100.OR.NME(IM).EQ.200.OR. & (NME(IM).GT.10000.AND.NME(IM).LE.20000.AND. & (SYSPIN.OR.THREEB)))) THEN C---STORE W/H DECAY PRODUCTS CALL HWVEQU(10,PHEP(1,KHEP),PDW) C---BOOST THEM INTO W/H REST FRAME CALL HWULOF(PW,PDW(1,1),PDW(1,3)) C---REPLACE THEM BY W/H CALL HWVEQU(5,PW,PHEP(1,KHEP)) WHEP=KHEP IF (NME(IM).EQ.100.OR.(NME(IM).GT.10000.AND. & NME(IM).LE.20000.AND.(SYSPIN.OR.THREEB)))IDHW(KHEP)=198 IF((NME(IM).EQ.100.OR.(NME(IM).GT.10000.AND. & NME(IM).LE.20000.AND.(SYSPIN.OR.THREEB))).AND.(ID.EQ.12)) & IDHW(KHEP)=199 IF (NME(IM).EQ.200)IDHW(KHEP)=206 IF((NME(IM).EQ.200).AND.(ID.EQ.12))IDHW(KHEP)=207 IDHEP(KHEP)=IDPDG(IDHW(KHEP)) JMOHEP(2,KHEP)=KHEP JDAHEP(2,KHEP)=KHEP CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,KHEP)) C---AND MOVE B UP CALL HWVEQU(5,PHEP(1,NHEP),PHEP(1,MHEP)) IDHW(MHEP)=IDHW(NHEP) IDHEP(MHEP)=IDHEP(NHEP) JDAHEP(2,LHEP)=MHEP JMOHEP(2,MHEP)=JMOHEP(2,NHEP) JDAHEP(2,MHEP)=JDAHEP(2,NHEP) CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,MHEP)) NHEP=MHEP C---DO PARTON SHOWER EMSCA=PHEP(5,IHEP) CALL HWBGEN IF (IERROR.NE.0) RETURN C---FIND BOOSTED W/H MOMENTUM NTRY=0 41 NTRY=NTRY+1 IF (NTRY.GT.NHEP.OR.WHEP.LE.0.OR.WHEP.GT.NHEP) THEN CALL HWWARN('HWDHO4',100) GOTO 999 ENDIF WHEP=JDAHEP(1,WHEP) IF (ISTHEP(WHEP).NE.190) GOTO 41 C---AND HENCE ITS CHILDRENS MOMENTA CALL HWULOB(PHEP(1,WHEP),PDW(1,3),PHEP(1,NHEP+1)) CALL HWVDIF(4,PHEP(1,WHEP),PHEP(1,NHEP+1),PHEP(1,NHEP+2)) PHEP(5,NHEP+2)=PDW(5,2) C---LABEL THEM ISTHEP(WHEP)=195 DO 51 I=1,2 IDHW(NHEP+I)=IDKPRD(I,IM) IDHEP(NHEP+I)=IDPDG(IDHW(NHEP+I)) ISTHEP(NHEP+I)=112+I JDAHEP(I,WHEP)=NHEP+I JMOHEP(1,NHEP+I)=WHEP JMOHEP(2,NHEP+I)=NHEP+3-I JDAHEP(2,NHEP+I)=NHEP+3-I 51 CONTINUE NHEP=NHEP+2 C---ASSIGN PRODUCTION VERTICES TO 1 AND 2 IF(NME(IM).EQ.100)CALL HWUDKL(198,PW,VHEP(1,NHEP)) IF(NME(IM).EQ.200)CALL HWUDKL(206,PW,VHEP(1,NHEP)) CALL HWVSUM(4,VHEP(1,WHEP),VHEP(1,NHEP),VHEP(1,NHEP)) CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,NHEP-1)) C---DO PARTON SHOWERS EMSCA=PW(5) C--modification to use photos in top decays IF(ITOPRD.EQ.1) CALL HWPHTP(WHEP) C--end of modification CALL HWBGEN IF (IERROR.NE.0) RETURN ELSE C Do parton showers EMSCA=PHEP(5,IHEP) CALL HWBGEN IF (IERROR.NE.0) RETURN C--special for gauge boson decay modes of gauginos and four body higgs C--call routine to add decay products and generate parton shower IF(NME(IM).GT.20000.AND.NME(IM).LT.30000) THEN CALL HWDSM3(-1,IHEP,MHEP,SHEP,0,NME(IM)-20000,RHOIN, & ISNHEP(IHEP)) ELSEIF(NME(IM).GT.40000.AND.NME(IM).LT.50000) THEN CALL HWDSM4(2,IHEP,MHEP,SHEP,NME(IM)-40000) ENDIF IF (IERROR.NE.0) RETURN ENDIF 999 RETURN END CDECK ID>, HWDHO5. *CMZ :- -17/10/01 10:19:15 by Peter Richardson *-- Author : Ian Knowles & Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWDHO5(MHEP,LHEP,CLSAVE) C----------------------------------------------------------------------- C Subroutine to perform the fifth part of the heavy object decays C IE sort out RPV colour connections C was part of HWDHOB C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER ID,LHEP,MHEP,IDM,IDM2,THEP,CLSAVE(2) IF (IERROR.NE.0) RETURN C--New to correct colour connections in Rslash IF(CLSAVE(1).NE.0) THEN THEP = MHEP+1 ID = IDHW(CLSAVE(1)) IDM = IDHW(JMOHEP(1,CLSAVE(1))) IDM2 = IDHW(LHEP) IF(IDM.EQ.15) ID=IDHW(JMOHEP(1,JMOHEP(1,CLSAVE(1)))) IF((ID.LE.6.AND.((IDM.GE.419.AND.IDM.LE.424).OR.IDM.EQ.411.OR. & IDM.EQ.412). & AND.((IDM2.GE.413.AND.IDM2.LE.418) & .OR.IDM2.EQ.449).OR.IDM2.EQ.405.OR.IDM2.EQ.406) & .OR.(ID.LE.6.AND.IDM.EQ.449.AND. & (((IDM2.GE.413.AND.IDM2.LE.418).OR.IDM2.EQ.405.OR.IDM2.EQ.406) & .OR.IDM2.EQ.449)).OR. & (IDM.EQ.15.AND.ID.LE.12.AND.ID.GE.7.AND.((IDM2.GE.413.AND. & IDM2.LE.418).OR.IDM2.EQ.449.OR.IDM2. & EQ.405.OR.IDM2.EQ.406))) THEN IF(JMOHEP(2,CLSAVE(1)).EQ.MHEP) THEN IF(IDHW(CLSAVE(1)).NE.13.AND.IDHW(CLSAVE(1)).NE.449) & JMOHEP(2,CLSAVE(2)) = THEP JDAHEP(2,MHEP) = CLSAVE(1) JDAHEP(2,THEP) = CLSAVE(2) ELSE IF(IDHW(CLSAVE(1)).NE.13.AND.IDHW(CLSAVE(1)).NE.449) & JMOHEP(2,CLSAVE(2)) = MHEP JDAHEP(2,MHEP) = CLSAVE(2) JDAHEP(2,THEP) = CLSAVE(1) ENDIF ELSEIF((ID.GT.6.AND.ID.LE.12. & AND.((IDM.GE.413.AND.IDM.LE.418).OR.IDM.EQ.405.OR. & IDM.EQ.406).AND. & ((IDM2.GE.419.AND.IDM2.LE.424).OR.IDM2.EQ.449.OR. & IDM2.EQ.411.OR.IDM2.EQ.412)).OR. & (ID.GT.6.AND.ID.LE.12.AND.IDM.EQ.449. & AND.((IDM2.GE.419.AND.IDM2.LE.424).OR.IDM2.EQ.449.OR. & IDM2.EQ.411.OR.IDM2.EQ.412)).OR. & (IDM.EQ.15.AND.ID.LE.6.AND.((IDM2.GE.419.AND. & IDM2.LE.424).OR.IDM2.EQ.449.OR.IDM2.EQ.411.OR. & IDM2.EQ.412))) THEN IF(JDAHEP(2,CLSAVE(1)).EQ.MHEP) THEN JDAHEP(2,CLSAVE(2))=THEP JMOHEP(2,MHEP)=CLSAVE(1) JMOHEP(2,THEP)=CLSAVE(2) ELSE JDAHEP(2,CLSAVE(2))=MHEP JMOHEP(2,MHEP)=CLSAVE(2) JMOHEP(2,THEP)=CLSAVE(1) ENDIF ENDIF COLUPD = .FALSE. CALL HWBCON ENDIF END CDECK ID>, HWDHO6. *CMZ :- -17/10/01 10:19:15 by Peter Richardson *-- Author : Ian Knowles & Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWDHO6 C----------------------------------------------------------------------- C Subroutine to perform the final part of the heavy object decays C IE sort out any colour connection problems C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IHEP,IM,JHEP,ISM,JCM IF (IERROR.NE.0) RETURN C Fix any SUSY colour disconnections DO 80 IHEP=1,NHEP IF (ISTHEP(IHEP).GE.147.AND.ISTHEP(IHEP).LE.151 & .AND.JDAHEP(2,IHEP).EQ.0) THEN IM=JMOHEP(1,IHEP) C Chase connection back through SUSY decays 75 IM=JMOHEP(1,IM) ISM=ISTHEP(IM) IF (ISM.EQ.120) GOTO 80 IF (ISM.NE.123.AND.ISM.NE.124.AND.ISM.NE.155) GOTO 75 C Look for unclustered parton to connect DO JHEP=1,NHEP IF (ISTHEP(JHEP).GE.147.AND.ISTHEP(JHEP).LE.151) THEN JCM=JMOHEP(2,JHEP) IF (JCM.EQ.IM) THEN C Found it: connect JMOHEP(2,JHEP)=IHEP JDAHEP(2,IHEP)=JHEP GOTO 80 ENDIF ENDIF ENDDO C Not found: need to go further back GOTO 75 ENDIF 80 CONTINUE END CDECK ID>, HWDHVY. *CMZ :- -26/04/91 12.19.24 by Federico Carminati *-- Author : Ian Knowles & Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWDHVY C----------------------------------------------------------------------- C Performs partonic decays of hadrons containing heavy quark(s): C either, meson/baryon spectator model weak decays; C or, quarkonia -> 2-gluons, q-qbar, 3-gluons, or 2-gluons + photon. C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' COMMON/FFS/TB,BT COMMON/SFF/IT1,IB1,IT2,IB2 DOUBLE PRECISION TB,BT INTEGER IT1,IB1,IT2,IB2 DOUBLE PRECISION GAMHPM DOUBLE PRECISION HWULDO,HWRGEN,XS,XB,EMWSQ,GMWSQ,EMLIM,PW(4), & EMTST,X1,X2,X3,TEST,HWDWWT,HWDHWT,HWDPWT INTEGER IST(3),I,IHEP,IM,ID,IDQ,IQ,IS,J EXTERNAL HWRGEN,HWDWWT,HWDHWT,HWDPWT,HWULDO SAVE IST DATA IST/113,114,114/ IF (IERROR.NE.0) RETURN DO 100 I=1,NMXQDK IF (I.GT.NQDK) THEN NQDK=0 RETURN ENDIF IHEP=LOCQ(I) IF (ISTHEP(IHEP).EQ.199) GOTO 100 IM=IMQDK(I) IF (NHEP+NPRODS(IM).GT.NMXHEP) THEN CALL HWWARN('HWDHVY',100) GOTO 999 ENDIF IF (IDKPRD(4,IM).NE.0) THEN C Weak decay of meson or baryon C Idenitify decaying heavy quark and spectator ID=IDHW(IHEP) IF (ID.EQ.136.OR.ID.EQ.140.OR.ID.EQ.144.OR. & ID.EQ.150.OR.ID.EQ.155.OR.ID.EQ.158.OR.ID.EQ.161.OR. & (ID.EQ.254.AND.IDKPRD(4,IM).EQ.11)) THEN C c hadron or c decay of B_c+ IDQ=4 IQ=NHEP+1 IS=NHEP+2 ELSEIF (ID.EQ.171.OR.ID.EQ.175.OR.ID.EQ.179.OR. & ID.EQ.185.OR.ID.EQ.190.OR.ID.EQ.194.OR.ID.EQ.196.OR. & (ID.EQ.230.AND.IDKPRD(4,IM).EQ.5)) THEN C cbar hadron or cbar decay of B_c- IDQ=10 IS=NHEP+1 IQ=NHEP+2 ELSEIF ((ID.GE.221.AND.ID.LE.229).OR. & (ID.EQ.230.AND.IDKPRD(4,IM).EQ.10)) THEN C b hadron or b decay of B_c- IDQ=5 IQ=NHEP+1 IS=NHEP+2 ELSEIF ((ID.GE.245.AND.ID.LE.253).OR. & (ID.EQ.254.AND.IDKPRD(4,IM).EQ.4)) THEN C bbar hadron or bbar decay of B_c+ IDQ=11 IS=NHEP+1 IQ=NHEP+2 ELSE C Decay not recognized CALL HWWARN('HWDHVY',101) GOTO 999 ENDIF C Label constituents IF (NHEP+5.GT.NMXHEP) THEN CALL HWWARN('HWDHVY',102) GOTO 999 ENDIF ISTHEP(IHEP)=199 JDAHEP(1,IHEP)=NHEP+1 JDAHEP(2,IHEP)=NHEP+2 IDHW(IQ)=IDQ IDHW(IS)=IDKPRD(4,IM) IDHEP(IQ)=IDPDG(IDQ) IDHEP(IS)=IDPDG(IDKPRD(4,IM)) ISTHEP(IQ)=155 ISTHEP(IS)=115 JMOHEP(1,IQ)=IHEP JMOHEP(2,IQ)=IS JDAHEP(1,IQ)=NHEP+3 JDAHEP(2,IQ)=NHEP+5 JMOHEP(1,IS)=IHEP JMOHEP(2,IS)=NHEP+5 JDAHEP(1,IS)=0 JDAHEP(2,IS)=NHEP+5 NHEP=NHEP+2 C and weak decay product jets DO 10 J=1,3 NHEP=NHEP+1 IDHW(NHEP)=IDKPRD(J,IM) IDHEP(NHEP)=IDPDG(IDKPRD(J,IM)) ISTHEP(NHEP)=IST(J) JMOHEP(1,NHEP)=IQ JDAHEP(1,NHEP)=0 10 PHEP(5,NHEP)=RMASS(IDKPRD(J,IM)) JMOHEP(2,NHEP-2)=NHEP-1 JDAHEP(2,NHEP-2)=NHEP-1 JMOHEP(2,NHEP-1)=NHEP-2 JDAHEP(2,NHEP-1)=NHEP-2 JMOHEP(2,NHEP )=IQ JDAHEP(2,NHEP )=IQ C Share momenta in ratio of masses, preserving specator mass XS=RMASS(IDHW(IS))/PHEP(5,IHEP) XB=ONE-XS CALL HWVSCA(5,XB,PHEP(1,IHEP),PHEP(1,IQ)) CALL HWVSCA(5,XS,PHEP(1,IHEP),PHEP(1,IS)) IF (NME(IM).EQ.100) THEN C Generate decay momenta using full (V-A)*(V-A) matrix element EMWSQ=RMASS(198)**2 GMWSQ=(RMASS(198)*GAMW)**2 EMLIM=GMWSQ+(EMWSQ-(PHEP(5,IQ)-PHEP(5,NHEP))**2)**2 20 CALL HWDTHR(PHEP(1,IQ ),PHEP(1,NHEP-1), & PHEP(1,NHEP-2),PHEP(1,NHEP),HWDWWT) CALL HWVSUM(4,PHEP(1,NHEP-2),PHEP(1,NHEP-1),PW) EMTST=(HWULDO(PW,PW)-EMWSQ)**2 IF ((EMTST+GMWSQ)*HWRGEN(0).GT.EMLIM) GOTO 20 ELSEIF (NME(IM).EQ.200) THEN C Generate decay momenta using full C ((V-A)*TB1+(V+A)*CT1)*((V-A)*TB2+(V+A)*CT2)) matrix element GAMHPM=RMASS(206)/DKLTM(206) C sort tan(beta) IF((IQ.EQ. 2).OR.(IQ.EQ. 4).OR. & (IQ.EQ. 6).OR.(IQ.EQ. 8).OR. & (IQ.EQ. 10).OR.(IQ.EQ. 12).OR. & (IQ.EQ.122).OR.(IQ.EQ.124).OR. & (IQ.EQ.126).OR.(IQ.EQ.128).OR. & (IQ.EQ.130).OR.(IQ.EQ.132))THEN TB=TANB ELSE TB=1./TANB END IF IF((IDKPRD(1,IM).EQ. 2).OR.(IDKPRD(1,IM).EQ. 4).OR. & (IDKPRD(1,IM).EQ. 6).OR.(IDKPRD(1,IM).EQ. 8).OR. & (IDKPRD(1,IM).EQ. 10).OR.(IDKPRD(1,IM).EQ. 12).OR. & (IDKPRD(1,IM).EQ.122).OR.(IDKPRD(1,IM).EQ.124).OR. & (IDKPRD(1,IM).EQ.126).OR.(IDKPRD(1,IM).EQ.128).OR. & (IDKPRD(1,IM).EQ.130).OR.(IDKPRD(1,IM).EQ.132))THEN BT=TANB ELSE BT=1./TANB END IF IT1=IQ IB1=IDKPRD(3,IM) IT2=IDKPRD(1,IM) IB2=IDKPRD(2,IM) EMWSQ=RMASS(206)**2 GMWSQ=(RMASS(206)*GAMHPM)**2 EMLIM=GMWSQ+(EMWSQ-(PHEP(5,IQ)-PHEP(5,NHEP))**2)**2 25 CALL HWDTHR(PHEP(1,IQ ),PHEP(1,NHEP), & PHEP(1,NHEP-2),PHEP(1,NHEP-1),HWDHWT) CALL HWVSUM(4,PHEP(1,NHEP-2),PHEP(1,NHEP-1),PW) EMTST=(HWULDO(PW,PW)-EMWSQ)**2 IF ((EMTST+GMWSQ)*HWRGEN(0).GT.EMLIM) GOTO 25 ELSE C Use phase space CALL HWDTHR(PHEP(1,IQ ),PHEP(1,NHEP-2), & PHEP(1,NHEP-1),PHEP(1,NHEP),HWDPWT) CALL HWVSUM(4,PHEP(1,NHEP-2),PHEP(1,NHEP-1),PW) ENDIF C Set up production vertices CALL HWVZRO(4,VHEP(1,IQ)) CALL HWVEQU(4,VHEP(1,IQ),VHEP(1,IS)) CALL HWVEQU(4,VHEP(1,IQ),VHEP(1,NHEP)) CALL HWUDKL(198,PW,VHEP(1,NHEP-2)) CALL HWVSUM(4,VHEP(1,IQ),VHEP(1,NHEP-2),VHEP(1,NHEP-2)) CALL HWVEQU(4,VHEP(1,NHEP-2),VHEP(1,NHEP-1)) EMSCA=PHEP(5,IQ) ELSE C Quarkonium decay C Label products ISTHEP(IHEP)=199 JDAHEP(1,IHEP)=NHEP+1 DO 30 J=1,NPRODS(IM) NHEP=NHEP+1 IDHW(NHEP)=IDKPRD(J,IM) IDHEP(NHEP)=IDPDG(IDKPRD(J,IM)) ISTHEP(NHEP)=IST(J) JMOHEP(1,NHEP)=IHEP JDAHEP(1,NHEP)=0 PHEP(5,NHEP)=RMASS(IDKPRD(J,IM)) 30 CALL HWVZRO(4,VHEP(1,NHEP)) JDAHEP(2,IHEP)=NHEP C Establish colour connections and select momentum configuration IF (NPRODS(IM).EQ.3) THEN IF (IDKPRD(3,IM).EQ.13) THEN C 3-gluon decay JMOHEP(2,NHEP-2)=NHEP JMOHEP(2,NHEP-1)=NHEP-2 JMOHEP(2,NHEP )=NHEP-1 JDAHEP(2,NHEP-2)=NHEP-1 JDAHEP(2,NHEP-1)=NHEP JDAHEP(2,NHEP )=NHEP-2 ELSE C or 2-gluon + photon decay JMOHEP(2,NHEP-2)=NHEP-1 JMOHEP(2,NHEP-1)=NHEP-2 JMOHEP(2,NHEP )=NHEP JDAHEP(2,NHEP-2)=NHEP-1 JDAHEP(2,NHEP-1)=NHEP-2 JDAHEP(2,NHEP )=NHEP ENDIF IF (NME(IM).EQ.130) THEN C Use Ore & Powell orthopositronium matrix element 40 CALL HWDTHR(PHEP(1,IHEP),PHEP(1,NHEP-2), & PHEP(1,NHEP-1),PHEP(1,NHEP),HWDPWT) X1=TWO*HWULDO(PHEP(1,IHEP),PHEP(1,NHEP-2))/PHEP(5,IHEP)**2 X2=TWO*HWULDO(PHEP(1,IHEP),PHEP(1,NHEP-1))/PHEP(5,IHEP)**2 X3=TWO-X1-X2 TEST=((X1*(ONE-X1))**2+(X2*(ONE-X2))**2+(X3*(ONE-X3))**2) & /(X1*X2*X3)**2 IF (TEST.LT.TWO*HWRGEN(0)) GOTO 40 ELSE C Use phase space CALL HWDTHR(PHEP(1,IHEP),PHEP(1,NHEP-2), & PHEP(1,NHEP-1),PHEP(1,NHEP),HWDPWT) ENDIF ELSE C Parapositronium 2-gluon or q-qbar decay JMOHEP(2,NHEP-1)=NHEP JMOHEP(2,NHEP )=NHEP-1 JDAHEP(2,NHEP-1)=NHEP JDAHEP(2,NHEP )=NHEP-1 CALL HWDTWO(PHEP(1,IHEP),PHEP(1,NHEP-1), & PHEP(1,NHEP),CMMOM(IM),TWO,.FALSE.) ENDIF EMSCA=PHEP(5,IHEP) ENDIF C Process this new hard scatter CALL HWVEQU(4,VTXQDK(1,I),VTXPIP) CALL HWBGEN CALL HWCFOR CALL HWCDEC CALL HWDHAD 100 CONTINUE NQDK=0 999 RETURN END CDECK ID>, HWDRCL. *CMZ :- -20/07/99 10:56:12 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWDRCL(IHEP,MHEP,CLSAVE) C----------------------------------------------------------------------- C Sets the colour connections in Baryon number violating decays C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IHEP,MHEP,ID,ID2,IDM2,IDM3,COLCON(2,2,3),FLACON(2,3),JHEP, & DECAY,COLANT,KHEP,IDM,IDMB,IDMB2,IDMB3,IDMB4,QHEP,IDM4, & CLSAVE(2),XHEP,I,HWRINT,THEP LOGICAL CONBV C--Colour connections for the decays SAVE COLCON,FLACON DATA COLCON/-1,1,-1,-2,-2,1,-3,-1,-1,1,-2,-1/ DATA FLACON/1,-1,1,-1,-1,0/ C--identify the decay IF(IERROR.NE.0) RETURN ID = IDHW(IHEP) ID2 = IDHW(MHEP) IF(ID.GE.450.AND.ID.LE.457) THEN DECAY = 1 ELSEIF(ID.EQ.449) THEN DECAY = 2 ELSEIF((ID.GE.411.AND.ID.LE.424).OR.ID.EQ.405.OR.ID.EQ.406) THEN DECAY = 3 ELSE C--UNKNOWN DECAY CALL HWWARN('HWDRCL',100) GOTO 999 ENDIF COLANT = 1 C--identify the colour partner IF(DECAY.GT.1.AND.ID2.LE.6) THEN C--colour partner COLANT = 2 KHEP = JDAHEP(2,IHEP-1) ELSEIF(DECAY.GT.1.AND.ID2.GE.7) THEN C--anticolour partner COLANT = 3 KHEP = JMOHEP(2,IHEP) ELSE KHEP=IHEP ENDIF IDM = IDHW(JMOHEP(1,KHEP)) IF(ABS(IDPDG(IDM)).GT.1000000.OR.IDM.EQ.15) THEN IDM2 = IDHW(JDAHEP(1,JMOHEP(1,KHEP))) IDM3 = IDHW(JDAHEP(2,JMOHEP(1,KHEP))) IDM4 = IDHW(JDAHEP(2,JMOHEP(1,KHEP))-1) QHEP = JMOHEP(1,KHEP) IDMB = IDHW(JMOHEP(1,QHEP)) IDMB2 = IDHW(JMOHEP(2,QHEP)) IDMB3 = IDHW(JDAHEP(1,QHEP)) IDMB4 = IDHW(JDAHEP(2,QHEP)) ENDIF C--Now decide if the colour partner decayed via BV IF(COLANT.EQ.2.AND.((((IDM.GE.413.AND.IDM.LE.418).OR. & IDM.EQ.449.OR.IDM.EQ.405.OR.IDM.EQ.406).AND. & (IDM2.GE.7.AND.IDM2.LE.12.AND. & IDM3.GE.7.AND.IDM3.LE.12.AND. & IDM4.GE.7.AND.IDM4.LE.12)).OR. & (IDM.EQ.15.AND.IDMB.LE.6.AND.IDMB2.LE.6.AND. & ((IDMB3.GE.7.AND.IDMB4.GE.12.AND.IDMB4.EQ.449).OR. & (IDMB3.GE.198.AND.IDMB3.LE.207.AND. & ABS(IDPDG(IDMB4)).GT.1000000))))) THEN CONBV = .TRUE. COLUPD = .TRUE. HVFCEN = .FALSE. XHEP = JMOHEP(2,JDAHEP(2,JMOHEP(1,KHEP))) ELSEIF(COLANT.EQ.3.AND.((((IDM.GE.419.AND.IDM.LE.424).OR. & IDM.EQ.449.OR.IDM.EQ.411.OR.IDM.EQ.412).AND. & (IDM2.LE.6.AND.IDM3.LE.6.AND.IDM4.LE.6)).OR. & (IDM.EQ.15.AND.IDMB.GE.7.AND.IDMB.LE.12.AND. & IDMB2.GE.7.AND.IDMB2.LE.12.AND.((IDMB3.LE.6.AND. & IDMB4.EQ.449).OR.(ABS(IDPDG(IDMB4)).GT.1000000 & .AND.IDMB3.GE.198.AND.IDMB3.LE.207))))) THEN CONBV = .TRUE. COLUPD = .TRUE. HVFCEN = .FALSE. XHEP = JDAHEP(2,JDAHEP(2,JMOHEP(1,KHEP))) ELSE CONBV = .FALSE. COLUPD = .FALSE. XHEP = 0 ENDIF IF(CONBV) THEN IF(IDM.NE.15) THEN CLSAVE(1) = JDAHEP(2,JMOHEP(1,KHEP))-1 CLSAVE(2) = CLSAVE(1)+1 ELSE IF(IDMB4.EQ.449) THEN DO I=1,2 CLSAVE(I) = JMOHEP(I,JMOHEP(1,KHEP)) IF(CLSAVE(I).EQ.XHEP) CLSAVE(I)=JDAHEP(1,JMOHEP(1,KHEP)) ENDDO ELSE CLSAVE(1) = JMOHEP(1,JMOHEP(1,KHEP)) CLSAVE(2) = JMOHEP(2,JMOHEP(1,KHEP)) ENDIF ENDIF ELSE CLSAVE(1)=0 CLSAVE(2)=0 ENDIF C--Now set the colours for angular ordering THEP = MHEP-1 IF(DECAY.EQ.1) THEN IF(ID2.LE.6) THEN JMOHEP(2,THEP) = THEP+HWRINT(1,2) JDAHEP(2,THEP) = THEP ELSE JMOHEP(2,THEP) = THEP JDAHEP(2,THEP) = THEP+HWRINT(1,2) ENDIF ELSEIF(DECAY.EQ.2) THEN IF(ID2.LE.6) THEN JMOHEP(2,THEP) = IHEP JDAHEP(2,THEP) = THEP ELSE JMOHEP(2,THEP) = THEP JDAHEP(2,THEP) = IHEP ENDIF ENDIF C--Colour of the second two DO JHEP=1,2 IF(ID2.LE.6) THEN JMOHEP(2,MHEP+JHEP-1) = MHEP+JHEP-1+ & COLCON(HWRINT(1,2),JHEP,DECAY) JDAHEP(2,MHEP+JHEP-1) = MHEP+JHEP-1+FLACON(JHEP,DECAY) ELSE JDAHEP(2,MHEP+JHEP-1) = MHEP+JHEP-1+ & COLCON(HWRINT(1,2),JHEP,DECAY) JMOHEP(2,MHEP+JHEP-1) = MHEP+JHEP-1+FLACON(JHEP,DECAY) ENDIF ENDDO C--Now set the colours of the colour partner IF(DECAY.GT.1.AND..NOT.CONBV) THEN IF(ID2.LE.6) JMOHEP(2,KHEP) = MHEP+HWRINT(0,1) IF(ID2.GE.7) JDAHEP(2,KHEP) = MHEP+HWRINT(0,1) ELSEIF(CONBV) THEN IF(ID2.GT.6) THEN JMOHEP(2,CLSAVE(1)) = MHEP+HWRINT(0,1) IF(JMOHEP(2,CLSAVE(1)).EQ.MHEP) THEN JMOHEP(2,CLSAVE(2)) = MHEP+1 ELSE JMOHEP(2,CLSAVE(2)) = MHEP ENDIF ELSE JDAHEP(2,CLSAVE(1)) = MHEP+HWRINT(0,1) IF(JDAHEP(2,CLSAVE(1)).EQ.MHEP) THEN JDAHEP(2,CLSAVE(2)) = MHEP+1 ELSE JDAHEP(2,CLSAVE(2)) = MHEP ENDIF ENDIF ENDIF 999 RETURN END CDECK ID>, HWDRME. *CMZ :- -20/07/99 10:56:12 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWDRME(LHEP,MHEP) C----------------------------------------------------------------------- C SUBROUTINE TO IMPLEMENT ALL RPARITY DECAY MATRIX ELEMENTS C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION SM(6),SW(6),HWULDO,INFCOL,AM, M12SQ,M23SQ,MSGN, & M13SQ,A(6),B(6),SWEAK,MW,DECMOM(5),TEST(3),EPS, & M12SQT(6),M23SQT(6),M13SQT(6),LIMIT,M(4),RAND, & MC(2),MX2(6),MX(6),HWDPWT,HWRGEN,HWDRM1,LAMD(3), & TEST2 EXTERNAL HWDRM1,HWULDO,HWDPWT,HWRGEN INTEGER K,SN(3),LHEP,CSP,I,SB(3),J,ND,LTRY,MHEP,NSP,ID(3),IG, & IDHWTP,IDHPTP,MTRY PARAMETER(EPS=1D-20) IF(IERROR.NE.0) RETURN C--Electroweak parameters, etc SWEAK = SQRT(SWEIN) MW = RMASS(198) M(4) = PHEP(5,LHEP) IG = IDHW(LHEP) C--Find the masses of the final state and zero parameters DO K=1,3 ID(K) = IDHW(MHEP+K-1) IF(ID(K).LE.12) THEN SN(K)=ID(K) ELSE SN(K)=ID(K)-120 ENDIF IF(SN(K).GT.6) SN(K)=SN(K)-6 M(K) = PHEP(5,LHEP+K) SB(K)=SN(K) LAMD(K) = ZERO ENDDO DO J=1,6 MX2(J) = ZERO MX(J) = ZERO M13SQT(J) = ZERO M23SQT(J) = ZERO M12SQT(J) = ZERO ENDDO C--Evaluate the coefficents for the mode we want IF(IG.GE.450.AND.IG.LE.453) THEN C--NEUTRALINO NSP = IG-449 AM = RMASS(IG) MSGN = ZSGNSS(NSP) MC(1) = ZMIXSS(NSP,3)/(2*MW*COSB*SWEAK) MC(2) = ZMIXSS(NSP,4)/(2*MW*SINB*SWEAK) C--Calculate the combinations of couplings needed IF(ID(1).LE.12.AND.ID(2).LE.12.AND.ID(3).LE.12) THEN C--first for the UDD modes DO J=1,2 A(J) = M(1)*MC(2)*QMIXSS(SN(1),2,J) & +SLFCH(SN(1),NSP)*QMIXSS(SN(1),1,J) B(J) = MSGN*(M(1)*MC(2)*QMIXSS(SN(1),1,J) & +SRFCH(SN(1),NSP)*QMIXSS(SN(1),2,J)) MX2(J) = QMIXSS(SN(1),2,J) A(J+2) = M(2)*MC(1)*QMIXSS(SN(2),2,J) & +SLFCH(SN(2),NSP)*QMIXSS(SN(2),1,J) B(J+2) = MSGN*(M(2)*MC(1)*QMIXSS(SN(2),1,J) & +SRFCH(SN(2),NSP)*QMIXSS(SN(2),2,J)) MX2(J+2) = QMIXSS(SN(2),2,J) A(J+4) = M(3)*MC(1)*QMIXSS(SN(3),2,J) & +SLFCH(SN(3),NSP)*QMIXSS(SN(3),1,J) B(J+4) = MSGN*(M(3)*MC(1)*QMIXSS(SN(3),1,J) & +SRFCH(SN(3),NSP)*QMIXSS(SN(3),2,J)) MX2(J+2) = QMIXSS(SN(3),2,J) ENDDO DO K=1,3 SN(K) = SN(K)+400 SB(K) = SB(K)+412 ENDDO ELSEIF(ID(1).GE.121.AND.ID(2).GE.121.AND.ID(3).GE.121) THEN C--Now for the LLE modes DO J=1,2 A(J) = MSGN*(M(1)*MC(1)*LMIXSS(SN(1),1,J) & +SRFCH(10+SN(1),NSP)*LMIXSS(SN(1),2,J)) B(J) = M(1)*MC(1)*LMIXSS(SN(1),2,J) & +SLFCH(10+SN(1),NSP)*LMIXSS(SN(2),1,J) MX2(J)= LMIXSS(SN(1),1,J) A(J+2) = ZERO B(J+2) = SLFCH(10+SN(2),NSP)*LMIXSS(SN(2),1,J) MX2(J+2) = LMIXSS(SN(2),1,J) A(J+4) = M(3)*MC(1)*LMIXSS(SN(3),2,J) & +SLFCH(10+SN(3),NSP)*LMIXSS(SN(3),1,J) B(J+4) = MSGN*(M(3)*MC(1)*LMIXSS(SN(3),1,J) & +SRFCH(10+SN(3),NSP)*LMIXSS(SN(3),2,J)) MX2(4+J) = LMIXSS(SN(3),2,J) ENDDO DO J=1,3 SN(J) = SN(J) + 424 SB(J) = SB(J) + 436 ENDDO ELSE C--Now for both types of LQD modes IF(MOD(SN(1),2).EQ.0) THEN C--First the neutrino,down,antidown mode DO J=1,2 A(J) = ZERO B(J) = SLFCH(10+SN(1),NSP)* & LMIXSS(SN(1),1,J) MX2(J) = LMIXSS(SN(1),1,J) A(J+2) = MSGN*(M(2)*MC(1)*QMIXSS(SN(2),1,J) & +SRFCH(SN(2),NSP)*QMIXSS(SN(2),2,J)) B(J+2) = M(2)*MC(1)*QMIXSS(SN(2),2,J) & +SLFCH(SN(2),NSP)*QMIXSS(SN(2),1,J) MX2(2+J) = QMIXSS(SN(2),1,J) A(J+4) = M(3)*MC(1)*QMIXSS(SN(3),2,J) & +SLFCH(SN(3),NSP)*QMIXSS(SN(3),1,J) B(J+4) = MSGN*(M(3)*MC(1)*QMIXSS(SN(3),1,J) & +SRFCH(SN(3),NSP)*QMIXSS(SN(3),2,J)) MX2(J+4) = QMIXSS(SN(3),2,J) ENDDO ELSE C--Now the charged lepton, antiup,down modes DO J=1,2 A(J) = MSGN*(M(1)*MC(1)*LMIXSS(SN(1),1,J) & +SRFCH(10+SN(1),NSP)*LMIXSS(SN(1),2,J)) B(J) = M(1)*MC(1)*LMIXSS(SN(1),2,J) & +SLFCH(10+SN(1),NSP)*LMIXSS(SN(1),1,J) MX2(J) = LMIXSS(SN(1),1,J) A(J+2) =MSGN*(M(2)*MC(2)*QMIXSS(SN(2),1,J) & +SRFCH(SN(2),NSP)*QMIXSS(SN(2),2,J)) B(J+2) = M(2)*MC(2)*QMIXSS(SN(2),2,J) & +SLFCH(SN(2),NSP)*QMIXSS(SN(2),1,J) MX2(2+J) = QMIXSS(SN(2),1,J) A(J+4) = M(3)*MC(1)*QMIXSS(SN(3),2,J) & +SLFCH(SN(3),NSP)*QMIXSS(SN(3),1,J) B(J+4) = MSGN*(M(3)*MC(1)*QMIXSS(SN(3),1,J) & +SRFCH(SN(3),NSP)*QMIXSS(SN(3),2,J)) MX2(J+4) = QMIXSS(SN(3),2,J) ENDDO ENDIF SN(1) = SN(1) + 424 SB(1) = SB(1) + 436 DO J=2,3 SN(J) = SN(J) + 400 SB(J) = SB(J) + 412 ENDDO ENDIF DO K=1,3 SM(2*K-1) = RMASS(SN(K)) SM(2*K) = RMASS(SB(K)) SW(2*K-1) = HBAR/RLTIM(SN(K)) SW(2*K) = HBAR/RLTIM(SB(K)) ENDDO ND = 3 DO K=1,3 LAMD(K) = ONE ENDDO INFCOL = ONE ELSEIF(IG.EQ.449) THEN C--GLUINO C--First obtian the masses and widths needed AM = RMASS(IG) ND = 3 C--Calculate the combinations of couplings needed IF(ID(1).LE.12.AND.ID(2).LE.12.AND.ID(3).LE.12) THEN C--first for the UDD modes INFCOL = -0.5D0 C--Couplings DO I=1,3 DO J=1,2 A(2*I-2+J) = -QMIXSS(SN(I),1,J) B(2*I-2+J) = QMIXSS(SN(I),2,J) MX2(2*I-2+J) = QMIXSS(SN(I),2,J) ENDDO SN(I) = SN(I)+400 SB(I) = SB(I)+412 ENDDO ELSE INFCOL = ONE C--Now for both types of LQD modes IF(MOD(SN(1),2).EQ.0) THEN C--First the neutrino,down,antidown mode DO J=1,2 A(J) = ZERO B(J) = ZERO MX2(J) = ZERO A(J+2) = QMIXSS(SN(2),2,J) B(J+2) = -QMIXSS(SN(2),1,J) MX2(J+2) = QMIXSS(SN(2),1,J) A(J+4) = -QMIXSS(SN(3),1,J) B(J+4) = QMIXSS(SN(3),2,J) MX2(4+J) = QMIXSS(SN(3),2,J) ENDDO ELSEIF(MOD(SN(1),2).EQ.1) THEN C--Now the charged lepton, antiup,down modes DO J=1,2 A(J) = ZERO B(J) = ZERO MX2(J) = ZERO A(J+2) = QMIXSS(SN(2),2,J) B(J+2) = -QMIXSS(SN(2),1,J) MX2(J+2) = QMIXSS(SN(2),1,J) A(J+4) = -QMIXSS(SN(3),1,J) B(J+4) = QMIXSS(SN(3),2,J) MX2(J+4) = QMIXSS(SN(3),2,J) ENDDO ENDIF SN(1) = SN(1) + 424 SB(1) = SB(1) + 436 DO K=2,3 SN(K) = SN(K) + 400 SB(K) = SB(K) + 412 ENDDO ENDIF DO K=1,3 SM(2*K-1) = RMASS(SN(K)) SM(2*K) = RMASS(SB(K)) SW(2*K-1) = HBAR/RLTIM(SN(K)) SW(2*K) = HBAR/RLTIM(SB(K)) ENDDO DO K=1,3 LAMD(K) = ONE ENDDO ELSEIF(IG.GE.454.AND.IG.LE.457) THEN C--CHARGINO CSP = IG-453 IF(CSP.GT.2) CSP = CSP-2 AM = RMASS(IG) INFCOL = -ONE MSGN = WSGNSS(CSP) MC(1) = ONE/(SQRT(2.0D0)*MW*COSB) MC(2) = ONE/(SQRT(2.0D0)*MW*SINB) C--Calculate the combinations of the couplings needed IF(ID(1).GT.120.AND.ID(2).GT.120.AND.ID(3).GT.120) THEN C--first for the LLE modes, three modes IF(MOD(SN(1),2).EQ.0.AND.MOD(SN(3),2).EQ.0) THEN C--the one diagram mode nubar,positron, nu DO J=1,2 A(J+4) = LMIXSS(SN(3)-1,1,J)*WMXUSS(CSP,1) & -RMASS(SN(3)+119)*MC(1)*LMIXSS(SN(3)-1,2,J)*WMXUSS(CSP,2) B(J+4) = ZERO MX2(J+4) = LMIXSS(SN(3)-1,2,J) ENDDO ND = 1 SN(3) = SN(3)+423 SB(3) = SB(3)+435 ELSEIF(MOD(SN(1),2).EQ.0.AND.MOD(SN(2),2).EQ.0) THEN C--the first two diagram mode nu, nu, positron DO J=1,2 A(J) = ZERO B(J) = LMIXSS(SN(1)-1,1,J)*WMXUSS(CSP,1) & -RMASS(SN(1)+119)*MC(1)*LMIXSS(SN(1)-1,2,J)*WMXUSS(CSP,2) A(J+2) = ZERO B(J+2) = LMIXSS(SN(2)-1,1,J)*WMXUSS(CSP,1) & -RMASS(SN(2)+119)*MC(1)*LMIXSS(SN(2)-1,2,J)*WMXUSS(CSP,2) MX2(J) = LMIXSS(SN(1)-1,1,J) MX2(J+2) = LMIXSS(SN(2)-1,1,J) ENDDO ND = 2 DO J=1,2 SN(J) = SN(J)+423 SB(J) = SB(J)+435 ENDDO ELSE C--the second two diagram mode positron, positron, electron DO J=1,2 A(J) = -M(1)*WMXUSS(CSP,2)*MC(1)*LMIXSS(SN(1)+1,1,J) B(J) = MSGN*WMXVSS(CSP,1)*LMIXSS(SN(1)+1,1,J) A(J+2) = -M(2)*WMXUSS(CSP,2)*MC(1)*LMIXSS(SN(2)+1,1,J) B(J+2) = MSGN*WMXVSS(CSP,1)*LMIXSS(SN(2)+1,1,J) MX2(J) = LMIXSS(SN(1)+1,1,J) MX2(J+2) = LMIXSS(SN(2)+1,1,J) ENDDO DO J=1,2 SN(J) = SN(J)+425 SB(J) = SB(J)+437 ENDDO ND = 2 ENDIF DO K=1,3 LAMD(K) = ONE ENDDO ELSEIF(ID(1).LE.12.AND.ID(2).LE.12.AND.ID(3).LE.12) THEN C--now for the UDD IF(MOD(SN(1),2).EQ.0) THEN C--two diagram mode LAMD(1) = LAMDA3(SN(2)/2,SN(1)/2,(SN(3)+1)/2) LAMD(2) = LAMDA3(SN(1)/2,SN(2)/2,(SN(3)+1)/2) DO J=1,2 A(J) = WMXUSS(CSP,1)*QMIXSS(SN(1)-1,1,J) & -RMASS(SN(1)-1)*MC(1)*WMXUSS(CSP,2)*QMIXSS(SN(1)-1,2,J) B(J) = -MSGN*M(2)*WMXVSS(CSP,2)*QMIXSS(SN(1)-1,1,J) A(J+2) = WMXUSS(CSP,1)*QMIXSS(SN(2)-1,1,J) & -RMASS(SN(2)-1)*MC(1)*WMXUSS(CSP,2)*QMIXSS(SN(2)-1,2,J) B(J+2) = -MSGN*M(2)*WMXVSS(CSP,2)*QMIXSS(SN(2)-1,1,J) MX2(J) = QMIXSS(SN(1)-1,2,J) MX2(J+2) = QMIXSS(SN(2)-1,2,J) ENDDO DO J=1,2 SN(J) = SN(J) + 399 SB(J) = SB(J) + 411 ENDDO ND = 2 ELSE C--three diagram mode LAMD(1) = LAMDA3((SN(1)+1)/2,(SN(2)+1)/2,(SN(3)+1)/2) LAMD(2) = LAMDA3((SN(2)+1)/2,(SN(1)+1)/2,(SN(3)+1)/2) LAMD(3) = LAMDA3((SN(3)+1)/2,(SN(2)+1)/2,(SN(1)+1)/2) DO I=1,3 DO J=1,2 A(J+2*I-2) = MSGN*(WMXVSS(CSP,1)*QMIXSS(SN(I)+1,1,J) & -RMASS(SN(I)+1)*MC(2)*WMXVSS(CSP,2)*QMIXSS(SN(I)+1,2,J)) B(J+2*I-2) = -M(I)*MC(1)*WMXUSS(CSP,2) & *QMIXSS(SN(I)+1,1,J) MX2(J+2*I-2) = QMIXSS(SN(I)+1,2,J) ENDDO SN(I) = SN(I) + 401 SB(I) = SB(I) + 413 ENDDO ND = 3 ENDIF ELSE C--now for the LQD modes IF(MOD(SN(2),2).EQ.1.AND.MOD(SN(3),2).EQ.0) THEN C--first one diagram mode nubar, dbar, up DO J=1,2 A(J+4) = -MSGN*M(3)*WMXVSS(CSP,2)*MC(2)* & QMIXSS(SN(3)-1,1,J) B(J+4) = WMXUSS(CSP,1)*QMIXSS(SN(3)-1,1,J) & -RMASS(SN(3)-1)*MC(1)*WMXUSS(CSP,2)*QMIXSS(SN(3)-1,2,1) MX2(J+4) = QMIXSS(SN(3)-1,2,J) ENDDO SN(3) = SN(3) + 399 SB(3) = SB(3) + 411 ND = 1 ELSEIF(MOD(SN(2),2).EQ.0.AND.MOD(SN(3),2).EQ.0) THEN C--second one diagram mode positron, ubar, up DO J=1,2 A(J+4) = -MSGN*M(3)*WMXVSS(CSP,2)*MC(2)* & QMIXSS(SN(3)-1,1,J) B(J+4) = WMXUSS(CSP,1)*QMIXSS(SN(3)-1,1,J) & -RMASS(SN(3)-1)*MC(1)*WMXUSS(CSP,2)*QMIXSS(SN(3)-1,2,1) MX2(J+4) = QMIXSS(SN(3)-1,2,J) ENDDO SN(3) = SN(3) + 399 SB(3) = SB(3) + 411 ND = 1 ELSEIF(MOD(SN(2),2).EQ.1.AND.MOD(SN(3),2).EQ.1) THEN C--first two diagram mode positron, dbar, down DO J=1,2 A(J) = -M(1)*MC(1)*WMXUSS(CSP,2)*LMIXSS(SN(1)+1,1,J) B(J) = MSGN*WMXVSS(CSP,1)*LMIXSS(SN(2)+1,1,J) A(J+2) = -M(2)*WMXUSS(CSP,2)*MC(1)*QMIXSS(SN(2)+1,1,J) B(J+2) = MSGN*(WMXVSS(CSP,1)*QMIXSS(SN(2)+1,1,J) & -RMASS(SN(2)+1)*MC(2)*WMXVSS(CSP,2)*QMIXSS(SN(2)+1,2,J)) MX2(J) = LMIXSS(SN(1)+1,1,J) MX2(J+2) = QMIXSS(SN(2)+1,1,J) ENDDO SN(1) = SN(1) + 425 SB(1) = SB(1) + 437 SN(2) = SN(2) + 401 SB(2) = SB(2) + 413 ND = 2 ELSE C--second two diagram mode nu, up, dbar DO J=1,2 A(J) = ZERO B(J) = WMXUSS(CSP,1)*LMIXSS(SN(1)-1,1,J) & -RMASS(119+SN(1))*MC(1)*WMXUSS(CSP,2)*LMIXSS(SN(1)-1,2,J) A(J+2) = -MSGN*M(2)*MC(2)*WMXVSS(CSP,2)* & QMIXSS(SN(2)-1,1,J) B(J+2) = WMXUSS(CSP,1)*QMIXSS(SN(2)-1,1,J) & -RMASS(SN(2)-1)*MC(1)*WMXUSS(CSP,2)*QMIXSS(SN(2)-1,2,J) MX2(J) = LMIXSS(SN(1)-1,1,J) MX2(J+2) = QMIXSS(SN(2)-1,1,J) ENDDO SN(1) = SN(1) + 423 SB(1) = SB(1) + 435 SN(2) = SN(2) + 399 SB(2) = SB(2) + 411 ND = 2 ENDIF DO K=1,3 LAMD(K) = ONE ENDDO ENDIF IF(ND.EQ.1) THEN DO K=1,2 SM(2*K-1) = 0.0D0 SM(2*K) = 0.0D0 SW(2*K-1) = 0.0D0 SW(2*K) = 0.0D0 ENDDO SM(5) = RMASS(SN(3)) SM(6) = RMASS(SB(3)) SW(5) = HBAR/RLTIM(SN(3)) SW(6) = HBAR/RLTIM(SB(3)) ELSE DO K=1,2 SM(2*K-1) = RMASS(SN(K)) SM(2*K) = RMASS(SB(K)) SW(2*K-1) = HBAR/RLTIM(SN(K)) SW(2*K) = HBAR/RLTIM(SB(K)) SM(4+K) = ZERO SW(4+K) = ZERO ENDDO ENDIF ELSE C--UNKNOWN CALL HWWARN('HWDRME',500) ENDIF C--Set mixing to zero if diagram not available IF((AM.LT.(ABS(SM(1))+M(1)).OR.ABS(SM(1)).LT.(M(2)+M(3))) & .AND.ABS(MX2(1)).GT.ZERO.AND.ND.NE.1) MX(1) = MX2(1)*LAMD(1) IF((AM.LT.(ABS(SM(2))+M(1)).OR.ABS(SM(2)).LT.(M(2)+M(3))) & .AND.ABS(MX2(2)).GT.ZERO.AND.ND.NE.1) MX(2) = MX2(2)*LAMD(1) IF((AM.LT.(ABS(SM(3))+M(2)).OR.ABS(SM(3)).LT.(M(1)+M(3))) & .AND.ABS(MX2(3)).GT.ZERO.AND.ND.NE.1) MX(3) = MX2(3)*LAMD(2) IF((AM.LT.(ABS(SM(4))+M(2)).OR.ABS(SM(4)).LT.(M(1)+M(3))) & .AND.ABS(MX2(4)).GT.ZERO.AND.ND.NE.1) MX(4) = MX2(4)*LAMD(2) IF((AM.LT.(ABS(SM(5))+M(3)).OR.ABS(SM(5)).LT.(M(1)+M(2))) & .AND.ABS(MX2(5)).GT.ZERO.AND.ND.NE.2) MX(5) = MX2(5)*LAMD(3) IF((AM.LT.(ABS(SM(6))+M(3)).OR.ABS(SM(6)).LT.(M(1)+M(2))) & .AND.ABS(MX2(6)).GT.ZERO.AND.ND.NE.2) MX(6) = MX2(6)*LAMD(3) C--Calculate the limiting points DO J=1,2 IF(ND.NE.1) THEN IF(ABS(MX(J)).GT.EPS) CALL HWDRM5(M23SQT(J),M13SQT(J), & M12SQT(J),A(J),B(J),M(2),M(3),M(1),M(4),SM(J),SW(J)) IF(ABS(MX(J+2)).GT.EPS) CALL HWDRM5(M13SQT(2+J),M23SQT(2+J), & M12SQT(2+J),A(2+J),B(2+J),M(1),M(3),M(2),M(4),SM(2+J),SW(2+J)) ENDIF IF(ND.NE.2) THEN IF(ABS(MX(J+4)).GT.EPS) CALL HWDRM5(M12SQT(4+J),M23SQT(4+J), & M13SQT(4+J),A(4+J),B(4+J),M(1),M(2),M(3),M(4),SM(4+J),SW(4+J)) ENDIF ENDDO C--Now evaluate the limit using these points LIMIT = ZERO DO 100 I=1,6 IF(ABS(MX(I)).LT.EPS) GOTO 100 LIMIT = LIMIT+HWDRM1(TEST,M12SQT(I),M13SQT(I),M23SQT(I),A,B,MX, & M,SM,SW,INFCOL,AM,0,ND) 100 CONTINUE LIMIT = TWO*LIMIT C--Now evaluate at a random point MTRY = 0 25 MTRY = MTRY+1 LTRY = 0 35 LTRY = LTRY+1 CALL HWDTHR(PHEP(1,LHEP),PHEP(1,MHEP), & PHEP(1,MHEP+1),PHEP(1,MHEP+2),HWDPWT) C--Now calculate the m12sq etc for the actual point M12SQ = M(1)**2+M(2)**2+2*HWULDO(PHEP(1,MHEP),PHEP(1,MHEP+1)) M13SQ = M(1)**2+M(3)**2+2*HWULDO(PHEP(1,MHEP),PHEP(1,MHEP+2)) M23SQ = M(2)**2+M(3)**2+2*HWULDO(PHEP(1,MHEP+1),PHEP(1,MHEP+2)) C--Now calulate the matrix element TEST2 = HWDRM1(TEST,M12SQ,M13SQ,M23SQ,A,B,MX, & M,SM,SW,INFCOL,AM,1,ND) C--Now test the value againest the limit RAND = HWRGEN(0)*LIMIT IF(TEST2.GT.LIMIT) THEN LIMIT = 1.1D0*TEST2 CALL HWWARN('HWDRME',51) GOTO 150 ENDIF 150 IF(TEST2.LT.RAND.AND.LTRY.LT.NETRY) THEN GOTO 35 ELSEIF(LTRY.GE.NETRY) THEN IF(MTRY.LE.NETRY) THEN LIMIT = LIMIT*0.9D0 CALL HWWARN('HWDRME',52) GOTO 25 ELSE CALL HWWARN('HWDRME',100) GOTO 999 ENDIF ENDIF C--Reorder the particles in gluino decay to get angular ordering right IF(IG.EQ.449.AND.ID(1).LE.12.AND.ID(2).LE.12.AND.ID(3).LE.12) THEN DO LTRY=1,3 IF(TEST(LTRY).GT.RAND) THEN IF(LTRY.EQ.2) THEN IDHWTP = IDHW(MHEP) IDHW(MHEP) = IDHW(MHEP+1) IDHW(MHEP+1) = IDHWTP IDHPTP = IDHEP(MHEP) IDHEP(MHEP) = IDHEP(MHEP+1) IDHEP(MHEP+1) = IDHPTP CALL HWVEQU(5,PHEP(1,MHEP),DECMOM) CALL HWVEQU(5,PHEP(1,MHEP+1),PHEP(1,MHEP)) CALL HWVEQU(5,DECMOM,PHEP(1,MHEP+1)) ELSEIF(LTRY.EQ.3) THEN IDHWTP = IDHW(MHEP) IDHW(MHEP) = IDHW(MHEP+2) IDHW(MHEP+2) = IDHWTP IDHPTP = IDHEP(MHEP) IDHEP(MHEP) = IDHEP(MHEP+2) IDHEP(MHEP+2) = IDHPTP DO I=1,5 CALL HWVEQU(5,PHEP(1,MHEP),DECMOM) CALL HWVEQU(5,PHEP(1,MHEP+2),PHEP(1,MHEP)) CALL HWVEQU(5,DECMOM,PHEP(1,MHEP+2)) ENDDO ENDIF GOTO 52 ENDIF RAND=RAND-TEST(LTRY) ENDDO ENDIF 52 CONTINUE 999 RETURN END CDECK ID>, HWDRM1. *CMZ :- -20/07/99 10:56:12 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWDRM1(TEST,M12SQ,M13SQ,M23SQ,A,B,MX,M,SM,SW & ,INFCOL,AM,LM,ND) C----------------------------------------------------------------------- C FUNCTION TO GIVE THE R-PARITY VIOLATING MATRIX ELEMENT AT A GIVEN C PHASE-SPACE POINT C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION M12SQ,M13SQ,M23SQ,MX(6),A(6),B(6),SM(6),SW(6), & INFCOL,AM,TERM(21),TEST(3),PLN,NPLN,ZERO, & M(4),HWDRM1,HWDRM2,HWDRM3,HWDRM4 PARAMETER (ZERO=0) EXTERNAL HWDRM2,HWDRM3,HWDRM4 INTEGER LM,K,ND C--Zero the array DO K=1,21 TERM(K) = 0.0D0 ENDDO HWDRM1 = 0.0D0 C--The amplitude IF(ABS(MX(1)).GT.ZERO.AND.ND.NE.1) THEN TERM(1) = MX(1)**2*HWDRM2(M23SQ,M(2),M(3),M(1),M(4),SM(1), & SW(1),A(1),B(1)) IF(ABS(MX(2)).GT.ZERO) TERM(7)= MX(1)*MX(2)*HWDRM3(M23SQ,M(2), & M(3),M(1),M(4),SM(1),SM(2),SW(1),SW(2),A(1),A(2),B(1),B(2)) IF(ABS(MX(3)).GT.ZERO) TERM(10)=-MX(1)*MX(3)*HWDRM4(M13SQ,M23SQ, & M(1),M(3),M(2),M(4),SM(3),SM(1),SW(3),SW(1),A(1),A(3),B(1),B(3)) IF(ABS(MX(4)).GT.ZERO) TERM(11)=-MX(1)*MX(4)*HWDRM4(M13SQ,M23SQ, & M(1),M(3),M(2),M(4),SM(4),SM(1),SW(4),SW(1),A(1),A(4),B(1),B(4)) IF(ABS(MX(5)).GT.ZERO) TERM(12)=-MX(1)*MX(5)*HWDRM4(M23SQ,M12SQ, & M(3),M(2),M(1),M(4),SM(1),SM(5),SW(1),SW(5),A(5),A(1),B(5),B(1)) IF(ABS(MX(6)).GT.ZERO) TERM(13)=-MX(1)*MX(6)*HWDRM4(M23SQ,M12SQ, & M(3),M(2),M(1),M(4),SM(1),SM(6),SW(1),SW(6),A(6),A(1),B(6),B(1)) ENDIF IF(ABS(MX(2)).GT.ZERO.AND.ND.NE.1) THEN TERM(2) = MX(2)**2*HWDRM2(M23SQ,M(2),M(3),M(1),M(4),SM(2), & SW(2),A(2),B(2)) IF(ABS(MX(3)).GT.ZERO) TERM(14)=-MX(2)*MX(3)*HWDRM4(M13SQ,M23SQ, & M(1),M(3),M(2),M(4),SM(3),SM(2),SW(3),SW(2),A(2),A(3),B(2),B(3)) IF(ABS(MX(4)).GT.ZERO) TERM(15)=-MX(2)*MX(4)*HWDRM4(M13SQ,M23SQ, & M(1),M(3),M(2),M(4),SM(4),SM(2),SW(4),SW(2),A(2),A(4),B(2),B(4)) IF(ABS(MX(5)).GT.ZERO) TERM(16)=-MX(2)*MX(5)*HWDRM4(M23SQ,M12SQ, & M(3),M(2),M(1),M(4),SM(2),SM(5),SW(2),SW(5),A(5),A(2),B(5),B(2)) IF(ABS(MX(6)).GT.ZERO) TERM(17)=-MX(2)*MX(6)*HWDRM4(M23SQ,M12SQ, & M(3),M(2),M(1),M(4),SM(2),SM(6),SW(2),SW(6),A(6),A(2),B(6),B(2)) ENDIF IF(ABS(MX(3)).GT.ZERO.AND.ND.NE.1) THEN TERM(3) = MX(3)**2*HWDRM2(M13SQ,M(1),M(3),M(2),M(4),SM(3), & SW(3),A(3),B(3)) IF(ABS(MX(4)).GT.ZERO) TERM(8)= MX(3)*MX(4)*HWDRM3(M13SQ,M(1), & M(3),M(2),M(4),SM(3),SM(4),SW(3),SW(4),A(3),A(4),B(3),B(4)) IF(ABS(MX(5)).GT.ZERO) TERM(18)=-MX(3)*MX(5)*HWDRM4(M12SQ,M13SQ, & M(2),M(1),M(3),M(4),SM(5),SM(3),SW(5),SW(3),A(3),A(5),B(3),B(5)) IF(ABS(MX(6)).GT.ZERO) TERM(19)=-MX(3)*MX(6)*HWDRM4(M12SQ,M13SQ, & M(2),M(1),M(3),M(4),SM(6),SM(3),SW(6),SW(3),A(3),A(6),B(3),B(6)) ENDIF IF(ABS(MX(4)).GT.ZERO.AND.ND.NE.1) THEN TERM(4) = MX(4)**2*HWDRM2(M13SQ,M(1),M(3),M(2),M(4),SM(4), & SW(4),A(4),B(4)) IF(ABS(MX(5)).GT.ZERO) TERM(20)=-MX(4)*MX(5)*HWDRM4(M12SQ,M13SQ, & M(2),M(1),M(3),M(4),SM(5),SM(4),SW(5),SW(4),A(4),A(5),B(4),B(5)) IF(ABS(MX(6)).GT.ZERO) TERM(21)=-MX(4)*MX(6)*HWDRM4(M12SQ,M13SQ, & M(2),M(1),M(3),M(4),SM(6),SM(4),SW(6),SW(4),A(4),A(6),B(4),B(6)) ENDIF IF(ABS(MX(5)).GT.ZERO.AND.ND.NE.2) THEN TERM(5) = MX(5)**2*HWDRM2(M12SQ,M(1),M(2),M(3),M(4),SM(5), & SW(5),A(5),B(5)) IF(ABS(MX(6)).GT.ZERO) TERM(9)= MX(5)*MX(6)*HWDRM3(M12SQ,M(1), & M(2),M(3),M(4),SM(5),SM(6),SW(5),SW(6),A(5),A(6),B(5),B(6)) ENDIF IF(ABS(MX(6)).GT.ZERO.AND.ND.NE.2) TERM(6) = MX(6)**2* & HWDRM2(M12SQ,M(1),M(2),M(3),M(4),SM(6),SW(6),A(6),B(6)) DO K=10,21 TERM(K)=TERM(K)*INFCOL ENDDO C--Add them up DO K=1,21 HWDRM1 = HWDRM1+TERM(K) ENDDO C--Different colour flows for the gluino IF(LM.NE.0) THEN NPLN = 0.0D0 PLN = 0.0D0 DO K=1,9 PLN = PLN+TERM(K) ENDDO DO K=10,21 NPLN= NPLN+TERM(K) ENDDO DO K=1,3 TEST(K) = (TERM(2*K-1)+TERM(2*K)+TERM(6+K))*(1+NPLN/PLN) ENDDO ELSE DO K=1,3 TEST(K) = 0.0D0 ENDDO ENDIF IF(HWDRM1.LT.ZERO) CALL HWWARN('HWDRM1',50) END CDECK ID>, HWDRM2. *CMZ :- -20/07/99 10:56:12 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWDRM2(X,MA,MB,MC,MD,MR1,GAM1,A,B) C----------------------------------------------------------------------- C Function to compute the matrix element squared part of a 3-body C R-parity decay C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION X,MA,MB,MC,MD,A,B,HWDRM2,MR1,GAM1 HWDRM2 = (X - MA**2 - MB**2)*(4*A*B*MC*MD + & (A**2 + B**2)*(-X + MC**2 + MD**2))/ & ((X-MR1**2)**2+GAM1**2*MR1**2) END CDECK ID>, HWDRM3. *CMZ :- -20/07/99 10:56:12 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWDRM3(X,MA,MB,MC,MD,MR1,MR2,GAM1,GAM2,A1,A2,B1,B2) C----------------------------------------------------------------------- C Function to compute the light/heavy interference part of a 3-body C R-parity decay C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION X,MA,MB,MC,MD,A1,A2,B1,B2,HWDRM3,MR1,MR2,GAM1 & ,GAM2 C HWDRM3 = 2*(X - MA**2 - MB**2)*(2*(A2*B1 + A1*B2)*MC*MD + & (A1*A2 + B1*B2)*(-X + MC**2 + MD**2))* & (GAM1*GAM2*MR1*MR2 + (X - MR1**2)*(X - MR2**2))/ & (((X-MR1**2)**2+GAM1**2*MR1**2)*((X-MR2**2)**2+GAM2**2*MR2**2)) END CDECK ID>, HWDRM4. *CMZ :- -20/07/99 10:56:12 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWDRM4(X,Y,MA,MB,MC,MD,MR1,MR2,GAM1,GAM2,A1,A2,B1,B2) C----------------------------------------------------------------------- C Function to compute the interference part of a 3-body C R-parity decay C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION X,Y,MA,MB,MC,MD,A1,A2,B1,B2,HWDRM4,MR1,MR2,GAM1 & ,GAM2 C HWDRM4 = 2*((GAM1*GAM2*MR1*MR2 + (X - MR1**2)*(Y - MR2**2))* & (A2*B1*MC*MD*(X - MA**2 - MB**2) + & A1*A2*MA*MC*(X + Y - MA**2 - MC**2) + & A1*B2*MA*MD*(Y - MB**2 - MC**2) + & B1*B2*(X*Y - MA**2*MC**2 - MB**2*MD**2)))/ & (((X-MR1**2)**2+GAM1**2*MR1**2)*((Y-MR2**2)**2+GAM2**2*MR2**2)) END CDECK ID>, HWDRM5. *CMZ :- -20/07/99 10:56:12 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWDRM5(X,Y,Z,A,B,MA,MB,MC,MD,MR,GAM) C----------------------------------------------------------------------- C Subroutine to find the maximum of the ME C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION X,Y,Z,MA,MB,MC,MD,MR,GAM,RES(3),A,B,C,D, & E2S,E3S,E2M,E3M,LOW,UPP,HWRUNI,EPS,ZERO EXTERNAL HWRUNI PARAMETER(EPS=1D-9,ZERO=0) C = A**2+B**2 D = 4*A*B RES(1) = -D*(MA**2 + MB**2)*MC*MD + & C*(GAM**2*MR**2 + MR**4 - MA**2*MC**2 - MB**2*MC**2 - & MA**2*MD**2 - MB**2*MD**2) RES(2) = (GAM**2*MR**2 + (-MR**2 + MA**2 + MB**2)**2)* & (D**2*MC**2*MD**2 + & 2*C*D*MC*MD*(-MR**2 + MC**2 + MD**2) + & C**2*(GAM**2*MR**2 + (-MR**2 + MC**2 + MD**2)**2)) RES(3) = -D*MC*MD+C*(2*MR**2-(MA**2+MB**2+MC**2+MD**2)) IF(RES(2).GT.ZERO) THEN RES(2) = SQRT(RES(2)) ELSE RES(2) = 0.0D0 ENDIF IF((RES(1)+RES(2))/RES(3).GT.(MD-MC)**2.OR. & (RES(1)+RES(2))/RES(3).LT.(MA+MB)**2) THEN X = (RES(1)-RES(2))/RES(3) ELSE X = (RES(1)+RES(2))/RES(3) ENDIF IF(X.GT.(MD-MC)**2) X = (MD-MC)**2 IF(X.LT.(MA+MB)**2) X = (MA+MB)**2 E2S = (X-MA**2+MB**2)/(2*SQRT(X)) E3S = (MD**2-X-MC**2)/(2*SQRT(X)) E2M = E2S**2-MB**2 E3M = E3S**2-MC**2 IF(E2M.LT.ZERO) THEN IF(ABS(E2M/E2S).GT.EPS) CALL HWWARN('HWDRM5',2) E2M= 0.0D0 ENDIF IF(E3M.LT.ZERO) THEN IF(ABS(E3M/E3S).GT.EPS) CALL HWWARN('HWDRM5',3) E3M= 0.0D0 ENDIF E2M = SQRT(E2M) E3M = SQRT(E3M) LOW = (E2S+E3S)**2-(E2M+E3M)**2 UPP = (E2S+E3S)**2-(E2M-E3M)**2 Y = HWRUNI(1,LOW,UPP) Z = MA**2+MB**2+MC**2+MD**2-X-Y END CDECK ID>, HWDPWT. *CMZ :- -26/04/91 11.11.55 by Bryan Webber *-- Author : Bryan Webber C----------------------------------------------------------------------- FUNCTION HWDPWT(EMSQ,A,B,C) C----------------------------------------------------------------------- C MATRIX ELEMENT SQUARED FOR PHASE SPACE DECAY C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWDPWT,EMSQ,A,B,C HWDPWT=1. END CDECK ID>, HWDSIN. *CMZ :- -30/09/02 14:05:28 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWDSIN(CLSAVE) C----------------------------------------------------------------------- C Subroutine to perform decays including spin correlations C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION PW(5) INTEGER IDEC,IP,IS,IHEP,ID,IM,LHEP,MHEP,NPR,KHEP,CLSAVE(2),NTRY, & ID1 IF(IERROR.NE.0) RETURN NTRY = 0 IDEC = 1 1 NTRY = NTRY+1 C--search the decay products and decide which one to decay next IF(.NOT.DECSPN(IDEC)) THEN CALL HWDSI1(IDEC,IP) ELSE IDEC = JMOSPN(IDEC) GOTO 1 ENDIF C--first no more particles in this decay to develop so move up chain IF(IP.EQ.0) THEN IDEC = JMOSPN(IDEC) C--reached the end of this spin chain go back to HWDHOB IF(IDEC.EQ.0) THEN NSPN = 0 RETURN C--otherwise keep going up the chain ELSE IF(NTRY.LE.NBTRY) THEN GOTO 1 ELSE CALL HWWARN('HWDSIN',100) GOTO 999 ENDIF ENDIF C--special for tau decays call spin correlation in tau decay routine ELSEIF(ABS(IDHEP(IDSPN(IP))).EQ.15) THEN CALL HWDSI3(IP) IF(IERROR.NE.0) RETURN GOTO 1 ENDIF C--work out where that particle is IHEP = IDSPN(IP) C--if particle has daughters 10 IF(JDAHEP(1,IHEP).NE.0) THEN IF(ISTHEP(IHEP).GE.141.AND.ISTHEP(IHEP).LE.144) THEN DO ID1=JDAHEP(1,IHEP),JDAHEP(2,IHEP) IF(IDHW(ID1).EQ.ID) IHEP=ID1 ENDDO ELSE IHEP = JDAHEP(1,IHEP) ENDIF ENDIF IS=ISTHEP(IHEP) ID=IDHW(IHEP) NTRY = NTRY+1 IF(NTRY.GE.NBTRY) THEN CALL HWWARN('HWDSIN',101) GOTO 999 ENDIF IF (.NOT.RSTAB(ID).AND.(ID.EQ.6.OR.ID.EQ.12.OR. & (ID.GE.203.AND.ID.LE.218).OR.ABS(IDPDG(ID)).GT.1000000).AND. & (IS.EQ.190.OR.(IS.GE.147.AND.IS.LE.151))) THEN CALL HWDHO1(IHEP,ID,IM,NPR,LHEP,MHEP) IF(IERROR.NE.0) RETURN ELSE GOTO 10 ENDIF C--perform the decay including spin correlations CALL HWDSI2(IHEP,IM,NPR,MHEP,KHEP,PW) IF(IERROR.NE.0) RETURN C--make the colour connections CALL HWDHO3(ID,IM,NPR,MHEP,LHEP,KHEP,CLSAVE) IF (IERROR.NE.0) RETURN C--perform the parton-showers CALL HWDHO4(IHEP,ID,IM,NPR,MHEP,LHEP,KHEP,PW) IF(IERROR.NE.0) RETURN C--perform RPV colour connections CALL HWDHO5(MHEP,LHEP,CLSAVE) IF(IERROR.NE.0) RETURN C--continue and perform the next decay IDEC = IP IF(NTRY.LE.NBTRY) THEN GOTO 1 ELSE CALL HWWARN('HWDSIN',102) ENDIF 999 RETURN END CDECK ID>, HWDSI1. *CMZ :- -30/09/02 14:05:28 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWDSI1(IDEC,IP) C----------------------------------------------------------------------- C Subroutine to check a vertex and decide which branch to treat C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IDEC,I,IPICK(5),IP,HWRINT,P1,P2,P3,P4,P3P,P4P,NPR,P0,P0P, & P1P,P2P,IF1,IF2,P5,P5P DOUBLE PRECISION NORM DOUBLE COMPLEX RHOLP(2,2),RHOPS(2,2) EXTERNAL HWRINT C--loop over the daughters and decide what to do IP = 0 C--if daughters of particle the same issue warning IF(JDASPN(1,IDEC).EQ.JDASPN(2,IDEC)) THEN CALL HWWARN('HWDSI1',100) GOTO 999 ENDIF C--loop over the decay products DO I=JDASPN(1,IDEC),JDASPN(2,IDEC) IF(.NOT.DECSPN(I)) THEN C--first SM particles other than tau and top and stable particles IF(RSTAB(IDHW(IDSPN(I))) & .OR.(IDHW(IDSPN(I)).LE.12.AND.ABS(IDHEP(IDSPN(I))).NE.6) & .OR.(IDHW(IDSPN(I)).GE.121.AND.IDHW(IDSPN(I)).LE.132.AND. & ABS(IDHEP(IDSPN(I))).NE.15)) THEN DECSPN(I) = .TRUE. RHOSPN(1,1,I) = HALF RHOSPN(1,2,I) = ZERO RHOSPN(2,1,I) = ZERO RHOSPN(2,2,I) = HALF C--spinless particles ELSEIF(RSPIN(IDHW(IDSPN(I))).EQ.ZERO) THEN DECSPN(I) = .TRUE. RHOSPN(1,1,I) = ONE RHOSPN(1,2,I) = ZERO RHOSPN(2,1,I) = ZERO RHOSPN(2,2,I) = ZERO ELSE C--particle which needs development IP = IP+1 IPICK(IP) = I ENDIF ENDIF ENDDO C--pick the particle to decay next IF(IP.EQ.0) THEN IF(JMOSPN(IDEC).EQ.0) RETURN C--done everything compute the decay matrix and move up DECSPN(IDEC) = .TRUE. NPR = JDASPN(2,IDEC)-JDASPN(1,IDEC)+1 DO 20 P0=1,2 DO 20 P0P=1,2 20 RHOSPN(P0,P0P,IDEC) = ZERO C--two body decay IF(NPR.EQ.2) THEN DO 21 P0 =1,2 DO 21 P0P=1,2 DO 21 P1 =1,2 DO 21 P1P=1,2 DO 21 P2 =1,2 DO 21 P2P=1,2 21 RHOSPN(P0,P0P,IDEC) = RHOSPN(P0,P0P,IDEC)+ & MESPN(P0 ,P1 ,P2 ,1,NCFL(IDEC),IDEC)* & DCONJG(MESPN(P0P,P1P,P2P,1,NCFL(IDEC),IDEC))* & RHOSPN(P1,P1P,JDASPN(1,IDEC))*RHOSPN(P2,P2P,JDASPN(2,IDEC)) C--three body decay ELSEIF(NPR.EQ.3) THEN DO 25 P0 =1,2 DO 25 P0P=1,2 DO 25 P1 =1,2 DO 25 P1P=1,2 DO 25 P2 =1,2 DO 25 P2P=1,2 DO 25 P3 =1,2 DO 25 P3P=1,2 25 RHOSPN(P0,P0P,IDEC) = RHOSPN(P0,P0P,IDEC)+ & MESPN(P0 ,P1 ,P2 ,P3 ,NCFL(IDEC),IDEC)* & DCONJG(MESPN(P0P,P1P,P2P,P3P,NCFL(IDEC),IDEC))* & RHOSPN(P1,P1P,JDASPN(1,IDEC))*RHOSPN(P2,P2P,JDASPN(1,IDEC)+1)* & RHOSPN(P3,P3P,JDASPN(2,IDEC)) C--higher ELSE CALL HWWARN('HWDSI1',500) ENDIF C--now normalise this NORM = DBLE(RHOSPN(1,1,IDEC))+DBLE(RHOSPN(2,2,IDEC)) IF(NORM.GT.ZERO) THEN NORM = ONE/NORM DO 35 P0=1,2 DO 35 P0P=1,2 35 RHOSPN(P0,P0P,IDEC) = NORM*RHOSPN(P0,P0P,IDEC) ELSE CALL HWWARN('HWDSI1',101) GOTO 999 ENDIF ELSE C--pick the particle to be decayed IP = IPICK(HWRINT(1,IP)) C--setup the spin density matrix for the decay C--special for the hard process IF(ISTHEP(IDSPN(IDEC)).EQ.120) THEN NPR = JDASPN(2,IDEC)-JDASPN(1,IDEC)+1 C--set up the spin density matrices for the incoming partons C--zero off diagonal elements RHOLP(2,1) = ZERO RHOLP(1,2) = ZERO RHOPS(2,1) = ZERO RHOPS(1,2) = ZERO C--set up for polarized incoming beams in lepton collisons IF(IDHW(JMOHEP(1,IDSPN(IDEC))).GE.121.AND. & IDHW(JMOHEP(1,IDSPN(IDEC))).LE.132) THEN RHOLP(1,1) = HALF*(ONE+EPOLN(3)) RHOLP(2,2) = HALF*(ONE-EPOLN(3)) RHOPS(1,1) = HALF*(ONE-PPOLN(3)) RHOPS(2,2) = HALF*(ONE+PPOLN(3)) C--otherwise average ELSE RHOLP(1,1) = HALF RHOLP(2,2) = HALF RHOPS(1,1) = HALF RHOPS(2,2) = HALF ENDIF C--first decay product IF(NPR.EQ.2) THEN IF(IP.EQ.JDASPN(1,IDEC)) THEN C--if using first colour flow option IF(SPCOPT.EQ.1) THEN DO 5 P3 =1,2 DO 5 P3P=1,2 RHOSPN(P3,P3P,IP) = ZERO DO 5 IF1=1,NCFL(1) DO 5 IF2=1,NCFL(1) DO 5 P1 =1,2 DO 5 P1P=1,2 DO 5 P2 =1,2 DO 5 P2P=1,2 DO 5 P4 =1,2 DO 5 P4P=1,2 5 RHOSPN(P3,P3P,IP) = RHOSPN(P3,P3P,IP)+SPNCFC(IF1,IF2,1)* & MESPN(P1 ,P2 ,P3 ,P4 ,IF1,1)* & DCONJG(MESPN(P1P,P2P,P3P,P4P,IF2,1))* & RHOLP(P1,P1P)*RHOPS(P2,P2P)*RHOSPN(P4,P4P,IP+1) C--if using second colour flow option ELSEIF(SPCOPT.EQ.2) THEN DO 6 P3 =1,2 DO 6 P3P=1,2 RHOSPN(P3,P3P,IP) = ZERO DO 6 P1 =1,2 DO 6 P1P=1,2 DO 6 P2 =1,2 DO 6 P2P=1,2 DO 6 P4 =1,2 DO 6 P4P=1,2 6 RHOSPN(P3,P3P,IP) = RHOSPN(P3,P3P,IP) & +SPNCFC(NCFL(1),NCFL(1),1)* & MESPN(P1 ,P2 ,P3 ,P4 ,NCFL(1),1)* & DCONJG(MESPN(P1P,P2P,P3P,P4P,NCFL(1),1))* & RHOLP(P1,P1P)*RHOPS(P2,P2P)*RHOSPN(P4,P4P,IP+1) C--unknown option issue warning ELSE CALL HWWARN('HWDSI1',501) ENDIF C--second decay product ELSE IF(SPCOPT.EQ.1) THEN DO 10 P4 =1,2 DO 10 P4P=1,2 RHOSPN(P4,P4P,IP) = (0.0D0,0.0D0) DO 10 IF1=1,NCFL(1) DO 10 IF2=1,NCFL(1) DO 10 P1 =1,2 DO 10 P1P=1,2 DO 10 P2 =1,2 DO 10 P2P=1,2 DO 10 P3 =1,2 DO 10 P3P=1,2 10 RHOSPN(P4,P4P,IP) = RHOSPN(P4,P4P,IP)+SPNCFC(IF1,IF2,1)* & MESPN(P1 ,P2 ,P3 ,P4 ,IF1,1)* & DCONJG(MESPN(P1P,P2P,P3P,P4P,IF2,1))* & RHOLP(P1,P1P)*RHOPS(P2,P2P)*RHOSPN(P3,P3P,IP-1) ELSEIF(SPCOPT.EQ.2) THEN DO 11 P4 =1,2 DO 11 P4P=1,2 RHOSPN(P4,P4P,IP) = (0.0D0,0.0D0) DO 11 P1 =1,2 DO 11 P1P=1,2 DO 11 P2 =1,2 DO 11 P2P=1,2 DO 11 P3 =1,2 DO 11 P3P=1,2 11 RHOSPN(P4,P4P,IP) = RHOSPN(P4,P4P,IP) & +SPNCFC(NCFL(1),NCFL(1),1)* & MESPN(P1 ,P2 ,P3 ,P4 ,NCFL(1),1)* & DCONJG(MESPN(P1P,P2P,P3P,P4P,NCFL(1),1))* & RHOLP(P1,P1P)*RHOPS(P2,P2P)*RHOSPN(P3,P3P,IP-1) ELSE CALL HWWARN('HWDSI1',502) GOTO 999 ENDIF ENDIF C--new for four body gauge boson pair processes ELSEIF(NPR.EQ.4) THEN C--first particle IF(IP.EQ.JDASPN(1,IDEC)) THEN DO 41 P1 =1,2 DO 41 P1P=1,2 RHOSPN(P1,P1P,IP) = (0.0D0,0.0D0) DO 41 P3 =1,2 DO 41 P3P=1,2 DO 41 P5 =1,2 DO 41 P5P=1,2 41 RHOSPN(P1,P1P,IP) = RHOSPN(P1,P1P,IP)+ & MESPN(P5,P1,P3,1,1,1)*DCONJG(MESPN(P5P,P1P,P3P,1,1,1))* & RHOSPN(P1,P1P,JDASPN(1,IDEC)+1)* & RHOSPN(P3,P3P,JDASPN(1,IDEC)+2)* & RHOSPN(P3,P3P,JDASPN(2,IDEC)) C--second particle ELSEIF(IP.EQ.JDASPN(1,IDEC)+1) THEN DO 42 P1 =1,2 DO 42 P1P=1,2 RHOSPN(P1,P1P,IP) = (0.0D0,0.0D0) DO 42 P3 =1,2 DO 42 P3P=1,2 DO 42 P5 =1,2 DO 42 P5P=1,2 42 RHOSPN(P1,P1P,IP) = RHOSPN(P1,P1P,IP)+ & MESPN(P5,P1,P3,1,1,1)*DCONJG(MESPN(P5P,P1P,P3P,1,1,1))* & RHOSPN(P1,P1P,JDASPN(1,IDEC))* & RHOSPN(P3,P3P,JDASPN(1,IDEC)+2)* & RHOSPN(P3,P3P,JDASPN(2,IDEC)) C--third particle ELSEIF(IP.EQ.JDASPN(1,IDEC)+2) THEN DO 43 P3 =1,2 DO 43 P3P=1,2 RHOSPN(P3,P3P,IP) = (0.0D0,0.0D0) DO 43 P1 =1,2 DO 43 P1P=1,2 DO 43 P5 =1,2 DO 43 P5P=1,2 43 RHOSPN(P3,P3P,IP) = RHOSPN(P3,P3P,IP)+ & MESPN(P5,P1,P3,1,1,1)*DCONJG(MESPN(P5P,P1P,P3P,1,1,1))* & RHOSPN(P1,P1P,JDASPN(1,IDEC))* & RHOSPN(P1,P1P,JDASPN(1,IDEC)+1)* & RHOSPN(P3,P3P,JDASPN(2,IDEC)) C--fourth particle ELSEIF(IP.EQ.JDASPN(2,IDEC)) THEN DO 44 P3 =1,2 DO 44 P3P=1,2 RHOSPN(P3,P3P,IP) = (0.0D0,0.0D0) DO 44 P1 =1,2 DO 44 P1P=1,2 DO 44 P5 =1,2 DO 44 P5P=1,2 44 RHOSPN(P3,P3P,IP) = RHOSPN(P3,P3P,IP)+ & MESPN(P5,P1,P3,1,1,1)*DCONJG(MESPN(P5P,P1P,P3P,1,1,1))* & RHOSPN(P1,P1P,JDASPN(1,IDEC))* & RHOSPN(P1,P1P,JDASPN(1,IDEC)+1)* & RHOSPN(P3,P3P,JDASPN(1,IDEC)+2) C--unrecognized issue warning ELSE CALL HWWARN('HWDSI1',509) GOTO 999 ENDIF C--unrecognized issue warning ELSE CALL HWWARN('HWDSI1',508) GOTO 999 ENDIF ELSE NPR = JDASPN(2,IDEC)-JDASPN(1,IDEC)+1 DO 50 P1 =1,2 DO 50 P1P=1,2 50 RHOSPN(P1,P1P,IP) = (0.0D0,0.0D0) C--set-up matrix for 2-body decay IF(NPR.EQ.2) THEN IF(NCFL(IDEC).NE.1) CALL HWWARN('HWDSI1',503) IF(IP.EQ.JDASPN(1,IDEC)) THEN DO 60 P0 =1,2 DO 60 P0P=1,2 DO 60 P1 =1,2 DO 60 P1P=1,2 DO 60 P2 =1,2 DO 60 P2P=1,2 60 RHOSPN(P1,P1P,IP) = RHOSPN(P1,P1P,IP)+RHOSPN(P0,P0P,IDEC)* & MESPN(P0 ,P1 ,P2 ,1,1,IDEC)* & DCONJG(MESPN(P0P,P1P,P2P,1,1,IDEC))* & RHOSPN(P2,P2P,JDASPN(2,IDEC)) ELSE DO 70 P0 =1,2 DO 70 P0P=1,2 DO 70 P1 =1,2 DO 70 P1P=1,2 DO 70 P2 =1,2 DO 70 P2P=1,2 70 RHOSPN(P2,P2P,IP) = RHOSPN(P2,P2P,IP)+RHOSPN(P0,P0P,IDEC)* & MESPN(P0 ,P1 ,P2 ,1,1,IDEC)* & DCONJG(MESPN(P0P,P1P,P2P,1,1,IDEC))* & RHOSPN(P1,P1P,JDASPN(1,IDEC)) ENDIF C--set-up matrix for 3-body decay ELSEIF(NPR.EQ.3) THEN IF(SPCOPT.NE.2.AND.NCFL(IDEC).NE.1) & CALL HWWARN('HWDSI1',504) C--first particle IF(IP.EQ.JDASPN(1,IDEC)) THEN DO 100 P0 =1,2 DO 100 P0P=1,2 DO 100 P1 =1,2 DO 100 P1P=1,2 DO 100 P2 =1,2 DO 100 P2P=1,2 DO 100 P3 =1,2 DO 100 P3P=1,2 100 RHOSPN(P1,P1P,IP) = RHOSPN(P1,P1P,IP)+RHOSPN(P0,P0P,IDEC)* & MESPN(P0 ,P1 ,P2 ,P3 ,NCFL(IDEC),IDEC)* & DCONJG(MESPN(P0P,P1P,P2P,P3P,NCFL(IDEC),IDEC))* & RHOSPN(P2,P2P,JDASPN(1,IDEC)+1)* & RHOSPN(P3,P3P,JDASPN(2,IDEC)) C--second particle ELSEIF(IP.EQ.JDASPN(1,IDEC)+1) THEN DO 105 P0 =1,2 DO 105 P0P=1,2 DO 105 P1 =1,2 DO 105 P1P=1,2 DO 105 P2 =1,2 DO 105 P2P=1,2 DO 105 P3 =1,2 DO 105 P3P=1,2 105 RHOSPN(P2,P2P,IP) = RHOSPN(P2,P2P,IP)+RHOSPN(P0,P0P,IDEC)* & MESPN(P0 ,P1 ,P2 ,P3 ,NCFL(IDEC),IDEC)* & DCONJG(MESPN(P0P,P1P,P2P,P3P,NCFL(IDEC),IDEC))* & RHOSPN(P1,P1P,JDASPN(1,IDEC))* & RHOSPN(P3,P3P,JDASPN(2,IDEC)) C--third particle ELSEIF(IP.EQ.JDASPN(2,IDEC)) THEN DO 110 P0 =1,2 DO 110 P0P=1,2 DO 110 P1 =1,2 DO 110 P1P=1,2 DO 110 P2 =1,2 DO 110 P2P=1,2 DO 110 P3 =1,2 DO 110 P3P=1,2 110 RHOSPN(P3,P3P,IP) = RHOSPN(P3,P3P,IP)+RHOSPN(P0,P0P,IDEC)* & MESPN(P0 ,P1 ,P2 ,P3 ,NCFL(IDEC),IDEC)* & DCONJG(MESPN(P0P,P1P,P2P,P3P,NCFL(IDEC),IDEC))* & RHOSPN(P1,P1P,JDASPN(1,IDEC))* & RHOSPN(P2,P2P,JDASPN(1,IDEC)+1) C--unrecognized ELSE CALL HWWARN('HWDSI1',102) GOTO 999 ENDIF ELSEIF(NPR.EQ.4) THEN C--first particle IF(IP.EQ.JDASPN(1,IDEC)) THEN DO 151 P1 =1,2 DO 151 P1P=1,2 RHOSPN(P1,P1P,IP) = (0.0D0,0.0D0) DO 151 P2 =1,2 DO 151 P2P=1,2 DO 151 P3 =1,2 DO 151 P3P=1,2 DO 151 P4 =1,2 DO 151 P4P=1,2 151 RHOSPN(P1,P1P,IP) = RHOSPN(P1,P1P,IP)+ & MESPN(P1 ,P2 ,P3 ,P4 ,1,1)* & DCONJG(MESPN(P1P,P2P,P3P,P4P,1,1))* & RHOSPN(P2,P2P,JDASPN(1,IDEC)+1)* & RHOSPN(P3,P3P,JDASPN(1,IDEC)+2)* & RHOSPN(P4,P4P,JDASPN(2,IDEC)) C--second particle ELSEIF(IP.EQ.JDASPN(1,IDEC)+1) THEN DO 152 P2 =1,2 DO 152 P2P=1,2 RHOSPN(P2,P2P,IP) = (0.0D0,0.0D0) DO 152 P1 =1,2 DO 152 P1P=1,2 DO 152 P3 =1,2 DO 152 P3P=1,2 DO 152 P4 =1,2 DO 152 P4P=1,2 152 RHOSPN(P2,P2P,IP) = RHOSPN(P2,P2P,IP)+ & MESPN(P1 ,P2 ,P3 ,P4 ,1,1)* & DCONJG(MESPN(P1P,P2P,P3P,P4P,1,1))* & RHOSPN(P1,P1P,JDASPN(1,IDEC))* & RHOSPN(P3,P3P,JDASPN(1,IDEC)+2)* & RHOSPN(P4,P4P,JDASPN(2,IDEC)) C--third particle ELSEIF(IP.EQ.JDASPN(1,IDEC)+2) THEN DO 153 P3 =1,2 DO 153 P3P=1,2 RHOSPN(P3,P3P,IP) = (0.0D0,0.0D0) DO 153 P1 =1,2 DO 153 P1P=1,2 DO 153 P2 =1,2 DO 153 P2P=1,2 DO 153 P4 =1,2 DO 153 P4P=1,2 153 RHOSPN(P3,P3P,IP) = RHOSPN(P3,P3P,IP)+ & MESPN(P1 ,P2 ,P3 ,P4 ,1,1)* & DCONJG(MESPN(P1P,P2P,P3P,P4P,1,1))* & RHOSPN(P1,P1P,JDASPN(1,IDEC))* & RHOSPN(P2,P2P,JDASPN(1,IDEC)+1)* & RHOSPN(P4,P4P,JDASPN(2,IDEC)) C--fourth particle ELSEIF(IP.EQ.JDASPN(2,IDEC)) THEN DO 154 P4 =1,2 DO 154 P4P=1,2 RHOSPN(P4,P4P,IP) = (0.0D0,0.0D0) DO 154 P1 =1,2 DO 154 P1P=1,2 DO 154 P2 =1,2 DO 154 P2P=1,2 DO 154 P3 =1,2 DO 154 P3P=1,2 154 RHOSPN(P4,P4P,IP) = RHOSPN(P4,P4P,IP)+ & MESPN(P1 ,P2 ,P3 ,P4 ,1,1)* & DCONJG(MESPN(P1P,P2P,P3P,P4P,1,1))* & RHOSPN(P1,P1P,JDASPN(1,IDEC))* & RHOSPN(P2,P2P,JDASPN(1,IDEC)+1)* & RHOSPN(P3,P3P,JDASPN(1,IDEC)+2) ELSE CALL HWWARN('HWDSI1',505) ENDIF ELSE CALL HWWARN('HWDSI1',506) ENDIF ENDIF C--normalise the spin density matrix NORM = DBLE(RHOSPN(1,1,IP))+DBLE(RHOSPN(2,2,IP)) IF(NORM.GT.ZERO) THEN NORM = ONE/NORM DO 15 P3=1,2 DO 15 P3P=1,2 15 RHOSPN(P3,P3P,IP) = NORM*RHOSPN(P3,P3P,IP) ELSE CALL HWWARN('HWDSI1',107) GOTO 999 ENDIF ENDIF 999 RETURN END CDECK ID>, HWDSI2. *CMZ :- -30/09/02 14:05:28 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWDSI2(IHEP,IM,NPR,MHEP,KHEP,PW) C----------------------------------------------------------------------- C Subroutine to perform the second part of the heavy object decays C IE generate the kinematics for the decay C including spin correlations C was part of HWDHOB C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,PW(5),HWDPWT,HWDWWT,PCM,HWUPCM INTEGER IHEP,IM,KHEP,MHEP,NPR,ISN,RHEP EXTERNAL HWRGEN,HWDPWT,HWDWWT,HWUPCM IF (IERROR.NE.0) RETURN ISN = ISNHEP(IHEP) IF (NPR.EQ.2) THEN C Two body decay: LHEP -> MHEP + NHEP IF(NME(IM).GT.20000.AND.NME(IM).LT.30000) THEN C--generate a two body decay to a gauge boson as a three body decay CALL HWDSM3(2,IHEP,MHEP,NHEP,0,NME(IM)-20000, & RHOSPN(1,1,ISN),ISN) C--two body decay ELSEIF(NME(IM).GT.30000.AND.NME(IM).LT.40000) THEN CALL HWDSM2(IHEP,MHEP,NHEP,NME(IM)-30000, & RHOSPN(1,1,ISN),ISN) C--otherwise issue warning C--change by PR 9/30/02 to issue non-terminal warning and continue ELSE CALL HWWARN('HWDSI2',1) PCM=HWUPCM(PHEP(5,IHEP),PHEP(5,MHEP),PHEP(5,NHEP)) CALL HWDTWO(PHEP(1,IHEP),PHEP(1,MHEP), & PHEP(1,NHEP),PCM,TWO,.FALSE.) DECSPN(ISN) = .TRUE. IF(RSPIN(IDHW(IHEP)).EQ.ZERO) THEN RHOSPN(1,1,ISN) = ONE RHOSPN(1,2,ISN) = ZERO RHOSPN(2,1,ISN) = ZERO RHOSPN(2,2,ISN) = ZERO ELSE RHOSPN(1,1,ISN) = HALF RHOSPN(1,2,ISN) = ZERO RHOSPN(2,1,ISN) = ZERO RHOSPN(2,2,ISN) = HALF ENDIF ENDIF ELSEIF (NPR.EQ.3) THEN C Three body decay: LHEP -> KHEP + MHEP + NHEP KHEP=MHEP MHEP=MHEP+1 C Provisional colour self-connection of KHEP JMOHEP(2,KHEP)=KHEP JDAHEP(2,KHEP)=KHEP C--if old codes issue warning IF (NME(IM).EQ.100.OR.NME(IM).EQ.200.OR.NME(IM).EQ.300) THEN CALL HWWARN('HWDSI2',502) C--three body spin matrix element ELSEIF(NME(IM).GE.10000.AND.NME(IM).LT.20000) THEN CALL HWDSM3(3,IHEP,MHEP,KHEP,NHEP,NME(IM)-10000, & RHOSPN(1,1,ISN),ISN) C--special for top decay IF(ABS(IDHEP(IHEP)).EQ.6) THEN CALL HWVSUM(4,PHEP(1,KHEP),PHEP(1,MHEP),PW) CALL HWUMAS(PW) ENDIF C--unknown issue warning ELSE CALL HWWARN('HWDSI2',2) C Three body phase space decay CALL HWDTHR(PHEP(1,IHEP),PHEP(1,MHEP), & PHEP(1,KHEP),PHEP(1,NHEP),HWDPWT) CALL HWVEQU(4,VHEP(1,KHEP),VHEP(1,MHEP)) DECSPN(ISN) = .TRUE. IF(RSPIN(IDHW(IHEP)).EQ.ZERO) THEN RHOSPN(1,1,ISN) = ONE RHOSPN(1,2,ISN) = ZERO RHOSPN(2,1,ISN) = ZERO RHOSPN(2,2,ISN) = ZERO ELSE RHOSPN(1,1,ISN) = HALF RHOSPN(1,2,ISN) = ZERO RHOSPN(2,1,ISN) = ZERO RHOSPN(2,2,ISN) = HALF ENDIF ENDIF ELSEIF(NPR.EQ.4) THEN CALL HWWARN('HWDSI2',3) C Four body decay: LHEP -> KHEP + RHEP + MHEP + NHEP KHEP = MHEP RHEP = MHEP+1 MHEP = MHEP+2 ISTHEP(NHEP) = 114 C Provisional colour connections of KHEP and RHEP JMOHEP(2,KHEP)=RHEP JDAHEP(2,KHEP)=RHEP JMOHEP(2,RHEP)=KHEP JDAHEP(2,RHEP)=KHEP C Four body phase space decay CALL HWDFOR(PHEP(1,IHEP),PHEP(1,KHEP),PHEP(1,RHEP), & PHEP(1,MHEP),PHEP(1,NHEP)) IF(IERROR.NE.0) RETURN CALL HWVEQU(4,VHEP(1,KHEP),VHEP(1,RHEP)) CALL HWVEQU(4,VHEP(1,KHEP),VHEP(1,MHEP)) DECSPN(ISN) = .TRUE. IF(RSPIN(IDHW(IHEP)).EQ.ZERO) THEN RHOSPN(1,1,ISN) = ONE RHOSPN(1,2,ISN) = ZERO RHOSPN(2,1,ISN) = ZERO RHOSPN(2,2,ISN) = ZERO ELSE RHOSPN(1,1,ISN) = HALF RHOSPN(1,2,ISN) = ZERO RHOSPN(2,1,ISN) = ZERO RHOSPN(2,2,ISN) = HALF ENDIF ELSE CALL HWWARN('HWDSI2',100) ENDIF END CDECK ID>, HWDSI3. *CMZ :- -30/09/02 14:05:28 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWDSI3(IP) C----------------------------------------------------------------------- C Subroutine to handle spin correlations in tau decays C averages spin if not using TAUOLA C if using TAUOLA selects the spin and uses TAUOLA to perform the C decay C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IP,IHEP,ID1,ID,NTRY DOUBLE PRECISION PPOL,HWRGEN,POL EXTERNAL HWRGEN C--if HERWIG is performing tau decays average over spins and return C--spin averaged tau decay will be done later IF(TAUDEC.EQ.'HERWIG') THEN DECSPN(IP) = .TRUE. RHOSPN(1,1,IP) = HALF RHOSPN(2,1,IP) = ZERO RHOSPN(1,2,IP) = ZERO RHOSPN(2,2,IP) = HALF C--if using tauola select the polarization for the decay ELSEIF(TAUDEC.EQ.'TAUOLA') THEN C--work out where that particle is IHEP = IDSPN(IP) NTRY = 0 10 ID = IDHW(IHEP) IF(JDAHEP(1,IHEP).NE.0) THEN IF(ISTHEP(IHEP).GE.141.AND.ISTHEP(IHEP).LE.144) THEN DO ID1=JDAHEP(1,IHEP),JDAHEP(2,IHEP) IF(IDHW(ID1).EQ.ID) IHEP=ID1 ENDDO ELSE IHEP = JDAHEP(1,IHEP) ENDIF NTRY = NTRY+1 IF(NTRY.LT.NBTRY) THEN GOTO 10 ELSE CALL HWWARN('HWDSI3',100) GOTO 999 ENDIF ENDIF C--select the tau polarization PPOL = DBLE(RHOSPN(1,1,IP)) IF(PPOL.GE.HWRGEN(0)) THEN POL = 1.0D0 RHOSPN(1,1,IP) = ONE RHOSPN(2,1,IP) = ZERO RHOSPN(1,2,IP) = ZERO RHOSPN(2,2,IP) = ZERO ELSE POL =-1.0D0 RHOSPN(1,1,IP) = ZERO RHOSPN(2,1,IP) = ZERO RHOSPN(1,2,IP) = ZERO RHOSPN(2,2,IP) = ONE ENDIF C--decay the particle CALL HWDTAU(1,IHEP,POL) DECSPN(IP) = .TRUE. ELSE CALL HWWARN('HWDSI3',500) ENDIF 999 RETURN END CDECK ID>, HWDSM2. *CMZ :- -09/04/02 13:46:07 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWDSM2(ID,IOUT1,IOUT2,IMODE,RHOIN,IDSPIN) C----------------------------------------------------------------------- C Subroutine to calculate the two body matrix element for spin C correlations C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IOUT1,IOUT2,IMODE,IDSPIN,ID,I,J,IDP(3),P0,P1,P2,O(2),P0P, & NTRY DOUBLE PRECISION XMASS,PLAB,PRW,PCM,PREF(5),P(5,3),PM(5,3),PCMA, & HWUPCM,MA(3),MA2(3),HWULDO,PP,HWVDOT,N(3),EPS,PRE,PHS,A(2), & WGT,WTMAX,HWRGEN DOUBLE COMPLEX RHOIN(2,2),S,D,ME(2,2,2),F1(2,2,8),F0(2,2,8), & F2M(2,2,8),F1M(2,2,8),F1F(2,2,8),F2(2,2,8,8),F0B(2,2,8,8) COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10) SAVE O,PREF DATA PREF/1.0D0,0.0D0,0.0D0,1.0D0,0.0D0/ DATA O/2,1/ COMMON/HWHEWS/S(8,8,2),D(8,8) PARAMETER(EPS=1D-20) EXTERNAL HWUPCM,HWULDO,HWVDOT,HWRGEN C--first setup if this is the start of a new spin chain IF(NSPN.EQ.0) THEN C--zero the elements of the array CALL HWVZRI( NMXHEP,ISNHEP) CALL HWVZRI( NMXSPN,JMOSPN) CALL HWVZRI(2*NMXSPN,JDASPN) CALL HWVZRI( NMXSPN, IDSPN) NSPN = NSPN+1 JMOSPN(NSPN) = 0 IDSPN (NSPN) = ID DECSPN(NSPN) = .FALSE. IF(RSPIN(IDHW(ID)).EQ.ZERO) THEN RHOSPN(1,1,NSPN) = ONE RHOSPN(2,1,NSPN) = ZERO RHOSPN(1,2,NSPN) = ZERO RHOSPN(2,2,NSPN) = ZERO ELSE RHOSPN(1,1,NSPN) = HALF RHOSPN(2,1,NSPN) = ZERO RHOSPN(1,2,NSPN) = ZERO RHOSPN(2,2,NSPN) = HALF ENDIF ISNHEP(ID) = NSPN ENDIF C--MA is mass for this decay (OFF-SHELL) C--generate the momenta for a two body decay P(5,1) = PHEP(5, ID) P(5,2) = PHEP(5,IOUT1) P(5,3) = PHEP(5,IOUT2) IDP(1) = IDHW(ID) IDP(2) = IDHW(IOUT1) IDP(3) = IDHW(IOUT2) DO 1 I=1,3 MA(I) = P(5,I) 1 MA2(I) = MA(I)**2 PCMA = HWUPCM(P(5,1),P(5,2),P(5,3)) C--setup the couplings DO 2 I=1,2 2 A(I) = A2MODE(I,IMODE) C--phase space factor PHS = PCMA/MA2(1)/8.0D0/PIFAC C--maximum weight WTMAX = WT2MAX(IMODE) NTRY = 0 1000 NTRY = NTRY+1 CALL HWVEQU(5,PHEP(1,ID),P(1,1)) CALL HWDTWO(P(1,1),P(1,2),P(1,3),PCMA,2.0D0,.TRUE.) DO 3 I=1,3 C--compute the references vectors C--not important if SM particle which can't have spin measured C--ie anything other the top and tau C--also not important if particle is approx massless C--first the SM particles other than top and tau IF(IDP(I).LT.400.AND.(IDP(I).NE.6.AND.IDP(I).NE.12 & .AND.IDP(I).NE.125.AND.IDP(I).NE.131)) THEN CALL HWVEQU(5,PREF,PLAB(1,I+3)) C--all other particles ELSE PP = SQRT(HWVDOT(3,P(1,I),P(1,I))) CALL HWVSCA(3,ONE/PP,P(1,I),N) PLAB(4,I+3) = HALF*(P(4,I)-PP) PP = HALF*(PP-MA(I)-PP**2/(MA(I)+P(4,I))) CALL HWVSCA(3,PP,N,PLAB(1,I+3)) CALL HWUMAS(PLAB(1,I+3)) PP = HWVDOT(3,PLAB(1,I+3),PLAB(1,I+3)) C--fix to avoid problems if approx massless due to energy IF(PP.LT.EPS) CALL HWVEQU(5,PREF,PLAB(1,I+3)) ENDIF C--now the massless vectors PP = HALF*P(5,I)**2/HWULDO(PLAB(1,I+3),P(1,I)) DO 4 J=1,4 4 PLAB(J,I) = P(J,I)-PP*PLAB(J,I+3) 3 CALL HWUMAS(PLAB(1,I)) C--change order of momenta for call to HE code DO 5 I=1,3 PM(1,I) = P(3,I) PM(2,I) = P(1,I) PM(3,I) = P(2,I) PM(4,I) = P(4,I) 5 PM(5,I) = P(5,I) DO 6 I=1,6 PCM(1,I)=PLAB(3,I) PCM(2,I)=PLAB(1,I) PCM(3,I)=PLAB(2,I) PCM(4,I)=PLAB(4,I) 6 PCM(5,I)=PLAB(5,I) C--compute the S functions CALL HWHEW2(6,PCM(1,1),S(1,1,2),S(1,1,1),D) DO 7 I=1,6 DO 7 J=1,6 S(I,J,2) = -S(I,J,2) 7 D(I,J) = TWO*D(I,J) C--now compute the F functions needed CALL HWH2F2(6,F1 ,5,PM(1,2), MA(2)) CALL HWH2F2(6,F0 ,4,PM(1,1), MA(1)) CALL HWH2F2(6,F1M,5,PM(1,2),-MA(2)) CALL HWH2F2(6,F2M,6,PM(1,3),-MA(3)) CALL HWH2F1(6,F1F,5,PM(1,2), MA(2)) CALL HWH2F3(6,F2 ,PM(1,3),ZERO ) CALL HWH2F3(6,F0B ,PM(1,1),ZERO ) C--now compute the diagrams C--fermion --> fermion scalar IF(I2DRTP(IMODE).EQ.1) THEN PRE = HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,2),PCM(1,5)) PRE = HALF/SQRT(PRE) DO 10 P0=1,2 DO 10 P1=1,2 ME(P0,P1,2) = (0.0D0,0.0D0) 10 ME(P0,P1,1) = PRE*( A(O(P1))*S(5,2,O(P1))*F0( P1 ,O(P0),2) & +A( P1 )*MA(2)* F0(O(P1),O(P0),5)) C--fermion --> scalar fermion diagrams ELSEIF(I2DRTP(IMODE).EQ.2) THEN PRE = HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,3),PCM(1,6)) PRE = HALF/SQRT(PRE) DO 20 P0=1,2 DO 20 P2=1,2 ME(P0,2,P2) = (0.0D0,0.0D0) 20 ME(P0,1,P2) = PRE*( A(O(P2))*S(6,3,O(P2))*F0( P2 ,O(P0),3) & +A( P2 )*MA(3)* F0(O(P2),O(P0),6)) C--fermion --> scalar antifermion ELSEIF(I2DRTP(IMODE).EQ.3) THEN PRE = HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,3),PCM(1,6)) PRE =-HALF/SQRT(PRE) DO 30 P0=1,2 DO 30 P2=1,2 ME(P0,2,P2) = (0.0D0,0.0D0) 30 ME(P0,1,P2) = PRE*( A( P0 )*S(4,1,P0)*F2M(O(P0),O(P2),1) & -A(O(P0))*MA(1) *F2M( P0 ,O(P2),4)) C--fermion --> fermion gauge boson ELSEIF(I2DRTP(IMODE).EQ.4) THEN PRE = HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,2),PCM(1,5))* & HWULDO(PM(1,3),PCM(1,6)) PRE = HALF/SQRT(PRE) DO 40 P0=1,2 DO 40 P1=1,2 ME(P0,P1,1) =-PRE*A(1)*F1F(O(P1),2,3)*S(3,6,2)*F0(1,O(P0),3) 40 ME(P0,P1,2) = PRE* F1F(O(P1),1,3)*S(3,6,1)*F0(2,O(P0),3) C--scalar --> fermion antifermion ELSEIF(I2DRTP(IMODE).EQ.5) THEN PRE = HWULDO(PM(1,2),PCM(1,5))*HWULDO(PM(1,3),PCM(1,6)) PRE =-HALF/SQRT(PRE) DO 50 P1=1,2 DO 50 P2=1,2 ME(2,P1,P2) = (0.0D0,0.0D0) 50 ME(1,P1,P2) = PRE*( A(O(P1))*S(5,2,O(P1))*F2M( P1 ,O(P2),2) & +A( P1 )*MA(2)* F2M(O(P1),O(P2),5)) C--scalar --> fermion fermion ELSEIF(I2DRTP(IMODE).EQ.6) THEN PRE = HWULDO(PM(1,2),PCM(1,5))*HWULDO(PM(1,3),PCM(1,6)) PRE = HALF/SQRT(PRE) DO 60 P1=1,2 DO 60 P2=1,2 ME(2,P1,P2) = (0.0D0,0.0D0) 60 ME(1,P1,P2) = PRE*( A(O(P2))*S(6,3,O(P2))*F1M( P2 ,P1,3) & +A( P2 )*MA(3)* F1M(O(P2),P1,6)) C--fermion --> fermion pion ELSEIF(I2DRTP(IMODE).EQ.7) THEN PRE = HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,2),PCM(1,5)) PRE = 0.25D0/SQRT(PRE)/RMASS(198)**2 DO 70 P0=1,2 DO 70 P1=1,2 ME(P0,P1,2) = (0.0D0,0.0D0) 70 ME(P0,P1,1) =PRE*( & MA(1)*A(O(P0))*( S(5,2,O(P1))*F2( P1 ,O(P0),2,4) & +MA(2)*F2(O(P1),O(P0),5,4)) & +A(P0)*S(1,4,P0)*( S(5,2,O(P1))*F2( P1 , P0 ,2,1) & +MA(2)*F2(O(P1), P0 ,5,1))) C--scalar --> antifermion fermion ELSEIF(I2DRTP(IMODE).EQ.8) THEN PRE = HWULDO(PM(1,2),PCM(1,5))*HWULDO(PM(1,3),PCM(1,6)) PRE =-HALF/SQRT(PRE) DO 80 P1=1,2 DO 80 P2=1,2 ME(2,P1,P2) = (0.0D0,0.0D0) 80 ME(1,P1,P2) = PRE*( A(O(P2))*S(6,3,O(P2))*F1M( P2 ,O(P1),3) & +A( P2 )*MA(3)* F1M(O(P2),O(P1),6)) C--neutralino --> gravitino photon ELSEIF(I2DRTP(IMODE).EQ.9) THEN PRE = TWO*HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,3),PCM(1,6)) PRE = TWO/SQRT(PRE) DO 90 P1=1,2 DO 90 P2=1,2 ME(P1,P2,O(P2)) = (0.0D0,0.0D0) 90 ME(P1,P2, P2 ) = PRE*S(2,3,P2)*S(3,6,O(P2))* & S(3,2,P2)*F0(O(P2),P1,2) C--neutralino --> gravitino scalar ELSEIF(I2DRTP(IMODE).EQ.10) THEN PRE = TWO*HWULDO(PM(1,1),PCM(1,4)) PRE = ONE/SQRT(PRE) DO 100 P1=1,2 DO 100 P2=1,2 ME(P1,P2,2) = (0.0D0,0.0D0) 100 ME(P1,P2,1) = PRE*F2(P2,1,2,2)*F0(1,O(P1),2) C--sfermion --> fermion gravitino ELSEIF(I2DRTP(IMODE).EQ.11) THEN PRE = TWO*HWULDO(PM(1,2),PCM(1,5)) PRE = ONE/SQRT(PRE) DO 110 P1=1,2 DO 110 P2=1,2 ME(2,P1,P2) = (0.0D0,0.0D0) 110 ME(1,P1,P2) = PRE*A(O(P2))*F1M(O(P1),P2,3)*F0B(P2,P2,3,3) C--antisfermion --> antifermion gravitino ELSEIF(I2DRTP(IMODE).EQ.12) THEN PRE = TWO*HWULDO(PM(1,2),PCM(1,5)) PRE = ONE/SQRT(PRE) DO 120 P1=1,2 DO 120 P2=1,2 ME(2,P1,P2) = (0.0D0,0.0D0) 120 ME(1,P1,P2) = PRE*A(O(P2))*F0B(P2,P2,3,3)*F1(P2,O(P1),3) C--scalar --> antifermion antifermion ELSEIF(I2DRTP(IMODE).EQ.13) THEN PRE = HWULDO(PM(1,2),PCM(1,5))*HWULDO(PM(1,3),PCM(1,6)) PRE = HALF/SQRT(PRE) DO 130 P1=1,2 DO 130 P2=1,2 ME(2,P1,P2) = (0.0D0,0.0D0) 130 ME(1,P1,P2) = PRE*( A( P1 )*S(5,2, P1 )*F2M(O(P1),O(P2),2) & +A(O(P1))*MA(2) *F2M( P1 ,O(P2),5)) C--antifermion --> scalar antifermion ELSEIF(I2DRTP(IMODE).EQ.14) THEN PRE = HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,3),PCM(1,6)) PRE = HALF/SQRT(PRE) DO 140 P0=1,2 DO 140 P2=1,2 ME(P0,2,P2) = (0.0D0,0.0D0) 140 ME(P0,1,P2) = PRE*( A(O(P0))*S(4,1,O(P0))*F2M( P0 ,O(P2),1) & -A( P0 )*MA(1) *F2M(O(P0),O(P2),4)) C--unrecognized type of diagram ELSE CALL HWWARN('HWDSM2',500) ENDIF C--now compute the weight WGT = ZERO DO 500 P0 =1,2 DO 500 P0P=1,2 DO 500 P1 =1,2 DO 500 P2 =1,2 500 WGT = WGT+PHS*P2MODE(IMODE)*DREAL( & ME(P0,P1,P2)*DCONJG(ME(P0P,P1,P2))*RHOIN(P0,P0P)) IF(I2DRTP(IMODE).EQ.5.OR.I2DRTP(IMODE).EQ.6.OR. & I2DRTP(IMODE).EQ.8.OR.I2DRTP(IMODE).EQ.13) GOTO 300 C--issue warning if greater than maximum IF(WGT.GT.WTMAX) THEN CALL HWWARN('HWDSM2',1) WRITE(6,2000) RNAME(IDK(ID2PRT(IMODE))), & RNAME(IDKPRD(1,ID2PRT(IMODE))),RNAME(IDKPRD(2,ID2PRT(IMODE))), & WTMAX,1.1D0*WGT WT2MAX(IMODE) = 1.1D0*WGT WTMAX = WT2MAX(IMODE) ENDIF IF(HWRGEN(0)*WTMAX.GT.WGT.AND.NTRY.LT.NSNTRY) GOTO 1000 IF(NTRY.GE.NSNTRY) THEN CALL HWWARN('HWDSM2',100) GOTO 999 ENDIF C--now enter the momenta in the common block 300 CALL HWVEQU(5,P(1,2),PHEP(1,IOUT1)) CALL HWVEQU(5,P(1,3),PHEP(1,IOUT2)) C--set up the spin information C--setup for all decays JMOSPN(NSPN+1) = IDSPIN JMOSPN(NSPN+2) = IDSPIN JDASPN(1,IDSPIN) = NSPN+1 JDASPN(2,IDSPIN) = NSPN+2 IDSPN(NSPN+1) = IOUT1 IDSPN(NSPN+2) = IOUT2 DO 11 I=1,2 DECSPN(NSPN+I) = .FALSE. DO 11 J=1,2 11 JDASPN(I,NSPN+J) = 0 ISNHEP(IOUT1) = NSPN+1 ISNHEP(IOUT2) = NSPN+2 DO 12 I=1,2 IF(RSPIN(IDHW(IDSPN(NSPN+I))).EQ.ZERO) THEN RHOSPN(1,1,NSPN+I) = ONE RHOSPN(2,1,NSPN+I) = ZERO RHOSPN(1,2,NSPN+I) = ZERO RHOSPN(2,2,NSPN+I) = ZERO ELSE RHOSPN(1,1,NSPN+I) = HALF RHOSPN(2,1,NSPN+I) = ZERO RHOSPN(1,2,NSPN+I) = ZERO RHOSPN(2,2,NSPN+I) = HALF ENDIF 12 CONTINUE NSPN = NSPN+2 C--now enter the matrix element DO 150 P0=1,2 DO 150 P1=1,2 DO 150 P2=1,2 MESPN(P0,P1,P2,2,1,IDSPIN) = (0.0D0,0.0D0) 150 MESPN(P0,P1,P2,1,1,IDSPIN) = ME(P0,P1,P2) SPNCFC(1,1,IDSPIN) = ONE NCFL(IDSPIN) = 1 RETURN C--format statements 2000 FORMAT(/'WEIGHT FOR DECAY ',A8,' --> ',A8,' ',A8, 'EXCEEDS MAX', & /10X,' MAXIMUM WEIGHT =',1PG24.16, & /10X,'NEW MAXIMUM WEIGHT =',1PG24.16) 999 RETURN END CDECK ID>, HWDSM3. *CMZ :- -09/04/02 13:46:07 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWDSM3(NPR,ID,IOUT1,IOUT2,IOUT3,IMODE,RHOIN,IDSPIN) C----------------------------------------------------------------------- C Master subroutine for three body SUSY and spin ME's C Uses HWD3ME to generate the momenta etc C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX F0(2,2,8),F1(2,2,8),F1M(2,2,8),F3(2,2,8), & F0M(2,2,8),F2(2,2,8),RHOIN(2,2),F01(2,2,8,8) DOUBLE PRECISION A,B,MS,MWD,MA,MB,MA2,MB2,M342,M232,M242,MR, & P(5,4),PZ(5),HWRGEN,CV,CA,BR,PM(5,4),CFTHRE(NCFMAX,NCFMAX) INTEGER ID,IDP(4+NDIAGR),NPR,ITYPE,I,IB,ID1,ID2,IDSPIN, & DRTYPE(NDIAGR),IOUT(3),IMODE,IOUT1,IOUT2,IOUT3,J,NCTHRE, & DRCF(NDIAGR) COMMON/HWD3BY/F0,F0M,F1M,F1,F2,F3,F01,A(2,NDIAGR),B(2,NDIAGR), & MS(NDIAGR),MWD(NDIAGR),MR(NDIAGR),MA(4),MA2(4),MB(4),MB2(4), & M342,M232,M242,P,PM,CFTHRE,IDP,DRTYPE,NCTHRE,DRCF EXTERNAL HWRGEN SAVE PZ,IOUT,ITYPE,ID1,ID2 C--calculate the matrix element for a three body decay IF(NPR.EQ.3) THEN C--set up the decay products, if a SUSY decay the SUSY particle C--must be the first decay product IF(ABS(IDHEP(IOUT1)).GT.1000000) THEN IOUT(1) = IOUT1 IOUT(2) = IOUT2 IOUT(3) = IOUT3 ELSEIF(ABS(IDHEP(IOUT2)).GT.1000000) THEN IOUT(1) = IOUT2 IOUT(2) = IOUT1 IOUT(3) = IOUT3 ELSEIF(ABS(IDHEP(IOUT3)).GT.1000000) THEN IOUT(1) = IOUT3 IOUT(2) = IOUT1 IOUT(3) = IOUT3 C--special for top decay (bottom must be first) ELSEIF(ABS(IDHEP(ID)).EQ.6) THEN IOUT(1) = IOUT3 IOUT(2) = IOUT1 IOUT(3) = IOUT2 ELSE IOUT(1) = IOUT2 IOUT(2) = IOUT1 IOUT(3) = IOUT3 ENDIF C--fermion must be second and antifermion third IF(IDHEP(IOUT(2)).LT.0.AND. & (ABS(IDHEP(IOUT(1))).GT.1000000.OR.ABS(IDHEP(ID)).EQ.6)) THEN I = IOUT(2) IOUT(2) = IOUT(3) IOUT(3) = I ENDIF C--setup the OFF SHELL MASSES MA(1) = PHEP(5,ID) DO 1 I=1,3 1 MA(I+1) = PHEP(5,IOUT(I)) DO 2 I=1,4 2 MA2(I) = MA(I)**2 C--call to ME code CALL HWD3ME(ID,0,IMODE,RHOIN,IDSPIN) IF(IERROR.NE.0) RETURN C--juggle the momenta for the RPV BV gluino if needed IF(SPCOPT.EQ.2.AND.N3NCFL(IMODE).EQ.3) THEN IF(NCFL(IDSPIN).EQ.2) THEN IOUT(1) = IOUT1 IOUT(2) = IOUT2 IOUT(3) = IOUT3 ELSEIF(NCFL(IDSPIN).EQ.3) THEN IOUT(1) = IOUT3 IOUT(2) = IOUT2 IOUT(3) = IOUT1 ENDIF DO I=1,3 IDHW(IOUT(I)) = IDP(I+1) ENDDO ENDIF C--copy momenta into event record DO 3 I=1,3 3 CALL HWVEQU(5,P(1,1+I),PHEP(1,IOUT(I))) C--enter the spin information in the common block IF(SYSPIN) THEN C--set up if start of new spin chain IF(NSPN.EQ.0) THEN C--zero the elements CALL HWVZRI( NMXHEP,ISNHEP) CALL HWVZRI( NMXSPN,JMOSPN) CALL HWVZRI(2*NMXSPN,JDASPN) CALL HWVZRI( NMXSPN, IDSPN) NSPN = NSPN+1 JMOSPN(NSPN) = 0 IDSPN (NSPN) = ID DECSPN(NSPN) = .FALSE. C--set up spin density matrix for particle IF(RSPIN(IDHW(ID)).EQ.ZERO) THEN RHOSPN(1,1,NSPN) = ONE RHOSPN(2,1,NSPN) = ZERO RHOSPN(1,2,NSPN) = ZERO RHOSPN(2,2,NSPN) = ZERO ELSE RHOSPN(1,1,NSPN) = HALF RHOSPN(2,1,NSPN) = ZERO RHOSPN(1,2,NSPN) = ZERO RHOSPN(2,2,NSPN) = HALF ENDIF ISNHEP(ID) = NSPN ENDIF C--enter the decay products JDASPN(1,IDSPIN) = NSPN+1 JDASPN(2,IDSPIN) = NSPN+3 DO 7 I=1,3 JMOSPN(NSPN+I ) = IDSPIN IDSPN (NSPN+I ) = IOUT(I) DECSPN(NSPN+I ) = .FALSE. ISNHEP(IOUT(I) ) = NSPN+I IF(RSPIN(IDHW(IOUT(I))).EQ.ZERO) THEN RHOSPN(1,1,NSPN+I) = ONE RHOSPN(2,1,NSPN+I) = ZERO RHOSPN(1,2,NSPN+I) = ZERO RHOSPN(2,2,NSPN+I) = ZERO ELSE RHOSPN(1,1,NSPN+I) = HALF RHOSPN(2,1,NSPN+I) = ZERO RHOSPN(1,2,NSPN+I) = ZERO RHOSPN(2,2,NSPN+I) = HALF ENDIF DO 7 J=1,2 7 JDASPN(J,NSPN+I) = 0 NSPN = NSPN+3 ENDIF C--select the decay mode and generate the decay for a two body mode ELSEIF(NPR.EQ.2) THEN IF(IDHW(IOUT2).GE.198.AND.IDHW(IOUT2).LE.200) THEN IB = IDHW(IOUT2) IOUT(1) = IOUT1 IOUT(2) = IOUT2 ELSEIF(IDHW(IOUT1).GE.198.AND.IDHW(IOUT1).LE.200) THEN IB = IDHW(IOUT1) IOUT(1) = IOUT2 IOUT(2) = IOUT1 ELSE CALL HWWARN('HWDSM3',501) ENDIF C--setup the off shell masses and particle ids for me code MA(1) = PHEP(5,ID) MA(2) = PHEP(5,IOUT(1)) CALL HWDBOZ(IB,ID1,ID2,CV,CA,BR,0) ITYPE = ID1 IF(IB.EQ.199) ITYPE = ITYPE+1 IF(ITYPE.GT.120) ITYPE = ITYPE-114 IF(IB.NE.200) ITYPE = ITYPE/2 C--generate momenta of decay products CALL HWD3ME(ID,ITYPE,IMODE,RHOIN,IDSPIN) CALL HWVEQU(5,P(1,2),PHEP(1,IOUT(1))) CALL HWVSUM(4,P(1,3),P(1,4),PZ) CALL HWUMAS(PZ) CALL HWVEQU(5,PZ,PHEP(1,IOUT(2))) C--enter the spin information in the common block if starting new chain IF(SYSPIN.AND.NSPN.EQ.0) THEN C--zero elements of common block CALL HWVZRI( NMXHEP,ISNHEP) CALL HWVZRI( NMXSPN,JMOSPN) CALL HWVZRI(2*NMXSPN,JDASPN) CALL HWVZRI( NMXSPN, IDSPN) NSPN = NSPN+1 JMOSPN(NSPN) = 0 IDSPN (NSPN) = ID DECSPN(NSPN) = .FALSE. IF(RSPIN(IDHW(ID)).EQ.ZERO) THEN RHOSPN(1,1,NSPN) = ONE RHOSPN(2,1,NSPN) = ZERO RHOSPN(1,2,NSPN) = ZERO RHOSPN(2,2,NSPN) = ZERO ELSE RHOSPN(1,1,NSPN) = HALF RHOSPN(2,1,NSPN) = ZERO RHOSPN(1,2,NSPN) = ZERO RHOSPN(2,2,NSPN) = HALF ENDIF ISNHEP(ID) = NSPN ENDIF IF(SYSPIN) THEN IDSPN (NSPN+1 ) = IOUT(1) ISNHEP(IOUT(1)) = NSPN+1 ENDIF C--put the boson decay products into the event record for a two body mode ELSEIF(NPR.EQ.-1) THEN IOUT(1) = JDAHEP(1,IOUT(2)) IOUT(2) = NHEP+1 IOUT(3) = NHEP+2 C--set up the status of the particles ISTHEP(IOUT(1)) = 195 JDAHEP(1,IOUT(1)) = NHEP+1 JDAHEP(2,IOUT(1)) = NHEP+2 C--find the ID's of the particles IF(IDHW(IOUT(1)).EQ.200) THEN ID1 = ITYPE IF(ITYPE.GT.6) ID1 = ID1+114 ID2 = ID1+6 ELSE ID1 = 2*ITYPE-1 IF(ITYPE.GT.3) ID1 = ID1+114 ID2 = ID1+7 IF(IDHW(IOUT(1)).EQ.198) THEN I = ID1+6 ID1 = ID2-6 ID2 = I ENDIF ENDIF C--put id's of decay products into the event record IDHW(NHEP+1) = ID1 IDHW(NHEP+2) = ID2 IDHEP(NHEP+1) = IDPDG(ID1) IDHEP(NHEP+2) = IDPDG(ID2) C--boost decay products momenta to rest frame of boson CALL HWULOF(PZ,P(1,3),P(1,3)) CALL HWULOF(PZ,P(1,4),P(1,4)) C--boost back to lab using new boson CALL HWULOB(PHEP(1,IOUT(1)),P(1,3),PHEP(1,NHEP+1)) CALL HWULOB(PHEP(1,IOUT(1)),P(1,4),PHEP(1,NHEP+2)) C--setup for decay to quarks IF(ID1.LE.12) THEN ISTHEP(NHEP+1) = 113 ISTHEP(NHEP+2) = 114 JMOHEP(2,NHEP+1) = NHEP+2 JDAHEP(2,NHEP+1) = NHEP+2 JMOHEP(2,NHEP+2) = NHEP+1 JDAHEP(2,NHEP+2) = NHEP+1 JMOHEP(1,NHEP+1) = IOUT(1) JMOHEP(1,NHEP+2) = IOUT(1) C--setup for decay to leptons ELSE ISTHEP(NHEP+1) = 193 ISTHEP(NHEP+2) = 193 JMOHEP(1,NHEP+1) = IOUT(1) JMOHEP(1,NHEP+2) = IOUT(1) JMOHEP(2,NHEP+1) = JMOHEP(1,IOUT(1)) JMOHEP(2,NHEP+2) = JMOHEP(1,IOUT(1)) JDAHEP(1,NHEP+1) = 0 JDAHEP(1,NHEP+2) = 0 JDAHEP(2,NHEP+1) = 0 JDAHEP(2,NHEP+2) = 0 ENDIF NHEP=NHEP+2 C--finish entering the spin information in the common block IF(SYSPIN) THEN JDASPN(1,IDSPIN) = NSPN+1 JDASPN(2,IDSPIN) = NSPN+3 DO 6 I=1,3 JMOSPN(NSPN+I ) = IDSPIN DECSPN(NSPN+I ) = .FALSE. IF(RSPIN(IDHW(IOUT(I))).EQ.ZERO) THEN RHOSPN(1,1,NSPN+I) = ONE RHOSPN(2,1,NSPN+I) = ZERO RHOSPN(1,2,NSPN+I) = ZERO RHOSPN(2,2,NSPN+I) = ZERO ELSE RHOSPN(1,1,NSPN+I) = HALF RHOSPN(2,1,NSPN+I) = ZERO RHOSPN(1,2,NSPN+I) = ZERO RHOSPN(2,2,NSPN+I) = HALF ENDIF DO 6 J=1,2 6 JDASPN(J,NSPN+I) =0 NSPN = NSPN+3 IDSPN (NSPN-1) = NHEP-1 IDSPN (NSPN ) = NHEP ISNHEP(NHEP-1) = NSPN-1 ISNHEP(NHEP ) = NSPN ENDIF C--perform the parton shower for the decay products of the gauge boson IF(ID1.LE.12) CALL HWBGEN C--error issue warning ELSE CALL HWWARN('HWDSM3',500) ENDIF END CDECK ID>, HWDSM4. *CMZ :- -11/10/01 14:03:42 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWDSM4(IOPT,ID,IOUT1,IOUT2,IMODE) C----------------------------------------------------------------------- C Subroutine to perform the four body decays C IOPT = 1 select decay mode and generate momenta C IOPT = 2 enter first decays and perform parton shower C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IOPT,ID,IOUT1,IOUT2,IB(2),I,IDF(4),ITYPE(2),IMODE, & IDP(4+NDIAGR),ID1,ID2,J DOUBLE PRECISION CV,CA,A,B,MS,MWD,MR,M,M2,P(5,5),PW(5,2),BR COMMON/HWD4BY/A(2),B(2),MS(2),MWD(2),MR(2),M(5),M2(5),P,IDP SAVE PW,ITYPE C--generate the decay IF(IOPT.EQ.1) THEN IB(1) = IDHW(IOUT1) IB(2) = IDHW(IOUT2) C--select the decays of the bosons DO 1 I=1,2 CALL HWDBOZ(IB(I),IDF(2*I-1),IDF(2*I),CV,CA,BR,1) ITYPE(I) = IDF(2*I-1) IF(IB(I).EQ.199) ITYPE(I) = ITYPE(I)+1 IF(ITYPE(I).GT.120) ITYPE(I) = ITYPE(I)-114 1 IF(IB(I).NE.200) ITYPE(I) = ITYPE(I)/2 C--generate the momenta of the decay products CALL HWD4ME(ID,ITYPE(1),ITYPE(2),IMODE) DO 2 I=1,2 CALL HWVSUM(4,P(1,2*I),P(1,2*I+1),PW(1,I)) 2 CALL HWUMAS(PW(1,I)) CALL HWVEQU(5,PW(1,1),PHEP(1,IOUT1)) CALL HWVEQU(5,PW(1,2),PHEP(1,IOUT2)) IF(SYSPIN) THEN IDSPN(1) = JDAHEP(1,ID) DECSPN(1) = .FALSE. ISNHEP(JDAHEP(1,ID)) = 1 JDASPN(1,1) = 2 JDASPN(2,1) = 5 DO 4 I=2,5 DECSPN(I) = .FALSE. 4 JMOSPN(I) = 1 ENDIF ELSEIF(IOPT.EQ.2) THEN IB(1) = JDAHEP(1,IOUT1) IB(2) = JDAHEP(1,IOUT2) DO 3 I=1,2 ISTHEP(IB(I)) = 195 JDAHEP(1,IB(I)) = NHEP+1 JDAHEP(2,IB(I)) = NHEP+2 C--find the ID's of the particles IF(IDHW(IB(I)).EQ.200) THEN ID1 = ITYPE(I) IF(ITYPE(I).GT.6) ID1 = ID1+114 ID2 = ID1+6 ELSE ID1 = 2*ITYPE(I)-1 IF(ITYPE(I).GT.3) ID1 = ID1+114 ID2 = ID1+7 IF(IDHW(IB(I)).EQ.198) THEN J = ID1+6 ID1 = ID2-6 ID2 = J ENDIF ENDIF C--put id's of decay products into the event record IDHW(NHEP+1) = ID1 IDHW(NHEP+2) = ID2 IDHEP(NHEP+1) = IDPDG(ID1) IDHEP(NHEP+2) = IDPDG(ID2) C--boost decay products momenta to rest frame of boson CALL HWULOF(PW(1,I),P(1,2*I ),P(1,2*I )) CALL HWULOF(PW(1,I),P(1,2*I+1),P(1,2*I+1)) C--boost back to lab using new boson CALL HWULOB(PHEP(1,IB(I)),P(1,2*I ),PHEP(1,NHEP+1)) CALL HWULOB(PHEP(1,IB(I)),P(1,2*I+1),PHEP(1,NHEP+2)) C--setup for decay to quarks IF(ID1.LE.12) THEN ISTHEP(NHEP+1) = 113 ISTHEP(NHEP+2) = 114 JMOHEP(2,NHEP+1) = NHEP+2 JDAHEP(2,NHEP+1) = NHEP+2 JMOHEP(2,NHEP+2) = NHEP+1 JDAHEP(2,NHEP+2) = NHEP+1 JMOHEP(1,NHEP+1) = IB(I) JMOHEP(1,NHEP+2) = IB(I) C--setup for decay to leptons ELSE ISTHEP(NHEP+1) = 193 ISTHEP(NHEP+2) = 193 JMOHEP(1,NHEP+1) = IB(I) JMOHEP(1,NHEP+2) = IB(I) JMOHEP(2,NHEP+1) = JMOHEP(1,IB(I)) JMOHEP(2,NHEP+2) = JMOHEP(1,IB(I)) ENDIF C--enter the information in the spin common block IF(SYSPIN) THEN IDSPN(2*I ) = NHEP+1 IDSPN(2*I+1) = NHEP+2 ISNHEP(NHEP+1) = 2*I ISNHEP(NHEP+2) = 2*I+1 ENDIF NHEP=NHEP+2 C--perform the parton shower for the decay products of the gauge boson IF(ID1.LE.12) CALL HWBGEN 3 CONTINUE ENDIF END CDECK ID>, HWDTAU. *CMZ :- -17/10/01 09:42:21 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWDTAU(IOPT,IHEP,POL) C----------------------------------------------------------------------- C HERWIG-TAUOLA interface to perform tau decays using TAUOLA rather C than HERWIG C IOPT =-1 initialises C IOPT = 1 performs decay C IOPT = 2 write outs final TAUOLA information C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IOPT,IHEP,ID,ITAU,I,IMO,NHEPPO DOUBLE PRECISION POL REAL POL1(4) CHARACTER *8 DUMMY C--common block for PHOTOS LOGICAL QEDRAD COMMON /PHOQED/ QEDRAD(NMXHEP) C--common blocks for TAUOLA INTEGER NP1,NP2 COMMON /TAUPOS/ NP1, NP2 DOUBLE PRECISION Q1(4),Q2(4),P1(4),P2(4),P3(4),P4(4) COMMON / MOMDEC / Q1,Q2,P1,P2,P3,P4 C--initialisation IF(IOPT.EQ.-1) THEN C--initialise TAUOLA CALL INIETC(JAK1,JAK2,ITDKRC,IFPHOT) CALL INIMAS CALL INIPHX(0.01d0) CALL INITDK C--generate a decay ELSEIF(IOPT.EQ.1) THEN ISTHEP(IHEP)=195 ID = IDHW(IHEP) IMO = IHEP 1 IMO = JMOHEP(1,IMO) IF(IDHW(IMO).EQ.ID) GOTO 1 C--id of tau for tauola IF(ID.EQ.125) THEN ITAU = 2 NP1 = IHEP NP2 = IHEP ELSEIF(ID.EQ.131) THEN ITAU = 1 NP1 = IHEP NP2 = IHEP ELSE CALL HWWARN('HWDTAU',501) ENDIF C--set up the tau polarization POL1(1) = 0. POL1(2) = 0. POL1(3) = REAL(POL) POL1(4) = 0. C--tau momentum C--three components DO I=1,3 IF(ID.EQ.125) THEN P1(I) =-PHEP(I,IHEP) P2(I) = PHEP(I,IHEP) ELSE P1(I) = PHEP(I,IHEP) P2(I) =-PHEP(I,IHEP) ENDIF C--we measure tau spins in lab frame Q1(I) = ZERO ENDDO C--energies P1(4)=PHEP(4,IHEP) P2(4)=PHEP(4,IHEP) Q1(4)=P1(4)+P2(4) C--perform the decay and generate QED radiation if needed NHEPPO=NHEP CALL DEXAY(ITAU,POL1) IF(IFPHOT.EQ.1) THEN IF(ID.EQ.1) THEN CALL PHOTOS(NP1) ELSE CALL PHOTOS(NP2) ENDIF ENDIF IF(NHEPPO.NE.NHEP) THEN DO 2 I=NHEPPO+1,NHEP CALL HWVEQU(4,VHEP(1,IHEP),VHEP(1,I)) 2 CALL HWUIDT(1,IDHEP(I),IDHW(I),DUMMY) ENDIF C--write out info at end ELSEIF(IOPT.EQ.2) THEN CALL DEXAY(100,POL1) C--otherwise issue warning ELSE CALL HWWARN('HWDTAU',500) ENDIF END CDECK ID>, HWDTHR. *CMZ :- -26/04/91 14.55.44 by Federico Carminati *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWDTHR(P0,P1,P2,P3,WEIGHT) C----------------------------------------------------------------------- C GENERATES THREE-BODY DECAY 0->1+2+3 DISTRIBUTED C ACCORDING TO PHASE SPACE * WEIGHT C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWRGEN,HWRUNI,A,B,C,D,AA,BB,CC,DD,EE,FF,PP,QQ,WW, & RR,PCM1,PC23,WEIGHT,P0(5),P1(5),P2(5),P3(5),P23(5),TWO EXTERNAL HWRGEN,HWRUNI,WEIGHT PARAMETER (TWO=2.D0) A=P0(5)+P1(5) B=P0(5)-P1(5) C=P2(5)+P3(5) IF (B.LT.C) THEN CALL HWWARN('HWDTHR',100) GOTO 999 ENDIF D=ABS(P2(5)-P3(5)) AA=A*A BB=B*B CC=C*C DD=D*D EE=(B-C)*(A-D) A=0.5*(AA+BB) B=0.5*(CC+DD) C=4./(A-B)**2 C C CHOOSE MASS OF SUBSYSTEM 23 WITH PRESCRIBED DISTRIBUTION C 10 FF=HWRUNI(0,BB,CC) PP=(AA-FF)*(BB-FF) QQ=(CC-FF)*(DD-FF) WW=WEIGHT(FF,A,B,C)**2 RR=EE*FF*HWRGEN(0) IF (PP*QQ*WW.LT.RR*RR) GOTO 10 C C FF IS MASS SQUARED OF SUBSYSTEM 23. C C DO 2-BODY DECAYS 0->1+23, 23->2+3 C P23(5)=SQRT(FF) PCM1=SQRT(PP)*0.5/P0(5) PC23=SQRT(QQ)*0.5/P23(5) CALL HWDTWO(P0,P1,P23,PCM1,TWO,.TRUE.) CALL HWDTWO(P23,P2,P3,PC23,TWO,.TRUE.) 999 RETURN END CDECK ID>, HWDTOP. *CMZ :- -09/12/92 11.03.46 by Bryan Webber *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWDTOP(DECAY) C----------------------------------------------------------------------- C DECIDES WHETHER TO DO TOP QUARK DECAY BEFORE HADRONIZATION C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' LOGICAL DECAY DECAY=RMASS(6).GT.130D0 END CDECK ID>, HWDTWO. *CMZ :- -27/01/94 17.38.49 by Mike Seymour *-- Author : Bryan Webber & Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWDTWO(P0,P1,P2,PCM,COSTH,ZAXIS) C----------------------------------------------------------------------- C GENERATES DECAY 0 -> 1+2 C C PCM IS CM MOMENTUM C C COSTH = COS THETA IN P0 REST FRAME (>1 FOR ISOTROPIC) C IF ZAXIS=.TRUE., COS THETA IS MEASURED FROM THE ZAXIS C IF .FALSE., IT IS MEASURED FROM P0'S DIRECTION C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWRUNI,ONE,ZERO,PCM,COSTH,C,S,P0(5),P1(5),P2(5), & PP(5),R(9) LOGICAL ZAXIS EXTERNAL HWRUNI PARAMETER (ZERO=0.D0, ONE=1.D0) C--CHOOSE C.M. ANGLES C=COSTH IF (C.GT.ONE) C=HWRUNI(0,-ONE,ONE) S=SQRT(ONE-C*C) CALL HWRAZM(PCM*S,PP(1),PP(2)) C--PP IS MOMENTUM OF 2 IN C.M. PP(3)=-PCM*C PP(4)=SQRT(P2(5)**2+PCM**2) PP(5)=P2(5) C--ROTATE IF NECESSARY IF (COSTH.LE.ONE.AND..NOT.ZAXIS) THEN CALL HWUROT(P0,ONE,ZERO,R) CALL HWUROB(R,PP,PP) ENDIF C--BOOST FROM C.M. TO LAB FRAME CALL HWULOB(P0,PP,P2) CALL HWVDIF(4,P0,P2,P1) END CDECK ID>, HWDWWT. *CMZ :- -26/04/91 11.11.55 by Bryan Webber *-- Author : Bryan Webber C----------------------------------------------------------------------- FUNCTION HWDWWT(EMSQ,A,B,C) C----------------------------------------------------------------------- C MATRIX ELEMENT SQUARED FOR V-A WEAK DECAY C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWDWWT,EMSQ,A,B,C HWDWWT=(A-EMSQ)*(EMSQ-B)*C END CDECK ID>, HWDHWT. *CMZ :- -26/06/01 14.44.53 by Stefano Moretti *-- Author : Stefano Moretti C----------------------------------------------------------------------- FUNCTION HWDHWT(EMSQ,DUMMYA,DUMMYB,DUMMYC) C----------------------------------------------------------------------- C MATRIX ELEMENT SQUARED FOR C ((V-A)*TB1+(V+A)*CT1)*((V-A)*TB2+(V+A)*CT2)) WEAK DECAY C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' COMMON/FFS/TB,BT COMMON/SFF/IT1,IB1,IT2,IB2 DOUBLE PRECISION TB,BT INTEGER IT1,IB1,IT2,IB2 DOUBLE PRECISION TBH,HBT,CB1,TB1,CB2,TB2 DOUBLE PRECISION DUMMYA,DUMMYB,DUMMYC DOUBLE PRECISION HWDHWT,EMSQ CB1=RMASS(IT1)**2 TB1=RMASS(IB1)**2 CB2=RMASS(IT2)**2 TB2=RMASS(IB2)**2 C use formula (4.52) page 217 of `Higgs Hunter Guide'. TBH=(TB1+CB1-EMSQ)*(TB1*TB*TB+CB1/TB/TB)+4.*TB1*CB1 C use formula (B. 1) page 411 of `Higgs Hunter Guide'. HBT=(EMSQ-TB2-CB2)*(TB2*BT*BT+CB2/BT/BT)-4.*TB2*CB2 HWDHWT=TBH*HBT HWDHWT=ABS(HWDHWT)*SQRT(EMSQ) END CDECK ID>, HWDXLM. *CMZ :- -07/09/00 10:06:23 by Peter Richardson *-- Author : Ian Knowles C----------------------------------------------------------------------- SUBROUTINE HWDXLM(DKVRTX,STAB) C----------------------------------------------------------------------- C Sets STAB=.TRUE. if DKVRTX lies outside the specified region. C Revised 05/09/00 by BRW to put parameters in common C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION DKVRTX(4),RR LOGICAL STAB STAB=.FALSE. RR=DKVRTX(1)**2+DKVRTX(2)**2 IF (IOPDKL.EQ.1) THEN C Cylindrical geometry IF (RR.GE.DXRCYL**2.OR.ABS(DKVRTX(3)).GE.DXZMAX) STAB=.TRUE. ELSEIF (IOPDKL.EQ.2) THEN C Spherical geometry RR=RR+DKVRTX(3)**2 IF (RR.GE.DXRSPH**2) STAB=.TRUE. ELSE C User supplied geometry -- missing CALL HWWARN('HWDXLM',500) ENDIF END CDECK ID>, HWECIR. *CMZ :- -11/05/01 15.44.55 by Mike Seymour *-- Author : Mike Seymour C----------------------------------------------------------------------- FUNCTION HWECIR(Y) C----------------------------------------------------------------------- C INTEGRAND OF BEAMSTRAHLUNG FUNCTION INTEGRATION C NOTE THAT THE JACOBIAN TRANSFORMATION (1-Z)^ETA HAS ETA HARDCODED C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWECIR,Y,Z,ETA,CIRCEE EXTERNAL CIRCEE ETA=0.6D0 Z=1-Y**(1/(1-ETA)) HWECIR=(1-Z)**ETA/(1-ETA)*CIRCEE(Z,-1D0)/SQRT(CIRCEE(-1D0,-1D0)) END CDECK ID>, HWEFIN. *CMZ :- -15/07/02 17.56.53 by Peter Richardson *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWEFIN C----------------------------------------------------------------------- C TERMINAL CALCULATIONS ON ELEMENTARY PROCESS C Modified 28/03/01 by BRW to handle negative weights C Modified 15/07/02 by PR for Les Houches Accord C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER I DOUBLE PRECISION RNWGT,SPWGT,ERWGT C--Les Houches Common Block INTEGER MAXPUP PARAMETER(MAXPUP=100) INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP COMMON /HEPRUP/ IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP), & XMAXUP(MAXPUP),LPRUP(MAXPUP) IF(TAUDEC.EQ.'TAUOLA') CALL HWDTAU(2,0,0.0D0) IF (NWGTS.EQ.0) THEN WRITE (6,1) WRITE (6,10) 10 FORMAT(10X,'NO WEIGHTS GENERATED') RETURN ENDIF C--output Les Houches common block information IF(IPROC.LE.0) THEN C--WRITE THE HEADER WRITE(6,13) WRITE(6,14) C--FOR THE FIRST WEIGHT OPTION CALCULATE THE CROSS SECTION IF(ABS(IDWTUP).EQ.1) THEN DO I=1,NPRUP RNWGT = 1.0D0/DBLE(LHIWGT(I)) LHXSCT(I) = LHWGT(I)*RNWGT LHXERR(I) = SQRT(MAX(LHWGTS(I)*RNWGT-LHXSCT(I)**2,ZERO)) LHXERR(I) = LHXERR(I)*SQRT(RNWGT) LHXSCT(I) = LHXSCT(I)*1.0D3 LHXERR(I) = LHXERR(I)*1.0D3 LHXMAX(I) = LHXMAX(I)*1.0D3 ENDDO C--FOR THE SECOND WEIGHT OPTION THIS WAS AN INPUT ELSEIF(ABS(IDWTUP).EQ.2) THEN DO I=1,NPRUP LHXMAX(I) = LHXMAX(I)*1.0D3 ENDDO ENDIF IF(ABS(IDWTUP).LE.2) THEN AVWGT = ZERO ERWGT = ZERO DO I=1,NPRUP WRITE(6,15) LPRUP(I),LHXSCT(I),LHXERR(I),LHXMAX(I)*1.0D-3, & LHNEVT(I) AVWGT = AVWGT+LHXSCT(I) ERWGT = ERWGT+LHXERR(I)**2 ENDDO AVWGT = AVWGT*1.0D-3 ERWGT = SQRT(ERWGT)*1.0D-3 ELSE RNWGT=1./FLOAT(NWGTS) IF (NEGWTS) AVABW=ABWSUM*RNWGT AVWGT=WGTSUM*RNWGT SPWGT=SQRT(MAX(WSQSUM*RNWGT-AVWGT**2,ZERO)) ERWGT=SPWGT*SQRT(RNWGT) IF (.NOT.NOWGT) WGTMAX=AVWGT IF (WGTMAX.EQ.ZERO) WGTMAX=ONE ENDIF C--STANDARD HERWIG OPTION ELSE RNWGT=1./FLOAT(NWGTS) IF (NEGWTS) AVABW=ABWSUM*RNWGT AVWGT=WGTSUM*RNWGT SPWGT=SQRT(MAX(WSQSUM*RNWGT-AVWGT**2,ZERO)) ERWGT=SPWGT*SQRT(RNWGT) IF (.NOT.NOWGT) WGTMAX=AVWGT IF (WGTMAX.EQ.ZERO) WGTMAX=ONE ENDIF C--PRINT OUT THE INFO WRITE (6,1) 1 FORMAT(/10X,'OUTPUT ON ELEMENTARY PROCESS'/) IF (NEGWTS) THEN WRITE (6,12) NEVHEP,NNEGEV,NWGTS,NNEGWT,AVWGT,SPWGT, & AVABW,WBIGST,WGTMAX,IPROC, & 1000.*AVWGT,1000.*ERWGT,100.*AVWGT/WGTMAX ELSE WRITE (6,11) NEVHEP,NWGTS,AVWGT,SPWGT,WBIGST,WGTMAX, & IPROC, & 1000.*AVWGT,1000.*ERWGT,100.*AVWGT/WGTMAX ENDIF 11 FORMAT(1P, & 10X,'N.B. NEGATIVE WEIGHTS NOT ALLOWED'// & 10X,'NUMBER OF EVENTS = ',I11/ & 10X,'NUMBER OF WEIGHTS = ',I11/ & 10X,'MEAN VALUE OF WGT =',E12.4/ & 10X,'RMS SPREAD IN WGT =',E12.4/ & 10X,'ACTUAL MAX WEIGHT =',E12.4/ & 10X,'ASSUMED MAX WEIGHT =',E12.4// & 10X,'PROCESS CODE IPROC = ',I11/ & 10X,'CROSS SECTION (PB) =',G12.4/ & 10X,'ERROR IN C-S (PB) =',G12.4/ & 10X,'EFFICIENCY PERCENT =',G12.4) 12 FORMAT(1P, & 10X,'N.B. NEGATIVE WEIGHTS ALLOWED'// & 10X,'NUMBER OF EVENTS = ',I11/ & 10X,'NEGATIVE EVENTS = ',I11/ & 10X,'NUMBER OF WEIGHTS = ',I11/ & 10X,'NEGATIVE WEIGHTS = ',I11/ & 10X,'MEAN VALUE OF WGT =',E12.4/ & 10X,'RMS SPREAD IN WGT =',E12.4/ & 10X,'MEAN ABS WEIGHT =',E12.4/ & 10X,'ACTUAL MAX ABS WGT =',E12.4/ & 10X,'ASSUMED MAXABS WGT =',E12.4// & 10X,'PROCESS CODE IPROC = ',I11/ & 10X,'CROSS SECTION (PB) =',G12.4/ & 10X,'ERROR IN C-S (PB) =',G12.4/ & 10X,'EFFICIENCY PERCENT =',G12.4) 13 FORMAT(/1P,10X,'OUTPUT ON LES HOUCHES EVENTS'/) 14 FORMAT(/1P,5X,' PROC CODE',1X,' XSECT(pb) ',1X, & ' XERR(pb) ',1X,' Max wgt(nb)',1X,'No. of events'/) 15 FORMAT(5X,I7,E15.5,1X,E15.5,1X,E15.5,2X,I7) END CDECK ID>, HWEGAM. *CMZ :- -26/04/91 11.11.55 by Bryan Webber *-- Author : Bryan Webber & Luca Stanco C----------------------------------------------------------------------- SUBROUTINE HWEGAM(IHEP,ZMI,ZMA,WWA) C----------------------------------------------------------------------- C GENERATES A PHOTON IN WEIZSACKER-WILLIAMS (WWA=.TRUE.) OR C ELSE EQUIVALENT PHOTON APPROX FROM INCOMING E+, E-, MU+ OR MU- C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,HWRUNI,EGMIN,ZMIN,ZMAX,ZGAM,SS,ZMI,ZMA, & PPL,PMI,QT2,Q2,QQMIN,QQMAX,S0,A INTEGER IHEP,IHADIS LOGICAL WWA EXTERNAL HWRGEN,HWRUNI SAVE EGMIN DATA EGMIN/5.D0/ IF (IERROR.NE.0) RETURN IF (IHEP.LT.1.OR.IHEP.GT.2) CALL HWWARN('HWEGAM',500) SS=PHEP(5,3) IF (IHEP.EQ.1) THEN IHADIS=2 ELSE IHADIS=1 IF (JDAHEP(1,IHADIS).NE.0) IHADIS=JDAHEP(1,IHADIS) ENDIF C---DEFINE LIMITS FOR GAMMA MOMENTUM FRACTION IF (ZMI.LE.ZERO .OR. ZMA.GT.ONE) THEN CALL HWEGAS(S0) IF (S0.GT.ZERO) THEN S0 = (SQRT(S0)+ABS(PHEP(5,IHADIS)))**2-PHEP(5,IHADIS)**2 S0 = MAX(S0,WHMIN**2) ZMIN = S0 / (SS**2 - PHEP(5,IHEP)**2 - PHEP(5,IHADIS)**2) ZMAX = ONE ELSE C---UNKNOWN PROCESS: USE ENERGY CUTOFF, AND WARN USER IF (FSTWGT) CALL HWWARN('HWEGAM',1) ZMIN = EGMIN / PHEP(4,IHEP) ZMAX = ONE ENDIF ELSE ZMIN=ZMI ZMAX=ZMA ENDIF C---APPLY USER DEFINED CUTS YWWMIN,YWWMAX AND INDIRECT LIMITS ON Z IF (.NOT.WWA) THEN ZMIN=MAX(ZMIN,YWWMIN,SQRT(Q2WWMN)/ABS(PHEP(3,IHEP))) ZMAX=MIN(ZMAX,YWWMAX) ELSE ZMAX=MIN(ZMAX,1-PHEP(5,IHEP)/PHEP(4,IHEP)) ENDIF IF (ZMIN.GE.ZMAX) THEN GAMWT=ZERO RETURN ENDIF C---GENERATE GAMMA MOMENTUM FRACTION A=HALF 10 IF (HWRGEN(2).LT.A) THEN ZGAM=(ZMIN/ZMAX)**HWRGEN(1)*ZMAX ELSE ZGAM=(ZMAX-ZMIN)*HWRGEN(1)+ZMIN ENDIF GAMWT = GAMWT * .5*ALPHEM/PIFAC * + (1+(1-ZGAM)**2)/(A/LOG(ZMAX/ZMIN)+(1-A)/(ZMAX-ZMIN)*ZGAM) IF (WWA) THEN GAMWT = GAMWT * LOG((ONE-ZGAM)/ZGAM*(SS/PHEP(5,IHEP))**2) ELSE C---Q2WWMN AND Q2WWMX ARE USER-DEFINED LIMITS IN THE Q**2 INTEGRATION QQMAX=MIN(Q2WWMX,(ZGAM*PHEP(3,IHEP))**2) QQMIN=MAX(Q2WWMN,(PHEP(5,IHEP)*ZGAM)**2/(1.-ZGAM)) IF (QQMIN.GT.QQMAX) THEN CALL HWWARN('HWEGAM',50) GOTO 10 ENDIF Q2=EXP(HWRUNI(0,LOG(QQMIN),LOG(QQMAX))) GAMWT = GAMWT * LOG(QQMAX/QQMIN) ENDIF IF (GAMWT.LT.ZERO) GAMWT=ZERO C---FILL PHOTON NHEP=NHEP+1 IDHW(NHEP)=59 ISTHEP(NHEP)=3 IDHEP(NHEP)=22 JMOHEP(1,NHEP)=IHEP JMOHEP(2,NHEP)=0 JDAHEP(1,NHEP)=0 JDAHEP(2,NHEP)=0 JDAHEP(1,IHEP)=NHEP IF (WWA) THEN C---FOR COLLINEAR KINEMATICS, ZGAM IS THE ENERGY FRACTION PHEP(4,NHEP)=PHEP(4,IHEP)*ZGAM PHEP(3,NHEP)=PHEP(3,IHEP)-SIGN(SQRT( & (PHEP(4,IHEP)-PHEP(4,NHEP))**2-PHEP(5,IHEP)**2),PHEP(3,IHEP)) PHEP(2,NHEP)=0 PHEP(1,NHEP)=0 CALL HWUMAS(PHEP(1,NHEP)) ELSE C---FOR EXACT KINEMATICS, ZGAM IS TAKEN TO BE FRACTION OF (E+PZ) PPL=ZGAM*(ABS(PHEP(3,IHEP))+PHEP(4,IHEP)) QT2=(ONE-ZGAM)*Q2-(ZGAM*PHEP(5,IHEP))**2 PMI=(QT2-Q2)/PPL PHEP(5,NHEP)=-SQRT(Q2) PHEP(4,NHEP)=(PPL+PMI)/TWO PHEP(3,NHEP)=SIGN((PPL-PMI)/TWO,PHEP(3,IHEP)) CALL HWRAZM(SQRT(QT2),PHEP(1,NHEP),PHEP(2,NHEP)) ENDIF C---UPDATE OVERALL CM FRAME JMOHEP(IHEP,3)=NHEP CALL HWVDIF(4,PHEP(1,3),PHEP(1,IHEP),PHEP(1,3)) CALL HWVSUM(4,PHEP(1,NHEP),PHEP(1,3),PHEP(1,3)) CALL HWUMAS(PHEP(1,3)) C---FILL OUTGOING LEPTON NHEP=NHEP+1 IDHW(NHEP)=IDHW(IHEP) ISTHEP(NHEP)=1 IDHEP(NHEP)=IDHEP(IHEP) JMOHEP(1,NHEP)=IHEP JMOHEP(2,NHEP)=0 JDAHEP(1,NHEP)=0 JDAHEP(2,NHEP)=0 JDAHEP(2,IHEP)=NHEP CALL HWVDIF(4,PHEP(1,IHEP),PHEP(1,NHEP-1),PHEP(1,NHEP)) PHEP(5,NHEP)=PHEP(5,IHEP) END CDECK ID>, HWEGAS. *CMZ :- -18/04/04 10.45.55 by Mike Seymour *-- Author : Bryan Webber & Luca Stanco C----------------------------------------------------------------------- SUBROUTINE HWEGAS(S0) C----------------------------------------------------------------------- C FIND MINIMUM INVARIANT MASS SQUARED NEEDED FOR HARD PROCESS, S0 C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION S0,RPM(2) INTEGER HQ,I IF (IPRO.EQ.13.OR.IPRO.EQ.14) THEN S0 = EMMIN**2 ELSEIF(IPRO.EQ.15.OR.IPRO.EQ.18.OR.IPRO.EQ.22.OR.IPRO.EQ.24.OR. & IPRO.EQ.50.OR.IPRO.EQ.53.OR.IPRO.EQ.55)THEN S0 = 4.D0*PTMIN**2 ELSEIF (IPRO.EQ.17.OR.IPRO.EQ.51) THEN HQ = MOD(IPROC,100) S0 = 4.D0*(PTMIN**2+RMASS(HQ)**2) ELSEIF (IPRO.EQ.16.OR.IPRO.EQ.19.OR. & IPRO.EQ.25.OR.IPRO.EQ.26.OR.IPRO.EQ.27.OR. & IPRO.EQ.95) THEN S0 = MAX(2*RMASS(1),RMASS(201)-GAMMAX*GAMH)**2 ELSEIF ((IPRO.EQ.31).OR.(IPRO.EQ.32)) THEN S0 = MAX(2*RMASS(1),RMASS(201+IHIGGS))**2 ELSEIF (IPRO.EQ.33) THEN IF((MOD(IPROC,10000).EQ.3350).OR. & (MOD(IPROC,10000).EQ.3355))THEN S0 = MAX(2*RMASS(1),RMASS(206))**2 ELSEIF(MOD(IPROC,10000).EQ.3315)THEN S0 = MAX(2*RMASS(1),RMASS(206),RMASS(203))**2 ELSEIF(MOD(IPROC,10000).EQ.3325)THEN S0 = MAX(2*RMASS(1),RMASS(206),RMASS(204))**2 ELSEIF(MOD(IPROC,10000).EQ.3335)THEN S0 = MAX(2*RMASS(1),RMASS(206),RMASS(205))**2 ELSEIF(MOD(IPROC,10000).EQ.3365)THEN S0 = MAX(2*RMASS(1),RMASS(205),RMASS(203))**2 ELSEIF(MOD(IPROC,10000).EQ.3375)THEN S0 = MAX(2*RMASS(1),RMASS(205),RMASS(204))**2 ELSE S0 = MAX(2*RMASS(1),RMASS(201+IHIGGS))**2 END IF ELSEIF ((IPRO.EQ.34).OR.(IPRO.EQ.35)) THEN S0 = MAX(RMASS(5),RMASS(201+IHIGGS))**2 ELSEIF (IPRO.EQ.36.OR.IPRO.EQ.37) THEN S0 = MAX(2*RMASS(1),RMASS(201+IHIGGS))**2 ELSEIF (IPRO.EQ.38) THEN IF((MOD(IPROC,10000).EQ.3839).OR. & (MOD(IPROC,10000).EQ.3869).OR. & (MOD(IPROC,10000).EQ.3899))THEN S0 = MAX(RMASS(6),RMASS(206))**2 ELSE S0 = RMASS(201+IHIGGS)**2 END IF ELSEIF (IPRO.EQ.23) THEN S0 = MAX(2*RMASS(1),RMASS(201)-GAMMAX*GAMH)**2 S0 = (PTMIN+SQRT(PTMIN**2+S0))**2 ELSEIF (IPRO.EQ.20) THEN S0 = RMASS(6)**2 ELSEIF (IPRO.EQ.21) THEN S0 = (PTMIN+SQRT(PTMIN**2+RMASS(198)**2))**2 C--PR MOD 7/7/99 ELSEIF (IPRO.EQ.30) THEN S0 = 4.0D0*(PTMIN**2+RMMNSS**2) ELSEIF(IPRO.EQ.40.OR.IPRO.EQ.41) THEN HQ = MOD(IPROC,100) RPM(1) = RMMNSS RPM(2) = ZERO IF(HQ.GE.10.AND.HQ.LT.20) THEN RPM(1) = ABS(RMASS(450)) IF(HQ.GT.10) RPM(1) = ABS(RMASS(449+MOD(HQ,10))) ELSEIF(HQ.GE.20.AND.HQ.LT.30) THEN RPM(1) = ABS(RMASS(454)) IF(HQ.GT.20) RPM(1) = ABS(RMASS(453+MOD(HQ,20))) ELSEIF(HQ.EQ.30) THEN RPM(1) = RMASS(449) ELSEIF(HQ.EQ.40) THEN IF(IPRO.EQ.40) THEN RPM(1) = RMASS(425) DO I=1,5 RPM(1) = MIN(RPM(1),RMASS(425+I)) ENDDO ELSE RPM(1) = MIN(RMASS(405),RMASS(406)) ENDIF RPM(2) = RMASS(198) ELSEIF(HQ.EQ.50) THEN IF(IPRO.EQ.40) THEN RPM(1) = RMASS(425) DO I=1,5 RPM(1) = MIN(RPM(1),RMASS(425+I)) ENDDO DO I=1,3 RPM(2) = MIN(RPM(1),RMASS(433+2*I)) ENDDO RPM(1) = MIN(RPM(1),RPM(2)) RPM(2) = RMASS(203) DO I=1,2 RPM(2) = MIN(RPM(2),RMASS(204+I)) ENDDO ELSE RPM(1) = RMASS(401) RPM(2) = RMASS(413) DO I=1,5 RPM(1) = MIN(RPM(1),RMASS(401+I)) RPM(2) = MIN(RPM(2),RMASS(413+I)) ENDDO RPM(1) = MIN(RPM(1),RPM(2)) RPM(2) = RMASS(203) DO I=1,2 RPM(2) = MIN(RPM(2),RMASS(204+I)) ENDDO ENDIF RPM(2) = RMASS(203) DO I=1,2 RPM(2) = MIN(RPM(2),RMASS(204+I)) ENDDO ELSEIF(HQ.GE.60) THEN RPM(1) = ZERO ENDIF RPM(1) = RPM(1)**2 RPM(2) = RPM(2)**2 S0 = RPM(1)+RPM(2)+TWO*(PTMIN**2+ & SQRT(RPM(1)*RPM(2)+PTMIN**2*(RPM(1)+RPM(2)+PTMIN**2))) C--end of mod C--PR MOD 9/9/00 ELSEIF (IPRO.EQ.42) THEN S0 = EMMIN**2 ELSEIF (IPRO.EQ.52) THEN HQ = MOD(IPROC,100) S0 = (PTMIN+SQRT(PTMIN**2+RMASS(HQ)**2))**2 ELSEIF (IPRO.EQ.60) THEN HQ = MOD(IPROC,100) IF (HQ.EQ.0) THEN S0 = 4.D0*PTMIN**2 ELSE IF (HQ.GT.6) HQ=2*HQ+107 IF (HQ.EQ.127) HQ=198 S0 = 4.D0*(PTMIN**2+RMASS(HQ)**2) ENDIF ELSEIF (IPRO.EQ.80) THEN S0 = WHMIN**2 ELSEIF (IPRO.EQ.90) THEN S0 = Q2MIN ELSEIF (IPRO.EQ.91.OR.IPRO.EQ.92) THEN S0 = Q2MIN+4.D0*PTMIN**2 HQ = MOD(IPROC,100) IF (HQ.GT.0) S0 = S0+4.D0*RMASS(HQ)**2 IF (IPRO.EQ.91) S0 = MAX(S0,EMMIN**2) ELSE S0 = 0 ENDIF END CDECK ID>, HWEINI. *CMZ :- -26/04/91 12.42.30 by Federico Carminati *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWEINI C----------------------------------------------------------------------- C INITIALISES ELEMENTARY PROCESS C Modified 28/03/01 by BRW to handle negative weights C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRSET,DUMMY,SAFETY EXTERNAL HWRSET PARAMETER (SAFETY=1.001) INTEGER NBSH,I C---NO OF WEIGHT GENERATED NWGTS=0 NNEGWT=0 C---ACCUMULATED WEIGHTS WGTSUM=ZERO ABWSUM=ZERO C---ACCUMULATED WEIGHT-SQUARED WSQSUM=ZERO C---CURRENT MAX WEIGHT WBIGST=ZERO C---LAST VALUE OF SCALE EMLST=ZERO C---NUMBER OF ERRORS REPORTED NUMER=0 C---NUMBER OF ERRORS UNREPORTED NUMERU=0 C---FIND MAXIMUM ABSOLUTE WEIGHT IN CASES WHERE THIS IS REQUIRED IF (NOWGT) THEN IF (WGTMAX.EQ.ZERO.AND.IPROC.GT.0) THEN NBSH=IBSH DUMMY = HWRSET(IBRN) WRITE(6,10) IPROC,IBRN,NBSH 10 FORMAT(/10X,'INITIAL SEARCH FOR MAX WEIGHT'// & 10X,'PROCESS CODE IPROC = ',I11/ & 10X,'RANDOM NO. SEED 1 = ',I11/ & 10X,' SEED 2 = ',I11/ & 10X,'NUMBER OF SHOTS = ',I11) NEVHEP=0 DO 11 I=1,NBSH CALL HWEPRO 11 CONTINUE WRITE(6,20) 20 FORMAT(/10X,'INITIAL SEARCH FINISHED') IF (WBIGST*NWGTS.LT.SAFETY*WGTSUM) & WGTMAX=SAFETY*WBIGST CALL HWEFIN NWGTS=0 NNEGWT=0 WGTSUM=ZERO WSQSUM=ZERO ABWSUM=ZERO WBIGST=ZERO ELSE WRITE(6,21) AVWGT,WGTMAX 21 FORMAT(/1P,10X,'INPUT EVT WEIGHT =',E12.4/ & 10X,'INPUT MAX WEIGHT =',E12.4) ENDIF ENDIF C---RESET RANDOM NUMBER DUMMY = HWRSET(NRN) ISTAT=5 END CDECK ID>, HWEISR. *CMZ :- -01/04/99 19.55.17 by Mike Seymour *-- Author : Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWEISR(IHEP) C----------------------------------------------------------------------- C GENERATES AN ISR PHOTON FROM INCOMING E+, E-, MU+ OR MU- C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION CIRCKP(2) COMMON /HWCIR2/CIRCKP DOUBLE PRECISION HWRGEN,QSQMAX,QSQMIN,A,B,B1,B2,B3,B4,B5,B6,B7,B8, $ R,AA,T0,T1,C1,C2,T,Z(2),QSQ(2),PHI(2),C,NWID,NMASS INTEGER IHEP,I,J EXTERNAL HWRGEN SAVE Z,QSQ,PHI C---IF ZMXISR IS ZERO, THERE CAN BE NO ISR IF (ZMXISR.EQ.ZERO.OR.(IPRO.GT.3.AND.IPRO.LT.6) & .OR.IPRO.GT.12.OR.IPROC.EQ.850) RETURN C---CHECK CONSISTENCY OF TMNISR AND ZMXISR IF (ZMXISR**2.LT.TMNISR) CALL HWWARN('HWEISR',200) C---CALCULATE VIRTUALITY LIMITS QSQMAX=4*PHEP(4,IHEP)**2 QSQMIN=PHEP(5,IHEP)**2 C---AND THEREFORE THE Z DEPENDENCE A=ALPHEM/PIFAC B=A*(LOG(QSQMAX/QSQMIN)-1) C---DECIDE HOW MUCH WEIGHT TO GIVE THE Z RESONANCE IF (IHEP.EQ.1) THEN IF (IPRO.EQ.1.OR.IPRO.EQ.6.OR.IPRO.EQ.8) THEN AA=10 ELSEIF (IPRO.EQ.2) THEN AA=0 ELSEIF (IPRO.EQ.3.OR.IPRO.EQ.7.OR.IPRO.EQ.10.OR.IPRO.EQ.11) THEN AA=1 ELSEIF (IPRO.EQ.9) THEN AA=0 IF((MOD(IPROC,10000).EQ.960).OR. & (MOD(IPROC,10000).EQ.970))THEN AA=1 ELSE CONTINUE ENDIF ELSE RETURN ENDIF C--set up the parameters for the resonance IF(IPRO.NE.8) THEN C--first the standard parameters if smoothing the Z resonance T0=RMASS(200)**2/QSQMAX T1=GAMZ*RMASS(200)/QSQMAX ELSE C--now the parameters for a resonant sneutrino in RPV C--uses the average of the muon and tau sneutrino mass and either the C--larger width or the difference in masses (whichever is larger) NMASS = HALF*(RMASS(428)+RMASS(430)) NWID = MAX(HBAR/RLTIM(428),HBAR/RLTIM(430)) NWID = MAX(NWID,ABS(RMASS(428)-RMASS(430))) T0 = NMASS**2/QSQMAX T1 = NWID*NMASS/QSQMAX ENDIF IF (T0.GT.ONE) THEN T0=0 AA=0 ENDIF AA=AA*(1-T0) C---GENERATE A T VALUE BETWEEN TMNISR AND 1 ACCORDING TO: C ( b**2*log(zmxisr**2/t)/t + 2*b*(1-(1-zmxisr)**b)*((1-t)**(2*b-1)+1/t C +(1-t0)**(2b-1)*aa*t1/((t-t0)**2+t1**2)) ) *theta(zmxisr**2-t) C +( 2*b*(1-zmxisr)**b*((1-t)**(b-1)+1/t C +(1-t0)**(b-1)*aa*t1/((t-t0)**2+t1**2)) ) *theta(zmxisr-t) C +( (1-zmxisr)**(2*b) ) *delta(1-t) B1=(1-ZMXISR)**(2*B) B2=B1+2*(1-ZMXISR)**B*((1-TMNISR)**B-(1-ZMXISR)**B) B3=B2+2*B*(1-ZMXISR)**B*LOG(ZMXISR/TMNISR) B4=B3+2*B*(1-ZMXISR)**B*AA*(1-T0)**(B-1) $ *(ATAN((ZMXISR-T0)/T1)-ATAN((TMNISR-T0)/T1)) B5=B4+(1-(1-ZMXISR)**B)*((1-TMNISR)**(2*B)-(1-ZMXISR**2)**(2*B)) B6=B5+2*B*(1-(1-ZMXISR)**B)*LOG(ZMXISR**2/TMNISR) B7=B6+B**2*LOG(ZMXISR**2/TMNISR)**2/2 B8=B7+2*B*(1-(1-ZMXISR)**B)*AA*(1-T0)**(2*B-1) $ *(ATAN((ZMXISR**2-T0)/T1)-ATAN((TMNISR-T0)/T1)) R=B8*HWRGEN(0) IF (R.LE.B1) THEN C---NEITHER EMITS T=1 GAMWT=GAMWT*B8/B1 Z(1)=1 ELSEIF (R.LE.B4) THEN C---ONE EMITS IF (R.LE.B2) THEN R=(R-B1)/(B2-B1) T=1-(1-TMNISR)*(1-R*(1-((1-ZMXISR)/(1-TMNISR))**B))**(1/B) ELSEIF (R.LE.B3) THEN R=(R-B2)/(B3-B2) T=(TMNISR/ZMXISR)**R*ZMXISR ELSE R=(R-B3)/(B4-B3) T=T0+T1*TAN( $ ATAN((ZMXISR-T0)/T1)*R+ATAN((TMNISR-T0)/T1)*(1-R)) ENDIF GAMWT=GAMWT*B8/(2*B*(1-ZMXISR)**B*((1-T)**(B-1)+1/T+ $ (1-T0)**(B-1)*AA*T1/((T-T0)**2+T1**2))) Z(1)=1 IF (HWRGEN(1).GT.HALF) Z(1)=T GAMWT=GAMWT*2 ELSE C---BOTH EMIT IF (R.LE.B5) THEN R=(R-B4)/(B5-B4) T=1-(1-TMNISR)* $ (1-R*(1-((1-ZMXISR**2)/(1-TMNISR))**(2*B)))**(.5/B) ELSEIF (R.LE.B6) THEN R=(R-B5)/(B6-B5) T=(TMNISR/ZMXISR**2)**R*ZMXISR**2 ELSEIF (R.LE.B7) THEN R=(R-B6)/(B7-B6) T=(TMNISR/ZMXISR**2)**SQRT(R)*ZMXISR**2 ELSE R=(R-B7)/(B8-B7) T=T0+T1*TAN( $ ATAN((ZMXISR**2-T0)/T1)*R+ATAN((TMNISR-T0)/T1)*(1-R)) ENDIF GAMWT=GAMWT*B8/(B**2*LOG(ZMXISR**2/T)/T $ + 2*B*(1-(1-ZMXISR)**B)*((1-T)**(2*B-1)+1/T+ $ (1-T0)**(B-1)*AA*T1/((T-T0)**2+T1**2))) C---GENERATE A Z VALUE BETWEEN T/ZMXISR AND ZMXISR ACCORDING TO: C 1/z+(1-z)**(b-1)+t/z**2*(1-t/z)**(b-1) C1=LOG(ZMXISR**2/T) C2=C1+2/B*((1-T/ZMXISR)**B-(1-ZMXISR)**B) IF (C2.GT.ZERO) THEN R=C2*HWRGEN(4) IF (R.LE.C1) THEN Z(1)=(T/ZMXISR**2)**HWRGEN(5)*ZMXISR ELSE Z(1)=1-(1-T/ZMXISR)* $ (1-HWRGEN(6)*(1-((1-ZMXISR)/(1-T/ZMXISR))**B))**(1/B) IF (2*R.LE.C2+C1) Z(1)=T/Z(1) ENDIF ELSE Z(1)=SQRT(T) ENDIF GAMWT=GAMWT*C2/Z(1) $ /(1/Z(1)+(1-Z(1))**(B-1)+T/Z(1)**2*(1-T/Z(1))**(B-1)) ENDIF C---INCLUDE DISTRIBUTION FUNCTIONS Z(2)=T/Z(1) DO 10 I=1,2 IF (Z(I).GT.ZMXISR) THEN Z(I)=1 CIRCKP(I)=(1-ZMXISR)**B*EXP(3*B/4)*(1-B**2*PIFAC**2/12) ELSE CIRCKP(I)=(B*(1-Z(I))**(B-1)*(1+Z(I)**2)/2 $ *EXP(B*Z(I)/2*(1+Z(I)/2))*(1-B**2*PIFAC**2/12) $ +B**2/8*((1+Z(I))*((1+Z(I))**2+3*LOG(Z(I))) $ -4*LOG(Z(I))/(1-Z(I)))) ENDIF GAMWT=GAMWT*CIRCKP(I) 10 CONTINUE C---CHOOSE BOTH QSQ VALUES DO 30 I=1,2 IF (Z(I).GT.ZMXISR .OR. COLISR) THEN QSQ(I)=0 ELSE J=3-I C---ACCORDING TO 1/(QSQ+QSQMIN) FROM 0 TO (1-Z)*(T/(Z+T))*QSQMAX 20 QSQ(I)=(((1-Z(I))*(T/(Z(I)+T)) $ *QSQMAX/QSQMIN+1)**HWRGEN(7)-1)*QSQMIN C---AND REJECT TO QSQ/(QSQ+QSQMIN)**2 IF (HWRGEN(8)*(QSQ(I)+QSQMIN).GT.QSQ(I)) GOTO 20 ENDIF 30 CONTINUE C---CHOOSE BOTH AZIMUTHS PHI(1)=HWRGEN(9)*2*PIFAC PHI(2)=HWRGEN(10)*2*PIFAC C---USE S-HAT PRESCRIPTION TO MODIFY Z VALUES I=0 IF ((1-Z(1))*QSQ(1).GT.(1-Z(2))*QSQ(2)) I=1 IF ((1-Z(2))*QSQ(2).GT.(1-Z(1))*QSQ(1)) I=2 IF (I.GT.0) THEN J=3-I Z(I)=Z(I)+QSQ(I)/QSQMAX IF (QSQ(J).GT.ZERO) THEN Z(J)=((QSQ(I)*QSQMAX+QSQ(J)*QSQMAX $ -QSQ(I)*QSQ(J))/QSQMAX**2+T)/Z(I) C=COS(PHI(1)-PHI(2))*SQRT(QSQ(1)*QSQ(2))/QSQMAX Z(J)=Z(J)+(-2*C**2*(1-Z(I))+2*C*SQRT((1-Z(I)) $ *(C**2*(1-Z(I))+Z(I)**2*(1-Z(J)))))/Z(I)**2 ENDIF ENDIF ELSEIF (IHEP.EQ.2) THEN C---EVERYTHING WAS GENERATED LAST TIME ELSE C---ROUTINE CALLED UNEXPECTEDLY CALL HWWARN('HWEISR',201) ENDIF C---IF Z IS TOO LARGE THERE IS NO EMISSION IF (Z(IHEP).GT.ZMXISR) RETURN C---PUT NEW LEPTON IN EVENT RECORD NHEP=NHEP+1 IDHW(NHEP)=IDHW(IHEP) IDHEP(NHEP)=IDHEP(IHEP) ISTHEP(NHEP)=3 JMOHEP(1,NHEP)=IHEP JMOHEP(2,NHEP)=0 JDAHEP(1,NHEP)=0 JDAHEP(2,NHEP)=0 JDAHEP(1,IHEP)=NHEP C---AND OUTGOING PHOTON NHEP=NHEP+1 IDHW(NHEP)=59 IDHEP(NHEP)=22 ISTHEP(NHEP)=1 JMOHEP(1,NHEP)=IHEP JMOHEP(2,NHEP)=0 JDAHEP(1,NHEP)=0 JDAHEP(2,NHEP)=0 JDAHEP(2,IHEP)=NHEP C---RECONSTRUCT PHOTON KINEMATICS (Z IS LIGHT-CONE MOMENTUM FRACTION) PHEP(1,NHEP)=SQRT(QSQ(IHEP)*(1-Z(IHEP)))*COS(PHI(IHEP)) PHEP(2,NHEP)=SQRT(QSQ(IHEP)*(1-Z(IHEP)))*SIN(PHI(IHEP)) PHEP(3,NHEP)=(1-Z(IHEP))*PHEP(4,IHEP)-QSQ(IHEP)/(4*PHEP(4,IHEP)) IF (IHEP.EQ.2) PHEP(3,NHEP)=-PHEP(3,NHEP) PHEP(4,NHEP)=(1-Z(IHEP))*PHEP(4,IHEP)+QSQ(IHEP)/(4*PHEP(4,IHEP)) PHEP(5,NHEP)=0 C---AND LEPTON CALL HWVDIF(4,PHEP(1,IHEP),PHEP(1,NHEP),PHEP(1,NHEP-1)) CALL HWUMAS(PHEP(1,NHEP-1)) C---UPDATE OVERALL CM FRAME JMOHEP(IHEP,3)=NHEP-1 CALL HWVDIF(4,PHEP(1,3),PHEP(1,IHEP),PHEP(1,3)) CALL HWVSUM(4,PHEP(1,NHEP-1),PHEP(1,3),PHEP(1,3)) CALL HWUMAS(PHEP(1,3)) END CDECK ID>, HWEONE. *CMZ :- -26/04/91 11.11.55 by Bryan Webber *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWEONE C----------------------------------------------------------------------- C SETS UP 2->1 (COLOUR SINGLET) HARD SUBPROCESS C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION PA INTEGER ICMF,I,IBM,IHEP C---INCOMING LINES ICMF=NHEP+3 DO 15 I=1,2 IBM=I C---FIND BEAM AND TARGET IF (JDAHEP(1,I).NE.0) IBM=JDAHEP(1,I) IHEP=NHEP+I IDHW(IHEP)=IDN(I) IDHEP(IHEP)=IDPDG(IDN(I)) ISTHEP(IHEP)=110+I JMOHEP(1,IHEP)=ICMF JMOHEP(I,ICMF)=IHEP JDAHEP(1,IHEP)=ICMF C---SPECIAL - IF INCOMING PARTON IS INCOMING BEAM THEN COPY IT IF (XX(I).EQ.ONE.AND.IDHW(IBM).EQ.IDN(I)) THEN CALL HWVEQU(5,PHEP(1,IBM),PHEP(1,IHEP)) IF (I.EQ.2) PHEP(3,IHEP)=-PHEP(3,IHEP) ELSE PHEP(1,IHEP)=0. PHEP(2,IHEP)=0. PHEP(5,IHEP)=RMASS(IDN(I)) PA=XX(I)*(PHEP(4,IBM)+ABS(PHEP(3,IBM))) PHEP(4,IHEP)=0.5*(PA+PHEP(5,IHEP)**2/PA) PHEP(3,IHEP)=PA-PHEP(4,IHEP) ENDIF 15 CONTINUE PHEP(3,NHEP+2)=-PHEP(3,NHEP+2) C---HARD CENTRE OF MASS IDHW(ICMF)=IDCMF IDHEP(ICMF)=IDPDG(IDCMF) ISTHEP(ICMF)=110 CALL HWVSUM(4,PHEP(1,NHEP+1),PHEP(1,NHEP+2),PHEP(1,ICMF)) CALL HWUMAS(PHEP(1,ICMF)) C---SET UP COLOUR STRUCTURE LABELS JMOHEP(2,NHEP+1)=NHEP+2 JDAHEP(2,NHEP+1)=NHEP+2 JMOHEP(2,NHEP+2)=NHEP+1 JDAHEP(2,NHEP+2)=NHEP+1 JDAHEP(1,NHEP+3)=NHEP+3 JDAHEP(2,NHEP+3)=NHEP+3 NHEP=NHEP+3 END CDECK ID>, HWEPRO. *CMZ :- -15/07/02 17.56.53 by Peter Richardson *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWEPRO C----------------------------------------------------------------------- C WHEN NEVHEP=0, CHOOSES X VALUES AND FINDS WEIGHT FOR PROCESS IPROC C OTHERWISE, CHOOSES AND LOADS ALL VARIABLES FOR HARD PROCESS C modifications for Les Houches accord by PR (7/15/02) C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION CIRCKP(2) COMMON /HWCIR2/CIRCKP DOUBLE PRECISION Z1,Z2,C1,C2,B1,B2,CIRCEE,CIRCGG,RS,MISS,ETA, $ HWUGAU,HWECIR,QMX1,QMN1,QMX2,QMN2,TEST INTEGER IHAD SAVE MISS DOUBLE PRECISION HWRGEN EXTERNAL HWRGEN,HWECIR C--Les Houches Common Block INTEGER MAXPUP PARAMETER(MAXPUP=100) INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP COMMON /HEPRUP/ IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP), & XMAXUP(MAXPUP),LPRUP(MAXPUP) IF (IERROR.NE.0) RETURN C--pick the type of event to generate if using Les Houches accord C--first choice according to maxiumum weight IF(IPROC.LT.0) THEN IF(ABS(IDWTUP).EQ.1) THEN IF(ITYPLH.EQ.0) THEN TEST = HWRGEN(1)*LHMXSM DO ITYPLH=1,NPRUP IF(TEST.LE.ABS(LHXMAX(ITYPLH))) GOTO 5 TEST = TEST-ABS(LHXMAX(ITYPLH)) ENDDO 5 WGTMAX = ABS(LHXMAX(ITYPLH)) WBIGST = ABS(LHXMAX(ITYPLH)) ENDIF C--second choice according to cross section ELSEIF(ABS(IDWTUP).EQ.2) THEN IF(ITYPLH.EQ.0) THEN TEST = HWRGEN(1)*LHMXSM DO ITYPLH=1,NPRUP IF(TEST.LE.ABS(LHXSCT(ITYPLH))) GOTO 6 TEST = TEST-ABS(LHXSCT(ITYPLH)) ENDDO 6 WGTMAX = ABS(LHXMAX(ITYPLH)) WBIGST = ABS(LHXMAX(ITYPLH)) ENDIF ELSE WGTMAX = 1.0D0 WBIGST = 1.0D0 ITYPLH = 1 ENDIF ENDIF C---ROUTINE LOOPS BACK TO HERE IF GENERATED WEIGHT WAS NOT ACCEPTED 10 GENEV=.FALSE. C---FSTWGT IS .TRUE. DURING FIRST CALL TO HARD PROCESS ROUTINE FSTWGT=NWGTS.EQ.0 C---FSTEVT IS .TRUE. THROUGHOUT THE FIRST EVENT FSTEVT=NEVHEP.EQ.1 C---SET COLOUR CORRECTION TO FALSE COLUPD = .FALSE. HRDCOL(1,1)=0 HRDCOL(1,3)=0 C---SET UP INITIAL STATE NHEP=1 ISTHEP(NHEP)=101 PHEP(1,NHEP)=0. PHEP(2,NHEP)=0. PHEP(3,NHEP)=PBEAM1 PHEP(4,NHEP)=EBEAM1 PHEP(5,NHEP)=RMASS(IPART1) JMOHEP(1,NHEP)=0 JMOHEP(2,NHEP)=0 JDAHEP(1,NHEP)=0 JDAHEP(2,NHEP)=0 IDHW(NHEP)=IPART1 IDHEP(NHEP)=IDPDG(IPART1) NHEP=NHEP+1 ISTHEP(NHEP)=102 PHEP(1,NHEP)=0. PHEP(2,NHEP)=0. PHEP(3,NHEP)=-PBEAM2 PHEP(4,NHEP)=EBEAM2 PHEP(5,NHEP)=RMASS(IPART2) JMOHEP(1,NHEP)=0 JMOHEP(2,NHEP)=0 JDAHEP(1,NHEP)=0 JDAHEP(2,NHEP)=0 IDHW(NHEP)=IPART2 IDHEP(NHEP)=IDPDG(IPART2) C---NEXT ENTRY IS OVERALL CM FRAME NHEP=NHEP+1 IDHW(NHEP)=14 IDHEP(NHEP)=0 ISTHEP(NHEP)=103 JMOHEP(1,NHEP)=NHEP-2 JMOHEP(2,NHEP)=NHEP-1 JDAHEP(1,NHEP)=0 JDAHEP(2,NHEP)=0 CALL HWVSUM(4,PHEP(1,NHEP-1),PHEP(1,NHEP-2),PHEP(1,NHEP)) CALL HWUMAS(PHEP(1,NHEP)) C Select a primary interaction point IF (PIPSMR) THEN CALL HWRPIP ELSE CALL HWVZRO(4,VTXPIP) ENDIF CALL HWVEQU(3,VTXPIP,VHEP(1,NHEP)) VHEP(4,NHEP)=0.0 C---GENERATE PHOTONS (WEIZSACKER-WILLIAMS APPROX) C FOR HADRONIC PROCESSES WITH LEPTON BEAMS GAMWT=ONE IF (IPRO.GT.12.AND.IPRO.LT.90) THEN IF (CIRCOP.EQ.0) THEN IF (ABS(IDHEP(1)).EQ.11.OR.ABS(IDHEP(1)).EQ.13) & CALL HWEGAM(1,ZERO, ONE,.FALSE.) IF (ABS(IDHEP(2)).EQ.11.OR.ABS(IDHEP(2)).EQ.13) & CALL HWEGAM(2,ZERO, ONE,.FALSE.) ELSE C---MODIFIED TO USE CIRCE FOR BEAMSTRAHLUNG EFFECTS IF (ABS(IDHEP(1)).NE.11.OR.IDHEP(1)+IDHEP(2).NE.0) STOP $ 'This version only works for e+e- annihilation' IF (FSTWGT) THEN RS=NINT(PHEP(5,3)*10)/1D1 CALL CIRCES(ZERO,ZERO,RS,CIRCAC,CIRCVR,CIRCRV,CIRCCH) ENDIF CALL HWEGAM(1,ZERO, ONE,.TRUE.) CALL HWEGAM(2,ZERO, ONE,.TRUE.) Z1=PHEP(4,4)/PHEP(4,1) Z2=PHEP(4,6)/PHEP(4,2) C---FACTORIZE THE DISTRIBUTIONS FROM CIRCE C1=CIRCGG(Z1,-1D0)/SQRT(CIRCGG(-1D0,-1D0)) C2=CIRCGG(-1D0,Z2)/SQRT(CIRCGG(-1D0,-1D0)) C---REMOVE SPURIOUS WEIGHT GIVEN IN HWEGAM GAMWT=GAMWT/(.5*ALPHEM/PIFAC*(1+(1-Z1)**2)/Z1* $ LOG((ONE-Z1)/Z1*4*PHEP(4,1)*PHEP(4,2)/PHEP(5,1)**2)) $ /(.5*ALPHEM/PIFAC*(1+(1-Z2)**2)/Z2* $ LOG((ONE-Z2)/Z2*4*PHEP(4,4)*PHEP(4,2)/PHEP(5,1)**2)) C---REPLACE IT BY THE SUM OF BEAM AND BREM STRAHLUNG QMX1=MIN(Q2WWMX,(Z1*PHEP(3,1))**2) QMN1=MAX(Q2WWMN,(PHEP(5,1)*Z1)**2/(1-Z1)) QMX2=MIN(Q2WWMX,(Z2*PHEP(3,2))**2) QMN2=MAX(Q2WWMN,(PHEP(5,2)*Z2)**2/(1-Z2)) B1=.5*ALPHEM/PIFAC*(1+(1-Z1)**2)/Z1*LOG(QMX1/QMN1) B2=.5*ALPHEM/PIFAC*(1+(1-Z2)**2)/Z2*LOG(QMX2/QMN2) IF (CIRCOP.EQ.1) THEN GAMWT=GAMWT*B1*B2 ELSEIF (CIRCOP.EQ.2) THEN GAMWT=GAMWT*C1*C2 ELSEIF (CIRCOP.EQ.3) THEN GAMWT=GAMWT*(C1+B1)*(C2+B2) ELSE STOP 'Illegal value of circop!' ENDIF ENDIF ELSEIF (IPRO.GE.90) THEN IF (CIRCOP.NE.0) STOP 'Circe not interfaced for DIS processes' IF (ABS(IDHEP(2)).EQ.11.OR.ABS(IDHEP(2)).EQ.13) & CALL HWEGAM(2,ZERO, ONE,.FALSE.) ENDIF C---GENERATE ISR PHOTONS FOR LEPTONIC PROCESSES IF (IPRO.GT.0.AND.IPRO.LE.12) THEN IF (CIRCOP.EQ.0) THEN CALL HWEISR(1) CALL HWEISR(2) ELSE C---MODIFIED TO USE CIRCE FOR BEAMSTRAHLUNG EFFECTS IF (ABS(IDHEP(1)).NE.11.OR.IDHEP(1)+IDHEP(2).NE.0) STOP $ 'This version only works for e+e- annihilation' IF (FSTWGT) THEN RS=NINT(PHEP(5,3)*10)/1D1 CALL CIRCES(ZERO,ZERO,RS,CIRCAC,CIRCVR,CIRCRV,CIRCCH) C---PRECALCULATE THE PART OF THE SPECTRUM MISSED BETWEEN ZMXISR AND 1 ETA=0.6D0 MISS=HWUGAU(HWECIR,1D-15**(1-ETA),(1-ZMXISR)**(1-ETA),1D-12) ENDIF COLISR=.TRUE. CALL HWEISR(1) CALL HWEISR(2) IHAD=1 IF (JDAHEP(1,IHAD).NE.0) IHAD=JDAHEP(1,IHAD) Z1=PHEP(4,IHAD)/PHEP(4,1) IHAD=2 IF (JDAHEP(1,IHAD).NE.0) IHAD=JDAHEP(1,IHAD) Z2=PHEP(4,IHAD)/PHEP(4,2) C---FACTORIZE THE DISTRIBUTIONS FROM CIRCE C1=CIRCEE(Z1,-1D0)/SQRT(CIRCEE(-1D0,-1D0)) C2=CIRCEE(-1D0,Z2)/SQRT(CIRCEE(-1D0,-1D0)) IF (Z1.EQ.ONE) C1=C1+MISS IF (Z2.EQ.ONE) C2=C2+MISS C---REMOVE WEIGHT GIVEN IN HWEISR B1=CIRCKP(1) B2=CIRCKP(2) GAMWT=GAMWT/(B1*B2) C---REPLACE IT BY THE SUM OF BEAM AND BREM STRAHLUNG IF (CIRCOP.EQ.1) THEN GAMWT=GAMWT*B1*B2 ELSEIF (CIRCOP.EQ.2) THEN GAMWT=GAMWT*C1*C2 ELSEIF (CIRCOP.EQ.3) THEN C---IN THE APPROXIMATION OF DOMINANCE BY THE DELTA-FUNCTION TERM IF (Z1.EQ.ONE) C1=C1-1 IF (Z2.EQ.ONE) C2=C2-1 C---IF IT DOES NOT DOMINATE, ZMXISR SHOULD BE DECREASED IF (B1+C1.LT.ZERO) CALL HWWARN('HWEPRO',501) IF (B2+C2.LT.ZERO) CALL HWWARN('HWEPRO',502) GAMWT=GAMWT*(C1+B1)*(C2+B2) ELSE STOP 'Illegal value of circop!' ENDIF ENDIF ENDIF C---IF USER LIMITS WERE TOO TIGHT, MIGHT NOT BE ANY PHASE-SPACE IF (GAMWT.LE.ZERO) GOTO 30 C---IF CMF HAS ACQUIRED A TRANSVERSE BOOST, OR USER REQUESTS IT ANYWAY, C BOOST EVENT RECORD BACK TO CMF IF (PHEP(1,3)**2+PHEP(2,3)**2.GT.ZERO .OR. USECMF) CALL HWUBST(1) C---ROUTINE LOOPS BACK TO HERE IF GENERATED WEIGHT WAS ACCEPTED 20 CONTINUE IPRO=MOD(IPROC/100,100) C---PROCESS GENERATED BY LES HOUCHES INTERFACE IF(IPRO.LE.0) THEN CALL HWHGUP ELSEIF (IPRO.EQ.1) THEN IF (IPROC.LT.110.OR.IPROC.GE.120) THEN C--- E+E- -> Q-QBAR OR L-LBAR CALL HWHEPA ELSE C--- E+E- -> Q-QBAR-GLUON CALL HWHEPG ENDIF ELSEIF (IPRO.EQ.2) THEN C--- E+E- -> W+ W- CALL HWHEWW ELSEIF (IPRO.EQ.3) THEN C---E+E- -> Z H CALL HWHIGZ ELSEIF (IPRO.EQ.4) THEN C---E+E- -> NUEB NUE H CALL HWHIGW ELSEIF (IPRO.EQ.5 .AND. IPROC.LT.550) THEN C---EE -> EE GAMGAM -> EE FFBAR/WW CALL HWHEGG ELSEIF (IPRO.EQ.5) THEN C---EE -> ENU GAMW -> ENU FF'BAR/WZ CALL HWHEGW ELSEIF (IPRO.EQ.6) THEN C---EE -> FOUR JETS CALL HWH4JT ELSEIF(IPRO.EQ.7) THEN C--EE -> SUSY PARTICLES(PAIR PRODUCTION) CALL HWHESP ELSEIF(IPRO.EQ.8) THEN C--EE -> RPV SUSY PARTICLE PRODUCTION CALL HWHREP ELSEIF (IPRO.EQ.9) THEN IF((MOD(IPROC,10000).EQ.955).OR. & (MOD(IPROC,10000).EQ.965).OR. & (MOD(IPROC,10000).EQ.975))THEN C---MSSM Higgs pair production in l+l-: H+ H- and A0 Higgs, Higgs=h0,H0. CALL HWHIHH ELSEIF((MOD(IPROC,10000).EQ.910).OR. & (MOD(IPROC,10000).EQ.920))THEN C---MSSM scalar Higgs production from vector-vector fusion. CALL HWHIGW ELSEIF((MOD(IPROC,10000).EQ.960).OR. & (MOD(IPROC,10000).EQ.970))THEN C---MSSM scalar Higgs production from Higgs-strahlung. CALL HWHIGZ END IF ELSEIF ((IPRO.EQ.10).OR.(IPRO.EQ.11)) THEN C---SM/MSSM Higgs production with heavy quark flavours via e+e-. CALL HWHIGE ELSEIF (IPRO.EQ.13) THEN C---GAMMA/Z0/Z' DRELL-YAN PROCESS CALL HWHDYP ELSEIF (IPRO.EQ.14) THEN C---W+/- PRODUCTION VIA DRELL-YAN PROCESS CALL HWHWPR ELSEIF (IPRO.EQ.15) THEN C---QCD HARD 2->2 PROCESSES CALL HWHQCD ELSEIF ((IPRO.EQ.16).OR.(IPRO.EQ.36)) THEN C---SM/MSSM HIGGS PRODUCTION VIA QUARK/GLUON FUSION CALL HWHIGS ELSEIF (IPRO.EQ.17) THEN C---QCD HEAVY FLAVOUR PRODUCTION CALL HWHHVY ELSEIF (IPRO.EQ.18) THEN C---QCD DIRECT PHOTON + JET PRODUCTION CALL HWHPHO ELSEIF ((IPRO.EQ.19).OR.(IPRO.EQ.37)) THEN C---SM/MSSM HIGGS PRODUCTION VIA W/Z FUSION CALL HWHIGW ELSEIF (IPRO.EQ.20) THEN C---TOP PRODUCTION FROM W EXCHANGE CALL HWHWEX ELSEIF (IPRO.EQ.21) THEN C---VECTOR BOSON + JET PRODUCTION CALL HWHV1J ELSEIF (IPRO.EQ.22) THEN C QCD direct photon pair production CALL HWHPH2 ELSEIF (IPRO.EQ.23) THEN C QCD Higgs plus jet production CALL HWHIGJ ELSEIF (IPRO.EQ.24) THEN C---COLOUR-SINGLET EXCHANGE CALL HWHSNG ELSEIF (IPRO.EQ.25) THEN C---SM Higgs production with heavy quark flavours via qq and gg. CALL HWHIGQ ELSEIF ((IPRO.EQ.26).OR.(IPRO.EQ.27)) THEN C---SM Higgs production with heavy gauge bosons via qq('). CALL HWHIGV C---Gauge boson pair in hadron hadron ELSEIF (IPRO.EQ.28) THEN IF (MOD(IPROC,10000).LT.2850) THEN CALL HWHGBP ELSE CALL HWHVVJ ENDIF C--Vector boson + two jets ELSEIF(IPRO.EQ.29) THEN CALL HWHV2J ELSEIF (IPRO.EQ.30) THEN C---HADRON-HADRON SUSY PROCESSES CALL HWHSSP ELSEIF ((IPRO.EQ.31).OR.(IPRO.EQ.32)) THEN C---MSSM charged/neutral Higgs production in association with squarks. CALL HWHISQ ELSEIF (IPRO.EQ.33) THEN IF(MOD(IPROC,10000).EQ.3350)THEN C---MSSM charged Higgs production in association with W: W+H- + W-H+. CALL HWHIBK ELSEIF((MOD(IPROC,10000).EQ.3310).OR. & (MOD(IPROC,10000).EQ.3320).OR. & (MOD(IPROC,10000).EQ.3360).OR. & (MOD(IPROC,10000).EQ.3370))THEN C---MSSM Higgs production with heavy gauge bosons via qq('). CALL HWHIGV ELSE C---MSSM charged/neutral Higgs pair production. CALL HWHIGH END IF ELSEIF (IPRO.EQ.34) THEN C---MSSM charged/neutral Higgs production via bg fusion. CALL HWHIBG ELSEIF (IPRO.EQ.35) THEN C---MSSM charged Higgs production via bq fusion. CALL HWHIBQ ELSEIF (IPRO.EQ.38) THEN C---MSSM charged/neutral Higgs production with heavy quarks via qq and gg. CALL HWHIGQ ELSEIF(IPRO.EQ.40.OR.IPRO.EQ.41) THEN C---HADRON-HADRON R-PARITY VIOLATING SUSY PROCESSES CALL HWHRSP ELSEIF (IPRO.EQ.42) THEN C---SPIN-TWO RESONANCE CALL HWHGRV ELSEIF (IPRO.EQ.50) THEN C Point-like photon two-jet production CALL HWHPPT ELSEIF (IPRO.EQ.51) THEN C Point-like photon/QCD heavy flavour pair production CALL HWHPPH ELSEIF (IPRO.EQ.52) THEN C Point-like photon/QCD heavy flavour single excitation CALL HWHPPE ELSEIF (IPRO.EQ.53) THEN C Compton scattering of point-like photon and (anti)quark CALL HWHPQS ELSEIF (IPRO.EQ.55) THEN C Point-like photon/higher twist meson production CALL HWHPPM ELSEIF (IPRO.EQ.60) THEN C---QPM GAMMA-GAMMA-->QQBAR CALL HWHQPM ELSEIF (IPRO.GE.70.AND.IPRO.LE.79) THEN C---BARYON-NUMBER VIOLATION, AND OTHER MULTI-W PRODUCTION PROCESSES CALL HVHBVI ELSEIF (IPRO.EQ.80) THEN C---MINIMUM-BIAS: NO HARD SUBPROCESS C FIND WEIGHT CALL HWMWGT ELSEIF (IPRO.EQ.90) THEN C---DEEP INELASTIC CALL HWHDIS ELSEIF(IPRO.EQ.91) THEN C---BOSON - GLUON(QUARK) FUSION --> ANTIQUARK(GLUON) + QUARK CALL HWHBGF ELSEIF(IPRO.EQ.92) THEN C---DEEP INELASTIC WITH EXTRA JET: OBSOLETE PROCESS WRITE (6,40) 40 FORMAT (1X,' IPROC=92** is no longer supported.' & /1X,' Please use IPROC=91** instead.') CALL HWWARN('HWEPRO',500) ELSEIF(IPRO.EQ.95) THEN C---HIGGS PRODUCTION VIA W FUSION IN E P CALL HWHIGW ELSE C---UNKNOWN PROCESS CALL HWWARN('HWEPRO',102) GOTO 999 ENDIF 30 IF (GENEV) THEN IF (NOWGT) THEN IF (NEGWTS) THEN IF (EVWGT.LT.ZERO) THEN EVWGT=-AVABW ELSE EVWGT= AVABW ENDIF ELSE EVWGT=AVWGT ENDIF ENDIF ISTAT=10 C--New call spin correlation code if needed IF(SYSPIN.AND.(IPRO.EQ. 1.OR.IPRO.EQ.13.OR.IPRO.EQ.14.OR. & IPRO.EQ.15.OR.IPRO.EQ.17.OR.IPRO.EQ.20.OR. & IPRO.EQ. 7.OR.IPRO.EQ.30.OR.IPRO.EQ.40.OR. & IPRO.EQ.41.OR.IPRO.EQ.8)) CALL HWHSPN C--generate additional photon radition in top production IF(ITOPRD.EQ.1.AND.MOD(IPROC,10000).EQ.1706) CALL HWPHTT RETURN ELSE C---IF AN EVENT IS CANCELLED BEFORE IT IS GENERATED, GIVE IT ZERO WEIGHT IF (IERROR.NE.0) THEN EVWGT=ZERO IERROR=0 ENDIF EVWGT=EVWGT*GAMWT NWGTS=NWGTS+1 ABWGT=ABS(EVWGT) IF (EVWGT.LT.ZERO) THEN IF (NEGWTS) THEN NNEGWT=NNEGWT+1 ELSE IF (EVWGT.LT.-1.D-9) CALL HWWARN('HWEPRO',3) EVWGT=ZERO ABWGT=ZERO ENDIF ENDIF WGTSUM=WGTSUM+EVWGT WSQSUM=WSQSUM+EVWGT**2 ABWSUM=ABWSUM+ABWGT C--weight addition for Les Houches accord IF(IPROC.LE.0) THEN IF(ABS(IDWTUP).EQ.1) THEN LHWGT (ITYPLH) = LHWGT (ITYPLH)+EVWGT LHWGTS(ITYPLH) = LHWGTS(ITYPLH)+EVWGT**2 LHIWGT(ITYPLH) = LHIWGT(ITYPLH)+1 ENDIF ENDIF IF (ABWGT.GT.WBIGST) THEN WBIGST=ABWGT IF (NOWGT.AND.WBIGST.GT.WGTMAX) THEN IF (NEVHEP.NE.0) CALL HWWARN('HWEPRO',1) WGTMAX=WBIGST*1.1 WRITE (6,99) WGTMAX C--additional for Les Houche accord IF(IPROC.LE.0) THEN IF(ABS(IDWTUP).EQ.1) & LHMXSM = LHMXSM-LHXMAX(ITYPLH)+ABWGT LHXMAX(ITYPLH) = EVWGT ENDIF ENDIF ENDIF IF (NEVHEP.NE.0) THEN C---LOW EFFICIENCY WARNINGS: C WARN AT 10*EFFMIN, STOP AT EFFMIN IF (10*EFFMIN*NWGTS.GT.NEVHEP) THEN IF (EFFMIN*NWGTS.GT.NEVHEP) CALL HWWARN('HWEPRO',200) IF (EFFMIN.GT.ZERO) THEN IF (MOD(NWGTS,INT(10/EFFMIN)).EQ.0) THEN CALL HWWARN('HWEPRO',2) WRITE (6,98) WGTMAX ENDIF ENDIF ENDIF IF (NOWGT) THEN GENEV=ABWGT.GT.WGTMAX*HWRGEN(0) ELSE GENEV=ABWGT.NE.ZERO ENDIF IF (GENEV) GOTO 20 GOTO 10 ENDIF ENDIF 98 FORMAT(10X,' MAXIMUM WEIGHT =',1PG24.16) 99 FORMAT(10X,'NEW MAXIMUM WEIGHT =',1PG24.16) 999 RETURN END CDECK ID>, HWETWO. *CMZ :- -26/04/91 11.11.55 by Bryan Webber *-- Author : Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWETWO(SMR3,SMR4) C----------------------------------------------------------------------- C SETS UP 2->2 HARD SUBPROCESS c BRW change 18/8/04: BW smearing of mass i only if SMRi is true C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWUMBW,HWUPCM,PA,PCM INTEGER ICMF,IBM,I,J,K,IHEP,NTRY LOGICAL SMR3,SMR4 EXTERNAL HWUPCM C---INCOMING LINES ICMF=NHEP+3 DO 15 I=1,2 IBM=I C---FIND BEAM AND TARGET IF (JDAHEP(1,I).NE.0) IBM=JDAHEP(1,I) IHEP=NHEP+I IDHW(IHEP)=IDN(I) IDHEP(IHEP)=IDPDG(IDN(I)) ISTHEP(IHEP)=110+I JMOHEP(1,IHEP)=ICMF JMOHEP(I,ICMF)=IHEP JDAHEP(1,IHEP)=ICMF C---SPECIAL - IF INCOMING PARTON IS INCOMING BEAM THEN COPY IT IF (XX(I).EQ.ONE.AND.IDHW(IBM).EQ.IDN(I)) THEN CALL HWVEQU(5,PHEP(1,IBM),PHEP(1,IHEP)) IF (I.EQ.2) PHEP(3,IHEP)=-PHEP(3,IHEP) ELSE PHEP(1,IHEP)=0. PHEP(2,IHEP)=0. PHEP(5,IHEP)=RMASS(IDN(I)) PA=XX(I)*(PHEP(4,IBM)+ABS(PHEP(3,IBM))) PHEP(4,IHEP)=0.5*(PA+PHEP(5,IHEP)**2/PA) PHEP(3,IHEP)=PA-PHEP(4,IHEP) ENDIF 15 CONTINUE PHEP(3,NHEP+2)=-PHEP(3,NHEP+2) C---HARD CENTRE OF MASS IDHW(ICMF)=IDCMF IDHEP(ICMF)=IDPDG(IDCMF) ISTHEP(ICMF)=110 CALL HWVSUM(4,PHEP(1,NHEP+1),PHEP(1,NHEP+2),PHEP(1,ICMF)) CALL HWUMAS(PHEP(1,ICMF)) C---OUTGOING LINES NTRY=0 DO 16 I=3,4 IHEP=NHEP+I+1 IDHW(IHEP)=IDN(I) IDHEP(IHEP)=IDPDG(IDN(I)) ISTHEP(IHEP)=110+I JMOHEP(1,IHEP)=ICMF 16 JDAHEP(I-2,ICMF)=IHEP 19 CONTINUE IF (SMR3) THEN PHEP(5,NHEP+4)=HWUMBW(IDN(3)) ELSE PHEP(5,NHEP+4)=RMASS(IDN(3)) ENDIF IF (SMR4) THEN PHEP(5,NHEP+5)=HWUMBW(IDN(4)) ELSE PHEP(5,NHEP+5)=RMASS(IDN(4)) ENDIF PCM=HWUPCM(PHEP(5,NHEP+3),PHEP(5,NHEP+4),PHEP(5,NHEP+5)) IF (PCM.LT.ZERO) THEN NTRY=NTRY+1 IF (NTRY.LE.NETRY) GO TO 19 CALL HWWARN('HWETWO',103) GOTO 999 ENDIF IHEP=NHEP+4 PHEP(4,IHEP)=SQRT(PCM**2+PHEP(5,IHEP)**2) PHEP(3,IHEP)=PCM*COSTH PHEP(1,IHEP)=SQRT((PCM+PHEP(3,IHEP))*(PCM-PHEP(3,IHEP))) CALL HWRAZM(PHEP(1,IHEP),PHEP(1,IHEP),PHEP(2,IHEP)) CALL HWULOB(PHEP(1,NHEP+3),PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWVDIF(4,PHEP(1,NHEP+3),PHEP(1,IHEP),PHEP(1,NHEP+5)) C---SET UP COLOUR STRUCTURE LABELS DO 30 I=1,4 J=I IF (J.GT.2) J=J+1 K=ICO(I) IF (K.GT.2) K=K+1 JMOHEP(2,NHEP+J)=NHEP+K 30 JDAHEP(2,NHEP+K)=NHEP+J NHEP=NHEP+5 999 RETURN END CDECK ID>, HWH2BK. *CMZ :- -26/11/00 17.21.55 by Bryan Webber *-- Author : Stefano Moretti C----------------------------------------------------------------------- SUBROUTINE HWH2BK(P1,P2,P3,P4,RMW,RMH,RES,RESL,REST) C----------------------------------------------------------------------- C...Matrix element for q(1) + q-bar(2) -> W+/-(3) + H-/+(4), C...all masses retained. C...It factorises (PIFAC*ALPHA/SWEIN/RMW/RMW/SQRT(2.))**2 C C...First release: 1-APR-1998 by Stefano Moretti C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER I DOUBLE PRECISION P1(0:3),P2(0:3),P3(0:3),P4(0:3) DOUBLE PRECISION P(0:3) DOUBLE PRECISION RES,S,T,U,MB2,MT2,MW2,MHP2,MH02,MA02,MSH2, & MGAMH0,MGAMA0,MGAMSH,PT,NC,KT2,RESL,REST DOUBLE PRECISION TT,UU,KKT2,TL DOUBLE COMPLEX Z,PV,PA DOUBLE PRECISION RMB,RMT,RMW,RMH DOUBLE PRECISION RMH01,GAMH01, & RMH02,GAMH02, & RMH03,GAMH03 DOUBLE PRECISION VP,CFC EQUIVALENCE (RMB ,RMASS( 5)),(RMT ,RMASS( 6)) EQUIVALENCE (RMH01,RMASS(204)), & (RMH02,RMASS(203)), & (RMH03,RMASS(205)) PARAMETER (Z=(0D0,1D0),NC=3) C...Higgs widths. GAMH01=RMASS(204)/DKLTM(204) GAMH02=RMASS(203)/DKLTM(203) GAMH03=RMASS(205)/DKLTM(205) C...constant terms. MB2=RMB*RMB MT2=RMT*RMT MW2=RMW*RMW MHP2=RMH *RMH MH02=RMH01*RMH01 MA02=RMH03*RMH03 MSH2=RMH02*RMH02 MGAMH0=RMH01*GAMH01 MGAMA0=RMH03*GAMH03 MGAMSH=RMH02*GAMH02 C...Mandelstam invariants. S=(P1(0)+P2(0))**2 T=(P1(0)-P3(0))**2 U=(P1(0)-P4(0))**2 DO I=1,3 S=S-(P1(I)+P2(I))**2 T=T-(P1(I)-P3(I))**2 U=U-(P1(I)-P4(I))**2 END DO C...propagators and couplings. PV=(-SINA*COSBMA/(S-MSH2+Z*MGAMSH) & -COSA*SINBMA/(S-MH02+Z*MGAMH0) )/COSB PA= TANB/(S-MA02+Z*MGAMA0) PT= 1./(T-MT2) KT2=(U*T-MHP2*MW2)/S C...Total ME. RES=S/NC*( MB2/2.*((S-MW2-MHP2)**2-4.*MW2*MHP2)* & DREAL(DCONJG(PV)*PV+DCONJG(PA)*PA)+ & MB2*TANB*PT*(MW2*MHP2-S*KT2-T**2)*DREAL(PV-PA)+ & PT**2*((MT2/TANB)**2*(2.*MW2+KT2) & +MB2*TANB**2*(2.*MW2*KT2+T**2))) & *2. C...Extracts spin dependence. VP=SQRT(P3(1)**2+P3(2)**2+P3(3)**2) CFC=P3(0)/VP DO I=1,3 P(I)=P3(I)*CFC END DO P(0)=VP**2/P3(0)*CFC TT=(P1(0)-P(0))**2 UU=(P2(0)-P(0))**2 DO I=1,3 TT=TT-(P1(I)-P(I))**2 UU=UU-(P2(I)-P(I))**2 END DO KKT2=((MW2+TT)*(MW2+UU)+(MW2+MHP2-T-U)*MW2)/S TL=((TT+MW2)*(UU+MW2)*((S+U-MW2)*(TT+MW2)/(UU+MW2)-T) & +MW2*((MW2-T)*(MW2-U)-S*MW2))/S C...Longitudinal ME (along V direction). RESL=S/NC*(MB2/2.*((S-MW2-MHP2)**2-4.*MW2*MHP2)* & DREAL(DCONJG(PV)*PV+DCONJG(PA)*PA)+ & MB2*TANB*PT*(MW2*MHP2-S*KT2-T**2)*DREAL(PV-PA)+ & PT**2*((MT2/TANB)**2*(KKT2) & +MB2*TANB**2*(TL))) & *2. C...Transverse ME (perpendicular to V direction). REST=RES-RESL END CDECK ID>, HWH2DD. *CMZ :- -27/02/01 17:04:16 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWH2DD(ND,I,J,K,L,Z1,Z2) C----------------------------------------------------------------------- C Returns the coefficient D1-10 from Nucl. Phys. B262 (1985) 235-262 C N.B. THE STRONG COUPLING AND GV+/-GA ARE INCLUDED IN THE CROSS C SECTION ROUTINE C I-L are the particles (all outgoing) C Z1 and Z2 are the decay products of the Z C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER ND,I,J,K,L,Z1,Z2 DOUBLE COMPLEX HWH2DD,ZI,S,D,F PARAMETER(ZI=(0.0D0,1.0D0)) COMMON/HWHEWS/S(8,8,2),D(8,8) COMMON/HWHZBB/F(8,8) IF(ND.EQ.1) THEN HWH2DD = ZI ELSEIF(ND.EQ.2) THEN HWH2DD = ZI/F(J,K)/SQRT(TWO*D(I,K)) ELSEIF(ND.EQ.3) THEN HWH2DD = -ZI/F(I,K)/SQRT(TWO*D(I,K)) ELSEIF(ND.EQ.4) THEN HWH2DD = -ZI/F(K,L)/(F(Z1,I)+F(Z2,I)+F(Z1,Z2)) ELSEIF(ND.EQ.5) THEN HWH2DD = ZI/F(K,L)/(F(Z1,J)+F(Z2,J)+F(Z1,Z2)) ELSEIF(ND.EQ.6) THEN HWH2DD = ZI*HALF/F(J,L)/(F(J,L)+F(J,K)+F(K,L))/D(K,L) ELSEIF(ND.EQ.7) THEN HWH2DD = -ZI*HALF/F(I,K)/F(J,L)/D(K,L) ELSEIF(ND.EQ.8) THEN HWH2DD = ZI*HALF/F(I,K)/(F(I,K)+F(I,L)+F(K,L))/D(K,L) ELSEIF(ND.EQ.9) THEN HWH2DD = -ZI/F(K,L)/(F(J,K)+F(J,L)+F(K,L)) ELSEIF(ND.EQ.10) THEN HWH2DD = ZI/F(K,L)/(F(I,K)+F(I,L)+F(K,L)) ENDIF END CDECK ID>, HWH2BH. *CMZ :- -30/06/01 18.21.35 by Stefano Moretti *-- Author : Kosuke Odagiri & Stefano Moretti C----------------------------------------------------------------------- SUBROUTINE HWH2BH(P1,P2,P3,P4,P5, & EMW,EMH,EMH01,EMH02,EMH03,EMB,EMT,IFL,IRES,CKM, & GAMT,M2) C----------------------------------------------------------------------- C...Matrix element for b(1) + q(2) -> b(3) + q'(4) + H+/-(5) and C.C., C...q(q') massless incoming(outgoing) quark, all other masses retained. C...It factorises 64.*PIFAC**3*ALPHA**3/4./SWEIN/SWEIN/SWEIN/EMW/EMW. C C...First release: 01-APR-1998 by Kosuke Odagiri C...First modified: 12-APR-1998 by Stefano Moretti C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER MU,IRES,IFL DOUBLE PRECISION P1(0:3),P2(0:3),P3(0:3),P4(0:3),P5(0:3) DOUBLE PRECISION EMB,EMT,EMW,EMH,EMH01,EMH02,EMH03 DOUBLE PRECISION GAMT,GAMWTMP,GAMH01,GAMH03,GAMH02,CKM DOUBLE PRECISION QW(0:3),QS(0:3) DOUBLE PRECISION N0,DOTHH,DOTSS,DOTWW,E1234 DOUBLE PRECISION DOTTT,DOT12,DOT13,DOT14,DOT23 DOUBLE PRECISION DOT24,DOT2H,DOT34,DOT3H,DOT4H DOUBLE PRECISION PT2,PV2,PA2 DOUBLE PRECISION M2 DOUBLE COMPLEX PV,PA,PT,PW,Z PARAMETER (GAMWTMP=0.D0,GAMH01=0.D0,GAMH03=0.D0,GAMH02=0.D0) PARAMETER (Z=(0.D0,1.D0)) DOUBLE PRECISION SC,RICCI EXTERNAL SC,RICCI C DO 670 MU=0,3 QW(MU)=P2(MU)-P4(MU) QS(MU)=P1(MU)-P3(MU) 670 CONTINUE C DOTHH=EMH*EMH DOTSS=SC(QS,QS) DOTWW=SC(QW,QW) DOT13=EMB*EMB-DOTSS/2.D0 DOT24=-DOTWW/2.D0 DOT2H=SC(P2,P5) DOT4H=SC(P4,P5) C IF(IFL.EQ.1)THEN DOT12=SC(P1,P2) DOT14=SC(P1,P4) DOT23=SC(P2,P3) DOT34=SC(P3,P4) DOT3H=SC(P3,P5) E1234=RICCI(P1,P2,P3,P4) ELSE IF(IFL.EQ.-1)THEN DOT12=-SC(P3,P2) DOT14=-SC(P3,P4) DOT23=-SC(P2,P1) DOT34=-SC(P1,P4) DOT3H=-SC(P1,P5) E1234=-RICCI(P1,P2,P3,P4) END IF C DOTTT=DOTHH+EMB*EMB+2.D0*DOT3H C PV=COSA*SINBMA/(DOTSS-EMH01*EMH01+Z*EMH01*GAMH01)+ 1 SINA*COSBMA/(DOTSS-EMH02*EMH02+Z*EMH02*GAMH02) PA=SINB/(DOTSS-EMH03*EMH03+Z*EMH03*GAMH03) PW=1./(DOTWW-EMW*EMW+Z*EMW*GAMWTMP) C REMOVE TOP DIAGRAM. IF(IRES.EQ.1)PT=1./(DOTTT-EMT*EMT+Z*EMT*GAMT) IF(IRES.EQ.0)PT=(0.D0,0.D0) PT=PT*CKM PT2 =DREAL(DCONJG(PT)*PT) PV2 =DREAL(DCONJG(PV)*PV) PA2 =DREAL(DCONJG(PA)*PA) C N0=ABS(PW) C M2=N0*N0* ( EMB*EMB/COSB/COSB*(PV2+PA2)*DOT13* & (2.D0*DOT4H*DOT2H-DOT24*DOTHH)+ T 2.D0*PT2*DOT12* O (EMB*EMB*TANB*TANB*(2.D0*DOT3H*DOT4H-DOT34*DOTHH)+ P EMT*EMT/TANB/TANB*(EMT*EMT*DOT34))+ & EMB*EMB*TANB/COSB*DREAL(PV+PA)* X (DREAL(PT)*(4.D0*DOT4H*DOT12*DOT13- T (2.D0*DOT4H+DOTHH)*(DOT12*DOT34+DOT13*DOT24-DOT14*DOT23))+ M DIMAG(PT)*(2.D0*DOT4H+DOTHH)*E1234) ) END C DOUBLE PRECISION FUNCTION SC(A,B) IMPLICIT NONE DOUBLE PRECISION A(0:3),B(0:3) SC=A(0)*B(0)-A(1)*B(1)-A(2)*B(2)-A(3)*B(3) END C DOUBLE PRECISION FUNCTION RICCI(A,B,C,D) IMPLICIT NONE DOUBLE PRECISION A(0:3),B(0:3),C(0:3),D(0:3) RICCI= & A(0)*B(1)*C(2)*D(3)+A(0)*B(2)*C(3)*D(1)+A(0)*B(3)*C(1)*D(2)- & A(0)*B(3)*C(2)*D(1)-A(0)*B(1)*C(3)*D(2)-A(0)*B(2)*C(1)*D(3)+ & A(1)*B(0)*C(3)*D(2)+A(1)*B(2)*C(0)*D(3)+A(1)*B(3)*C(2)*D(0)- & A(1)*B(2)*C(3)*D(0)-A(1)*B(3)*C(0)*D(2)-A(1)*B(0)*C(2)*D(3)+ & A(2)*B(3)*C(0)*D(1)+A(2)*B(0)*C(1)*D(3)+A(2)*B(1)*C(3)*D(0)- & A(2)*B(1)*C(0)*D(3)-A(2)*B(3)*C(1)*D(0)-A(2)*B(0)*C(3)*D(1)+ & A(3)*B(2)*C(1)*D(0)+A(3)*B(0)*C(2)*D(1)+A(3)*B(1)*C(0)*D(2)- & A(3)*B(0)*C(1)*D(2)-A(3)*B(1)*C(2)*D(0)-A(3)*B(2)*C(0)*D(1) END CDECK ID>, HWH2F1 *CMZ :- -27/02/01 17:04:16 by Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWH2F1(NP,F,I,P,MQ) C----------------------------------------------------------------------- C Subroutine to implement the F function of Eijk and Kliess C fixed first momenta and all second momenta C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION P(5),MQ,PM(5),XMASS,PLAB,PRW,PCM,HWULDO,PDOT,EPS DOUBLE COMPLEX F(2,2,8),S,D,SIP(2),SJP(2) INTEGER I,J,NP EXTERNAL HWULDO COMMON/HWHEWS/S(8,8,2),D(8,8) COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10) PARAMETER(EPS=1D-10) C--find the massless momentum we need PDOT = HWULDO(PCM(1,I),P) P(5) = P(4)**2-P(1)**2-P(2)**2-P(3)**2 IF(ABS(PDOT).LT.EPS.AND.ABS(P(5)).LT.EPS) THEN PDOT = HALF ELSE PDOT = HALF*P(5)/PDOT ENDIF DO J=1,4 PM(J) = P(J)-PDOT*PCM(J,I) ENDDO IF(P(5).GT.ZERO) THEN P(5)=SQRT(P(5)) ELSE P(5)=ZERO ENDIF PM(5) = ZERO C--calculate its spinor product with the fixed momentum CALL HWH2SS(SIP,PCM(1,I),PM) C--calculate the F functions DO J=1,NP CALL HWH2SS(SJP,PM,PCM(1,J)) F(1,1,J) = SIP(1)*SJP(2) F(1,2,J) = MQ*S(I,J,1) F(2,1,J) = MQ*S(I,J,2) F(2,2,J) = SIP(2)*SJP(1) ENDDO END CDECK ID>, HWH2F2 *CMZ :- -27/02/01 17:04:16 by Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWH2F2(NP,F,I,P,MQ) C----------------------------------------------------------------------- C Subroutine to implement the F function of Eijk and Kliess C fixed second momenta and all first momenta C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION P(5),MQ,PM(5),XMASS,PLAB,PRW,PCM,HWULDO,PDOT,EPS DOUBLE COMPLEX F(2,2,8),S,D,SIP(2),SJP(2) INTEGER I,J,NP EXTERNAL HWULDO COMMON/HWHEWS/S(8,8,2),D(8,8) COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10) PARAMETER(EPS=1D-10) C--find the massless momentum we need PDOT = HWULDO(PCM(1,I),P) P(5) = P(4)**2-P(1)**2-P(2)**2-P(3)**2 IF(ABS(PDOT).LT.EPS.AND.ABS(P(5)).LT.EPS) THEN PDOT = HALF ELSE PDOT = HALF*P(5)/PDOT ENDIF DO J=1,4 PM(J) = P(J)-PDOT*PCM(J,I) ENDDO IF(P(5).GT.ZERO) THEN P(5)=SQRT(P(5)) ELSE P(5)=ZERO ENDIF PM(5) = ZERO C--calculate its spinor product with the fixed momentum CALL HWH2SS(SIP,PM,PCM(1,I)) C--calculate the F functions DO J=1,NP CALL HWH2SS(SJP,PCM(1,J),PM) F(1,1,J) = SIP(2)*SJP(1) F(1,2,J) = MQ*S(J,I,1) F(2,1,J) = MQ*S(J,I,2) F(2,2,J) = SIP(1)*SJP(2) ENDDO END CDECK ID>, HWH2F3 *CMZ :- -27/02/01 17:04:16 by Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWH2F3(NP,F,P,MQ) C----------------------------------------------------------------------- C Subroutine to implement the F function of Eijk and Kliess C All first and second momenta C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION P(5),MQ,PM(5),XMASS,PLAB,PRW,PCM,HWULDO,PDOT,EPS DOUBLE COMPLEX F(2,2,8,8),SIP(2),SJP(2),S,D INTEGER I,J,NP COMMON/HWHEWS/S(8,8,2),D(8,8) COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10) EXTERNAL HWULDO PARAMETER(EPS=1D-10) C--find the massless momentum we need DO I=1,NP PDOT = HWULDO(PCM(1,I),P) P(5) = P(4)**2-P(1)**2-P(2)**2-P(3)**2 IF(ABS(PDOT).LT.EPS.AND.ABS(P(5)).LT.EPS) THEN PDOT = HALF ELSE PDOT = HALF*P(5)/PDOT ENDIF DO J=1,4 PM(J) = P(J)-PDOT*PCM(J,I) ENDDO IF(P(5).GT.ZERO) THEN P(5)=SQRT(P(5)) ELSE P(5)=ZERO ENDIF PM(5) = ZERO C--calculate its spinor product with the fixed momentum CALL HWH2SS(SIP,PCM(1,I),PM) C--calculate the F functions DO J=I,NP CALL HWH2SS(SJP,PM,PCM(1,J)) F(1,1,I,J) = SIP(1)*SJP(2) F(1,2,I,J) = MQ*S(I,J,1) F(2,1,I,J) = MQ*S(I,J,2) F(2,2,I,J) = SIP(2)*SJP(1) ENDDO ENDDO DO I=1,NP DO J=I+1,NP F(1,1,J,I) = F(2,2,I,J) F(1,2,J,I) = -F(1,2,I,J) F(2,1,J,I) = -F(2,1,I,J) F(2,2,J,I) = F(1,1,I,J) ENDDO ENDDO END CDECK ID>, HWH2HE. *CMZ :- -13/10/02 09.43.05 by Peter Richardson *-- Author : Kosuke Odagiri and Stefano Moretti C----------------------------------------------------------------------- SUBROUTINE HWH2HE(FIRST,GAUGE,IFL,IH,HFC,HBC, & E,S2W,TANB,AL,RMW,S,Q3, P3,P4,P5, & RM3,YM3,GAM3,RM4,YM4,GAM4,RM5,GAM5, & RML,GAML,RMH,GAMH,RMA,GAMA, & RMZ,GAMZ,CFAC,RES) C----------------------------------------------------------------------- C MATRIX ELEMENT SQUARED FOR C e-(1) e+(2) -> f(3) f(')bar(4) Higgs(5) C (SAME QUARK MASSES IN YUKAWA AND KINEMATICS) C----------------------------------------------------------------------- IMPLICIT NONE LOGICAL FIRST,GAUGE DOUBLE PRECISION HFC,HBC DOUBLE PRECISION CFAC DOUBLE PRECISION E,S2W,TANB,AL,RMW,S,Q3,RES DOUBLE PRECISION P3(0:3),P4(0:3),P5(0:3) DOUBLE PRECISION RM3,YM3,GAM3,RM4,YM4,GAM4,RM5,GAM5,RMZ,GAMZ DOUBLE PRECISION RML,GAML,RMH,GAMH,RMA,GAMA,Q2 DOUBLE PRECISION XW,GE(-1:1),G3(-1:1),G4(-1:1),G5(-1:1) DOUBLE PRECISION RM(-1:1),RN1(-1:1),RN2(-1:1),RN3 DOUBLE PRECISION SQS,TWOSQS,HLFSQS,P34,M34,PREFAC DOUBLE PRECISION RLE,RLLE,EP3(-1:1),EP4(-1:1),ZERO,ONE,TWO,HLF DOUBLE PRECISION BE,SA,CA,SB,CB INTEGER I,LE,L,IFL,IH DOUBLE COMPLEX PROPZ,PROP3(-1:1),PROP4(-1:1),PROP5,PROP6 DOUBLE COMPLEX PROP7(-1:1) DOUBLE COMPLEX PP(-1:1),MM(-1:1),QQ(-1:1),ZP3,ZP4,ZP5 PARAMETER (ZERO=0.D0,ONE=1.D0,TWO=2.D0,HLF=.5D0) SAVE XW,GE,G3,G4,G5,RM,PREFAC C QUANTITIES WHICH CAN BE COMPUTED ONLY ONCE IF(FIRST)THEN C SOME COMMON INITIALISATIONS DO I=-1,1 RM(I)=ZERO RN1(I)=ZERO RN2(I)=ZERO END DO RN3=ZERO XW=TWO*S2W GE( 0)=-ONE GE(+1)=-GE(0)*XW GE(-1)=-ONE+GE(1) IF(IH.LE.3)THEN G3( 0)=Q3 G3(+1)=-G3(0)*XW G3(-1)=-ONE*(-Q3/ABS(Q3))+G3(1) G4( 0)=G3( 0) G4(+1)=G3(+1) G4(-1)=G3(-1) G5( 0)=ZERO G5(+1)=ONE G5(-1)=ONE C HIGGS ANGLES BE=ATAN(TANB) SA=SIN(AL) CA=COS(AL) SB=SIN(BE) CB=COS(BE) C MSSM SCALING FACTORS FOR COUPLINGS IF(IH.LE.2)THEN RM(-1)=+YM3/RMW*HFC RM(+1)=+YM4/RMW*HFC ELSE IF(IH.EQ.3)THEN RM(-1)=+YM3/RMW*HFC RM(+1)=-YM4/RMW*HFC END IF IF(IH.LE.2)THEN IF(IH.EQ.1)RN1(-1)=+YM3/RMW*((2-IFL)*TANB+(IFL-1)/TANB) & *(-SQRT(ABS(ONE-HBC**2))) IF(IH.EQ.1)RN1(+1)=-YM4/RMW*((2-IFL)*TANB+(IFL-1)/TANB) & *(-SQRT(ABS(ONE-HBC**2))) IF(IH.EQ.2)RN1(-1)=-YM3/RMW*((2-IFL)*TANB+(IFL-1)/TANB) & *(+SQRT(ABS(ONE-HBC**2))) IF(IH.EQ.2)RN1(+1)=+YM4/RMW*((2-IFL)*TANB+(IFL-1)/TANB) & *(+SQRT(ABS(ONE-HBC**2))) RN2(-1)=ZERO RN2(+1)=ZERO IF(IH.EQ.0)RN3=1.D0 IF(IH.EQ.1)RN3=HBC IF(IH.EQ.2)RN3=HBC ELSE IF(IH.EQ.3)THEN RN1(-1)=+YM3/RMW*((2-IFL)*(-SA/CB)+(IFL-1)*(+CA/SB)) & *COS(BE-AL) RN1(+1)=+YM4/RMW*((2-IFL)*(-SA/CB)+(IFL-1)*(+CA/SB)) & *COS(BE-AL) RN2(-1)=+YM3/RMW*((2-IFL)*(+CA/CB)+(IFL-1)*(+SA/SB)) & *SIN(BE-AL) RN2(+1)=+YM4/RMW*((2-IFL)*(+CA/CB)+(IFL-1)*(+SA/SB)) & *SIN(BE-AL) RN3=ZERO END IF PREFAC=E**6/(XW*S)*CFAC/TWO ELSE G3( 0)=Q3 G3(+1)=-G3(0)*XW G3(-1)=-ONE+G3(1) G4( 0)=ONE+G3(0) G4(+1)=-G4(0)*XW G4(-1)=ONE+G4(1) G5( 0)=ONE G5(+1)=ONE-XW G5(-1)=ONE-XW RM(-1)=YM3*TANB/RMW RM(+1)=YM4/TANB/RMW RN1(-1)=RM(-1) RN1(+1)=RM(+1) RN2(-1)=ZERO RN2(+1)=ZERO RN3=ZERO PREFAC=E**6/(XW*S)*CFAC END IF FIRST=.FALSE. END IF C SOME ENERGY CONSTANTS SQS=DSQRT(S) TWOSQS=TWO*SQS HLFSQS=HLF*SQS PROPZ=S/(XW*(TWO-XW)*DCMPLX(S-RMZ**2,-RMZ*GAMZ)) C SOME KINEMATICS P34=P3(0)*P4(0)-P3(1)*P4(1)-P3(2)*P4(2)-P3(3)*P4(3) M34=RM3*RM4 RES=ZERO C FF(')-BAR PROPAGATOR Q2=RM3**2+RM4**2+TWO*P34 C CONSTRUCT AMPLITUDE DO LE=-1,1,2 RLE=DFLOAT(LE) IF(IH.LE.2)THEN PROP5=(GE(0)*G5(0)+GE(LE)*G5(-1)*PROPZ)/ & DCMPLX(Q2-RMA**2,-RMA*GAMA) PROP6=(0.D0,0.D0) ELSE IF(IH.EQ.3)THEN PROP5=(GE(0)*G5(0)+GE(LE)*G5(-1)*PROPZ)/ & DCMPLX(Q2-RML**2,-RML*GAML) PROP6=(GE(0)*G5(0)+GE(LE)*G5(-1)*PROPZ)/ & DCMPLX(Q2-RMH**2,-RMH*GAMH) ELSE PROP5=(GE(0)*G5(0)+GE(LE)*G5(-1)*PROPZ)/ & DCMPLX(Q2-RM5**2,-RM5*GAM5) END IF ZP3=DCMPLX(P3(1),-RLE*P3(2)) ZP4=DCMPLX(P4(1),-RLE*P4(2)) ZP5=-ZP3-ZP4 DO L=-1,1,2 PROP3(L)=(GE(0)*G3(0)+GE(LE)*G3(L)*PROPZ)/ & DCMPLX(S-TWOSQS*P3(0),-RM3*GAM3) PROP4(L)=(GE(0)*G4(0)+GE(LE)*G4(L)*PROPZ)/ & DCMPLX(S-TWOSQS*P4(0),-RM4*GAM4) PROP7(L)=GE(LE)*G3(L)*PROPZ/DCMPLX(Q2-RMZ**2,-RMZ*GAMZ) END DO DO L=-1,1,2 PP(L)=-RM(-L)*SQS*(PROP3(L)+PROP4(-L)) MM(L)=RM3*RM(+L)*(PROP3(L)-PROP3(-L)) & +RM4*RM(-L)*(PROP4(L)-PROP4(-L)) & +TWO*RMZ**2/RMW*RN3*PROP7(L) IF(GAUGE)THEN ZP3=P3(0)-HLFSQS ZP4=P4(0)-HLFSQS ZP5=P5(0)-HLFSQS PP(L)=DCMPLX(ZERO,ZERO) MM(L)=MM(L)+PROPZ*GE(LE)*DFLOAT(L)/TWOSQS* & (RM3*RM(L)/ZP3-RM4*RM(-L)/ZP4) END IF QQ(L)=RM(L)*(PROP3(-L)*ZP3-PROP4(L)*ZP4) & +RN1(L)*PROP5*ZP5 & -RN2(L)*PROP6*ZP5 & +RM3/RMW*RN3*(PROP7(L)-PROP7(-L))*ZP5 RLLE=DFLOAT(L*LE) EP3(L)=P3(0)+RLLE*P3(3) EP4(L)=P4(0)+RLLE*P4(3) END DO DO L=-1,1,2 RES=RES+DREAL( & EP3(+L)*EP4(+L)*DCONJG(PP(+L))*PP(+L)+ & EP3(+L)*EP4(-L)*DCONJG(MM(+L))*MM(+L)- & TWO*RM3*EP4(+L)*DCONJG(PP(+L))*MM(-L)- & TWO*RM4*EP3(+L)*DCONJG(PP(+L))*MM(+L)+ & M34*(DCONJG(PP(-L))*PP(+L)+DCONJG(MM(-L))*MM(+L)) & +TWO*DCONJG(QQ(-L)) & *((RM3*MM(-L)-EP3(+L)*PP(+L))*ZP4- & (RM4*MM(+L)-EP4(+L)*PP(+L))*ZP3+ & P34*QQ(-L)-M34*QQ(+L))) END DO END DO RES=PREFAC*RES END CDECK ID>, HWH2M0. *CMZ :- -14/03/01 09:03:25 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWH2M0(IQ,IDZ,MG,MQ) C----------------------------------------------------------------------- C Massless matrix elements for gg-->qqZ and qq-->qqZ C using the matrix elements given in Nucl. Phys. B262 (1985) 235-242 C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IQ,I,J,OZ(2,2),IDZ,P1,P2,P3,P4,IQI,ID(2),K DOUBLE PRECISION MG(2),MQ(2,5),G(12,2),FLOW(3,3),CQFC,CQIFC, & CGFC,CGIFC DOUBLE COMPLEX MQAMP(2),HWH2T1,HWH2T2,HWH2T3,HWH2T4,HWH2T5, & HWH2T6,HWH2T7,HWH2T8,HWH2T9,HWH2T0,DCF(8),HWH2DD, & MGAMP(2,2,2,2,2),TRPGL(2) EXTERNAL HWH2DD,HWH2T0,HWH2T1,HWH2T2,HWH2T3,HWH2T4,HWH2T5,HWH2T6, & HWH2T7,HWH2T8,HWH2T9 PARAMETER(CQFC=2.0D0,CQIFC=-2.0D0/3.0D0,CGFC=16.0D0/3.0D0, & CGIFC=-2.0D0/3.0D0) COMMON /HWHZBC/G SAVE OZ,ID DATA OZ/6,5,5,6/ DATA ID/1,2/ C--flavour of the final-state quark (1 is down-type and 2 is up-type) IQI = MOD(IQ,2) IF(IQI.EQ.0) IQI=2 C--calculate qqbar---> q'q'barZ DCF(1) = HWH2DD(4,2,1,3,4,5,6) DCF(2) = HWH2DD(5,2,1,3,4,5,6) DCF(3) = HWH2DD(4,3,4,2,1,5,6) DCF(4) = HWH2DD(5,3,4,2,1,5,6) DCF(5) = HWH2DD(4,3,1,2,4,5,6) DCF(6) = HWH2DD(5,3,1,2,4,5,6) DCF(7) = HWH2DD(4,2,4,3,1,5,6) DCF(8) = HWH2DD(5,2,4,3,1,5,6) DO I=1,3 DO J=1,3 FLOW(I,J) = ZERO ENDDO ENDDO DO I=1,2 C--calculate the matrix element, N.B. two possibe colour flows DO P1=1,2 DO P2=1,2 DO P3=1,2 MQAMP(1)= G(IDZ,P3)*( & G(ID(I),P1)*(DCF(1)*HWH2T4(2,1,3,4,OZ(P3,1),OZ(P3,2),P1,P2) & +DCF(2)*HWH2T5(2,1,3,4,OZ(P3,1),OZ(P3,2),P1,P2)) & +G(IQ,P2)*(DCF(3)*HWH2T4(3,4,2,1,OZ(P3,1),OZ(P3,2),P2,P1) & +DCF(4)*HWH2T5(3,4,2,1,OZ(P3,1),OZ(P3,2),P2,P1))) IF(ID(I).NE.IQI) THEN MQAMP(2)=ZERO ELSE MQAMP(2)= G(IDZ,P3)*( & G(IQ,P1)*(DCF(5)*HWH2T4(3,1,2,4,OZ(P3,1),OZ(P3,2),P1,P2) & +DCF(6)*HWH2T5(3,1,2,4,OZ(P3,1),OZ(P3,2),P1,P2)) & +G(IQ,P2)*(DCF(7)*HWH2T4(2,4,3,1,OZ(P3,1),OZ(P3,2),P2,P1) & +DCF(8)*HWH2T5(2,4,3,1,OZ(P3,1),OZ(P3,2),P2,P1))) ENDIF FLOW(I,1) = FLOW(I,1)+DBLE(MQAMP(1)*DCONJG(MQAMP(1))) FLOW(I,2) = ZERO FLOW(I,3) = ZERO IF(IQI.EQ.ID(I)) THEN FLOW(3,1) = FLOW(3,1)+DBLE(MQAMP(1)*DCONJG(MQAMP(1))) FLOW(3,2) = FLOW(3,2)+DBLE(MQAMP(2)*DCONJG(MQAMP(2))) IF(P1.EQ.P2) FLOW(3,3) = FLOW(3,3) & -TWO*DBLE(MQAMP(1)*DCONJG(MQAMP(2))) ENDIF ENDDO ENDDO ENDDO ENDDO DO I=1,3 FLOW(I,1) = CQFC*FLOW(I,1) FLOW(I,2) = CQFC*FLOW(I,2) FLOW(I,3) = CQIFC*FLOW(I,3) ENDDO C--now find the matrix elements DO I=1,5 K = MOD(I,2) IF(K.EQ.0) K=2 IF(I.EQ.IQ) K=3 DO J=1,2 IF(FLOW(K,J).NE.ZERO) MQ(J,I) = FLOW(K,J)* & (ONE+FLOW(K,3)/(FLOW(K,1)+FLOW(K,2))) ENDDO ENDDO C--calculate gg---> bbbarZ C--coefficients for the diagrams DCF(1) = HWH2DD( 6,3,4,1,2,5,6) DCF(2) = HWH2DD( 7,3,4,1,2,5,6) DCF(3) = HWH2DD( 8,3,4,1,2,5,6) DCF(4) = HWH2DD( 6,3,4,2,1,5,6) DCF(5) = HWH2DD( 7,3,4,2,1,5,6) DCF(6) = HWH2DD( 8,3,4,2,1,5,6) DCF(7) = HWH2DD( 9,3,4,1,2,5,6) DCF(8) = HWH2DD(10,3,4,1,2,5,6) C--helicity amplitudes DO P1=1,2 DO P2=1,2 DO P3=1,2 DO P4=1,2 TRPGL(1)= & DCF(7)*HWH2T9(3,4,1,2,OZ(P4,1),OZ(P4,2),P3,P1,P2) & +DCF(8)*HWH2T0(3,4,1,2,OZ(P4,1),OZ(P4,2),P3,P1,P2) TRPGL(2)= & DCF(7)*HWH2T9(3,4,1,2,OZ(P4,1),OZ(P4,2),P3,P2,P1) & +DCF(8)*HWH2T0(3,4,1,2,OZ(P4,1),OZ(P4,2),P3,P2,P1) MGAMP(1,P1,P2,P3,P4) = G(IDZ,P4)*G(IQ,P3)*( & TRPGL(1) & +DCF(1)*HWH2T6(3,4,1,2,OZ(P4,1),OZ(P4,2),P3,P1,P2) & +DCF(2)*HWH2T7(3,4,1,2,OZ(P4,1),OZ(P4,2),P3,P1,P2) & +DCF(3)*HWH2T8(3,4,1,2,OZ(P4,1),OZ(P4,2),P3,P1,P2) & ) MGAMP(2,P2,P1,P3,P4) = G(IDZ,P4)*G(IQ,P3)*(-TRPGL(2) & +DCF(4)*HWH2T6(3,4,2,1,OZ(P4,1),OZ(P4,2),P3,P1,P2) & +DCF(5)*HWH2T7(3,4,2,1,OZ(P4,1),OZ(P4,2),P3,P1,P2) & +DCF(6)*HWH2T8(3,4,2,1,OZ(P4,1),OZ(P4,2),P3,P1,P2)) ENDDO ENDDO ENDDO ENDDO C--square to obtain the matrix element DO I=1,3 FLOW(1,I) = ZERO ENDDO DO P1=1,2 DO P2=1,2 DO P3=1,2 DO P4=1,2 FLOW(1,1) = FLOW(1,1)+DBLE(MGAMP(1,P1,P2,P3,P4)* & DCONJG(MGAMP(1,P1,P2,P3,P4))) FLOW(1,2) = FLOW(1,2)+DBLE(MGAMP(2,P1,P2,P3,P4)* & DCONJG(MGAMP(2,P1,P2,P3,P4))) FLOW(1,3) = FLOW(1,3)+TWO*DBLE(MGAMP(1,P1,P2,P3,P4)* & DCONJG(MGAMP(2,P1,P2,P3,P4))) ENDDO ENDDO ENDDO ENDDO FLOW(1,1) = CGFC*FLOW(1,1) FLOW(1,2) = CGFC*FLOW(1,2) FLOW(1,3) = CGIFC*FLOW(1,3) DO I=1,2 MG(I) = FLOW(1,I)*(ONE+FLOW(1,3)/(FLOW(1,1)+FLOW(1,2))) ENDDO END CDECK ID>, HWH2MQ. *CMZ :- -14/03/01 09:03:25 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWH2MQ(IQ,IDZ,MG,MQ) C----------------------------------------------------------------------- C Massive matrix elements for gg --> qqbarZ and qqbar --> qqbarZ C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IQ,I,IDZ,P1,P2,PL,PB,PBB,O(2),J,IQI DOUBLE PRECISION MG(2),MQ(2,5),G(12,2),CQFC,CQIFC,CGFC,CGIFC, & PTMP(5,10),XMASS,PLAB,PRW,PCM,HWULDO,QBL,QBBL,Q2B,Q1B,Q2BB, & Q1BB,QM2,FLOW(3,3),PG,PBQB,PBBQBB,QM,PQ,Q1L,Q2L, & Q1LB,Q2LB,MQB(2,3),QBB DOUBLE COMPLEX S,D,FBB(2,2,8),FBBB(2,2,8),FBLL(2,2,8,8),MQP(2), & FBBLL(2,2,8,8),F1B(2,2,8,8),F1BB(2,2,8,8),F2B(2,2,8,8), & F2BB(2,2,8,8),DL(2,2),DCF(8),MGAMP(3),MQAMP(3,2,2,2,2), & MQQAMP(2,2,2,2,2),F1LL(2,2,8,8),F2LL(2,2,8,8) COMMON/HWHZBC/G COMMON/HWHEWS/S(8,8,2),D(8,8) COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10) PARAMETER(CQFC=2.0D0,CQIFC=-2.0D0/3.0D0,CGFC=16.0D0/3.0D0, & CGIFC=-2.0D0/3.0D0) EXTERNAL HWULDO SAVE DL,O DATA DL/(1.0D0,0.0D0),(0.0D0,0.0D0),(0.0D0,0.0D0),(1.0D0,0.0D0)/ DATA O /2,1/ C--mass of the final-state quark QM = RMASS(IQ) QM2 = RMASS(IQ)**2 C--first calculate the F functions we will need DO I=1,4 PTMP(I,1) = PCM(I,9)+PCM(I,5)+PCM(I,6) PTMP(I,2) = -PCM(I,10)-PCM(I,5)-PCM(I,6) PTMP(I,3) = PCM(I,9)-PCM(I,1) PTMP(I,4) = PCM(I,1)-PCM(I,10) PTMP(I,5) = PCM(I,9)-PCM(I,2) PTMP(I,6) = PCM(I,2)-PCM(I,10) PTMP(I,7) = PCM(I,9) PTMP(I,8) = -PCM(I,10) PTMP(I,9) = PCM(I,1)-PCM(I,5)-PCM(I,6) PTMP(I,10) =-PCM(I,2)+PCM(I,5)+PCM(I,6) ENDDO CALL HWH2F3(8,FBLL , PTMP(1, 1),QM) CALL HWH2F3(8,FBBLL, PTMP(1, 2),QM) CALL HWH2F3(8,F1B , PTMP(1, 3),QM) CALL HWH2F3(8,F1BB , PTMP(1, 4),QM) CALL HWH2F3(8,F2B , PTMP(1, 5),QM) CALL HWH2F3(8,F2BB , PTMP(1, 6),QM) CALL HWH2F1(8,FBB ,3,PTMP(1, 7),QM) CALL HWH2F2(8,FBBB ,4,PTMP(1, 8),QM) CALL HWH2F3(8,F1LL , PTMP(1, 9),QM) CALL HWH2F3(8,F2LL , PTMP(1,10),QM) C--calculate the momenta squared for the denominators QBB = HALF/(QM2+HWULDO(PCM(1,9),PCM(1,10))) QBL = ONE/(HWULDO(PTMP(1,1),PTMP(1,1))-QM2) QBBL = ONE/(HWULDO(PTMP(1,2),PTMP(1,2))-QM2) Q1B = ONE/(HWULDO(PTMP(1,3),PTMP(1,3))-QM2) Q1BB = ONE/(HWULDO(PTMP(1,4),PTMP(1,4))-QM2) Q2B = ONE/(HWULDO(PTMP(1,5),PTMP(1,5))-QM2) Q2BB = ONE/(HWULDO(PTMP(1,6),PTMP(1,6))-QM2) Q1L = HWULDO(PTMP(1, 9),PTMP(1, 9)) Q2L = HWULDO(PTMP(1,10),PTMP(1,10)) Q1LB = ONE/(Q1L-QM2) Q2LB = ONE/(Q2L-QM2) Q1L = ONE/Q1L Q2L = ONE/Q2L C--first construct the massless momenta PBQB = HWULDO(PCM(1,3),PCM(1,9)) PBBQBB = HWULDO(PCM(1,4),PCM(1,10)) C--first gg --> q qbar Z C--calculate the denominators due gluon polaizations and massive quarks PG = 0.25D0/(PBQB*PBBQBB*DREAL(D(1,2)*D(1,2))) C--and the denominators DCF(1) = FOUR*QBL*Q2BB DCF(2) = FOUR*QBL*Q1BB DCF(3) = FOUR*Q1B*Q2BB DCF(4) = FOUR*Q2B*Q1BB DCF(5) = FOUR*Q1B*QBBL DCF(6) = FOUR*Q2B*QBBL DCF(7) = TWO*QBL/D(1,2) DCF(8) = TWO*QBBL/D(1,2) C--now calculate the matrix elements we need DO I=1,3 FLOW(1,I) = ZERO ENDDO DO P1=1,2 DO P2=1,2 DO PL=1,2 DO PB=1,2 DO PBB=1,2 C--first amplitude from notes MGAMP(1) = DCF(1)*( & ( G(IQ,O(PL))*FBB(PB, PL,6)*FBLL( PL ,P1,5,2) & +G(IQ, PL )*FBB(PB,O(PL),5)*FBLL(O(PL),P1,6,2))* & (F2BB( P1 , P2 ,1,1)*FBBB( P2 ,PBB,2)+ & F2BB( P1 ,O(P2),1,2)*FBBB(O(P2),PBB,1)) & +( G(IQ,O(PL))*FBB(PB, PL ,6)*FBLL( PL,O(P1),5,1) & +G(IQ, PL )*FBB(PB,O(PL),5)*FBLL(O(PL),O(P1),6,1))* & (F2BB(O(P1), P2 ,2,1)*FBBB( P2 ,PBB,2)+ & F2BB(O(P1),O(P2),2,2)*FBBB(O(P2),PBB,1))) C--second amplitude from notes (1st with gluons interchanged) MGAMP(2) = DCF(2)*( & ( G(IQ,O(PL))*FBB(PB, PL ,6)*FBLL( PL , P2 ,5,1) & +G(IQ, PL )*FBB(PB,O(PL),5)*FBLL(O(PL), P2 ,6,1))* & (F1BB( P2 , P1 ,2,2)*FBBB( P1 ,PBB,1)+ & F1BB( P2 ,O(P1),2,1)*FBBB(O(P1),PBB,2)) & +( G(IQ,O(PL))*FBB(PB, PL ,6)*FBLL( PL ,O(P2),5,2) & +G(IQ, PL )*FBB(PB,O(PL),5)*FBLL(O(PL),O(P2),6,2))* & (F1BB(O(P2), P1 ,1,2)*FBBB( P1 ,PBB,1)+ & F1BB(O(P2),O(P1),1,1)*FBBB(O(P1),PBB,2))) C--third amplitude from notes MGAMP(1) = MGAMP(1)+DCF(3)*( & G(IQ,O(PL))*( FBB(PB, P1 ,2)*F1B( P1 , PL ,1,6) & +FBB(PB,O(P1),1)*F1B(O(P1), PL ,2,6))* & (F2BB(PL, P2 ,5,1)*FBBB( P2 ,PBB,2)+ & F2BB(PL,O(P2),5,2)*FBBB(O(P2),PBB,1)) & +G(IQ, PL )*( FBB(PB, P1 ,2)*F1B( P1 ,O(PL),1,5) & +FBB(PB,O(P1),1)*F1B(O(P1),O(PL),2,5))* & (F2BB(O(PL), P2 ,6,1)*FBBB( P2 ,PBB,2)+ & F2BB(O(PL),O(P2),6,2)*FBBB(O(P2),PBB,1))) C--fourth amplitude from notes (3rd with gluons interchanged) MGAMP(2) = MGAMP(2)+DCF(4)*( & G(IQ,O(PL))*( FBB(PB, P2 ,1)*F2B( P2 , PL ,2,6) & +FBB(PB,O(P2),2)*F2B(O(P2), PL ,1,6))* & (F1BB( PL , P1 ,5,2)*FBBB( P1 ,PBB,1)+ & F1BB( PL ,O(P1),5,1)*FBBB(O(P1),PBB,2)) & +G(IQ, PL )*( FBB(PB, P2 ,1)*F2B( P2 ,O(PL),2,5) & +FBB(PB,O(P2),2)*F2B(O(P2),O(PL),1,5))* & ( F1BB(O(PL), P1 ,6,2)*FBBB( P1 ,PBB,1) & +F1BB(O(PL),O(P1),6,1)*FBBB(O(P1),PBB,2))) C--fifth amplitude from notes MGAMP(1) = MGAMP(1)+DCF(5)*( & ( G(IQ,O(PL))*FBBLL( P2 , PL ,2,6)*FBBB( PL ,PBB,5) & +G(IQ, PL )*FBBLL( P2 ,O(PL),2,5)*FBBB(O(PL),PBB,6))* & ( FBB(PB, P1 ,2)*F1B( P1 , P2 ,1,1) & +FBB(PB,O(P1),1)*F1B(O(P1), P2 ,2,1)) & +( G(IQ,O(PL))*FBBLL(O(P2), PL ,1,6)*FBBB( PL ,PBB,5) & +G(IQ, PL )*FBBLL(O(P2),O(PL),1,5)*FBBB(O(PL),PBB,6))* & ( FBB(PB, P1 ,2)*F1B( P1 ,O(P2),1,2) & +FBB(PB,O(P1),1)*F1B(O(P1),O(P2),2,2))) C--sixth amplitude from notes (5th with gluons interchanged) MGAMP(2) = MGAMP(2)+DCF(6)*( & ( G(IQ,O(PL))*FBBLL( P1 , PL ,1,6)*FBBB( PL ,PBB,5) & +G(IQ, PL )*FBBLL( P1 ,O(PL),1,5)*FBBB(O(PL),PBB,6))* & ( FBB(PB, P2 ,1)*F2B( P2 , P1 ,2,2) & +FBB(PB,O(P2),2)*F2B(O(P2), P1 ,1,2)) & +( G(IQ,O(PL))*FBBLL(O(P1), PL ,2,6)*FBBB( PL ,PBB,5) & +G(IQ, PL )*FBBLL(O(P1),O(PL),2,5)*FBBB(O(PL),PBB,6))* & ( FBB(PB, P2 ,1)*F2B( P2 ,O(P1),2,1) & +FBB(PB,O(P2),2)*F2B(O(P2),O(P1),1,1))) C--seventh amplitude from notes (first non-Abelian one) MGAMP(3) = DCF(7)*DL(P1,P2)*S(1,2,P1)*S(1,2,O(P1))*( & G(IQ,O(PL))*FBB(PB, PL ,6)* & ( FBLL( PL ,1,5,1)*FBBB(1,PBB,1) & +FBLL( PL ,2,5,1)*FBBB(2,PBB,1) & -FBLL( PL ,1,5,2)*FBBB(1,PBB,2) & -FBLL( PL ,2,5,2)*FBBB(2,PBB,2)) & +G(IQ, PL )*FBB(PB,O(PL),5)* & ( FBLL(O(PL),1,6,1)*FBBB(1,PBB,1) & +FBLL(O(PL),2,6,1)*FBBB(2,PBB,1) & -FBLL(O(PL),1,6,2)*FBBB(1,PBB,2) & -FBLL(O(PL),2,6,2)*FBBB(2,PBB,2))) C--eighth amplitude from notes (second non-Abelian one) C--bug fix 12/7/03 by PR (too many continuations for NAG) MGAMP(3) = MGAMP(3) & + DCF(8)*DL(P1,P2)*S(1,2,P1)*S(1,2,O(P1))*( & G(IQ,O(PL))*FBBB( PL ,PBB,5)* & ( FBB(PB,1,1)*FBBLL(1,PL,1,6) & +FBB(PB,2,1)*FBBLL(2,PL,1,6) & -FBB(PB,1,2)*FBBLL(1,PL,2,6) & -FBB(PB,2,2)*FBBLL(2,PL,2,6)) & +G(IQ, PL )*FBBB(O(PL),PBB,6)* & ( FBB(PB,1,1)*FBBLL(1,O(PL),1,5) & +FBB(PB,2,1)*FBBLL(2,O(PL),1,5) & -FBB(PB,1,2)*FBBLL(1,O(PL),2,5) & -FBB(PB,2,2)*FBBLL(2,O(PL),2,5))) MGAMP(1) = G(IDZ,PL)*(MGAMP(1)+MGAMP(3)) MGAMP(2) = G(IDZ,PL)*(MGAMP(2)-MGAMP(3)) C--now square them FLOW(1,1) = FLOW(1,1)+DREAL(MGAMP(1)*DCONJG(MGAMP(1))) FLOW(1,2) = FLOW(1,2)+DREAL(MGAMP(2)*DCONJG(MGAMP(2))) FLOW(1,3) = FLOW(1,3)+TWO*DREAL(MGAMP(1)*DCONJG(MGAMP(2))) ENDDO ENDDO ENDDO ENDDO ENDDO C--add up the diagrams to obtain the amplitudes for the two colour flows FLOW(1,1) = CGFC*FLOW(1,1) FLOW(1,2) = CGFC*FLOW(1,2) FLOW(1,3) = CGIFC*FLOW(1,3) DO I=1,2 IF(FLOW(1,3).NE.ZERO) THEN MG(I) = PG*FLOW(1,I)*(ONE+FLOW(1,3)/(FLOW(1,1)+FLOW(1,2))) ELSE MG(I) = PG*FLOW(1,I) ENDIF ENDDO C--now q qbar --> q qbar Z C--calculate the denominators DCF(1) = -TWO*QBL/D(1,2) DCF(2) = -TWO*QBBL/D(1,2) DCF(3) = -TWO*Q1L*QBB DCF(4) = +TWO*Q2L*QBB DCF(5) = TWO*Q1LB*Q2BB DCF(6) = -TWO*Q2LB*Q1B DCF(7) = TWO*QBL*Q2BB DCF(8) = -TWO*QBBL*Q1B PQ = ONE/PBQB/PBBQBB DO P1=1,2 DO PL=1,2 DO PB=1,2 DO PBB=1,2 C--first the amplitudes for q qbar --> q' q'bar Z C--the first two amplitudes have Z off the final state and therefore C--the flavour of the incoming quarks doesn't matter C--first amplitude from notes MQAMP(3,P1,PL,PB,PBB) = G(IDZ,PL)*( & DCF(1)*(G(IQ,O(PL))*FBB(O(PB), PL ,6)* & ( FBLL( PL , P1 ,5,1)*FBBB( P1 ,O(PBB),2) & +FBLL( PL ,O(P1),5,2)*FBBB(O(P1),O(PBB),1)) & +G(IQ, PL )*FBB(O(PB),O(PL),5)* & ( FBLL(O(PL), P1 ,6,1)*FBBB( P1 ,O(PBB),2) & +FBLL(O(PL),O(P1),6,2)*FBBB(O(P1),O(PBB),1))) C--second amplitide from notes & +DCF(2)*(G(IQ,O(PL))*FBBB( PL ,O(PBB),5)* & ( FBB(O(PB), P1 ,1)*FBBLL( P1 , PL ,2,6) & +FBB(O(PB),O(P1),2)*FBBLL(O(P1), PL ,1,6)) & +G(IQ, PL )*FBBB(O(PL),O(PBB),6)* & ( FBB(O(PB), P1 ,1)*FBBLL( P1 ,O(PL),2,5) & +FBB(O(PB),O(P1),2)*FBBLL(O(P1),O(PL),1,5)))) C--third amplitide from notes DO I=1,2 MQAMP(I,P1,PL,PB,PBB) = & DCF(3)*(G(I,O(PL))*DL(P1,O(PL))*S(5,1, PL )*( & S(1,6,O(PL))*( FBB(O(PB), P1 ,1)*FBBB( P1 ,O(PBB),2) & +FBB(O(PB),O(P1),2)*FBBB(O(P1),O(PBB),1)) & -S(5,6,O(PL))*( FBB(O(PB), P1 ,5)*FBBB( P1 ,O(PBB),2) & +FBB(O(PB),O(P1),2)*FBBB(O(P1),O(PBB),5))) & +G(I, PL )*DL(P1, PL )*S(6,1,O(PL))*( & S(1,5, PL )*( FBB(O(PB), P1 ,1)*FBBB( P1 ,O(PBB),2) & +FBB(O(PB),O(P1),2)*FBBB(O(P1),O(PBB),1)) & -S(6,5, PL )*( FBB(O(PB), P1 ,6)*FBBB( P1 ,O(PBB),2) & +FBB(O(PB),O(P1),2)*FBBB(O(P1),O(PBB),6)))) C--fourth amplitude from notes MQAMP(I,P1,PL,PB,PBB) = MQAMP(I,P1,PL,PB,PBB) & +DCF(4)*(G(I,O(PL))*DL(P1,O(PL))*S(2,6, P1 )*( & S(5,2, PL )*( FBB(O(PB), P1 ,1)*FBBB( P1 ,O(PBB),2) & +FBB(O(PB),O(P1),2)*FBBB(O(P1),O(PBB),1)) & -S(5,6, PL )*( FBB(O(PB), P1 ,1)*FBBB( P1 ,O(PBB),6) & +FBB(O(PB),O(P1),6)*FBBB(O(P1),O(PBB),1))) & +G(I, PL )*DL(P1, PL )*S(2,5, P1 )*( & S(6,2,O(PL))*( FBB(O(PB), P1 ,1)*FBBB( P1 ,O(PBB),2) & +FBB(O(PB),O(P1),2)*FBBB(O(P1),O(PBB),1)) & -S(6,5,O(PL))*( FBB(O(PB), P1 ,1)*FBBB( P1 ,O(PBB),5) & +FBB(O(PB),O(P1),5)*FBBB(O(P1),O(PBB),1)))) MQAMP(I,P1,PL,PB,PBB) = G(IDZ,PL)*MQAMP(I,P1,PL,PB,PBB) ENDDO C--now the extra amplitudes for q qbar --> q qbar Z DO P2=1,2 C--first amplitude for notes MQQAMP(P1,P2,PL,PB,PBB) = & DCF(5)*(DL(P2,PBB)*S(8,4,PBB)*( & G(IQ,O(PL))*DL(P1,O(PL))*S(5,1, PL )* & ( FBB(O(PB), PBB,8)*F1LL( P2 , PL ,2,6) & +FBB(O(PB),O(P2),2)*F1LL(O(PBB), PL ,8,6)) & +G(IQ, PL )*DL(P1, PL )*S(6,1,O(PL))* & ( FBB(O(PB), PBB ,8)*F1LL( P2 ,O(PL),2,5) & +FBB(O(PB),O(P2) ,2)*F1LL(O(PBB),O(PL),8,5))) & -QM*DL(P2,O(PBB))*( & G(IQ,O(PL))*DL(P1,O(PL))*S(5,1,PL)* & ( FBB(O(PB),O(PBB),8)*F1LL( P2 , PL ,2,6) & +FBB(O(PB),O(P2) ,2)*F1LL( PBB , PL ,8,6)) & +G(IQ, PL )*DL(P1, PL )*S(6,1,O(PL))* & ( FBB(O(PB),O(PBB),8)*F1LL( P2 ,O(PL),2,5) & +FBB(O(PB), O(P2),2)*F1LL( PBB ,O(PL),8,5)))) C--second amplitude from notes MQQAMP(P1,P2,PL,PB,PBB) = MQQAMP(P1,P2,PL,PB,PBB) & +DCF(6)*(DL(P1,PB)*S(3,7,O(PB))*( & G(IQ,O(PL))*DL(P2,O(PL))*S(2,6, P2 )* & ( F2LL( PL , P1 ,5,1)*FBBB( PB ,O(PBB),7) & +F2LL( PL ,O(PB),5,7)*FBBB(O(P1),O(PBB),1)) & +G(IQ, PL )*DL(P2, PL )*S(2,5, P2 )* & ( F2LL(O(PL), P1 ,6,1)*FBBB( PB ,O(PBB),7) & +F2LL(O(PL),O(PB),6,7)*FBBB(O(P1),O(PBB),1))) & -QM*DL(P1,O(PB))*( & G(IQ,O(PL))*DL(P2,O(PL))*S(2,6, P2 )* & ( F2LL( PL , P1 ,5,1)*FBBB(O(PB),O(PBB),7) & +F2LL( PL , PB ,5,7)*FBBB(O(P1),O(PBB),1)) & +G(IQ, PL )*DL(P2, PL )*S(2,5, P2 )* & ( F2LL(O(PL), P1 ,6,1)*FBBB(O(PB),O(PBB),7) & +F2LL(O(PL), PB ,6,7)*FBBB(O(P1),O(PBB),1)))) C--third amplitude from notes MQQAMP(P1,P2,PL,PB,PBB) = MQQAMP(P1,P2,PL,PB,PBB) & +DCF(7)*(DL(P2,PBB)*S(8,4,PBB)*( & G(IQ,O(PL))*FBB(O(PB), PL ,6)* & ( DL(P2,O(P1) )*S(2,1, P2 )*FBLL( PL , PBB ,5,8) & +DL(P1,PBB )*S(8,1,O(PBB))*FBLL( PL ,O(P2),5,2)) & +G(IQ, PL )*FBB(O(PB),O(PL),5)* & ( DL(P2,O(P1) )*S(2,1, P2 )*FBLL(O(PL), PBB ,6,8) & +DL(P1,PBB )*S(8,1,O(PBB))*FBLL(O(PL),O(P2),6,2))) & -QM*DL(P2,O(PBB))*( & G(IQ,O(PL))*FBB(O(PB),PL,6)* & ( DL(P2,O(P1) )*S(2,1, P2 )*FBLL( PL ,O(PBB),5,8) & +DL(P1,O(PBB))*S(8,1, PBB )*FBLL( PL ,O(P2) ,5,2)) & +G(IQ, PL )*FBB(O(PB),O(PB),5)* & ( DL(P2,O(PL) )*S(2,1, P2 )*FBLL(O(PL),O(PBB),6,8) & +DL(P1,O(PBB))*S(8,1, PBB )*FBLL(O(PL),O(P2) ,6,2)))) C--fourth amplitude from notes MQQAMP(P1,P2,PL,PB,PBB) = MQQAMP(P1,P2,PL,PB,PBB) & +DCF(8)*(DL(P1,PB)*S(3,7,O(PB))*( & DL(P1,O(P2))*S(2,1,P2)* & ( G(IQ,O(PL))*FBBLL(PB, PL ,7,6)*FBBB( PL ,O(PBB),5) & +G(IQ, PL )*FBBLL(PB,O(PL),7,5)*FBBB(O(PL),O(PBB),6)) & +DL(P2,PB)*S(2,7,P2)* & (G(IQ,O(PL))*FBBLL(O(P1), PL ,1,6)*FBBB( PL ,O(PBB),5) & +G(IQ, PL )*FBBLL(O(P1),O(PL),1,5)*FBBB(O(PL),O(PBB),6))) & +QM*DL(P1,O(PB))*( & DL(P2,O(P1))*S(2,1,P2)* & ( G(IQ,O(PL))*FBBLL(O(PB), PL ,3,6)*FBBB( PL ,O(PBB),5) & +G(IQ, PL )*FBBLL(O(PB),O(PL),3,5)*FBBB(O(PL),O(PBB),6)) & +DL(P2,O(PB))*S(2,3,P2)* & ( G(IQ,O(PL))*FBBLL(O(P1), PL ,1,6)*FBBB( PL ,O(PBB),5) & +G(IQ, PL )*FBBLL(O(P1),O(PL),1,5)*FBBB(O(PL),O(PBB),6)))) MQQAMP(P1,P2,PL,PB,PBB) = G(IDZ,PL)*MQQAMP(P1,P2,PL,PB,PBB) ENDDO ENDDO ENDDO ENDDO ENDDO C--now obtain the matrix elements squared for the quarks DO I=1,3 DO J=1,3 FLOW(I,J) = ZERO ENDDO ENDDO IF(MOD(IQ,2).EQ.1) THEN IQI = 1 ELSE IQI = 2 ENDIF DO P1=1,2 DO PL=1,2 DO PB=1,2 DO PBB=1,2 C--different quarks in inital and final states DO I=1,2 MQP(I) = MQAMP(I,P1,PL,PB,PBB)+MQAMP(3,P1,PL,PB,PBB) FLOW(I,1) = FLOW(I,1)+DREAL(DCONJG(MQP(I))*MQP(I)) ENDDO C--same quark in inital and final state DO P2=1,2 FLOW(3,2) = FLOW(3,2)+DREAL( & DCONJG(MQQAMP(P1,P2,PL,PB,PBB))*MQQAMP(P1,P2,PL,PB,PBB)) IF(P1.EQ.P2) THEN FLOW(3,1) = FLOW(3,1)+DREAL(DCONJG(MQP(IQI))*MQP(IQI)) FLOW(3,3) = FLOW(3,3)-TWO* & DREAL(DCONJG(MQP(IQI))*MQQAMP(P1,P2,PL,PB,PBB)) ENDIF ENDDO ENDDO ENDDO ENDDO ENDDO C--split up the non-planar pieces according to Kosuke's prescription DO I=1,3 FLOW(I,1) = CQFC*FLOW(I,1) FLOW(I,2) = CQFC*FLOW(I,2) FLOW(I,3) = CQIFC*FLOW(I,3) DO J=1,2 IF(FLOW(I,J).NE.ZERO) THEN MQB(J,I) = PQ*FLOW(I,J)* & (ONE+FLOW(I,3)/(FLOW(I,1)+FLOW(I,2))) ELSE MQB(J,I) = ZERO ENDIF ENDDO ENDDO C--now set them DO I=1,5 IF(I.EQ.IQ) THEN DO J=1,2 MQ(J,I) = MQB(J,3) ENDDO ELSEIF(MOD(I,2).EQ.1) THEN DO J=1,2 MQ(J,I) = MQB(J,1) ENDDO ELSE DO J=1,2 MQ(J,I) = MQB(J,2) ENDDO ENDIF ENDDO END CDECK ID>, HWH2PS. *CMZ :- -14/03/01 09:03:25 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWH2PS(WEIGHT,GEN,MQ,MQ2) C----------------------------------------------------------------------- C Phase Space for vector boson plus 2 jets C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION WEIGHT,XMASS,PLAB,PRW,PCM,Y(3),Y35,Y34,Y45,RAND, & HWRGEN,HWRUNI,M35,M35S,G(IMAXCH),DEM,MT(3),PT(3),MJAC,ETOT, & STOT,MQ(3),MQ2(3),PS35,HWUPCM,TWOPI2,MT35,PTJ(3),MT2(3),A,C, & PT2(3),YMIN,YMAX,EY(3),EY34,YJAC,YJJMAX,YJJMIN,EY35,PHI(3), & MT45,PS45,EY45,M45,M45S,M34,PS34,M34S,MT34,XJAC,SJAC,PST,TAU, & FLUX,ETMP,PZTMP,XT1,XT2,WI(IMAXCH) COMMON /HWPSOM/ WI INTEGER I,ICH,J COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10) LOGICAL GEN EXTERNAL HWRGEN,HWRUNI,HWUPCM PARAMETER(YJJMIN=-8.0D0,YJJMAX=8.0D0) IF(IERROR.NE.0) RETURN TWOPI2 = FOUR*PIFAC**2 WEIGHT = ZERO IF(OPTM) THEN DO I=1,IMAXCH WI(I) = ZERO ENDDO ENDIF GEN = .FALSE. C--centre of mass energy ETOT = PHEP(5,3) STOT = ETOT**2 C--first select the channel to be used RAND=HWRGEN(0) DO ICH=1,IMAXCH IF(CHON(ICH)) THEN IF(CHNPRB(ICH).GT.RAND) GOTO 10 RAND = RAND-CHNPRB(ICH) ENDIF ENDDO 10 CONTINUE C--generate the phase space according to the channel selected C--FIRST CHANNEL IF(ICH.EQ.1) THEN C--first generate the mass of 35 CALL HWH2P1(2,MJAC,MQ2(1),M35S,(ETOT-MQ(2))**2,(MQ(1)+MQ(3))**2) M35 = SQRT(M35S) PS35 = HWUPCM(M35,MQ(1),MQ(3)) MJAC = HALF*MJAC*PS35/M35/TWOPI2 C--the generate the PT of 4 CALL HWH2P2(2,PTJ(1),MT2(2),MQ2(2)+PTMAX**2,MQ2(2)+PTMIN**2) MT (2) = SQRT(MT2(2)) PT2(2) = MT2(2)-MQ2(2) PT(2) = SQRT(PT2(2)) MT35 = SQRT(M35S+PT2(2)) C--generate the rapidities of 4 and 35 YMAX = MIN(YJJMAX, LOG(PHEP(5,3)/MT35)) YMIN = MAX(YJJMIN,-LOG(PHEP(5,3)/MT35)) IF(YMAX.LT.YMIN) RETURN Y35 = HWRUNI(1,YMIN,YMAX) EY35 = EXP(Y35) YJAC = (YMAX-YMIN) YMAX = MIN(YJMAX, LOG((PHEP(5,3)-MT35*EY35)/MT(2))) YMIN = MAX(YJMIN,-LOG((PHEP(5,3)-MT35/EY35)/MT(2))) IF(YMAX.LT.YMIN) RETURN Y(2) = HWRUNI(2,YMIN,YMAX) YJAC = (YMAX-YMIN)*YJAC EY(2) = EXP(Y(2)) C--generate the incoming quark momentum fractions XX(1) = (MT(2)*EY(2)+MT35*EY35)/ETOT XX(2) = (MT(2)/EY(2)+MT35/EY35)/ETOT STOT = XX(1)*XX(2)*STOT C--azimuthal angle of 4 and 35 PHI(1) = HWRUNI(3,ZERO,TWO*PIFAC) C--construct the momenta of 4 and 35 PLAB(1,4) = PT(2)*SIN(PHI(1)) PLAB(2,4) = PT(2)*COS(PHI(1)) PLAB(3,4) = HALF*MT(2)*(EY(2)-ONE/EY(2)) PLAB(4,4) = HALF*MT(2)*(EY(2)+ONE/EY(2)) PLAB(5,4) = MQ(2) PLAB(1,6) =-PT(2)*SIN(PHI(1)) PLAB(2,6) =-PT(2)*COS(PHI(1)) PLAB(3,6) = HALF*MT35*(EY35-ONE/EY35) PLAB(4,6) = HALF*MT35*(EY35+ONE/EY35) PLAB(5,6) = M35 C--perform the decay 35 --> 3+5 PLAB(5,3) = MQ(1) PLAB(5,5) = MQ(3) CALL HWDTWO(PLAB(1,6),PLAB(1,3),PLAB(1,5),PS35,TWO,.TRUE.) C--phase space weight FLUX = MJAC*YJAC*PTJ(1)/16.0D0/PIFAC/STOT**2 C--SECOND CHANNEL ELSEIF(ICH.EQ.2) THEN C--first generate the pt's and azimuthal angles of 3 and 4 DO I=1,2 CALL HWH2P2(2,PTJ(I),MT2(I),MQ2(I)+PTMAX**2,MQ2(I)+PTMIN**2) PT2(I) = MT2(I)-MQ2(I) MT(I) = SQRT(MT2(I)) PT(I) = SQRT(PT2(I)) PHI(I) = HWRUNI(I,ZERO,TWO*PIFAC) ENDDO C--find the pt and azimuth of 5 by conservation of transverse momentum A = PT(1)*SIN(PHI(1))+PT(2)*SIN(PHI(2)) C = PT(1)*COS(PHI(1))+PT(2)*COS(PHI(2)) PT(3) = A**2+C**2 MT(3) = SQRT(PT(3)+MQ2(3)) PT(3) = SQRT(PT(3)) PHI(3) = -ACOS(-C/PT(3)) IF(A.LT.ZERO) PHI(3)=-PHI(3) C--generate the rapidities of 3,4 and 5 XX(1) = ZERO XX(2) = ZERO YJAC = ONE DO I=1,3 YMAX = MIN(YJMAX, LOG((PHEP(5,3)-XX(1))/MT(I))) YMIN = MAX(YJMIN,-LOG((PHEP(5,3)-XX(2))/MT(I))) IF(YMAX.LT.YMIN) RETURN Y(I) = HWRUNI(I+2,YMIN,YMAX) EY(I) = EXP(Y(I)) XX(1) = XX(1)+MT(I)*EY(I) XX(2) = XX(2)+MT(I)/EY(I) YJAC = YJAC*(YMAX-YMIN) ENDDO C--generate the incoming quark momentum fractions XX(1) = XX(1)/PHEP(5,3) XX(2) = XX(2)/PHEP(5,3) IF(XX(1).GT.ONE.OR.XX(2).GT.ONE) RETURN C--Construct the 4-momenta of the outgoing particles DO I=1,3 PLAB(1,I+2) = PT(I)*SIN(PHI(I)) PLAB(2,I+2) = PT(I)*COS(PHI(I)) PLAB(3,I+2) = HALF*MT(I)*(EY(I)-ONE/EY(I)) PLAB(4,I+2) = HALF*MT(I)*(EY(I)+ONE/EY(I)) PLAB(5,I+2) = MQ(I) ENDDO C--phase space weight STOT = XX(1)*XX(2)*STOT FLUX = YJAC*PTJ(1)*PTJ(2)/64.0D0/PIFAC/TWOPI2/STOT**2 C--THIRD CHANNEL ELSEIF(ICH.EQ.3) THEN C--first generate the mass of 45 CALL HWH2P1(2,MJAC,MQ2(2),M45S,(ETOT-MQ(1))**2,(MQ(2)+MQ(3))**2) M45 = SQRT(M45S) PS45 = HWUPCM(M45,MQ(2),MQ(3)) MJAC = HALF*MJAC*PS45/M45/TWOPI2 C--the generate the PT of 4 CALL HWH2P2(2,PTJ(1),MT2(1),MQ2(1)+PTMAX**2,MQ2(1)+PTMIN**2) MT (1) = SQRT(MT2(1)) PT2(1) = MT2(1)-MQ2(1) PT(1) = SQRT(PT2(1)) MT45 = SQRT(M45S+PT2(1)) C--generate the rapidities of 3 and 45 YMAX = MIN(YJJMAX, LOG(PHEP(5,3)/MT45)) YMIN = MAX(YJJMIN,-LOG(PHEP(5,3)/MT45)) IF(YMAX.LT.YMIN) RETURN Y45 = HWRUNI(1,YMIN,YMAX) EY45 = EXP(Y45) YJAC = (YMAX-YMIN) YMAX = MIN(YJMAX, LOG((PHEP(5,3)-MT45*EY45)/MT(1))) YMIN = MAX(YJMIN,-LOG((PHEP(5,3)-MT45/EY45)/MT(1))) IF(YMAX.LT.YMIN) RETURN Y(1) = HWRUNI(2,YMIN,YMAX) YJAC = (YMAX-YMIN)*YJAC EY(1) = EXP(Y(1)) C--generate the incoming quark momentum fractions XX(1) = (MT(1)*EY(1)+MT45*EY45)/ETOT XX(2) = (MT(1)/EY(1)+MT45/EY45)/ETOT STOT = XX(1)*XX(2)*STOT C--azimuthal angle of 3 and 45 PHI(1) = HWRUNI(3,ZERO,TWO*PIFAC) C--construct the momenta of 3 and 45 PLAB(1,3) = PT(1)*SIN(PHI(1)) PLAB(2,3) = PT(1)*COS(PHI(1)) PLAB(3,3) = HALF*MT(1)*(EY(1)-ONE/EY(1)) PLAB(4,3) = HALF*MT(1)*(EY(1)+ONE/EY(1)) PLAB(5,3) = MQ(1) PLAB(1,6) =-PT(1)*SIN(PHI(1)) PLAB(2,6) =-PT(1)*COS(PHI(1)) PLAB(3,6) = HALF*MT45*(EY45-ONE/EY45) PLAB(4,6) = HALF*MT45*(EY45+ONE/EY45) PLAB(5,6) = M45 C--perform the decay 45 --> 4+5 PLAB(5,4) = MQ(2) PLAB(5,5) = MQ(3) CALL HWDTWO(PLAB(1,6),PLAB(1,4),PLAB(1,5),PS45,TWO,.TRUE.) C--phase space weight FLUX = MJAC*YJAC*PTJ(1)/16.0D0/PIFAC/STOT**2 C--FOURTH CHANNEL ELSEIF(ICH.EQ.4) THEN C--generate shat according to a power law CALL HWHGB1(1,2,200,SJAC,STOT,PHEP(5,3)**2, & (MQ(1)+MQ(2)+MQ(3))**2) ETOT = SQRT(STOT) C--generate x1 TAU = STOT/PHEP(5,3)**2 XJAC = -LOG(TAU) XX(1) = EXP(HWRUNI(2,LOG(TAU),ZERO)) XX(2) = TAU/XX(1) C--generate m35 CALL HWH2P1(2,MJAC,MQ2(1),M35S,(ETOT-MQ(2))**2, & (MQ(1)+MQ(3))**2) M35 = SQRT(M35S) PS35 = HWUPCM(M35,MQ(1),MQ(3)) MJAC = HALF*MJAC*PS35/M35/TWOPI2 C--generate the momenta of 4 and 35 PST = HWUPCM(ETOT,M35,MQ(2)) PLAB(1,7) = ZERO PLAB(2,7) = ZERO PLAB(3,7) = HALF*(XX(1)-XX(2))*PHEP(5,3) PLAB(4,7) = HALF*(XX(1)+XX(2))*PHEP(5,3) PLAB(5,7) = ETOT PLAB(5,3) = MQ(1) PLAB(5,6) = M35 PLAB(5,4) = MQ(2) CALL HWDTWO(PLAB(1,7),PLAB(1,4),PLAB(1,6),PST,TWO,.TRUE.) C--perform the decay 35 --> 3+5 PLAB(5,4) = MQ(2) PLAB(5,5) = MQ(3) CALL HWDTWO(PLAB(1,6),PLAB(1,3),PLAB(1,5),PS35,TWO,.TRUE.) C--phase space weight FLUX = SJAC*XJAC*MJAC*PST/ETOT/STOT**2/8.0D0/PIFAC C--FIFTH CHANNEL ELSEIF(ICH.EQ.5) THEN C--generate shat according to a power law CALL HWHGB1(1,2,200,SJAC,STOT,PHEP(5,3)**2, & (MQ(1)+MQ(2)+MQ(3))**2) ETOT = SQRT(STOT) C--generate x1 TAU = STOT/PHEP(5,3)**2 XJAC = -LOG(TAU) XX(1) = EXP(HWRUNI(2,LOG(TAU),ZERO)) XX(2) = TAU/XX(1) C--generate m45 CALL HWH2P1(2,MJAC,MQ2(2),M45S,(ETOT-MQ(1))**2,(MQ(2)+MQ(3))**2) M45 = SQRT(M45S) PS45 = HWUPCM(M45,MQ(2),MQ(3)) MJAC = HALF*MJAC*PS45/M45/TWOPI2 C--generate the momenta of 4 and 35 PST = HWUPCM(ETOT,M45,MQ(1)) PLAB(1,7) = ZERO PLAB(2,7) = ZERO PLAB(3,7) = HALF*(XX(1)-XX(2))*PHEP(5,3) PLAB(4,7) = HALF*(XX(1)+XX(2))*PHEP(5,3) PLAB(5,7) = ETOT PLAB(5,3) = MQ(1) PLAB(5,6) = M45 CALL HWDTWO(PLAB(1,7),PLAB(1,3),PLAB(1,6),PST,TWO,.TRUE.) C--perform the decay 45 --> 4+5 PLAB(5,4) = MQ(2) PLAB(5,5) = MQ(3) CALL HWDTWO(PLAB(1,6),PLAB(1,4),PLAB(1,5),PS45,TWO,.TRUE.) C--phase space weight FLUX = SJAC*XJAC*MJAC*PST/ETOT/STOT**2/8.0D0/PIFAC C--SIXTH CHANNEL ELSEIF(ICH.EQ.6) THEN C--first generate the mass of 34 CALL HWH2P1(2,MJAC,ZERO,M34S,(ETOT-MQ(3))**2,MJJMIN**2) M34 = SQRT(M34S) PS34 = HWUPCM(M34,MQ(1),MQ(2)) MJAC = HALF*MJAC*PS34/M34/TWOPI2 C--the generate the PT of 5 CALL HWH2P2(2,PTJ(1),MT2(3),MQ2(3)+PTMAX**2,MQ2(3)) MT (3) = SQRT(MT2(3)) PT2(3) = MT2(3)-MQ2(3) PT(3) = SQRT(PT2(3)) MT34 = SQRT(M34S+PT2(3)) C--generate the rapidities of 5 and 34 YMAX = MIN(YJJMAX, LOG(PHEP(5,3)/MT34)) YMIN = MAX(YJJMIN,-LOG(PHEP(5,3)/MT34)) IF(YMAX.LT.YMIN) RETURN Y34 = HWRUNI(1,YMIN,YMAX) EY34 = EXP(Y34) YJAC = (YMAX-YMIN) YMAX = MIN(YJMAX, LOG((PHEP(5,3)-MT34*EY34)/MT(3))) YMIN = MAX(YJMIN,-LOG((PHEP(5,3)-MT34/EY34)/MT(3))) IF(YMAX.LT.YMIN) RETURN Y(3) = HWRUNI(2,YMIN,YMAX) YJAC = (YMAX-YMIN)*YJAC EY(3) = EXP(Y(3)) C--generate the incoming quark momentum fractions XX(1) = (MT(3)*EY(3)+MT34*EY34)/ETOT XX(2) = (MT(3)/EY(3)+MT34/EY34)/ETOT STOT = XX(1)*XX(2)*STOT C--azimuthal angle of 3 and 45 PHI(1) = HWRUNI(3,ZERO,TWO*PIFAC) C--construct the momenta of 5 and 34 PLAB(1,5) = PT(3)*SIN(PHI(1)) PLAB(2,5) = PT(3)*COS(PHI(1)) PLAB(3,5) = HALF*MT(3)*(EY(3)-ONE/EY(3)) PLAB(4,5) = HALF*MT(3)*(EY(3)+ONE/EY(3)) PLAB(5,5) = MQ(3) PLAB(1,6) =-PT(3)*SIN(PHI(1)) PLAB(2,6) =-PT(3)*COS(PHI(1)) PLAB(3,6) = HALF*MT34*(EY34-ONE/EY34) PLAB(4,6) = HALF*MT34*(EY34+ONE/EY34) PLAB(5,6) = M34 C--perform the decay 34 --> 3+4 PLAB(5,3) = MQ(1) PLAB(5,4) = MQ(2) CALL HWDTWO(PLAB(1,6),PLAB(1,3),PLAB(1,4),PS34,TWO,.TRUE.) C--phase space weight FLUX = MJAC*YJAC*PTJ(1)/16.0D0/PIFAC/STOT**2 ELSE CALL HWWARN('HWH2PS',500) ENDIF C--calculate the variables we need for the smoothing functions C--pt,mt and y for outgoing particles DO I=1,3 J=I+2 PT2(I) = PLAB(1,J)**2+PLAB(2,J)**2 PT(I) = SQRT(PT2(I)) MT2(I) = MQ2(I)+PT2(I) MT(I) = SQRT(MT2(I)) Y(I) = HALF*LOG((PLAB(4,J)+PLAB(3,J))/(PLAB(4,J)-PLAB(3,J))) EY(I) = EXP(Y(I)) IF(I.LE.2.AND.(Y(I).LT.YJMIN.OR.Y(I).GT.YJMAX)) RETURN ENDDO IF(PT(1).LT.PTMIN.OR.PT(2).LT.PTMIN) RETURN C--masses of composite particles M34S = (PLAB(4,3)+PLAB(4,4))**2 M45S = (PLAB(4,4)+PLAB(4,5))**2 M35S = (PLAB(4,3)+PLAB(4,5))**2 DO I=1,3 M34S = M34S-(PLAB(I,3)+PLAB(I,4))**2 M45S = M45S-(PLAB(I,4)+PLAB(I,5))**2 M35S = M35S-(PLAB(I,3)+PLAB(I,5))**2 ENDDO M34 = SQRT(M34S) M45 = SQRT(M45S) M35 = SQRT(M35S) IF(M34.LT.MJJMIN) RETURN C--tramsverse masses of the composite particles MT34 = ZERO MT35 = ZERO MT45 = ZERO DO I=1,2 MT34 = MT34+(PLAB(I,3)+PLAB(I,4))**2 MT35 = MT35+(PLAB(I,3)+PLAB(I,5))**2 MT45 = MT45+(PLAB(I,4)+PLAB(I,5))**2 ENDDO MT34 = SQRT(M34S+MT34) MT35 = SQRT(M35S+MT35) MT45 = SQRT(M45S+MT45) C--final the momenta PS34 = HWUPCM(M34,MQ(1),MQ(2)) PS35 = HWUPCM(M35,MQ(1),MQ(3)) PS45 = HWUPCM(M45,MQ(2),MQ(3)) C--the rapidities of the composite particles ETMP = PLAB(4,3)+PLAB(4,4) PZTMP = PLAB(3,3)+PLAB(3,4) Y34 = HALF*LOG((ETMP+PZTMP)/(ETMP-PZTMP)) EY34 = EXP(Y34) ETMP = PLAB(4,3)+PLAB(4,5) PZTMP = PLAB(3,3)+PLAB(3,5) Y35 = HALF*LOG((ETMP+PZTMP)/(ETMP-PZTMP)) EY35 = EXP(Y35) ETMP = PLAB(4,4)+PLAB(4,5) PZTMP = PLAB(3,4)+PLAB(3,5) Y45 = HALF*LOG((ETMP+PZTMP)/(ETMP-PZTMP)) EY45 = EXP(Y45) C--find the pdf's and set the scale ETOT = SQRT(STOT) EMSCA = ETOT CALL HWSGEN(.FALSE.) C--construct the incoming momenta DO I=1,2 PLAB(1,I) = ZERO PLAB(2,I) = ZERO PLAB(3,I) = HALF*XX(I)*PHEP(5,3) PLAB(4,I) = HALF*XX(I)*PHEP(5,3) PLAB(5,I) = ZERO ENDDO PLAB(3,2) = -PLAB(3,2) TAU = XX(1)*XX(2) C--find the smoothing functions for the different channels C--function for first channel IF(CHON(1)) THEN CALL HWH2P1(1,MJAC,MQ2(1),M35S,(PHEP(5,3)-MQ(2))**2, & (MQ(1)+MQ(3))**2) MJAC = MJAC/PS35*M35 CALL HWH2P2(1,PTJ(1),MT2(2),PTMAX**2+MQ2(2),MQ2(2)+PTMIN**2) YMAX = MIN(YJJMAX, LOG(PHEP(5,3)/MT35)) YMIN = MAX(YJJMIN,-LOG(PHEP(5,3)/MT35)) YJAC = (YMAX-YMIN) YMAX = MIN(YJMAX, LOG((PHEP(5,3)-MT35*EY35)/MT(2))) YMIN = MAX(YJMIN,-LOG((PHEP(5,3)-MT35/EY35)/MT(2))) YJAC = (YMAX-YMIN)*YJAC G(1) = 2.0D0*MJAC*PTJ(1)/YJAC ENDIF C--function for second channel IF(CHON(2)) THEN DO I=1,2 CALL HWH2P2(1,PTJ(I),MT2(I),PTMAX**2+MQ2(I),MQ2(I)+PTMIN**2) ENDDO XT1 = ZERO XT2 = ZERO YJAC = ONE DO I=1,3 YMAX = MIN(YJMAX, LOG((PHEP(5,3)-XT1)/MT(I))) YMIN = MAX(YJMIN,-LOG((PHEP(5,3)-XT2)/MT(I))) XT1 = XT1+MT(I)*EY(I) XT2 = XT2+MT(I)/EY(I) YJAC = YJAC*(YMAX-YMIN) ENDDO G(2) = 4.0D0*PTJ(1)*PTJ(2)/YJAC ENDIF C--function for third channel IF(CHON(3)) THEN CALL HWH2P1(1,MJAC,MQ2(2),M45S,(PHEP(5,3)-MQ(1))**2, & (MQ(2)+MQ(3))**2) MJAC = MJAC/PS45*M45 CALL HWH2P2(1,PTJ(1),MT2(1),PTMAX**2+MQ2(1),MQ2(1)+PTMIN**2) YMAX = MIN(YJJMAX, LOG(PHEP(5,3)/MT45)) YMIN = MAX(YJJMIN,-LOG(PHEP(5,3)/MT45)) YJAC = (YMAX-YMIN) YMAX = MIN(YJMAX, LOG((PHEP(5,3)-MT45*EY45)/MT(1))) YMIN = MAX(YJMIN,-LOG((PHEP(5,3)-MT45/EY45)/MT(1))) YJAC = (YMAX-YMIN)*YJAC G(3) = 2.0D0*MJAC*PTJ(1)/YJAC ENDIF C--function for fourth channel IF(CHON(4)) THEN CALL HWHGB1(1,1,200,SJAC,STOT,PHEP(5,3)**2, & (MQ(1)+MQ(2)+MQ(3))**2) XJAC = -LOG(TAU) CALL HWH2P1(1,MJAC,MQ2(1),M35S,(ETOT-MQ(2))**2,(MQ(1)+MQ(3))**2) M35 = SQRT(M35S) MJAC = MJAC/PS35*M35 PST = HWUPCM(ETOT,M35,MQ(2)) G(4) = SJAC*MJAC/XJAC*ETOT/PST ENDIF C--function for fifth channel IF(CHON(5)) THEN CALL HWHGB1(1,1,200,SJAC,STOT,PHEP(5,3)**2, & (MQ(1)+MQ(2)+MQ(3))**2) XJAC = -LOG(TAU) CALL HWH2P1(1,MJAC,MQ2(2),M45S,(ETOT-MQ(1))**2,(MQ(2)+MQ(3))**2) MJAC = MJAC/PS45*M45 PST = HWUPCM(ETOT,M45,MQ(1)) G(5) = SJAC/XJAC*MJAC/PST*ETOT ENDIF C--function for sixth chaneel IF(CHON(6)) THEN CALL HWH2P1(1,MJAC,ZERO,M34S,(PHEP(5,3)-MQ(3))**2,MJJMIN**2) MJAC = MJAC/PS34*M34 CALL HWH2P2(1,PTJ(1),MT2(3),MQ2(3)+PTMAX**2,MQ2(3)) YMAX = MIN(YJJMAX, LOG(PHEP(5,3)/MT34)) YMIN = MAX(YJJMIN,-LOG(PHEP(5,3)/MT34)) YJAC = (YMAX-YMIN) YMAX = MIN(YJMAX, LOG((PHEP(5,3)-MT34*EY34)/MT(3))) YMIN = MAX(YJMIN,-LOG((PHEP(5,3)-MT34/EY34)/MT(3))) YJAC = (YMAX-YMIN)*YJAC G(6) = 2.0D0*MJAC/YJAC*PTJ(1) ENDIF C--add them all up DEM = ZERO DO I=1,IMAXCH IF(CHON(I)) DEM = DEM+CHNPRB(I)*G(I) ENDDO C--now the weight WEIGHT = FLUX*GEV2NB*G(ICH)/DEM GEN = .TRUE. C--compute the weights for the different channels if optimizing IF(OPTM) THEN DO I=1,IMAXCH IF(CHON(I)) WI(I)=G(I)*WEIGHT**2/DEM ENDDO ENDIF END CDECK ID>, HWH2P1. *CMZ :- -02/04/01 12.11.55 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWH2P1(IOPT,FJAC,MQ2,M2,MMX,MMN) C----------------------------------------------------------------------- C Subroutine to select virtual quark mass for HWH2PS C IOPT=1 return the function at M2 C IOPT=2 calculate M2 C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IOPT DOUBLE PRECISION FJAC,MPOW,MMN,MQ2,M2,A1,A01,RPOW,QPOW,HWRGEN,MMX EXTERNAL HWRGEN C--smooth a powerlaw IF(EMPOW.EQ.TWO) THEN A01 = LOG(MMN-MQ2) A1 = LOG(MMX-MQ2)-A01 IF(IOPT.EQ.1) THEN FJAC = ONE/(M2-MQ2)/A1 ELSE M2 = EXP(A01+A1*HWRGEN(2)) FJAC = A1*M2 M2 = M2+MQ2 ENDIF ELSE MPOW = -EMPOW/TWO QPOW = ONE+MPOW RPOW = ONE/QPOW A01 = (MMN-MQ2)**QPOW A1 = (MMX-MQ2)**QPOW-A01 IF(IOPT.EQ.1) THEN FJAC = QPOW*(M2-MQ2)**MPOW/A1 ELSE M2 = (A01+A1*HWRGEN(2))**RPOW FJAC = A1*RPOW/M2**MPOW M2 = M2+MQ2 ENDIF ENDIF END CDECK ID>, HWH2P2. *CMZ :- -02/04/01 12.11.55 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWH2P2(IOPT,FJAC,PT2,PTMX2,PTMN2) C----------------------------------------------------------------------- C Subroutine to select virtual quark mass for HWH2PS C IOPT=1 return the function at M2 C IOPT=2 calculate M2 C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER IOPT DOUBLE PRECISION FJAC,MPOW,A1,A01,RPOW,QPOW,HWRGEN,PT2, & PPOW,PTMN2,PTMX2,Z EXTERNAL HWRGEN C--smooth a powerlaw PPOW = HALF*PTPOW IF(PPOW.EQ.ONE) THEN A01 = LOG(PTMN2) A1 = LOG(PTMX2)-A01 IF(IOPT.EQ.1) THEN FJAC = ONE/PT2/A1 ELSE PT2 = EXP(A01+A1*HWRGEN(2)) FJAC = A1*PT2 ENDIF ELSE MPOW = -PPOW QPOW = ONE+MPOW RPOW = ONE/QPOW A01 = PTMN2**QPOW A1 = PTMX2**QPOW-A01 IF(IOPT.EQ.1) THEN FJAC = QPOW*PT2**MPOW/A1 ELSE Z = A01+A1*HWRGEN(2) PT2 = Z**RPOW FJAC = A1*RPOW/Z*PT2 ENDIF ENDIF END CDECK ID>, HWH2QH. *CMZ :- -26/11/00 17.21.55 by Bryan Webber *-- Author : Kosuke Odagiri C----------------------------------------------------------------------- SUBROUTINE HWH2QH(SQS,P1,P2,P3,P4,P5,RM3,RM4,RM5,FACGPM,MGM3, & IGG,IQQ,GGQQHT,GGQQHU,GGQQHNP,QQQQH) C----------------------------------------------------------------------- C MATRIX ELEMENT SQUARED FOR THE PROCESS GG/QQ(BAR) -> QQ(BAR) HIGGS C----------------------------------------------------------------------- C NEEDS PREFACTOR G_S^4. COUPLINGS, E.G. FOR T(3)B(4)H-(5) ARE: C FACGPM(1) = GW/SQRT(TWO) M_B / M_W * TANB C FACGPM(2) = GW/SQRT(TWO) M_T / M_W / TANB C MGM3 = (TOP MASS)*(TOP WIDTH) C INITIAL STATE MOMENTA: P1=(SQS/2)(1,0,0,1), P2=(SQS/2)(1,0,0,-1) C PREFACTORS: C GGQQHTOT = (G_S**4)*(GGQQHT+GGQQHU-GGQQHNP/CAFAC**2)/(8.*CFFAC) C QQQQHTOT = (G_S**4)*(QQQQH )*(1.-1./CAFAC**2)/4. C N.B. SUBROUTINE CANNOT BE USED FOR PHOTON PHOTON -> ... C----------------------------------------------------------------------- IMPLICIT NONE C --- SUBPROCESS INTEGER IGG,IQQ C --- CENTRE-OF-MASS ENERGY, FOUR-MOMENTA, MASSES AND WIDTHS DOUBLE PRECISION SQS,P1(0:3),P2(0:3),P3(0:3),P4(0:3),P5(0:3) DOUBLE PRECISION K3(0:3),K4(0:3), Q3(0:3),Q4(0:3), R3(0:3),R4(0:3) DOUBLE PRECISION RM3,RM4,RM5, MGM3,MGM4, TWOSQS C --- SPINORS DOUBLE COMPLEX U0(4), F3(4,2),F4(4,2), F3K(4,2),F4K(4,2) DOUBLE COMPLEX F3Q(4,2,2),F4Q(4,2,2), F3R(4,2,2),F4R(4,2,2) C --- MOMENTUM PROJECTION OPERATORS DOUBLE COMPLEX P3PROJ(4,4),P4PROJ(4,4),K3PROJ(4,4),K4PROJ(4,4) DOUBLE COMPLEX Q3PROJ(4,4),Q4PROJ(4,4),R3PROJ(4,4),R4PROJ(4,4) C --- SPINOR INDICES AND PERMUTATION MATRICES INTEGER I,J,K,L, PERM0(4), PL(4,2),PR(4,2), PERMU0(4) C --- CHIRALITY PROJECTION OPERATORS: 1 = - , 2 = + DOUBLE PRECISION FACGPM(2),FACL(2,2),FACR(2,2),FAC0(2,2) C --- GG AMPLITUDES DOUBLE COMPLEX AMPS1(2,2),AMPS2(2,2) DOUBLE COMPLEX AMPT1(2,2,2,2),AMPT2(2,2,2,2),AMPT3(2,2,2,2) DOUBLE COMPLEX AMPU1(2,2,2,2),AMPU2(2,2,2,2),AMPU3(2,2,2,2) DOUBLE COMPLEX AMPS, AMPT, AMPU, AMPST, AMPSU, AMPTU DOUBLE PRECISION AMPST2, AMPSU2, AMPTU2 DOUBLE PRECISION GGQQHT,GGQQHU,GGQQHNP,QQQQH C --- QQ AMPLITUDES DOUBLE PRECISION RM3452 DOUBLE PRECISION S,PT32,PT42,PT52,GLAMBDA,LAMBDA,LAMBDAI,LA34, & PROP2,PROP3R,PROP3I,PROP4R,PROP4I,PROP34R,PT3452 DOUBLE COMPLEX PROP3,PROP4,PROP C --- CONSTANTS DOUBLE PRECISION ZERO,ONE,TWO,MONE,FAC DOUBLE COMPLEX CZERO,CONE INTEGER LEFT,RIGHT C --- PARAMETER DEFINITIONS PARAMETER (ZERO=0.D0,ONE=1.D0,TWO=2.D0,MONE=-ONE, LEFT=1,RIGHT=2) PARAMETER (CZERO=(0.D0,0.D0),CONE=(1.D0,0.D0)) SAVE MGM4,PERM0,PL,FACL,PR,FACR,PERMU0,FAC0,U0 DATA MGM4,U0,FAC0 /ZERO, 4*CONE , ONE,ZERO, ZERO, ONE / DATA PERM0 ,PERMU0 / 1,2, 3,4 , 1,0, 0,4 / DATA PL ,PR / 0,3, 0,1, 4,0, 2,0, 4,0, 2,0, 0,3, 0,1 / DATA FACL ,FACR /MONE, ONE, ONE,MONE, ONE,MONE, MONE, ONE / C --- INITIALIZE GGQQHT=ZERO GGQQHU=ZERO GGQQHNP=ZERO QQQQH=ZERO C --- GG ME. IF(IGG.EQ.0)GOTO 100 TWOSQS = 0.5D0/SQS DO I = 0, 3 Q3(I) = P3(I)-P1(I) Q4(I) = P4(I)-P2(I) R3(I) = P3(I)-P2(I) R4(I) = P4(I)-P1(I) K3(I) = P3(I)+P5(I) K4(I) = P4(I)+P5(I) END DO CALL HWUMPO(P3, RM3, (P3(0)-P3(3)) ,ZERO,P3PROJ, .FALSE.) CALL HWUMPO(P4,-RM4, (P4(0)+P4(3)) ,ZERO,P4PROJ, .FALSE.) CALL HWUMPO(Q3, RM3,-SQS*(P3(0)-P3(3)) ,ZERO,Q3PROJ, .FALSE.) CALL HWUMPO(Q4,-RM4,-SQS*(P4(0)+P4(3)) ,ZERO,Q4PROJ, .FALSE.) CALL HWUMPO(R3, RM3,-SQS*(P3(0)+P3(3)) ,ZERO,R3PROJ, .FALSE.) CALL HWUMPO(R4,-RM4,-SQS*(P4(0)-P4(3)) ,ZERO,R4PROJ, .FALSE.) CALL HWUMPO(K3, RM4,SQS*(SQS-2.D0*P4(0)),MGM4,K3PROJ, .TRUE.) CALL HWUMPO(K4,-RM3,SQS*(SQS-2.D0*P3(0)),MGM3,K4PROJ, .TRUE.) DO I=1,2 CALL HWUMPP(P3PROJ,FAC0(1,I),PERMU0 ,U0 ,F3(1,I) , LEFT) CALL HWUMPP(K3PROJ,FACGPM ,PERM0 ,F3(1,I),F3K(1,I) , LEFT) CALL HWUMPP(P4PROJ,FAC0(1,I),PERMU0 ,U0 ,F4(1,I) , RIGHT) CALL HWUMPP(K4PROJ,FACGPM ,PERM0 ,F4(1,I),F4K(1,I) , RIGHT) DO J=1,2 CALL HWUMPP(Q3PROJ,FACL(1,J),PL(1,J),F3(1,I),F3Q(1,I,J), LEFT) CALL HWUMPP(R3PROJ,FACL(1,J),PL(1,J),F3(1,I),F3R(1,I,J), LEFT) CALL HWUMPP(R4PROJ,FACR(1,J),PR(1,J),F4(1,I),F4R(1,I,J), RIGHT) CALL HWUMPP(Q4PROJ,FACR(1,J),PR(1,J),F4(1,I),F4Q(1,I,J), RIGHT) END DO END DO DO I=1,2 DO J=1,2 AMPS1(I,J)=( - F3K(1,I)* F4(3,J) + F3K(2,I)* F4(4,J) & + F3K(3,I)* F4(1,J) - F3K(4,I)* F4(2,J) ) * TWOSQS AMPS2(I,J)=( - F3(1,I)*F4K(3,J) + F3(2,I)*F4K(4,J) & + F3(3,I)*F4K(1,J) - F3(4,I)*F4K(2,J) ) * TWOSQS DO K=1,2 AMPT1(1,K,I,J)= F3K(1,I)*F4Q(4,J,K)-F3K(3,I)*F4Q(2,J,K) AMPT1(2,K,I,J)=-F3K(2,I)*F4Q(3,J,K)+F3K(4,I)*F4Q(1,J,K) AMPT3(K,1,I,J)= F3Q(1,I,K)*F4K(4,J)-F3Q(3,I,K)*F4K(2,J) AMPT3(K,2,I,J)=-F3Q(2,I,K)*F4K(3,J)+F3Q(4,I,K)*F4K(1,J) AMPU1(K,1,I,J)= F3K(1,I)*F4R(4,J,K)-F3K(3,I)*F4R(2,J,K) AMPU1(K,2,I,J)=-F3K(2,I)*F4R(3,J,K)+F3K(4,I)*F4R(1,J,K) AMPU3(1,K,I,J)= F3R(1,I,K)*F4K(4,J)-F3R(3,I,K)*F4K(2,J) AMPU3(2,K,I,J)=-F3R(2,I,K)*F4K(3,J)+F3R(4,I,K)*F4K(1,J) DO L=1,2 AMPT2(K,L,I,J) & = FACGPM(1)*( F3Q(1,I,K)*F4Q(1,J,L)+F3Q(2,I,K)*F4Q(2,J,L) ) & + FACGPM(2)*( F3Q(3,I,K)*F4Q(3,J,L)+F3Q(4,I,K)*F4Q(4,J,L) ) AMPU2(L,K,I,J) & = FACGPM(1)*( F3R(1,I,K)*F4R(1,J,L)+F3R(2,I,K)*F4R(2,J,L) ) & + FACGPM(2)*( F3R(3,I,K)*F4R(3,J,L)+F3R(4,I,K)*F4R(4,J,L) ) END DO END DO END DO END DO AMPST2 = ZERO AMPSU2 = ZERO AMPTU2 = ZERO DO I = 1, 2 DO J = 1, 2 DO K = 1, 2 DO L = 1, 2 IF (I.NE.J) THEN AMPS = AMPS1(K,L) - AMPS2(K,L) ELSE AMPS = CZERO END IF AMPT = AMPT1(I,J,K,L)+AMPT2(I,J,K,L)+AMPT3(I,J,K,L) AMPU = AMPU1(I,J,K,L)+AMPU2(I,J,K,L)+AMPU3(I,J,K,L) AMPST = AMPS - AMPT AMPSU = AMPS + AMPU AMPTU = AMPT + AMPU AMPST2 = AMPST2 + DREAL(DCONJG(AMPST)*AMPST) AMPSU2 = AMPSU2 + DREAL(DCONJG(AMPSU)*AMPSU) AMPTU2 = AMPTU2 + DREAL(DCONJG(AMPTU)*AMPTU) END DO END DO END DO END DO FAC = (P3(0)-P3(3))*(P4(0)+P4(3)) GGQQHT = FAC*AMPST2 GGQQHU = FAC*AMPSU2 GGQQHNP = FAC*AMPTU2 100 CONTINUE C --- QQ ME. IF(IQQ.EQ.0)GOTO 200 S = SQS**2 PT32 = P3(1)**2+P3(2)**2 PT42 = P4(1)**2+P4(2)**2 PT52 = P5(1)**2+P5(2)**2 PT3452 = (PT32+PT42-PT52)/TWO RM3452 = (RM3**2+RM4**2-RM5**2)/TWO GLAMBDA = FACGPM(1)**2+FACGPM(2)**2 LAMBDA = TWO*FACGPM(1)*FACGPM(2)/GLAMBDA LAMBDAI = (FACGPM(2)**2-FACGPM(1)**2)/GLAMBDA LA34 = S/TWO-SQS*P5(0)-RM3452-LAMBDA*RM3*RM4 PROP3 = ONE/DCMPLX(SQS*(SQS-TWO*P4(0)),ZERO) PROP4 = ONE/DCMPLX(SQS*(SQS-TWO*P3(0)),MGM3) PROP = PROP3+PROP4 PROP2 = DREAL(DCONJG(PROP)*PROP) PROP3R = DREAL(DCONJG(PROP)*PROP3) PROP3I = DIMAG(DCONJG(PROP)*PROP3) PROP4R = DREAL(DCONJG(PROP)*PROP4) PROP4I = DIMAG(DCONJG(PROP)*PROP4) PROP34R = DREAL(DCONJG(PROP3)*PROP4) QQQQH = TWO*GLAMBDA/S*(S*PROP2*(PT3452+TWO*P3(0)*P4(0)- & LA34)+TWO*LA34*(PROP3R*PT42+PROP4R*PT32-PROP34R*PT52)-TWO*SQS*(( & PROP3R*(P3(0)*PT42+P4(0)*PT3452)+PROP4R*(P4(0)*PT32+P3(0)*PT3452) & )-(PROP3I*P4(3)-PROP4I*P3(3))*LAMBDAI*(P3(1)*P4(2)-P3(2)*P4(1)))) 200 CONTINUE END CDECK ID>, HWH2SH. *CMZ :- -30/06/01 18.25.35 by Stefano Moretti *-- Author : Kosuke Odagiri & Stefano Moretti C----------------------------------------------------------------------- SUBROUTINE HWH2SH(SQS,P1,P2,P3,P4,P5,RM3,RM4,RM5,MGM3,MGM4, & IGG,IQQ,GGSQHT,GGSQHU,GGSQHN,QQSQH) C----------------------------------------------------------------------- C MATRIX ELEMENT SQUARED FOR THE PROCESS GG/QQ(BAR) -> SQ SQ* HIGGS C----------------------------------------------------------------------- C NEEDS PREFACTOR G_S^4 AND G_(HIGGS-SQ-SQ)^2 C MGM3, MGM4 = MASS * WIDTH C INITIAL STATE MOMENTA: P1=(SQS/2)(1,0,0,1), P2=(SQS/2)(1,0,0,-1) C PREFACTORS: C GGSQHTOT = C (G_S**4)*(G_HIGGS**2)*(GGSQHT+GGSQHU-GGSQHN/CAFAC**2)/(8.*CFFAC) C QQSQHTOT = C (G_S**4)*(G_HIGGS**2)*(QQSQH )*(1.-1./CAFAC**2)/4. C N.B. SUBROUTINE CANNOT BE USED FOR PHOTON PHOTON -> ... C C...First release: 08-OCT-1999 by Kosuke Odagiri C...First modified: 12-NOV-1999 by Stefano Moretti C----------------------------------------------------------------------- IMPLICIT NONE C --- SUBPROCESS INTEGER IGG,IQQ C --- CENTRE-OF-MASS ENERGY, FOUR-MOMENTA, MASSES AND WIDTHS DOUBLE PRECISION SQS,P1(0:3),P2(0:3),P3(0:3),P4(0:3),P5(0:3) DOUBLE PRECISION RM3,RM4,RM5, MGM3,MGM4 C --- POLARISATION INDICES, PROPAGATORS AND GG AMPLITUDES INTEGER I,J DOUBLE PRECISION G14,G24,G23,G13,MSQS, GGSQHT,GGSQHU,GGSQHN DOUBLE COMPLEX G35,G45, AMPT,AMPU,AMPS,AMPC, AMPST,AMPSU,AMPTU C --- QQ AMPLITUDES DOUBLE PRECISION QQSQH DOUBLE PRECISION PT32,PT42,PT34 DOUBLE COMPLEX PROP3,PROP4 C --- CONSTANT PARAMETERS DOUBLE PRECISION ZERO,ONE,TWO,SQTWO,MSQTWO PARAMETER (ZERO=0.D0,ONE=1.D0,TWO=2.D0) SQTWO=SQRT(TWO) MSQTWO=-SQTWO/4.D0 GGSQHT = ZERO GGSQHU = ZERO GGSQHN = ZERO QQSQH = ZERO IF(IGG.EQ.0)GOTO 100 C -- GG SCATTERING. MSQS = -SQTWO/SQS G13 = MSQS/(P3(0)-P3(3)) G23 = MSQS/(P3(0)+P3(3)) G14 = MSQS/(P4(0)-P4(3)) G24 = MSQS/(P4(0)+P4(3)) G35 = SQTWO/CMPLX(SQS*(SQS-TWO*P4(0)),MGM4) G45 = SQTWO/CMPLX(SQS*(SQS-TWO*P3(0)),MGM3) AMPS = 0.5D0*MSQS*(P4(3)*G35-P3(3)*G45) AMPC = MSQTWO*(G35+G45) DO 10 I = 1,2 DO 20 J = 1,2 AMPT=P3(I)*P4(J)*G24*G13-P4(I)*P4(J)*G24*G35-P3(I)*P3(J)*G13*G45 AMPU=P4(I)*P3(J)*G14*G23-P4(I)*P4(J)*G14*G35-P3(I)*P3(J)*G23*G45 IF (I.EQ.J) THEN AMPST = AMPT-AMPS+AMPC AMPSU = AMPU+AMPS+AMPC ELSE AMPST = AMPT AMPSU = AMPU END IF AMPTU = AMPST+AMPSU GGSQHT = GGSQHT + DREAL(DCONJG(AMPST)*AMPST) GGSQHU = GGSQHU + DREAL(DCONJG(AMPSU)*AMPSU) GGSQHN = GGSQHN + DREAL(DCONJG(AMPTU)*AMPTU) 20 CONTINUE 10 CONTINUE 100 CONTINUE IF(IQQ.EQ.0)GOTO 200 C -- QQ SCATTERING. PT32 = P3(1)**2+P3(2)**2 PT42 = P4(1)**2+P4(2)**2 PT34 = P3(1)*P4(1)+P3(2)*P4(2) PROP3 = ONE/CMPLX(SQS*(SQS-TWO*P3(0)),MGM3) PROP4 = ONE/CMPLX(SQS*(SQS-TWO*P4(0)),MGM4) QQSQH = TWO/SQS**2*DREAL(PT32*DCONJG(PROP3)*PROP3+ & PT42*DCONJG(PROP4)*PROP4-TWO*PT34*DCONJG(PROP3)*PROP4) 200 CONTINUE END CDECK ID>, HWH2SS *CMZ :- -27/02/01 17:04:16 by Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWH2SS(S,K,KK) C----------------------------------------------------------------------- C Subroutine to calculate the spinor products in the notation of C Kleiss and Strirling S(1) is S and S(2) is T C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION WRN(2),K(5),KK(5),P(5,2),Q1,Q2,EPS,QTI,PTI, & PT,QT,DPM,DMP,QP,QM,P1,P2,PP,PM DOUBLE COMPLEX S(2),ZI,Z1,ZT,ZQ,ZQS,ZPS,ZP,ZDPM,ZDMP INTEGER I,II,JJ EPS=0.0000001 ZI=DCMPLX(ZERO,ONE) Z1=DCMPLX(ONE,ZERO) C FOLLOWING DO LOOP IS TO CONVERT TO OUR STANDARD INDEXING DO I=1,4 P(I,2) = K(I) P(I,1) = KK(I) ENDDO DO 2 II=1,2 WRN(II)=ONE IF(P(4,II).LT.ZERO) WRN(II)=-ONE DO 2 JJ=1,4 P(JJ,II)=WRN(II)*P(JJ,II) 2 CONTINUE C THE ABOVE CHECKS FOR MOMENTA WITH NEGATIVE ENERGY,INNER PRODUCTS C ARE EXPRESSED DIFFERENTLY FOR DIFFERENT CASES Q1=P(4,1)+P(1,1) QP=ZERO IF(Q1.GT.EPS) QP=SQRT(Q1) Q2=P(4,1)-P(1,1) QM=0.0 IF(Q2.GT.EPS)QM=SQRT(Q2) P1=P(4,2)+P(1,2) PP=ZERO IF(P1.GT.EPS)PP=SQRT(P1) P2=P(4,2)-P(1,2) PM=ZERO IF(P2.GT.EPS)PM=SQRT(P2) DMP=PM*QP ZDMP=DCMPLX(DMP,ZERO) DPM=PP*QM ZDPM=DCMPLX(DPM,ZERO) C NOTE THAT IN OUR INNER PRODUCT NOTATION WE ARE COMPUTING
PT=SQRT(P(2,2)**2+P(3,2)**2) QT=SQRT(P(2,1)**2+P(3,1)**2) IF(PT.GT.EPS) GOTO 99 ZP=Z1 GOTO 98 99 PTI=ONE/PT ZP=DCMPLX(PTI*P(2,2),PTI*P(3,2)) 98 ZPS=DCONJG(ZP) IF(QT.GT.EPS) GOTO 89 ZQ=Z1 GOTO 88 89 QTI=ONE/QT ZQ=DCMPLX(QTI*P(2,1),QTI*P(3,1)) 88 ZQS=DCONJG(ZQ) ZT=Z1 IF(WRN(1).LT.ZERO) ZT=ZT*ZI IF(WRN(2).LT.ZERO) ZT=ZT*ZI S(2)=-(ZDMP*ZP-ZDPM*ZQ)*ZT S(1)=(ZDMP*ZPS-ZDPM*ZQS)*ZT END CDECK ID>, HWH2T1. *CMZ :- -27/02/01 17:04:16 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWH2T1(I,J,K,L,Z1,Z2,P1) C----------------------------------------------------------------------- C Returns the amplitude T1 from Nucl. Phys. B262 (1985) 235-262 C I-L are the particles C Z1 and Z2 are the decay products of the Z C P1 is the polarization of the line I,J C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX HWH2T1,S,D INTEGER I,J,K,L,Z1,Z2,P1 COMMON/HWHEWS/S(8,8,2),D(8,8) IF(P1.EQ.1) THEN HWH2T1 = TWO*S(I,Z2,1)*S(Z1,J,2) ELSEIF(P1.EQ.2) THEN HWH2T1 = TWO*S(I,Z1,2)*S(Z2,J,1) ELSE CALL HWWARN('HWH2T1',500) ENDIF END CDECK ID>, HWH2T2 *CMZ :- -27/02/01 17:04:16 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWH2T2(I,J,K,L,Z1,Z2,P1,P2) C----------------------------------------------------------------------- C Returns the amplitude T2 from Nucl. Phys. B262 (1985) 235-262 C I-L are the particles C Z1 and Z2 are the decay products of the Z C P1 is the polarization of the line I,J C P2 is the polarization of the gluon K C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX HWH2T2,S,D INTEGER I,J,K,L,Z1,Z2,P1,P2 DOUBLE PRECISION B(6) COMMON/HWHEWS/S(8,8,2),D(8,8) SAVE B DATA B/-1.0D0,-1.0D0,1.0D0,1.0D0,1.0D0,1.0D0/ IF(P1.EQ.1.AND.P2.EQ.1) THEN HWH2T2 = FOUR*B(J)*S(I,Z2,1)*S(Z1,J,2)*S(J,K,1)*S(I,J,2) ELSEIF(P1.EQ.1.AND.P2.EQ.2) THEN HWH2T2 = FOUR*S(I,Z2,1)*S(K,J,2)*(B(J)*S(Z1,J,2)*S(J,I,1) & +B(K)*S(Z1,K,2)*S(K,I,1)) ELSEIF(P1.EQ.2.AND.P2.EQ.1) THEN HWH2T2 = FOUR*S(I,Z1,2)*S(K,J,1)*(B(J)*S(Z2,J,1)*S(J,I,2) & +B(K)*S(Z2,K,1)*S(K,I,2)) ELSEIF(P1.EQ.2.AND.P2.EQ.2) THEN HWH2T2 = FOUR*B(J)*S(I,Z1,2)*S(Z2,J,1)*S(J,K,2)*S(I,J,1) ELSE CALL HWWARN('HWH2T2',500) ENDIF END CDECK ID>, HWH2T3. *CMZ :- -27/02/01 17:04:16 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWH2T3(I,J,K,L,Z1,Z2,P1,P2) C----------------------------------------------------------------------- C Returns the amplitude T3 from Nucl. Phys. B262 (1985) 235-262 C I-L are the particles C Z1 and Z2 are the decay products of the Z C P1 is the polarization of the line I,J C P2 is the polarization of the gluon K C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX HWH2T3,S,D INTEGER I,J,K,L,Z1,Z2,P1,P2 DOUBLE PRECISION B(6) COMMON/HWHEWS/S(8,8,2),D(8,8) SAVE B DATA B/-1.0D0,-1.0D0,1.0D0,1.0D0,1.0D0,1.0D0/ IF(P1.EQ.1.AND.P2.EQ.1) THEN HWH2T3 = FOUR*B(K)*S(I,K,1)*S(I,K,2)*S(K,Z2,1)*S(Z1,J,2) ELSEIF(P1.EQ.1.AND.P2.EQ.2) THEN HWH2T3 = ZERO ELSEIF(P1.EQ.2.AND.P2.EQ.1) THEN HWH2T3 = ZERO ELSEIF(P1.EQ.2.AND.P2.EQ.2) THEN HWH2T3 = FOUR*B(K)*S(I,K,2)*S(I,K,1)*S(K,Z1,2)*S(Z2,J,1) ELSE CALL HWWARN('HWH2T3',500) ENDIF END CDECK ID>, HWH2T4 *CMZ :- -27/02/01 17:04:16 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWH2T4(I,J,K,L,Z1,Z2,P1,P2) C----------------------------------------------------------------------- C Returns the amplitude T4 from Nucl. Phys. B262 (1985) 235-262 C I-L are the particles C Z1 and Z2 are the decay products of the Z C P1 is the polarization of the line I,J C P2 is the polarization of the line K,L C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX HWH2T4,AP,AM,S,D INTEGER I,J,K,L,Z1,Z2,J1,J2,J3,J4,P1,P2 DOUBLE PRECISION B(6) COMMON/HWHEWS/S(8,8,2),D(8,8) SAVE B DATA B/-1.0D0,-1.0D0,1.0D0,1.0D0,1.0D0,1.0D0/ AP(J1,J2,J3,J4) = FOUR*S(J1,Z2,1)*S(J4,J2,2)* & (S(Z1,Z2,2)*S(Z2,J3,1)+B(J1)*S(Z1,J1,2)*S(J1,J3,1)) AM(J1,J2,J3,J4) = FOUR*S(J1,Z1,2)*S(J4,J2,1)* & (S(Z2,Z1,1)*S(Z1,J3,2)+B(J1)*S(Z2,J1,1)*S(J1,J3,2)) IF(P1.EQ.1.AND.P2.EQ.1) THEN HWH2T4 = AP(I,J,K,L) ELSEIF(P1.EQ.1.AND.P2.EQ.2) THEN HWH2T4 = AP(I,J,L,K) ELSEIF(P1.EQ.2.AND.P2.EQ.1) THEN HWH2T4 = AM(I,J,L,K) ELSEIF(P1.EQ.2.AND.P2.EQ.2) THEN HWH2T4 = AM(I,J,K,L) ELSE CALL HWWARN('HWH2T4',500) ENDIF END CDECK ID>, HWH2T5 *CMZ :- -27/02/01 17:04:16 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWH2T5(I,J,K,L,Z1,Z2,P1,P2) C----------------------------------------------------------------------- C Returns the amplitude T5 from Nucl. Phys. B262 (1985) 235-262 C I-L are the particles C Z1 and Z2 are the decay products of the Z C P1 is the polarization of the line I,J C P2 is the polarization of the line K,L C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX HWH2T5,AP,AM,S,D INTEGER I,J,K,L,Z1,Z2,J1,J2,J3,J4,P1,P2 DOUBLE PRECISION B(6) COMMON/HWHEWS/S(8,8,2),D(8,8) SAVE B DATA B/-1.0D0,-1.0D0,1.0D0,1.0D0,1.0D0,1.0D0/ AP(J1,J2,J3,J4) = FOUR*S(J1,Z2,1)*S(J4,J2,2)* & (S(Z1,Z2,2)*S(Z2,J3,1)+B(J1)*S(Z1,J1,2)*S(J1,J3,1)) AM(J1,J2,J3,J4) = FOUR*S(J1,Z1,2)*S(J4,J2,1)* & (S(Z2,Z1,1)*S(Z1,J3,2)+B(J1)*S(Z2,J1,1)*S(J1,J3,2)) IF(P1.EQ.1.AND.P2.EQ.1) THEN HWH2T5 = AM(J,I,L,K) ELSEIF(P1.EQ.1.AND.P2.EQ.2) THEN HWH2T5 = AM(J,I,K,L) ELSEIF(P1.EQ.2.AND.P2.EQ.1) THEN HWH2T5 = AP(J,I,K,L) ELSEIF(P1.EQ.2.AND.P2.EQ.2) THEN HWH2T5 = AP(J,I,L,K) ELSE CALL HWWARN('HWH2T5',500) ENDIF END CDECK ID>, HWH2T6 *CMZ :- -27/02/01 17:04:16 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWH2T6(I,J,K,L,Z1,Z2,P1,P2,P3) C----------------------------------------------------------------------- C Returns the amplitude T6 from Nucl. Phys. B262 (1985) 235-262 C I-L are the particles C Z1 and Z2 are the decay products of the Z C P1 is the polarization of the line I,J C P2 is the polarization of the gluon K C P3 is the polarization of the gluon L C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX HWH2T6,S,D INTEGER I,J,K,L,Z1,Z2,J1,J2,P1,P2,P3 DOUBLE PRECISION B(6) COMMON/HWHEWS/S(8,8,2),D(8,8) SAVE B DATA B/-1.0D0,-1.0D0,1.0D0,1.0D0,1.0D0,1.0D0/ IF(P1.EQ.1) THEN J1 = Z1 J2 = Z2 ELSE J1 = Z2 J2 = Z1 ENDIF IF((P1.EQ.1.AND.P2.EQ.1.AND.P3.EQ.1).OR. & (P1.EQ.2.AND.P2.EQ.2.AND.P3.EQ.2)) THEN HWH2T6 = 8.0D0*B(J)*S(I,J2,1)*D(L,J)*S(K,J,2)* & (B(J)*S(J1,J,2)*S(J,K,1)+B(L)*S(J1,L,2)*S(L,K,1)) ELSEIF((P1.EQ.1.AND.P2.EQ.1.AND.P3.EQ.2).OR. & (P1.EQ.2.AND.P2.EQ.2.AND.P3.EQ.1)) THEN HWH2T6 = 8.0D0*B(J)*S(I,J2,1)*S(L,J,2)*S(J,K,1)*S(L,J,2)* & (B(J)*S(J1,J,2)*S(J,K,1)+B(L)*S(J1,L,2)*S(L,K,1)) ELSEIF((P1.EQ.1.AND.P2.EQ.2.AND.P3.EQ.1).OR. & (P1.EQ.2.AND.P2.EQ.1.AND.P3.EQ.2)) THEN HWH2T6 = 8.0D0*B(J)*S(I,J2,1)*S(K,J,2)*S(J,L,1)*S(K,J,2)* & (B(J)*S(J1,J,2)*S(J,L,1)+B(K)*S(J1,K,2)*S(K,L,1)) ELSEIF((P1.EQ.1.AND.P2.EQ.2.AND.P3.EQ.2).OR. & (P1.EQ.2.AND.P2.EQ.1.AND.P3.EQ.1)) THEN HWH2T6 = 8.0D0*S(I,J2,1)*S(L,J,2)*(B(J)*D(K,J)+B(L)*D(K,L))* & (B(J)*S(J1,J,2)*S(J,L,1)+B(K)*S(J1,K,2)*S(K,L,1)) ELSE CALL HWWARN('HWH2T6',500) ENDIF IF(P1.EQ.2) HWH2T6 = DCONJG(HWH2T6) END CDECK ID>, HWH2T7 *CMZ :- -27/02/01 17:04:16 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWH2T7(I,J,K,L,Z1,Z2,P1,P2,P3) C----------------------------------------------------------------------- C Returns the amplitude T7 from Nucl. Phys. B262 (1985) 235-262 C I-L are the particles C Z1 and Z2 are the decay products of the Z C P1 is the polarization of the line I,J C P2 is the polarization of the gluon K C P3 is the polarization of the gluon L C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX HWH2T7,S,D INTEGER I,J,K,L,Z1,Z2,J1,J2,P1,P2,P3 DOUBLE PRECISION B(6) COMMON/HWHEWS/S(8,8,2),D(8,8) SAVE B DATA B/-1.0D0,-1.0D0,1.0D0,1.0D0,1.0D0,1.0D0/ IF(P1.EQ.1) THEN J1 = Z1 J2 = Z2 ELSE J1 = Z2 J2 = Z1 ENDIF IF((P1.EQ.1.AND.P2.EQ.1.AND.P3.EQ.1).OR. & (P1.EQ.2.AND.P2.EQ.2.AND.P3.EQ.2)) THEN HWH2T7 = 8.0D0*B(J)*S(I,K,1)*S(J1,J,2)*S(J,L,1)*S(K,J,2)* & (B(I)*S(L,I,2)*S(I,J2,1)+B(K)*S(L,K,2)*S(K,J2,1)) ELSEIF((P1.EQ.1.AND.P2.EQ.1.AND.P3.EQ.2).OR. & (P1.EQ.2.AND.P2.EQ.2.AND.P3.EQ.1)) THEN HWH2T7 = 8.0D0*S(I,K,1)*S(L,J,2)* & (B(I)*S(L,I,2)*S(I,J2,1)+B(K)*S(L,K,2)*S(K,J2,1))* & (B(J)*S(J1,J,2)*S(J,K,1)+B(L)*S(J1,L,2)*S(L,K,1)) ELSEIF((P1.EQ.1.AND.P2.EQ.2.AND.P3.EQ.1).OR. & (P1.EQ.2.AND.P2.EQ.1.AND.P3.EQ.2)) THEN HWH2T7 = 8.0D0*B(I)*B(J)*S(I,L,1)*S(K,I,2)* & S(I,J2,1)*S(J1,J,2)*S(J,L,1)*S(K,J,2) ELSEIF((P1.EQ.1.AND.P2.EQ.2.AND.P3.EQ.2).OR. & (P1.EQ.2.AND.P2.EQ.1.AND.P3.EQ.1)) THEN HWH2T7 = 8.0D0*B(I)*S(I,L,1)*S(K,I,2)*S(I,J2,1)*S(L,J,2)* & (B(J)*S(J1,J,2)*S(J,K,1)+B(L)*S(J1,L,2)*S(L,K,1)) ELSE CALL HWWARN('HWH2T7',500) ENDIF IF(P1.EQ.2) HWH2T7 = DCONJG(HWH2T7) END CDECK ID>, HWH2T8 *CMZ :- -27/02/01 17:04:16 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWH2T8(I,J,K,L,Z1,Z2,P1,P2,P3) C----------------------------------------------------------------------- C Returns the amplitude T8 from Nucl. Phys. B262 (1985) 235-262 C I-L are the particles C Z1 and Z2 are the decay products of the Z C P1 is the polarization of the line I,J C P2 is the polarization of the gluon K C P3 is the polarization of the gluon L C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX HWH2T8,S,D INTEGER I,J,K,L,Z1,Z2,J1,J2,P1,P2,P3 DOUBLE PRECISION B(6) COMMON/HWHEWS/S(8,8,2),D(8,8) SAVE B DATA B/-1.0D0,-1.0D0,1.0D0,1.0D0,1.0D0,1.0D0/ IF(P1.EQ.1) THEN J1 = Z1 J2 = Z2 ELSE J1 = Z2 J2 = Z1 ENDIF IF((P1.EQ.1.AND.P2.EQ.1.AND.P3.EQ.1).OR. & (P1.EQ.2.AND.P2.EQ.2.AND.P3.EQ.2)) THEN HWH2T8 = 8.0D0*S(I,K,1)*S(J1,J,2)*(B(I)*D(L,I)+B(K)*D(L,K))* & (B(I)*S(K,I,2)*S(I,J2,1)+B(L)*S(K,L,2)*S(L,J2,1)) ELSEIF((P1.EQ.1.AND.P2.EQ.1.AND.P3.EQ.2).OR. & (P1.EQ.2.AND.P2.EQ.2.AND.P3.EQ.1)) THEN HWH2T8 = 8.0D0*B(I)*S(I,K,1)*S(L,I,2)*S(I,K,1)*S(J1,J,2)* & (B(I)*S(L,I,2)*S(I,J2,1)+B(K)*S(L,K,2)*S(K,J2,1)) ELSEIF((P1.EQ.1.AND.P2.EQ.2.AND.P3.EQ.1).OR. & (P1.EQ.2.AND.P2.EQ.1.AND.P3.EQ.2)) THEN HWH2T8 = 8.0D0*B(I)*S(I,L,1)*S(K,I,2)*S(I,L,1)*S(J1,J,2)* & (B(I)*S(K,I,2)*S(I,J2,1)+B(L)*S(K,L,2)*S(L,J2,1)) ELSEIF((P1.EQ.1.AND.P2.EQ.2.AND.P3.EQ.2).OR. & (P1.EQ.2.AND.P2.EQ.1.AND.P3.EQ.1)) THEN HWH2T8 = 8.0D0*B(I)*S(I,L,1)*D(I,K)*S(J1,J,2)* & (B(I)*S(L,I,2)*S(I,J2,1)+B(K)*S(L,K,2)*S(K,J2,1)) ELSE CALL HWWARN('HWH2T8',500) ENDIF IF(P1.EQ.2) HWH2T8 = DCONJG(HWH2T8) END CDECK ID>, HWH2T9 *CMZ :- -27/02/01 17:04:16 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWH2T9(I,J,K,L,Z1,Z2,P1,P2,P3) C----------------------------------------------------------------------- C Returns the amplitude T9 from Nucl. Phys. B262 (1985) 235-262 C N.B. DELTA FUNCTION FOR THE GLUON POLARIZATIONS HERE C I-L are the particles C Z1 and Z2 are the decay products of the Z C P1 is the polarization of the line I,J C P2 is the polarization of the gluon K C P3 is the polarization of the gluon L C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX HWH2T9,S,D INTEGER I,J,K,L,Z1,Z2,J1,J2,P1,P2,P3 DOUBLE PRECISION B(6) COMMON/HWHEWS/S(8,8,2),D(8,8) SAVE B DATA B/-1.0D0,-1.0D0,1.0D0,1.0D0,1.0D0,1.0D0/ IF(P2.NE.P3) THEN HWH2T9 = ZERO ELSE IF(P1.EQ.1) THEN J1 = Z1 J2 = Z2 ELSEIF(P1.EQ.2) THEN J1 = Z2 J2 = Z1 ENDIF HWH2T9 = TWO*S(I,J2,1)*( & B(K)*S(K,J,2)*(B(J)*S(J1,J,2)*S(J,K,1) & +B(L)*S(J1,L,2)*S(L,K,1)) & -B(L)*S(L,J,2)*(B(J)*S(J1,J,2)*S(J,L,1) & +B(K)*S(J1,K,2)*S(K,L,1))) IF(P1.EQ.2) HWH2T9 = DCONJG(HWH2T9) ENDIF END CDECK ID>, HWH2T0 *CMZ :- -27/02/01 17:04:16 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- FUNCTION HWH2T0(I,J,K,L,Z1,Z2,P1,P2,P3) C----------------------------------------------------------------------- C Returns the amplitude T10 from Nucl. Phys. B262 (1985) 235-262 C N.B. DELTA FUNCTION FOR THE GLUON POLARIZATIONS HERE C I-L are the particles C Z1 and Z2 are the decay products of the Z C P1 is the polarization of the line I,J C P2 is the polarization of the gluon K C P3 is the polarization of the gluon L C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE COMPLEX HWH2T0,S,D INTEGER I,J,K,L,Z1,Z2,J1,J2,P1,P2,P3 DOUBLE PRECISION B(6) COMMON/HWHEWS/S(8,8,2),D(8,8) SAVE B DATA B/-1.0D0,-1.0D0,1.0D0,1.0D0,1.0D0,1.0D0/ IF(P2.NE.P3) THEN HWH2T0 = ZERO ELSE IF(P1.EQ.1) THEN J1 = Z1 J2 = Z2 ELSEIF(P1.EQ.2) THEN J1 = Z2 J2 = Z1 ENDIF HWH2T0 = TWO*S(J1,J,2)*( & B(K)*S(I,K,1)*(B(I)*S(K,I,2)*S(I,J2,1) & +B(L)*S(K,L,2)*S(L,J2,1)) & -B(L)*S(I,L,1)*(B(I)*S(L,I,2)*S(I,J2,1) & +B(K)*S(L,K,2)*S(K,J2,1))) IF(P1.EQ.2) HWH2T0 = DCONJG(HWH2T0) ENDIF END CDECK ID>, HWH2VH. *CMZ :- -26/11/00 17.21.55 by Bryan Webber *-- Author : Stefano Moretti C----------------------------------------------------------------------- SUBROUTINE HWH2VH(P1,P2,P3,P4,RMV,RES,RESL,REST) C----------------------------------------------------------------------- C...Matrix element for q(1) + q(')-bar(2) -> V(3) + Higgs(4), C...V=Z(W+/-), all masses retained (but no Yukawa couplings to quarks). C...It factorises 64.*PIFAC**3*ALPHA**3/4./SWEIN/SWEIN/SWEIN/EMW/EMW C...times: C... (VQ*VQ+AQ*AQ)/(1.-SWEIN)/(1.-SWEIN) if V=Z C... VCKM(q,q') if V=W+/- C C...First release: 1-APR-1998 by Stefano Moretti C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION P1(0:3),P2(0:3),P3(0:3),P4(0:3) DOUBLE PRECISION P(0:3) DOUBLE PRECISION RMV,GAMV,RES,RESL,REST INTEGER I DOUBLE PRECISION S,S12,S13,S23 DOUBLE PRECISION T, T13,T23 DOUBLE PRECISION PV,CFC PARAMETER (GAMV=0.D0) S=(P1(0)+P2(0))**2 DO I=1,3 S=S-(P1(I)+P2(I))**2 END DO S12=P1(0)*P2(0) S13=P1(0)*P3(0) S23=P2(0)*P3(0) DO I=1,3 S12=S12-P1(I)*P2(I) S13=S13-P1(I)*P3(I) S23=S23-P2(I)*P3(I) END DO C...Total ME. RES=(S12+2.D0/RMV/RMV*(S13*S23)) & /((S-RMV**2)**2+GAMV**2*RMV**2) & /12.D0 C...Extracts spin dependence. PV=SQRT(P3(1)**2+P3(2)**2+P3(3)**2) CFC=P3(0)/PV DO I=1,3 P(I)=P3(I)*CFC END DO P(0)=PV**2/P3(0)*CFC T=P(0)**2 DO I=1,3 T=T-P(I)**2 END DO T13=P1(0)*P(0) T23=P2(0)*P(0) DO I=1,3 T13=T13-P1(I)*P(I) T23=T23-P2(I)*P(I) END DO C...Longitudinal ME (along V direction). RESL=(2.D0/RMV/RMV*(T13*T23)-S12*T/RMV/RMV) & /((S-RMV**2)**2+GAMV**2*RMV**2) & /12.D0 C...Transverse ME (perpendicular to V direction). REST=RES-RESL END CDECK ID>, HWH4JT. *CMZ :- -01/04/99 19.47.55 by Mike Seymour *-- Author : Ian Knowles C----------------------------------------------------------------------- SUBROUTINE HWH4JT C----------------------------------------------------------------------- C Four jet production in e^+e^- annihilation: qqbar+gg & qqbar+qqbar C IOP4JT controls the treatment of the colour flow interference term C qqbar-gg case: C IOP4JT(1)=0 neglect, =1 extreme 2341; =2 extreme 3421 C qqbar-qqbar (identical quark flavour) case: C IOP4JT(2)=0 neglect, =1 extreme 4123; =2 extreme 2143 C C Matrix elements based on Ellis Ross & Terrano and Catani & Seymour C C WARNING: Phase space factor inaccurate for JADE y_cut > 0.14. C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER LM,LP,IQK,I,J,IDMN,IDMX,ID1,ID2,IST(4) DOUBLE PRECISION HWRGEN,HWUALF,HWUAEM,HWULDO,HWH4J1,HWH4J2, & HWH4J4,HWH4J5,HWH4J6,HWH4J7,QNOW,Q2NOW,QLST,SCUT,PSFAC,FACT, & X12,X13,X14,X23,X24,X34, & COLA,COLB,COLC,CLF(7,6),P12,P13,P14,P23,P24,P34,FACTR,EP1,EP2, & EP3,EP4,GG1,GG2,GG12,GG3,GG13,GG23,GGINT,WTGG,QQ,QP,QQINT,QQ1, & QQ2,WTQQ,WTQP,HCS,WTAB,WTBA,WTOT,RCS,YLST $ ,EF,QF,E(4) LOGICAL INCLQG(6),INCLQQ(6,6),ORIENT EXTERNAL HWRGEN,HWUALF,HWUAEM,HWULDO,HWH4J1,HWH4J2,HWH4J4, & HWH4J5,HWH4J6,HWH4J7 SAVE HCS,QLST,WTQP,WTQQ,WTGG,FACTR,COLA,COLB,COLC,IDMN,IDMX, & CLF,GG1,GG2,GGINT,INCLQG,INCLQQ,LM,LP,QQ1,QQ2,QQINT,FACT,ORIENT, & Q2NOW,SCUT,YLST SAVE IST DATA QLST,YLST,IST/-1D0,-1D0,113,114,114,114/ C IF (GENEV) THEN RCS=HCS*HWRGEN(0) ELSE IF (NHEP+5.GT.NMXHEP) THEN CALL HWWARN('HWH4JT',100) GOTO 999 ENDIF QNOW=PHEP(5,3) IF (QNOW.NE.QLST.OR.Y4JT.NE.YLST) THEN QLST=QNOW YLST=Y4JT Q2NOW=QNOW**2 SCUT=Y4JT*Q2NOW C Calculate allowed fraction of Phase Space using parameterization IF (DURHAM) THEN PSFAC=(1.-6.*Y4JT)**5.50*(1.-173.3*Y4JT*(1.-247.3*Y4JT & *(1.+148.3*Y4JT*(1.+3.913*Y4JT)))) & /(1.-8.352*Y4JT*(1.-1102.*Y4JT & *(1.+1603.*Y4JT*(1.+22.99*Y4JT)))) ELSE PSFAC=(1.-6.*Y4JT)**4.62*(1.-44.72*Y4JT*(1.-176.0*Y4JT & *(1.+102.9*Y4JT*(1.-6.579*Y4JT)))) & /(1.-3.392*Y4JT*(1.-946.5*Y4JT & *(1.+423.4*Y4JT*(1.-3.971*Y4JT)))) ENDIF FACT=GEV2NB*HWUAEM(Q2NOW)**2*CFFAC*FLOAT(NCOLO)*PSFAC & /(THREE*16*PIFAC) COLA=CFFAC COLB=CFFAC-HALF*CAFAC COLC=HALF LM=1 IF (JDAHEP(1,LM).NE.0) LM=JDAHEP(1,LM) LP=2 IF (JDAHEP(1,LP).NE.0) LP=JDAHEP(1,LP) IQK=MOD(IPROC,10) IF (IQK.NE.0) THEN IDMN=IQK IDMX=IQK ELSE IDMN=1 IDMX=6 ENDIF DO 10 I=1,6 CALL HWUCFF(11,I,Q2NOW,CLF(1,I)) IF (QNOW.GT.TWO*(RMASS(I)+RMASS(13))) THEN INCLQG(I)=.TRUE. ELSE INCLQG(I)=.FALSE. ENDIF DO 10 J=I,6 IF (QNOW.GT.TWO*(RMASS(I)+RMASS(J ))) THEN INCLQQ(I,J)=.TRUE. INCLQQ(J,I)=.TRUE. ELSE INCLQQ(I,J)=.FALSE. INCLQQ(J,I)=.FALSE. ENDIF 10 CONTINUE IF (MOD(IPROC/10,10).EQ.5) THEN ORIENT=.FALSE. ELSE ORIENT=.TRUE. ENDIF ENDIF C Generate phase space point and check it passes cuts CALL HWVEQU(5,PHEP(1,3),PHEP(1,NHEP+1)) DO 20 I=2,5 20 PHEP(5,NHEP+I)=0. 30 CALL HWDFOR(PHEP(1,NHEP+1),PHEP(1,NHEP+2),PHEP(1,NHEP+3), & PHEP(1,NHEP+4),PHEP(1,NHEP+5)) IF(IERROR.NE.0) RETURN IF (DURHAM) THEN P12=2*HWULDO(PHEP(1,NHEP+2),PHEP(1,NHEP+3)) X12=MIN(PHEP(4,NHEP+2)/PHEP(4,NHEP+3), & PHEP(4,NHEP+3)/PHEP(4,NHEP+2))*P12 IF (X12.GT.SCUT) THEN P13=2*HWULDO(PHEP(1,NHEP+2),PHEP(1,NHEP+4)) X13=MIN(PHEP(4,NHEP+2)/PHEP(4,NHEP+4), & PHEP(4,NHEP+4)/PHEP(4,NHEP+2))*P13 IF (X13.GT.SCUT) THEN P14=2*HWULDO(PHEP(1,NHEP+2),PHEP(1,NHEP+5)) X14=MIN(PHEP(4,NHEP+2)/PHEP(4,NHEP+5), & PHEP(4,NHEP+5)/PHEP(4,NHEP+2))*P14 IF (X14.GT.SCUT) THEN P23=2*HWULDO(PHEP(1,NHEP+3),PHEP(1,NHEP+4)) X23=MIN(PHEP(4,NHEP+3)/PHEP(4,NHEP+4), & PHEP(4,NHEP+4)/PHEP(4,NHEP+3))*P23 IF (X23.GT.SCUT) THEN P24=2*HWULDO(PHEP(1,NHEP+3),PHEP(1,NHEP+5)) X24=MIN(PHEP(4,NHEP+3)/PHEP(4,NHEP+5), & PHEP(4,NHEP+5)/PHEP(4,NHEP+3))*P24 IF (X24.GT.SCUT) THEN P34=2*HWULDO(PHEP(1,NHEP+4),PHEP(1,NHEP+5)) X34=MIN(PHEP(4,NHEP+4)/PHEP(4,NHEP+5), & PHEP(4,NHEP+5)/PHEP(4,NHEP+4))*P34 IF (X34.GT.SCUT) GOTO 40 ENDIF ENDIF ENDIF ENDIF ENDIF ELSE P12=2*HWULDO(PHEP(1,NHEP+2),PHEP(1,NHEP+3)) IF (P12.GT.SCUT) THEN P13=2*HWULDO(PHEP(1,NHEP+2),PHEP(1,NHEP+4)) IF (P13.GT.SCUT) THEN P14=2*HWULDO(PHEP(1,NHEP+2),PHEP(1,NHEP+5)) IF (P14.GT.SCUT) THEN P23=2*HWULDO(PHEP(1,NHEP+3),PHEP(1,NHEP+4)) IF (P23.GT.SCUT) THEN P24=2*HWULDO(PHEP(1,NHEP+3),PHEP(1,NHEP+5)) IF (P24.GT.SCUT) THEN P34=2*HWULDO(PHEP(1,NHEP+4),PHEP(1,NHEP+5)) IF (P34.GT.SCUT) GOTO 40 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF C Failed cuts retry GOTO 30 C Passed cuts: calculate contributions to Matrix Elements 40 EMSCA=SQRT(MIN(P12,P13,P14,P23,P24,P34)) IF (DURHAM) EMSCA=SQRT(MIN(X12,X13,X14,X23,X24,X34)) IF (FIX4JT) EMSCA=SQRT(SCUT) FACTR=FACT*HWUALF(1,EMSCA)**2 IF (ORIENT) THEN QF=HWULDO(PHEP(1,LP),PHEP(1,3)) EF=Q2NOW/(2*SQRT(QF**2-HWULDO(PHEP(1,LP),PHEP(1,LP))*Q2NOW)) QF=HALF-EF*QF/Q2NOW DO I=1,4 E(I)=EF*PHEP(I,LP)+QF*PHEP(I,3) ENDDO EP1=HWULDO(E,PHEP(1,NHEP+2)) EP2=HWULDO(E,PHEP(1,NHEP+3)) EP3=HWULDO(E,PHEP(1,NHEP+4)) EP4=HWULDO(E,PHEP(1,NHEP+5)) ENDIF C q-qbar-g-g GG1=HWH4J1(P12,P13,P14,P23,P24,P34,EP1,EP2,EP3,EP4,ORIENT) & +HWH4J1(P12,P24,P23,P14,P13,P34,EP2,EP1,EP4,EP3,ORIENT) GG2=HWH4J1(P12,P23,P24,P13,P14,P34,EP2,EP1,EP3,EP4,ORIENT) & +HWH4J1(P12,P14,P13,P24,P23,P34,EP1,EP2,EP4,EP3,ORIENT) GG12=HWH4J2(P12,P13,P14,P23,P24,P34,EP1,EP2,EP3,EP4,ORIENT) & +HWH4J2(P12,P14,P13,P24,P23,P34,EP1,EP2,EP4,EP3,ORIENT) & +HWH4J2(P12,P23,P24,P13,P14,P34,EP2,EP1,EP3,EP4,ORIENT) & +HWH4J2(P12,P24,P23,P14,P13,P34,EP2,EP1,EP4,EP3,ORIENT) GG3=HWH4J4(P12,P13,P14,P23,P24,P34,EP1,EP2,EP3,EP4,ORIENT) & +HWH4J4(P12,P24,P23,P14,P13,P34,EP2,EP1,EP4,EP3,ORIENT) GG13=GG3+HWH4J5(P12,P13,P14,P23,P24,P34,EP1,EP2,EP3,EP4,ORIENT) & +HWH4J5(P12,P24,P23,P14,P13,P34,EP2,EP1,EP4,EP3,ORIENT) GG23=GG3+HWH4J5(P12,P14,P13,P24,P23,P34,EP1,EP2,EP4,EP3,ORIENT) & +HWH4J5(P12,P23,P24,P13,P14,P34,EP2,EP1,EP3,EP4,ORIENT) C Add up weights GG1 =COLA*(GG1 +GG13) GG2 =COLA*(GG2 +GG23) GGINT=COLB*(GG12-GG13-GG23) WTGG=FACTR*(GG1+GG2+GGINT) C q-qbar-q-qbar QP=HWH4J6(P13,P12,P14,P23,P34,P24,EP1,EP3,EP2,EP4,ORIENT) & +HWH4J6(P24,P12,P23,P14,P34,P13,EP2,EP4,EP1,EP3,ORIENT) & +HWH4J6(P13,P34,P23,P14,P12,P24,EP3,EP1,EP4,EP2,ORIENT) & +HWH4J6(P24,P34,P14,P23,P12,P13,EP4,EP2,EP3,EP1,ORIENT) QQ=HWH4J6(P13,P23,P34,P12,P14,P24,EP3,EP1,EP2,EP4,ORIENT) & +HWH4J6(P24,P23,P12,P34,P14,P13,EP2,EP4,EP3,EP1,ORIENT) & +HWH4J6(P13,P14,P12,P34,P23,P24,EP1,EP3,EP4,EP2,ORIENT) & +HWH4J6(P24,P14,P34,P12,P23,P13,EP4,EP2,EP1,EP3,ORIENT) QQINT=HWH4J7(P13,P12,P14,P23,P34,P24,EP1,EP3,EP2,EP4,ORIENT) & +HWH4J7(P24,P12,P23,P14,P34,P13,EP2,EP4,EP1,EP3,ORIENT) & +HWH4J7(P13,P23,P34,P12,P14,P24,EP3,EP1,EP2,EP4,ORIENT) & +HWH4J7(P24,P23,P12,P34,P14,P13,EP2,EP4,EP3,EP1,ORIENT) & +HWH4J7(P13,P14,P12,P34,P23,P24,EP1,EP3,EP4,EP2,ORIENT) & +HWH4J7(P24,P14,P34,P12,P23,P13,EP4,EP2,EP1,EP3,ORIENT) & +HWH4J7(P13,P34,P23,P14,P12,P24,EP3,EP1,EP4,EP2,ORIENT) & +HWH4J7(P24,P34,P14,P23,P12,P13,EP4,EP2,EP3,EP1,ORIENT) C Add up weights WTQP=FACTR*COLC*QP/TWO QQ1 =COLC*QP QQ2 =COLC*QQ QQINT=COLB*QQINT WTQQ=FACTR*(QQ1+QQ2+QQINT)/2 ENDIF C HCS=0. DO 60 ID1=IDMN,IDMX IF (INCLQG(ID1)) THEN C Gluon channel HCS=HCS+CLF(1,ID1)*WTGG IF (GENEV.AND.HCS.GT.RCS) THEN C Select colour flow WTAB=GG1 WTBA=GG2 IF (IOP4JT(1).EQ.1) THEN IF (GGINT.GE.ZERO) THEN WTAB=WTAB+GGINT ELSE WTBA=MAX(WTBA,WTBA+GGINT) ENDIF ELSEIF (IOP4JT(1).EQ.2) THEN IF (GGINT.GE.ZERO) THEN WTBA=WTBA+GGINT ELSE WTAB=MAX(WTAB,WTAB+GGINT) ENDIF ELSEIF (IOP4JT(1).NE.0) THEN CALL HWWARN('HWH4JT',101) GOTO 999 ENDIF WTOT=WTAB+WTBA IF (WTAB.GT.HWRGEN(1)*WTOT) THEN CALL HWHQCP( 13, 13,3142,91) GOTO 99 ELSE CALL HWHQCP( 13, 13,4123,92) GOTO 99 ENDIF ENDIF ENDIF C Quark channels DO 50 ID2=1,6 C Identical quark pairs IF (ID1.EQ.ID2.AND.INCLQQ(ID1,ID1)) THEN HCS=HCS+CLF(1,ID1)*WTQQ IF (GENEV.AND.HCS.GT.RCS) THEN C Select colour flow WTAB=QQ1 WTBA=QQ2 IF (IOP4JT(2).EQ.1) THEN IF (QQINT.GE.ZERO) THEN WTAB=WTAB+QQINT ELSE WTBA=MAX(WTBA,WTBA+QQINT) ENDIF ELSEIF (IOP4JT(2).EQ.2) THEN IF (QQINT.GE.ZERO) THEN WTBA=WTBA+QQINT ELSE WTAB=MAX(WTAB,WTAB+QQINT) ENDIF ELSEIF (IOP4JT(2).NE.0) THEN CALL HWWARN('HWH4JT',102) GOTO 999 ENDIF WTOT=WTAB+WTBA IF (WTAB.GT.HWRGEN(1)*WTOT) THEN CALL HWHQCP(ID1,ID1+6,4123,93) GOTO 99 ELSE CALL HWHQCP(ID1,ID1+6,2143,94) GOTO 99 ENDIF ENDIF C Unlike quark pairs ELSEIF (INCLQQ(ID1,ID2)) THEN HCS=HCS+(CLF(1,ID1)+CLF(1,ID2))*WTQP IF (GENEV.AND.HCS.GT.RCS) THEN CALL HWHQCP(ID2,ID2+6,4123,95) GOTO 99 ENDIF ENDIF 50 CONTINUE 60 CONTINUE EVWGT=HCS RETURN C Set up labels for selected final state 99 IDN(1)=ID1 IDN(2)=ID1+6 J=NHEP+1 IDHW(J)=200 IDHEP(J)=23 ISTHEP(J)=110 JMOHEP(1,J)=LM JMOHEP(2,J)=LP JDAHEP(1,J)=NHEP+2 JDAHEP(2,J)=NHEP+5 DO 100 I=1,4 J=NHEP+1+I IDHW(J)=IDN(I) IDHEP(J)=IDPDG(IDN(I)) ISTHEP(J)=IST(I) JMOHEP(1,J)=NHEP+1 100 JDAHEP(1,J)=0 C And colour structure pointers DO 110 I=1,4 J=ICO(I) JMOHEP(2,NHEP+1+I)=NHEP+1+J 110 JDAHEP(2,NHEP+1+J)=NHEP+1+I NHEP=NHEP+5 999 RETURN END CDECK ID>, HWH4J1. *CMZ :- -01/04/99 19.47.55 by Mike Seymour *-- Author : Ian Knowles *- Split in 6 files by M. Kirsanov. C----------------------------------------------------------------------- FUNCTION HWH4J1(S12,S13,S14,S23,S24,S34,EP1,EP2,EP3,EP4,ORIENT) C----------------------------------------------------------------------- C Evaluate `ERT' functions A, B, C, D, E; S12=(p1+p2)^2 etc. C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWH4J1, & S12,S13,S14,S23,S24,S34,S123,S124,S134,S234,S,EP1,EP2,EP3,EP4 LOGICAL ORIENT S123=S12+S13+S23 S124=S12+S14+S24 S134=S13+S14+S34 S234=S23+S24+S34 S=S12+S13+S14+S23+S24+S34 HWH4J1=(S12*((S12+S14+S23+S34)**2+S13*(S12+S14-S24)+S24*(S12+S23)) & +(S14*S23-S12*S34-S13*S24)*(S14+S23+S34)/2) & /(S13*S24*S134*S234) & +((S12+S24)*(S13+S34)-S14*S23)/(S13*S134**2) & +2*S23*(S-S13)/(S13*S134*S24) + S34/(2*S13*S24) IF (ORIENT) THEN HWH4J1=HWH4J1 & +4*((EP1*EP1*((S-S13)*(S23+S24)-S24*S34) & -EP1*EP2*(S12*(S123+S124)+(S+S12)*(S14+S23)+2*S14*S23 & +S24*S134+S234*(S13+2*S234)) & +EP1*EP3*(S*(S24-S12)+S12*S13+(S14+2*S234-S34)*S24) & -EP1*EP4*(S12*S124+S23*(S+S12+S14)) & +EP2*EP2*((S-S24)*(S13+S14)+2*(S13+S34)*S234-S13*S34) & -EP2*EP3*((S+S23)*(S12+S14)+(S12+2*(S23+S234))*S234) & +EP2*EP4*(S12*(S24-S)+S13*(S+S23-S34)+2*(S13+S34-S234)*S234) & +EP3*EP3*(S14+2*S234)*S24 & +EP3*EP4*(-S234*(2*(S12+S23)+S134)+S12*S34-S13*S24-S14*S23) & +EP4*EP4*S13*S23)*S134 & +EP2*(EP1+EP3+EP4)*2*S14*S24*S234)/(S*S13*S24*S134**2*S234) ELSE HWH4J1=2*HWH4J1/3 ENDIF END CDECK ID>, HWH4J2. *CMZ :- -01/04/99 19.47.55 by Mike Seymour *-- Author : Ian Knowles C----------------------------------------------------------------------- FUNCTION HWH4J2(S12,S13,S14,S23,S24,S34,EP1,EP2,EP3,EP4,ORIENT) C----------------------------------------------------------------------- C Evaluate `ERT' functions A, B, C, D, E; S12=(p1+p2)^2 etc. C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWH4J2, & S12,S13,S14,S23,S24,S34,S123,S124,S134,S234,S,EP1,EP2,EP3,EP4 LOGICAL ORIENT S123=S12+S13+S23 S124=S12+S14+S24 S134=S13+S14+S34 S234=S23+S24+S34 S=S12+S13+S14+S23+S24+S34 HWH4J2=(S12*S14*(S24+S34)+S24*(S12*(S14+S34)+S13*(S14-S24))) & /(S14*S23*S13*S134) & +S12*(S+S34)*S124/(S24*S234*S14*S134) & -(S13*(2*(S12+S24)+S23)+S14**2)/(S134*S13*S14) & +S12*S123*S124/(2*S13*S24*S14*S23) IF (ORIENT) THEN HWH4J2=HWH4J2 & +4*((EP1*EP1*(S12*S134*S234-4*S23*S24*S34) & +EP1*EP2*(2*(2*S13*S234+S14*S123)*S24-S12*S134*(S+S12+S34)) & +EP1*EP3*(S12*(4*S24*S34-S134*(S12+S14-S24)) & -4*(S13*S24-S14*S23)*S24) & +EP1*EP4*(4*(S13+S14)*S23*S24-S12*S134*(S12+S13-S23)) & +EP2*EP2*(S12*S134-4*S13*S24)*S134 & +EP2*EP3*(4*S13*(S12+S23+S24)*S24-S12*S134*(S12-S14+S24)) & -EP2*EP4*(4*(S12*(S14+S134)+S13*(S134-S234))*S24 & +S12*(S12-S13+S23)*S134) & -EP3*EP3*4*S12*S14*S24 & -EP3*EP4*2*S12*(2*S14*S24+S12*S134))*S234 & +(EP1*(EP1*(S23+S24)+EP2*(S134-2*S)) & -(EP1+EP2)*(EP3+EP4)*S12+EP2*EP2*(S13+S14))*2*S14*S24*S123) & /(2*S*S13*S14*S234*S23*S24*S134) ELSE HWH4J2=2*HWH4J2/3 ENDIF END CDECK ID>, HWH4J4. *CMZ :- -01/04/99 19.47.55 by Mike Seymour *-- Author : Ian Knowles C----------------------------------------------------------------------- FUNCTION HWH4J4(S12,S13,S14,S23,S24,S34,EP1,EP2,EP3,EP4,ORIENT) C----------------------------------------------------------------------- C Evaluate `ERT' functions A, B, C, D, E; S12=(p1+p2)^2 etc. C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWH4J4, & S12,S13,S14,S23,S24,S34,S134,S234,S,EP1,EP2,EP3,EP4 LOGICAL ORIENT S134=S13+S14+S34 S234=S23+S24+S34 S=S12+S13+S14+S23+S24+S34 HWH4J4=-(S12*(S34*(3*(S+S34)+S12)-S134*S234-2*(S13*S24+S14*S23)) & +(S14*S23-S13*S24)*(S13-S14+S24-S23))/(2*S134*S234*S34**2) & -(S12*(S134**2/2+2*S13*S14+S34*(S13+S14-S34)) & +S34*((S13+S14)*(S23+S24)+S14*S24+S13*S23) & +(S13*S24-S14*S23)*(S14-S13))/(S34*S134)**2 IF (ORIENT) THEN HWH4J4=HWH4J4 & +4*((-EP1*EP1*2*(S23+S24)*S34 & -EP1*EP2*(S13*(S23+3*S24)+S14*(3*S23+S24)-(4*S12-S34)*S34) & +EP1*EP3*((2*S12-S24)*S34-(S13-S14)*S24) & +EP1*EP4*((2*S12-S23)*S34+(S13-S14)*S23) & -EP2*EP2*2*(S13+S14)*S34 & +EP2*EP3*(2*S12*S34-S14*(S23-S24+S34)) & +EP2*EP4*(2*S12*S34+S13*(S23-S24-S34)) & +EP3*EP3*2*S14*S24 & +EP3*EP4*2*(S12*S34-S13*S24-S14*S23) & +EP4*EP4*2*S13*S23)/(S*S134*S234*S34**2) & +(EP1*EP2*(S134*(S134+2*S34)+4*(S13*S14-S34**2)) & +EP2*EP3*2*(2*S13*S34+S14*(S13-S14+S34)) & +EP2*EP4*2*(2*S14*S34-S13*(S13-S14-S34))) & /(S*(S134*S34)**2)) ELSE HWH4J4=2*HWH4J4/3 ENDIF END CDECK ID>, HWH4J5. *CMZ :- -01/04/99 19.47.55 by Mike Seymour *-- Author : Ian Knowles C----------------------------------------------------------------------- FUNCTION HWH4J5(S12,S13,S14,S23,S24,S34,EP1,EP2,EP3,EP4,ORIENT) C----------------------------------------------------------------------- C Evaluate `ERT' functions A, B, C, D, E; S12=(p1+p2)^2 etc. C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWH4J5, & S12,S13,S14,S23,S24,S34,S134,S234,S,EP1,EP2,EP3,EP4, & SUM LOGICAL ORIENT S134=S13+S14+S34 S234=S23+S24+S34 S=S12+S13+S14+S23+S24+S34 HWH4J5=(3*S12*S34**2-3*S13*S24*S34+3*S12*S24*S34+3*S14*S23*S34- $ S13*S24**2-S12*S23*S34+6*S12*S14*S34+2*S12*S13*S34- $ 2*S12**2*S34+S14*S23*S24-3*S13*S23*S24-2*S13*S14*S24+ $ 4*S12*S14*S24+2*S12*S13*S24+3*S14*S23**2+2*S14**2*S23+ $ 2*S14**2*S12+2*S12**2*S14+6*S12*S14*S23-2*S12*S13**2- $ 2*S12**2*S13)/(2*S13*S134*S234*S34)+ $ (2*S12*S34**2-2*S13*S24*S34+S12*S24*S34+4*S13*S23*S34+ $ 4*S12*S14*S34+2*S12*S13*S34+2*S12**2*S34-S13*S24**2+ $ 3*S14*S23*S24+4*S13*S23*S24-2*S13*S14*S24+4*S12*S14*S24+ $ 2*S12*S13*S24+2*S14*S23**2+4*S13*S23**2+2*S13*S14*S23+ $ 2*S12*S14*S23+4*S12*S13*S23+2*S12*S14**2+4*S12**2*S13+ $ 4*S12*S13*S14+2*S12**2*S14)/(2*S13*S134*S24*S34)- $ (S12*S34**2-2*S14*S24*S34-2*S13*S24*S34-S14*S23*S34+ $ S13*S23*S34+S12*S14*S34+2*S12*S13*S34-2*S14**2*S24- $ 4*S13*S14*S24-4*S13**2*S24-S14**2*S23-S13**2*S23+ $ S12*S13*S14-S12*S13**2)/(S13*S34*S134**2) IF (ORIENT) THEN SUM= & +EP1*EP1*((S13-S14+S23-3*S24)*S34+(S134+S14+2*S34)*S234) & *S24*S134 & +EP1*EP2*((2*(S12-S24)+S34)*S134-S14*(4*S12+S14+3*S23) & +S13*(S13+S23)+S24*S34 )*S24*S134 & -EP1*EP2*(((2*S12*S134+S13*(2*(S12+S14+S23)-S24+S34) & +S14*(S14-S23)+(2*S14-S34)*S234)*S234)*S134 & + 4*S13**2*S24*S234) & +EP1*EP3*(S12*(2*S13-S134)+S13*(S24+2*S234)+S14*(3*S24-S234) & +S34*(S234-3*S24))*S24*S134 & +EP1*EP4*((S12*(S13-S14+3*S34)-S23*(S13+3*S14-S34))*S24 & -(S12*(S13+S134+2*S34)+2*S13*S24 & +(S13-2*S14)*S23)*S234)*S134 & +EP2*EP2*(S13*((2*S13+S34)*S234+S24*(S134-2*S34)) & +2*S14*S134*(S24+S234))*S134 SUM=SUM & -EP2*EP3*(((S12*(S13+2*S14-S34)+S14*(S+2*S23-S34))*S24 & +(S12*(S13+S134)+(S13+S24+2*S234)*S14 & +2*S13*(2*S23+S34))*S234)*S134 & +4*S13**2*S24*S234) & +EP2*EP4*(((S12*(S13-2*S134)+S13*(S+2*S23-3*S34))*S24 & -((S-3*S13+S23+2*S24)*S13+2*S12*S14 & +2*S14*(S23+2*S24))*S234)*S134-4*S13**2*S24*S234) & +EP3*EP3*2*(S13*S234+S14*S24)*S24*S134 & +EP3*EP4*(2*(S12*S34-S13*S24-S14*S23)*S24 & -(S12*S134+2*S13*S23)*S234)*S134 & +EP4*EP4*2*(S12*S234+S23*S24)*S13*S134 HWH4J5=HWH4J5+4*SUM/(S*S234*S134**2*S13*S34*S24) ELSE HWH4J5=2*HWH4J5/3 ENDIF END CDECK ID>, HWH4J6. *CMZ :- -01/04/99 19.47.55 by Mike Seymour *-- Author : Ian Knowles C----------------------------------------------------------------------- FUNCTION HWH4J6(S12,S13,S14,S23,S24,S34,EP1,EP2,EP3,EP4,ORIENT) C----------------------------------------------------------------------- C Evaluate `ERT' functions A, B, C, D, E; S12=(p1+p2)^2 etc. C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWH4J6, & S12,S13,S14,S23,S24,S34,S123,S124,S134,S234,S,EP1,EP2,EP3,EP4 LOGICAL ORIENT S123=S12+S13+S23 S124=S12+S14+S24 S134=S13+S14+S34 S234=S23+S24+S34 S=S12+S13+S14+S23+S24+S34 HWH4J6=(S23*(S123*S234-S*S23)+S12*(S123*S124-S*S12))/(S13*S123)**2 & -(S12*S34*(S234-2*S23)+S14*S23*(S234-2*S34) & -S13*S24*(S234+S13))/(S13**2*S123*S134) IF (ORIENT) THEN HWH4J6=HWH4J6 & +4*(-EP1*EP1*2*S23*S34 & +EP1*EP2*((S12-S23)*S34-S13*(S24-S34)) & +(EP1*EP3+EP2*EP4)*2*(S12*S34-S13*S24+S14*S23) & -EP1*EP4*(S13*S24-(3*(S13+S14)+S34)*S23) & -(EP1+EP2+EP3)*EP4*2 & *(S12*(S13+S23)+(S12+S13)*S23)*S134/S123 & +EP2*EP2*S13*(S14+S34) & +EP2*EP3*(S13*(S14-S24)-(S12-S23)*S14) & -EP3*EP3*2*S12*S14 & -EP3*EP4*(S13*S24-(3*(S13+S34)+S14)*S12) & +EP4*EP4*(S12+S23)*S13)/(S*S134*S123*S13**2) ELSE HWH4J6=2*HWH4J6/3 ENDIF END CDECK ID>, HWH4J7. *CMZ :- -01/04/99 19.47.55 by Mike Seymour *-- Author : Ian Knowles C----------------------------------------------------------------------- FUNCTION HWH4J7(S12,S13,S14,S23,S24,S34,EP1,EP2,EP3,EP4,ORIENT) C----------------------------------------------------------------------- C Evaluate `ERT' functions A, B, C, D, E; S12=(p1+p2)^2 etc. C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION HWH4J7, & S12,S13,S14,S23,S24,S34,S123,S124,S134,S234,S,EP1,EP2,EP3,EP4 LOGICAL ORIENT S123=S12+S13+S23 S124=S12+S14+S24 S134=S13+S14+S34 S234=S23+S24+S34 S=S12+S13+S14+S23+S24+S34 HWH4J7=((S12*S34+S13*S24-S14*S23)*(S13+S14+S23+S24)-2*S12*S24*S34) & /(S13*S134*S23*S123) & -S12*(S12*S-S123*S124)/(S123**2*S13*S23) & -(S13+S14)*(S23+S24)*S34/(S13*S134*S23*S234) IF (ORIENT) THEN HWH4J7=HWH4J7 & +4*(+2*(EP1+EP2)*(S23*EP1-S13*EP2)*S34*S134 & -EP1*EP2*2*S34**2*S123 & +EP1*EP3*(S123*(S23+S24)*S34+2*S134*(S13*S24-S14*S23)) & +EP1*EP4*(S123*(S23+S24)*S34+2*S12**2*S134*S234/S123 & +2*S134*(S24*(S13-S12)-S23*(S12+S14))) & +EP2*EP3*(2*(S12*S34+S13*S24-S14*S23)*S134 & +S123*(S13+S14)*S34) & +EP2*EP4*(S123*(S13+S14)*S34+2*S12**2*S234*S134/S123 & -2*S134*(S12*S234-S13*S24+S14*S23)) & -EP3*EP3*S12*(2*S24*S134+S123*S34) & +EP3*EP4*2*S12*(S134*(S23-S24)-S34*S123+S12*S134*S234/S123) & +EP4*EP4*S12*(2*S23*S134-S123*S34)) & /(S*S13*S23*S123*S134*S234) ELSE HWH4J7=2*HWH4J7/3 ENDIF END CDECK ID>, HWHBGF. *CMZ :- -26/04/91 11.11.55 by Bryan Webber *-- Author : Giovanni Abbiendi & Luca Stanco C----------------------------------------------------------------------- SUBROUTINE HWHBGF C----------------------------------------------------------------------- C Order Alpha_s processes in charged lepton-hadron collisions C C Process code IPROC has to be set in the Main Program C the following codes IPROC may be selected C C 9100 : NC BOSON-GLUON FUSION C 9100+IQK (IQK=1,...,6) : produced flavour is IQK C 9107 : produced J/psi + gluon C C 9110 : NC QCD COMPTON C 9110+IQK (IQK=1,...,12) : struck parton is IQK C C 9130 : NC order alpha_s processes (9100+9110) C C Select maximum and minimum generated flavour when IQK=0 C setting IFLMIN and IFLMAX in the Main Program C (allowed values from 1 to 6), default are 1 and 5 C allowing d,u,s,c,b,dbar,ubar,sbar,cbar,bbar C C CHARGED CURRENT Boson-Gluon Fusion processes C 9141 : CC s cbar (c sbar) C 9142 : CC b cbar (c bbar) C 9143 : CC s tbar (t cbar) C 9144 : CC b tbar (t bbar) C C other inputs : Q2MIN,Q2MAX,YBMIN,YBMAX,PTMIN,EMMIN,EMMAX C when IPROC=(1)9107 : as above but Q2WWMN, Q2WWMX substitute C Q2MIN and Q2MAX (EPA is used); ZJMAX cut C C Add 10000 to suppress soft remnant fragmentation C C Mean EVWGT = cross section in nanoBarn C C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,Y,Q2,SHAT,Z,PHI,AJACOB,DSIGMA,ME,MP, & ML,MREMIF(18),MFIN1(18),MFIN2(18),RS,SMA,W2,RSHAT,FSIGMA(18), & SIGSUM,PROB,PRAN,PVRT(4),X INTEGER LEP INTEGER IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,IPROO,LEPFIN,ID1,ID2,I,IDD LOGICAL CHARGD,INCLUD(18),INSIDE(18),IFGO EXTERNAL HWRGEN SAVE LEPFIN,ID1,ID2,FSIGMA,SIGSUM COMMON /HWAREA/ Y,Q2,SHAT,Z,PHI,AJACOB,DSIGMA,ME,MP,ML,MREMIF, & MFIN1,MFIN2,RS,SMA,W2,RSHAT,IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,LEP, & IPROO,CHARGD,INCLUD,INSIDE C---Initialization IF (FSTWGT) THEN C---LEP = 1 FOR LEPTONS, -1 FOR ANTILEPTONS LEP=0 IF (IDHW(1).GE.121.AND.IDHW(1).LE.126) THEN LEP=1 ELSEIF (IDHW(1).GE.127.AND.IDHW(1).LE.132) THEN LEP=-1 ENDIF IF (LEP.EQ.0) CALL HWWARN('HWHBGF',500) IPROO=MOD(IPROC,100)/10 IF (IPROO.EQ.0.OR.IPROO.EQ.4) THEN IQK=MOD(IPROC,10) IFL=IQK IF (IQK.EQ.7) IFL=164 CHARGD=IPROO.EQ.4 ELSEIF (IPROO.EQ.1.OR.IPROO.EQ.2) THEN IQK=MOD(IPROC,100)-10 IFL=IQK+6 CHARGD=.FALSE. ELSEIF (IPROO.EQ.3) THEN IQK=0 IFL=0 CHARGD=.FALSE. ELSE CALL HWWARN('HWHBGF',501) ENDIF C LEPFIN = IDHW(1) IF(CHARGD) THEN LEPFIN = IDHW(1)+1 IF (IQK.EQ.1) THEN IFLAVU=4 IFLAVD=3 ID1 = 3 ID2 = 10 ELSEIF (IQK.EQ.2) THEN IFLAVU=4 IFLAVD=5 ID1 = 5 ID2 = 10 ELSEIF (IQK.EQ.3) THEN IFLAVU=6 IFLAVD=3 ID1 = 3 ID2 =12 ELSE IFLAVU=6 IFLAVD=5 ID1 = 5 ID2 =12 ENDIF IF (LEP.EQ.-1) THEN IDD=ID1 ID1=ID2-6 ID2=IDD+6 ENDIF ENDIF C IF (IQK.EQ.0) THEN DO I=1,18 INCLUD(I)=.TRUE. ENDDO IMIN=1 IMAX=18 DO I=1,6 IF (I.LT.IFLMIN.OR.I.GT.IFLMAX) INCLUD(I)=.FALSE. ENDDO DO I=7,18 IF (I.LE.12) THEN IF (I-6.LT.IFLMIN.OR.I-6.GT.IFLMAX) INCLUD(I)=.FALSE. ELSE IF (I-12.LT.IFLMIN.OR.I-12.GT.IFLMAX) INCLUD(I)=.FALSE. ENDIF ENDDO IF (IPROO.EQ.0) THEN DO I=7,18 INCLUD(I)=.FALSE. ENDDO IMIN=IFLMIN IMAX=IFLMAX ELSEIF (IPROO.EQ.1.OR.IPROO.EQ.2) THEN DO I=1,6 INCLUD(I)=.FALSE. ENDDO IMIN=IFLMIN+6 IMAX=IFLMAX+12 ELSEIF (IPROO.EQ.3) THEN IMIN=IFLMIN IMAX=IFLMAX+12 ENDIF ELSEIF (IQK.NE.0 .AND. (.NOT.CHARGD)) THEN DO I=1,18 INCLUD(I)=.FALSE. ENDDO IF (IFL.LE.18) THEN INCLUD(IFL)=.TRUE. IMIN=IFL IMAX=IFL ELSEIF (IFL.EQ.164) THEN INCLUD(7)=.TRUE. IMIN=7 IMAX=7 ENDIF ENDIF ENDIF C---End of initialization IF(GENEV) THEN IF (.NOT.CHARGD) THEN IF (IQK.EQ.0) THEN PRAN= SIGSUM * HWRGEN(0) PROB=ZERO DO 10 IFL=IMIN,IMAX IF (.NOT.INSIDE(IFL)) GOTO 10 PROB=PROB+FSIGMA(IFL) IF (PROB.GE.PRAN) GOTO 20 10 CONTINUE ENDIF C---at this point the subprocess has been selected (IFL) 20 CONTINUE IF (IFL.LE.6) THEN C---Boson-Gluon Fusion event IDHW(NHEP+1)=IDHW(1) IDHW(NHEP+2)=13 IDHW(NHEP+3)=15 IDHW(NHEP+4)=LEPFIN IDHW(NHEP+5)=IFL IDHW(NHEP+6)=IFL+6 ELSEIF (IFL.GE.7.AND.IFL.LE.18) THEN C---QCD_Compton event IDHW(NHEP+1)=IDHW(1) IDHW(NHEP+2)=IFL-6 IDHW(NHEP+3)=15 IDHW(NHEP+4)=LEPFIN IDHW(NHEP+5)=IFL-6 IDHW(NHEP+6)=13 ELSEIF (IFL.EQ.164) THEN C---gamma+gluon-->J/Psi+gluon IDHW(NHEP+1)=IDHW(1) IDHW(NHEP+2)=13 IDHW(NHEP+3)=15 IDHW(NHEP+4)=LEPFIN IDHW(NHEP+5)=164 IDHW(NHEP+6)=13 ELSE CALL HWWARN('HWHBGF',503) ENDIF ELSE C---Charged current event of specified flavours IDHW(NHEP+1)=IDHW(1) IDHW(NHEP+2)=13 IDHW(NHEP+3)=15 IDHW(NHEP+4)=LEPFIN IDHW(NHEP+5)=ID1 IDHW(NHEP+6)=ID2 ENDIF C DO 1 I=NHEP+1,NHEP+6 1 IDHEP(I)=IDPDG(IDHW(I)) C C---Codes common for all processes ISTHEP(NHEP+1)=111 ISTHEP(NHEP+2)=112 ISTHEP(NHEP+3)=110 ISTHEP(NHEP+4)=113 ISTHEP(NHEP+5)=114 ISTHEP(NHEP+6)=114 C DO I=NHEP+1,NHEP+6 JMOHEP(1,I)=NHEP+3 JDAHEP(1,I)=0 ENDDO C---Incoming lepton JMOHEP(2,NHEP+1)=NHEP+4 JDAHEP(2,NHEP+1)=NHEP+4 C---Hard Process C.M. JMOHEP(1,NHEP+3)=NHEP+1 JMOHEP(2,NHEP+3)=NHEP+2 JDAHEP(1,NHEP+3)=NHEP+4 JDAHEP(2,NHEP+3)=NHEP+6 C---Outgoing lepton JMOHEP(2,NHEP+4)=NHEP+1 JDAHEP(2,NHEP+4)=NHEP+1 C IF (IFL.LE.6 .OR. CHARGD) THEN C---Codes for boson-gluon fusion processes C--- Incoming gluon JMOHEP(2,NHEP+2)=NHEP+6 JDAHEP(2,NHEP+2)=NHEP+5 C--- Outgoing quark JMOHEP(2,NHEP+5)=NHEP+2 JDAHEP(2,NHEP+5)=NHEP+6 C--- Outgoing antiquark JMOHEP(2,NHEP+6)=NHEP+5 JDAHEP(2,NHEP+6)=NHEP+2 ELSEIF (IFL.GE.7 .AND. IFL.LE.12) THEN C---Codes for V+q --> q+g C--- Incoming quark JMOHEP(2,NHEP+2)=NHEP+5 JDAHEP(2,NHEP+2)=NHEP+6 C--- Outgoing quark JMOHEP(2,NHEP+5)=NHEP+6 JDAHEP(2,NHEP+5)=NHEP+2 C--- Outgoing gluon JMOHEP(2,NHEP+6)=NHEP+2 JDAHEP(2,NHEP+6)=NHEP+5 ELSEIF (IFL.GE.13 .AND. IFL.LE.18) THEN C---Codes for V+qbar --> qbar+g C--- Incoming antiquark JMOHEP(2,NHEP+2)=NHEP+6 JDAHEP(2,NHEP+2)=NHEP+5 C--- Outgoing antiquark JMOHEP(2,NHEP+5)=NHEP+2 JDAHEP(2,NHEP+5)=NHEP+6 C--- Outgoing gluon JMOHEP(2,NHEP+6)=NHEP+5 JDAHEP(2,NHEP+6)=NHEP+2 ELSEIF (IFL.EQ.164) THEN C---Codes for Gamma+gluon --> J/Psi+gluon C--- Incoming gluon JMOHEP(2,NHEP+2)=NHEP+6 JDAHEP(2,NHEP+2)=NHEP+6 C--- Outgoing J/Psi JMOHEP(2,NHEP+5)=NHEP+1 JDAHEP(2,NHEP+5)=NHEP+1 C--- Outgoing gluon JMOHEP(2,NHEP+6)=NHEP+2 JDAHEP(2,NHEP+6)=NHEP+2 ENDIF C---Computation of momenta in Laboratory frame of reference CALL HWHBKI NHEP=NHEP+6 C Decide which quark radiated and assign production vertices IF (IFL.LE.6) THEN C Boson-Gluon fusion case IF (1-Z.LT.HWRGEN(0)) THEN C Gluon splitting to quark CALL HWVZRO(4,VHEP(1,NHEP-1)) CALL HWVDIF(4,PHEP(1,NHEP-4),PHEP(1,NHEP),PVRT) CALL HWUDKL(IFL,PVRT,VHEP(1,NHEP)) CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,NHEP-4)) ELSE C Gluon splitting to antiquark CALL HWVZRO(4,VHEP(1,NHEP)) CALL HWVDIF(4,PHEP(1,NHEP-4),PHEP(1,NHEP-1),PVRT) CALL HWUDKL(IFL,PVRT,VHEP(1,NHEP-1)) CALL HWVEQU(4,VHEP(1,NHEP-1),VHEP(1,NHEP-4)) ENDIF ELSEIF (IFL.GE.7.AND.IFL.LE.18) THEN C QCD Compton case X=1/(1+SHAT/Q2) IF (1.LT.HWRGEN(0)*(1+(1-X-Z)**2+6*X*(1-X)*Z*(1-Z))) THEN C Incoming quark radiated the gluon CALL HWVZRO(4,VHEP(1,NHEP-1)) CALL HWVDIF(4,PHEP(1,NHEP-4),PHEP(1,NHEP),PVRT) CALL HWUDKL(IFL-6,PVRT,VHEP(1,NHEP)) CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,NHEP-4)) ELSE C Outgoing quark radiated the gluon CALL HWVZRO(4,VHEP(1,NHEP-4)) CALL HWVSUM(4,PHEP(1,NHEP-1),PHEP(1,NHEP),PVRT) CALL HWUDKL(IFL-6,PVRT,VHEP(1,NHEP)) CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,NHEP-1)) ENDIF ENDIF C---HERWIG gets confused if lepton momentum is different from beam C momentum, which it can be if incoming hadron has negative virtuality C As a temporary fix, simply copy the momentum. C Momentum conservation somehow gets taken care of HWBGEN! call hwvequ(5,phep(1,1),phep(1,nhep-5)) ELSE EVWGT=ZERO C---generation of the 5 variables Y,Q2,SHAT,Z,PHI and Jacobian computation C---in the largest phase space avalaible for selected processes and C---filling of logical vector INSIDE to tag contributing ones CALL HWHBRN (IFGO) IF(IFGO) GOTO 999 C---calculate differential cross section corresponding to the chosen C---variables and the weight for MC generation IF (IQK.EQ.0) THEN C---many subprocesses included DO I=1,18 FSIGMA(I)=ZERO ENDDO SIGSUM=ZERO DO I=IMIN,IMAX IF (INSIDE(I)) THEN IFL=I DSIGMA=ZERO CALL HWHBSG FSIGMA(I)=DSIGMA SIGSUM=SIGSUM+DSIGMA ENDIF ENDDO EVWGT=SIGSUM * AJACOB ELSE C---only one subprocess included CALL HWHBSG EVWGT= DSIGMA * AJACOB ENDIF IF (EVWGT.LT.ZERO) EVWGT=ZERO ENDIF 999 RETURN END CDECK ID>, HWHBKI. *CMZ :- -26/04/91 13.19.32 by Federico Carminati *-- Author : Giovanni Abbiendi & Luca Stanco C---------------------------------------------------------------------- SUBROUTINE HWHBKI C---------------------------------------------------------------------- C gives the fourmomenta in the laboratory system for the particles C of the hard 2-->3 subprocess, to match with HERWIG routines of C jet evolution. C---------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWUECM,HWUPCM,HWUSQR,Y,Q2,SHAT,Z,PHI,AJACOB, & DSIGMA,ME,MP,ML,MREMIF(18),MFIN1(18),MFIN2(18),RS,SMA,W2,RSHAT, & PGAMMA(5),SG,MF1,MF2,EP,PP,EL,PL,E1,E2,Q1,COSBET,SINBET,COSTHE, & SINTHE,SINAZI,COSAZI,ROTAZI(3,3),EGAM,A,PPROT,MREMIN,PGAM,PEP(5), & COSPHI,SINPHI,ROT(3,3),EPROT,PROTON(5),MPART INTEGER IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,IPROO,I,IHAD,J,IS,ICMF,LEP LOGICAL CHARGD,INCLUD(18),INSIDE(18) EXTERNAL HWUECM,HWUPCM,HWUSQR COMMON /HWAREA/ Y,Q2,SHAT,Z,PHI,AJACOB,DSIGMA,ME,MP,ML,MREMIF, & MFIN1,MFIN2,RS,SMA,W2,RSHAT,IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,LEP, & IPROO,CHARGD,INCLUD,INSIDE C IHAD=2 IF (JDAHEP(1,IHAD).NE.0) IHAD=JDAHEP(1,IHAD) C---Set masses IF (CHARGD) THEN MPART=ZERO MF1=RMASS(IDHW(NHEP+5)) MF2=RMASS(IDHW(NHEP+6)) MREMIN=MP ELSE IS = IFL IF (IFL.EQ.164) IS=IQK MPART=ZERO IF (IFL.GE.7.AND.IFL.LE.18) MPART=RMASS(IFL-6) MF1=MFIN1(IS) MF2=MFIN2(IS) MREMIN = MREMIF(IS) ENDIF C---Calculation of kinematical variables for the generated event C in the center of mass frame of the incoming boson and parton C with parton along +z EGAM = HWUECM (SHAT, -Q2, MPART**2) PGAM = SQRT( EGAM**2 + Q2 ) EP = RSHAT-EGAM PP = PGAM A = (W2+Q2-MP**2)/TWO PPROT = (A*PGAM-EGAM*SQRT(A**2+MP**2*Q2))/Q2 IF (PPROT.LT.ZERO) THEN CALL HWWARN('HWHBKI',101) GOTO 999 ENDIF EPROT = SQRT(PPROT**2+MP**2) IF ((EPROT+PPROT).LT.(EP+PP)) THEN CALL HWWARN('HWHBKI',102) GOTO 999 ENDIF EL = ( PGAM / PPROT * SMA - Q2 ) / TWO + / (EGAM + PGAM / PPROT * EPROT) IF (EL.GT.ME) THEN PL = SQRT ( EL**2 - ME**2 ) ELSE CALL HWWARN ('HWHBKI',103) GOTO 999 ENDIF COSBET = (TWO * EPROT * EL - SMA) / (TWO * PPROT * PL) IF ( ABS(COSBET) .GE. ONE ) THEN COSBET = SIGN (ONE,COSBET) SINBET = ZERO ELSE SINBET = SQRT (ONE - COSBET**2) ENDIF SG = ME**2 + MPART**2 + Q2 + TWO * RSHAT * EL IF (SG.LE.(RSHAT+ML)**2 .OR. SG.GE.(RS-MREMIN)**2) THEN CALL HWWARN ('HWHBKI',104) GOTO 999 ENDIF Q1 = HWUPCM( RSHAT, MF1, MF2) E1 = SQRT(Q1**2+MF1**2) E2 = SQRT(Q1**2+MF2**2) IF (Q1 .GT. ZERO) THEN COSTHE=(TWO*EP*E1 - Z*(SHAT+Q2))/(TWO*PP*Q1) IF (ABS(COSTHE) .GT. ONE) THEN COSTHE=SIGN(ONE,COSTHE) SINTHE=ZERO ELSE SINTHE=SQRT(ONE-COSTHE**2) ENDIF ELSE COSTHE=ZERO SINTHE=ONE ENDIF C---Initial lepton PHEP(1,NHEP+1)=PL*SINBET PHEP(2,NHEP+1)=ZERO PHEP(3,NHEP+1)=PL*COSBET PHEP(4,NHEP+1)=EL PHEP(5,NHEP+1)=RMASS(IDHW(1)) C---Initial Hadron PROTON(1)=ZERO PROTON(2)=ZERO PROTON(3)=PPROT PROTON(4)=EPROT CALL HWUMAS (PROTON) C---Initial parton PHEP(1,NHEP+2)=ZERO PHEP(2,NHEP+2)=ZERO PHEP(3,NHEP+2)=PP PHEP(4,NHEP+2)=EP PHEP(5,NHEP+2)=MPART C---HARD SUBPROCESS 2-->3 CENTRE OF MASS PHEP(1,NHEP+3)=PHEP(1,NHEP+1)+PHEP(1,NHEP+2) PHEP(2,NHEP+3)=PHEP(2,NHEP+1)+PHEP(2,NHEP+2) PHEP(3,NHEP+3)=PHEP(3,NHEP+1)+PHEP(3,NHEP+2) PHEP(4,NHEP+3)=PHEP(4,NHEP+1)+PHEP(4,NHEP+2) CALL HWUMAS ( PHEP(1,NHEP+3) ) C---Virtual boson PGAMMA(1)=ZERO PGAMMA(2)=ZERO PGAMMA(3)=-PGAM PGAMMA(4)=EGAM PGAMMA(5)=HWUSQR(Q2) C---Scattered lepton PHEP(1,NHEP+4)=PHEP(1,NHEP+1)-PGAMMA(1) PHEP(2,NHEP+4)=PHEP(2,NHEP+1)-PGAMMA(2) PHEP(3,NHEP+4)=PHEP(3,NHEP+1)-PGAMMA(3) PHEP(4,NHEP+4)=PHEP(4,NHEP+1)-PGAMMA(4) PHEP(5,NHEP+4)=RMASS(IDHW(1)) IF (CHARGD) PHEP(5,NHEP+4)=ZERO C---First Final parton: quark (or J/psi) in Boson-Gluon Fusion C--- quark or antiquark in QCD Compton PHEP(1,NHEP+5)=Q1*SINTHE*COS(PHI) PHEP(2,NHEP+5)=Q1*SINTHE*SIN(PHI) PHEP(3,NHEP+5)=Q1*COSTHE PHEP(4,NHEP+5)=E1 PHEP(5,NHEP+5)=MF1 C---Second Final parton: antiquark in Boson-Gluon Fusion C--- gluon in QCD Compton PHEP(1,NHEP+6)=-PHEP(1,NHEP+5) PHEP(2,NHEP+6)=-PHEP(2,NHEP+5) PHEP(3,NHEP+6)=-PHEP(3,NHEP+5) PHEP(4,NHEP+6)=E2 PHEP(5,NHEP+6)=MF2 C---Boost to lepton-hadron CM frame PEP(1) = PHEP(1,NHEP+1) PEP(2) = PHEP(2,NHEP+1) PEP(3) = PHEP(3,NHEP+1) + PPROT PEP(4) = PHEP(4,NHEP+1) + EPROT CALL HWUMAS (PEP) DO I=1,6 CALL HWULOF (PEP,PHEP(1,NHEP+I),PHEP(1,NHEP+I)) ENDDO CALL HWULOF (PEP,PROTON,PROTON) CALL HWULOF (PEP,PGAMMA,PGAMMA) C---Rotation around y-axis to align lepton beam with z-axis COSPHI = PHEP(3,NHEP+1) / & SQRT( PHEP(1,NHEP+1)**2 + PHEP(3,NHEP+1)**2 ) SINPHI = PHEP(1,NHEP+1) / & SQRT( PHEP(1,NHEP+1)**2 + PHEP(3,NHEP+1)**2 ) DO I=1,3 DO J=1,3 ROT(I,J)=ZERO ENDDO ENDDO ROT(1,1) = COSPHI ROT(1,3) = -SINPHI ROT(2,2) = ONE ROT(3,1) = SINPHI ROT(3,3) = COSPHI DO I=1,6 CALL HWUROF (ROT,PHEP(1,NHEP+I),PHEP(1,NHEP+I)) ENDDO CALL HWUROF (ROT,PROTON,PROTON) CALL HWUROF (ROT,PGAMMA,PGAMMA) C---Boost to the LAB frame ICMF=3 DO I=1,6 CALL HWULOB (PHEP(1,ICMF),PHEP(1,NHEP+I),PHEP(1,NHEP+I)) ENDDO CALL HWULOB (PHEP(1,ICMF),PROTON,PROTON) CALL HWULOB (PHEP(1,ICMF),PGAMMA,PGAMMA) C---Random azimuthal rotation CALL HWRAZM (ONE,COSAZI,SINAZI) DO I=1,3 DO J=1,3 ROTAZI(I,J)=ZERO ENDDO ENDDO ROTAZI(1,1) = COSAZI ROTAZI(1,2) = SINAZI ROTAZI(2,1) = -SINAZI ROTAZI(2,2) = COSAZI ROTAZI(3,3) = ONE DO I=1,6 CALL HWUROF (ROTAZI,PHEP(1,NHEP+I),PHEP(1,NHEP+I)) ENDDO CALL HWUROF (ROTAZI,PROTON,PROTON) CALL HWUROF (ROTAZI,PGAMMA,PGAMMA) 999 RETURN END CDECK ID>, HWHBRN. *CMZ :- -03/07/95 19.02.12 by Giovanni Abbiendi *-- Author : Giovanni Abbiendi & Luca Stanco C----------------------------------------------------------------------- SUBROUTINE HWHBRN (IFGO) C---------------------------------------------------------------------- C Returns a point in the phase space (Y,Q2,SHAT,Z,PHI) and the C corresponding Jacobian factor AJACOB C Fill the logical vector INSIDE to tag contributing subprocesses C to the cross-section C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' LOGICAL IFGO DOUBLE PRECISION HWRUNI,HWRGEN,HWUPCM,Y,Q2,SHAT,Z,PHI,AJACOB, & DSIGMA,ME,MP,ML,MREMIF(18),MFIN1(18),MFIN2(18),RS,SMA,W2,RSHAT, & MF1,MF2,YMIN,YMAX,YJAC,Q2INF,Q2SUP,Q2JAC,EMW2,ZMIN,ZMAX,ZJAC, & GAMMA2,LAMBDA,PHIJAC,ZINT,ZLMIN,ZL,EMW,TMIN,TMAX,EMLMIN,EMLMAX, & SHMIN,EMMIF(18),EMMAF(18),WMIF(18),WMIN,MREMIN,YMIF(18),Q1CM(18), & Q2MAF(18),EMMAWF(18),ZMIF(18),ZMAF(18),PLMAX,PINC,SHINF,SHSUP, & SHJAC,CTHLIM,Q1,DETDSH,SRY,SRY0,SRY1 INTEGER LEP INTEGER IQK,IFLAVU,IFLAVD,I,IMIN,IMAX,IFL,IPROO,IHAD,NTRY,DEBUG LOGICAL CHARGD,INCLUD(18),INSIDE(18) EXTERNAL HWRUNI,HWRGEN,HWUPCM SAVE EMLMIN,EMLMAX,EMMIF,EMMAF,MREMIN,MF1,MF2,YMIF, & YMIN,YMAX,WMIN,WMIF COMMON /HWAREA/ Y,Q2,SHAT,Z,PHI,AJACOB,DSIGMA,ME,MP,ML,MREMIF, & MFIN1,MFIN2,RS,SMA,W2,RSHAT,IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,LEP, & IPROO,CHARGD,INCLUD,INSIDE EQUIVALENCE (EMW,RMASS(198)) C IFGO = .FALSE. IHAD=2 IF (JDAHEP(1,IHAD).NE.0) IHAD=JDAHEP(1,IHAD) C---Initialization IF (FSTWGT.OR.IHAD.NE.2) THEN ME = RMASS(IDHW(1)) MP = RMASS(IDHW(IHAD)) RS = PHEP(5,3) SMA = RS**2-ME**2-MP**2 PINC = HWUPCM(RS,ME,MP) C---Charged current IF (CHARGD) THEN ML=RMASS(IDHW(1)+1) YMAX = ONE - TWO*ML*MP / SMA YMAX = MIN(YMAX,YBMAX) MREMIN=MP IF (LEP.EQ.1) THEN MF1=RMASS(IFLAVD) MF2=RMASS(IFLAVU) ELSE MF1=RMASS(IFLAVU) MF2=RMASS(IFLAVD) ENDIF SHMIN = MF1**2+MF2**2 + TWO * PTMIN**2 + + TWO * SQRT(PTMIN**2+MF1**2) * SQRT(PTMIN**2+MF2**2) EMLMIN=MAX(EMMIN,SQRT(SHMIN)) EMLMAX=MIN(EMMAX,RS-ML-MREMIN) DEBUG=1 IF (EMLMIN.GT.EMLMAX) GOTO 888 WMIN=EMLMIN+MREMIN PLMAX=HWUPCM(RS,ML,WMIN) YMIN = ONE-TWO*(SQRT(PINC**2+MP**2)*SQRT(PLMAX**2+ML**2)+ + PINC*PLMAX)/SMA YMIN = MAX(YMIN,YBMIN) DEBUG=2 IF (YMIN.GT.YMAX) GOTO 888 ELSE C---Neutral current ML = ME YMAX = ONE - TWO*ML*MP / SMA YMAX = MIN(YMAX,YBMAX) DO I=1,18 YMIF(I)=ZERO EMMIF(I)=ZERO EMMAF(I)=ZERO WMIF(I)=ZERO IF (I.LE.8) THEN C---Boson-Gluon Fusion (also J/Psi) and QCD Compton with struck u or d MREMIF(I)=MP IF (I.LE.6) THEN MFIN1(I)=RMASS(I) MFIN2(I)=RMASS(I+6) ELSE MFIN1(I)=RMASS(I-6) MFIN2(I)=ZERO ENDIF ELSE C---QCD Compton with struck non-valence parton MREMIF(I)=MP+RMASS(I-6) MFIN1(I)=RMASS(I-6) MFIN2(I)=ZERO ENDIF ENDDO IF (IFL.EQ.164) THEN C---J/Psi MFIN1(7)=RMASS(164) MFIN2(7)=ZERO ENDIF C---y boundaries for different flavours and processes DO 100 I=IMIN,IMAX IF (INCLUD(I)) THEN MF1=MFIN1(I) MF2=MFIN2(I) MREMIN=MREMIF(I) SHMIN = MF1**2+MF2**2 + TWO * PTMIN**2 + + TWO * SQRT(PTMIN**2+MF1**2) * SQRT(PTMIN**2+MF2**2) EMMIF(I) = MAX(EMMIN,SQRT(SHMIN)) EMMAF(I) = MIN(EMMAX,RS-ML-MREMIN) IF (EMMIF(I).GT.EMMAF(I)) THEN INCLUD(I)=.FALSE. CALL HWWARN('HWHBRN',3) GOTO 100 ENDIF WMIF(I) = EMMIF(I)+MREMIF(I) WMIN = WMIF(I) PLMAX = HWUPCM(RS,ML,WMIN) YMIF(I)=ONE-TWO*(SQRT(PINC**2+MP**2)*SQRT(PLMAX**2+ML**2)+ + PINC*PLMAX)/SMA IF (YMIF(I).GT.YMAX) THEN INCLUD(I)=.FALSE. CALL HWWARN('HWHBRN',4) GOTO 100 ENDIF ENDIF 100 CONTINUE C---considering the largest boundaries EMLMIN=EMMIF(IMIN) EMLMAX=EMMAF(IMIN) IF (IPROO.EQ.3) THEN EMLMIN=MIN(EMMIF(IMIN),EMMIF(IMIN+6)) EMLMAX=MAX(EMMAF(IMIN),EMMAF(IMIN+6)) ENDIF DEBUG=3 IF (EMLMIN.GT.EMLMAX) GOTO 888 YMIN=YMIF(IMIN) IF (IPROO.EQ.3) YMIN=MIN(YMIF(IMIN),YMIF(IMIN+6)) YMIN = MAX(YMIN,YBMIN) DEBUG=4 IF (YMIN.GT.YMAX) GOTO 888 WMIN = WMIF(IMIN) MREMIN = MREMIF(IMIN) MF1=MFIN1(IMIN) MF2=MFIN2(IMIN) IF (IPROO.EQ.3) THEN WMIN = MIN(WMIF(IMIN),WMIF(IMIN+6)) MREMIN = MIN(MREMIF(IMIN),MREMIF(IMIN+6)) ENDIF ENDIF ENDIF C---Random generation in largest phase space Y=ZERO Q2=ZERO SHAT=ZERO Z=ZERO PHI=ZERO AJACOB=ZERO C---y generation IF (.NOT.CHARGD) THEN IF (IFL.LE.5.OR.(IFL.GE.7.AND.IFL.LE.18)) THEN SRY0 = SQRT(YMIN) SRY1 = SQRT(YMAX) SRY = HWRUNI(0,SRY0,SRY1) Y = SRY**2 YJAC = TWO*SRY*(SRY1-SRY0) ELSEIF (IFL.EQ.6) THEN Y = SQRT(HWRUNI(0,YMIN**2,YMAX**2)) YJAC = HALF * (YMAX**2-YMIN**2) / Y ELSEIF (IFL.EQ.164) THEN C---in J/psi photoproduction Y and Q2 are given by the Equivalent Photon C Approximation 10 NTRY=0 20 NTRY=NTRY+1 IF (NTRY.GT.NETRY) THEN CALL HWWARN('HWHBRN',50) GOTO 10 ENDIF Y = (YMIN/YMAX)**HWRGEN(1)*YMAX IF (ONE+(ONE-Y)**2.LT.TWO*HWRGEN(2)) GOTO 20 YJAC=(TWO*LOG(YMAX/YMIN)-TWO*(YMAX-YMIN) & +HALF*(YMAX**2-YMIN**2)) ENDIF ELSE IF (IPRO.EQ.5) THEN Y = EXP(HWRUNI(0,LOG(YMIN),LOG(YMAX))) YJAC = Y * LOG(YMAX/YMIN) ELSE Y = HWRUNI(0,YMIN,YMAX) YJAC = YMAX - YMIN ENDIF ENDIF C---Q**2 generation Q2INF = ME**2*Y**2 / (ONE-Y) Q2SUP = MP**2 + SMA*Y - WMIN**2 IF (IFL.EQ.164) THEN Q2INF = MAX(Q2INF,Q2WWMN) Q2SUP = MIN(Q2SUP,Q2WWMX) ELSE Q2INF = MAX(Q2INF,Q2MIN) Q2SUP = MIN(Q2SUP,Q2MAX) ENDIF DEBUG=5 IF (Q2INF .GT. Q2SUP) GOTO 888 C IF (.NOT.CHARGD) THEN IF (IFL.EQ.164) THEN Q2 = EXP(HWRUNI(0,LOG(Q2INF),LOG(Q2SUP))) Q2JAC = LOG(Q2SUP/Q2INF) ELSEIF (Q2INF.LT.RMASS(4)**2) THEN Q2 = EXP(HWRUNI(0,LOG(Q2INF),LOG(Q2SUP))) Q2JAC = Q2 * LOG(Q2SUP/Q2INF) ELSE Q2 = Q2INF*Q2SUP/HWRUNI(0,Q2INF,Q2SUP) Q2JAC = Q2**2 * (Q2SUP-Q2INF)/(Q2SUP*Q2INF) ENDIF ELSE EMW2=EMW**2 Q2=(Q2INF+EMW2)*(Q2SUP+EMW2)/(HWRUNI(0,Q2INF,Q2SUP)+EMW2)-EMW2 Q2JAC=(Q2+EMW2)**2*(Q2SUP-Q2INF)/((Q2SUP+EMW2)*(Q2INF+EMW2)) ENDIF W2 = MP**2 + SMA*Y - Q2 C---s_hat generation SHINF = EMLMIN **2 SHSUP = (MIN(SQRT(W2)-MREMIN,EMLMAX))**2 DEBUG=6 IF (SHINF .GT. SHSUP) GOTO 888 C IF (IPRO.EQ.91) THEN IF (.NOT.CHARGD) THEN SHAT = SHINF*SHSUP/HWRUNI(0,SHINF,SHSUP) SHJAC = SHAT**2 * (SHSUP-SHINF)/(SHSUP*SHINF) ELSE SHAT = EXP(HWRUNI(0,LOG(SHINF),LOG(SHSUP))) SHJAC = SHAT*(LOG(SHSUP/SHINF)) ENDIF ELSE EMW2=EMW**2 IF (SHINF.GT.EMW2+10*GAMW*EMW) THEN SHAT = SHINF*SHSUP/HWRUNI(0,SHINF,SHSUP) SHJAC = SHAT**2 * (SHSUP-SHINF)/(SHSUP*SHINF) ELSEIF (SHSUP.LT.EMW2-10*EMW*GAMW) THEN SHAT = HWRUNI(0,SHINF,SHSUP) SHJAC = SHSUP-SHINF ELSE TMIN=ATAN((SHINF-EMW2)/(GAMW*EMW)) TMAX=ATAN((SHSUP-EMW2)/(GAMW*EMW)) SHAT = GAMW*EMW*TAN(HWRUNI(0,TMIN,TMAX))+EMW2 SHJAC=((SHAT-EMW2)**2+(GAMW*EMW)**2)/(GAMW*EMW)*(TMAX-TMIN) ENDIF ENDIF DETDSH = ONE/SMA/Y SHJAC=SHJAC*DETDSH RSHAT = SQRT (SHAT) C--- z generation ZMIN = 10E10 ZMAX = -ONE IF (.NOT.CHARGD) THEN DO I=1,18 Q1CM(I) = ZERO ZMIF(I) = ZERO ZMAF(I) = ZERO ENDDO DO 150 I=IMIN,IMAX IF (INCLUD(I)) THEN Q1CM(I) = HWUPCM( RSHAT, MFIN1(I), MFIN2(I) ) IF (Q1CM(I) .LT. PTMIN) THEN ZMAF(I)=-ONE GOTO 150 ENDIF CTHLIM = SQRT(ONE - (PTMIN / Q1CM(I))**2) GAMMA2 = SHAT + MFIN1(I)**2 - MFIN2(I)**2 LAMBDA = (SHAT-MFIN1(I)**2-MFIN2(I)**2)**2 - + 4.D0*MFIN1(I)**2*MFIN2(I)**2 ZMIF(I) = (GAMMA2 - SQRT(LAMBDA)*CTHLIM)/TWO/SHAT ZMIF(I) = MAX(ZMIF(I),ZERO) ZMAF(I) = (GAMMA2 + SQRT(LAMBDA)*CTHLIM)/TWO/SHAT ZMAF(I) = MIN(ZMAF(I),ONE) ZMIN = MIN( ZMIN, ZMIF(I) ) ZMAX = MAX( ZMAX, ZMAF(I) ) ENDIF 150 CONTINUE IF (IFL.EQ.164) ZMAX=MIN(ZMAX,ZJMAX) ELSE Q1 = HWUPCM(RSHAT,MF1,MF2) DEBUG=7 IF (Q1.LT.PTMIN) GOTO 888 CTHLIM = SQRT(ONE-(PTMIN/Q1)**2) GAMMA2 = SHAT+MF1**2-MF2**2 LAMBDA = (SHAT-MF1**2-MF2**2)**2-4.D0*MF1**2*MF2**2 ZMIN = (GAMMA2-SQRT(LAMBDA)*CTHLIM)/TWO/SHAT ZMIN = MAX(ZMIN,1D-6) ZMAX = (GAMMA2+SQRT(LAMBDA)*CTHLIM)/TWO/SHAT ZMAX = MIN(ZMAX,ONE-1D-6) ENDIF DEBUG=8 IF (ZMIN .GT. ZMAX) GOTO 888 ZLMIN = LOG(ZMIN/(ONE-ZMIN)) ZINT = LOG(ZMAX/(ONE-ZMAX)) - LOG(ZMIN/(ONE-ZMIN)) ZL = ZLMIN+HWRGEN(0)*ZINT Z = EXP(ZL)/(ONE+EXP(ZL)) ZJAC = Z*(ONE-Z)*ZINT C DEBUG=9 IF ((Y.LT.YMIN.OR.Y.GT.YMAX).OR.(Q2.LT.Q2INF.OR.Q2.GT.Q2SUP).OR. + (SHAT.LT.SHINF.OR.SHAT.GT.SHSUP).OR.(Z.LT.ZMIN.OR.Z.GT.ZMAX)) + GOTO 888 C---Phi generation PHI = HWRUNI(0,ZERO,2*PIFAC) PHIJAC = 2 * PIFAC IF (IFL.EQ.164) PHIJAC=ONE C AJACOB = YJAC * Q2JAC * SHJAC * ZJAC * PHIJAC C IF (IQK.NE.0.OR.IPRO.EQ.5) GOTO 999 C---contributing subprocesses: filling of logical vector INSIDE DO I=1,18 INSIDE(I)=.FALSE. Q2MAF(I)=ZERO EMMAWF(I)=ZERO ENDDO DO 200 I=IMIN,IMAX IF (INCLUD(I)) THEN IF ( Y.LT.YMIF(I) ) GOTO 200 C Q2MAF(I) = MP**2 + SMA*Y - WMIF(I)**2 Q2MAF(I) = MIN( Q2MAF(I), Q2MAX) IF (Q2INF .GT. Q2MAF(I)) GOTO 200 IF (Q2.LT.Q2INF .OR. Q2.GT.Q2MAF(I)) GOTO 200 C EMMAWF(I) = SQRT(W2) - MREMIF(I) EMMAWF(I) = MIN( EMMAWF(I), EMLMAX ) C IF (EMMIF(I) .GT. EMMAWF(I)) GOTO 200 IF (SHAT.LT.EMMIF(I)**2.OR.SHAT.GT.EMMAWF(I)**2) GOTO 200 C IF (ZMIF(I) .GT. ZMAF(I)) GOTO 200 IF (Z.LT.ZMIF(I) .OR. Z.GT.ZMAF(I)) GOTO 200 INSIDE(I)=.TRUE. ENDIF 200 CONTINUE 999 RETURN 888 EVWGT=ZERO C---UNCOMMENT THIS LINE TO GET A DEBUGGING WARNING FOR NO PHASE-SPACE C CALL HWWARN('HWHBRN',DEBUG) IFGO = .TRUE. END CDECK ID>, HWHBSG. *CMZ :- -03/07/95 19.02.12 by Giovanni Abbiendi *-- Author : Giovanni Abbiendi & Luca Stanco C---------------------------------------------------------------------- SUBROUTINE HWHBSG C---------------------------------------------------------------------- C Returns differential cross section DSIGMA in (Y,Q2,ETA,Z,PHI) C Scale for structure functions and alpha_s selected by BGSHAT C---------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWUALF,HWUAEM,Y,Q2,SHAT,Z,PHI,AJACOB,DSIGMA, & ME,MP,ML,MREMIF(18),MFIN1(18),MFIN2(18),RS,SMA,W2,RSHAT, & SFUN(13),ALPHA,LDSIG,DLQ(7),SG,XG,MF1,MF2,MSUM,MDIF,MPRO,FFUN, & GFUN,H43,H41,H11,H12,H14,H16,H21,H22,G11,G12,G1A,G1B,G21,G22,G3, & GC,A11,A12,A44,ALPHAS,PDENS,AFACT,BFACT,CFACT,DFACT,GAMMA,S,T,U, & MREMIN,POL,CCOL,ETA INTEGER LEP INTEGER IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,IPROO,IHAD,ILEPT,IQ,IS LOGICAL CHARGD,INCLUD(18),INSIDE(18) EXTERNAL HWUALF,HWUAEM COMMON /HWAREA/ Y,Q2,SHAT,Z,PHI,AJACOB,DSIGMA,ME,MP,ML,MREMIF, & MFIN1,MFIN2,RS,SMA,W2,RSHAT,IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,LEP, & IPROO,CHARGD,INCLUD,INSIDE C IHAD=2 IF (JDAHEP(1,IHAD).NE.0) IHAD=JDAHEP(1,IHAD) C---set masses IF (CHARGD) THEN MREMIN=MP IF (LEP.EQ.1) THEN MF1=RMASS(IFLAVD) MF2=RMASS(IFLAVU) ELSE MF1=RMASS(IFLAVU) MF2=RMASS(IFLAVD) ENDIF ELSE IS=IFL IF (IFL.EQ.164) IS=IQK MREMIN = MREMIF(IS) MF1 = MFIN1(IS) MF2 = MFIN2(IS) ENDIF C---choose subprocess scale IF (BGSHAT) THEN EMSCA = RSHAT ELSE S=SHAT+Q2 IF (IFL.GE.7.AND.IFL.LE.18) S=SHAT+Q2-MF1**2 T=-S*Z U=-S-T IF (IFL.GE.7.AND.IFL.LE.18) U=-S-T-2*MF1**2 EMSCA = SQRT(TWO*S*T*U/(S**2+T**2+U**2)) IF (IFL.EQ.164) EMSCA=SQRT(-U) ENDIF ALPHAS = HWUALF(1,EMSCA) IF (ALPHAS.GE.ONE.OR.ALPHAS.LE.ZERO) THEN CALL HWWARN('HWHBSG',51) GOTO 888 ENDIF C---structure functions ETA = (SHAT+Q2)/SMA/Y IF (ETA.GT.ONE) ETA=ONE CALL HWSFUN (ETA,EMSCA,IDHW(IHAD),NSTRU,SFUN,2) XG = Q2/(SHAT + Q2) SG = ETA*SMA IF (SG.LE.(RSHAT+ML)**2.OR.SG.GE.(RS-MREMIN)**2) GOTO 888 C IF (IFL.EQ.164) GOTO 200 C C---Electroweak couplings ALPHA=HWUAEM(-Q2) IF (CHARGD) THEN POL = PPOLN(3) - EPOLN(3) DLQ(1)=.0625*VCKM(IFLAVU/2,(IFLAVD+1)/2)/SWEIN**2 * + Q2**2/((Q2+RMASS(198)**2)**2+(RMASS(198)*GAMW)**2) * + (ONE + POL) DLQ(2)=ZERO DLQ(3)=DLQ(1) ELSE IQ=MOD(IFL-1,6)+1 ILEPT=MOD(IDHW(1)-121,6)+11 CALL HWUCFF(ILEPT,IQ,-Q2,DLQ(1)) ENDIF C IF (IFL.LE.6) THEN C---For Boson-Gluon Fusion PDENS = SFUN(13)/ETA CCOL = HALF MSUM = (MF1**2 + MF2**2) / (Y*SG) MDIF = (MF1**2 - MF2**2) / (Y*SG) MPRO = MF1*MF2 / (Y*SG) C FFUN = (1.D0-XG)*Z*(1.D0-Z) + (MDIF*(2.D0*Z-1.D0)-MSUM)/2.D0 GFUN = (1.D0-XG)*(1.D0-Z) + XG*Z + MDIF IF ( FFUN .LT. ZERO ) FFUN = ZERO H43 = (8.D0*(2.D0*Z**2*XG-Z**2-2.D0*Z*XG+2.D0*Z*MDIF+Z-MDIF & -MSUM)) / (Z*(1.D0-Z))**2 C H41 = (8.D0*(Z**2-Z*XG+Z*MDIF-MDIF-MSUM)) / (Z**2*(1.D0-Z)) C H11 = (4.D0*(2.D0*Z**4-4.D0*Z**3+2.D0*Z**2*MSUM*XG & -2.D0*Z**2*MSUM+2.D0*Z**2*XG**2-2.D0*Z**2*XG+3.D0*Z**2 & +2.D0*Z*MDIF*MSUM+2.D0*Z*MDIF*XG-2.D0*Z*MSUM*XG & +2.D0*Z*MSUM-2.D0*Z*XG**2+2.D0*Z*XG-Z-MDIF*MSUM-MDIF*XG & -MSUM**2-MSUM*XG)) / (Z*(1.D0-Z))**2 C H12 = (16.D0*(-Z*MDIF+Z*XG+MDIF+MSUM))/(Z**2*(1.D0-Z)) C H14 = (16.D0*(-2.D0*Z**2*XG-2.D0*Z*MDIF+2.D0*Z*XG+MDIF+MSUM)) & / (Z*(1.D0-Z))**2 C H16 = (32.D0*(Z*MDIF-Z*XG-MDIF-MSUM)) / (Z**2*(1.D0-Z)) C H21 = (8.D0*MPRO*(-2.D0*Z**2*XG+2.D0*Z**2-2.D0*Z*MDIF+2.D0*Z*XG + -2.D0*Z+MDIF+MSUM)) / (Z*(1.D0-Z))**2 C H22 = (-32.D0*MPRO) / (Z*(1.D0-Z)) C G11 = -2.D0*H11 + FFUN*H14 G12 = 2.D0*XG*FFUN*H14 + H12 + GFUN * ( H16+GFUN*H14 ) G1A = SQRT( XG*FFUN ) * ( H16 + 2.D0*GFUN*H14 ) G1B = FFUN*H14 G21 = -2.D0*H21 G22 = H22 G3 = H41 - GFUN*H43 GC = SQRT( XG*FFUN ) * (-2.D0*XG*H43 ) ELSE C---for QCD Compton, massless matrix element PDENS = SFUN(IFL-6)/ETA CCOL = CFFAC FFUN = XG*(ONE-XG)*Z*(ONE-Z) GFUN = (ONE-XG)*(ONE-Z)+XG*Z G11 = 8.D0*((Z**2+XG**2)/(ONE-XG)/(ONE-Z)+TWO*(XG*Z+ONE)) G12 = 64.D0*XG**2*Z+TWO*XG*G11 G1A = 32.D0*XG*GFUN*SQRT(FFUN)/((ONE-XG)*(ONE-Z)) G1B = 16.D0*XG*Z G3 = -16.D0*(ONE-XG)*(ONE-Z)+G11 GC = -16.D0*XG*SQRT(FFUN)*(ONE-Z-XG)/((ONE-XG)*(ONE-Z)) G21 = ZERO G22 = ZERO ENDIF C A11 = XG * Y**2 * G11 + (1.D0-Y) * G12 & - (2.D0-Y) * SQRT( 1.D0-Y ) * G1A * COS( PHI ) & + 2.D0 * XG * (1.D0-Y) * G1B * COS( 2.D0*PHI ) C A12 = XG * Y**2 * G21 + (1.D0-Y) * G22 C A44 = XG * Y * (2.D0-Y) * G3 & - 2.D0 * Y * SQRT( 1.D0-Y ) * GC * COS( PHI ) C IF ( Y*Q2**2 .LT. 1D-38 ) THEN C---prevent numerical uncertainties in DSIGMA computation DSIGMA = PDENS*ALPHA**2*ALPHAS*GEV2NB*CCOL/(16.D0*PIFAC) & *(DLQ(1)*A11 + DLQ(2)*A12 + FLOAT(LEP)*DLQ(3)*A44) IF ( DSIGMA .LE. ZERO ) GOTO 888 LDSIG = LOG (DSIGMA) - LOG (Y) - 2.D0 * LOG (Q2) DSIGMA = EXP (LDSIG) ELSE DSIGMA = PDENS*ALPHA**2*ALPHAS*GEV2NB*CCOL & * (DLQ(1)*A11 + DLQ(2)*A12 + FLOAT(LEP)*DLQ(3)*A44) & / (16.D0*PIFAC*Y*Q2**2) ENDIF IF (DSIGMA.LT.ZERO) GOTO 888 RETURN C 200 CONTINUE C--- J/psi production ALPHA = HWUAEM(-Q2) GAMMA = 4.8D-6 PDENS = SFUN(13)/ETA AFACT = (8.D0*PIFAC*ALPHAS**2*RMASS(164)**3*GAMMA)/(3.D0*ALPHA) BFACT = ONE/(Y*SG*Z**2*((Z-ONE)*Y*SG-RMASS(164)**2)**2) CFACT = (RMASS(164)**2-Z*Y*SG)**2/(Y*SG*(ONE-XG)**2* & ((ONE-XG)*Y*SG-RMASS(164)**2)**2* & ((Z-ONE)*Y*SG-RMASS(164)**2)**2) DFACT = ((Z-ONE)*Y*SG)**2/(Y*SG*(ONE-XG)**2* & ((ONE-XG)*Y*SG-RMASS(164)**2)**2*(Z*Y*SG)**2) DSIGMA = GEV2NB*ALPHA/(TWO*PIFAC)*AFACT*(BFACT+CFACT+DFACT)*PDENS IF (DSIGMA.LT.ZERO ) GOTO 888 RETURN 888 DSIGMA=ZERO END CDECK ID>, HWHDIS. *CMZ :- -26/04/91 14.55.44 by Federico Carminati *-- Author : Giovanni Abbiendi & Luca Stanco C---------------------------------------------------------------------- SUBROUTINE HWHDIS C---------------------------------------------------------------------- C DEEP INELASTIC LEPTON-HADRON SCATTERING: MEAN EVWGT = SIGMA IN NB C---------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,HWRUNI,HWUPCM,PRAN,PROB,SAMP,SIG,Q2, & XBJ,Y,W,S,MLEP,MHAD,MLSCAT,YMIN,YMAX,XXMAX,Q2JAC,XXJAC, & JACOBI,A1,A2,A3,B1,B2,PCM,PCMEP,PCMLW,PCMEQ,PCMLQ,COSPHI,PA, & EQ,PZQ,SHAT,PROP,DLEFT,DRGHT,DUP,DWN,FACT,EFACT,OMY2,YPLUS, & YMNUS,SIGMA,AF(7,12),SMA,Q2SUP,HWUAEM,DCHRG,DNEUT INTEGER I,IQK,IQKIN,IQKOUT,IDSCAT,IHAD,ILEPT,LEP LOGICAL CHARGD EXTERNAL HWRGEN,HWRUNI,HWUPCM SAVE MLEP,MHAD,S,SMA,PCM,MLSCAT,A1,A2,A3,B1,B2,DLEFT,DRGHT,Q2, & AF,XBJ,Y,YPLUS,YMNUS,OMY2,FACT,EFACT,SIGMA,IDSCAT,CHARGD, & ILEPT,DCHRG,DNEUT,LEP IQK=MOD(IPROC,10) IHAD=2 IF (JDAHEP(1,IHAD).NE.0) IHAD=JDAHEP(1,IHAD) IF (FSTWGT.OR.IHAD.NE.2) THEN C---INITIALISE PROCESS (MUST BE DONE EVERY TIME IF S VARIES) C---LEPTON AND HADRON MASSES, INVARIANT MASS, MOMENTUM IN C.M. FRAME MLEP=PHEP(5,1) MHAD=PHEP(5,IHAD) S=PHEP(5,3)**2 SMA=S-MLEP**2-MHAD**2 PCM=HWUPCM(SQRT(S),MLEP,MHAD) C---LEP = 1 FOR LEPTONS, -1 FOR ANTILEPTONS IF (IDHW(1).GE.121.AND.IDHW(1).LE.126) THEN LEP=1 ELSEIF (IDHW(1).GE.127.AND.IDHW(1).LE.132) THEN LEP=-1 ELSE CALL HWWARN('HWHDIS',500) ENDIF DCHRG=FLOAT(MOD(IDHW(1) ,2)) DNEUT=FLOAT(MOD(IDHW(1)+1,2)) ILEPT=MOD(IDHW(1)-121,6)+11 C---DLEFT,DRIGHT = 1,0 for leptons; = 0,1 for anti-leptons DLEFT=MAX(LEP,0) DRGHT=MAX(-LEP,0) CHARGD=MOD(IPROC,100)/10.EQ.1 C---Evaluate constant factor in cross section and C find and store scattered lepton identity IF (CHARGD) THEN IF ((EPOLN(3)-PPOLN(3)).EQ.ONE) THEN WRITE(6,5) CALL HWWARN('HWHDIS',501) 5 FORMAT(1X,'WARNING: Cross-section is zero for the', & ' specified lepton helicity') ENDIF FACT=GEV2NB*(ONE-(EPOLN(3)-PPOLN(3)))*.25D0*PIFAC & /(SWEIN*RMASS(198)**2)**2 IDSCAT=IDHW(1)+NINT(DCHRG-DNEUT) ELSE FACT=GEV2NB*TWO*PIFAC IDSCAT=IDHW(1) ENDIF MLSCAT=RMASS(IDSCAT) C---PARAMETERS USED FOR THE WEIGHT GENERATION IN NEUTRAL CURRENT C PROCESSES. ASSUME D(SIGMA)/D(Q**2) GOES LIKE A1+A2/Q**2+A3/Q**4 C AND D(SIGMA)/D(X) LIKE B1+B2/X A1=0.5 A2=0.5 A3=1. B1=0.1 B2=1. ENDIF IF (GENEV) THEN C---GENERATE EVENT (KINEMATICAL VARIABLES AND STRUCTURE FUNCTION C ALREADY FOUND) PRAN=SIGMA*HWRGEN(0) IF (CHARGD) THEN C---CHARGED CURRENT PROCESS IF (IQK.EQ.0) THEN C---FIND FLAVOUR OF THE STRUCK QUARK (IF NOT SELECTED BY THE USER) PROB=ZERO DO 10 I=1,6 DUP=MOD(I+1,2) DWN=MOD(I ,2) PROB=PROB+EFACT* & ((DCHRG*(DLEFT*DUP+DRGHT*DWN*OMY2) & +DNEUT*(DLEFT*DWN+DRGHT*DUP*OMY2))*DISF(I ,1) & +(DCHRG*(DLEFT*DWN*OMY2+DRGHT*DUP) & +DNEUT*(DLEFT*DUP*OMY2+DRGHT*DWN))*DISF(I+6,1)) IF (PROB.GE.PRAN) GOTO 20 10 CONTINUE I=6 20 IQK=I ENDIF DUP=MOD(IQK+1,2) DWN=MOD(IQK ,2) IQKIN=IQK IF ((LEP.EQ. 1.AND.MOD(IQK+IDHW(1),2).EQ.0) & .OR.(LEP.EQ.-1.AND.MOD(IQK+IDHW(1),2).EQ.1)) IQKIN=IQK+6 C---FIND FLAVOUR OF THE OUTGOING QUARK PRAN=HWRGEN(0) PROB=ZERO IF (DUP.EQ.ONE) THEN DO 30 I=1,3 PROB=PROB+VCKM(IQK/2,I) IF (PROB.GE.PRAN) GOTO 40 30 CONTINUE I=3 40 IQKOUT=2*I-1 IF (IQKIN.GT.6) IQKOUT=IQKOUT+6 ELSE DO 50 I=1,3 PROB=PROB+VCKM(I,(IQK+1)/2) IF (PROB.GE.PRAN) GOTO 60 50 CONTINUE I=3 60 IQKOUT=2*I IF (IQKIN.GT.6) IQKOUT=IQKOUT+6 ENDIF ELSE C---NEUTRAL CURRENT PROCESS IF (IQK.NE.0) THEN IQKIN=IQK PROB=EFACT*(AF(1,IQK)*YPLUS*DISF(IQK,1)+ & FLOAT(LEP)*AF(3,IQK)*YMNUS*DISF(IQK,1)) IF (PROB.LT.PRAN) IQKIN=IQK+6 ELSE C---FIND FLAVOUR OF THE STRUCK QUARK (IF NOT SELECTED BY THE USER) PROB=ZERO SIG=ONE DO 70 I=1,12 IF (I.GT.6) SIG=-ONE PROB=PROB+EFACT*(AF(1,I)*YPLUS*DISF(I,1)+ & FLOAT(LEP)*SIG*AF(3,I)*YMNUS*DISF(I,1)) IF (PROB.GE.PRAN) GOTO 80 70 CONTINUE I=12 80 IQKIN=I ENDIF IQKOUT=IQKIN ENDIF IDN(1)=IDHW(1) IDN(2)=IQKIN IDN(3)=IDSCAT IDN(4)=IQKOUT ICO(1)=1 ICO(2)=4 ICO(3)=3 ICO(4)=2 XX(1)=1. XX(2)=XBJ C---CHECK PHASE SPACE WITH THE SELECTED FLAVOUR. IF OUTSIDE THE C EVENT IS KILLED. PA=XBJ*(PHEP(4,IHAD)+ABS(PHEP(3,IHAD))) EQ=HALF*(PA+RMASS(IDN(2))**2/PA) PZQ=-(PA-EQ) SHAT=(PHEP(4,1)+EQ)**2-(PHEP(3,1)+PZQ)**2 PCMEQ=HWUPCM(SQRT(SHAT),MLEP,RMASS(IDN(2))) PCMLQ=HWUPCM(SQRT(SHAT),MLSCAT,RMASS(IDN(4))) IF (PCMLQ.LT.ZERO) THEN CALL HWWARN('HWHDIS',101) GOTO 999 ELSEIF (PCMLQ.EQ.ZERO) THEN COSTH=ZERO ELSE COSTH=(TWO*SQRT(PCMEQ**2+MLEP**2)*SQRT(PCMLQ**2+MLSCAT**2) & -(Q2+MLEP**2+MLSCAT**2))/(TWO*PCMEQ*PCMLQ) ENDIF IF (ABS(COSTH).GT.ONE) THEN CALL HWWARN('HWHDIS',102) GOTO 999 ENDIF IDCMF=15 CALL HWETWO(.TRUE.,.TRUE.) ELSE EVWGT=ZERO IF (CHARGD) THEN C---CHOOSE X,Y (CC PROCESS) YMIN=MAX(YBMIN,Q2MIN/SMA) YMAX=MIN(YBMAX,ONE) IF (YMIN.GT.YMAX) GOTO 999 Y=HWRUNI(0,YMIN,YMAX) XXMIN=Q2MIN/S/Y XXMAX=MIN(Q2MAX/SMA/Y,ONE) IF (XXMIN.GT.XXMAX) GOTO 999 XBJ=HWRUNI(0,XXMIN,XXMAX) Q2=XBJ*Y*(S-MLEP**2-MHAD**2) JACOBI=(YMAX-YMIN)*(XXMAX-XXMIN)*(S-MLEP**2-MHAD**2)*XBJ ELSE C---CHOOSE X,Q**2 (NC PROCESS) Q2SUP=MIN(Q2MAX,SMA*YBMAX) IF (Q2MIN.GT.Q2SUP) GOTO 999 SAMP=(A1+A2+A3)*HWRGEN(0) IF (SAMP.LE.A1) THEN Q2=HWRUNI(0,Q2MIN,Q2SUP) ELSEIF (SAMP.LE.(A1+A2)) THEN Q2=EXP(HWRUNI(0,LOG(Q2MIN),LOG(Q2SUP))) ELSE Q2=-ONE/HWRUNI(0,-ONE/Q2MIN,-ONE/Q2SUP) ENDIF Q2JAC=(A1+A2+A3)/ & (A1/(Q2SUP-Q2MIN) & +A2/LOG(Q2SUP/Q2MIN)/Q2 & +A3*Q2MIN*Q2SUP/(Q2SUP-Q2MIN)/Q2**2) XXMIN=Q2/SMA/YBMAX XXMAX=ONE IF (YBMIN.GT.ZERO) XXMAX=MIN(Q2/SMA/YBMIN,ONE) IF (XXMIN.GT.XXMAX) GOTO 999 SAMP=(B1+B2)*HWRGEN(0) IF (SAMP.LE.B1) THEN XBJ=HWRUNI(0,XXMIN,XXMAX) ELSE XBJ=EXP(HWRUNI(0,LOG(XXMIN),LOG(XXMAX))) ENDIF XXJAC=(B1+B2)/(B1/(XXMAX-XXMIN)+B2/LOG(XXMAX/XXMIN)/XBJ) Y=Q2/(S-MLEP**2-MHAD**2)/XBJ JACOBI=Q2JAC*XXJAC ENDIF C---CHECK IF THE GENERATED POINT IS INSIDE PHASE SPACE. IF NOT C RETURN WITH WEIGHT EQUAL TO ZERO. W=SQRT(MHAD**2+Q2*(ONE-XBJ)/XBJ) IF (W.LT.WHMIN) RETURN PCMEP=PCM PCMLW=HWUPCM(SQRT(S),MLSCAT,W) IF (PCMLW.LT.ZERO) THEN EVWGT=ZERO RETURN ELSEIF (PCMLW.EQ.ZERO) THEN COSPHI=ZERO ELSE COSPHI= & (TWO*SQRT(PCMEP**2+MLEP**2)*SQRT(PCMLW**2+MLSCAT**2) & -(Q2+MLEP**2+MLSCAT**2))/(TWO*PCMEP*PCMLW) ENDIF IF (ABS(COSPHI).GT.ONE) THEN EVWGT=ZERO RETURN ENDIF C---SET SCALE EQUAL Q. EVALUATE STRUCTURE FUNCTIONS. EMSCA=SQRT(Q2) CALL HWSFUN(XBJ,EMSCA,IDHW(IHAD),NSTRU,DISF,2) C---SWITCH OFF ANY FLAVOURS THAT ARE BELOW THRESHOLD DO 90 I=1,12 90 IF (W.LT.2*RMASS(I)) DISF(I,1)=0 C---EVALUATE DIFFERENTIAL CROSS SECTION IF (CHARGD) THEN PROP=RMASS(198)**2/(Q2+RMASS(198)**2) EFACT=FACT*(HWUAEM(-Q2)*PROP)**2/XBJ OMY2=(ONE-Y)**2 SIGMA=ZERO DO 100 I=1,6 DUP=MOD(I+1,2) DWN=MOD(I ,2) IF (IQK.NE.0.AND.IQK.NE.I) GOTO 100 SIGMA=SIGMA+EFACT* & ((DCHRG*(DLEFT*DUP+DRGHT*DWN*OMY2) & +DNEUT*(DLEFT*DWN+DRGHT*DUP*OMY2))*DISF(I ,1) & +(DCHRG*(DLEFT*DWN*OMY2+DRGHT*DUP) & +DNEUT*(DLEFT*DUP*OMY2+DRGHT*DWN))*DISF(I+6,1)) 100 CONTINUE ELSE EFACT=FACT/XBJ*(HWUAEM(-Q2)/Q2)**2 YPLUS=ONE+(ONE-Y)**2 YMNUS=ONE-(ONE-Y)**2 DO 110 I=1,6 CALL HWUCFF(ILEPT,I,-Q2,AF(1,I)) AF(1,I+6)=AF(1,I) AF(3,I+6)=AF(3,I) 110 CONTINUE SIGMA=ZERO DO 200 I=1,6 IF (IQK.NE.0.AND.IQK.NE.I) GOTO 200 SIGMA=SIGMA+EFACT*(AF(1,I)*YPLUS*(DISF(I,1)+DISF(I+6,1))+ & FLOAT(LEP)*AF(3,I)*YMNUS*(DISF(I,1)-DISF(I+6,1))) 200 CONTINUE ENDIF C---FIND WEIGHT: DIFFERENTIAL CROSS SECTION TIME THE JACOBIAN FACTOR EVWGT=SIGMA*JACOBI IF (EVWGT.LT.ZERO) EVWGT=ZERO ENDIF 999 RETURN END CDECK ID>, HWHDYP. *CMZ :- -18/05/99 12.41.07 by Mike Seymour *-- Author : Bryan Webber, Ian Knowles and Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWHDYP C----------------------------------------------------------------------- C Drell-Yan Production of fermion pairs via photon, Z0 & (if ZPRIME) C Z' exchange. Lepton universality is assumed for photon and Z, and C for Z' if no lepton flavour is specified. C MEAN EVWGT = SIGMA IN NB C C Modified 16/01/01 by BRW to implement Peter Richardson's C fix for bug in lepton mass effects on branching ratio C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,HWRUNI,HWUAEM,EPS,C1,C2,C3,EMSQZ,EMGMZ, & EMSQZP,EMGMZP,CQF(7,6,16),QPOW,RPOW,A01,A1,A02,A2,A03,A3,CRAN, & EMJ1,EMJ2,EMJ3,EMJAC,FACT,QSQ,HCS,FACTR,RCS,EXTRA,PMAX,PTHETA INTEGER IMODE,JQMN,JQMX,JQ,JLMN,JLMX,JL,IQ,I,IADD(2,2),ID1,ID2, & ID3,ID4,JF EXTERNAL HWRGEN,HWRUNI,HWUAEM SAVE HCS,JQMN,JQMX,JLMN,JLMX,C1,C2,C3,QPOW,RPOW,EMSQZ,EMGMZ, & A1,A01,A2,A02,A3,A03,EMSQZP,EMGMZP,FACT,CQF PARAMETER (EPS=1.D-9) SAVE IADD DATA IADD/0,6,6,0/ IF (GENEV) THEN RCS=HCS*HWRGEN(0) ELSE IF (FSTWGT) THEN C Set limits for which particles to include JLMN=1 JLMX=0 JQMN=1 JQMX=0 IMODE=MOD(IPROC,100) IF (IMODE.EQ.0) THEN JQMN=1 JQMX=6 ELSEIF (IMODE.LE.10) THEN JQMN=IMODE JQMX=IMODE ELSEIF (IMODE.EQ.50) THEN JLMN=11 JLMX=16 ELSEIF (IMODE.GE.50.AND.IMODE.LE.60) THEN JLMN=IMODE-40 JLMX=IMODE-40 ELSEIF (IMODE.EQ.99) THEN JQMN=1 JQMX=6 JLMN=11 JLMX=16 ELSE CALL HWWARN('HWHDYP',500) ENDIF C Set up parameters for importance sampling: C sum of power law and two Breit-Wigners (relative weights C1,C2,C3) C1=ONE C2=ONE C3=ZERO IF (ZPRIME) C3=ONE IF (EMPOW.EQ.ONE) CALL HWWARN('HWHDYP',501) IF (C2.EQ.ZERO) CALL HWWARN('HWHDYP',502) IF (C3.EQ.ZERO.AND.ZPRIME) CALL HWWARN('HWHDYP',503) QPOW=-EMPOW+1 RPOW=1/QPOW EMSQZ=RMASS(200)**2 EMGMZ=RMASS(200)*GAMZ A01=EMMIN**QPOW A1=(EMMAX**QPOW-A01)/C1 A02=ATAN((EMMIN**2-EMSQZ)/EMGMZ) A2=(ATAN((EMMAX**2-EMSQZ)/EMGMZ)-A02)/C2 IF (C3.GT.ZERO) THEN EMSQZP=RMASS(202)**2 EMGMZP=RMASS(202)*GAMZP A03=ATAN((EMMIN**2-EMSQZP)/EMGMZP) A3=(ATAN((EMMAX**2-EMSQZP)/EMGMZP)-A03)/C3 ENDIF ENDIF EVWGT=0. C Select a mass for the produced pair CRAN=(C1+C2+C3)*HWRGEN(1) IF (CRAN.LT.C1) THEN C Use power law EMSCA=(A01+A1*CRAN)**RPOW QSQ=EMSCA**2 ELSEIF (CRAN.LT.C1+C2) THEN C Use Z Breit-Wigner CRAN=CRAN-C1 QSQ=EMSQZ+EMGMZ*TAN(A02+A2*CRAN) EMSCA=SQRT(QSQ) ELSE C Use Z' Breit-Wigner CRAN=CRAN-C1-C2 QSQ=EMSQZP+EMGMZP*TAN(A03+A3*CRAN) EMSCA=SQRT(QSQ) ENDIF EMJ1=EMSCA**EMPOW/(1-EMPOW)*A1 EMJ2=((QSQ-EMSQZ)**2+EMGMZ**2)/(2*EMSCA*EMGMZ)*A2 IF (C3.GT.ZERO) THEN EMJ3=((QSQ-EMSQZP)**2+EMGMZP**2)/(2*EMSCA*EMGMZP)*A3 EMJAC=(C1+C2+C3)/(1/EMJ1+1/EMJ2+1/EMJ3) ELSE EMJAC=(C1+C2)/(1/EMJ1+1/EMJ2) ENDIF C Select initial momentum fractions XXMIN=QSQ/PHEP(5,3)**2 XLMIN=LOG(XXMIN) CALL HWSGEN(.TRUE.) FACT=-GEV2NB*HWUAEM(QSQ)**2*PIFAC*8*EMJAC*XLMIN $ /(3*NCOLO*EMSCA**3) C Store cross-section coefficients DO 50 IQ=1,6 DO 30 JQ=JQMN,JQMX IF (EMSCA.GT.2.*RMASS(JQ)) THEN CALL HWUCFF(IQ,JQ,QSQ,CQF(1,IQ,JQ)) ELSE CALL HWVZRO(7,CQF(1,IQ,JQ)) ENDIF 30 CONTINUE DO 40 JL=JLMN,JLMX IF (EMSCA.GT.2.*RMASS(JL+110)) THEN CALL HWUCFF(IQ,JL,QSQ,CQF(1,IQ,JL)) ELSE CALL HWVZRO(7,CQF(1,IQ,JL)) ENDIF 40 CONTINUE 50 CONTINUE ENDIF C HCS=0. DO 90 I=1,2 C I=1 quark first, I=2 anti-quark first DO 80 IQ=1,6 ID1=IQ+IADD(1,I) ID2=IQ+IADD(2,I) IF (DISF(ID1,1).LT.EPS.OR.DISF(ID2,2).LT.EPS) GOTO 80 FACTR=FACT*DISF(ID1,1)*DISF(ID2,2) C Quark final states DO 60 JQ=JQMN,JQMX ID3=JQ ID4=JQ+6 IF (IQ.EQ.JQ) THEN HCS=HCS+FACTR*(CQF(1,IQ,JQ)*FLOAT(NCOLO)+3*HALF*QFCH(IQ)**4) IF (GENEV.AND.HCS.GT.RCS) THEN CALL HWHQCP(ID3,ID4,2143,50) GOTO 99 ENDIF ELSE HCS=HCS+FACTR*CQF(1,IQ,JQ)*FLOAT(NCOLO) IF (GENEV.AND.HCS.GT.RCS) THEN CALL HWHQCP(ID3,ID4,2143,50) GOTO 99 ENDIF ENDIF 60 CONTINUE C Lepton final states DO 70 JL=JLMN,JLMX ID3=110+JL ID4=ID3+6 HCS=HCS+FACTR*CQF(1,IQ,JL) IF (GENEV.AND.HCS.GT.RCS) THEN CALL HWHQCP(ID3,ID4,2134,50) GOTO 99 ENDIF 70 CONTINUE 80 CONTINUE 90 CONTINUE EVWGT=HCS RETURN C Generate event 99 IDN(1)=ID1 IDN(2)=ID2 IDCMF=200 IF (ID3.LE.6) THEN JF=JQ ELSE JF=JL ENDIF C Select polar angle from distribution: C CQF(1,IQ,JF)*(ONE+COSTH**2)+CQF(3,IQ,JF)*COSTH+EXTRA*(ONE+COSTH) IF (ID1.EQ.ID3.OR.ID2.EQ.ID3) THEN EXTRA=TWO*QFCH(ID3)**4/NCOLO ELSE EXTRA=0 ENDIF PMAX=2.*(CQF(1,IQ,JF)+EXTRA)+ABS(CQF(3,IQ,JF)) 100 COSTH=HWRUNI(0,-ONE,ONE) PTHETA=CQF(1,IQ,JF)*(ONE+COSTH**2)+TWO*CQF(3,IQ,JF)*COSTH & +EXTRA*(ONE+COSTH) IF (PTHETA.LT.PMAX*HWRGEN(1)) GOTO 100 IF (ID1.GT.ID2) COSTH=-COSTH IDCMF=200 CALL HWETWO(.TRUE.,.TRUE.) END CDECK ID>, HWHDYQ. *CMZ :- -14/03/01 09:03:25 by Peter Richardson *-- Author : Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWHDYQ(FSTCLL,HCS,IFLOW,IDP,ORD,IQ,MASS) C----------------------------------------------------------------------- C Drell-Yan production with a q qbar pair C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' INTEGER I,MAP(12),ORD,IFL,IDP(6),IFLOW,QCFL(2,2),GCFL(2),IDZ,IQ DOUBLE PRECISION HCS,RCS,MQ(2,5),HWRGEN,G(12,2),DIST(2),MG(2) LOGICAL FSTCLL,MASS EXTERNAL HWRGEN COMMON/HWHZBC/G SAVE MQ,MG SAVE MAP,QCFL,GCFL DATA MAP/1,2,3,4,5,6,11,12,13,14,15,16/ DATA QCFL/2413,3142,4123,2341/ DATA GCFL/2413,4123/ IF(GENEV) THEN RCS = HCS*HWRGEN(1) ELSE C--to the initalisation IF(FSTCLL) THEN C--G(I,1) is the right charge and G(I,2) is the left charge DO I=1,12 G(I,1) = VFCH(MAP(I),1)-AFCH(MAP(I),1) G(I,2) = VFCH(MAP(I),1)+AFCH(MAP(I),1) ENDDO FSTCLL = .FALSE. ENDIF C--identify the Z decay product IDZ = IDP(5) IF(IDZ.GT.6) IDZ = IDZ-114 C--calculate the matrix elements IF(MASS) THEN C--massive case CALL HWH2MQ(IQ,IDZ,MG,MQ) ELSE C--massless case CALL HWH2M0(IQ,IDZ,MG,MQ) ENDIF ENDIF C--multiply the matrix elements by the PDF's to obtain the cross section HCS = ZERO IDP(3) = IQ IDP(4) = IQ+6 C--first the qqbar initial states DO I=1,5 IDP(1) = I IDP(2) = IDP(1)+6 DIST(1) = DISF(IDP(1),1)*DISF(IDP(2),2) DIST(2) = DISF(IDP(1),2)*DISF(IDP(2),1) DO ORD=1,2 DO IFL=1,2 IFLOW = QCFL(IFL,ORD) HCS = HCS+DIST(ORD)*MQ(IFL,IDP(1))/36.0D0 IF(GENEV.AND.HCS.GT.RCS) RETURN ENDDO ENDDO ENDDO C--then the gluon gluon inital state IDP(1) = 13 IDP(2) = 13 DIST(1) = DISF(IDP(1),1)*DISF(IDP(1),2) DO IFL=1,2 IFLOW = GCFL(IFL) HCS = HCS+DIST(1)*MG(IFL)/256.0D0 IF(GENEV.AND.HCS.GT.RCS) RETURN ENDDO END CDECK ID>, HWHEGG. *CMZ :- -19/03/92 10.13.56 by Mike Seymour *-- Author : Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWHEGG C---------------------------------------------------------------------- C HARD PROCESS: EE --> EEGAMGAM --> EEFFBAR/WW C MEAN EVENT WEIGHT = CROSS-SECTION IN NB C AFTER CUTS ON PT AND MASS OF CENTRE-OF-MASS SYSTEM C AND COS(THETA) IN CENTRE-OF-MASS SYSTEM C AND TIMES BRANCHING FRACTION IF WW C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,HWULDO,EMSQ,BETA,S,T,U,TMIN,TMAX,TRAT, & DSDT,PROB,X,Z(2),ZMIN,ZMAX,PCMIN,PCMAX,PCFAC,PLOGMI,PLOGMA,PTCMF, & Q,PC,BLOG,EMCMIN,EMCMAX,EMLMIN,EMLMAX,WGT(6),RWGT,CV,CA,BR,QT(2), & QX(2),QY(2),PX,PY,ROOTS,DOT,A,B,C,SHAT,PCF(2),PCM(2),PCMAC,ZZ(2), & COLFAC INTEGER I,IGAM,ID,IDL,ID1,ID2,IHEP,JHEP,NADD,NTRY,NQ,JGAM LOGICAL HWRLOG EXTERNAL HWRGEN,HWULDO,HWRLOG SAVE S,BETA,X,ID,NQ,WGT,EMLMIN,EMLMAX,PCFAC,PLOGMA,PLOGMI,SHAT, & PCF,PCM,Z,PCMAC,NADD IF (IERROR.NE.0) RETURN C---INITIALIZE LOCAL COPIES OF EMMIN,EMMAX IF (FSTWGT) THEN EMLMIN=EMMIN EMLMAX=EMMAX ENDIF IF (.NOT.GENEV) THEN C---CHOOSE Z1,Z2 AND CALCULATE SUB-PROCESS CROSS-SECTION EVWGT=0 C-----FIND FINAL STATE PARTICLES IHPRO=MOD(IPROC,100) IF (IHPRO.EQ.0) THEN ID=1 NQ=6 COLFAC=FLOAT(NCOLO) NADD=6 ELSEIF (IHPRO.LE.6) THEN ID=IHPRO NQ=1 COLFAC=FLOAT(NCOLO) NADD=6 Q=QFCH(ID) ELSEIF (IHPRO.LE.9) THEN ID=119+2*(IHPRO-6) NQ=1 COLFAC=1. NADD=6 Q=QFCH(ID-110) ELSEIF (IHPRO.LE.10) THEN ID=198 NQ=1 NADD=1 ELSE CALL HWWARN('HWHEGG',200) ENDIF C-----SPLIT ELECTRONS TO PHOTONS NHEP=3 GAMWT=1 S=2*HWULDO(PHEP(1,1),PHEP(1,2)) ROOTS=SQRT(S) EMCMIN=MAX(EMLMIN,MAX(2*RMASS(ID),PTMIN)) EMCMAX=MIN(EMLMAX,ROOTS) IF (EMCMIN.GT.EMCMAX) RETURN ZMIN=EMCMIN**2/S ZMAX=1-PHEP(5,1)/PHEP(4,1) IF (ZMIN.GT.ZMAX) RETURN CALL HWEGAM(1,ZMIN,ZMAX,.TRUE.) Z(1)=PHEP(4,NHEP-1)/PHEP(4,1) ZMIN=EMCMIN**2/(Z(1)*S) ZMAX=MIN(EMCMAX**2/(Z(1)*S), ONE-PHEP(5,2)/PHEP(4,2)) IF (ZMIN.GT.ZMAX) RETURN CALL HWEGAM(2,ZMIN,ZMAX,.TRUE.) Z(2)=PHEP(4,NHEP-1)/PHEP(4,2) EMSCA=PHEP(5,3) SHAT=EMSCA**2 C-----REMOVE LOG TERMS FROM WEIGHT, CALCULATE NEW ONES FROM PT LIMITS GAMWT=GAMWT/(0.5*LOG((1-Z(1))*S/(Z(1)*PHEP(5,1)**2)) & *0.5*LOG((1-Z(2))*Z(1)*S/(Z(2)*PHEP(5,2)**2))) PCF(1)=Z(1)*PHEP(5,1) PCF(2)=Z(2)*PHEP(5,2) PCFAC=SQRT(PCF(1)*PCF(2)) PCM(1)=(1-Z(1))*PHEP(4,1) PCM(2)=(1-Z(2))*PHEP(4,2) PCMAC=SQRT(PCM(1)*PCM(2)) PCMIN=MAX(PTMIN,MAX(PCF(1),PCF(2))) PCMAX=MIN( MIN(PTMAX,PHEP(5,3)) , MIN(PCM(1),PCM(2)) ) IF (PCMIN.GT.PCMAX) RETURN PLOGMI=(LOG(PCMIN/PCFAC))**2 PLOGMA=(LOG(PCMAX/PCFAC))**2 GAMWT=GAMWT*(PLOGMA-PLOGMI) C-----CALCULATE CROSS-SECTION DO 10 IDL=1,NQ WGT(IDL)=EVWGT IF (IHPRO.EQ.0) THEN ID=IDL Q=QFCH(ID) ENDIF EMSQ=RMASS(ID)**2 X=4*EMSQ/SHAT IF (X.GT.ONE) GOTO 10 BETA=SQRT(1-X) BLOG=LOG((1+BETA*CTMAX)/(1-BETA*CTMAX))/BETA IF (IHPRO.LE.9) THEN EVWGT=EVWGT+GEV2NB*4*PIFAC*COLFAC*Q**4*ALPHEM**2*BETA & /SHAT * GAMWT * ( (1+X-0.5*X**2)*BLOG & - CTMAX*(1+X**2/(CTMAX**2*(X-1)+1)) ) WGT(IDL)=EVWGT ELSE CALL HWDBOZ(198,ID1,ID2,CV,CA,BR,1) CALL HWDBOZ(199,ID1,ID2,CV,CA,BR,1) EVWGT=EVWGT + GEV2NB*6*PIFAC*ALPHEM**2*BETA/SHAT*BR & * GAMWT * (-( X-0.5*X**2)*BLOG & + CTMAX*(1+(X**2+16/3.)/(CTMAX**2*(X-1)+1)) ) ENDIF 10 CONTINUE C-----GAMWT MUST BE RESET TO ONE, SINCE IT IS REAPPLIED LATER! GAMWT=ONE ELSE C---GENERATE EVENT C-----CHOOSE PT OF THE CMF PTCMF=PCFAC*EXP(SQRT(HWRGEN(0)*(PLOGMA-PLOGMI)+PLOGMI)) C-----CHOOSE WHICH PHOTON USUALLY HAS SMALLER PT NTRY=0 20 IGAM=1 IF (LOG(PCM(1)/PCF(1)).LT.HWRGEN(1)*2*LOG(PCMAC/PCFAC)) IGAM=2 JGAM=3-IGAM C-----CHOOSE ITS PT 30 NTRY=NTRY+1 IF (NTRY.GT.NBTRY) THEN CALL HWWARN('HWHEGG',100) GOTO 999 ENDIF QT(IGAM)=(PCM(IGAM)/PCF(IGAM))**HWRGEN(2) PROB=(QT(IGAM)**2/(QT(IGAM)**2+1))**2 QT(IGAM)=QT(IGAM)*PCF(IGAM) IF (HWRLOG(1-PROB)) GOTO 30 C-----CHOOSE ITS DIRECTION CALL HWRAZM(QT(IGAM),QX(IGAM),QY(IGAM)) C-----CALCULATE THE OTHER PHOTON'S PT QX(JGAM)=PTCMF-QX(IGAM) QY(JGAM)= -QY(IGAM) QT(JGAM)=SQRT(QX(JGAM)**2+QY(JGAM)**2) IF (QT(JGAM).LT.PCF(JGAM).OR.QT(JGAM).GT.PCM(JGAM)) GOTO 20 C-----APPLY A RANDOM ROTATION AROUND THE BEAM AXIS CALL HWRAZM(ONE,PX,PY) IF (PX.EQ.ZERO) PX=1D-20 QX(1)=(QX(1)*PX -QY(1)*PY) QY(1)=(QY(1) +QX(1)*PY)/PX QX(2)=(QX(2)*PX -QY(2)*PY) QY(2)=(QY(2) +QX(2)*PY)/PX C-----RECONSTRUCT MOMENTA IF (QT(IGAM).GT.QT(JGAM)) THEN IGAM=3-IGAM JGAM=3-JGAM ENDIF DOT=-Z(JGAM)*S+SHAT+2*(QX(1)*QX(2)+QY(1)*QY(2)) C-------SOLVE QUADRATIC IN Z(IGAM) TO FIND ELECTRON ENERGIES A=S*(S*Z(JGAM)+QT(JGAM)**2) B=S*DOT*(1+Z(JGAM)) C=DOT**2+S*QT(IGAM)**2*(1-Z(JGAM))**2-4*QT(IGAM)**2*QT(JGAM)**2 IF (B**2.LT.4*A*C) GOTO 20 ZZ(IGAM)=(-B+SQRT(B**2-4*A*C))/(2*A) IF (ZZ(IGAM).LT.ZERO .OR. ZZ(IGAM).GT.ONE-Z(IGAM)) GOTO 20 ZZ(JGAM)=1-Z(JGAM) C-------REJECT AGAINST PHOTON DISTRIBUTION FUNCTION PROB=((1+ZZ(IGAM)**2)/(1-ZZ(IGAM)))/((1+(1-Z(IGAM))**2)/Z(IGAM)) & *((1+ZZ(JGAM)**2)/(1-ZZ(JGAM)))/((1+(1-Z(JGAM))**2)/Z(JGAM)) IF (HWRLOG(1-PROB)) GOTO 20 C-------RECONSTRUCT ALL OTHER VARIABLES DO 40 I=1,2 IGAM=2*I+3 PHEP(1,IGAM)=QX(I) PHEP(2,IGAM)=QY(I) PHEP(4,IGAM)=ZZ(I)*PHEP(4,I) PHEP(5,IGAM)=RMASS(IDHW(IGAM)) C---------IF MOMENTUM CANNOT BE CONSERVED TRY AGAIN IF (PHEP(4,IGAM)**2-PHEP(5,IGAM)**2-QT(I)**2 .LT. 0) GOTO 20 PHEP(3,IGAM)=SIGN(SQRT(PHEP(4,IGAM)**2-PHEP(5,IGAM)**2- & QT(I)**2),PHEP(3,IGAM)) CALL HWVDIF(4,PHEP(1,I),PHEP(1,IGAM),PHEP(1,IGAM-1)) CALL HWUMAS(PHEP(1,IGAM-1)) 40 CONTINUE C-----TIDY UP EVENT RECORD NHEP=NHEP+1 IDHW(NHEP)=IDHW(3) IDHEP(NHEP)=IDHEP(3) ISTHEP(NHEP)=110 CALL HWVSUM(4,PHEP(1,4),PHEP(1,6),PHEP(1,NHEP)) CALL HWVSUM(4,PHEP(1,1),PHEP(1,2),PHEP(1,3)) CALL HWUMAS(PHEP(1,NHEP)) CALL HWUMAS(PHEP(1,3)) JMOHEP(1,NHEP)=4 JMOHEP(2,NHEP)=6 JMOHEP(1,3)=0 JMOHEP(2,3)=0 C-----CHOOSE FINAL STATE QUARK IF (IHPRO.EQ.0) THEN RWGT=HWRGEN(2)*EVWGT ID=1 DO 50 IDL=1,NQ IF (RWGT.GT.WGT(IDL)) ID=IDL+1 50 CONTINUE EMSQ=RMASS(ID)**2 X=4*EMSQ/SHAT BETA=SQRT(1-X) ENDIF C-----CHOOSE T (WHERE T = MANDELSTAM_T - EMSQ) TMIN=-SHAT/2 TMAX=-SHAT/2*(1-BETA*CTMAX) TRAT=TMAX/TMIN NTRY=0 IF (IHPRO.LE.9) THEN C-------FOR FFBAR, CHOOSE T ACCORDING TO -SHAT/T 60 NTRY=NTRY+1 IF (NTRY.GT.NBTRY) THEN CALL HWWARN('HWHEGG',101) GOTO 999 ENDIF T=TRAT**HWRGEN(3)*TMIN U=-T-SHAT C-------REWEIGHT TO CORRECT DISTRIBUTION DSDT=(T*U-2*EMSQ*(T+2*EMSQ))/T**2 & +( 2*EMSQ*(SHAT-4*EMSQ))/(T*U) & +(T*U-2*EMSQ*(U+2*EMSQ))/U**2 PROB=-DSDT*T/SHAT / (1 + 2*X - 2*X**2) IF (HWRLOG(1-PROB)) GOTO 60 ELSE C-------FOR WW, CHOOSE T ACCORDING TO (SHAT/T)**2 70 NTRY=NTRY+1 IF (NTRY.GT.NBTRY) THEN CALL HWWARN('HWHEGG',102) GOTO 999 ENDIF T=TMAX/(1-(1-TRAT)*HWRGEN(4)) U=-T-SHAT C-------REWEIGHT TO CORRECT DISTRIBUTION DSDT=( 3*(T*U)**2 - SHAT*T*U*(4*SHAT+6*EMSQ) & + SHAT**2*(2*SHAT**2+6*EMSQ**2) ) / (T*U)**2 PROB=DSDT*(T/SHAT)**2 / (4.75 - 1.5*X + 1.5*X**2) IF (HWRLOG(1-PROB)) GOTO 70 ENDIF C-----SYMMETRIZE IN T,U IF (HWRLOG(HALF)) T=U C-----FILL EVENT RECORD COSTH=(1+2*T/SHAT)/BETA PC=0.5*BETA*PHEP(5,NHEP) PHEP(5,NHEP+1)=RMASS(ID) PHEP(5,NHEP+2)=RMASS(ID) CALL HWDTWO(PHEP(1,NHEP),PHEP(1,NHEP+1),PHEP(1,NHEP+2), & PC,COSTH,.TRUE.) DO 80 I=1,2 IHEP=NHEP+I JHEP=NHEP+3-I ISTHEP(IHEP)=190 IF (IHPRO.LE.6) ISTHEP(IHEP)=112+I IDHW(IHEP)=ID+NADD*(I-1) IDHEP(IHEP)=IDPDG(IDHW(IHEP)) JDAHEP(I,NHEP)=IHEP JMOHEP(1,IHEP)=NHEP JMOHEP(2,IHEP)=JHEP JDAHEP(2,IHEP)=JHEP IF (IHPRO.EQ.10) THEN RHOHEP(1,IHEP)=0.3333 RHOHEP(2,IHEP)=0.3333 RHOHEP(3,IHEP)=0.3333 ENDIF 80 CONTINUE NHEP=NHEP+2 ENDIF 999 RETURN END CDECK ID>, HWHEGW. *CMZ :- -26/04/91 10.18.56 by Bryan Webber *-- Author : Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWHEGW C---------------------------------------------------------------------- C W + GAMMA --> FF'BAR : MEAN EVWGT = CROSS SECTION IN NANOBARN C BASED ON BOSON GLUON FUSION OF ABBIENDI AND STANCO C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,GMASS,EV(3),RV,Y,Q2,SHAT,Z,PHI,AJACOB, & DSIGMA,ME,MP,ML,MREMIF(18),MFIN1(18),MFIN2(18),RS,SMA,W2,RSHAT INTEGER LEP INTEGER LEPFIN,ID1,ID2,I,IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,IPROO LOGICAL CHARGD,INCLUD(18),INSIDE(18),IFGO EXTERNAL HWRGEN SAVE LEPFIN,ID1,ID2 COMMON /HWAREA/ Y,Q2,SHAT,Z,PHI,AJACOB,DSIGMA,ME,MP,ML,MREMIF, & MFIN1,MFIN2,RS,SMA,W2,RSHAT,IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,LEP, & IPROO,CHARGD,INCLUD,INSIDE IQK=MOD(IPROC,10) CHARGD=.TRUE. IF(GENEV) THEN C IDHW(4)=IDHW(1) IDHW(5)=59 IDHW(6)=15 IDHW(7)=LEPFIN IDHW(8)=ID1 IDHW(9)=ID2 DO 1 I=4,9 1 IDHEP(I)=IDPDG(IDHW(I)) C IFLAVD=ID1 IFLAVU=ID2-6 C ISTHEP(4)=111 ISTHEP(5)=112 ISTHEP(6)=110 ISTHEP(7)=113 ISTHEP(8)=114 ISTHEP(9)=114 C JMOHEP(1,4)=6 JMOHEP(2,4)=7 JMOHEP(1,5)=6 JMOHEP(2,5)=5 JMOHEP(1,6)=4 JMOHEP(2,6)=5 JMOHEP(1,7)=6 JMOHEP(2,7)=4 JMOHEP(1,8)=6 JMOHEP(2,8)=9 JMOHEP(1,9)=6 JMOHEP(2,9)=8 JDAHEP(1,4)=0 JDAHEP(2,4)=7 JDAHEP(1,5)=0 JDAHEP(2,5)=5 JDAHEP(1,6)=7 JDAHEP(2,6)=9 JDAHEP(1,7)=0 JDAHEP(2,7)=4 JDAHEP(1,8)=0 JDAHEP(2,8)=9 JDAHEP(1,9)=0 JDAHEP(2,9)=8 C---COMPUTATION OF MOMENTA IN LABORATORY FRAME OF REFERENCE C---Persuade HWHBKI that the gluon is actually a photon... GMASS=RMASS(13) RMASS(13)=0 CALL HWHBKI RMASS(13)=GMASS C---put the other outgoing lepton in as well IDHW(10)=IDHW(2) IDHEP(10)=IDPDG(IDHW(10)) ISTHEP(10)=1 JMOHEP(1,10)=2 JMOHEP(2,10)=0 JDAHEP(1,10)=0 JDAHEP(2,10)=0 JDAHEP(1,2)=5 JDAHEP(2,2)=10 CALL HWVDIF(4,PHEP(1,2),PHEP(1,5),PHEP(1,10)) CALL HWUMAS(PHEP(1,10)) NHEP=10 C C---if antilepton was first, do charge conjugation IF (LEP.EQ.-1) THEN DO 27 I=7,9 IF (IDHEP(I).NE.0 .AND. ABS(IDHEP(I)).LT.20) THEN IDHW(I)=IDHW(I) + 6*SIGN(1,IDHEP(I)) IDHEP(I)=-IDHEP(I) ENDIF 27 CONTINUE ENDIF C C---half the time, do charge conjugation and parity flip IF (HWRGEN(0).GT.HALF) THEN DO 2 I=4,10 IF (IDHEP(I).NE.0 .AND. ABS(IDHEP(I)).LT.20) THEN IDHW(I)=IDHW(I) + 6*SIGN(1,IDHEP(I)) IDHEP(I)=-IDHEP(I) ENDIF PHEP(1,I)=-PHEP(1,I) PHEP(2,I)=-PHEP(2,I) PHEP(3,I)=-PHEP(3,I) 2 CONTINUE JMOHEP(1,10)=3-JMOHEP(1,10) ENDIF C ELSE C EVWGT=ZERO C---LEP = 1 IF TRACK 1 IS A LEPTON, -1 FOR ANTILEPTON LEP=0 IF (IDHW(1).GE.121.AND.IDHW(1).LE.126) THEN LEP=1 ELSEIF (IDHW(1).GE.127.AND.IDHW(1).LE.132) THEN LEP=-1 ENDIF IF (LEP.EQ.0) CALL HWWARN('HWHEGW',500) C---program only works if beam and target are charge conjugates IF (LEP*(IDHW(2)-IDHW(1)).NE.6) CALL HWWARN('HWHEGW',501) C---program only works for equal energy beams colliding IF (PHEP(3,3).NE.ZERO) CALL HWWARN('HWHEGW',503) C C---FINAL STATE IS ALWAYS SET UP AS IF PARTICLE IS BEFORE ANTI-PARTICLE C AND THEN INVERTED IF NECESSARY LEPFIN = MIN(IDHW(1),IDHW(2))+1 IF (IQK.LE.2) THEN IFLAVU=2 IFLAVD=1 ID1 = 1 ID2 = 8 ELSEIF (IQK.LE.4) THEN IFLAVU=4 IFLAVD=3 ID1 = 3 ID2 =10 ELSEIF (IQK.LE.6) THEN IFLAVU=6 IFLAVD=5 ID1 = 5 ID2 =12 ELSEIF (IQK.EQ.7) THEN IFLAVU=122 IFLAVD=121 ID1 = 121 ID2 = 128 C---INTERFERENCE TERMS IN EE -> EE NUE NUEB NEGLECTED: SIGMA UNRELIABLE IF (FSTWGT) CALL HWWARN('HWHEGW',1) ELSEIF (IQK.EQ.8) THEN IFLAVU=124 IFLAVD=123 ID1 = 123 ID2 = 130 ELSEIF (IQK.EQ.9) THEN IFLAVU=126 IFLAVD=125 ID1 = 125 ID2 = 132 ELSE CALL HWWARN('HWHEGW',504) ENDIF IF (IQK.GT.0) THEN IF (IQK.LE.6) IQK=0 CALL HWHBRN(IFGO) IF(IFGO) GOTO 999 CALL HWHEGX EVWGT = 2 * DSIGMA * AJACOB IF (EVWGT.LT.ZERO) EVWGT=ZERO ELSE C---SUM OVER QUARK FLAVOURS CALL HWHBRN(IFGO) IF(IFGO) GOTO 999 DO 3 I=1,3 IF (SHAT.GT.(RMASS(IFLAVD)+RMASS(IFLAVU))**2) THEN CALL HWHEGX EV(I) = 2 * DSIGMA * AJACOB IF (EV(I).LT.ZERO) EV(I)=ZERO ELSE EV(I)=ZERO ENDIF EVWGT=EVWGT+EV(I) EV(I)=EVWGT IFLAVU=IFLAVU+2 IFLAVD=IFLAVD+2 3 CONTINUE C---CHOOSE QUARK FLAVOUR RV=EV(3)*HWRGEN(1) IF (RV.LT.EV(1)) THEN ID1 = 1 ID2 = 8 ELSEIF (RV.LT.EV(2)) THEN ID1 = 3 ID2 =10 ELSE ID1 = 5 ID2 =12 ENDIF ENDIF ENDIF 999 RETURN END CDECK ID>, HWHEGX. *CMZ :- -17/07/92 16.42.56 by Mike Seymour *-- Author : Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWHEGX C----------------------------------------------------------------------- C COMPUTES DIFFERENTIAL CROSS SECTION DSIGMA IN (Y,Q2,ETA,Z,PHI) C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION TMAX,TMIN,A1,A2,B1,B2,I0,I1,I2,I3,I4,I5,MUSQ, & MDSQ,ETA,Q1,COSTHE,S,G,T,U,C1,C2,D1,D2,F1,F2,COSBET,WPROP,D(4,4), & C(4,4),QU,QD,QE,QW,PHOTON,EMWSQ,EMSSQ,CFAC,Y,Q2,SHAT,Z,PHI, & AJACOB,DSIGMA,ME,MP,ML,MREMIF(18),MFIN1(18),MFIN2(18),RS,SMA,W2, & RSHAT INTEGER IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,IPROO,I,J,LEP LOGICAL CHARGD,INCLUD(18),INSIDE(18) COMMON /HWAREA/ Y,Q2,SHAT,Z,PHI,AJACOB,DSIGMA,ME,MP,ML,MREMIF, & MFIN1,MFIN2,RS,SMA,W2,RSHAT,IQK,IFLAVU,IFLAVD,IMIN,IMAX,IFL,LEP, & IPROO,CHARGD,INCLUD,INSIDE C---INPUT VARIABLES IF (IERROR.NE.0) RETURN DSIGMA=0 IF (IFLAVU.LE.12) THEN QU=QFCH(MOD(IFLAVU-1,6)+1) QD=QFCH(MOD(IFLAVD-1,6)+1) CFAC=CAFAC ELSE QU=QFCH(MOD(IFLAVU-1,6)+11) QD=QFCH(MOD(IFLAVD-1,6)+11) CFAC=1 ENDIF QE=QFCH(11) QW=+1 EMWSQ=RMASS(198)**2 EMSCA=PHEP(5,3) EMSSQ=EMSCA**2 MUSQ=RMASS(IFLAVU)**2 MDSQ=RMASS(IFLAVD)**2 ETA=(SHAT+Q2)/EMSSQ/Y IF (ETA.GT.ONE) RETURN C---CALCULATE KINEMATIC TERMS G=0.5*(ETA*EMSSQ*Y-Q2) -0.5*(MUSQ+MDSQ) S=0.5*ETA*EMSSQ T=0.5*ETA*EMSSQ*(1-Y) U=0.5*Q2 C1=0.5*ETA*EMSSQ*Y*Z C2=0.5*ETA*EMSSQ*Y*(1-Z) COSBET=(-ETA*EMSSQ*Y+Q2*(2-Y))/(Y*(ETA*EMSSQ-Q2)) IF (SHAT.LE.(RMASS(IFLAVU)+RMASS(IFLAVD))**2) RETURN Q1=SQRT((SHAT**2+MUSQ**2+MDSQ**2 & -2*SHAT*MUSQ-2*SHAT*MDSQ-2*MUSQ*MDSQ)/SHAT**2) COSTHE=(1+(MDSQ-MUSQ)/SHAT-2*Z)/Q1 IF (ABS(COSTHE).GE.ONE .OR. ABS(COSBET).GE.ONE) RETURN D1=0.25*(ETA*EMSSQ-Q2)*(1+(MDSQ-MUSQ)/SHAT-Q1* & (COSTHE*COSBET+SQRT((1-COSTHE**2)*(1-COSBET**2))*COS(PHI))) D2=S-U-D1 F1=D1+C1-G -MDSQ F2=U+T-F1 C---CALCULATE TRACE TERMS CALL HWVZRO(16,D) CALL HWVZRO(16,C) D(1,1)=2*F1*C2*S D(2,2)=2*C1*D2*T D(3,3)=-D1*(2*F2*G-D2*(F1+2*U)) & -D2*F1*(F2+U-D2+F1) & +2*F1*F2*U & -G*(-2*D1*(F1+F2+U)-F1*(D2+2*U)+2*D2*(U-F2)+2*U*(F2-U+G)) D(4,4)=2*F1*C2*S D(1,2)=(D1+U-F2)*(D1*F2-F1*D2)-G*(D1*(F2+U)+U*(U-F2-G)+F1*D2) D(1,3)=D1*F2*(-2*F1+U-F2+D1) & +F1*(F2*(D2-2*U)+F1*D2) & +G*(-D1*(2*F1+F2+U)-F1*(D2+2*U)+U*(F2-U+G)) D(1,4)=-2*F1*(D1+U)*(F2+G) D(2,3)=D1*(D2*(F1+2*(U-F2))+F2*(F2-U-D1)) & +F1*D2**2 & +G*(D1*(F2+U)+D2*(F1-2*(U-F2))+U*(U-F2-G)) D(2,4)=-D1*F2*(U-F2+D1) & -F1*D2*(U-D1-G-F2) & -G*(U*(F2-U+G)-D1*(F2+U)) D(3,4)=D1*(F1*(D2+2*F2)+F2*(F2-U-D1)) & +F1*(2*F2*U-D2*(U+F1)) & +G*(D1*(2*F1+F2+U)+U*(2*F1-F2+U-G)) C---REGULATE PROPAGATORS TMAX=EMSSQ-2*G TMIN=PHEP(5,2)**2 A1=2*C1+MDSQ*(G+U)/G A2=2*C2+MUSQ*(G+U)/G B1=(2*U+MUSQ)/(2*G+2*U) B2=(2*U+MDSQ)/(2*G+2*U) I0=LOG(TMAX/TMIN) I1=1/A1*(I0-LOG((A1+B1*TMAX)/(A1+B1*TMIN))) I2=1/A2*(I0-LOG((A2+B2*TMAX)/(A2+B2*TMIN))) I3=(B1*I1-B2*I2)/(B1*A2-B2*A1) I4=1/A1*(I1+1/(A1+B1*TMAX)-1/(A1+B1*TMIN)) I5=1/A2*(I2+1/(A2+B2*TMAX)-1/(A2+B2*TMIN)) WPROP=1/((2*G-EMWSQ)**2+GAMW**2*EMWSQ) C---CALCULATE COEFFICIENTS C(1,1)= QU**2/(2*U+EMWSQ)**2 *I5 C(2,2)= QD**2/(2*U+EMWSQ)**2 *I4 C(3,3)= QW**2/(2*U+EMWSQ)**2 *WPROP *I0 C(4,4)= QE**2/(2*S)**2 *WPROP *I0 C(1,2)= 2*QU*QD/(2*U+EMWSQ)**2 *I3 C(1,3)= 2*QW*QU/(2*U+EMWSQ)**2 *WPROP*(2*G-EMWSQ) *I2 C(1,4)= 2*QU*QE/(2*S*(2*U+EMWSQ)) *WPROP*(2*G-EMWSQ) *I2 C(2,3)= 2*QW*QD/(2*U+EMWSQ)**2 *WPROP*(2*G-EMWSQ) *I1 C(2,4)= 2*QD*QE/(2*S*(2*U+EMWSQ)) *WPROP*(2*G-EMWSQ) *I1 C(3,4)= 2*QW*QE/(2*S*(2*U+EMWSQ)) *WPROP *I0 C---CALCULATE PHOTON STRUCTURE FUNCTION PHOTON=ALPHEM * (1+(1-ETA)**2) / (2*PIFAC*ETA) C---SUM ALL TENSOR CONTRIBUTIONS DO 10 I=1,4 DO 10 J=1,4 10 DSIGMA=DSIGMA + C(I,J)*D(I,J) C---CALCULATE TOTAL SUMMED AND AVERAGED MATRIX ELEMENT SQUARED DSIGMA = DSIGMA * 2*CFAC*(4*PIFAC*ALPHEM)**3/SWEIN**2 C---CALCULATE DIFFERENTIAL CROSS-SECTION DSIGMA = DSIGMA * GEV2NB*PHOTON/(512*PIFAC**4*ETA*EMSSQ) END CDECK ID>, HWHEPA. *CMZ :- -12/10/01 10.05.16 by Peter Richardson *-- Author : Bryan Webber and Ian Knowles C----------------------------------------------------------------------- SUBROUTINE HWHEPA C----------------------------------------------------------------------- C (Initially polarised) e+e- --> ffbar (f=quark, mu or tau) C If IPROC=107: --> gg, distributed as sum of light quarks. C If fermion flavour specified mass effects fully included. C EVWGT=sig(e+e- --> ffbar) in nb C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,HWRUNI,HWUPCM,HWUAEM,Q2NOW,Q2LST,FACTR, & VF2,VF,CLF(7),PRAN,PQWT,PMAX,PTHETA,SINTH2,CPHI,SPHI,C2PHI,S2PHI, & PPHI,SINTH,PCM,PP(5),EWGT INTEGER ID1,ID2,IDF,IQ,IQ1,I EXTERNAL HWRGEN,HWRUNI,HWUPCM,HWUAEM SAVE Q2LST,FACTR,ID1,ID2,VF2,VF,CLF,EWGT DATA Q2LST/0.D0/ IF (GENEV) THEN IF (ID2.EQ.0) THEN C Choose quark flavour PRAN=TQWT*HWRGEN(0) PQWT=0. DO 10 IQ=1,MAXFL PQWT=PQWT+CLQ(1,IQ) IF (PQWT.GT.PRAN) GOTO 11 10 CONTINUE IQ=MAXFL 11 IQ1=MAPQ(IQ) DO 20 I=1,7 20 CLF(I)=CLQ(I,IQ) ELSE IQ1=ID1 ENDIF C Label particles, assign outgoing particle masses IDHW(NHEP+1)=200 IDHEP(NHEP+1)=23 ISTHEP(NHEP+1)=110 IF (ID1.EQ.7) THEN IDHW(NHEP+2)=13 IDHW(NHEP+3)=13 IDHEP(NHEP+2)=21 IDHEP(NHEP+3)=21 PHEP(5,NHEP+2)=RMASS(13) PHEP(5,NHEP+3)=RMASS(13) ELSE IDHW(NHEP+2)=IQ1 IDHW(NHEP+3)=IQ1+6 IDHEP(NHEP+2)=IDPDG(IQ1) IDHEP(NHEP+3)=-IDHEP(NHEP+2) PHEP(5,NHEP+2)=RMASS(IQ1) PHEP(5,NHEP+3)=RMASS(IQ1) ENDIF ISTHEP(NHEP+2)=113 ISTHEP(NHEP+3)=114 JMOHEP(1,NHEP+1)=1 IF (JDAHEP(1,1).NE.0) JMOHEP(1,NHEP+1)=JDAHEP(1,1) JMOHEP(2,NHEP+1)=2 IF (JDAHEP(1,2).NE.0) JMOHEP(2,NHEP+1)=JDAHEP(1,2) JMOHEP(1,NHEP+2)=NHEP+1 JMOHEP(2,NHEP+2)=NHEP+3 JMOHEP(1,NHEP+3)=NHEP+1 JMOHEP(2,NHEP+3)=NHEP+2 JDAHEP(1,NHEP+1)=NHEP+2 JDAHEP(2,NHEP+1)=NHEP+3 JDAHEP(1,NHEP+2)=0 JDAHEP(2,NHEP+2)=NHEP+3 JDAHEP(1,NHEP+3)=0 JDAHEP(2,NHEP+3)=NHEP+2 C Generate polar and azimuthal angular distributions: C CLF(1)*(1+(VF*COSTH)**2)+CLF(2)*(1-VF**2)+CLF(3)*2.*VF*COSTH C +(VF*SINTH)**2*(CLF(4)*COS(2*PHI-PHI1-PHI2) C +CLF(6)*SIN(2*PHI-PHI1-PHI2)) PMAX=CLF(1)*(1.+VF2)+CLF(2)*(1.-VF2)+ABS(CLF(3))*2.*VF 30 COSTH=HWRUNI(0,-ONE, ONE) PTHETA=CLF(1)*(1.+VF2*COSTH**2)+CLF(2)*(1.-VF2) & +CLF(3)*2.*VF*COSTH IF (PTHETA.LT.PMAX*HWRGEN(1)) GOTO 30 IF (IDHW(1).GT.IDHW(2)) COSTH=-COSTH SINTH2=1.-COSTH**2 IF (TPOL) THEN PMAX=PTHETA+VF2*SINTH2*SQRT(CLF(4)**2+CLF(6)**2) 40 CALL HWRAZM(ONE,CPHI,SPHI) C2PHI=2.*CPHI**2-1. S2PHI=2.*CPHI*SPHI PPHI=PTHETA+(CLF(4)*(C2PHI*COSS+S2PHI*SINS) & +CLF(6)*(S2PHI*COSS-C2PHI*SINS))*VF2*SINTH2 IF (PPHI.LT.PMAX*HWRGEN(1)) GOTO 40 ELSE CALL HWRAZM(ONE,CPHI,SPHI) ENDIF C Construct final state 4-mommenta CALL HWVEQU(5,PHEP(1,3),PHEP(1,NHEP+1)) PCM=HWUPCM(PHEP(5,NHEP+1),PHEP(5,NHEP+2),PHEP(5,NHEP+3)) C PP is momentum of track NHEP+2 in CoM (track NHEP+1) frame SINTH=SQRT(SINTH2) PP(5)=PHEP(5,NHEP+2) PP(1)=PCM*SINTH*CPHI PP(2)=PCM*SINTH*SPHI PP(3)=PCM*COSTH PP(4)=SQRT(PCM**2+PP(5)**2) CALL HWULOB(PHEP(1,NHEP+1),PP(1),PHEP(1,NHEP+2)) CALL HWVDIF(4,PHEP(1,NHEP+1),PHEP(1,NHEP+2),PHEP(1,NHEP+3)) C Set production vertices CALL HWVZRO(4,VHEP(1,NHEP+2)) CALL HWVEQU(4,VHEP(1,NHEP+2),VHEP(1,NHEP+3)) NHEP=NHEP+3 ELSE EMSCA=PHEP(5,3) Q2NOW=EMSCA**2 IF (Q2NOW.NE.Q2LST) THEN C Calculate coefficients for cross-section EMSCA=PHEP(5,3) Q2LST=Q2NOW FACTR=PIFAC*GEV2NB*HWUAEM(Q2NOW)**2/Q2NOW ID1=MOD(IPROC,10) ID2=MOD(ID1,7) IF (ID2.EQ.0) THEN CALL HWUEEC(1) VF2=1. VF=1. EWGT=FACTR*FLOAT(NCOLO)*TQWT*4./3. ELSE IF (IPROC.LT.150) THEN IDF=ID1 FACTR=FACTR*FLOAT(NCOLO) ELSE ID1=2*ID1+119 IDF=ID1-110 ENDIF IF (EMSCA.LE.2.*RMASS(ID1)) THEN EWGT=0. ELSE CALL HWUCFF(11,IDF,Q2NOW,CLF(1)) VF2=1.-4.*RMASS(ID1)**2/Q2NOW VF=SQRT(VF2) EWGT=FACTR*VF*(CLF(1)*(1.+VF2/3.)+CLF(2)*(1.-VF2)) ENDIF ENDIF ENDIF EVWGT=EWGT ENDIF END CDECK ID>, HWHEPG. *CMZ :- -02/05/91 10.57.27 by Federico Carminati *-- Author : Bryan Webber and Ian Knowles C----------------------------------------------------------------------- SUBROUTINE HWHEPG C----------------------------------------------------------------------- C (Initially polarised) e-e+ --> qqbar g with parton thrust < THMAX, C equivalent to: maximum parton energy < THMAX*EMSCA/2; or a JADE E0 c scheme, y_cut=1.-THMAX. C If flavour specified mass effects fully included. C EVWGT=sig(e^-e^+ --> qqbar g) in nb C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,HWUALF,HWUAEM,HWULDO,HWDPWT,Q2NOW,Q2LST, & PHASP,QGMAX,QGMIN,FACTR,QM2,CLF(7),ORDER,PRAN,PQWT,QQG,QBG,SUM, & RUT,QQLM,QQLP,QBLM,QBLP,DYN1,DYN2,DYN3,DYN4,DYN5,DYN6,XQ2,X2SUM, & PVRT(4) INTEGER ID1,IQ,I,LM,LP,IQ1 LOGICAL MASS EXTERNAL HWRGEN,HWUALF,HWUAEM,HWULDO,HWDPWT SAVE Q2NOW,Q2LST,QGMAX,QGMIN,FACTR,ORDER,ID1,MASS,QM2,CLF,LM,LP, & IQ1,QQG,QBG,SUM DATA Q2LST/0.D0/ IF (GENEV) THEN C Label produced partons and calculate gluon spin IDHW(NHEP+1)=200 IDHW(NHEP+2)=IQ1 IDHW(NHEP+3)=13 IDHW(NHEP+4)=IQ1+6 IDHEP(NHEP+1)=23 IDHEP(NHEP+2)=IQ1 IDHEP(NHEP+3)=21 IDHEP(NHEP+4)=-IQ1 ISTHEP(NHEP+1)=110 ISTHEP(NHEP+2)=113 ISTHEP(NHEP+3)=114 ISTHEP(NHEP+4)=114 JMOHEP(1,NHEP+1)=LM JMOHEP(2,NHEP+1)=LP JMOHEP(1,NHEP+2)=NHEP+1 JMOHEP(2,NHEP+2)=NHEP+3 JMOHEP(1,NHEP+3)=NHEP+1 JMOHEP(2,NHEP+3)=NHEP+4 JMOHEP(1,NHEP+4)=NHEP+1 JMOHEP(2,NHEP+4)=NHEP+2 JDAHEP(1,NHEP+1)=NHEP+2 JDAHEP(2,NHEP+1)=NHEP+4 JDAHEP(1,NHEP+2)=0 JDAHEP(2,NHEP+2)=NHEP+4 JDAHEP(1,NHEP+3)=0 JDAHEP(2,NHEP+3)=NHEP+2 JDAHEP(1,NHEP+4)=0 JDAHEP(2,NHEP+4)=NHEP+3 C Decide which quark radiated and assign production vertices XQ2=(Q2NOW-2.*QBG)**2 X2SUM=XQ2+(Q2NOW-2.*QQG)**2 IF (XQ2.LT.HWRGEN(0)*X2SUM) THEN C Quark radiated the gluon CALL HWVZRO(4,VHEP(1,NHEP+4)) CALL HWVSUM(4,PHEP(1,NHEP+2),PHEP(1,NHEP+3),PVRT) CALL HWUDKL(IQ1,PVRT,VHEP(1,NHEP+3)) CALL HWVEQU(4,VHEP(1,NHEP+3),VHEP(1,NHEP+2)) ELSE C Anti-quark radiated the gluon CALL HWVZRO(4,VHEP(1,NHEP+2)) CALL HWVSUM(4,PHEP(1,NHEP+4),PHEP(1,NHEP+3),PVRT) CALL HWUDKL(IQ1,PVRT,VHEP(1,NHEP+3)) CALL HWVEQU(4,VHEP(1,NHEP+3),VHEP(1,NHEP+4)) ENDIF IF (AZSPIN) THEN C Calculate the transverse polarisation of the gluon C Correlation with leptons presently neglected GPOLN=(QQG**2+QBG**2)/((Q2NOW-2.*SUM)*Q2NOW) GPOLN=2./(2.+GPOLN) ENDIF NHEP=NHEP+4 ELSE EMSCA=PHEP(5,3) Q2NOW=EMSCA**2 IF (Q2NOW.NE.Q2LST) THEN Q2LST=Q2NOW PHASP=3.*THMAX-2. IF (PHASP.LE.ZERO) CALL HWWARN('HWHEPG',400) QGMAX=.5*Q2NOW*THMAX QGMIN=.5*Q2NOW*(1.-THMAX) FACTR=GEV2NB*FLOAT(NCOLO)*CFFAC*HWUALF(1,EMSCA) & *.5*(HWUAEM(Q2NOW)*PHASP)**2/Q2NOW LM=1 IF (JDAHEP(1,LM).NE.0) LM=JDAHEP(1,LM) LP=2 IF (JDAHEP(1,LP).NE.0) LP=JDAHEP(1,LP) ORDER=1. IF (IDHW(1).GT.IDHW(2)) ORDER=-ORDER ID1=MOD(IPROC,10) IF (ID1.NE.0) THEN MASS=.TRUE. QM2=RMASS(ID1)**2 CALL HWUCFF(11,ID1,Q2NOW,CLF(1)) FACTR=FACTR*CLF(1) ELSE MASS=.FALSE. CALL HWUEEC(1) FACTR=FACTR*TQWT ENDIF ENDIF IF (ID1.EQ.0) THEN C Select quark flavour PRAN=TQWT*HWRGEN(1) PQWT=0. DO 10 IQ=1,MAXFL PQWT=PQWT+CLQ(1,IQ) IF (PQWT.GT.PRAN) GOTO 11 10 CONTINUE IQ=MAXFL 11 IQ1=MAPQ(IQ) DO 20 I=1,7 20 CLF(I)=CLQ(I,IQ) ELSEIF (Q2NOW.GT.4*QM2/(2*THMAX-1)) THEN IQ1=ID1 ELSE EVWGT=0. RETURN ENDIF C Select final state momentum configuration CALL HWVEQU(5,PHEP(1,3),PHEP(1,NHEP+1)) PHEP(5,NHEP+2)=RMASS(IQ1) PHEP(5,NHEP+3)=RMASS(13) PHEP(5,NHEP+4)=RMASS(IQ1) 30 CALL HWDTHR(PHEP(1,NHEP+1),PHEP(1,NHEP+2), & PHEP(1,NHEP+3),PHEP(1,NHEP+4),HWDPWT) QQG=HWULDO(PHEP(1,NHEP+2),PHEP(1,NHEP+3)) IF (QQG.LT.QGMIN) GOTO 30 QBG=HWULDO(PHEP(1,NHEP+4),PHEP(1,NHEP+3)) SUM=QQG+QBG IF (QBG.LT.QGMIN.OR.SUM.GT.QGMAX) GOTO 30 QQLM=HWULDO(PHEP(1,NHEP+2),PHEP(1,LM)) QQLP=HWULDO(PHEP(1,NHEP+2),PHEP(1,LP)) QBLM=HWULDO(PHEP(1,NHEP+4),PHEP(1,LM)) QBLP=HWULDO(PHEP(1,NHEP+4),PHEP(1,LP)) DYN1=QQLM**2+QQLP**2+QBLM**2+QBLP**2 DYN2=0. DYN3=DYN1-2.*(QQLM**2+QBLP**2) IF (MASS) THEN RUT=1./QQG+1./QBG DYN1=DYN1+8.*QM2*(1.-.25*Q2NOW*RUT & +QQLM*QQLP/(Q2NOW*QBG)+QBLM*QBLP/(Q2NOW*QQG)) DYN2=QM2*(Q2NOW-SUM*(2.+QM2*RUT) & -4.*HWULDO(PHEP(1,NHEP+3),PHEP(1,LM)) & *HWULDO(PHEP(1,NHEP+3),PHEP(1,LP))/Q2NOW) DYN3=DYN3+QM2*2.*RUT*(QBG*(QBLP-QBLM)-QQG*(QQLP-QQLM)) ENDIF EVWGT=CLF(1)*DYN1+CLF(2)*DYN2+ORDER*CLF(3)*DYN3 IF (TPOL) THEN C Include event plane azimuthal angle DYN4=.5*Q2NOW DYN5=DYN4 DYN6=0. IF (MASS) THEN DYN4=DYN4-QM2*SUM/QBG DYN5=DYN5-QM2*SUM/QQG DYN6=QM2 ENDIF EVWGT=EVWGT & +(CLF(4)*COSS-CLF(6)*SINS) & *(DYN4*(PHEP(1,NHEP+2)**2-PHEP(2,NHEP+2)**2) & +DYN5*(PHEP(1,NHEP+4)**2-PHEP(2,NHEP+4)**2)) & +(CLF(4)*SINS+CLF(6)*COSS)*2. & *(DYN4*PHEP(1,NHEP+2)*PHEP(2,NHEP+2) & +DYN5*PHEP(1,NHEP+4)*PHEP(2,NHEP+4)) & +(CLF(5)*COSS-CLF(7)*SINS)*DYN6 & *(PHEP(1,NHEP+3)**2-PHEP(2,NHEP+3)**2) & +(CLF(5)*SINS+CLF(7)*COSS)*DYN6*2. & *PHEP(1,NHEP+3)*PHEP(2,NHEP+3) ENDIF C Assign event weight EVWGT=EVWGT*FACTR/(QQG*QBG*CLF(1)) ENDIF END CDECK ID>, HWHESL. *CMZ :- -17/10/00 17:43:25 by Peter Richardson *-- Author : Kosuke Odagiri & Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWHESL C----------------------------------------------------------------------- C SUSY E+E- -> 2 SLEPTON PROCESSES C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,HWUAEM,EPS,HCS,RCS,S,PF,QPE,HWUPCM,PCM, & FACTR,SN2TH,MZ,ME2(2,2,6),EMSC2,HWUMBW,HWRUNI,T,SQPE INTEGER ID1,ID2,IL,IL1,IL2,I,J,IG,IG1,IHEP,NTRY,IDL,ILP,IDLR(2), & IDSLP(2) INTEGER SSNU, SSCH PARAMETER (SSNU = 449, SSCH = 453) EXTERNAL HWRGEN, HWUAEM,HWUMBW,HWUPCM,HWRUNI SAVE HCS,ME2,IDLR,IDSLP PARAMETER (EPS = 1.D-9) DOUBLE COMPLEX Z, GZ, A, BL, BR, CL, CR, D, E DOUBLE PRECISION F,FACT0 PARAMETER (Z = (0.D0,1.D0)) EQUIVALENCE (MZ, RMASS(200)) C S = PHEP(5,3)**2 EMSC2 = S EMSCA = SQRT(EMSC2) IF(FSTWGT) THEN IL = MOD((IPROC-740),5) IF(IPROC.EQ.700.OR.IPROC.EQ.740) THEN IDLR(1) = 0 IDLR(2) = 0 IDSLP(1) = 1 IDSLP(2) = 6 ELSE IF(IL.EQ.0) THEN IDLR(1) = 1 IDLR(2) = 1 IDSLP(1) = 2*(IPROC-740)/5 ELSEIF(IL.EQ.1) THEN IDLR(1) = 0 IDLR(2) = 0 IDSLP(1) = 2*(IPROC-741)/5+1 ELSEIF(IL.EQ.2) THEN IDLR(1) = 1 IDLR(2) = 1 IDSLP(1) = 2*(IPROC-742)/5+1 ELSEIF(IL.EQ.3) THEN IDLR(1) = 1 IDLR(2) = 2 IDSLP(1) = 2*(IPROC-743)/5+1 ELSEIF(IL.EQ.4) THEN IDLR(1) = 2 IDLR(2) = 2 IDSLP(1) = 2*(IPROC-744)/5+1 ENDIF IDSLP(2) = IDSLP(1) ENDIF ENDIF IF (GENEV) THEN RCS = HCS*HWRGEN(0) ELSE IDL = ABS(IDHEP(1)) ILP = IDL-10 COSTH = HWRUNI(1,-ONE,ONE) SN2TH = 0.25D0 - 0.25D0*COSTH**2 FACT0 = GEV2NB*PIFAC*HWUAEM(EMSC2)**2/S FACTR = FACT0*SN2TH GZ = (S-MZ**2+Z*S*GAMZ/MZ)/S c ~ ~* c e+ e- -> l l c DO IL=1,6 DO I=1,2 DO J=1,2 ME2(I,J,IL) = ZERO ENDDO ENDDO ENDDO DO IL = IDSLP(1),IDSLP(2) DO I = 1,2 DO J = 1,2 IF ((I.EQ.2.OR.J.EQ.2).AND.(((IL/2)*2).EQ.IL).OR. & (IDLR(1).NE.0.AND.(IDLR(1).NE.I.OR.IDLR(2).NE.J) & .AND.(IDLR(1).NE.J.OR.IDLR(2).NE.I))) THEN QPE = -1. ELSE ID1 = 412 + I*12 + IL ID2 = 412 + J*12 + IL IL1 = IL + 10 QPE = S-(RMASS(ID1)+RMASS(ID2))**2 ENDIF IF (QPE.GT.ZERO) THEN SQPE = SQRT(QPE*(S-(RMASS(ID1)-RMASS(ID2))**2)) PF = SQPE/S IF ((IL.NE.ILP).OR.(I.EQ.J)) THEN A = QFCH(IL1)*QFCH(IDL) BL = LFCH(IL1)/GZ BR = RFCH(IL1)/GZ CL = LMIXSS(IL,1,I)*LMIXSS(IL,1,J) CR = LMIXSS(IL,2,I)*LMIXSS(IL,2,J) D = (A+BL*LFCH(IDL))*CL+(A+BR*LFCH(IDL))*CR E = (A+BL*RFCH(IDL))*CL+(A+BR*RFCH(IDL))*CR IF (IL.EQ.ILP+1.OR.IL.EQ.ILP) THEN F = ZERO T = HALF*(SQPE*COSTH-S+RMASS(ID1)**2+RMASS(ID2)**2) IF (IL.EQ.ILP) THEN IF (I.EQ.J) THEN IF (I.EQ.1) THEN DO IG = 1,4 IG1 = SSNU+IG F = F + SLFCH(IL1,IG)**2/(T-RMASS(IG1)**2) ENDDO D = D + F*S ELSE DO IG=1,4 IG1 = SSNU+IG F = F +SRFCH(IL1,IG)**2/(T-RMASS(IG1)**2) ENDDO E = E + F*S ENDIF ELSE ENDIF ELSE DO IG = 1,2 IG1 = SSCH+IG F = F + WMXVSS(IG,1)**2/(T-RMASS(IG1)**2) ENDDO D = D + F*S/(TWO*SWEIN) ENDIF ENDIF ME2(I,J,IL)=FACTR*PF**3*DREAL( & (ONE-EPOLN(3))*(ONE+PPOLN(3))*DCONJG(D)*D & +(ONE+EPOLN(3))*(ONE-PPOLN(3))*DCONJG(E)*E) ELSE F = ZERO T = HALF*(SQPE*COSTH-S+RMASS(ID1)**2+RMASS(ID2)**2) DO IG = 1,4 IG1 = SSNU+IG F = F + SLFCH(IL1,IG)*SRFCH(IL1,IG)* & ZSGNSS(IG)*RMASS(IG1)/(T-RMASS(IG1)**2) ENDDO C--production of el- er+ IF(I.EQ.1.AND.J.EQ.2) THEN ME2(I,J,IL)=FACT0*PF*F**2*S* & (ONE-EPOLN(3))*(ONE-PPOLN(3)) ELSE C--production of er- el+ ME2(I,J,IL)=FACT0*PF*F**2*S* & (ONE+EPOLN(3))*(ONE+PPOLN(3)) ENDIF ENDIF ELSE ME2(I,J,IL)=ZERO ENDIF ENDDO ENDDO ENDDO ENDIF HCS = ZERO C DO IL = 1,6 DO I = 1,2 DO J = 1,2 IL1 = IL+I*12+412 IL2 = IL+J*12+418 HCS = HCS + ME2(I,J,IL) IF (GENEV.AND.HCS.GT.RCS) GOTO 100 ENDDO ENDDO ENDDO C---GENERATE EVENT 100 IF(GENEV) THEN C--change sign of COSTH if antiparticle first IF(IDHEP(1).LT.IDHEP(2)) COSTH = -COSTH IDHW(NHEP+1) = 15 IDHEP(NHEP+1) = 0 ISTHEP(NHEP+1) = 110 IDHW(NHEP+2) = IL1 IDHW(NHEP+3) = IL2 IDHEP(NHEP+2) = IDPDG(IL1) IDHEP(NHEP+3) = IDPDG(IL2) C--select the particle masses and momenta NTRY = 0 110 NTRY = NTRY+1 PHEP(5,NHEP+2) = HWUMBW(IL1) PHEP(5,NHEP+3) = HWUMBW(IL2) CALL HWVEQU(5,PHEP(1,3),PHEP(1,NHEP+1)) PCM = HWUPCM(PHEP(5,NHEP+1),PHEP(5,NHEP+2),PHEP(5,NHEP+3)) IF(PCM.LT.ZERO.AND.NTRY.LE.NETRY) THEN GOTO 110 ELSEIF(PCM.LT.ZERO) THEN CALL HWWARN('HWHESL',100) GOTO 999 ENDIF C--Set up the colours etc ISTHEP(NHEP+2) = 113 ISTHEP(NHEP+3) = 114 JMOHEP(1,NHEP+1) = 1 IF (JDAHEP(1,1).NE.0) JMOHEP(1,NHEP+1)=JDAHEP(1,1) JMOHEP(2,NHEP+1) = 2 IF (JDAHEP(1,2).NE.0) JMOHEP(2,NHEP+1)=JDAHEP(1,2) JMOHEP(1,NHEP+2) = NHEP+1 JMOHEP(2,NHEP+2) = NHEP+2 JMOHEP(1,NHEP+3) = NHEP+1 JMOHEP(2,NHEP+3) = NHEP+3 JDAHEP(1,NHEP+1) = NHEP+2 JDAHEP(2,NHEP+1) = NHEP+3 JDAHEP(1,NHEP+2) = 0 JDAHEP(2,NHEP+2) = NHEP+2 JDAHEP(1,NHEP+3) = 0 JDAHEP(2,NHEP+3) = NHEP+3 C--Set up the momenta IHEP = NHEP+2 IHEP = NHEP+2 PHEP(4,IHEP) = SQRT(PCM**2+PHEP(5,IHEP)**2) PHEP(3,IHEP) = PCM*COSTH PHEP(1,IHEP) = SQRT((PCM+PHEP(3,IHEP))*(PCM-PHEP(3,IHEP))) PHEP(2,IHEP) = ZERO CALL HWRAZM(PHEP(1,IHEP),PHEP(1,IHEP),PHEP(2,IHEP)) CALL HWULOB(PHEP(1,NHEP+1),PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWVDIF(4,PHEP(1,NHEP+1),PHEP(1,IHEP),PHEP(1,IHEP+1)) NHEP = NHEP+3 ELSE EVWGT = HCS ENDIF 999 RETURN END CDECK ID>, HWHESG. *CMZ :- -18/10/00 13:46:47 by Peter Richardson *-- Author : Kosuke Odagiri & Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWHESG C----------------------------------------------------------------------- C SUSY E+E- -> 2 GAUGINO PROCESSES C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,HWUAEM,HCS,RCS,MNU(4),MNU2(4),HWRUNI, & FACA,M1(4,4),S2W,XC(4),XD(4),MSNU, & MZ,HWHSS2,U,T,QPE,SQPE,MSL,MSL2,MSR,MSR2, & SGN,S,SM,DM,PF,PCM,HWUPCM,XW,S22W, & MSNU2,MCH(2),MCH2(2),DAB,M2(2,2),HWUMBW INTEGER I,IQ1,IQ2,SSNU,NTID(2),CHID(2),IG1,IG2,IHEP,SSCH,ISL,ISR, & ISN,IDL,NTRY LOGICAL NEUT,CHAR SAVE HCS,M1,M2,NTID,ISL,ISR,ISN,IDL,CHID,NEUT,CHAR EXTERNAL HWRGEN,HWUAEM,HWRUNI,HWHSS2,HWUPCM,HWUMBW DOUBLE COMPLEX Z, Z0, Z1, C1, C2, C3,GZ, CLL, CLR, CRL, CRR PARAMETER (Z = (0.D0,1.D0), Z0 = (0.D0,0.D0), Z1 = (1.D0,0.D0)) PARAMETER (SSNU=449,SSCH = 453) EQUIVALENCE (MZ, RMASS(200)) EQUIVALENCE (XC(1), ZMIXSS(1,3)), (XC(2), ZMIXSS(2,3)) EQUIVALENCE (XC(3), ZMIXSS(3,3)), (XC(4), ZMIXSS(4,3)) EQUIVALENCE (XD(1), ZMIXSS(1,4)), (XD(2), ZMIXSS(2,4)) EQUIVALENCE (XD(3), ZMIXSS(3,4)), (XD(4), ZMIXSS(4,4)) C--Start of the code IF(GENEV) THEN RCS = HCS*HWRGEN(0) ELSE C--Decide which processes to generate IF(FSTWGT) THEN NEUT = .TRUE. CHAR = .TRUE. C--neutralino pair production IF(IPROC.GE.710.AND.IPROC.LE.726) THEN CHAR = .FALSE. IF(IPROC.EQ.710) THEN NTID(1) = 0 NTID(2) = 0 ELSE NTID(1) = INT((IPROC-707)/4) NTID(2) = MOD((IPROC-711),4)+1 ENDIF C--chargino pair production ELSEIF(IPROC.GE.730.AND.IPROC.LE.734) THEN NEUT = .FALSE. IF(IPROC.EQ.730) THEN CHID(1) = 0 CHID(2) = 0 ELSE CHID(1) = INT((IPROC-729)/2) CHID(2) = MOD((IPROC-731),2)+1 ENDIF ELSEIF(IPROC.NE.700) THEN CALL HWWARN('HWHESG',500) ENDIF C--check the particles in the beam IF(ABS(IDHEP(1)).EQ.11) THEN C--electron beams ISL = 425 ISR = 437 ISN = 426 ELSEIF(ABS(IDHEP(1)).EQ.13) THEN C--muon beams ISL = 427 ISR = 439 ISN = 428 ELSE CALL HWWARN('HWHESG',501) ENDIF IDL=ABS(IDHEP(1)) ENDIF DO I=1,4 MNU(I) = RMASS(SSNU+I) MNU2(I) = MNU(I)**2 ENDDO DO IG1 = 1,2 MCH(IG1) = RMASS(IG1+SSCH) MCH2(IG1) = MCH(IG1)**2 ENDDO COSTH = HWRUNI(1,-ONE,ONE) XW = TWO * SWEIN S22W = XW * (TWO - XW) S2W = SQRT(S22W) S = PHEP(5,3)**2 EMSCA = PHEP(5,3) FACA = HWUAEM(S)**2 GZ = S-MZ**2+Z*S/MZ*GAMZ MSL = RMASS(ISL) MSR = RMASS(ISR) MSL2 = MSL**2 MSR2 = MSR**2 MSNU = RMASS(ISN) MSNU2 = MSNU**2 C--neutralino pair production IF(.NOT.NEUT) THEN DO IQ1=1,4 DO IQ2=1,4 M1(IQ1,IQ2) = ZERO ENDDO ENDDO GOTO 100 ENDIF DO IQ1=1,4 DO IQ2=1,4 SM = MNU(IQ1) + MNU(IQ2) QPE = S - SM**2 IF(QPE.GE.ZERO.AND. & (NTID(1).EQ.0.OR.(IQ1.EQ.NTID(1).AND.IQ2.EQ.NTID(2)) & .OR.(IQ1.EQ.NTID(2).AND.IQ2.EQ.NTID(1)))) THEN DM = MNU(IQ1) - MNU(IQ2) SQPE = SQRT(QPE*(S-DM**2)) PF = SQPE/S T = HALF*(SQPE*COSTH - S + MNU2(IQ1) + MNU2(IQ2)) U = - T - S + MNU2(IQ1) + MNU2(IQ2) C1 = (XD(IQ1)*XD(IQ2)-XC(IQ1)*XC(IQ2))/S2W/GZ C2 = - C1 SGN = ZSGNSS(IQ1)*ZSGNSS(IQ2) CLL = LFCH(IDL)*C1+SLFCH(IDL,IQ1)*SLFCH(IDL,IQ2)/(U-MSL2) CLR = LFCH(IDL)*C2-SLFCH(IDL,IQ1)*SLFCH(IDL,IQ2)/(T-MSL2) CRL = RFCH(IDL)*C1-SRFCH(IDL,IQ1)*SRFCH(IDL,IQ2)/(T-MSR2) CRR = RFCH(IDL)*C2+SRFCH(IDL,IQ1)*SRFCH(IDL,IQ2)/(U-MSR2) C--modified to include beam polarization PR 10/10/01 M1(IQ1,IQ2) = FACA*PF*GEV2NB*PIFAC/S*HALF* & HWHSS2(S,T,U,MNU(IQ1),MNU(IQ2),SGN,CLL,CLR,CRL,CRR) ELSE M1(IQ1,IQ2) = ZERO ENDIF ENDDO ENDDO C--chargino pair production 100 IF(.NOT.CHAR) THEN DO IG1=1,2 DO IG2=1,2 M2(IG1,IG2) = ZERO ENDDO ENDDO GOTO 200 ENDIF DO IG1 = 1,2 DO IG2 = 1,2 SM = MCH(IG1) + MCH(IG2) QPE = S - SM**2 IF (QPE.GE.ZERO.AND. & (CHID(1).EQ.0.OR.(CHID(1).EQ.IG1.AND.CHID(2).EQ.IG2) & .OR.(CHID(1).EQ.IG2.AND.CHID(2).EQ.IG1))) THEN DM = MCH(IG1) - MCH(IG2) SQPE = SQRT(QPE*(S-DM**2)) PF = SQPE/S T = HALF*(SQPE*COSTH - S + MCH2(IG1) + MCH2(IG2)) U = - T - S + MCH2(IG1) + MCH2(IG2) DAB = ABS(FLOAT(IG1+IG2-3)) C1 = (-WMXVSS(IG1,2)*WMXVSS(IG2,2)+DAB*S22W/XW)/S2W/GZ C2 = (-WMXUSS(IG1,2)*WMXUSS(IG2,2)+DAB*S22W/XW)/S2W/GZ SGN = WSGNSS(IG1)*WSGNSS(IG2) C3 = -DAB*QFCH(IDL)/S CLL = C3- LFCH(IDL)*C1 & +WMXVSS(IG1,1)*WMXVSS(IG2,1)/((U-MSNU2)*XW) CLR = C3- LFCH(IDL)*C2 CRL = C3- RFCH(IDL)*C1 CRR = C3- RFCH(IDL)*C2 C--modified to include beam polarization PR 10/10/01 M2(IG1,IG2)=FACA*PF*GEV2NB*PIFAC/S* & HWHSS2(S,T,U,MCH(IG1),MCH(IG2),SGN,CLL,CLR,CRL,CRR) ELSE M2(IG1,IG2) = ZERO ENDIF ENDDO ENDDO ENDIF C--Add up the weights now 200 HCS = ZERO IF(.NOT.NEUT) GOTO 250 DO IQ1=1,4 IG1 = SSNU+IQ1 DO IQ2=1,4 IG2 = SSNU+IQ2 HCS = HCS+M1(IQ1,IQ2) IF(GENEV.AND.HCS.GT.RCS) GOTO 900 ENDDO ENDDO 250 IF(.NOT.CHAR) GOTO 900 DO IQ1 = 1,2 IG1 = SSCH+IQ1 DO IQ2 = 1,2 IG2 = SSCH+IQ2+2 HCS = HCS + M2(IQ1,IQ2) IF (GENEV.AND.HCS.GT.RCS) GOTO 900 ENDDO ENDDO 900 IF(GENEV) THEN C--change sign of COSTH if antiparticle first IF(IDHEP(1).LT.IDHEP(2)) COSTH = -COSTH C-Set up the particle types IDHW(NHEP+1) = 15 IDHEP(NHEP+1) = 0 ISTHEP(NHEP+1) = 110 IDHW(NHEP+2) = IG1 IDHW(NHEP+3) = IG2 IDHEP(NHEP+2) = IDPDG(IG1) IDHEP(NHEP+3) = IDPDG(IG2) C--select the particle masses and momenta NTRY = 0 910 NTRY = NTRY+1 PHEP(5,NHEP+2) = HWUMBW(IG1) PHEP(5,NHEP+3) = HWUMBW(IG2) CALL HWVEQU(5,PHEP(1,3),PHEP(1,NHEP+1)) PCM = HWUPCM(PHEP(5,NHEP+1),PHEP(5,NHEP+2),PHEP(5,NHEP+3)) IF(PCM.LT.ZERO.AND.NTRY.LE.NETRY) THEN GOTO 910 ELSEIF(PCM.LT.ZERO) THEN CALL HWWARN('HWHESG',100) GOTO 999 ENDIF C--Set up the colours etc ISTHEP(NHEP+2) = 113 ISTHEP(NHEP+3) = 114 JMOHEP(1,NHEP+1) = 1 C--PR Bug fix 10/10/01 IF (JDAHEP(1,1).NE.0) JMOHEP(1,NHEP+1)=JDAHEP(1,1) JMOHEP(2,NHEP+1) = 2 IF (JDAHEP(1,2).NE.0) JMOHEP(2,NHEP+1)=JDAHEP(1,2) JMOHEP(1,NHEP+2) = NHEP+1 JMOHEP(2,NHEP+2) = NHEP+2 JMOHEP(1,NHEP+3) = NHEP+1 JMOHEP(2,NHEP+3) = NHEP+3 JDAHEP(1,NHEP+1) = NHEP+2 JDAHEP(2,NHEP+1) = NHEP+3 JDAHEP(1,NHEP+2) = 0 JDAHEP(2,NHEP+2) = NHEP+3 JDAHEP(1,NHEP+3) = 0 JDAHEP(2,NHEP+3) = NHEP+2 C--Set up the momenta IHEP = NHEP+2 PHEP(4,IHEP) = SQRT(PCM**2+PHEP(5,IHEP)**2) PHEP(3,IHEP) = PCM*COSTH PHEP(1,IHEP) = SQRT((PCM+PHEP(3,IHEP))*(PCM-PHEP(3,IHEP))) PHEP(2,IHEP) = ZERO CALL HWRAZM(PHEP(1,IHEP),PHEP(1,IHEP),PHEP(2,IHEP)) CALL HWULOB(PHEP(1,NHEP+1),PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWVDIF(4,PHEP(1,NHEP+1),PHEP(1,IHEP),PHEP(1,IHEP+1)) NHEP = NHEP+3 ELSE EVWGT = HCS ENDIF 999 RETURN END CDECK ID>, HWHESP. *CMZ :- -18/10/00 13:46:47 by Peter Richardson *-- Author : Kosuke Odagiri & Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWHESP C----------------------------------------------------------------------- C SUSY E+E- -> 2 SPARTICLE PROCESSES C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION SAVWT(3),RANWT,HWRGEN EXTERNAL HWRGEN SAVE SAVWT IF(IPROC.EQ.700) THEN IF(GENEV) THEN RANWT = SAVWT(3)*HWRGEN(0) IF(RANWT.LT.SAVWT(1)) THEN CALL HWHESG ELSEIF(RANWT.LT.SAVWT(2)) THEN CALL HWHESL ELSEIF(RANWT.LT.SAVWT(3)) THEN CALL HWHESQ ENDIF ELSE CALL HWHESG SAVWT(1) = EVWGT CALL HWHESL SAVWT(2) = SAVWT(1)+EVWGT CALL HWHESQ SAVWT(3) = SAVWT(2)+EVWGT EVWGT = SAVWT(3) ENDIF ELSEIF(IPROC.LT.740) THEN CALL HWHESG ELSEIF(IPROC.LT.760) THEN CALL HWHESL ELSEIF(IPROC.LT.790) THEN CALL HWHESQ ELSE C---UNRECOGNIZED PROCESS CALL HWWARN('HWHESP',500) ENDIF END CDECK ID>, HWHESQ. *CMZ :- -16/10/00 15:34:113 by Peter Richardson *-- Author : Kosuke Odagiri & Peter Richardson C----------------------------------------------------------------------- SUBROUTINE HWHESQ C----------------------------------------------------------------------- C SUSY E+E- -> 2 SQUARK PROCESSES C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,HWUAEM,EPS,HCS,RCS,S,PF,QPE,HWUPCM,PCM, & FACTR,SN2TH,MZ,ME2(2,2,6),EMSC2,HWUMBW,HWRUNI,SQPE INTEGER ID1,ID2,IQ,IQ1,IQ2,I,J,IHEP,IDL,IDLR(2),IDSQU(2),NTRY EXTERNAL HWRGEN,HWUAEM,HWUMBW,HWUPCM,HWRUNI SAVE HCS,ME2,IDLR,IDSQU PARAMETER (EPS = 1.D-9) DOUBLE COMPLEX Z, GZ, A, BL, BR, CL, CR, D, E PARAMETER (Z = (0.D0,1.D0)) EQUIVALENCE (MZ, RMASS(200)) C S = PHEP(5,3)**2 EMSC2 = S EMSCA = SQRT(EMSC2) IF(FSTWGT) THEN IF(IPROC.EQ.700.OR.IPROC.EQ.760) THEN IDLR(1) = 0 IDLR(2) = 0 IDSQU(1) = 1 IDSQU(2) = 6 ELSEIF(IPROC.GT.760.AND.IPROC.LE.784) THEN IQ = MOD((IPROC-761),4) IF(IQ.EQ.0) THEN IDLR(1) = 0 IDLR(2) = 0 ELSEIF(IQ.EQ.1) THEN IDLR(1) = 1 IDLR(2) = 1 ELSEIF(IQ.EQ.2) THEN IDLR(1) = 1 IDLR(2) = 2 ELSEIF(IQ.EQ.3) THEN IDLR(1) = 2 IDLR(2) = 2 ENDIF IDSQU(1) = (IPROC-761)/4+1 IDSQU(2) = IDSQU(1) ELSE CALL HWWARN('HWHESQ',500) ENDIF ENDIF IF (GENEV) THEN RCS = HCS*HWRGEN(0) ELSE COSTH = HWRUNI(1,-ONE,ONE) SN2TH = 0.25D0 - 0.25D0*COSTH**2 FACTR = CAFAC*GEV2NB*PIFAC*HWUAEM(EMSC2)**2*SN2TH/S GZ = (S-MZ**2+Z*S*GAMZ/MZ)/S IDL = ABS(IDHEP(1)) c ~ ~* c e+ e- -> q q c DO IQ=1,6 DO I=1,2 DO J=1,2 ME2(I,J,IQ) = ZERO ENDDO ENDDO ENDDO DO IQ = IDSQU(1),IDSQU(2) DO I = 1,2 DO J = 1,2 IF ((I.NE.J).AND.(IQ.LT.5).OR. & (IDLR(1).NE.0.AND.(IDLR(1).NE.I.OR.IDLR(2).NE.J) & .AND.(IDLR(1).NE.J.OR.IDLR(2).NE.I))) THEN QPE = -1. ELSE ID1 = 388 + I*12 + IQ ID2 = 388 + J*12 + IQ QPE = S-(RMASS(ID1)+RMASS(ID2))**2 ENDIF IF (QPE.GT.ZERO) THEN SQPE = SQRT(QPE*(S-(RMASS(ID1)-RMASS(ID2))**2)) PF = SQPE/S A = QFCH(IQ)*QFCH(IDL) BL = LFCH(IQ)/GZ BR = RFCH(IQ)/GZ CL = QMIXSS(IQ,1,I)*QMIXSS(IQ,1,J) CR = QMIXSS(IQ,2,I)*QMIXSS(IQ,2,J) D = (A+BL*LFCH(IDL))*CL+(A+BR*LFCH(IDL))*CR E = (A+BL*RFCH(IDL))*CL+(A+BR*RFCH(IDL))*CR ME2(I,J,IQ)=FACTR*PF**3*DREAL( & (ONE-EPOLN(3))*(ONE+PPOLN(3))*DCONJG(D)*D & +(ONE+EPOLN(3))*(ONE-PPOLN(3))*DCONJG(E)*E) ELSE ME2(I,J,IQ)=ZERO ENDIF ENDDO ENDDO ENDDO ENDIF HCS = ZERO C DO IQ = 1,6 DO I = 1,2 DO J = 1,2 IQ1 = IQ+I*12+388 IQ2 = IQ+J*12+394 HCS = HCS + ME2(I,J,IQ) IF (GENEV.AND.HCS.GT.RCS) GOTO 100 ENDDO ENDDO ENDDO C---GENERATE EVENT 100 IF(GENEV) THEN IDHW(NHEP+1) = 15 IDHEP(NHEP+1) = 0 ISTHEP(NHEP+1) = 110 IDHW(NHEP+2) = IQ1 IDHW(NHEP+3) = IQ2 IDHEP(NHEP+2) = IDPDG(IQ1) IDHEP(NHEP+3) = IDPDG(IQ2) C--Select the particle masses and momenta 110 NTRY = NTRY+1 PHEP(5,NHEP+2) = HWUMBW(IQ1) PHEP(5,NHEP+3) = HWUMBW(IQ2) CALL HWVEQU(5,PHEP(1,3),PHEP(1,NHEP+1)) PCM = HWUPCM(PHEP(5,NHEP+1),PHEP(5,NHEP+2),PHEP(5,NHEP+3)) IF(PCM.LT.ZERO.AND.NTRY.LE.NETRY) THEN GOTO 110 ELSEIF(PCM.LT.ZERO) THEN CALL HWWARN('HWHESQ',100) GOTO 999 ENDIF C--Set up the colours etc ISTHEP(NHEP+2) = 113 ISTHEP(NHEP+3) = 114 JMOHEP(1,NHEP+1) = 1 IF (JDAHEP(1,1).NE.0) JMOHEP(1,NHEP+1)=JDAHEP(1,1) JMOHEP(2,NHEP+1) = 2 IF (JDAHEP(1,2).NE.0) JMOHEP(2,NHEP+1)=JDAHEP(1,2) JMOHEP(1,NHEP+2) = NHEP+1 JMOHEP(2,NHEP+2) = NHEP+3 JMOHEP(1,NHEP+3) = NHEP+1 JMOHEP(2,NHEP+3) = NHEP+2 JDAHEP(1,NHEP+1) = NHEP+2 JDAHEP(2,NHEP+1) = NHEP+3 JDAHEP(1,NHEP+2) = 0 JDAHEP(2,NHEP+2) = NHEP+3 JDAHEP(1,NHEP+3) = 0 JDAHEP(2,NHEP+3) = NHEP+2 C--Set up the momenta IHEP = NHEP+2 PHEP(4,IHEP) = SQRT(PCM**2+PHEP(5,IHEP)**2) PHEP(3,IHEP) = PCM*COSTH PHEP(1,IHEP) = SQRT((PCM+PHEP(3,IHEP))*(PCM-PHEP(3,IHEP))) CALL HWRAZM(PHEP(1,IHEP),PHEP(1,IHEP),PHEP(2,IHEP)) CALL HWULOB(PHEP(1,NHEP+1),PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWVDIF(4,PHEP(1,NHEP+1),PHEP(1,IHEP),PHEP(1,IHEP+1)) NHEP = NHEP+3 ELSE EVWGT = HCS ENDIF 999 RETURN END CDECK ID>, HWHEW0. *CMZ :- -26/04/91 11.11.55 by Bryan Webber *-- Author : Zoltan Kunszt, modified by Bryan Webber & Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWHEW0(IP,ETOT,XM,PR,WEIGHT,CR) C----------------------------------------------------------------------- INCLUDE 'HERWIG65.INC' DOUBLE PRECISION HWRGEN,ETOT,XM(2),PR(5,2),WEIGHT,CR,XM1,XM2,S, & D1,PABS,D,CX,C,E,F,SC,G INTEGER IP,I EXTERNAL HWRGEN WEIGHT=ZERO XM1=XM(1)**2 XM2=XM(2)**2 S=ETOT*ETOT D1=S-XM1-XM2 PABS=D1*D1-4.*XM1*XM2 IF (PABS.LE.ZERO) RETURN PABS=SQRT(PABS) D=D1/PABS IF(IP.EQ.2)GOTO3 CX=CR C=D-(D+CX)*((D-CR)/(D+CX))**HWRGEN(2) GOTO 4 3 E=((D+ONE)/(D-ONE))*(TWO*HWRGEN(3)-ONE) C=D*((E-ONE)/(E+ONE)) 4 F=2D0*PIFAC*HWRGEN(4) SC=SQRT(ONE-C*C) PR(4,1)=(S+XM1-XM2)/(TWO*ETOT) PR(5,1)=PR(4,1)*PR(4,1)-XM1 IF (PR(5,1).LE.ZERO) RETURN PR(5,1)=SQRT(PR(5,1)) PR(4,2)=ETOT-PR(4,1) PR(3,1)=PR(5,1)*C PR(5,2)=PR(5,1) PR(2,1)=PR(5,1)*SC*COS(F) PR(1,1)=PR(5,1)*SC*SIN(F) DO 7 I=1,3 7 PR(I,2)=-PR(I,1) G=0. IF(IP.EQ.1)G=(D-C)*LOG((D+CX)/(D-CR)) IF(IP.EQ.2)G=(D*D-C*C)/D*LOG((D+ONE)/(D-ONE)) WEIGHT=PIFAC*G*PR(5,1)/ETOT*HALF END CDECK ID>, HWHEW1. *CMZ :- -26/04/91 11.11.55 by Bryan Webber *-- Author : Zoltan Kunszt, modified by Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWHEW1(NPART) C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE PRECISION P(4,7),XMASS,PLAB,PRW,PCM INTEGER NPART,I,J,K COMMON/HWHEWP/ XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10) DO 10 I=1,NPART P(1,I)=PLAB(3,I) P(2,I)=PLAB(1,I) P(3,I)=PLAB(2,I) P(4,I)=PLAB(4,I) 10 CONTINUE DO 20 J=1,4 DO 30 K=1,(NPART-2) 30 PCM(J,K)=P(J,K+2) PCM(J,NPART-1)=-P(J,1) PCM(J,NPART)=-P(J,2) 20 CONTINUE END CDECK ID>, HWHEW2. *CMZ :- -26/04/91 13.22.25 by Federico Carminati *-- Author : Zoltan Kunszt, modified by Bryan Webber C----------------------------------------------------------------------- SUBROUTINE HWHEW2(NPART,PPCM,H,CH,D) C----------------------------------------------------------------------- C PCM SHOULD BE DEFINED SUCH THAT ALL 4-MOMENTA ARE OUTGOING. C CONVENTION FOR PCM AND P IS THAT DIRECTION 1 =BEAM, COMPONENT C 4 = ENERGY AND COMPONENT 2 AND 3 ARE TRANSVERSE COMPONENTS. C THUS INCOMING MOMENTA SHOULD CORRESPOND TO OUTGOING MOMENTA C OF NEGATIVE ENERGY. C PCM IS FILLED BY PHASE SPACE MONTE CARLO. C I1-I7 HERE REFER TO HOW PCM INDEXING IS MAPPED TO OUR STANDARD C 1-6=GLUON,GLUON,Q,QBAR,QP,QPBAR ORDERING ` C----------------------------------------------------------------------- IMPLICIT NONE DOUBLE COMPLEX PT5,ZT,Z1,ZI,ZP,ZQ,ZD,ZPS,ZQS,ZDPM,ZDMP,H(8,8), & CH(8,8),D(8,8) DOUBLE PRECISION ZERO,ONE,PPCM(5,8),P(5,8),WRN(8),EPS,Q1,Q2,QP,QM, & P1,P2,PP,PM,DMP,DPM,PT,QT,PTI,QTI,HALF INTEGER J,L,IJ,II,JJ,I,NPART,IP1,IPP1 PARAMETER (ZERO=0.D0,ONE=1.D0,HALF=0.5D0) EPS=0.0000001 ZI=DCMPLX(ZERO,ONE) Z1=DCMPLX(ONE,ZERO) C FOLLOWING DO LOOP IS TO CONVERT TO OUR STANDARD INDEXING DO 1 L=1,NPART DO 1 IJ=1,4 1 P(IJ,L)=PPCM(IJ,L) DO 2 II=1,8 WRN(II)=ONE IF(P(4,II).LT.ZERO) WRN(II)=-ONE DO 2 JJ=1,4 P(JJ,II)=WRN(II)*P(JJ,II) 2 CONTINUE C THE ABOVE CHECKS FOR MOMENTA WITH NEGATIVE ENERGY,INNER PRODUCTS C ARE EXPRESSED DIFFERENTLY FOR DIFFERENT CASES DO 11 I=1,NPART-1 IP1=I+1 DO 11 J=IP1,NPART Q1=P(4,I)+P(1,I) QP=0.0 IF(Q1.GT.EPS)QP=SQRT(Q1) Q2=P(4,I)-P(1,I) QM=0.0 IF(Q2.GT.EPS)QM=SQRT(Q2) P1=P(4,J)+P(1,J) PP=0. IF(P1.GT.EPS)PP=SQRT(P1) P2=P(4,J)-P(1,J) PM=0. IF(P2.GT.EPS)PM=SQRT(P2) DMP=PM*QP ZDMP=DCMPLX(DMP,ZERO) DPM=PP*QM ZDPM=DCMPLX(DPM,ZERO) C NOTE THAT IN OUR INNER PRODUCT NOTATION WE ARE COMPUTING
PT=SQRT(P(2,J)**2+P(3,J)**2)
QT=SQRT(P(2,I)**2+P(3,I)**2)
IF(PT.GT.EPS) GOTO 99
ZP=Z1
GOTO 98
99 PTI=ONE/PT
ZP=DCMPLX(PTI*P(2,J),PTI*P(3,J))
98 ZPS=DCONJG(ZP)
IF(QT.GT.EPS) GOTO 89
ZQ=Z1
GOTO 88
89 QTI=ONE/QT
ZQ=DCMPLX(QTI*P(2,I),QTI*P(3,I))
88 ZQS=DCONJG(ZQ)
ZT=Z1
IF(WRN(I).LT.ZERO) ZT=ZT*ZI
IF(WRN(J).LT.ZERO) ZT=ZT*ZI
H(J,I)=(ZDMP*ZP-ZDPM*ZQ)*ZT
CH(J,I)=(ZDMP*ZPS-ZDPM*ZQS)*ZT
ZD=H(J,I)*CH(J,I)
PT5=DCMPLX(HALF,ZERO)
D(J,I)=PT5*ZD
11 CONTINUE
DO 60 I=1,NPART-1
IPP1=I+1
DO 60 J=IPP1,NPART
H(I,J)=-H(J,I)
CH(I,J)=-CH(J,I)
60 D(I,J)=D(J,I)
END
CDECK ID>, HWHEW3.
*CMZ :- -27/03/92 19.48.55 by Mike Seymour
*-- Author : Zoltan Kunszt, modified by Bryan Webber
C-----------------------------------------------------------------------
SUBROUTINE HWHEW3(N1,N2,N3,N4,N5,N6,AMPWW)
C-----------------------------------------------------------------------
C RECALL THAT N1,N3,N5 MUST BE OUTGOING FERMIONS, AND N2,N4,N6 MUST BE
C OUTGOING ANTI-FERMIONS; 3,4 FOR W-, 5,6 FOR W+
C
C EQ1 AND T31 ARE FOR OUTOING INITIAL QUARK
C CHOOSE APPROPRIATE CASE ACCORDING TO NUPDN
C NUPDN=1 FOR UUBAR COLLISIONS, NUPDN=2 FOR DDBAR COLLISIONS
C NFINAL CHOOSES THE FINAL DECAYS, 1 FOR DOUBLE LEPTON, 2 FOR 1 FLAVOR
C LEPTON+2FAMILIES OF QUARKS, 3 THE SAME, 4 FOR DOUBLE 2FAM3COLOR QUARKS
C
C NOTE: EXTERNAL FACTOR OF COLOR AVERAGE AND SPIN AVERAGE AND
C COUPLING (E**8/4/9) MUST BE INCLUDED AS WELL AS COMPENSATION
C FOR ON POLE APPROXIMATION AS DESIRED.
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE COMPLEX HWHEW4,ZH,ZCH,ZD,ZAMP1,ZAMP3,DWW,CWW,BWW,AWW,
& AWWM,AWWP,AMPTEM,ZTWO,ZHALF
DOUBLE PRECISION XW,ZMASS,T3,EQ1,RR,RL,ZM2,AMP2,RKW,COLFAC(4),
& AMPWW(4)
INTEGER I,N1,N2,N3,N4,N5,N6
EXTERNAL HWHEW4
COMMON/HWHEWQ/ZH(8,8),ZCH(8,8),ZD(8,8)
EQUIVALENCE (XW,SWEIN),(ZMASS,RMASS(200))
SAVE COLFAC,ZTWO,ZHALF
DATA COLFAC/1.D0,3.D0,3.D0,9.D0/
DATA ZTWO,ZHALF/(2.0D0,0.0D0),(0.5D0,0.0D0)/
T3=-1.D0
EQ1=-1.D0
RR=-2.D0*EQ1*XW
RL=T3+RR
ZM2=ZMASS*ZMASS
ZAMP1=DCMPLX(ZM2)/(ZTWO*ZD(N1,N2))
& /(ZTWO*ZD(N1,N2)+DCMPLX(-ZM2,GAMZ*ZMASS))
ZAMP3=ZHALF/(ZD(N1,N5)+ZD(N1,N6)+ZD(N5,N6))
DWW=DCMPLX(RL)*ZAMP1+T3/(ZTWO*ZD(N1,N2))
CWW=DCMPLX(RR)*ZAMP1
AWW=DWW
BWW=DWW-ZAMP3
AWWM=AWW*HWHEW4(N1,N2,N3,N4,N5,N6)-BWW*HWHEW4(N1,N2,N5,N6,N3,N4)
AWWP=CWW*(HWHEW4(N2,N1,N5,N6,N3,N4)-HWHEW4(N2,N1,N3,N4,N5,N6))
AMPTEM=AWWM*DCONJG(AWWM)+AWWP*DCONJG(AWWP)
AMP2=DREAL(AMPTEM)
C AMP2 DOES NOT INCLUDE COLOR OR FLAVOR SUMS OR AVERAGES YET
C NOR DOES IT INCLUDE TO THIS POINT KWW**2
C 1 LEPTON FLAVOR IF APPROPRIATE FOR NFINAL CHOICE
RKW=0.25D0/XW**2
DO 6 I=1,4
6 AMPWW(I)=AMP2*COLFAC(I)*RKW*RKW
END
CDECK ID>, HWHEW4.
*CMZ :- -26/04/91 10.18.57 by Bryan Webber
*-- Author : Zoltan Kunszt, modified by Bryan Webber
C-----------------------------------------------------------------------
FUNCTION HWHEW4(N1,N2,N3,N4,N5,N6)
C-----------------------------------------------------------------------
IMPLICIT NONE
DOUBLE COMPLEX HWHEW4,ZH,ZCH,ZD
INTEGER N1,N2,N3,N4,N5,N6
COMMON/HWHEWQ/ZH(8,8),ZCH(8,8),ZD(8,8)
HWHEW4=4*ZH(N1,N3)*ZCH(N2,N6)*(ZH(N1,N5)*ZCH(N1,N4)
X +ZH(N3,N5)*ZCH(N3,N4))
END
CDECK ID>, HWHEW5.
*CMZ : 20/08/91 22.09.33 by Federico Carminati
*-- Author : Zoltan Kunszt, modified by Mike Seymour
C-----------------------------------------------------------------------
SUBROUTINE HWHEW5(N1,N2,N3,N4,N5,N6,HELSUM,HELCTY,ID1,ID2)
C-----------------------------------------------------------------------
C RECALL THAT N1,N3,N5 MUST BE OUTGOING FERMIONS, AND N2,N4,N6 MUST BE
C OUTGOING ANTI-FERMIONS; 3,4 FOR Z0, 5,6 FOR Z0
C
C EQ1 AND T31 ARE FOR OUTOING INITIAL QUARK
C CHOOSE APPROPRIATE CASE ACCORDING TO NUPDN
C NUPDN=1 FOR UUBAR COLLISIONS, NUPDN=2 FOR DDBAR COLLISIONS
C NFINAL CHOOSES THE FINAL DECAYS, 1 FOR DOUBLE LEPTON, 2 FOR 1 FLAVOR
C LEPTON+2FAMILIES OF QUARKS, 3 THE SAME, 4 FOR DOUBLE 2FAM3COLOR QUARKS
C
C NOTE: EXTERNAL FACTOR OF COLOR AVERAGE AND SPIN AVERAGE AND
C COUPLING (E**8/4/9) MUST BE INCLUDED AS WELL AS COMPENSATION
C FOR ON POLE APPROXIMATION AS DESIRED.
C
C---SLIGHTLY MODIFIED BY MHS, SO THAT HELCTY REFERS TO THE FINAL STATE
C INDICATED BY ID1,ID2
C-----------------------------------------------------------------------
IMPLICIT NONE
DOUBLE COMPLEX HWHEW4,ZH,ZCH,ZD,ZAMM(8),ZS134,ZS156,ZS234,ZS256,
& ZTWO
DOUBLE PRECISION CPFAC,CPALL,HELSUM,HELCTY,AMM
INTEGER N1,N2,N3,N4,N5,N6,ID1,ID2,I
EXTERNAL HWHEW4
COMMON/HWHEWQ/ZH(8,8),ZCH(8,8),ZD(8,8)
COMMON/HWHEWR/CPFAC(12,12,8),CPALL(8)
SAVE ZTWO
DATA ZTWO/(2.0D0,0.0D0)/
C THE MATRIX ELEMENT DEPENDS ON
ZS134=(ZD(N1,N3)+ZD(N1,N4)+ZD(N3,N4))*ZTWO
ZS156=(ZD(N1,N5)+ZD(N1,N6)+ZD(N5,N6))*ZTWO
ZS234=(ZD(N2,N3)+ZD(N2,N4)+ZD(N3,N4))*ZTWO
ZS256=(ZD(N2,N5)+ZD(N2,N6)+ZD(N5,N6))*ZTWO
ZAMM(1)=HWHEW4(N1,N2,N3,N4,N5,N6)/ZS134+
> HWHEW4(N1,N2,N5,N6,N3,N4)/ZS156
ZAMM(2)=HWHEW4(N1,N2,N4,N3,N5,N6)/ZS134+
> HWHEW4(N1,N2,N5,N6,N4,N3)/ZS156
ZAMM(3)=HWHEW4(N1,N2,N3,N4,N6,N5)/ZS134+
> HWHEW4(N1,N2,N6,N5,N3,N4)/ZS156
ZAMM(4)=HWHEW4(N1,N2,N4,N3,N6,N5)/ZS134+
> HWHEW4(N1,N2,N6,N5,N4,N3)/ZS156
ZAMM(5)=HWHEW4(N2,N1,N3,N4,N5,N6)/ZS234+
> HWHEW4(N2,N1,N5,N6,N3,N4)/ZS256
ZAMM(6)=HWHEW4(N2,N1,N4,N3,N5,N6)/ZS234+
> HWHEW4(N2,N1,N5,N6,N4,N3)/ZS256
ZAMM(7)=HWHEW4(N2,N1,N3,N4,N6,N5)/ZS234+
> HWHEW4(N2,N1,N6,N5,N3,N4)/ZS256
ZAMM(8)=HWHEW4(N2,N1,N4,N3,N6,N5)/ZS234+
> HWHEW4(N2,N1,N6,N5,N4,N3)/ZS256
HELSUM=0.0
HELCTY=0.0
DO 1 I=1,8
AMM=DREAL(ZAMM(I)*DCONJG(ZAMM(I)))
HELSUM=HELSUM+CPALL(I)*AMM
HELCTY=HELCTY+CPFAC(ID1,ID2,I)*AMM
1 CONTINUE
END
CDECK ID>, HWHEWW.
*CMZ :- -02/05/91 10.58.29 by Federico Carminati
*-- Author : Zoltan Kunszt, modified by Bryan Webber
C-----------------------------------------------------------------------
SUBROUTINE HWHEWW
C-----------------------------------------------------------------------
C E+E- -> W+W-/Z0Z0 (BASED ON ZOLTAN KUNSZT'S PROGRAM)
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE COMPLEX ZH,ZCH,ZD
DOUBLE PRECISION HWUAEM,HWRGEN,HWUPCM,ETOT,STOT,FLUXW,GAMM,GIMM,
& WM2,WXMIN,WX1MAX,WX2MAX,FJAC1,FJAC2,WX1,WX2,WMM1,WMM2,XXM,W2BO,
& PST,WEIGHT,TOTSIG,WMASS,WWIDTH,ELST,CV,CA,BR,XMASS,PLAB,PRW,PCM,
& AMPWW(4),CCC,HELSUM,HELCTY,BRZED(12),BRTOT,CPFAC,CPALL,RLL(12),
& RRL(12),DIST(4)
INTEGER IB,IBOS,I,ID1,ID2,NTRY,IDP(10),IDBOS(2),J1,J2,IPRC,ILST,
& IDZOLT(16),MAP(12),NEWHEP
LOGICAL EISBM1,HWRLOG
EXTERNAL HWUAEM,HWRGEN,HWUPCM
SAVE IDP,STOT,FLUXW,GAMM,GIMM,WM2,WXMIN,WX1MAX,FJAC1,ELST,ILST,
& IDBOS,WMASS,WWIDTH,BRZED
COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10)
COMMON/HWHEWQ/ZH(8,8),ZCH(8,8),ZD(8,8)
COMMON/HWHEWR/CPFAC(12,12,8),CPALL(8)
SAVE IDZOLT,MAP
DATA ELST,ILST/0.D0,0/
DATA IDZOLT/4,3,8,7,12,11,4*0,2,1,6,5,10,9/
DATA MAP/12,11,2,1,14,13,4,3,16,15,6,5/
IF (IERROR.NE.0) RETURN
EISBM1=IDHW(1).LT.IDHW(2)
IF (GENEV) THEN
NEWHEP=NHEP
NHEP=NHEP+2
DO 20 IB=1,2
IBOS=IB+NEWHEP
CALL HWVEQU(5,PRW(1,IB),PHEP(1,IBOS))
IF (EISBM1) PHEP(3,IBOS)=-PHEP(3,IBOS)
CALL HWVZRO(4,VHEP(1,IBOS))
CALL HWUDKL(IDBOS(IB),PHEP(1,IBOS),DIST)
CALL HWVSUM(4,VHEP(1,IBOS),DIST,DIST)
IDHW(IBOS)=IDBOS(IB)
IDHEP(IBOS)=IDPDG(IDBOS(IB))
JMOHEP(1,IBOS)=1
JMOHEP(2,IBOS)=2
ISTHEP(IBOS)=110
DO 10 I=1,2
CALL HWVEQU(5,PLAB(1,2*IB+I),PHEP(1,NHEP+I))
IF (EISBM1) PHEP(3,NHEP+I)=-PHEP(3,NHEP+I)
CALL HWVEQU(4,DIST,VHEP(1,NHEP+I))
C---STATUS, IDs AND POINTERS
ISTHEP(NHEP+I)=112+I
IDHW(NHEP+I)=IDP(2*IB+I)
IDHEP(NHEP+I)=IDPDG(IDP(2*IB+I))
JDAHEP(I,IBOS)=NHEP+I
JMOHEP(1,NHEP+I)=IBOS
JMOHEP(2,NHEP+I)=JMOHEP(1,IBOS)
10 CONTINUE
NHEP=NHEP+2
JMOHEP(2,NHEP)=NHEP-1
JDAHEP(2,NHEP)=NHEP-1
JMOHEP(2,NHEP-1)=NHEP
JDAHEP(2,NHEP-1)=NHEP
20 CONTINUE
ELSE
EMSCA=PHEP(5,3)
ETOT=EMSCA
IPRC=MOD(IPROC,100)
IF (ETOT.NE.ELST .OR. IPRC.NE.ILST) THEN
STOT=ETOT*ETOT
FLUXW=GEV2NB*.125*(HWUAEM(STOT)/PIFAC)**4/STOT
IF (IPRC.EQ.0) THEN
WMASS=RMASS(198)
WWIDTH=GAMW
IDBOS(1)=198
IDBOS(2)=199
ELSEIF (IPRC.EQ.50) THEN
WMASS=RMASS(200)
WWIDTH=GAMZ
IDBOS(1)=200
IDBOS(2)=200
C---LOAD FERMION COUPLINGS TO Z
DO 30 I=1,12
RLL(I)=VFCH(MAP(I),1)+AFCH(MAP(I),1)
RRL(I)=VFCH(MAP(I),1)-AFCH(MAP(I),1)
30 CONTINUE
RLL(11)=0
RRL(11)=0
BRTOT=0
DO 60 J1=1,12
BRZED(J1)=0
DO 50 J2=1,12
CCC=1
IF (MOD(J1-1,4).GE.2) CCC=CCC*CAFAC
IF (MOD(J2-1,4).GE.2) CCC=CCC*CAFAC
CPFAC(J1,J2,1)=CCC*(RLL(2)**2*RLL(J1)*RLL(J2))**2
CPFAC(J1,J2,2)=CCC*(RLL(2)**2*RRL(J1)*RLL(J2))**2
CPFAC(J1,J2,3)=CCC*(RLL(2)**2*RLL(J1)*RRL(J2))**2
CPFAC(J1,J2,4)=CCC*(RLL(2)**2*RRL(J1)*RRL(J2))**2
CPFAC(J1,J2,5)=CCC*(RRL(2)**2*RLL(J1)*RLL(J2))**2
CPFAC(J1,J2,6)=CCC*(RRL(2)**2*RRL(J1)*RLL(J2))**2
CPFAC(J1,J2,7)=CCC*(RRL(2)**2*RLL(J1)*RRL(J2))**2
CPFAC(J1,J2,8)=CCC*(RRL(2)**2*RRL(J1)*RRL(J2))**2
DO 40 I=1,8
IF (J1.EQ.1.AND.J2.EQ.1) CPALL(I)=0
CPALL(I)=CPALL(I)+CPFAC(J1,J2,I)
BRZED(J1)=BRZED(J1)+CPFAC(J1,J2,I)
BRTOT=BRTOT+CPFAC(J1,J2,I)
40 CONTINUE
50 CONTINUE
60 CONTINUE
DO 70 I=1,12
70 BRZED(I)=BRZED(I)/BRTOT
ELSE
CALL HWWARN('HWHEWW',500)
ENDIF
GAMM=WMASS*WWIDTH
GIMM=1.D0/GAMM
WM2=WMASS*WMASS
WXMIN=ATAN(-WMASS/WWIDTH)
WX1MAX=ATAN((STOT-WM2)*GIMM)
FJAC1=WX1MAX-WXMIN
ILST=IPRC
ELST=ETOT
ENDIF
EVWGT=0
C---CHOOSE W MASSES
WX1=WXMIN+FJAC1*HWRGEN(1)
WMM1=GAMM*TAN(WX1)+WM2
IF (WMM1.LE.0) RETURN
XMASS(1)=SQRT(WMM1)
WX2MAX=ATAN(((ETOT-XMASS(1))**2-WM2)*GIMM)
FJAC2=WX2MAX-WXMIN
WX2=WXMIN+FJAC2*HWRGEN(2)
WMM2=GAMM*TAN(WX2)+WM2
IF (WMM2.LE.0) RETURN
XMASS(2)=SQRT(WMM2)
IF (HWRLOG(HALF))THEN
XXM=XMASS(1)
XMASS(1)=XMASS(2)
XMASS(2)=XXM
ENDIF
C---CTMAX=ANGULAR CUT ON COS W-ANGLE
CALL HWHEW0(1,ETOT,XMASS(1),PRW(1,1),W2BO,CTMAX)
IF (W2BO.EQ.ZERO) RETURN
C---FOR ZZ EVENTS, FORCE BOSE STATISTICS, BY KILLING EVENTS WITH COS1<0
IF (IPRC.NE.0) THEN
IF (PRW(3,1).LT.ZERO) RETURN
C---AND THEN SYMMETRIZE (THIS PROCEDURE VASTLY IMPROVES EFFICIENCY)
IF (HWRLOG(HALF)) THEN
PRW(3,1)=-PRW(3,1)
PRW(3,2)=-PRW(3,2)
ENDIF
ENDIF
PLAB(3,1)=0.5*ETOT
PLAB(4,1)=PLAB(3,1)
PLAB(3,2)=-PLAB(3,1)
PLAB(4,2)=PLAB(3,1)
C
C---LET THE W BOSONS DECAY
NTRY=0
80 NTRY=NTRY+1
DO 90 IB=1,2
CALL HWDBOZ(IDBOS(IB),ID1,ID2,CV,CA,BR,1)
PST=HWUPCM(XMASS(IB),RMASS(ID1),RMASS(ID2))
IF (PST.LT.ZERO) THEN
CALL HWDBOZ(IDBOS(IB),ID1,ID2,CV,CA,BR,2)
IF (NTRY.LE.NBTRY) GOTO 80
C CALL HWWARN('HWHEWW',1)
RETURN
ENDIF
PRW(5,IB)=XMASS(IB)
IDP(2*IB+1)=ID1
IDP(2*IB+2)=ID2
PLAB(5,2*IB+1)=RMASS(ID1)
PLAB(5,2*IB+2)=RMASS(ID2)
CALL HWDTWO(PRW(1,IB),PLAB(1,2*IB+1),PLAB(1,2*IB+2),
& PST,TWO,.TRUE.)
90 CONTINUE
WEIGHT=FLUXW*W2BO*FJAC1*FJAC2*(0.5D0*PIFAC*GIMM)**2
CALL HWHEW1(6)
CALL HWHEW2(6,PCM(1,1),ZH,ZCH,ZD)
IF (IPRC.EQ.0) THEN
CALL HWHEW3(5,6,3,4,1,2,AMPWW)
TOTSIG=9.*AMPWW(1)+6.*(AMPWW(2)+AMPWW(3))+4.*AMPWW(4)
EVWGT=TOTSIG*WEIGHT*BR
ELSE
ID1=IDZOLT(IDPDG(IDP(3)))
ID2=IDZOLT(IDPDG(IDP(5)))
CALL HWHEW5(5,6,3,4,1,2,HELSUM,HELCTY,ID1,ID2)
EVWGT=HELCTY*WEIGHT*BR/(BRZED(ID1)*BRZED(ID2))
ENDIF
ENDIF
END
CDECK ID>, HWHGBP.
*CMZ :- -02/04/01 12.11.55 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHGBP
C-----------------------------------------------------------------------
C Hadron-Hadron to WW/WZ/ZZ (BASED ON ZOLTAN KUNSZT'S PROGRAM)
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE COMPLEX ZH,ZCH,ZD
DOUBLE PRECISION HWUAEM,HWRGEN,HWUPCM,FLUXW,CSW,XMASS,
& PLAB,PRW,PCM,HWRUNI,P(5,10),AMPWW,DIST(4),MW2,CFAC1,AMP,
& MZ2,GMW,GMZ,G(4,2),EE(4),CKM2(12),RF(2),LF(2),TAUI(2),FPI4
INTEGER IB,IBOS,I,IDP,IDBOS,IPRC,NEWHEP,J,ICMF,IHEP,IBRAD,K,IOPT,
& MAP(4),IDRES
LOGICAL PHOTON,GEN
EXTERNAL HWUAEM,HWRGEN,HWUPCM,HWRUNI
COMMON/HWHEWQ/ZH(8,8),ZCH(8,8),ZD(8,8)
COMMON/HWHGBC/ MW2,MZ2,GMW,GMZ,G,EE,CKM2,RF,LF,TAUI,CSW,CFAC1
COMMON /HWBOSN/XMASS(2),PLAB(5,10),PRW(5,2),PCM(5,10),IDBOS(2),
& IDRES,IDP(10),IOPT
SAVE AMPWW,IPRC,PHOTON
PARAMETER(FPI4=24936.72731D0)
DOUBLE PRECISION WI(IMAXCH)
COMMON /HWPSOM/ WI
SAVE MAP
DATA MAP/1,2,11,12/
IF (IERROR.NE.0) RETURN
IF (GENEV) THEN
IF (IPRC.EQ.0) THEN
CALL HWHGB2(AMPWW,IDP,PHOTON)
ELSEIF(IPRC.EQ.10) THEN
CALL HWHGB3(AMPWW,IDP,PHOTON)
ELSEIF(IPRC.EQ.20) THEN
CALL HWHGB4(AMPWW,IDP,PHOTON)
IF((IDP(1).LE.6.AND.MOD(IDP(1),2).EQ.1).OR.
& (IDP(2).LE.6.AND.MOD(IDP(2),2).EQ.1)) THEN
IDBOS(1)=199
IDP(3) = IDP(3)+6
IDP(4) = IDP(4)-6
ENDIF
ENDIF
C--change the sign of the z component (in CMF) if particle first
IF(IDP(1).LT.IDP(2)) THEN
DO IB=1,2
PRW(3,IB) = -PRW(3,IB)
DO I=1,2
PLAB(3,2*IB+I)=-PLAB(3,2*IB+I)
ENDDO
ENDDO
ENDIF
C--boost particles back to the lab frame from the centre of mass frame
DO IB=1,2
CALL HWULOB(PLAB(1,7),PRW(1,IB),PRW(1,IB))
ENDDO
DO I=1,6
CALL HWULOB(PLAB(1,7),PLAB(1,I),PLAB(1,I))
ENDDO
C--put the particles in the event record
C--first the incoming quarks
ICMF = NHEP+3
DO I=1,2
IHEP = NHEP+I
CALL HWVEQU(5,PLAB(1,I),PHEP(1,IHEP))
IDHW(IHEP) = IDP(I)
IDHEP(IHEP)=IDPDG(IDP(I))
ISTHEP(IHEP)=110+I
JMOHEP(1,IHEP)=ICMF
JMOHEP(I,ICMF)=IHEP
JDAHEP(1,IHEP)=ICMF
ENDDO
JMOHEP(2,NHEP+1) = NHEP+2
JMOHEP(2,NHEP+2) = NHEP+1
JDAHEP(2,NHEP+1) = NHEP+2
JDAHEP(2,NHEP+2) = NHEP+1
C--Centre-of-mass energy
ICMF = NHEP+3
C--new for spin correlations
IF(SYSPIN) THEN
IDSPN(1) = ICMF
ISNHEP(ICMF) = 1
JMOSPN(1) = 0
JDASPN(1,1) = 2
JDASPN(2,1) = 5
DECSPN(1) = .FALSE.
ENDIF
IDHW(ICMF)=15
IDHEP(ICMF)=IDPDG(15)
ISTHEP(ICMF)=110
CALL HWVEQU(5,PLAB(1,7),PHEP(1,ICMF))
CALL HWUMAS(PHEP(1,ICMF))
JDAHEP(1,ICMF) = ICMF+1
JDAHEP(2,ICMF) = ICMF+2
NHEP = NHEP+3
NEWHEP = NHEP
NHEP = NHEP+2
C--Now the bosons
DO IB=1,2
IBOS=IB+NEWHEP
CALL HWVEQU(5,PRW(1,IB),PHEP(1,IBOS))
CALL HWVZRO(4,VHEP(1,IBOS))
CALL HWUDKL(IDBOS(IB),PHEP(1,IBOS),DIST)
CALL HWVSUM(4,VHEP(1,IBOS),DIST,DIST)
IDHW(IBOS)=IDBOS(IB)
IDHEP(IBOS)=IDPDG(IDBOS(IB))
JMOHEP(1,IBOS)=ICMF
JMOHEP(2,IBOS)=ICMF
JDAHEP(2,IBOS)=IBOS
ISTHEP(IBOS)=112+IB
ENDDO
C--now generate the initial state shower
CALL HWBGEN
IF(IERROR.NE.0) RETURN
C--now add the outgoing fermions to the event record
DO 20 IB=1,2
IBOS=IB+NEWHEP
IBRAD = JDAHEP(1,IBOS)
ISTHEP(IBRAD) = 195
DO 10 I=1,2
CALL HWVEQU(5,PLAB(1,2*IB+I),PHEP(1,NHEP+I))
CALL HWVEQU(4,DIST,VHEP(1,NHEP+I))
C--Boost the fermion momenta to the rest frame of the original W
CALL HWULOF(PRW(1,IB),PHEP(1,NHEP+I),PHEP(1,NHEP+I))
C--Now boost back to the lab from rest frame of the W after radiation
CALL HWULOB(PHEP(1,IBRAD),PHEP(1,NHEP+I),PHEP(1,NHEP+I))
C--Set the status and pointers
ISTHEP(NHEP+I)=112+I
IDHW(NHEP+I)=IDP(2*IB+I)
IDHEP(NHEP+I)=IDPDG(IDP(2*IB+I))
JDAHEP(I,IBRAD)=NHEP+I
JMOHEP(1,NHEP+I)=IBRAD
C--New for spin correlations
IF(SYSPIN) THEN
ISNHEP(NHEP+I) = 2*IB+I-1
IDSPN(2*IB+I-1) = NHEP+I
JMOSPN(2*IB+I-1) = 1
DECSPN(2*IB+I-1) = .FALSE.
RHOSPN(1,1,2*IB+I-1) = HALF
RHOSPN(1,2,2*IB+I-1) = ZERO
RHOSPN(2,1,2*IB+I-1) = ZERO
RHOSPN(2,2,2*IB+I-1) = HALF
NSPN = NSPN+1
ENDIF
10 CONTINUE
NHEP=NHEP+2
JMOHEP(2,NHEP)=NHEP-1
JDAHEP(2,NHEP)=NHEP-1
JMOHEP(2,NHEP-1)=NHEP
JDAHEP(2,NHEP-1)=NHEP
20 CONTINUE
ELSE
IF(FSTWGT) THEN
IPRC=MOD(IPROC,100)
IF(MOD(IPRC,5).EQ.0.AND.MOD(IPRC,10).NE.0) THEN
PHOTON = .FALSE.
IPRC = IPRC-5
ELSE
PHOTON = .TRUE.
ENDIF
IOPT=1
IF (IPRC.EQ.0) THEN
C--WW production
IDBOS(1)=199
IDBOS(2)=198
IDRES =200
C--ZZ production
ELSEIF (IPRC.EQ.10) THEN
IDBOS(1)=200
IDBOS(2)=200
IDRES =200
ELSEIF(IPRC.EQ.20) THEN
C--WZ production
IDBOS(1)=198
IDBOS(2)=200
IDRES =198
IOPT = 0
ELSE
CALL HWWARN('HWHGBP',500)
ENDIF
C--calculate the couplings etc
MW2 = RMASS(198)**2
GMW = RMASS(198)*GAMW
MZ2 = RMASS(200)**2
GMZ = RMASS(200)*GAMZ
C--couplings to Z and photon
DO I=1,4
G(I,1) = VFCH(MAP(I),1)+AFCH(MAP(I),1)
G(I,2) = VFCH(MAP(I),1)-AFCH(MAP(I),1)
EE(I) = QFCH(MAP(I))
ENDDO
C--elements of the CKM matrix for the various decay modes of the W
DO I=1,3
DO J=1,3
C**Bug fix 2/7/01 by BRW (unsquare)
CKM2(3*I-3+J) = VCKM(J,I)
C**End bug fix
ENDDO
CKM2(9+I) = ONE
ENDDO
C--couplings of the up and down
TAUI(1) = -ONE
TAUI(2) = ONE
DO I=1,2
RF(I) = -TWO*QFCH(I)*SWEIN
LF(I) = TAUI(I)+RF(I)
ENDDO
CFAC1 = ONE/THREE
CSW = SQRT((ONE-SWEIN)/SWEIN)
ENDIF
EVWGT=ZERO
C--find the momenta and the phase space weight
CALL HWHGBS(FLUXW,GEN)
IF(.NOT.GEN) RETURN
C--couplings
AMP = FPI4*HWUAEM(EMSCA**2)**4
C--copy the momenta and change the sign of the beam
DO I=1,6
P(1,I)=PLAB(3,I)
P(2,I)=PLAB(1,I)
P(3,I)=PLAB(2,I)
P(4,I)=PLAB(4,I)
ENDDO
DO 120 J=1,4
DO 130 K=3,6
130 PCM(J,K)=P(J,K)
PCM(J,1)=-P(J,1)
PCM(J,2)=-P(J,2)
120 CONTINUE
C--use the e+e- code to calulate the spinor products
CALL HWHEW2(6,PCM(1,1),ZH,ZCH,ZD)
C--calculate the matrix elements
IF (IPRC.EQ.0) THEN
C--WW matrix element
CALL HWHGB2(AMPWW,IDP,PHOTON)
ELSEIF(IPRC.EQ.10) THEN
C--ZZ matrix element
CALL HWHGB3(AMPWW,IDP,PHOTON)
ELSEIF(IPRC.EQ.20) THEN
C--WZ matrix element
CALL HWHGB4(AMPWW,IDP,PHOTON)
ENDIF
C--Now calculate the cross section
EVWGT = AMPWW*FLUXW*AMP
IF(OPTM) THEN
DO I=1,IMAXCH
IF(CHON(I)) WI(I) = WI(I)*AMPWW**2*AMP**2
ENDDO
ENDIF
ENDIF
END
CDECK ID>, HWHGBS.
*CMZ :- -02/04/01 12.11.55 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHGBS(WEIGHT,GEN)
C-----------------------------------------------------------------------
C Multichannel phase space for gauge boson pair production
C ICH returns the channel used if OPTM=.FALSE.
C ICH specifies the channel to be used if OPTM=.TRUE.
C This is used in optimising the weights for the different channels
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER ICH,IDBOS,ISM(2,IMAXCH),I,J,IB(2),IDRES,IDP,IOPT,IPRC,ID1
DOUBLE PRECISION XMASS,PLAB,PRW,PCM,RAND,HWRGEN,BMS2(2),TJAC,PLM,
& MJAC(2),TWOPI2,SJAC,STOT,THAT,UHAT,TMIN,TMAX,UMIN,UMAX,PS(2),
& ETOT,HWUPCM,PST,HWRUNI,TAU,XJAC,PHI,SINTH,SIG(2),CV,CA,BR(2),
& G(IMAXCH),XF,DEM,TN,UN,SN,S1,S2,MB1,MB2,WEIGHT,BRFAC,BRZ(12)
LOGICAL HWRLOG,GEN
COMMON /HWBOSN/ XMASS(2),PLAB(5,10),PRW(5,2),PCM(5,10),IDBOS(2),
& IDRES,IDP(10),IOPT
EXTERNAL HWRGEN,HWRLOG,HWUPCM,HWRUNI
SAVE ISM,IPRC
PARAMETER(TWOPI2=39.4784176D0)
DOUBLE PRECISION WI(IMAXCH)
COMMON /HWPSOM/ WI
SAVE SIG,BRZ
DATA SIG/1.0D0,-1.0D0/
DATA BRZ/0.154D0,0.120D0,0.154D0,0.120D0,0.152D0,0.000D0,
& 0.033D0,0.067D0,0.033D0,0.067D0,0.033D0,0.067D0/
IF(IERROR.NE.0) RETURN
WEIGHT = ZERO
IF(OPTM) THEN
DO I=1,IMAXCH
WI(I) = ZERO
ENDDO
ENDIF
GEN = .FALSE.
C--set the smoothing for the bosons in the various channels
IF(FSTWGT) THEN
IPRC = MOD(IPROC,100)
DO I=1,2
ISM(1,I) = 1
DO J=1,2
ISM(1,4*I-2+J ) = 1
ISM(1,4*I+J ) = 2
ISM(2,4*I+2*J-3) = 1
ISM(2,4*I+2*J-2) = 2
ENDDO
ENDDO
ISM(2,1) = 1
ISM(2,2) = 2
ENDIF
C--select the channel to be used
RAND=HWRGEN(0)
DO ICH=1,IMAXCH
IF(CHON(ICH)) THEN
IF(CHNPRB(ICH).GT.RAND) GOTO 10
RAND = RAND-CHNPRB(ICH)
ENDIF
ENDDO
10 CONTINUE
C--select the boson masses and compute that part of the denominator
C--decide which boson to do first
IF(HWRLOG(HALF)) THEN
IB(1) = 1
IB(2) = 2
ELSE
IB(1) = 2
IB(2) = 1
ENDIF
C--find the boson masses
CALL HWHGB1(ISM(IB(1),ICH),2,IDBOS(IB(1)),MJAC(IB(1)),BMS2(IB(1)),
& (PHEP(5,3)-EMMIN)**2,EMMIN**2)
XMASS(IB(1)) = SQRT(BMS2(IB(1)))
CALL HWHGB1(ISM(IB(2),ICH),2,IDBOS(IB(2)),MJAC(IB(2)),BMS2(IB(2)),
& (PHEP(5,3)-XMASS(IB(1)))**2,EMMIN**2)
XMASS(IB(2)) = SQRT(BMS2(IB(2)))
DO I=1,2
MJAC(I) = HALF*MJAC(I)/TWOPI2
ENDDO
C--now generate the values of s
C--according to a Breit-Wigner for the first two
IF(ICH.LE.2) THEN
CALL HWHGB1(1,2,IDRES,SJAC,STOT,PHEP(5,3)**2,
& (SQRT(BMS2(1)+PTMIN**2)+SQRT(BMS2(2)+PTMIN**2))**2)
C--according to a power law for the rest
ELSE
CALL HWHGB1(2,2,IDRES,SJAC,STOT,PHEP(5,3)**2,
& (SQRT(BMS2(1)+PTMIN**2)+SQRT(BMS2(2)+PTMIN**2))**2)
ENDIF
ETOT = SQRT(STOT)
C--find the centre of mass momenta
PST = HWUPCM(ETOT,XMASS(1),XMASS(2))
IF(PST.LT.PTMIN) RETURN
PRW(4,1) = SQRT(BMS2(1)+PST**2)
PRW(4,2) = SQRT(BMS2(2)+PST**2)
C--now generate the value of t and u
PLM = SQRT(PST**2-PTMIN**2)
TMIN = BMS2(1)-ETOT*(PRW(4,1)+PLM)
TMAX = BMS2(1)-ETOT*(PRW(4,1)-PLM)
UMIN = BMS2(2)-ETOT*(PRW(4,2)+PLM)
UMAX = BMS2(2)-ETOT*(PRW(4,2)-PLM)
SN = ONE/(TMAX-TMIN)
C--for the first two channels uniform in t
IF(ICH.LE.2) THEN
THAT = HWRUNI(1,TMIN,TMAX)
UHAT = BMS2(1)+BMS2(2)-STOT-THAT
TJAC = TMAX-TMIN
C--for the next four channels generate t according to 1/t
ELSEIF(ICH.LE.6) THEN
CALL HWHGB5(2,TJAC,THAT,TMAX,TMIN)
UHAT = BMS2(1)+BMS2(2)-STOT-THAT
C--for the last four channels generate u according to 1/u
ELSEIF(ICH.LE.10) THEN
CALL HWHGB5(2,TJAC,UHAT,UMAX,UMIN)
THAT = BMS2(1)+BMS2(2)-STOT-UHAT
ELSE
CALL HWWARN('HWHGBS',500)
ENDIF
CALL HWHGB5(1,TN,THAT,TMAX,TMIN)
CALL HWHGB5(1,UN,UHAT,UMAX,UMIN)
C--generate the parton momentum fractions and find the pdf's
TAU = STOT/PHEP(5,3)**2
XX(1) = EXP(HWRUNI(3,LOG(TAU),ZERO))
XX(2) = TAU/XX(1)
XJAC = -LOG(TAU)*XX(1)
XF = ONE/XJAC
EMSCA=ETOT
CALL HWSGEN(.FALSE.)
C--Centre of mass collison angle
COSTH = (THAT-BMS2(1)+ETOT*PRW(4,1))/ETOT/PST
PHI = HWRUNI(4,ZERO,TWO*PIFAC)
SINTH = SQRT(ONE-COSTH**2)
C--incoming momenta in the centre of mass frame
DO I=1,2
PLAB(1,I) = ZERO
PLAB(2,I) = ZERO
PLAB(3,I) = HALF*ETOT
PLAB(4,I) = HALF*ETOT
PLAB(5,I) = ZERO
ENDDO
PLAB(3,2) = -PLAB(3,2)
C--outgoing boson momenta in the centre of mass frame
DO I=1,2
PRW(1,I) = SIG(I)*SINTH*COS(PHI)*PST
PRW(2,I) = SIG(I)*SINTH*SIN(PHI)*PST
PRW(3,I) = SIG(I)*COSTH*PST
PRW(5,I) = XMASS(I)
ENDDO
C--now find the boson decay products
C--find the momenta of the boson decay products
IF(IPRC.EQ.20) IDBOS(1)=198
DO 90 I=1,2
CALL HWDBZ2(IDBOS(I),IDP(2*I+1),IDP(2*I+2),CV,CA,BR(I),IOPT,
& XMASS(I))
IF(BR(I).EQ.ZERO) RETURN
PRW(5,I)=XMASS(I)
PLAB(5,2*I+1) = ZERO
PLAB(5,2*I+2) = ZERO
PS(I) = HALF*XMASS(I)
PLAB(5,2*I+1)=ZERO
PLAB(5,2*I+2)=ZERO
CALL HWDTWO(PRW(1,I),PLAB(1,2*I+1),PLAB(1,2*I+2),
& PS(I),TWO,.TRUE.)
90 CONTINUE
BRFAC = BR(2)
IF(IOPT.EQ.0) BRFAC = BRFAC*BR(1)
DO I=1,2
IF(IDBOS(I).EQ.200) THEN
ID1 = IDP(1+2*I)
IF(ID1.GE.121) ID1 = ID1-114
BRFAC = BRFAC/BRZ(ID1)
ENDIF
ENDDO
DO I=1,2
MJAC(I) = MJAC(I)*PS(I)/XMASS(I)
ENDDO
C--set up a vector with the centre of mass
PLAB(1,7) = ZERO
PLAB(2,7) = ZERO
PLAB(3,7) = HALF*PHEP(5,3)*(XX(1)-XX(2))
PLAB(4,7) = HALF*PHEP(5,3)*(XX(1)+XX(2))
PLAB(5,7) = ETOT
C--now find the denominator
CALL HWHGB1(1,1,IDRES,S1,STOT,PHEP(5,3)**2,
& (XMASS(1)+XMASS(2))**2)
CALL HWHGB1(2,1,IDRES,S2,STOT,PHEP(5,3)**2,
& (XMASS(1)+XMASS(2))**2)
DEM = ZERO
DO I=1,IMAXCH
IF(CHON(I)) THEN
C--factors due to the choice of s and t
IF(I.LE.2) THEN
G(I) = SN*S1
ELSEIF(I.LE.6) THEN
G(I) = TN*S2
ELSE
G(I) = UN*S2
ENDIF
C--factors due to the boson masses
CALL HWHGB1(ISM(IB(1),I),1,IDBOS(IB(1)),MB1,BMS2(IB(1)),
& (PHEP(5,3)-EMMIN)**2,EMMIN**2)
CALL HWHGB1(ISM(IB(2),I),1,IDBOS(IB(2)),MB2,BMS2(IB(2)),
& (PHEP(5,3)-XMASS(IB(1)))**2,EMMIN**2)
G(I) = G(I)*MB1*MB2*XF
DEM = DEM+CHNPRB(I)*G(I)
ENDIF
ENDDO
C--now combine everything to get the weight
WEIGHT = GEV2NB*TJAC*SJAC*G(ICH)/DEM/XX(1)*
& MJAC(1)*MJAC(2)*XJAC/64.0D0/PIFAC/STOT**3*BRFAC
GEN = .TRUE.
C--compute the weights for the different channels if optimizing
IF(OPTM) THEN
DO I=1,IMAXCH
IF(CHON(I)) WI(I)=G(I)*WEIGHT**2/DEM
ENDDO
ENDIF
END
CDECK ID>, HWHGB1.
*CMZ :- -02/04/01 12.11.55 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHGB1(ISM,IOPT,IDBOZ,FJAC,MBOS2,MMAX,MMIN)
C-----------------------------------------------------------------------
C Subroutine to select gauge boson mass for HWHGBP
C ISM=1 select according to Breit-Wigner for IDBOZ
C ISM=2 select according to power law for IDBOZ
C IOPT=1 return the function at MBOS2
C IOPT=2 calculate MBOS2
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER IDBOZ,ISM,IOPT
DOUBLE PRECISION MBOZ,FJAC,GBOZ,GMBOZ,MPOW,MMIN,
& MBOS2,A1,A2,A01,A02,RPOW,QPOW,HWRGEN,MMAX,EMSQ
EXTERNAL HWRGEN
C--set the boson mass
IF(IDBOZ.EQ.198.OR.IDBOZ.EQ.199) THEN
MBOZ = RMASS(198)
GBOZ = GAMW
ELSEIF(IDBOZ.EQ.200) THEN
MBOZ = RMASS(200)
GBOZ = GAMZ
ELSE
CALL HWWARN('HWHGB1',500)
ENDIF
EMSQ=MBOZ**2
GMBOZ=MBOZ*GBOZ
C--smooth a Breit-Wigner only
IF(ISM.EQ.1) THEN
A02 = ATAN((MMIN-EMSQ)/GMBOZ)
A2 = ATAN((MMAX-EMSQ)/GMBOZ)-A02
IF(IOPT.EQ.1) THEN
FJAC = GMBOZ/((MBOS2-EMSQ)**2+GMBOZ**2)/A2
ELSE
MBOS2 = EMSQ+GMBOZ*TAN(A02+A2*HWRGEN(1))
FJAC = A2*((MBOS2-EMSQ)**2+GMBOZ**2)/GMBOZ
ENDIF
C--smooth a powerlaw only
ELSEIF(ISM.EQ.2) THEN
IF(EMPOW.EQ.TWO) THEN
A01 = LOG(MMIN)
A1 = LOG(MMAX)-A01
IF(IOPT.EQ.1) THEN
FJAC = ONE/MBOS2/A1
ELSE
MBOS2 = EXP(A01+A1*HWRGEN(2))
FJAC = A1*MBOS2
ENDIF
ELSE
MPOW = -EMPOW/TWO
QPOW = ONE+MPOW
RPOW = ONE/QPOW
A01 = MMIN**QPOW
A1 = (MMAX**QPOW-A01)
IF(IOPT.EQ.1) THEN
FJAC = QPOW*MBOS2**MPOW/A1
ELSE
MBOS2 = (A01+A1*HWRGEN(2))**RPOW
FJAC = A1*RPOW/MBOS2**MPOW
ENDIF
ENDIF
ELSE
CALL HWWARN('HWHGB1',501)
ENDIF
END
CDECK ID>, HWHGB2.
*CMZ :- -02/04/01 12.11.55 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHGB2(HCS,IDP,PHOTON)
C-----------------------------------------------------------------------
C WW cross section in hadron hadron
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HCS,RCS,HWRGEN,DIST(2),CFAC,WAMP(2),S34,S56,KWW2,
& MW2,MZ2,GMW,GMZ,G(4,2),EE(4),CKM2(12),RF(2),LF(2),TAUI(2),
& CSW,CFAC1
DOUBLE COMPLEX ZH,ZCH,ZD,Z1,Z2,ZHF,P12,Z12,S134,S156,AWW,BWW,
& CWW,DWW,AWWM(2),AWWP(2),HWHEW4
INTEGER IDP(10),I,I1,I2,MAPZ(4,3),P1,P2,P3,P4
PARAMETER(Z1=(0.0D0,1.0D0),Z2=(2.0D0,0.0D0),
& ZHF=(0.5D0,0.0D0))
LOGICAL PHOTON
EXTERNAL HWRGEN,HWHEW4
COMMON/HWHEWQ/ZH(8,8),ZCH(8,8),ZD(8,8)
COMMON /HWHGBC/ MW2,MZ2,GMW,GMZ,G,EE,CKM2,RF,LF,TAUI,CSW,CFAC1
SAVE WAMP,AWWM,AWWP
SAVE MAPZ
DATA MAPZ/1,2,121,122,3,4,123,125,5,6,124,126/
IF(GENEV) THEN
RCS = HCS*HWRGEN(1)
ELSE
C--Now calculate the matrix element
Z12 = ONE/(Z2*ZD(1,2)-MZ2+Z1*GMZ)
P12 = ZHF*(Z2*ZD(1,2)-MZ2)*Z12/ZD(1,2)
S134 = ZHF*(Z2*ZD(1,2)-MZ2)*Z12/(ZD(1,3)+ZD(1,4)+ZD(3,4))
S156 = ZHF*(Z2*ZD(1,2)-MZ2)*Z12/(ZD(1,5)+ZD(1,6)+ZD(5,6))
S34 = DBLE(Z2*ZD(3,4))
S56 = DBLE(Z2*ZD(5,6))
KWW2 = ONE/((S34-MW2)**2+GMW**2)/((S56-MW2)**2+GMW**2)
& /SWEIN**4/16.0D0
DO I=1,2
DWW = LF(I)*Z12-RF(I)*P12
CWW = RF(I)*(Z12-P12)
AWW = DWW + ZHF*S134*(TAUI(I)+ONE)
BWW = DWW + ZHF*S156*(TAUI(I)-ONE)
AWWM(I) = AWW*HWHEW4(1,2,3,4,5,6)-BWW*HWHEW4(1,2,5,6,3,4)
AWWP(I) = CWW*(HWHEW4(2,1,5,6,3,4)-HWHEW4(2,1,3,4,5,6))
WAMP(I) = KWW2*DBLE( AWWM(I)*DCONJG(AWWM(I))
& +AWWP(I)*DCONJG(AWWP(I)))
ENDDO
ENDIF
HCS = ZERO
CFAC = CFAC1*81.0D0
DO I=1,2
DO I1=1,3
IDP(1) = MAPZ(I,I1)
IDP(2) = IDP(1)+6
DIST(1)=DISF(IDP(1),1)*DISF(IDP(2),2)
DIST(2)=DISF(IDP(2),1)*DISF(IDP(1),2)
DO I2=1,2
HCS = HCS+DIST(I2)*CFAC*WAMP(I)
IF(GENEV.AND.HCS.GT.RCS) THEN
C--new for spin correlations
IF(SYSPIN) THEN
NSPN = 1
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 MESPN(P1,P2,P3,P4,1,1) = (0.0D0,0.0D0)
MESPN(1,2,2,1,1,1) = AWWP(I)
MESPN(2,2,2,1,1,1) = AWWM(I)
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
ENDIF
GOTO 999
ENDIF
IDP(1) = IDP(1)+6
IDP(2) = IDP(2)-6
ENDDO
ENDDO
ENDDO
999 RETURN
END
CDECK ID>, HWHGB3.
*CMZ :- -02/04/01 12.11.55 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHGB3(HCS,IDP,PHOTON)
C-----------------------------------------------------------------------
C ZZ cross section in hadron hadron
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION AMP(2),RCS,HCS,HWRGEN,DIST(2),S34,S56,CFAC,
& MW2,MZ2,GMW,GMZ,G(4,2),EE(4),CKM2(12),RF(2),LF(2),TAUI(2),
& CSW,CFAC1
DOUBLE COMPLEX ZH,ZCH,ZD,P34,P56,Z34,Z56,Z1,ZAMP(8),S134,S156,
& HWHEW4,TAMP,Z0,AMPT(2,2,2,2),CP
INTEGER I,P1,P2,P3,IDP(10),I2,MAPZ(4,3),I1,ID(2),O(2)
EXTERNAL HWHEW4,HWRGEN
LOGICAL PHOTON
COMMON/HWHEWQ/ZH(8,8),ZCH(8,8),ZD(8,8)
COMMON /HWHGBC/ MW2,MZ2,GMW,GMZ,G,EE,CKM2,RF,LF,TAUI,CSW,CFAC1
PARAMETER(Z0=(0.0D0,0.0D0),Z1=(0.0D0,1.0D0))
SAVE AMP,ID,AMPT
SAVE MAPZ,O
DATA MAPZ/1,2,121,122,3,4,123,125,5,6,124,126/
DATA O/2,1/
C--initialisation
IF(GENEV) THEN
RCS = HCS*HWRGEN(0)
ELSE
C--Identitiys of the decay prodcucts (d=1,u=2,e=3,nu=4)
DO I=1,2
ID(I) = IDP(1+2*I)
IF(ID(I).GE.121) ID(I) = ID(I)-114
ID(I) = MOD(ID(I)+1,2)+2*INT((ID(I)-1)/6)+1
ENDDO
C--the various propagators we need
S34 = TWO*DBLE(ZD(3,4))
S56 = TWO*DBLE(ZD(5,6))
Z34 = ONE/(S34-MZ2+Z1*GMZ)
Z56 = ONE/(S56-MZ2+Z1*GMZ)
IF(PHOTON) THEN
P34 = Z34*(S34-MZ2)/S34
P56 = Z56*(S56-MZ2)/S56
ELSE
P34 = Z0
P56 = Z0
ENDIF
S134 = HALF/(ZD(1,3)+ZD(1,4)+ZD(3,4))
S156 = HALF/(ZD(1,5)+ZD(1,6)+ZD(5,6))
C--Now calculate the amplitudes
ZAMP(1)=HWHEW4(1,2,3,4,5,6)*S134+HWHEW4(1,2,5,6,3,4)*S156
ZAMP(2)=HWHEW4(1,2,4,3,5,6)*S134+HWHEW4(1,2,5,6,4,3)*S156
ZAMP(3)=HWHEW4(1,2,3,4,6,5)*S134+HWHEW4(1,2,6,5,3,4)*S156
ZAMP(4)=HWHEW4(1,2,4,3,6,5)*S134+HWHEW4(1,2,6,5,4,3)*S156
ZAMP(5)=HWHEW4(2,1,3,4,5,6)*S156+HWHEW4(2,1,5,6,3,4)*S134
ZAMP(6)=HWHEW4(2,1,4,3,5,6)*S156+HWHEW4(2,1,5,6,4,3)*S134
ZAMP(7)=HWHEW4(2,1,3,4,6,5)*S156+HWHEW4(2,1,6,5,3,4)*S134
ZAMP(8)=HWHEW4(2,1,4,3,6,5)*S156+HWHEW4(2,1,6,5,4,3)*S134
C--Now the amplitudes squared for the process
DO I=1,2
TAMP = Z0
DO P1=1,2
DO P2=1,2
DO P3=1,2
IF(PHOTON) THEN
CP = G(I,P1)**2*G(ID(1),P2)*G(ID(2),P3)*Z34*Z56
& +G(I,P1)*EE(I)*G(ID(1),P2)*EE(ID(2))*Z34*P56
& +G(I,P1)*EE(I)*EE(ID(1))*G(ID(2),P3)*P34*Z56
& +EE(I)**2*EE(ID(1))*EE(ID(2))*P34*P56
ELSE
CP = G(I,P1)**2*G(ID(1),P2)*G(ID(2),P3)*Z34*Z56
ENDIF
AMPT(I,P1,P2,P3) = ZAMP(4*P1+2*P3+P2-6)*CP
TAMP = TAMP+AMPT(I,P1,P2,P3)*DCONJG(AMPT(I,P1,P2,P3))
ENDDO
ENDDO
ENDDO
AMP(I) = HALF*DBLE(TAMP)
ENDDO
ENDIF
C--Now calculate the cross section
HCS = 0.0D0
CFAC = CFAC1
IF(ID(1).LE.2) CFAC = CFAC*THREE
IF(ID(2).LE.2) CFAC = CFAC*THREE
DO I=1,2
DO I1=1,3
IDP(1) = MAPZ(I,I1)
IDP(2) = MAPZ(I,I1)+6
DIST(1)=DISF(IDP(1),1)*DISF(IDP(2),2)
DIST(2)=DISF(IDP(2),1)*DISF(IDP(1),2)
DO I2=1,2
HCS = HCS+CFAC*DIST(I2)*AMP(I)
IF(GENEV.AND.HCS.GT.RCS) THEN
C--New for spin correlations
IF(SYSPIN) THEN
NSPN = 1
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
MESPN(P1,P2,P3,1,1,1) = AMPT(I,O(P1),O(P2),O(P3))
10 MESPN(P1,P2,P3,2,1,1) = (0.0D0,0.0D0)
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
ENDIF
GOTO 999
ENDIF
ENDDO
IDP(1) = IDP(1)+6
IDP(2) = IDP(2)-6
ENDDO
ENDDO
999 RETURN
END
CDECK ID>, HWHGB4.
*CMZ :- -02/04/01 12.11.55 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHGB4(HCS,IDP,PHOTON)
C-----------------------------------------------------------------------
C WZ cross section in hadron hadron
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION AMP(2),HCS,RCS,HWRGEN,W34,DIST(2),S34,S56,CFAC,
& TCS,S12,MW2,MZ2,GMW,GMZ,G(4,2),EE(4),CKM2(12),RF(2),LF(2),
& TAUI(2),CSW,CFAC1
DOUBLE COMPLEX ZH,ZCH,ZD,P56,Z56,Z1,Z0,S134,S156,HWHEW4,
& CP(4),W12,F(4),TAMP(2,2)
INTEGER IDP(10),I,J,I1,I2,ID,P1,P2,P3,P4
LOGICAL PHOTON
EXTERNAL HWRGEN,HWHEW4
COMMON/HWHEWQ/ZH(8,8),ZCH(8,8),ZD(8,8)
COMMON /HWHGBC/ MW2,MZ2,GMW,GMZ,G,EE,CKM2,RF,LF,TAUI,CSW,CFAC1
PARAMETER(Z0=(0.0D0,0.0D0),Z1=(0.0D0,1.0D0))
SAVE AMP,ID,TAMP
IF(GENEV) THEN
RCS = HCS*HWRGEN(1)
ELSE
C--identity of the Z decay product (d=1,u=2,e=3,nu=4)
ID = IDP(5)
IF(ID.GE.121) ID = ID-114
ID = MOD(ID+1,2)+2*INT((ID-1)/6)+1
C--the various propagators we need
S12 = TWO*DBLE(ZD(1,2))
S34 = TWO*DBLE(ZD(3,4))
S56 = TWO*DBLE(ZD(5,6))
Z56 = ONE/(S56-MZ2+Z1*GMZ)
IF(PHOTON) THEN
P56 = Z56*(S56-MZ2)/S56
ELSE
P56 = Z0
ENDIF
W12 = ONE/(S12-MW2+Z1*GMW)
S134 = HALF*W12*(S12-MW2)/(ZD(1,3)+ZD(1,4)+ZD(3,4))
S156 = HALF*W12*(S12-MW2)/(ZD(1,5)+ZD(1,6)+ZD(5,6))
W34 = ONE/((S34-MW2)**2+GMW**2)/SWEIN**2/FOUR
C--calculate the coefficents of the various amplitudes
F(1) = HWHEW4(1,2,3,4,5,6)
F(2) = HWHEW4(1,2,5,6,3,4)
F(3) = HWHEW4(1,2,3,4,6,5)
F(4) = HWHEW4(1,2,6,5,3,4)
DO I=1,2
IF(I.EQ.1) THEN
J=2
ELSE
J=1
ENDIF
CP(1) = G(J,1)*S134-TAUI(I)*CSW*W12
CP(2) = G(I,1)*S156+TAUI(I)*CSW*W12
IF(PHOTON) THEN
CP(3) = EE(J)*S134-TAUI(I)*W12
CP(4) = EE(I)*S156+TAUI(I)*W12
ELSE
CP(3) = Z0
CP(4) = Z0
ENDIF
TAMP(I,1) = F(1)*(G(ID,1)*Z56*CP(1)+EE(ID)*P56*CP(3))
& +F(2)*(G(ID,1)*Z56*CP(2)+EE(ID)*P56*CP(4))
TAMP(I,2) = F(3)*(G(ID,2)*Z56*CP(1)+EE(ID)*P56*CP(3))
& +F(4)*(G(ID,2)*Z56*CP(2)+EE(ID)*P56*CP(4))
AMP(I) = W34*DBLE( TAMP(I,1)*DCONJG(TAMP(I,1))
& +TAMP(I,2)*DCONJG(TAMP(I,2)))
ENDDO
ENDIF
C--Now calculate the cross section
HCS = ZERO
CFAC = CFAC1*9.0D0
IF(ID.LE.2) CFAC = CFAC*THREE
DO I=1,2
DO I1=1,3
IF(I.EQ.1) THEN
IDP(1) = 2*I1+5
ELSE
IDP(1) = 2*I1+6
ENDIF
DO J=1,3
IF(I.EQ.1) THEN
IDP(2) = 2*J
C**Bug fix 2/7/01 by BRW (unsquare)
TCS = VCKM(J,I1)
ELSE
IDP(2) = 2*J-1
TCS = VCKM(I1,J)
C**End bug fix
ENDIF
DIST(1) = TCS*DISF(IDP(1),1)*DISF(IDP(2),2)
DIST(2) = TCS*DISF(IDP(2),1)*DISF(IDP(1),2)
DO I2=1,2
HCS = HCS+CFAC*DIST(I2)*AMP(I)
IF(GENEV.AND.HCS.GT.RCS) GOTO 900
ENDDO
ENDDO
ENDDO
ENDDO
900 IF(GENEV.AND.I2.EQ.2) THEN
I1 = IDP(1)
IDP(1) = IDP(2)
IDP(2) = I1
ENDIF
IF(SYSPIN.AND.GENEV) THEN
NSPN = 1
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 MESPN(P1,P2,P3,P4,1,1) = (0.0D0,0.0D0)
MESPN(2 ,2 ,1 ,1 ,1,1) = TAMP(I,2)
MESPN(2 ,2 ,2 ,1 ,1,1) = TAMP(I,1)
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
ENDIF
END
CDECK ID>, HWHGB5.
*CMZ :- -02/04/01 12.11.55 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHGB5(IOPT,FJAC,T,TMAX,TMIN)
C-----------------------------------------------------------------------
C Subroutine to select t or u for HWHGBP
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER IOPT
DOUBLE PRECISION FJAC,TPOW,TMIN,T,A1,A01,RPOW,QPOW,HWRGEN,TMAX,TN,
& TX,MT
EXTERNAL HWRGEN
TPOW = -1.0D0
TX = -TMIN
TN = -TMAX
IF(TPOW.EQ.-ONE) THEN
A1 = LOG(TX/TN)
IF(IOPT.EQ.1) THEN
FJAC =-ONE/T/A1
ELSE
T = -TN*EXP(A1*HWRGEN(2))
FJAC =-A1*T
ENDIF
ELSE
QPOW = ONE+TPOW
RPOW = ONE/QPOW
A01 = TN**QPOW
A1 = (TX**QPOW-A01)
IF(IOPT.EQ.1) THEN
MT = -T
FJAC =QPOW*MT**TPOW/A1
ELSE
MT = (A01+A1*HWRGEN(2))**RPOW
T = -MT
FJAC = A1*RPOW/MT**TPOW
ENDIF
ENDIF
END
CDECK ID>, HWHGRV.
*CMZ :- -13/10/00 10:48:07 by Peter Richardson
*-- Author Kosuke Odagiri
C-----------------------------------------------------------------------
SUBROUTINE HWHGRV
C-----------------------------------------------------------------------
C Massive spin-2 resonance (massive graviton)
C Universal tensor coupling to the energy-momentum tensor is assumed
C viz L = - G(mu,nu) T(mu,nu) / GRVLAM
C If GAMGRV is zero, it is revaluated during the first run
C MEAN EVWGT = SIGMA IN NB
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,EPS,EMSQG,
& EMGMG,S,CC,SS,SS2,M1(16),M2(16),M3,M4,M5(3),M6(3),
& RNGLU,FACT,HCS,FACTR,RCS,A2,A02,QPE,SQPE,RGRV
INTEGER IMODE,JQMN,JQMX,JQ,JLMN,JLMX,JL,IQ,I,ID1,ID2,ID3,ID4,
& IADD(2,2)
LOGICAL JGLU,JPHO,JW,JZ,JH
EXTERNAL HWRGEN,HWRUNI
SAVE HCS,JQMN,JQMX,JLMN,JLMX,JGLU,JPHO,JW,JZ,JH,EMSQG,EMGMG,
& A2,A02,FACT,RNGLU,M1,M2,M3,M4,M5,M6
PARAMETER (EPS=1.D-9)
SAVE IADD
DATA IADD/0,6,6,0/
IF (GENEV) THEN
RCS=HCS*HWRGEN(0)
ELSE
IF (FSTWGT) THEN
C Set limits for which particles to include
JLMN=1
JLMX=0
JQMN=1
JQMX=0
JGLU=.FALSE.
JPHO=.FALSE.
JW =.FALSE.
JZ =.FALSE.
JH =.FALSE.
IMODE=MOD(IPROC,100)
IF (IMODE.EQ.0) THEN
JQMN=1
JQMX=6
JGLU=.TRUE.
JLMN=11
JLMX=16
JPHO=.TRUE.
JW =.TRUE.
JZ =.TRUE.
JH =.TRUE.
ELSEIF (IMODE.EQ.10) THEN
JQMN=1
JQMX=6
JGLU=.TRUE.
ELSEIF (IMODE.GT.10.AND.IMODE.LE.16) THEN
JQMN=IMODE-10
JQMX=IMODE-10
ELSEIF (IMODE.EQ.20) THEN
JGLU=.TRUE.
ELSEIF (IMODE.EQ.50) THEN
JLMN=11
JLMX=16
JPHO=.TRUE.
ELSEIF (IMODE.GT.50.AND.IMODE.LE.56) THEN
JLMN=IMODE-40
JLMX=IMODE-40
ELSEIF (IMODE.EQ.60) THEN
JPHO=.TRUE.
ELSEIF (IMODE.EQ.70) THEN
JW =.TRUE.
JZ =.TRUE.
JH =.TRUE.
ELSEIF (IMODE.EQ.71) THEN
JW =.TRUE.
ELSEIF (IMODE.EQ.72) THEN
JZ =.TRUE.
ELSEIF (IMODE.EQ.73) THEN
JH =.TRUE.
ELSE
CALL HWWARN('HWHGRV',500)
ENDIF
RNGLU=CAFAC**2-ONE
IF (GAMGRV.EQ.ZERO) THEN
C Calculate the width if GAMGRV=ZERO.
C Quarks
DO 10 JQ=1,6
RGRV=(RMASS(JQ)/EMGRV)**2
QPE=ONE-4.D0*RGRV
IF (QPE.GT.ZERO) THEN
SQPE=SQRT(QPE)
GAMGRV=GAMGRV+CAFAC*SQPE**3*(ONE+8.D0/3.D0*RGRV)/4.D0
END IF
10 CONTINUE
C Leptons
DO 20 JL=121,126
RGRV=(RMASS(JL)/EMGRV)**2
QPE=ONE-4.D0*RGRV
IF (QPE.GT.ZERO) THEN
SQPE=SQRT(QPE)
GAMGRV=GAMGRV+SQPE**3*(ONE+8.D0/3.D0*RGRV)/4.D0
END IF
20 CONTINUE
C Photons
GAMGRV=GAMGRV+HALF
C gg
GAMGRV=GAMGRV+HALF*RNGLU
C ZZ
RGRV=(RMASS(200)/EMGRV)**2
QPE=ONE-4.D0*RGRV
IF (QPE.GT.ZERO) THEN
SQPE=SQRT(QPE)
GAMGRV=GAMGRV+SQPE*
& (13.D0/12.D0+14.D0/3.D0*RGRV+4.D0*RGRV**2)/TWO
END IF
C WW
RGRV=(RMASS(198)/EMGRV)**2
QPE=ONE-4.D0*RGRV
IF (QPE.GT.ZERO) THEN
SQPE=SQRT(QPE)
GAMGRV=GAMGRV+SQPE*
& (13.D0/12.D0+14.D0/3.D0*RGRV+4.D0*RGRV**2)
END IF
C HH
RGRV=(RMASS(201)/EMGRV)**2
QPE=ONE-4.D0*RGRV
IF (QPE.GT.ZERO) THEN
SQPE=SQRT(QPE)
GAMGRV=GAMGRV+SQPE**5/12.D0/TWO
END IF
GAMGRV=GAMGRV*EMGRV**3/(GRVLAM**2*40.D0*PIFAC)
END IF
EMSQG=EMGRV**2
EMGMG=EMGRV*GAMGRV
A02=ATAN((EMMIN**2-EMSQG)/EMGMG)
A2 =ATAN((EMMAX**2-EMSQG)/EMGMG)-A02
ENDIF
EVWGT=0.
C Select a mass for the produced pair
S=EMSQG+EMGMG*TAN(A02+A2*HWRGEN(1))
EMSCA=SQRT(S)
C Select initial momentum fractions
XXMIN=S/PHEP(5,3)**2
XLMIN=LOG(XXMIN)
CALL HWSGEN(.TRUE.)
COSTH=HWRUNI(0,-ONE,ONE)
C
FACT=-GEV2NB*A2*XLMIN*S**2/(GRVLAM**4*EMGMG*16.D0*PIFAC)
CC = COSTH**2
SS = ONE-CC
SS2= SS**2
C QQ,GG -> FF
DO 110 I=1,6
JQ=I
JL=I+10
QPE=ONE-4.D0*RMASS(JQ)**2/S
IF (QPE.GT.ZERO) THEN
SQPE=SQRT(QPE)
M1(JQ)=SQPE*QPE*(ONE+CC-4.D0*QPE*SS*CC)/64.D0/CAFAC
M2(JQ)=SQPE*QPE*SS*(TWO-QPE*SS)/16.D0/RNGLU
ELSE
M1(JQ)=ZERO
M2(JQ)=ZERO
END IF
QPE=ONE-4.D0*RMASS(JL+110)**2/S
IF (QPE.GT.ZERO) THEN
SQPE=SQRT(QPE)
M1(JL)=SQPE*QPE*(ONE+CC-4.D0*QPE*SS*CC)/64.D0/CAFAC
M2(JL)=SQPE*QPE*SS*(TWO-QPE*SS)/16.D0/RNGLU
ELSE
M1(JL)=ZERO
M2(JL)=ZERO
END IF
110 CONTINUE
C QQ,GG -> BB (massless)
M3=SS*(ONE+CC)/32.D0/CAFAC
M4=(CC+SS2/8.D0)/4.D0/RNGLU
C QQ,GG -> W,Z,H
QPE=ONE-4.D0*RMASS(198)**2/S
IF (QPE.GT.ZERO) THEN
SQPE=SQRT(QPE)
M5(1)=SQPE*(ONE-.5D0*QPE*(ONE+CC)+.75D0*QPE**2*CC*SS)/8.D0/CAFAC
M6(1)=SQPE*(ONE-QPE*SS+3.D0*QPE**2*SS2/16.D0)/2.D0/RNGLU
ELSE
M5(1)=ZERO
M6(1)=ZERO
END IF
QPE=ONE-4.D0*RMASS(200)**2/S
IF (QPE.GT.ZERO) THEN
SQPE=SQRT(QPE)
M5(2)=SQPE*(ONE-.5D0*QPE*(ONE+CC)+.75D0*QPE**2*CC*SS)/16.D0/CAFAC
M6(2)=SQPE*(ONE-QPE*SS+3.D0*QPE**2*SS2/16.D0)/4.D0/RNGLU
ELSE
M5(2)=ZERO
M6(2)=ZERO
END IF
QPE=ONE-4.D0*RMASS(201)**2/S
IF (QPE.GT.ZERO) THEN
SQPE=SQRT(QPE)
M5(3)=SQPE*(QPE**2*SS*CC)/64.D0/CAFAC
M6(3)=SQPE*(QPE**2*SS2)/64.D0/RNGLU
ELSE
M5(3)=ZERO
M6(3)=ZERO
END IF
END IF
HCS=ZERO
DO 90 I=1,2
C I=1 quark first, I=2 anti-quark first
DO 80 IQ=1,6
ID1=IQ+IADD(1,I)
ID2=IQ+IADD(2,I)
IF (DISF(ID1,1).LT.EPS.OR.DISF(ID2,2).LT.EPS) GOTO 80
FACTR=FACT*DISF(ID1,1)*DISF(ID2,2)
C Quark final states
DO 60 JQ=JQMN,JQMX
ID3=JQ
ID4=JQ+6
HCS=HCS+FACTR*M1(JQ)*CAFAC
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2143,50)
GOTO 99
ENDIF
60 CONTINUE
C Lepton final states
DO 70 JL=JLMN,JLMX
ID3=110+JL
ID4=ID3+6
HCS=HCS+FACTR*M1(JL)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2134,50)
GOTO 99
ENDIF
70 CONTINUE
C Bosonic final states
IF (JPHO) THEN
ID3=59
ID4=59
HCS=HCS+FACTR*M3
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2134,50)
GOTO 99
ENDIF
END IF
IF (JW) THEN
ID3=198
ID4=199
HCS=HCS+FACTR*M5(1)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2134,50)
GOTO 99
ENDIF
END IF
IF (JZ) THEN
ID3=200
ID4=200
HCS=HCS+FACTR*M5(2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2134,50)
GOTO 99
ENDIF
END IF
IF (JH) THEN
ID3=201
ID4=201
HCS=HCS+FACTR*M5(3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2134,50)
GOTO 99
ENDIF
END IF
IF (JGLU) THEN
ID3=13
ID4=13
HCS=HCS+FACTR*M3*RNGLU
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2143,50)
GOTO 99
ENDIF
END IF
80 CONTINUE
90 CONTINUE
C Gluon initial states
ID1=13
ID2=13
IF (DISF(ID1,1).LT.EPS.OR.DISF(ID2,2).LT.EPS) GOTO 30
FACTR=FACT*DISF(ID1,1)*DISF(ID2,2)
C Quark final states
DO 40 JQ=JQMN,JQMX
ID3=JQ
ID4=JQ+6
HCS=HCS+FACTR*M2(JQ)*CAFAC
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2143,51)
GOTO 99
ENDIF
40 CONTINUE
C Lepton final states
DO 50 JL=JLMN,JLMX
ID3=110+JL
ID4=ID3+6
HCS=HCS+FACTR*M2(JL)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2134,51)
GOTO 99
ENDIF
50 CONTINUE
C Vector boson final states
IF (JPHO) THEN
ID3=59
ID4=59
HCS=HCS+FACTR*M4
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2134,51)
GOTO 99
ENDIF
END IF
IF (JW) THEN
ID3=198
ID4=199
HCS=HCS+FACTR*M6(1)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2134,51)
GOTO 99
ENDIF
END IF
IF (JZ) THEN
ID3=200
ID4=200
HCS=HCS+FACTR*M6(2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2134,51)
GOTO 99
ENDIF
END IF
IF (JH) THEN
ID3=201
ID4=201
HCS=HCS+FACTR*M6(3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2134,51)
GOTO 99
ENDIF
END IF
IF (JGLU) THEN
ID3=13
ID4=13
HCS=HCS+FACTR*M4*RNGLU
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,2143,51)
GOTO 99
ENDIF
END IF
30 CONTINUE
EVWGT=HCS
RETURN
C Generate event
99 IDN(1)=ID1
IDN(2)=ID2
IDCMF=208
CALL HWETWO(.TRUE.,.TRUE.)
IF (AZSPIN) THEN
C Calculate coefficients for constructing spin density matrices
C Set to zero for now
CALL HWVZRO(7,GCOEF)
END IF
END
CDECK ID>, HWHGUP.
*CMZ :- -16/07/02 09.40.25 by Peter Richardson
*-- Author : Peter Richardson
C----------------------------------------------------------------------
SUBROUTINE HWHGUP
C----------------------------------------------------------------------
C Use the GUPI (Generic User Process Interface) event common block
C as the hard process for HERWIG
C----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
C--Les Houches Common Block
INTEGER MAXPUP
PARAMETER(MAXPUP=100)
INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
COMMON /HEPRUP/ IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
& IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),
& XMAXUP(MAXPUP),LPRUP(MAXPUP)
INTEGER MAXNUP
PARAMETER (MAXNUP=500)
INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,
& IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP),
& ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP),
& SPINUP(MAXNUP)
C--Local variables
COMMON /HWGUP/ILOC(NMXHEP),JLOC(MAXNUP)
INTEGER ILOC,JLOC,JHEP,ID
INTEGER IHEP,IDIN(2),I,IDRES(2,MAXPUP),IRES,ICMF,ISTART,JRES,J
DOUBLE PRECISION PTEMP(5)
CHARACTER *8 DUMMY
LOGICAL HWRLOG
EXTERNAL HWRLOG
IRES = 0
C--zero the variables
DO I=1,NUP
JLOC(I) = 0
ENDDO
DO I=1,NMXHEP
ILOC(I) = 0
ENDDO
c---generate hard subprocess
C--now do the event selection bit
IF(.NOT.GENEV) THEN
IDPRUP = LPRUP(ITYPLH)
CALL UPEVNT
IF(ABS(IDWTUP).EQ.1.OR.ABS(IDWTUP).EQ.2.OR.
& ABS(IDWTUP).EQ.4) THEN
EVWGT = XWGTUP*1.0D-3
ELSEIF(ABS(IDWTUP).EQ.3) THEN
EVWGT = SIGN(ONE,XWGTUP)
ELSE
CALL HWWARN('HWHGUP',510)
ENDIF
C--check the sign of the weight
IF(IDWTUP.GT.ZERO.AND.EVWGT.LT.ZERO) CALL HWWARN('HWHGUP',520)
RETURN
ENDIF
C--update the number of events
LHNEVT(ITYPLH) = LHNEVT(ITYPLH)+1
ITYPLH = 0
C--first search to see if there are incoming beam particles in the record
I = 0
DO IHEP=1,NUP
IF(ISTUP(IHEP).EQ.-9) THEN
I=I+1
IF(I.EQ.3) THEN
CALL HWWARN('HWHGUP',102)
GOTO 999
ENDIF
IDIN(I) = IHEP
ENDIF
ENDDO
C--put the beam particles in the record
C--require the soft event
GENSOF = LHSOFT.AND.HWRLOG(PRSOF)
C--if given for event from event common block
NHEP = 0
IF(I.EQ.2) THEN
C--otherwise from the process common block
ELSEIF(I.EQ.0) THEN
DO I=1,2
CALL HWUIDT(1,IDBMUP(I),IDHW(I),DUMMY)
PHEP(1,I) = ZERO
PHEP(2,I) = ZERO
PHEP(4,I) = EBMUP(I)
PHEP(5,I) = RMASS(IDHW(I))
PHEP(3,I) = SQRT(EBMUP(I)**2-RMASS(IDHW(I))**2)
ISTHEP(I) = 100+I
ENDDO
PHEP(3,2) = -PHEP(3,2)
NHEP = NHEP+2
C--if not correct issue warning
ELSE
CALL HWWARN('HWHGUP',103)
GOTO 999
ENDIF
C--setup the centre-of-mass energy
CALL HWVSUM(4,PHEP(1,NHEP-1),PHEP(1,NHEP),PHEP(1,NHEP+1))
CALL HWUMAS(PHEP(1,NHEP+1))
JMOHEP(1,NHEP+1) = NHEP-1
JMOHEP(2,NHEP+1) = NHEP
IDHW(3) = 14
ISTHEP(3) = 103
NHEP = NHEP+1
C--search for the incoming particles in collision
I = 0
DO IHEP=1,NUP
IF(ISTUP(IHEP).EQ.-1) THEN
I = I+1
IF(I.EQ.3) THEN
CALL HWWARN('HWHGUP',100)
GOTO 999
ENDIF
IDIN(I) = IHEP
ENDIF
ENDDO
C--require two incoming particles
IF(I.NE.2) THEN
CALL HWWARN('HWHGUP',101)
GOTO 999
ENDIF
C--Now write these particles into the event record
DO I=1,2
IDHEP(NHEP+I) = IDUP(IDIN(I))
ISTHEP(NHEP+I) = 110+I
CALL HWUIDT(1,IDUP(IDIN(I)),IDHW(NHEP+I),DUMMY)
CALL HWVEQU(5,PUP(1,IDIN(I)),PHEP(1,NHEP+I))
JMOHEP(1,NHEP+I) = NHEP+3
ILOC(NHEP+I) = IDIN(I)
JLOC(I) = NHEP+I
C--special for pairtcles which are identical to the beam
DO J=1,2
IF(IDHEP(NHEP+I).EQ.IDHEP(J)) THEN
JDAHEP(1,J) = NHEP+I
JDAHEP(2,J) = NHEP+I
ENDIF
ENDDO
ENDDO
CALL HWVSUM(4,PHEP(1,NHEP+1),PHEP(1,NHEP+2),PHEP(1,NHEP+3))
CALL HWUMAS(PHEP(1,NHEP+3))
C--add the hard entry
IDHW(NHEP+3) = 15
ISTHEP(NHEP+3) = 110
JMOHEP(1,NHEP+3) = NHEP+1
JMOHEP(2,NHEP+3) = NHEP+2
JDAHEP(1,NHEP+3) = NHEP+4
NHEP = NHEP+3
ICMF = NHEP
C--now search for the outgoing particles and add them to the event record
DO I=1,NUP
C--normal outgoing particles
IF(ISTUP(I).EQ.1.AND.
& (MOTHUP(1,I).EQ.IDIN(1).OR.MOTHUP(1,I).EQ.IDIN(2))) THEN
NHEP = NHEP+1
IDHEP(NHEP) = IDUP(I)
CALL HWUIDT(1,IDUP(I),IDHW(NHEP),DUMMY)
CALL HWVEQU(5,PUP(1,I),PHEP(1,NHEP))
JMOHEP(1,NHEP) = ICMF
JMOHEP(2,NHEP) = 0
JDAHEP(2,NHEP) = 0
ILOC(NHEP) = I
JLOC(I) = NHEP
C--resonances which must have mass preserved and resonances
C-- which don't have to have mass preserved
C--for the time being we won't disguish between these two options
ELSEIF((ISTUP(I).EQ.2.OR.ISTUP(I).EQ.3).AND.
& (MOTHUP(1,I).EQ.IDIN(1).OR.MOTHUP(1,I).EQ.IDIN(2))) THEN
NHEP = NHEP+1
IDHEP(NHEP) = IDUP(I)
CALL HWUIDT(1,IDUP(I),IDHW(NHEP),DUMMY)
CALL HWVEQU(5,PUP(1,I),PHEP(1,NHEP))
IRES = IRES+1
IDRES(1,IRES) = NHEP
IDRES(2,IRES) = I
JMOHEP(1,NHEP) = ICMF
JMOHEP(2,NHEP) = 0
JDAHEP(2,NHEP) = 0
ILOC(NHEP) = I
JLOC(I) = NHEP
ELSEIF(ISTUP(I).NE.-9.AND.ISTUP(I).NE.-1.AND.ISTUP(I).NE.1.AND.
& ISTUP(I).NE.2.AND.ISTUP(I).NE.3) THEN
CALL HWWARN('HWHGUP',500)
ENDIF
ENDDO
C--Modified 2/7/03 for 2->1 processes
IF(ICMF+1.EQ.NHEP) THEN
NHEP = NHEP-1
IDHEP(NHEP) = IDHEP(NHEP+1)
IDHEP(NHEP+1) = 0
IDHW(NHEP) = IDHW(NHEP+1)
IDHW(NHEP+1) = 0
CALL HWVEQU(5,PHEP(1,NHEP+1),PHEP(1,NHEP))
JMOHEP(1,NHEP+1) = 0
JMOHEP(2,NHEP+1) = 0
JDAHEP(1,NHEP+1) = 0
JDAHEP(2,NHEP+1) = 0
JDAHEP(1,NHEP ) = NHEP
JDAHEP(2,NHEP ) = NHEP
ILOC(NHEP) = ILOC(NHEP+1)
ILOC(NHEP+1) = 0
JLOC(ILOC(NHEP)) = NHEP
JLOC(NHEP+1) = 0
DO I=1,IRES
IF(IDRES(1,IRES).EQ.NHEP+1) IDRES(1,IRES) = NHEP
ENDDO
ELSE
JDAHEP(2,ICMF) = NHEP
C--setup the status codes
ISTHEP(ICMF+1) = 113
DO IHEP=ICMF+2,NHEP
ISTHEP(IHEP) = 114
ENDDO
ENDIF
C--End mod
ISTART = ICMF-3
EMSCA = SCALUP
C--generate parton shower
CALL HWBGUP(ISTART,ICMF)
C--now we need to sort out the resonances
IF(IRES.EQ.0) RETURN
JRES = 1
35 ID = IDHEP(IDRES(1,JRES))
36 IF(JDAHEP(1,IDRES(1,JRES)).NE.0.AND.
& JDAHEP(1,IDRES(1,JRES)).NE.IDRES(1,JRES)) THEN
IF(IDHEP(IDRES(1,JRES)).EQ.94) THEN
DO IHEP=JDAHEP(1,IDRES(1,JRES)),JDAHEP(2,IDRES(1,JRES))
IF(IDHEP(IHEP).EQ.ID) THEN
IDRES(1,JRES) = IHEP
GOTO 36
ENDIF
ENDDO
ELSE
IDRES(1,JRES) = JDAHEP(1,IDRES(1,JRES))
ENDIF
GOTO 36
ENDIF
C--make a copy of this particle
IHEP = IDRES(1,JRES)
JMOHEP(1,NHEP+1) = JMOHEP(1,IDRES(1,JRES))
JMOHEP(2,NHEP+1) = JMOHEP(2,IDRES(1,JRES))
IDHEP(NHEP+1) = IDHEP(IDRES(1,JRES))
IDHW(NHEP+1) = IDHW(IDRES(1,JRES))
CALL HWVEQU(5,PHEP(1,IDRES(1,JRES)),PHEP(1,NHEP+1))
IDRES(1,JRES) = NHEP+1
JLOC(IDRES(2,JRES)) = IDRES(1,JRES)
ISTHEP(NHEP+1) = 155
NHEP = NHEP+1
C Reset colour pointers (if set)
JHEP=JMOHEP(2,IHEP)
IF (JHEP.GT.0) THEN
IF (JDAHEP(2,JHEP).EQ.IHEP) JDAHEP(2,JHEP)=NHEP
IF(.NOT.RPARTY.AND.ISTHEP(JHEP).EQ.155
& .AND.ABS(IDHEP(JHEP)).GT.1000000
& .AND.JDAHEP(2,JHEP-1).EQ.IHEP) JDAHEP(2,JHEP-1) = NHEP
ENDIF
JHEP=JDAHEP(2,IHEP)
IF (JHEP.GT.0) THEN
IF (JMOHEP(2,JHEP).EQ.IHEP) JMOHEP(2,JHEP)=NHEP
IF(.NOT.RPARTY.AND.ISTHEP(JHEP).EQ.155
& .AND.ABS(IDHEP(JHEP)).GT.1000000
& .AND.JMOHEP(2,JHEP-1).EQ.IHEP) JMOHEP(2,JHEP-1) = NHEP
ENDIF
C Relabel original track
IF (ISTHEP(IHEP).NE.120) ISTHEP(IHEP)=3
JMOHEP(2,IHEP)=JMOHEP(1,IHEP)
JDAHEP(1,IHEP)=NHEP
JDAHEP(2,IHEP)=NHEP
C--look for all the particles which have this as a mother
C--now search for the outgoing particles and add them to the event record
JDAHEP(1,NHEP) = NHEP+1
ISTHEP(NHEP+1) = 113
DO I=1,NUP
IF(ISTUP(I).EQ.1.AND.MOTHUP(1,I).EQ.IDRES(2,JRES)) THEN
NHEP = NHEP+1
IDHEP(NHEP) = IDUP(I)
CALL HWUIDT(1,IDUP(I),IDHW(NHEP),DUMMY)
CALL HWULOF(PUP(1,IDRES(2,JRES)),PUP(1,I),PHEP(1,NHEP))
CALL HWULOB(PHEP(1,IDRES(1,JRES)),PHEP(1,NHEP),PHEP(1,NHEP))
JMOHEP(1,NHEP) = IDRES(1,JRES)
JMOHEP(2,NHEP) = 0
JDAHEP(2,NHEP) = 0
ILOC(NHEP) = I
JLOC(I) = NHEP
ELSEIF((ISTUP(I).EQ.2.OR.ISTUP(I).EQ.3).AND.
& MOTHUP(1,I).EQ.IDRES(2,JRES)) THEN
NHEP = NHEP+1
IDHEP(NHEP) = IDUP(I)
CALL HWUIDT(1,IDUP(I),IDHW(NHEP),DUMMY)
CALL HWULOF(PUP(1,IDRES(2,JRES)),PUP(1,I),PHEP(1,NHEP))
CALL HWULOB(PHEP(1,IDRES(1,JRES)),PHEP(1,NHEP),PHEP(1,NHEP))
IRES = IRES+1
IDRES(1,IRES) = NHEP
IDRES(2,IRES) = I
JMOHEP(1,NHEP) = IDRES(1,JRES)
JMOHEP(2,NHEP) = 0
JDAHEP(2,NHEP) = 0
ILOC(NHEP) = I
JLOC(I) = NHEP
ENDIF
ENDDO
C--special for top decays to ensure b is second and W is first, this seems
C--to cause problems if the order is the other way around
IF(ABS(IDHEP(IDRES(1,JRES))).EQ.6.AND.
& NHEP-IDRES(1,JRES).EQ.2) THEN
IF(ABS(IDHEP(NHEP-1)).EQ.5) THEN
C--swap momenta
CALL HWVEQU(5,PHEP(1,NHEP),PTEMP)
CALL HWVEQU(5,PHEP(1,NHEP-1),PHEP(1,NHEP))
CALL HWVEQU(5,PTEMP,PHEP(1,NHEP-1))
C--swap id's
J = IDHW(NHEP)
IDHW(NHEP) = IDHW(NHEP-1)
IDHW(NHEP-1) = J
J = IDHEP(NHEP)
IDHEP(NHEP) = IDHEP(NHEP-1)
IDHEP(NHEP-1) = J
C--locations
J = ILOC(NHEP)
ILOC(NHEP) = ILOC(NHEP-1)
ILOC(NHEP-1) = J
JLOC(ILOC(NHEP-1)) = NHEP-1
JLOC(ILOC(NHEP)) = NHEP
C--resonances
DO I=1,IRES
IF(IDRES(1,I).EQ.NHEP) IDRES(1,I) = NHEP-1
ENDDO
ENDIF
ENDIF
DO IHEP=IDRES(1,JRES)+2,NHEP
ISTHEP(IHEP) = 114
ENDDO
JDAHEP(2,IDRES(1,JRES)) = NHEP
ISTART = IDRES(1,JRES)
EMSCA = PHEP(4,IDRES(1,JRES))
CALL HWBGUP(ISTART,0)
IF(JRES.NE.IRES) THEN
JRES = JRES+1
GOTO 35
ENDIF
999 RETURN
END
CDECK ID>, HWHHVY.
*CMZ :- -18/05/99 14.55.44 by Kosuke Odagiri
*-- Author : Bryan Webber
C-----------------------------------------------------------------------
SUBROUTINE HWHHVY
C-----------------------------------------------------------------------
C QCD HEAVY FLAVOUR PRODUCTION: MEAN EVWGT = SIGMA IN NB
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,HWUALF,EPS,RCS,Z1,Z2,ET,EJ,
& QM2,QPE,FACTR,S,T,U,ST,TU,US,TUS,UST,EN,RN,AF,ASTU,
& AUST,CF,CN,CS,CSTU,CSUT,CTSU,CTUS,HCS,UT,SU,GT,DIST,KK,KK2,
& YJ1INF,YJ1SUP,YJ2INF,YJ2SUP
INTEGER IQ1,IQ2,ID1,ID2
LOGICAL HQ1,HQ2
EXTERNAL HWRGEN,HWRUNI,HWUALF
SAVE HCS,ASTU,AUST,CSTU,CSUT,CTSU,CTUS,S,T,TU,U,US
PARAMETER (EPS=1.D-9)
IF (GENEV) THEN
RCS=HCS*HWRGEN(0)
ELSE
EVWGT=0.
CALL HWRPOW(ET,EJ)
KK = ET/PHEP(5,3)
KK2=KK**2
IF (KK.GE.ONE) RETURN
YJ1INF = MAX( YJMIN, LOG((ONE-SQRT(ONE-KK2))/KK) )
YJ1SUP = MIN( YJMAX, LOG((ONE+SQRT(ONE-KK2))/KK) )
IF (YJ1INF.GE.YJ1SUP) RETURN
Z1=EXP(HWRUNI(1,YJ1INF,YJ1SUP))
YJ2INF = MAX( YJMIN, -LOG(TWO/KK-ONE/Z1) )
YJ2SUP = MIN( YJMAX, LOG(TWO/KK-Z1) )
IF (YJ2INF.GE.YJ2SUP) RETURN
Z2=EXP(HWRUNI(2,YJ2INF,YJ2SUP))
XX(1)=HALF*(Z1+Z2)*KK
IF (XX(1).GE.ONE) RETURN
XX(2)=XX(1)/(Z1*Z2)
IF (XX(2).GE.ONE) RETURN
S=XX(1)*XX(2)*PHEP(5,3)**2
IQ1=MOD(IPROC,100)
QM2=RMASS(IQ1)**2
QPE=S-4.*QM2
IF (QPE.LE.ZERO) RETURN
COSTH=HALF*ET*(Z1-Z2)/SQRT(Z1*Z2*QPE)
IF (ABS(COSTH).GT.ONE) RETURN
C---REDEFINE S, T, U AS P1.P2, -P1.P3, -P1.P4
S=HALF*S
T=-HALF*(1.+Z2/Z1)*(HALF*ET)**2
U=-S-T
C---SET EMSCA TO HEAVY HARD PROCESS SCALE
EMSCA=SQRT(4.*S*T*U/(S*S+T*T+U*U))
FACTR = GEV2NB*.125*PIFAC*EJ*ET*(HWUALF(1,EMSCA)/S)**2
& *(YJ1SUP-YJ1INF)*(YJ2SUP-YJ2INF)
CALL HWSGEN(.FALSE.)
C
ST=S/T
TU=T/U
UT=U/T
US=U/S
SU=S/U
TUS=US/ST
UST=ST/TU
C
EN=CAFAC
RN=CFFAC/EN
AF=FACTR*RN
ASTU=AF*(1.-2.*UST+QM2/T)
AUST=AF*(1.-2.*TUS+QM2/S)
CF=FACTR/(2.*CFFAC)
CN=1./(EN*EN)
C-----------------------------------------------------------------------
C---Heavy flavour colour decomposition modifications below (KO)
C-----------------------------------------------------------------------
CS=(TU+UT-CN/TUS)*(HALF-TUS+QM2/S-QM2**2/U/T/TWO)
CSTU=CF*CS/(ONE+TU**2)
CSUT=CF*CS/(ONE+UT**2)
CS=(SU+US-CN/UST)*(HALF-UST+QM2/T-QM2**2/U/S/TWO)
CTSU=-FACTR*CS/(ONE+SU**2)
CTUS=-FACTR*CS/(ONE+US**2)
C-----------------------------------------------------------------------
C CS=HALF/TU-QM2/T-HALF*(QM2/T)**2
C CSTU=CF*(CS- US**2-QM2/S - CN*(CS+QM2*QM2/(S*T)))
C CS=HALF*TU-QM2/U-HALF*(QM2/U)**2
C CSUT=CF*(CS-1./ST**2-QM2/S - CN*(CS+QM2*QM2/(S*U)))
C CS=HALF*US-QM2/S-HALF*(QM2/S)**2
C CTSU=-FACTR*(CS-1./TU**2-QM2/T - CN*(CS+QM2*QM2/(S*T)))
C CS=HALF/US-QM2/U-HALF*(QM2/U)**2
C CTUS=-FACTR*(CS- ST**2-QM2/T - CN*(CS+QM2*QM2/(T*U)))
C-----------------------------------------------------------------------
ENDIF
C
HCS=0.
IQ2=IQ1+6
DO 6 ID1=1,13
IF (DISF(ID1,1).LT.EPS) GOTO 6
HQ1=ID1.EQ.IQ1.OR.ID1.EQ.IQ2
DO 5 ID2=1,13
IF (DISF(ID2,2).LT.EPS) GOTO 5
HQ2=ID2.EQ.IQ1.OR.ID2.EQ.IQ2
DIST=DISF(ID1,1)*DISF(ID2,2)
IF (HQ1.OR.HQ2) THEN
C---PROCESSES INVOLVING HEAVY CONSTITUENT
C N.B. NEGLECT CASE THAT BOTH ARE HEAVY
IF (HQ1.AND.HQ2) GOTO 5
IF (ID1.LT.7) THEN
C---QUARK FIRST
IF (ID2.LT.7) THEN
HCS=HCS+ASTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3421, 3)
GOTO 9
ENDIF
ELSEIF (ID2.NE.13) THEN
HCS=HCS+ASTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3142, 9)
GOTO 9
ENDIF
ELSE
HCS=HCS+CTSU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3142,10)
GOTO 9
ENDIF
HCS=HCS+CTUS*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3421,11)
GOTO 9
ENDIF
ENDIF
ELSEIF (ID1.NE.13) THEN
C---QBAR FIRST
IF (ID2.LT.7) THEN
HCS=HCS+ASTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,2413,17)
GOTO 9
ENDIF
ELSEIF (ID2.NE.13) THEN
HCS=HCS+ASTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,4312,20)
GOTO 9
ENDIF
ELSE
HCS=HCS+CTSU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,2413,21)
GOTO 9
ENDIF
HCS=HCS+CTUS*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,4312,22)
GOTO 9
ENDIF
ENDIF
ELSE
C---GLUON FIRST
IF (ID2.LT.7) THEN
HCS=HCS+CTSU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,2413,23)
GOTO 9
ENDIF
HCS=HCS+CTUS*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3421,24)
GOTO 9
ENDIF
ELSEIF (ID2.LT.13) THEN
HCS=HCS+CTSU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3142,25)
GOTO 9
ENDIF
HCS=HCS+CTUS*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,4312,26)
GOTO 9
ENDIF
ENDIF
ENDIF
ELSEIF (ID2.NE.13.AND.ID2.EQ.ID1+6) THEN
C---LIGHT Q-QBAR ANNIHILATION
HCS=HCS+AUST*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IQ1,IQ2,2413, 4)
GOTO 9
ENDIF
ELSEIF (ID1.NE.13.AND.ID1.EQ.ID2+6) THEN
C---LIGHT QBAR-Q ANNIHILATION
HCS=HCS+AUST*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IQ2,IQ1,3142,12)
GOTO 9
ENDIF
ELSEIF (ID1.EQ.13.AND.ID2.EQ.13) THEN
C---GLUON FUSION
HCS=HCS+CSTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IQ1,IQ2,2413,27)
GOTO 9
ENDIF
HCS=HCS+CSUT*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IQ1,IQ2,4123,28)
GOTO 9
ENDIF
ENDIF
5 CONTINUE
6 CONTINUE
EVWGT=HCS
RETURN
C---GENERATE EVENT
9 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
IF (AZSPIN) THEN
C Calculate coefficients for constructing spin density matrices
IF (IHPRO.EQ.7 .OR.IHPRO.EQ.8 .OR.
& IHPRO.EQ.15.OR.IHPRO.EQ.16) THEN
C qqbar-->gg or qbarq-->gg
UT=1./TU
GCOEF(1)=UT+TU
GCOEF(2)=-2.
GCOEF(3)=0.
GCOEF(4)=0.
GCOEF(5)=GCOEF(1)
GCOEF(6)=UT-TU
GCOEF(7)=-GCOEF(6)
ELSEIF (IHPRO.EQ.10.OR.IHPRO.EQ.11.OR.
& IHPRO.EQ.21.OR.IHPRO.EQ.22.OR.
& IHPRO.EQ.23.OR.IHPRO.EQ.24.OR.
& IHPRO.EQ.25.OR.IHPRO.EQ.26) THEN
C qg-->qg or qbarg-->qbarg or gq-->gq or gqbar-->gqbar
SU=1./US
GCOEF(1)=-(SU+US)
GCOEF(2)=0.
GCOEF(3)=2.
GCOEF(4)=0.
GCOEF(5)=SU-US
GCOEF(6)=GCOEF(1)
GCOEF(7)=-GCOEF(5)
ELSEIF (IHPRO.EQ.27.OR.IHPRO.EQ.28) THEN
C gg-->qqbar
UT=1./TU
GCOEF(1)=TU+UT
GCOEF(2)=-2.
GCOEF(3)=0.
GCOEF(4)=0.
GCOEF(5)=GCOEF(1)
GCOEF(6)=TU-UT
GCOEF(7)=-GCOEF(6)
ELSEIF (IHPRO.EQ.29.OR.IHPRO.EQ.30.OR.
& IHPRO.EQ.31) THEN
C gg-->gg
GT=S*S+T*T+U*U
GCOEF(2)=2.*U*U*T*T
GCOEF(3)=2.*S*S*U*U
GCOEF(4)=2.*S*S*T*T
GCOEF(1)=GT*GT-GCOEF(2)-GCOEF(3)-GCOEF(4)
GCOEF(5)=GT*(GT-2.*S*S)-GCOEF(2)
GCOEF(6)=GT*(GT-2.*T*T)-GCOEF(3)
GCOEF(7)=GT*(GT-2.*U*U)-GCOEF(4)
ELSE
CALL HWVZRO(7,GCOEF)
ENDIF
ENDIF
END
CDECK ID>, HWHIBG.
*CMZ :- -26/11/00 17.21.55 by Bryan Webber
*-- Author : Kosuke Odagiri & Stefano Moretti
C-----------------------------------------------------------------------
C...Generate completely differential cross section (EVWGT) in the variables
C...X(I) with I=1,3 (see below) for the processes IPROC=3410,3420,3430,3450
C...as described in the HERWIG 6 documentation file.
C...It includes interface to PDFs and takes into account color connections
C...among partons.
C
C...First release: 6-AUG-1999 by Kosuke Odagiri
C...Last modified: 6-SEP-1999 by Stefano Moretti
C
C-----------------------------------------------------------------------
SUBROUTINE HWHIBG
C-----------------------------------------------------------------------
C HIGGS + HEAVY QUARK (BOTTOM & TOP) PRODUCTION (2HDM)
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN, HWUALF, HWUAEM, EPS, HCS, RCS,
& DIST, SM, DM, QPE, PF, SQPE, EMSC2, FACTR, S, T3, U4,
& SN2TH, ME2(0:4), MW, XWEIN, PT2MIN, PT2, GQH(0:4), G1, RMMIN,
& EMG, EMQ, EMH, EMG2, EMQ2, EMH2, EMHWT, ECM_MAX, X(3), XL(3),
& XU(3), WEIGHT, ECM, SHAT, TAU, T, TL, TLMIN, TLMAX, TTMIN, TTMAX,
& CTMP, PCM, PCM2, RCM, RCM2, FKLN
INTEGER ID1, ID2, IH, IQ, I
EXTERNAL HWRGEN, HWUALF, HWUAEM
SAVE HCS,ME2,S,SHAT
PARAMETER (EPS = 1.D-9)
EQUIVALENCE (MW, RMASS(198))
PARAMETER (EMG=0.,EMG2=0.)
C...generate event.
IF (GENEV) THEN
RCS = HCS*HWRGEN(0)
ELSE
HCS = ZERO
EVWGT = ZERO
C...minimum transverse momentum.
PTMIN = ZERO
PT2MIN = PTMIN**2
C...accompanying quark.
IQ=5
IF(IHIGGS.GE.5)IQ=6
EMQ=RMASS(IQ)
EMQ2=EMQ*EMQ
C...on-shell Higgs.
EMH=RMASS(201+IHIGGS)
EMHWT=1.D0
EMH2=EMH*EMH
RMMIN=(EMQ+EMH)/2.
C...energy at hadron level.
ECM_MAX=PBEAM1+PBEAM2
S=ECM_MAX*ECM_MAX
C...phase space variables.
C...IF IQ=5 -> X(1)=(LOG(|T|)-LOG(|TMIN|))/(LOG(|TMAX|)-LOG(|TMIN|),
C...IF IQ=6 -> X(1)=COS(THETA_CM);
C...X(2)=(1./SHAT-1./ECM_MAX**2)/(1./(EMQ+EMH)**2-1./ECM_MAX**2),
C...X(3)=(LOG(TAU)-LOG(X1))/LOG(TAU),
C...phase space borders.
IF(IQ.EQ.5)XL(1)=0.
IF(IQ.EQ.6)XL(1)=-1.
XU(1)=1.
XL(2)=0.
XU(2)=1.
XL(3)=0.
XU(3)=1.
C...single phase space point.
WEIGHT=1.
DO I=1,3
X(I)=XL(I)+(XU(I)-XL(I))*HWRGEN(0)
WEIGHT=WEIGHT*ABS(XU(I)-XL(I))
END DO
C...energy at parton level.
ECM=SQRT(1./(X(2)*(1./(EMQ+EMH)**2-1./ECM_MAX**2)
& +1./ECM_MAX**2))
IF((EMH.LE.0.).OR.(EMH.GE.ECM))RETURN
SHAT=ECM*ECM
TAU=SHAT/S
C...momentum fractions X1 and X2.
XX(1)=EXP(LOG(TAU)*(1.-X(3)))
XX(2)=TAU/XX(1)
C...reconstruct polar angle.
IF(IQ.EQ.5)THEN
PCM2=((SHAT-EMQ2-EMG2)**2
& -(2.*EMQ*EMG)**2)/(4.*SHAT)
PCM=SQRT(PCM2)
RCM2=((SHAT-EMQ2-EMH2)**2
& -(2.*EMQ*EMH)**2)/(4.*SHAT)
RCM=SQRT(RCM2)
FKLN=SQRT((SHAT-(EMQ+EMG)**2)*(SHAT-(EMQ-EMG)**2))
& *SQRT((SHAT-(EMQ+EMH)**2)*(SHAT-(EMQ-EMH)**2))
TTMAX=EMG2+EMQ2-0.5D0/ECM/ECM
& *((SHAT+EMG2-EMQ2)*(SHAT+EMQ2-EMH2)
& -FKLN)
TTMIN=EMG2+EMQ2-0.5D0/ECM/ECM
& *((SHAT+EMG2-EMQ2)*(SHAT+EMQ2-EMH2)
& +FKLN)
TLMAX=LOG(ABS(TTMIN))
TLMIN=LOG(ABS(TTMAX))
TL=X(1)*(TLMAX-TLMIN)+TLMIN
T=EXP(TL)
CTMP=-T-EMG2-EMQ2
& +2.*SQRT(PCM2+EMG2)*SQRT(RCM2+EMQ2)
COSTH = CTMP/2./PCM/RCM
ELSE IF(IQ.EQ.6)THEN
COSTH = X(1)
END IF
SN2TH = 0.25D0 - 0.25D0*COSTH**2
IF((0.25D0-RMMIN**2/SHAT).LT.0.)THEN
EVWGT=0.
RETURN
END IF
T3 = ( SQRT(0.25D0-RMMIN**2/SHAT) * COSTH - HALF ) * SHAT
U4 = - T3 - SHAT
EMSC2 = TWO*SHAT*T3*U4/(SHAT**2+T3**2+U4**2)
EMSCA = SQRT( EMSC2 )
CALL HWSGEN(.FALSE.)
EVWGT = ZERO
XWEIN = TWO * SWEIN
FACTR = GEV2NB*PIFAC*HWUAEM(EMSC2)/XWEIN/SHAT
& *HWUALF(1,EMSCA)/TWO/CAFAC/2.
C...Jacobians from COSTH to X(1).
IF(IQ.EQ.5)THEN
FACTR=FACTR*(TLMAX-TLMIN)/2./PCM/RCM*T
ELSE
CONTINUE
END IF
C...Jacobians from X1,X2 to X(2),X(3).
FACTR=FACTR/S*(-LOG(TAU))*(1./(EMQ+EMH)**2-1./ECM_MAX**2)
C...CKM mixing top/bottom quark.
c bug fix 20/05/01 SM.
IF(IQ.EQ.6)FACTR=FACTR*VCKM(3,3)
c end of bug fix.
C...Higgs resonance.
FACTR=FACTR*EMHWT
C...constant weight.
FACTR=FACTR*WEIGHT
C...SM/MSSM couplings.
IF (IHIGGS.EQ.0) THEN
GQH(0)=(RMASS(5)/MW)**2/TWO
ELSE
G1 = (RMASS(5)/MW/COSB)**2/TWO
GQH(1) = G1*SINA**2
GQH(2) = G1*COSA**2
GQH(3) = G1*SINB**2
GQH(4) = GQH(3)+(RMASS(6)/MW/TANB)**2/TWO
END IF
C...Matrix elements.
DO IH = 0,4
ME2(IH) = ZERO
END DO
c
c g b -> Q H
c
ID1 = 5
IH=IHIGGS
IF(IHIGGS.NE.0)IH=IHIGGS-1
IF (IH.EQ.4) ID1 = 6
ID2 = 201+IHIGGS
SM = RMASS(ID1)+RMASS(ID2)
QPE = SHAT-SM**2
IF (QPE.GT.ZERO) THEN
DM = RMASS(ID1)-RMASS(ID2)
QPE = QPE*(SHAT-DM**2)/SHAT
END IF
PT2 = QPE*SN2TH
IF (PT2.GT.PT2MIN) THEN
SQPE = SQRT(QPE*SHAT)
PF = SQPE/SHAT
T3 = (SQPE*COSTH - SHAT - SM*DM) / TWO
U4 = - T3 - SHAT
ME2(IH) = FACTR*PF * GQH(IH) *
& U4/SHAT/T3*(-U4+TWO*SM*DM/T3/U4*SHAT*PT2)
ELSE
ME2(IH) = ZERO
END IF
END IF
HCS = ZERO
c
c g b
ID1 = 13
ID2 = 5
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = DISF(ID1,1)*DISF(ID2,2)*S*SHAT
DO IH = 0,3
HCS = HCS + DIST*ME2(IH)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(5,IHIGGS+201,2314,1)
GOTO 9
ENDIF
END DO
HCS = HCS + DIST*ME2(4)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(6,207,2314,1)
GOTO 9
ENDIF
END IF
c _
c g b
ID1 = 13
ID2 = 11
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = DISF(ID1,1)*DISF(ID2,2)*S*SHAT
DO IH = 0,3
HCS = HCS + DIST*ME2(IH)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(11,IHIGGS+201,3124,1)
GOTO 9
ENDIF
END DO
HCS = HCS + DIST*ME2(4)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(12,206,3124,1)
GOTO 9
ENDIF
END IF
c
c b g
ID1 = 5
ID2 = 13
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = DISF(ID1,1)*DISF(ID2,2)*S*SHAT
DO IH = 0,3
HCS = HCS + DIST*ME2(IH)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IHIGGS+201,5,4132,1)
GOTO 9
ENDIF
END DO
HCS = HCS + DIST*ME2(4)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(207,6,4132,1)
GOTO 9
ENDIF
END IF
c _
c b g
ID1 = 11
ID2 = 13
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = DISF(ID1,1)*DISF(ID2,2)*S*SHAT
DO IH = 0,3
HCS = HCS + DIST*ME2(IH)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IHIGGS+201,11,2431,1)
GOTO 9
ENDIF
END DO
HCS = HCS + DIST*ME2(4)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(206,12,2431,1)
GOTO 9
ENDIF
END IF
EVWGT = HCS
RETURN
C---GENERATE EVENT
9 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
IF (AZSPIN) THEN
C Calculate coefficients for constructing spin density matrices
C Set to zero for now
CALL HWVZRO(7,GCOEF)
END IF
END
CDECK ID>, HWHIBK.
*CMZ :- -26/11/00 17.21.55 by Bryan Webber
*-- Author : Stefano Moretti
C-----------------------------------------------------------------------
C...Generate completely differential cross section (EVWGT) in the variables
C...X(I) with I=1,4 (see below) for the process IPROC=3350, as described
C...in the HERWIG 6 documentation file.
C...It includes interface to PDFs and takes into account color connections
C...among partons.
C
C...First release: 8-APR-1999 by Stefano Moretti
C
SUBROUTINE HWHIBK
C-----------------------------------------------------------------------
C ASSOCIATE PRODUCTION W+H- FROM QUARK FUSION (2HDM)
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER I,J,IHEL
DOUBLE PRECISION EMH,EMHWT,RMW,EMW
DOUBLE PRECISION RMH
DOUBLE PRECISION X(4),XL(4),XU(4)
DOUBLE PRECISION CT,ST
DOUBLE PRECISION P1(0:3),P2(0:3),P3(0:3),P4(0:3)
DOUBLE PRECISION ECM_MAX,ECM,SHAT,S,TAU
DOUBLE PRECISION EMIN,PCM2,PCM,RCM2,RCM
DOUBLE PRECISION M2,M2L,M2T
DOUBLE PRECISION ALPHA,EMSC2
DOUBLE PRECISION HWRGEN,HWUAEM
DOUBLE PRECISION RNMIN,RNMAX,THETA_MIN,THETA_MAX
DOUBLE PRECISION EPS,HCS,RCS,FACT,DIST
DOUBLE PRECISION WEIGHT
DOUBLE PRECISION VSAVE
SAVE EMH,EMW,HCS,M2,M2L,M2T,FACT,S,CT
LOGICAL HWRLOG
EXTERNAL HWHIGM,HWRGEN,HWUAEM,HWH2BK,HWETWO,HWRLOG
PARAMETER (EPS=1.D-9)
EQUIVALENCE (RMW ,RMASS(198))
EQUIVALENCE (RMH ,RMASS(206))
IF(GENEV)THEN
RCS=HCS*HWRGEN(0)
ELSE
HCS=0.
EVWGT=0.
C...assign final state masses.
EMH=RMH
EMHWT=1.D0
C...energy at hadron level.
ECM_MAX=PBEAM1+PBEAM2
S=ECM_MAX*ECM_MAX
C...phase space variables.
C...X(1)=COS(THETA_CM),
C...X(2)=(1./SHAT-1./ECM_MAX**2)/(1./(EMW+EMH)**2-1./ECM_MAX**2),
C...X(3)=(LOG(TAU)-LOG(X1))/LOG(TAU),
C...X(4)=(THETA-THETA_MIN)/(THETA_MAX-THETA_MIN),
C...where THETA=ATAN((EMW*EMW-RMW*RMW)/RMW/GAMW);
C...phase space borders.
XL(1)=-1.
XU(1)=1.
XL(2)=0.
XU(2)=1.
XL(3)=0.
XU(3)=1.
XL(4)=0.
XU(4)=1.
C...single phase space point.
WEIGHT=1.
DO I=1,4
X(I)=XL(I)+(XU(I)-XL(I))*HWRGEN(0)
WEIGHT=WEIGHT*ABS(XU(I)-XL(I))
END DO
C...resonant boson mass (limits to -10*W-widths to improve efficiency).
RNMIN=RMW-GAMMAX*GAMW
THETA_MIN=ATAN((RNMIN*RNMIN-RMW*RMW)/RMW/GAMW)
RNMAX=ECM_MAX-EMH
THETA_MAX=ATAN((RNMAX*RNMAX-RMW*RMW)/RMW/GAMW)
EMW=SQRT((TAN(X(4)*(THETA_MAX-THETA_MIN)+THETA_MIN))
& *RMW*GAMW+RMW*RMW)
C...energy at parton level.
ECM=SQRT(1./(X(2)*(1./(EMW+EMH)**2-1./ECM_MAX**2)
& +1./ECM_MAX**2))
IF((EMH.LE.0.).OR.(EMH.GE.ECM))RETURN
SHAT=ECM*ECM
TAU=SHAT/S
C...momentum fractions X1 and X2.
XX(1)=EXP(LOG(TAU)*(1.-X(3)))
XX(2)=TAU/XX(1)
C...two particle kinematics.
CT=X(1)
IF(HWRLOG(HALF))THEN
ST=+SQRT(1.-CT*CT)
ELSE
ST=-SQRT(1.-CT*CT)
END IF
RCM2=((SHAT-EMW*EMW-EMH*EMH)**2
& -(2.*EMW*EMH)**2)/(4.*SHAT)
RCM=SQRT(RCM2)
P3(0)=SQRT(RCM2+EMW*EMW)
P3(1)=0.
P3(2)=RCM*ST
P3(3)=RCM*CT
P4(0)=SQRT(RCM2+EMH*EMH)
P4(1)=0.
P4(2)=-RCM*ST
P4(3)=-RCM*CT
C...incoming parton: massless.
EMIN=0.
C...initial state momenta in the partonic CM.
PCM2=((SHAT-EMIN*EMIN-EMIN*EMIN)**2
& -(2.*EMIN*EMIN)**2)/(4.*SHAT)
PCM=SQRT(PCM2)
P1(0)=SQRT(PCM2+EMIN*EMIN)
P1(1)=0.
P1(2)=0.
P1(3)=PCM
P2(0)=SQRT(PCM2+EMIN*EMIN)
P2(1)=0.
P2(2)=0.
P2(3)=-PCM
C...color structured ME summed/averaged over final/initial spins and colors.
CALL HWH2BK(P1,P2,P3,P4,EMW,EMH,M2,M2L,M2T)
IF(M2.LE.0.)RETURN
C...charge conjugation.
M2=M2*2.
M2L=M2L*2.
M2T=M2T*2.
C...constant factors: phi along beam and conversion GeV^2->nb.
FACT=2.*PIFAC*GEV2NB
C...Jacobians from X1,X2 to X(2),X(3)
FACT=FACT/S*(-LOG(TAU))*(1./(EMW+EMH)**2-1./ECM_MAX**2)
C...phase space Jacobians, pi's and flux.
FACT=FACT/64./PIFAC/PIFAC*RCM/PCM
C...hard scale.
EMSCA=RMW+RMH
C...EW couplings.
EMSC2=EMSCA*EMSCA
ALPHA=HWUAEM(EMSC2)
FACT=FACT*(PIFAC*ALPHA/SWEIN/RMW/RMW/SQRT(2.))**2
C...Higgs resonance.
FACT=FACT*EMHWT
C...vector boson resonance.
FACT=FACT*(THETA_MAX-THETA_MIN)/PIFAC
C...constant weight.
FACT=FACT*WEIGHT
END IF
C...set up PDFs.
HCS=0.
CALL HWSGEN(.FALSE.)
DO I=5,11,6
IF(DISF(I,1).LT.EPS)THEN
GOTO 200
END IF
IF(I.LE.6)J=I+6
IF(I.GE.7)J=I-6
IF(DISF(J,2).LT.EPS)THEN
GOTO 200
END IF
DIST=DISF(I,1)*DISF(J,2)*S
C...no need to set up color connections.
HCS=HCS+M2*DIST*FACT
IF(GENEV.AND.HCS.GT.RCS)THEN
C...generate event.
IDN(1)=I
IDN(2)=J
IDN(3)=NINT(198.+HWRGEN(0))
IF(IDN(3).EQ.198)IDN(4)=207
IF(IDN(3).EQ.199)IDN(4)=206
C...set up status and IDs: use HWETWO.
COSTH=CT
IDCMF=15
ICO(1)=2
ICO(2)=1
ICO(3)=3
ICO(4)=4
C...trick HWETWO in using off-shell V mass
VSAVE=RMASS(IDN(3))
RMASS(IDN(3))=EMW
C-- BRW fix 27/8/04: avoid double smearing of V mass
CALL HWETWO(.FALSE.,.TRUE.)
RMASS(IDN(3))=VSAVE
IF(AZSPIN)THEN
C...set to zero the coefficients of the spin density matrices.
CALL HWVZRO(7,GCOEF)
END IF
C...calculates approximately polarized decay matrix of gauge boson.
IF(IERROR.NE.0)RETURN
IHEL=0
IF(ICHRG(I)*ICHRG(IDN(3)).LT.0.D0)IHEL=1
IF(M2L.LT.0.)M2L=0.
IF(M2T.LT.0.)M2T=0.
RHOHEP(2,NHEP-1)=M2L/M2
RHOHEP(1,NHEP-1)=M2T/M2*(1-IHEL)
RHOHEP(3,NHEP-1)=M2T/M2*( IHEL)
RETURN
END IF
200 CONTINUE
END DO
EVWGT=HCS
END
CDECK ID>, HWHIG1.
*CMZ :- -23/08/94 13.22.29 by Mike Seymour
*-- Author : Ulrich Baur & Nigel Glover, adapted by Ian Knowles
*- Split in 3 files by M. Kirsanov
C-----------------------------------------------------------------------
FUNCTION HWHIG1(S,T,U,EH2,EQ2,I,J,K,I1,J1,K1)
C-----------------------------------------------------------------------
C Basic matrix elements for Higgs + jet production; used in HWHIGA
C-----------------------------------------------------------------------
IMPLICIT NONE
DOUBLE COMPLEX HWHIG1,BI(4),CI(7),DI(3)
DOUBLE PRECISION S,T,U,EH2,EQ2,S1,T1,U1,ONE,TWO,FOUR,HALF
INTEGER I,J,K,I1,J1,K1
COMMON/CINTS/BI,CI,DI
PARAMETER (ONE =1.D0, TWO =2.D0, FOUR =4.D0, HALF =0.5D0)
C-----------------------------------------------------------------------
C +++ helicity amplitude for: g+g --> g+H
C-----------------------------------------------------------------------
S1=S-EH2
T1=T-EH2
U1=U-EH2
HWHIG1=EQ2*FOUR*DSQRT(TWO*S*T*U)*(
& -FOUR*(ONE/(U*T)+ONE/(U*U1)+ONE/(T*T1))
& -FOUR*((TWO*S+T)*BI(K)/U1**2+(TWO*S+U)*BI(J)/T1**2)/S
& -(S-FOUR*EQ2)*(S1*CI(I1)+(U-S)*CI(J1)+(T-S)*CI(K1))/(S*T*U)
& -8.D0*EQ2*(CI(J1)/(T*T1)+CI(K1)/(U*U1))
& +HALF*(S-FOUR*EQ2)*(S*T*DI(K)+U*S*DI(J)-U*T*DI(I))/(S*T*U)
& +FOUR*EQ2*DI(I)/S
& -TWO*(U*CI(K)+T*CI(J)+U1*CI(K1)+T1*CI(J1)-U*T*DI(I))/S**2 )
END
CDECK ID>, HWHIG2.
*CMZ :- -23/08/94 13.22.29 by Mike Seymour
*-- Author : Ulrich Baur & Nigel Glover, adapted by Ian Knowles
C-----------------------------------------------------------------------
FUNCTION HWHIG2(S,T,U,EH2,EQ2,I,J,K,I1,J1,K1)
C-----------------------------------------------------------------------
C Basic matrix elements for Higgs + jet production; used in HWHIGA
C-----------------------------------------------------------------------
IMPLICIT NONE
DOUBLE COMPLEX HWHIG2,BI(4),CI(7),DI(3)
DOUBLE PRECISION S,T,U,EH2,EQ2,S1,T1,U1,ONE,TWO,FOUR,HALF
INTEGER I,J,K,I1,J1,K1
COMMON/CINTS/BI,CI,DI
PARAMETER (ONE =1.D0, TWO =2.D0, FOUR =4.D0, HALF =0.5D0)
C-----------------------------------------------------------------------
C ++- helicity amplitude for: g+g --> g+H
C-----------------------------------------------------------------------
S1=S-EH2
T1=T-EH2
U1=U-EH2
HWHIG2=EQ2*FOUR*DSQRT(TWO*S*T*U)*(FOUR*EH2
& +(EH2-FOUR*EQ2)*(S1*CI(4)+T1*CI(5)+U1*CI(6))
& -HALF*(EH2-FOUR*EQ2)*(S*T*DI(3)+U*S*DI(2)+U*T*DI(1)) )/(S*T*U)
END
CDECK ID>, HWHIG5.
*CMZ :- -23/08/94 13.22.29 by Mike Seymour
*-- Author : Ulrich Baur & Nigel Glover, adapted by Ian Knowles
C-----------------------------------------------------------------------
FUNCTION HWHIG5(S,T,U,EH2,EQ2,I,J,K,I1,J1,K1)
C-----------------------------------------------------------------------
C Basic matrix elements for Higgs + jet production; used in HWHIGA
C-----------------------------------------------------------------------
IMPLICIT NONE
DOUBLE COMPLEX HWHIG5,BI(4),CI(7),DI(3)
DOUBLE PRECISION S,T,U,EH2,EQ2,ONE,TWO,FOUR,HALF
INTEGER I,J,K,I1,J1,K1
COMMON/CINTS/BI,CI,DI
PARAMETER (ONE =1.D0, TWO =2.D0, FOUR =4.D0, HALF =0.5D0)
C-----------------------------------------------------------------------
C Amplitude for: q+qbar --> g+H
C-----------------------------------------------------------------------
HWHIG5=DCMPLX(TWO)+DCMPLX(TWO*S/(S-EH2))*BI(I)
& +DCMPLX(FOUR*EQ2-U-T)*CI(K)
END
CDECK ID>, HWHIBQ.
*CMZ :- -30/06/01 18.40.33 by Stefano Moretti
*-- Author : Stefano Moretti
C-----------------------------------------------------------------------
C...Generate completely differential cross section (EVWGT) in the variables
C...X(I) with I=1,6 (see below) for the process IPROC=3500, as described
C...in the HERWIG 6 documentation file.
C...It includes interface to PDFs and takes into account color connections
C...among partons.
C
C...First release: 12-APR-2000 by Stefano Moretti
C
C-----------------------------------------------------------------------
SUBROUTINE HWHIBQ
C-----------------------------------------------------------------------
C PRODUCTION OF MSSM CHARGED HIGGSES FROM B-QUARK+LIGHT-QUARK FUSION
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER I,J,K,L,M,N
INTEGER II,JJ,ITMP
INTEGER IFL,IRES
DOUBLE PRECISION EMQ,ENQ,EMQH,EMB,EMH,EMHWT,EMT,EMW
DOUBLE PRECISION EMH01,EMH02,EMH03
DOUBLE PRECISION WCKM,CKM,GAMT
DOUBLE PRECISION X(6),XL(6),XU(6)
DOUBLE PRECISION Q3(0:3),Q35(0:3)
DOUBLE PRECISION Q1(5),Q2(5),H(5)
DOUBLE PRECISION CT4,ST4,CT3,ST3,CF3,SF3,RQ42,RQ4,RQ32,RQ3,PQ3
DOUBLE PRECISION P1(0:3),P2(0:3),P3(0:3),P4(0:3),P5(0:3)
DOUBLE PRECISION ECM_MAX,ECM,SHAT,S,TAU
DOUBLE PRECISION XTMP
DOUBLE PRECISION EMIN1,EMIN2,PCM2,PCM
DOUBLE PRECISION M2B,M2BBAR
DOUBLE PRECISION ALPHA,EMSC2
DOUBLE PRECISION HWRGEN,HWUAEM
DOUBLE PRECISION PHI,CPHI,SPHI,ROT(3,3)
DOUBLE PRECISION QAUX(0:3)
DOUBLE PRECISION EPS,HCS,RCS,FACT,DIST
DOUBLE PRECISION WEIGHT
SAVE HCS,M2B,M2BBAR,FACT,S,WCKM,P3,P4,P5
LOGICAL HWRLOG
EXTERNAL HWRGEN,HWUAEM,HWH2BH,HWEONE,HWRLOG,
& HWUMAS,HWULOB
EQUIVALENCE (EMB,RMASS(5)),(EMT,RMASS(6))
EQUIVALENCE (EMW,RMASS(198))
EQUIVALENCE (EMH01,RMASS(204)),
& (EMH02,RMASS(203)),
& (EMH03,RMASS(205))
EQUIVALENCE (CKM,VCKM(3,3))
PARAMETER (EPS=1.D-9)
IF(GENEV)THEN
RCS=HCS*HWRGEN(0)
ELSE
HCS=0.
EVWGT=0.
C...assign final state masses.
EMQ=0.
ENQ=0
EMH=RMASS(206)
EMHWT=1.
C...assign top width.
GAMT=HBAR/RLTIM(6)
C...energy at hadron level.
ECM_MAX=PBEAM1+PBEAM2
S=ECM_MAX*ECM_MAX
C...phase space variables.
C...X(1)=(EMQH-EMQ-EMH)/(ECM-EMQ-ENQ-EMH),
C...X(2)=1/[-(P2-P3)^2+MW^2],X(3)=COS(THETA4_CM_35),X(4)=FI4_CM_35,
C...X(5)=(1./SHAT-1./ECM_MAX**2)/(1./(EMQ+ENQ+EMH)**2-1./ECM_MAX**2),
C...X(6)=(LOG(TAU)-LOG(X1))/LOG(TAU);
C...phase space borders.
XL(1)=0.
XU(1)=1.
c...for XL(2),XU(2) see below (non constant).
XL(3)=-1.
XU(3)=1.
XL(4)=0.
XU(4)=2.*PIFAC
XL(5)=0.
XU(5)=1.
XL(6)=0.
XU(6)=1.
C...single phase space point.
100 CONTINUE
WEIGHT=1.
DO I=1,6
IF(I.EQ.2)GOTO 125
X(I)=XL(I)+(XU(I)-XL(I))*HWRGEN(0)
WEIGHT=WEIGHT*ABS(XU(I)-XL(I))
125 CONTINUE
END DO
C...energy at parton level.
ECM=SQRT(1./(X(5)*(1./(EMQ+ENQ+EMH)**2-1./ECM_MAX**2)
& +1./ECM_MAX**2))
IF((EMH.LE.0.).OR.(EMH.GE.ECM))RETURN
SHAT=ECM*ECM
TAU=SHAT/S
C...momentum fractions X1 and X2.
XX(1)=EXP(LOG(TAU)*(1.-X(6)))
XX(2)=TAU/XX(1)
C...incoming partons massless.
EMIN1=0.
EMIN2=0.
C...initial state momenta in the partonic CM.
PCM2=((SHAT-EMIN1*EMIN1-EMIN2*EMIN2)**2
& -(2.*EMIN1*EMIN2)**2)/(4.*SHAT)
PCM=SQRT(PCM2)
C...three particle kinematics.
EMQH=X(1)*(ECM-EMQ-ENQ-EMH)+EMQ+EMH
RQ42=((ECM*ECM-ENQ*ENQ-EMQH*EMQH)**2-(2.*ENQ*EMQH)**2)/
& (4.*ECM*ECM)
IF(RQ42.LT.0.)THEN
GOTO 100
ELSE
RQ4=SQRT(RQ42)
ENDIF
C...X(2): integrate over W propagator.
XL(2)=1./(4.*SQRT(PCM2+EMIN2*EMIN2)*RQ4+EMW*EMW)
XU(2)=1./(EMW*EMW)
X(2)=XL(2)+(XU(2)-XL(2))*HWRGEN(0)
WEIGHT=WEIGHT*ABS(XU(2)-XL(2))
XTMP=1./X(2)
XTMP=(XTMP-EMW*EMW)/2./SQRT(PCM2+EMIN2*EMIN2)
CT4=1.-XTMP/((SHAT-EMQH*EMQH+2.*ENQ*ENQ)/(2.*ECM))
IF(CT4.GT.+1.)CT4=+1.
IF(CT4.LT.-1.)CT4=-1.
IF(HWRLOG(HALF))THEN
ST4=+SQRT(1.-CT4*CT4)
ELSE
ST4=-SQRT(1.-CT4*CT4)
END IF
CT3=X(3)
ST3=SQRT(1.-CT3*CT3)
CF3=COS(X(4))
SF3=SIN(X(4))
P4(1)=0.
P4(2)=-RQ4*ST4
P4(3)=-RQ4*CT4
P4(0)=SQRT(RQ42+ENQ*ENQ)
DO I=1,3
Q35(I)=-P4(I)
END DO
Q35(0)=SQRT(RQ42+EMQH*EMQH)
RQ32=((EMQH*EMQH-EMH*EMH-EMQ*EMQ)**2-(2.*EMH*EMQ)**2)/
& (4.*EMQH*EMQH)
IF(RQ32.LT.0.)THEN
GOTO 100
ELSE
RQ3=SQRT(RQ32)
ENDIF
Q3(1)=RQ3*ST3*CF3
Q3(2)=RQ3*ST3*SF3
Q3(3)=RQ3*CT3
Q3(0)=SQRT(RQ32+EMQ*EMQ)
PQ3=0.
DO I=1,3
PQ3=PQ3+Q35(I)*Q3(I)
END DO
P3(0)=(Q35(0)*Q3(0)+PQ3)/EMQH
P5(0)=Q35(0)-P3(0)
DO I=1,3
P3(I)=Q3(I)+Q35(I)*(P3(0)+Q3(0))/(Q35(0)+EMQH)
P5(I)=Q35(I)-P3(I)
END DO
C...initial state.
P1(0)=SQRT(PCM2+EMIN1*EMIN1)
P1(1)=0.
P1(2)=0.
P1(3)=PCM
P2(0)=SQRT(PCM2+EMIN2*EMIN2)
P2(1)=0.
P2(2)=0.
P2(3)=-PCM
C...option: top diagram removed if can be resonant to avoid double counting.
IRES=1
C IF((EMT-EMB-EMH).GE.0.)IRES=0
C...color structured ME summed/averaged over final/initial spins and colors.
C...IFL=+1 selects b.
IFL=+1
CALL HWH2BH(P1,P2,P3,P4,P5,EMW,EMH,EMH01,EMH02,EMH03,EMB,EMT,
& IFL,IRES,CKM,GAMT,M2B)
C...IFL=-1 selects b-bar.
IFL=-1
CALL HWH2BH(P1,P2,P3,P4,P5,EMW,EMH,EMH01,EMH02,EMH03,EMB,EMT,
& IFL,IRES,CKM,GAMT,M2BBAR)
C...constant factors: phi along beam and conversion GeV^2->nb.
FACT=2.*PIFAC*GEV2NB
C...Jacobians from X1,X2 to X(5),X(6)
FACT=FACT/S*(-LOG(TAU))*(1./(EMQ+ENQ+EMH)**2-1./ECM_MAX**2)
C...phase space Jacobians, pi's and flux.
FACT=FACT*RQ3*RQ4/PCM/32./(2.*PIFAC)**5
& *(ECM-EMQ-ENQ-EMH)
FACT=FACT/2./P2(0)/P4(0)
FACT=FACT*(2.*P2(0)*P4(0)*(1.-CT4)+EMW*EMW)**2
C...EW couplings.
EMSCA=EMQ+ENQ+EMH
EMSC2=EMSCA*EMSCA
ALPHA=HWUAEM(EMSC2)
FACT=FACT*64.*PIFAC**3*ALPHA**3/4./SWEIN/SWEIN/SWEIN/EMW/EMW
C...Higgs resonance.
FACT=FACT*EMHWT
C...constant weight.
FACT=FACT*WEIGHT
END IF
C...set up PDFs.
HCS=0.
CALL HWSGEN(.FALSE.)
DO I=1,12
IF(DISF(I,1).LT.EPS)THEN
GOTO 200
END IF
DO J=1,12
IF(DISF(J,2).LT.EPS)THEN
GOTO 175
END IF
IF((I.NE.5).AND.(I.NE.11).AND.
& (J.NE.5).AND.(J.NE.11))THEN
GOTO 150
END IF
II=J
IF((I.NE.5).AND.(I.NE.11))II=I
IF(II.GT.6)II=II-6
ITMP=II
II=(II+1)/2
DIST=0.
DO JJ=1,3
WCKM=VCKM(II,JJ)
IF((ITMP.EQ.5).AND.(II.EQ.3).AND.(JJ.EQ.3))WCKM=0.
DIST=DIST+DISF(I,1)*DISF(J,2)*WCKM*S
END DO
IF((I.LE.6).AND.(J.LE.6))THEN
HCS=HCS+M2B*DIST*FACT
ELSE IF((I.LE.6).AND.(J.GE.7))THEN
IF(J.NE.11)HCS=HCS+M2B*DIST*FACT
IF(J.EQ.11)HCS=HCS+M2BBAR*DIST*FACT
ELSE IF((I.GE.7).AND.(J.LE.6))THEN
IF(I.NE.11)HCS=HCS+M2B*DIST*FACT
IF(I.EQ.11)HCS=HCS+M2BBAR*DIST*FACT
ELSE IF((I.GE.7).AND.(J.GE.7))THEN
HCS=HCS+M2BBAR*DIST*FACT
END IF
IF(GENEV.AND.HCS.GT.RCS)THEN
C...generate event.
IDN(1)=I
IDN(2)=J
IF((I.EQ.5).OR.(I.EQ.11))THEN
K=I
L=J+(-1)**(J+1)
IDN(3)=K
IDN(4)=L
ELSE
L=I+(-1)**(J+1)
K=J
IDN(3)=L
IDN(4)=K
END IF
IF(IDN(2).EQ.IDN(4))THEN
IDN(5)=
& NINT(198.5-.1667*FLOAT(ICHRG(IDN(1))-ICHRG(IDN(3))))
ELSE
IDN(5)=
& NINT(198.5-.1667*FLOAT(ICHRG(IDN(2))-ICHRG(IDN(4))))
END IF
IDN(5)=IDN(5)+8
C...sets up incoming status and IDs only for 2->1: use HWEONE.
IDCMF=15
CALL HWEONE
JDAHEP(1,NHEP)=NHEP+1
JDAHEP(2,NHEP)=NHEP+3
JMOHEP(1,NHEP+1)=NHEP
JMOHEP(1,NHEP+2)=NHEP
JMOHEP(1,NHEP+3)=NHEP
C...randomly rotate final state momenta around beam axis.
PHI=2.*PIFAC*HWRGEN(0)
CPHI=COS(PHI)
SPHI=SIN(PHI)
ROT(1,1)=+CPHI
ROT(1,2)=+SPHI
ROT(1,3)=0.
ROT(2,1)=-SPHI
ROT(2,2)=+CPHI
ROT(2,3)=0.
ROT(3,1)=0.
ROT(3,2)=0.
ROT(3,3)=1.
DO L=1,3
DO M=1,3
QAUX(M)=0.
DO N=1,3
IF(L.EQ.1)QAUX(M)=QAUX(M)+ROT(M,N)*P3(N)
IF(L.EQ.2)QAUX(M)=QAUX(M)+ROT(M,N)*P4(N)
IF(L.EQ.3)QAUX(M)=QAUX(M)+ROT(M,N)*P5(N)
END DO
END DO
DO M=1,3
IF(L.EQ.1)P3(M)=QAUX(M)
IF(L.EQ.2)P4(M)=QAUX(M)
IF(L.EQ.3)P5(M)=QAUX(M)
END DO
END DO
C...outgoing momenta (give quark masses non covariantly!)
DO M=1,3
Q1(M)=P3(M)
Q2(M)=P4(M)
H( M)=P5(M)
END DO
Q1(4)=P3(0)
Q2(4)=P4(0)
H( 4)=P5(0)
Q1(5)=RMASS(IDN(3))
Q1(4)=SQRT(Q1(4)**2+Q1(5)**2)
Q2(5)=RMASS(IDN(4))
Q2(4)=SQRT(Q2(4)**2+Q2(5)**2)
H(4)=-Q1(4)-Q2(4)+PHEP(5,NHEP)
CALL HWUMAS(H)
CALL HWULOB(PHEP(1,NHEP),Q1,PHEP(1,NHEP+1))
CALL HWULOB(PHEP(1,NHEP),Q2,PHEP(1,NHEP+2))
CALL HWULOB(PHEP(1,NHEP),H ,PHEP(1,NHEP+3))
C...sets up outgoing status and IDs.
ISTHEP(NHEP+1)=113
ISTHEP(NHEP+2)=114
ISTHEP(NHEP+3)=114
IDHW(NHEP+1)=IDN(3)
IDHEP(NHEP+1)=IDPDG(IDN(3))
IDHW(NHEP+2)=IDN(4)
IDHEP(NHEP+2)=IDPDG(IDN(4))
IDHW(NHEP+3)=IDN(5)
IDHEP(NHEP+3)=IDPDG(IDN(5))
C...sets up colour connections.
JMOHEP(2,NHEP+1)=NHEP-2
JMOHEP(2,NHEP+2)=NHEP-1
JMOHEP(2,NHEP-1)=NHEP+2
JMOHEP(2,NHEP-2)=NHEP+1
JMOHEP(2,NHEP+3)=NHEP+3
JDAHEP(2,NHEP+1)=NHEP-2
JDAHEP(2,NHEP+2)=NHEP-1
JDAHEP(2,NHEP-1)=NHEP+2
JDAHEP(2,NHEP-2)=NHEP+1
JDAHEP(2,NHEP+3)=NHEP+3
NHEP=NHEP+3
IF(AZSPIN)THEN
C...set to zero the coefficients of the spin density matrices.
CALL HWVZRO(7,GCOEF)
END IF
RETURN
END IF
150 CONTINUE
175 CONTINUE
END DO
200 CONTINUE
END DO
EVWGT=HCS
END
CDECK ID>, HWHIGA.
*CMZ :- -23/08/94 13.22.29 by Mike Seymour
*-- Author : Ulrich Baur & Nigel Glover, adapted by Ian Knowles
C-----------------------------------------------------------------------
SUBROUTINE HWHIGA(S,T,U,EMH2,WTQQ,WTQG,WTGQ,WTGG)
C-----------------------------------------------------------------------
C Gives amplitudes squared for q-qbar, q(bar)-g and gg -> Higgs +jet
C IAPHIG (set in HWIGIN)=0: zero mass approximation =1: exact result
C =2: infinite mass limit.
C Only top loop included. A factor (alpha_s**3*alpha_W) is extracted
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE COMPLEX HWHIGB,HWHIGC,HWHIGD,HWHIG5,HWHIG1,HWHIG2,BI(4),
& CI(7),DI(3),EPSI,TAMP(7)
DOUBLE PRECISION S,T,U,EMH2,WTQQ,WTQG,WTGQ,WTGG,EMW2,RNGLU,RNQRK,
& FLUXGG,FLUXGQ,FLUXQQ,EMQ2,TAMPI(7),TAMPR(7)
INTEGER I
LOGICAL NOMASS
EXTERNAL HWHIGB,HWHIGC,HWHIGD,HWHIG5,HWHIG1,HWHIG2
COMMON/SMALL/EPSI
COMMON/CINTS/BI,CI,DI
EPSI=DCMPLX(ZERO,-1.D-10)
EMW2=RMASS(198)**2
C Spin and colour flux factors plus enhancement factor
RNGLU=1./FLOAT(NCOLO**2-1)
RNQRK=1./FLOAT(NCOLO)
FLUXGG=.25*RNGLU**2*ENHANC(6)**2
FLUXGQ=.25*RNGLU*RNQRK*ENHANC(6)**2
FLUXQQ=.25*RNQRK**2*ENHANC(6)**2
IF (IAPHIG.EQ.2) THEN
C Infinite mass limit in loops
WTGG=(2./3.)**2*FLOAT(NCOLO*(NCOLO**2-1))
& *(EMH2**4+S**4+T**4+U**4)/(S*T*U*EMW2)*FLUXGG
WTQQ= 16./9.*(U**2+T**2)/(S*EMW2)*FLUXQQ
WTQG=-16./9.*(U**2+S**2)/(T*EMW2)*FLUXGQ
WTGQ=-16./9.*(S**2+T**2)/(U*EMW2)*FLUXGQ
RETURN
ELSEIF (IAPHIG.EQ.1) THEN
C Exact result for loops
NOMASS=.FALSE.
ELSEIF (IAPHIG.EQ.0) THEN
C Small mass approximation in loops
NOMASS=.TRUE.
ELSE
CALL HWWARN('HWHIGA',500)
ENDIF
C Include only top quark contribution
EMQ2=RMASS(6)**2
BI(1)=HWHIGB(NOMASS,S,ZERO,ZERO,EMQ2)
BI(2)=HWHIGB(NOMASS,T,ZERO,ZERO,EMQ2)
BI(3)=HWHIGB(NOMASS,U,ZERO,ZERO,EMQ2)
BI(4)=HWHIGB(NOMASS,EMH2,ZERO,ZERO,EMQ2)
BI(1)=BI(1)-BI(4)
BI(2)=BI(2)-BI(4)
BI(3)=BI(3)-BI(4)
CI(1)=HWHIGC(NOMASS,S,ZERO,ZERO,EMQ2)
CI(2)=HWHIGC(NOMASS,T,ZERO,ZERO,EMQ2)
CI(3)=HWHIGC(NOMASS,U,ZERO,ZERO,EMQ2)
CI(7)=HWHIGC(NOMASS,EMH2,ZERO,ZERO,EMQ2)
CI(4)=(S*CI(1)-EMH2*CI(7))/(S-EMH2)
CI(5)=(T*CI(2)-EMH2*CI(7))/(T-EMH2)
CI(6)=(U*CI(3)-EMH2*CI(7))/(U-EMH2)
DI(1)=HWHIGD(NOMASS,U,T,EMH2,EMQ2)
DI(2)=HWHIGD(NOMASS,S,U,EMH2,EMQ2)
DI(3)=HWHIGD(NOMASS,S,T,EMH2,EMQ2)
C Compute complex amplitudes
TAMP(1)=HWHIG1(S,T,U,EMH2,EMQ2,1,2,3,4,5,6)
TAMP(2)=HWHIG2(S,T,U,EMH2,EMQ2,1,2,3,0,0,0)
TAMP(3)=HWHIG1(T,S,U,EMH2,EMQ2,2,1,3,5,4,6)
TAMP(4)=HWHIG1(U,T,S,EMH2,EMQ2,3,2,1,6,5,4)
TAMP(5)=HWHIG5(S,T,U,EMH2,EMQ2,1,0,4,0,0,0)
TAMP(6)=HWHIG5(T,S,U,EMH2,EMQ2,2,0,5,0,0,0)
TAMP(7)=HWHIG5(U,T,S,EMH2,EMQ2,3,0,6,0,0,0)
DO 20 I=1,7
TAMPI(I)= DREAL(TAMP(I))
20 TAMPR(I)=-DIMAG(TAMP(I))
C Square and add prefactors
WTGG=0.03125*FLOAT(NCOLO*(NCOLO**2-1))/EMW2
& *(TAMPR(1)**2+TAMPI(1)**2+TAMPR(2)**2+TAMPI(2)**2
& +TAMPR(3)**2+TAMPI(3)**2+TAMPR(4)**2+TAMPI(4)**2)*FLUXGG
WTQQ= 16.*(U**2+T**2)/(U+T)**2*EMQ2**2/(S*EMW2)
& *(TAMPR(5)**2+TAMPI(5)**2)*FLUXQQ
WTQG=-16.*(U**2+S**2)/(U+S)**2*EMQ2**2/(T*EMW2)
& *(TAMPR(6)**2+TAMPI(6)**2)*FLUXGQ
WTGQ=-16.*(S**2+T**2)/(S+T)**2*EMQ2**2/(U*EMW2)
& *(TAMPR(7)**2+TAMPI(7)**2)*FLUXGQ
END
CDECK ID>, HWHIGB.
*CMZ :- -23/08/94 13.22.29 by Mike Seymour
*-- Author : Ulrich Baur & Nigel Glover, adapted by Ian Knowles
*- split in 3 files by M. Kirsanov
C-----------------------------------------------------------------------
FUNCTION HWHIGB(NOMASS,S,T,EH2,EQ2)
C-----------------------------------------------------------------------
C One loop scalar integrals, used in HWHIGJ.
C If NOMASS=.TRUE. use a small mass approx. for particle in loop.
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE COMPLEX HWHIGB,HWUCI2,HWULI2,EPSI,PII
DOUBLE PRECISION S,T,EQ2,EH2,RAT
LOGICAL NOMASS
EXTERNAL HWULI2,HWUCI2
COMMON/SMALL/EPSI
C-----------------------------------------------------------------------
C B_0(2p1.p2=S;mq,mq)
C-----------------------------------------------------------------------
PII=DCMPLX(ZERO,PIFAC)
IF (NOMASS) THEN
RAT=DABS(S/EQ2)
HWHIGB=-DLOG(RAT)+TWO
IF (S.GT.ZERO) HWHIGB=HWHIGB+PII
ELSE
RAT=S/(FOUR*EQ2)
IF (S.LT.ZERO) THEN
HWHIGB=TWO-TWO*DSQRT(ONE-ONE/RAT)
& *DLOG(DSQRT(-RAT)+DSQRT(ONE-RAT))
ELSEIF (S.GT.ZERO.AND.RAT.LT.ONE) THEN
HWHIGB=TWO-TWO*DSQRT(ONE/RAT-ONE)*DASIN(DSQRT(RAT))
ELSEIF (RAT.GT.ONE) THEN
HWHIGB=TWO-DSQRT(ONE-ONE/RAT)
& *(TWO*DLOG(DSQRT(RAT)+DSQRT(RAT-ONE))-PII)
ENDIF
ENDIF
END
CDECK ID>, HWHIGC.
*CMZ :- -23/08/94 13.22.29 by Mike Seymour
*-- Author : Ulrich Baur & Nigel Glover, adapted by Ian Knowles
C-----------------------------------------------------------------------
FUNCTION HWHIGC(NOMASS,S,T,EH2,EQ2)
C-----------------------------------------------------------------------
C One loop scalar integrals, used in HWHIGJ.
C If NOMASS=.TRUE. use a small mass approx. for particle in loop.
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE COMPLEX HWHIGC,HWUCI2,HWULI2,EPSI,PII
DOUBLE PRECISION S,T,EQ2,EH2,RAT,COSH
LOGICAL NOMASS
EXTERNAL HWULI2,HWUCI2
COMMON/SMALL/EPSI
C-----------------------------------------------------------------------
C C_0(p{1,2}^2=0,2p1.p2=S;mq,mq,mq)
C-----------------------------------------------------------------------
PII=DCMPLX(ZERO,PIFAC)
IF (NOMASS) THEN
RAT=DABS(S/EQ2)
HWHIGC=HALF*DLOG(RAT)**2
IF (S.GT.ZERO) HWHIGC=HWHIGC-HALF*PIFAC**2-PII*DLOG(RAT)
HWHIGC=HWHIGC/S
ELSE
RAT=S/(FOUR*EQ2)
IF (S.LT.ZERO) THEN
HWHIGC=TWO*DLOG(DSQRT(-RAT)+DSQRT(ONE-RAT))**2/S
ELSEIF (S.GT.ZERO.AND.RAT.LT.ONE) THEN
HWHIGC=-TWO*(DASIN(DSQRT(RAT)))**2/S
ELSEIF (RAT.GT.ONE) THEN
COSH=DLOG(DSQRT(RAT)+DSQRT(RAT-ONE))
HWHIGC=TWO*(COSH**2-PIFAC**2/FOUR-PII*COSH)/S
ENDIF
ENDIF
END
CDECK ID>, HWHIGD.
*CMZ :- -23/08/94 13.22.29 by Mike Seymour
*-- Author : Ulrich Baur & Nigel Glover, adapted by Ian Knowles
C-----------------------------------------------------------------------
FUNCTION HWHIGD(NOMASS,S,T,EH2,EQ2)
C-----------------------------------------------------------------------
C One loop scalar integrals, used in HWHIGJ.
C If NOMASS=.TRUE. use a small mass approx. for particle in loop.
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE COMPLEX HWHIGD,HWUCI2,HWULI2,EPSI,PII,Z1,Z2
DOUBLE PRECISION S,T,EQ2,EH2,DLS,DLT,DLM,RZ12,DL1,DL2,
& ST,ROOT,XP,XM
LOGICAL NOMASS
EXTERNAL HWULI2,HWUCI2
COMMON/SMALL/EPSI
C-----------------------------------------------------------------------
C D_0(p{1,2,3}^2=0,p4^2=EH2,2p1.p2=S,2p2.p3=T;mq,mq,mq,mq)
C-----------------------------------------------------------------------
PII=DCMPLX(ZERO,PIFAC)
IF (NOMASS) THEN
DLS=DLOG(DABS(S/EQ2))
DLT=DLOG(DABS(T/EQ2))
DLM=DLOG(DABS(EH2/EQ2))
IF (S.GE.ZERO.AND.T.LE.ZERO) THEN
DL1=DLOG((EH2-T)/S)
Z1=T/(T-EH2)
Z2=(S-EH2)/S
HWHIGD=DLS**2+DLT**2-DLM**2+DL1**2
& +TWO*(DLOG(S/(EH2-T))*DLOG(-T/S)+HWULI2(Z1)-HWULI2(Z2)
& +PII*DLOG(EH2/(EH2-T)))
ELSEIF (S.LT.ZERO.AND.T.LT.ZERO) THEN
Z1=(S-EH2)/S
Z2=(T-EH2)/T
RZ12=ONE/DREAL(Z1*Z2)
DL1=DLOG((T-EH2)/(S-EH2))
DL2=DLOG(RZ12)
HWHIGD=DLS**2+DLT**2-DLM**2+TWO*PIFAC**2/THREE
& +TWO*DLOG(S/(T-EH2))*DLOG(ONE/DREAL(Z2))
& +TWO*DLOG(T/(S-EH2))*DLOG(ONE/DREAL(Z1))
& -DL1**2-DL2**2-TWO*(HWULI2(Z1)+HWULI2(Z2))
& +TWO*PII*DLOG(RZ12**2*EH2/EQ2)
ENDIF
HWHIGD=HWHIGD/(S*T)
ELSE
ST=S*T
ROOT=DSQRT(ST**2-FOUR*ST*EQ2*(S+T-EH2))
XP=HALF*(ST+ROOT)/ST
XM=1-XP
HWHIGD=TWO/ROOT*(-HWUCI2(EQ2,S,XP)-HWUCI2(EQ2,T,XP)
& +HWUCI2(EQ2,EH2,XP)+DLOG(-XM/XP)
& *(LOG(EQ2+EPSI)-LOG(EQ2+EPSI-S*XP*XM)
& +LOG(EQ2+EPSI-EH2*XP*XM)-LOG(EQ2+EPSI-T*XP*XM)))
ENDIF
END
CDECK ID>, HWHIGE.
*CMZ :- -13/10/02 09.43.05 by Peter Richardson
*-- Author : Kosuke Odagiri and Stefano Moretti
C-----------------------------------------------------------------------
C...Generate completely differential cross section (EVWGT) in the variables
C...X(I) with I=1,4 (see below) for the processes from IPROC=1000-1099 (SM),
C...IPROC=1111-1139 (MSSM), as described in the HERWIG 6 documentation file.
C...(For IPROC=1140-1145 it describes MSSM charged Higgs production.)
C
C...First release: 18-SEP-2002 by Stefano Moretti
C
SUBROUTINE HWHIGE
C--------------------------------------------------------------------------
C LEPTOPRODUCTION OF MS(SM) HIGGSES IN ASSOCIATION WITH HEAVY QUARK PAIRS
C--------------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER JHIGGS
INTEGER I,L,M,N,NN
INTEGER IH,IQ,JQ,IIQ,JJQ
INTEGER IAD
INTEGER IDEC,FLIP
INTEGER ID1,ID2
DOUBLE PRECISION CV,CA,BR
DOUBLE PRECISION BRHIGQ,EMQ,ENQ,GMQ,EMQQ,EMH,GMH,EMHWT
DOUBLE PRECISION T,TL,TLMIN,TLMAX,TTMIN,TTMAX,CTMP,RCM,RCM2
DOUBLE PRECISION X(4),XL(4),XU(4)
DOUBLE PRECISION Q4(0:3),Q34(0:3)
DOUBLE PRECISION CT5,ST5,CT4,ST4,CF4,SF4,RQ52,RQ5,RQ42,RQ4,PQ4
DOUBLE PRECISION P1(0:3),P2(0:3),P3(0:3),P4(0:3),P5(0:3)
DOUBLE PRECISION F(0:3),G(0:3)
DOUBLE PRECISION ECM,SHAT,S
DOUBLE PRECISION EMIN,EMIN1,EMIN2,PCM2,PCM
DOUBLE PRECISION HFC,HBC
DOUBLE PRECISION M2EE
DOUBLE PRECISION ALPHA,EMSC2
DOUBLE PRECISION HWRGEN,HWUAEM
DOUBLE PRECISION PHI,CPHI,SPHI,ROT(3,3)
DOUBLE PRECISION QAUX(0:3)
DOUBLE PRECISION EPS,HCS,RCS,FACT
DOUBLE PRECISION WEIGHT
INTEGER IFL,KHIGGS,JH,JFL
LOGICAL FIRST,GAUGE
DOUBLE PRECISION E,Q3,YM3,GAM3,YM4,GAM4,GAM5,COLOUR
DOUBLE PRECISION RM3,RM4,RM5
DOUBLE PRECISION S2W,RMW,RMZ
DOUBLE PRECISION RMHL,GAMHL
DOUBLE PRECISION RMHH,GAMHH
DOUBLE PRECISION RMHA,GAMHA
EQUIVALENCE (RMHL,RMASS(203)),(RMHH,RMASS(204)),(RMHA,RMASS(205))
LOGICAL HWRLOG
EXTERNAL HWHIGM,HWRGEN,HWUAEM,HWH2HE,HWEONE,HWRLOG
PARAMETER (EPS=1.D-9)
SAVE HCS,M2EE,FACT,S,SHAT,P3,P4,P5
SAVE IIQ,JJQ,JHIGGS
C...ASSIGN Q/Q'-FLAVOUR.
IF(IPROC.GE.1140)THEN
IH=4
IF(IPROC.EQ.1140)IQ=2
IF(IPROC.EQ.1141)IQ=4
IF(IPROC.EQ.1142)IQ=6
IF(IPROC.EQ.1143)IQ=7
IF(IPROC.EQ.1144)IQ=8
IF(IPROC.EQ.1145)IQ=9
IAD=7
JQ=IQ+5
GMQ=ZERO
IF(JQ.EQ.11)GMQ=HBAR/RLTIM(6)
ELSE
IF(IMSSM.EQ.0)THEN
IH=0
IQ=6
ELSE
IF(IPROC.LT.1140)IH=3
IF(IPROC.LT.1130)IH=2
IF(IPROC.LT.1120)IH=1
IQ=IPROC-1100-10*IH
END IF
IAD=6
JQ=IQ+6
GMQ=ZERO
END IF
C...PROCESS EVENT.
IF(GENEV)THEN
RCS=HCS*HWRGEN(0)
ELSE
EVWGT=0.
HCS=0.
C...ASSIGN FINAL STATE MASSES.
IF(IQ.LE.6)THEN
EMQ=RMASS(IQ)
ENQ=RMASS(JQ)
ELSE
EMQ=RMASS(2*IQ-7+114+IAD)
ENQ=RMASS(2*IQ-7+114 )
END IF
EMH=RMASS(201+IHIGGS)
GMH=HBAR/RLTIM(201+IHIGGS)
EMHWT=1.
C...ENERGY AT PARTON LEVEL.
ECM=PBEAM1+PBEAM2
S=ECM*ECM
SHAT=S
IF((EMH.LE.0.).OR.(EMH.GE.ECM))RETURN
C...PHASE SPACE VARIABLES.
C...X(1)=(EMQQ**2-(EMQ+ENQ)**2)/((ECM-EMH)**2-(EMQ+ENQ)**2),
C...LIGHT QUARKS -> X(2)=(LOG|T|-LOG|TMIN|)/(LOG|TMAX|-LOG|TMIN|),
C... X(3)=SIN(THETA4_CM_34),X(4)=COS(FI4_CM_34),
C...HEAVY QUARKS -> X(2)=COS(THETA5_CM),
C... X(3)=COS(THETA4_CM_34),X(4)=FI4_CM_34,
C...PHASE SPACE BORDERS.
XL(1)=0.
XU(1)=1.
IF((IQ+JQ).EQ.18)THEN
XL(2)=-1.
XL(4)=0.
XU(4)=2.*PIFAC
ELSE
XL(2)=0.
XL(4)=-1.
XU(4)=1.
END IF
XU(2)=1.
XL(3)=-1.
XU(3)=1.
C...SINGLE PHASE SPACE POINT.
100 CONTINUE
WEIGHT=1.
DO I=1,4
X(I)=XL(I)+(XU(I)-XL(I))*HWRGEN(0)
WEIGHT=WEIGHT*ABS(XU(I)-XL(I))
END DO
C...THREE PARTICLE KINEMATICS.
EMQQ=SQRT(X(1)*((ECM-EMH)**2-(EMQ+ENQ)**2)+(EMQ+ENQ)**2)
C...INCOMING PARTONS: ALL MASSLESS.
EMIN=0.
IF((IQ+JQ).EQ.18)THEN
CT5=X(2)
CT4=X(3)
ST4=SQRT(1.-CT4*CT4)
CF4=COS(X(4))
SF4=SIN(X(4))
ELSE
PCM2=((ECM*ECM-EMIN*EMIN-EMIN*EMIN)**2
& -(2.*EMIN*EMIN)**2)/(4.*ECM*ECM)
PCM=SQRT(PCM2)
RCM2=((ECM*ECM-EMQQ*EMQQ-EMH*EMH)**2
& -(2.*EMQQ*EMH)**2)/(4.*ECM*ECM)
RCM=SQRT(RCM2)
TTMAX=EMIN**2+EMQQ**2-0.5D0/ECM/ECM
& *((ECM*ECM+EMIN**2-EMIN**2)*(ECM*ECM+EMQQ**2-EMH**2)
& -SQRT((ECM*ECM-(EMIN+EMIN)**2)*(ECM*ECM-(EMIN-EMIN)**2))
& *SQRT((ECM*ECM-(EMQQ+EMH)**2)*(ECM*ECM-(EMQQ-EMH)**2)))
TTMIN=EMIN**2+EMQQ**2-0.5D0/ECM/ECM
& *((ECM*ECM+EMIN**2-EMIN**2)*(ECM*ECM+EMQQ**2-EMH**2)
& +SQRT((ECM*ECM-(EMIN+EMIN)**2)*(ECM*ECM-(EMIN-EMIN)**2))
& *SQRT((ECM*ECM-(EMQQ+EMH)**2)*(ECM*ECM-(EMQQ-EMH)**2)))
TLMIN=LOG(ABS(TTMAX))
TLMAX=LOG(ABS(TTMIN))
TL=X(2)*(TLMAX-TLMIN)+TLMIN
T=EXP(ABS(TL))
CTMP=-T-EMIN**2-EMQQ**2
& +2.*SQRT(PCM**2+EMIN**2)*SQRT(RCM**2+EMQQ**2)
CT5=CTMP/2./PCM/RCM
ST4=X(3)
CT4=SQRT(1.-ST4*ST4)
CF4=X(4)
SF4=SQRT(1.-CF4*CF4)
END IF
IF(HWRLOG(HALF))THEN
ST5=+SQRT(1.-CT5*CT5)
ELSE
ST5=-SQRT(1.-CT5*CT5)
END IF
RQ52=((ECM*ECM-EMH*EMH-EMQQ*EMQQ)**2-(2.*EMH*EMQQ)**2)/
& (4.*ECM*ECM)
IF(RQ52.LT.0.)THEN
GOTO 100
ELSE
RQ5=SQRT(RQ52)
ENDIF
P5(1)=0.
P5(2)=RQ5*ST5
P5(3)=RQ5*CT5
P5(0)=SQRT(RQ52+EMH*EMH)
DO I=1,3
Q34(I)=-P5(I)
END DO
Q34(0)=SQRT(RQ52+EMQQ*EMQQ)
RQ42=((EMQQ*EMQQ-EMQ*EMQ-ENQ*ENQ)**2-(2.*EMQ*ENQ)**2)/
& (4.*EMQQ*EMQQ)
IF(RQ42.LT.0.)THEN
GOTO 100
ELSE
RQ4=SQRT(RQ42)
ENDIF
Q4(1)=RQ4*ST4*CF4
Q4(2)=RQ4*ST4*SF4
Q4(3)=RQ4*CT4
Q4(0)=SQRT(RQ42+ENQ*ENQ)
PQ4=0.
DO I=1,3
PQ4=PQ4+Q34(I)*Q4(I)
END DO
P4(0)=(Q34(0)*Q4(0)+PQ4)/EMQQ
P3(0)=Q34(0)-P4(0)
DO I=1,3
P4(I)=Q4(I)+Q34(I)*(P4(0)+Q4(0))/(Q34(0)+EMQQ)
P3(I)=Q34(I)-P4(I)
END DO
IF(IMSSM.NE.0)THEN
IF(IPROC.GE.1140)THEN
IF(SQRT(P4(1)**2+P4(2)**2).LT.PTMIN)RETURN
ELSE
IF((IQ.NE.6).AND.(IQ.NE.12).AND.
& (JQ.NE.6).AND.(JQ.NE.12))THEN
IF(SQRT(P3(1)**2+P3(2)**2).LT.PTMIN)RETURN
IF(SQRT(P4(1)**2+P4(2)**2).LT.PTMIN)RETURN
ELSE
CONTINUE
END IF
END IF
END IF
C...INITIAL STATE MOMENTA IN THE PARTONIC CM.
PCM2=((SHAT-EMIN*EMIN-EMIN*EMIN)**2
& -(2.*EMIN*EMIN)**2)/(4.*SHAT)
PCM=SQRT(PCM2)
P1(0)=SQRT(PCM2+EMIN*EMIN)
P1(1)=0.
P1(2)=0.
P1(3)=PCM
P2(0)=SQRT(PCM2+EMIN*EMIN)
P2(1)=0.
P2(2)=0.
P2(3)=-PCM
C...COLOR STRUCTURED ME SUMMED/AVERAGED OVER FINAL/INITIAL SPINS AND COLORS.
C...EW AND QCD COUPLINGS.
EMSCA=EMQ+ENQ+EMH
EMSC2=EMSCA*EMSCA
ALPHA=HWUAEM(EMSC2)
FIRST=.TRUE.
GAUGE=.FALSE.
E=SQRT(4.D0*PIFAC*ALPHA)
IF(IPROC.GE.1140)THEN
IFL=IQ-1
IF(IQ.EQ.7)IFL=IQ
IF(IQ.EQ.8)IFL=IQ+1
IF(IQ.EQ.9)IFL=IQ+2
RM3=ENQ
YM3=ENQ
GAM3=0.D0
RM4=EMQ
YM4=EMQ
GAM4=GMQ
C...CHARGED HIGGSES
Q3=-1.D0
IF(IFL.LE.6)Q3=-1.D0/3.D0
JFL=0
JH=IH
C...ASSIGN FERMION MOMENTA
DO I=0,3
F(I)=P4(I)
G(I)=P3(I)
END DO
ELSE
IFL=IQ
IF(IQ.EQ.7)IFL=IQ
IF(IQ.EQ.8)IFL=IQ+1
IF(IQ.EQ.9)IFL=IQ+2
RM3=EMQ
YM3=EMQ
GAM3=0.D0
RM4=ENQ
YM4=ENQ
GAM4=0.D0
C...NEUTRAL HIGGSES
IF((IFL.EQ.1).OR.(IFL.EQ.3).OR.(IFL.EQ.5 ))THEN
Q3=-1.D0/3.D0
ELSEIF((IFL.EQ.2).OR.(IFL.EQ.4).OR.(IFL.EQ.6 ))THEN
Q3=+2.D0/3.D0
ELSEIF((IFL.EQ.7).OR.(IFL.EQ.9).OR.(IFL.EQ.11))THEN
Q3=-1.D0
END IF
IF((IFL.EQ.1).OR.(IFL.EQ.3).OR.(IFL.EQ. 5).OR.
& (IFL.EQ.7).OR.(IFL.EQ.9).OR.(IFL.EQ.11))THEN
JFL=1
ELSEIF((IFL.EQ.2).OR.(IFL.EQ.4).OR.(IFL.EQ.6))THEN
JFL=2
END IF
KHIGGS=IHIGGS
IF(IHIGGS.NE.0)KHIGGS=IHIGGS-1
JH=KHIGGS
C...ASSIGN FERMION MOMENTA
DO I=0,3
F(I)=P3(I)
G(I)=P4(I)
END DO
END IF
RM5=EMH
GAM5=GMH
S2W=SWEIN
RMW=RMASS(198)
RMZ=RMASS(200)
GAMHL=HBAR/RLTIM(203)
GAMHH=HBAR/RLTIM(204)
GAMHA=HBAR/RLTIM(205)
COLOUR=1.D0
IF(IFL.LE.6)COLOUR=3.D0
C...MSSM COUPLINGS.
IF(JH.LE.3)THEN
HFC=ENHANC(IQ)
HBC=ENHANC(10)
ELSE
HFC=ONE
HBC=ONE
END IF
C...ME.
CALL HWH2HE(FIRST,GAUGE,JFL,JH,HFC,HBC,
& E,S2W,TANB,ALPHAH,RMW,S,Q3,F,G,P5,
& RM3,YM3,GAM3,RM4,YM4,GAM4,RM5,GAM5,
& RMHL,GAMHL,RMHH,GAMHH,RMHA,GAMHA,
& RMZ,GAMZ,COLOUR,M2EE)
C...CONSTANT FACTORS: PHI ALONG BEAM AND CONVERSION GEV^2->NB.
FACT=2.*PIFAC*GEV2NB
C...PHASE SPACE JACOBIANS, PI'S AND FLUX.
FACT=FACT*RQ4*RQ5/PCM/32./(2.*PIFAC)**5
& *((ECM-EMH)**2-(EMQ+ENQ)**2)
& /2./EMQQ/S
C...JACOBIANS FROM CT5 TO X(2).
IF((IQ+JQ).EQ.18)THEN
CONTINUE
ELSE
FACT=FACT*(TLMAX-TLMIN)/2./PCM/RCM*ABS(T)
FACT=FACT*2.*ABS(ST4/CT4/SF4)
END IF
C...CHARGE CONJUGATION.
IF(IPROC.GE.1140)THEN
C...YES FOR CHARGED HIGGS.
FACT=FACT*2.
ELSE
C...NO FOR NEUTRAL HIGGSES.
CONTINUE
END IF
C...HIGGS RESONANCE.
FACT=FACT*EMHWT
C...CONSTANT WEIGHT.
FACT=FACT*WEIGHT
C...INCLUDE BR OF HIGGS.
IF(IMSSM.EQ.0)THEN
IDEC=MOD(IPROC,100)
IF (IDEC.GT.0.AND.IDEC.LE.12) FACT=FACT*BRHIG(IDEC)
IF (IDEC.EQ.0) THEN
BRHIGQ=0.D0
DO I=1,6
BRHIGQ=BRHIGQ+BRHIG(I)
END DO
FACT=FACT*BRHIGQ
ENDIF
IF (IDEC.EQ.10) THEN
CALL HWDBOZ(198,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(199,ID1,ID2,CV,CA,BR,1)
FACT=FACT*BR
ELSEIF (IDEC.EQ.11) THEN
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
FACT=FACT*BR
ENDIF
END IF
END IF
C...SET UP FLAVOURS IN FINAL STATE.
IF(IPROC.GE.1140)THEN
IF(HWRGEN(0).LT.0.5)THEN
JHIGGS=207-201
IIQ=IQ
JJQ=JQ
FLIP=0
ELSE
JHIGGS=206-201
IIQ=IQ-1
JJQ=JQ+1
FLIP=1
END IF
ELSE
JHIGGS=IHIGGS
IIQ=IQ
JJQ=JQ
FLIP=0
END IF
HCS=FACT*M2EE
IF (GENEV.AND.HCS.GT.RCS) THEN
C...GENERATE EVENT.
IDN(1)=IDHW(1)
IDN(2)=IDHW(2)
IF(IIQ.LE.12.AND.JJQ.LE.12)THEN
IDN(3)=IIQ
IDN(4)=JJQ
ELSE
IDN(3)=2*IIQ-7+114
IDN(4)=2*IIQ-7+114+IAD
END IF
IDN(5)=201+JHIGGS
C...INCOMING PARTONS: NOW MASSIVE.
EMIN1=RMASS(IDN(1))
EMIN2=RMASS(IDN(2))
C...REDO INITIAL STATE MOMENTA IN THE PARTONIC CM.
PCM2=((SHAT-EMIN1*EMIN1-EMIN2*EMIN2)**2
& -(2.*EMIN1*EMIN2)**2)/(4.*SHAT)
PCM=SQRT(PCM2)
P1(0)=SQRT(PCM2+EMIN1*EMIN1)
P1(1)=0.
P1(2)=0.
P1(3)=PCM
P2(0)=SQRT(PCM2+EMIN2*EMIN2)
P2(1)=0.
P2(2)=0.
P2(3)=-PCM
C...SETS UP INCOMING STATUS AND IDS ONLY FOR 2->1: USE HWEONE.
IDCMF=15
XX(1)=ONE
XX(2)=ONE
CALL HWEONE
JDAHEP(1,NHEP )=NHEP+1
JDAHEP(2,NHEP )=NHEP+3
JMOHEP(1,NHEP+1)=NHEP
JMOHEP(1,NHEP+2)=NHEP
JMOHEP(1,NHEP+3)=NHEP
C...RANDOMLY ROTATE FINAL STATE MOMENTA AROUND BEAM AXIS.
PHI=2.*PIFAC*HWRGEN(0)
CPHI=COS(PHI)
SPHI=SIN(PHI)
ROT(1,1)=+CPHI
ROT(1,2)=+SPHI
ROT(1,3)=0.
ROT(2,1)=-SPHI
ROT(2,2)=+CPHI
ROT(2,3)=0.
ROT(3,1)=0.
ROT(3,2)=0.
ROT(3,3)=1.
DO L=1,3
DO M=1,3
QAUX(M)=0.
DO N=1,3
IF(L.EQ.1)QAUX(M)=QAUX(M)+ROT(M,N)*P3(N)
IF(L.EQ.2)QAUX(M)=QAUX(M)+ROT(M,N)*P4(N)
IF(L.EQ.3)QAUX(M)=QAUX(M)+ROT(M,N)*P5(N)
END DO
END DO
DO M=1,3
IF(L.EQ.1)P3(M)=QAUX(M)
IF(L.EQ.2)P4(M)=QAUX(M)
IF(L.EQ.3)P5(M)=QAUX(M)
END DO
END DO
C...DO REAL INCOMING, OUTGOING MOMENTA IN THE LAB FRAME.
DO M=NHEP-2,NHEP+3
IF(M.EQ.NHEP )GO TO 888
DO N=0,3
NN=N
IF(N.EQ.0)NN=4
IF(M.EQ.NHEP-2)PHEP(NN,M)=P1(N)
IF(M.EQ.NHEP-1)PHEP(NN,M)=P2(N)
IF(M.EQ.NHEP+1)PHEP(NN,M)=P3(N)*(1-FLIP)+P4(N)*FLIP
IF(M.EQ.NHEP+2)PHEP(NN,M)=P4(N)*(1-FLIP)+P3(N)*FLIP
IF(M.EQ.NHEP+3)PHEP(NN,M)=P5(N)
END DO
888 CONTINUE
END DO
C...NEEDS TO SET ALL FINAL STATE MASSES.
PHEP(5,NHEP+1)=SQRT(ABS(PHEP(4,NHEP+1)**2
& -PHEP(3,NHEP+1)**2
& -PHEP(2,NHEP+1)**2
& -PHEP(1,NHEP+1)**2))
PHEP(5,NHEP+2)=SQRT(ABS(PHEP(4,NHEP+2)**2
& -PHEP(3,NHEP+2)**2
& -PHEP(2,NHEP+2)**2
& -PHEP(1,NHEP+2)**2))
PHEP(5,NHEP+3)=SQRT(ABS(PHEP(4,NHEP+3)**2
& -PHEP(3,NHEP+3)**2
& -PHEP(2,NHEP+3)**2
& -PHEP(1,NHEP+3)**2))
C...SETS CMF.
DO I=1,4
PHEP(I,NHEP )=PHEP(I,NHEP-2)+PHEP(I,NHEP-1)
END DO
PHEP(5,NHEP )=SQRT(ABS(PHEP(4,NHEP )**2
& -PHEP(3,NHEP )**2
& -PHEP(2,NHEP )**2
& -PHEP(1,NHEP )**2))
C...SETS UP OUTGOING STATUS AND IDS.
ISTHEP(NHEP+1)=113
ISTHEP(NHEP+2)=114
ISTHEP(NHEP+3)=114
IDHW(NHEP+1)=IDN(3)
IDHEP(NHEP+1)=IDPDG(IDN(3))
IDHW(NHEP+2)=IDN(4)
IDHEP(NHEP+2)=IDPDG(IDN(4))
IDHW(NHEP+3)=IDN(5)
IDHEP(NHEP+3)=IDPDG(IDN(5))
C...SETS UP COLOUR CONNECTIONS.
JMOHEP(2,NHEP+1)=NHEP+2
JMOHEP(2,NHEP+2)=NHEP+1
JMOHEP(2,NHEP-1)=NHEP-2
JMOHEP(2,NHEP-2)=NHEP-1
JMOHEP(2,NHEP+3)=NHEP+3
JDAHEP(2,NHEP+1)=NHEP+2
JDAHEP(2,NHEP+2)=NHEP+1
JDAHEP(2,NHEP-1)=NHEP-1
JDAHEP(2,NHEP-2)=NHEP-2
JDAHEP(2,NHEP+3)=NHEP+3
NHEP=NHEP+3
IF(AZSPIN)THEN
C...SET TO ZERO THE COEFFICIENTS OF THE SPIN DENSITY MATRICES.
CALL HWVZRO(7,GCOEF)
END IF
END IF
C...COLLECT WEIGHT.
EVWGT=HCS
END
CDECK ID>, HWHIGH.
*CMZ :- -26/11/00 17.21.55 by Bryan Webber
*-- Author : Kosuke Odagiri & Stefano Moretti
C-----------------------------------------------------------------------
C...Generate completely differential cross section (EVWGT) in the variables
C...X(I) with I=1,3 (see below) for the processes IPROC=3315,3325,3335,3355,
C...3365,3375 as described in the HERWIG 6 documentation file.
C...It includes interface to PDFs and takes into account color connections
C...among partons.
C
C...First release: 16-AUG-1999 by Kosuke Odagiri
C...Last modified: 26-SEP-1999 by Stefano Moretti
C-----------------------------------------------------------------------
SUBROUTINE HWHIGH
C-----------------------------------------------------------------------
C DRELL-YAN 2 PARTON -> 2 HIGGS PAIR (2HDM)
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN, HWUAEM, EPS, HCS, RCS, DIST, S, PF, QPE,
& FACTR, SN2TH, MZ, MW, MNN(2,2), MCC(2), MCN(3), EMSC2, GW2, GZ2,
& GHH(4), XWEIN, S2W, ECM_MAX, X(3), XL(3),
& XU(3), WEIGHT, ECM, SHAT, TAU, RMH1, RMH2, EMH1, EMH2,
& EMHWT1, EMHWT2, EMHHWT
INTEGER I, J, IQ, IQ1, IQ2, ID1, ID2, IH, JH, IH1, IH2
EXTERNAL HWRGEN, HWUAEM
SAVE HCS,MNN,MCC,MCN,EMHHWT,S,SHAT
PARAMETER (EPS = 1.D-9)
DOUBLE COMPLEX Z, GZ, A, D, E
PARAMETER (Z = (0.D0,1.D0))
EQUIVALENCE (MZ, RMASS(200)), (MW, RMASS(198))
C...process event.
IF (GENEV) THEN
RCS = HCS*HWRGEN(0)
ELSE
HCS = ZERO
EVWGT = ZERO
C...minimum transverse momentum.
PTMIN = ZERO
C...energy at hadron level.
ECM_MAX=PBEAM1+PBEAM2
S=ECM_MAX*ECM_MAX
C...phase space variables.
C...X(1)=COS(THETA_CM),
C...X(2)=(1./SHAT-1./ECM_MAX**2)/(1./(EMH1+EMH2)**2-1./ECM_MAX**2),
C...X(3)=(LOG(TAU)-LOG(X1))/LOG(TAU),
C...phase space borders.
XL(1)=-1.
XU(1)=1.
XL(2)=0.
XU(2)=1.
XL(3)=0.
XU(3)=1.
C...single phase space point.
WEIGHT=1.
DO I=1,3
X(I)=XL(I)+(XU(I)-XL(I))*HWRGEN(0)
WEIGHT=WEIGHT*ABS(XU(I)-XL(I))
END DO
C...final state masses.
IF((MOD(IPROC,10000).EQ.3365).OR.
& (MOD(IPROC,10000).EQ.3375))THEN
JH = IHIGGS-1
ID1 = 205
ID2 = 202 + JH
ELSE IF(MOD(IPROC,10000).EQ.3355)THEN
JH = 4
ID1 = 206
ID2 = 207
ELSE IF((MOD(IPROC,10000).EQ.3315).OR.
& (MOD(IPROC,10000).EQ.3325).OR.
& (MOD(IPROC,10000).EQ.3335))THEN
JH = IHIGGS-1
ID1 = 206
ID2 = 202 + JH
END IF
RMH1=RMASS(ID1)
RMH2=RMASS(ID2)
EMH1=RMH1
EMH2=RMH2
EMHWT1=1.
EMHWT2=1.
EMHHWT=EMHWT1*EMHWT2
C...energy at parton level.
ECM=SQRT(1./(X(2)*(1./(EMH1+EMH2)**2-1./ECM_MAX**2)
& +1./ECM_MAX**2))
IF((EMH1.LE.0.).OR.(EMH1.GE.ECM))RETURN
IF((EMH2.LE.0.).OR.(EMH2.GE.ECM))RETURN
SHAT=ECM*ECM
TAU=SHAT/S
C...momentum fractions X1 and X2.
XX(1) = EXP(LOG(TAU)*(1.-X(3)))
XX(2) = TAU/XX(1)
COSTH = X(1)
SN2TH = 0.25D0 - 0.25D0*COSTH**2
EMSCA = EMH1+EMH2
EMSC2 = EMSCA*EMSCA
CALL HWSGEN(.FALSE.)
EVWGT = ZERO
FACTR = GEV2NB*PIFAC*(HWUAEM(EMSC2))**2/SHAT/CAFAC*SN2TH/2.
C...Jacobians from X1,X2 to X(2),X(3).
FACTR = FACTR/S*(-LOG(TAU))*(1./(EMH1+EMH2)**2-1./ECM_MAX**2)
C...constant weight.
FACTR = FACTR*WEIGHT
C...couplings and propagators.
XWEIN = TWO*SWEIN
S2W = DSQRT(XWEIN*(TWO-XWEIN))
GZ = S2W*(SHAT-MZ**2+Z*SHAT*GAMZ/MZ)/SHAT
GZ2 = DREAL(DCONJG(GZ)*GZ)
GW2 = ((ONE-MW**2/SHAT)**2+(GAMW/MW)**2)*XWEIN**2
C...labels: 1 = h0, 2 = H0, 3 = A0, 4 = H+, 5 = H-.
GHH(1)= COSBMA
GHH(2)= SINBMA
GHH(3)= ONE
GHH(4)= ONE-XWEIN
C...set to zero all MEs.
DO I=1,2
MCC(I)=ZERO
MCN(I)=ZERO
DO J=1,2
MNN(I,J)=ZERO
END DO
END DO
MCN(3)=ZERO
C...start subprocesses.
IF((MOD(IPROC,10000).EQ.3365).OR.
& (MOD(IPROC,10000).EQ.3375))THEN
c
c _ o o o
c q q -> A h / H
c
DO IH = JH,JH
QPE = SHAT-(EMH1+EMH2)**2
IF (QPE.GT.ZERO) THEN
PF = SQRT(QPE*(SHAT-(EMH1-EMH2)**2))/SHAT
DO IQ = 1,2
MNN(IH,IQ) =
& FACTR*PF**3*GHH(IH)**2*(LFCH(IQ)**2+RFCH(IQ)**2)/GZ2
END DO
ELSE
CONTINUE
END IF
END DO
ELSE IF(MOD(IPROC,10000).EQ.3355)THEN
c
c _ + -
c q q -> H H
c
IH = JH
QPE = SHAT-(EMH1+EMH2)**2
IF (QPE.GT.ZERO) THEN
PF = SQRT(QPE*(SHAT-(EMH1-EMH2)**2))/SHAT
DO IQ = 1,2
A = GHH(IH)/GZ
D = QFCH(IQ)+A*LFCH(IQ)
E = QFCH(IQ)+A*RFCH(IQ)
MCC(IQ)=FACTR*PF**3*DREAL(DCONJG(D)*D+DCONJG(E)*E)
END DO
ELSE
CONTINUE
END IF
ELSE IF((MOD(IPROC,10000).EQ.3315).OR.
& (MOD(IPROC,10000).EQ.3325).OR.
& (MOD(IPROC,10000).EQ.3335))THEN
c
c _ +- o o o
c q q' -> H h / H / A
c
DO IH = JH,JH
QPE = SHAT-(EMH1+EMH2)**2
IF (QPE.GT.ZERO) THEN
PF = SQRT(QPE*(SHAT-(EMH1-EMH2)**2))/SHAT
MCN(IH)=FACTR*PF**3/GW2*HALF*GHH(IH)**2
ELSE
CONTINUE
END IF
END DO
END IF
END IF
HCS = 0.D0
C...start PDFs.
DO 1 ID1 = 1, 12
IF (DISF(ID1,1).LT.EPS) GOTO 1
IF (ID1.GT.6) THEN
ID2 = ID1 - 6
ELSE
ID2 = ID1 + 6
END IF
IQ = ID1 - ((ID1-1)/2)*2
IF (DISF(ID2,2).LT.EPS) GOTO 1
DIST = DISF(ID1,1)*DISF(ID2,2)*S*SHAT
IH1 = 205
IH2 = 203
HCS = HCS + DIST*EMHHWT*MNN(1,IQ)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IH1,IH2,2134,1)
GOTO 9
ENDIF
IH2 = 204
HCS = HCS + DIST*EMHHWT*MNN(2,IQ)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IH1,IH2,2134,2)
GOTO 9
ENDIF
IH1 = 206
IH2 = 207
HCS = HCS + DIST*EMHHWT*MCC(IQ)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IH1,IH2,2134,3)
GOTO 9
ENDIF
1 CONTINUE
c _ _ _ _
c ud(+), ud(-), du(-), du(+)
c
DO 2 IQ1 = 1, 3
DO IQ2 = 1, 3
IF(VCKM(IQ1,IQ2).GT.EPS) THEN
c _
c ud (+)
c
ID1 = IQ1 * 2
ID2 = IQ2 * 2 + 5
IH1 = 206
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = VCKM(IQ1,IQ2)*DISF(ID1,1)*DISF(ID2,2)*S*SHAT
DO IH = 1,3
IH2 = 202+IH
HCS = HCS + DIST*EMHHWT*MCN(IH)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IH1,IH2,2134,3+IH)
GOTO 9
ENDIF
END DO
END IF
c _
c du (+)
c
ID1 = IQ2 * 2 + 5
ID2 = IQ1 * 2
IH1 = 206
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = VCKM(IQ1,IQ2)*DISF(ID1,1)*DISF(ID2,2)*S*SHAT
DO IH = 1,3
IH2 = 202+IH
HCS = HCS + DIST*EMHHWT*MCN(IH)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IH1,IH2,2134,3+IH)
GOTO 9
ENDIF
END DO
END IF
c _
c du (-)
c
ID1 = IQ2 * 2 - 1
ID2 = IQ1 * 2 + 6
IH1 = 207
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = VCKM(IQ1,IQ2)*DISF(ID1,1)*DISF(ID2,2)*S*SHAT
DO IH = 1,3
IH2 = 202+IH
HCS = HCS + DIST*EMHHWT*MCN(IH)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IH1,IH2,2134,3+IH)
GOTO 9
ENDIF
END DO
END IF
c _
c ud (-)
c
ID1 = IQ1 * 2 + 6
ID2 = IQ2 * 2 - 1
IH1 = 207
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = VCKM(IQ1,IQ2)*DISF(ID1,1)*DISF(ID2,2)*S*SHAT
DO IH = 1,3
IH2 = 202+IH
HCS = HCS + DIST*EMHHWT*MCN(IH)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IH1,IH2,2134,3+IH)
GOTO 9
ENDIF
END DO
END IF
END IF
END DO
2 CONTINUE
EVWGT = HCS
RETURN
C...generate event.
9 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
IF (AZSPIN) THEN
CALL HWVZRO(7,GCOEF)
END IF
END
CDECK ID>, HWHIGJ.
*CMZ :- -23/08/94 13.22.29 by Mike Seymour
*-- Author : Ian Knowles
C-----------------------------------------------------------------------
SUBROUTINE HWHIGJ
C-----------------------------------------------------------------------
C QCD Higgs plus jet production; mean EVWGT = Sigma in nb*Higgs B.R.
C Adapted from the program of U. Baur and E.W.N. Glover
C See: Nucl. Phys. B339 (1990) 38
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,HWUALF,HWUAEM,EPS,RCS,EMH,EMHWT,
& EMHTMP,BR,CV,CA,EMH2,ET,EJ,PT,EMT,EMAX,YMAX,YHINF,YHSUP,EXYH,
& YMIN,YJINF,YJSUP,EXYJ,S,T,U,FACT,AMPQQ,AMPQG,AMPGQ,AMPGG,HCS,
& FACTR
INTEGER I,IDEC,ID1,ID2
EXTERNAL HWRGEN,HWRUNI,HWUALF,HWUAEM
SAVE HCS,AMPGG,AMPGQ,AMPQG,AMPQQ,EMH,FACT
PARAMETER (EPS=1.D-9)
IF (GENEV) THEN
RCS=HCS*HWRGEN(0)
ELSE
EVWGT=0.
C Select a Higgs mass
CALL HWHIGM(EMH,EMHWT)
IF (EMH.LE.ZERO .OR. EMH.GE.PHEP(5,3)) RETURN
C Store branching ratio for specified Higgs deacy channel
IDEC=MOD(IPROC,100)
BR=1.
IF (IDEC.EQ.0) THEN
BR=0.
DO 10 I=1,6
10 BR=BR+BRHIG(I)
ELSEIF (IDEC.EQ.10) THEN
CALL HWDBOZ(198,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(199,ID1,ID2,CV,CA,BR,1)
BR=BR*BRHIG(IDEC)
ELSEIF (IDEC.EQ.11) THEN
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
BR=BR*BRHIG(IDEC)
ELSEIF (IDEC.LE.12) THEN
BR=BRHIG(IDEC)
ENDIF
C Select subprocess kinematics
EMH2=EMH**2
CALL HWRPOW(ET,EJ)
PT=.5*ET
EMT=SQRT(PT**2+EMH2)
EMAX=0.5*(PHEP(5,3)+EMH2/PHEP(5,3))
IF (EMAX.LE.EMT) RETURN
YMAX=LOG((EMAX+SQRT(EMAX**2-EMT**2))/EMT)
YHINF=MAX(YJMIN,-YMAX)
YHSUP=MIN(YJMAX, YMAX)
IF (YHSUP.LE.YHINF) RETURN
EXYH=EXP(HWRUNI(1,YHINF,YHSUP))
YMIN=LOG(PT/(PHEP(5,3)-EMT/EXYH))
YMAX=LOG((PHEP(5,3)-EMT*EXYH)/PT)
YJINF=MAX(YJMIN,YMIN)
YJSUP=MIN(YJMAX,YMAX)
IF (YJSUP.LE.YJINF) RETURN
EXYJ=EXP(HWRUNI(2,YJINF,YJSUP))
XX(1)=(EMT*EXYH+PT*EXYJ)/PHEP(5,3)
XX(2)=(EMT/EXYH+PT/EXYJ)/PHEP(5,3)
S=XX(1)*XX(2)*PHEP(5,3)**2
T=EMH2-XX(1)*EMT*PHEP(5,3)/EXYH
U=EMH2-S-T
COSTH=(S+2.*T-EMH2)/(S-EMH2)
C Set subprocess scale
EMSCA=EMT
CALL HWSGEN(.FALSE.)
FACT=GEV2NB*PT*EJ*(YHSUP-YHINF)*(YJSUP-YJINF)*BR*EMHWT
& *HWUALF(1,EMSCA)**3*HWUAEM(EMH2)/(SWEIN*16*PIFAC*S**2)
CALL HWHIGA(S,T,U,EMH2,AMPQQ,AMPQG,AMPGQ,AMPGG)
ENDIF
HCS=0.
DO 30 ID1=1,13
IF (DISF(ID1,1).LT.EPS) GOTO 30
FACTR=FACT*DISF(ID1,1)
IF (ID1.LT.7) THEN
C Quark first:
ID2=ID1+6
HCS=HCS+FACTR*DISF(ID2,2)*AMPQQ
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(13 ,201,2314,81)
GOTO 99
ENDIF
ID2=13
HCS=HCS+FACTR*DISF(ID2,2)*AMPQG
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,201,3124,82)
GOTO 99
ENDIF
ELSEIF (ID1.LT.13) THEN
C Antiquark first:
ID2=ID1-6
HCS=HCS+FACTR*DISF(ID2,2)*AMPQQ
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(13 ,201,3124,83)
GOTO 99
ENDIF
ID2=13
HCS=HCS+FACTR*DISF(ID2,2)*AMPQG
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,201,2314,84)
GOTO 99
ENDIF
ELSE
C Gluon first:
DO 20 ID2=1,12
IF (DISF(ID2,2).LT.EPS) GOTO 20
IF (ID2.LT.7) THEN
HCS=HCS+FACTR*DISF(ID2,2)*AMPGQ
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID2,201,2314,85)
GOTO 99
ENDIF
ELSE
HCS=HCS+FACTR*DISF(ID2,2)*AMPGQ
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID2,201,3124,86)
GOTO 99
ENDIF
ENDIF
20 CONTINUE
HCS=HCS+FACTR*DISF(13,2)*AMPGG
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(13 ,201,2314,87)
GOTO 99
ENDIF
ENDIF
30 CONTINUE
EVWGT=HCS
RETURN
C Generate event
99 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
C Trick HWETWO into using off-shell Higgs mass
EMHTMP=RMASS(IDN(4))
RMASS(IDN(4))=EMH
C-- BRW fix 27/8/04: avoid double smearing of H mass
CALL HWETWO(.TRUE.,.FALSE.)
RMASS(IDN(4))=EMHTMP
END
CDECK ID>, HWHIGM.
*CMZ :- -02/05/91 11.17.14 by Federico Carminati
*-- Author : Mike Seymour
C-----------------------------------------------------------------------
SUBROUTINE HWHIGM(EM,WEIGHT)
C-----------------------------------------------------------------------
C CHOOSE HIGGS MASS:
C IF (IOPHIG.EQ.0.OR.IOPHIG.EQ.2) THEN
C CHOOSE HIGGS MASS ACCORDING TO
C EM**4 / (EM**2-EMH**2)**2 + (GAMH*EMH)**2
C ELSE
C CHOOSE HIGGS MASS ACCORDING TO
C EMH * GAMH / (EM**2-EMH**2)**2 + (GAMH*EMH)**2
C ENDIF
C IF (IOPHIG.EQ.0.OR.IOPHIG.EQ.1) THEN
C SUPPLY WEIGHT FACTOR TO YIELD
C EM * GAM(EM)/ (EM**2-EMH**2)**2 + (GAM(EM)*EM)**2
C ELSE
C SUPPLY WEIGHT FACTOR TO YIELD
C EM*(EMH/EM)**4 * GAM(EM)
C / (EM**2-EMH**2)**2 + (GAM(EM)*EMH**2/EM)**2
C AS SUGGESTED IN M.H.SEYMOUR, PHYS.LETT.B354(1995)409.
C ENDIF
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRUNI,EM,WEIGHT,EMH,DIF,FUN,THETA,T,EMHLST,W0,
& W1,EMM,GAMEM,T0,TMIN,TMAX,THEMIN,THEMAX,ZMIN,ZMAX,Z,F,GAMOFS
INTEGER I
EXTERNAL HWRUNI
SAVE EMHLST,GAMEM,T0,TMIN,TMAX,THEMIN,THEMAX,ZMIN,ZMAX,W0,W1
EQUIVALENCE (EMH,RMASS(201))
DATA EMHLST/0D0/
C---SET UP INTEGRAND AND INDEFINITE INTEGRAL OF DISTRIBUTION
C THETA=ATAN((EM**2-EMH**2)/(GAMH*EMH)); T=TAN(THETA); T0=EMH/GAMH
DIF(T,T0)=(T+T0)**2
FUN(THETA,T,T0)=T + (T0*T0-1)*THETA + T0*LOG(1+T*T)
C---SET UP CONSTANTS
IF (EMH.NE.EMHLST .OR. FSTWGT) THEN
EMHLST=EMH
GAMEM=GAMH*EMH
T0=EMH/GAMH
TMIN=(MAX(ONE*1E-10,EMH-GAMMAX*GAMH))**2/GAMEM-T0
TMAX=( EMH+GAMMAX*GAMH )**2/GAMEM-T0
THEMIN=ATAN(TMIN)
THEMAX=ATAN(TMAX)
ZMIN=FUN(THEMIN,TMIN,T0)
ZMAX=FUN(THEMAX,TMAX,T0)
W0=(ZMAX-ZMIN) / PIFAC * GAMEM
W1=(THEMAX-THEMIN) / PIFAC
ENDIF
C---CHOOSE HIGGS MASS
IF (IOPHIG.EQ.0.OR.IOPHIG.EQ.2) THEN
EM=0
WEIGHT=0
Z=HWRUNI(1,ZMIN,ZMAX)
C---SOLVE FUN(THETA,TAN(THETA))=Z BY NEWTON'S METHOD
THETA=MAX(THEMIN, MIN(THEMAX, Z/T0**2 ))
I=1
F=0
10 IF (I.LE.20 .AND. ABS(1-F/Z).GT.1E-4) THEN
I=I+1
IF (2*ABS(THETA).GT.PIFAC) THEN
CALL HWWARN('HWHIGM',51)
GOTO 999
ENDIF
T=TAN(THETA)
F=FUN(THETA,T,T0)
THETA=THETA-(F-Z)/DIF(T,T0)
GOTO 10
ENDIF
IF (I.GT.20) CALL HWWARN('HWHIGM',1)
ELSE
THETA=HWRUNI(0,THEMIN,THEMAX)
ENDIF
EM=SQRT(GAMEM*(T0+TAN(THETA)))
C---NOW CALCULATE WEIGHT FACTOR FOR NON-CONSTANT HIGGS WIDTH
GAMOFS=EM
CALL HWDHIG(GAMOFS)
IF (IOPHIG.EQ.0) THEN
WEIGHT=W0*GAMOFS*EM /EM**4 *((EM**2-EMH**2)**2 + GAMEM**2)
& /((EM**2-EMH**2)**2 +(GAMOFS*EM)**2)
ELSEIF (IOPHIG.EQ.1) THEN
WEIGHT=W1*GAMOFS*EM /GAMEM *((EM**2-EMH**2)**2 + GAMEM**2)
& /((EM**2-EMH**2)**2 +(GAMOFS*EM)**2)
ELSEIF (IOPHIG.EQ.2) THEN
EMM=EM*(EMH/EM)**4
WEIGHT=W0*GAMOFS*EMM/EM**4 *((EM**2-EMH**2)**2 + GAMEM**2)
& /((EM**2-EMH**2)**2 +(GAMOFS*EMM)**2)
ELSEIF (IOPHIG.EQ.3) THEN
EMM=EM*(EMH/EM)**4
WEIGHT=W1*GAMOFS*EMM/GAMEM *((EM**2-EMH**2)**2 + GAMEM**2)
& /((EM**2-EMH**2)**2 +(GAMOFS*EMM)**2)
ELSE
CALL HWWARN('HWHIGM',500)
ENDIF
999 RETURN
END
CDECK ID>, HWHIGQ.
*CMZ :- -26/11/00 17.21.55 by Bryan Webber
*-- Author : Stefano Moretti
C-----------------------------------------------------------------------
C...Generate completely differential cross section (EVWGT) in the variables
C...X(I) with I=1,6 (see below) for the processes from IPROC=2500-2599 (SM),
C...IPROC=3811-3899, as described in the HERWIG 6 documentation file.
C...(For IPROC=3839,3869,3899 it describes MSSM charged Higgs production.)
C...It includes interface to PDFs and takes into account color connections
C...among partons.
C
C...First release: 08-APR-1999 by Stefano Moretti
C...Last modified: 28-JUN-2001 by Stefano Moretti
C
SUBROUTINE HWHIGQ
C-----------------------------------------------------------------------
C PRODUCTION OF MSSM HIGGSES IN ASSOCIATION WITH HEAVY QUARK PAIRS
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER JHIGGS
INTEGER I,J,K,L,M,N
INTEGER IS,IH,IQ,JQ,IIQ,JJQ,IQMIN,IQMAX,IGG,IQQ
INTEGER IDEC,NC,FLIP
INTEGER ID1,ID2
DOUBLE PRECISION CV,CA,BR
DOUBLE PRECISION BRHIGQ,EMQ,ENQ,EMQQ,EMH,EMHWT,EMW
DOUBLE PRECISION PTMMIN,PTNMIN
DOUBLE PRECISION T,TL,TLMIN,TLMAX,TTMIN,TTMAX,CTMP,RCM,RCM2
DOUBLE PRECISION X(6),XL(6),XU(6)
DOUBLE PRECISION Q4(0:3),Q34(0:3)
DOUBLE PRECISION CT5,ST5,CT4,ST4,CF4,SF4,RQ52,RQ5,RQ42,RQ4,PQ4
DOUBLE PRECISION P1(0:3),P2(0:3),P3(0:3),P4(0:3),P5(0:3)
DOUBLE PRECISION ECM_MAX,ECM,SHAT,S,TAU
DOUBLE PRECISION EMIN,EMIN1,EMIN2,PCM2,PCM
DOUBLE PRECISION M2GG,M2GGPL,M2GGMN,M2QQ
DOUBLE PRECISION GM,GRND,FACGPM(2)
DOUBLE PRECISION GGQQHT,GGQQHU,GGQQHNP,QQQQH
DOUBLE PRECISION ALPHA,ALPHAS,EMSC2
DOUBLE PRECISION HWRGEN,HWUAEM,HWUALF
DOUBLE PRECISION PHI,CPHI,SPHI,ROT(3,3)
DOUBLE PRECISION VCOL,GCOL,QAUX(0:3)
DOUBLE PRECISION EPS,HCS,RCS,FACT,DIST
DOUBLE PRECISION WEIGHT
SAVE HCS,M2QQ,M2GG,M2GGPL,M2GGMN,FACT,S,SHAT,P3,P4,P5
SAVE IIQ,JJQ,JHIGGS
LOGICAL HWRLOG
EXTERNAL HWHIGM,HWRGEN,HWUAEM,HWUALF,HWHQCP,HWH2QH,HWETWO,HWRLOG
PARAMETER (EPS=1.D-9)
EQUIVALENCE (EMW,RMASS(198)),(NC,NCOLO)
C...assign Q/Q'-flavour.
IF((MOD(IPROC,10000).EQ.3839).OR.
& (MOD(IPROC,10000).EQ.3869).OR.
& (MOD(IPROC,10000).EQ.3899))THEN
IQ=6
JQ=11
GM=HBAR/RLTIM(6)*RMASS(6)
ELSE
IF(IMSSM.EQ.0)THEN
IS=0
IH=0
IQ=6
ELSE
IF(MOD(IPROC,10000).LT.4000)IS=6
IF(MOD(IPROC,10000).LT.3870)IS=3
IF(MOD(IPROC,10000).LT.3840)IS=0
IH=MOD(IPROC,10000)/10-380-IS
IQ=MOD(IPROC,10000)-3800-10*(IH+IS)
END IF
JQ=IQ+6
GM=ZERO
END IF
C...process event.
IF(GENEV)THEN
RCS=HCS*HWRGEN(0)
ELSE
EVWGT=0.
HCS=0.
C...assign final state masses.
EMQ=RMASS(IQ)
ENQ=RMASS(JQ)
EMH=RMASS(201+IHIGGS)
EMHWT=1.
IF(IMSSM.EQ.0)CALL HWHIGM(EMH,EMHWT)
C...energy at hadron level.
ECM_MAX=PBEAM1+PBEAM2
S=ECM_MAX*ECM_MAX
C...phase space variables.
C...X(1)=(EMQQ**2-(EMQ+ENQ)**2)/((ECM-EMH)**2-(EMQ+ENQ)**2),
C...LIGHT QUARKS -> X(2)=(LOG|T|-LOG|TMIN|)/(LOG|TMAX|-LOG|TMIN|),
C... X(3)=SIN(THETA4_CM_34),X(4)=COS(FI4_CM_34),
C...HEAVY QUARKS -> X(2)=COS(THETA5_CM),
C... X(3)=COS(THETA4_CM_34),X(4)=FI4_CM_34,
C...X(5)=(1./SHAT-1./ECM_MAX**2)/(1./(EMQ+ENQ+EMH)**2-1./ECM_MAX**2),
C...X(6)=(LOG(TAU)-LOG(X1))/LOG(TAU);
C...phase space borders.
XL(1)=0.
XU(1)=1.
IF((IQ+JQ).EQ.18)THEN
XL(2)=-1.
XL(4)=0.
XU(4)=2.*PIFAC
ELSE
XL(2)=0.
XL(4)=-1.
XU(4)=1.
END IF
XU(2)=1.
XL(3)=-1.
XU(3)=1.
XL(5)=0.
XU(5)=1.
XL(6)=0.
XU(6)=1.
C...single phase space point.
100 CONTINUE
WEIGHT=1.
DO I=1,6
X(I)=XL(I)+(XU(I)-XL(I))*HWRGEN(0)
WEIGHT=WEIGHT*ABS(XU(I)-XL(I))
END DO
C...energy at parton level.
PTMMIN=0.
PTNMIN=0.
IF(IMSSM.NE.0)THEN
IF((MOD(IPROC,10000).EQ.3839).OR.
& (MOD(IPROC,10000).EQ.3869).OR.
& (MOD(IPROC,10000).EQ.3899))THEN
PTNMIN=PTMIN
ELSE
IF((IQ.NE.6).AND.(IQ.NE.12).AND.
& (JQ.NE.6).AND.(JQ.NE.12))THEN
PTMMIN=PTMIN
PTNMIN=PTMIN
ELSE
CONTINUE
END IF
END IF
END IF
ECM=SQRT(1./(X(5)*(1./(SQRT(PTMMIN**2+EMQ**2)
& +SQRT(PTNMIN**2+ENQ**2)+EMH)**2
& -1./ECM_MAX**2)
& +1./ECM_MAX**2))
IF((EMH.LE.0.).OR.(EMH.GE.ECM))RETURN
SHAT=ECM*ECM
TAU=SHAT/S
C...momentum fractions X1 and X2.
XX(1)=EXP(LOG(TAU)*(1.-X(6)))
XX(2)=TAU/XX(1)
C...three particle kinematics.
EMQQ=SQRT(X(1)*((ECM-EMH)**2-(EMQ+ENQ)**2)+(EMQ+ENQ)**2)
C...incoming partons: all massless.
EMIN=0.
IF((IQ+JQ).EQ.18)THEN
CT5=X(2)
CT4=X(3)
ST4=SQRT(1.-CT4*CT4)
CF4=COS(X(4))
SF4=SIN(X(4))
ELSE
PCM2=((ECM*ECM-EMIN*EMIN-EMIN*EMIN)**2
& -(2.*EMIN*EMIN)**2)/(4.*ECM*ECM)
PCM=SQRT(PCM2)
RCM2=((ECM*ECM-EMQQ*EMQQ-EMH*EMH)**2
& -(2.*EMQQ*EMH)**2)/(4.*ECM*ECM)
RCM=SQRT(RCM2)
TTMAX=EMIN**2+EMQQ**2-0.5D0/ECM/ECM
& *((ECM*ECM+EMIN**2-EMIN**2)*(ECM*ECM+EMQQ**2-EMH**2)
& -SQRT((ECM*ECM-(EMIN+EMIN)**2)*(ECM*ECM-(EMIN-EMIN)**2))
& *SQRT((ECM*ECM-(EMQQ+EMH)**2)*(ECM*ECM-(EMQQ-EMH)**2)))
TTMIN=EMIN**2+EMQQ**2-0.5D0/ECM/ECM
& *((ECM*ECM+EMIN**2-EMIN**2)*(ECM*ECM+EMQQ**2-EMH**2)
& +SQRT((ECM*ECM-(EMIN+EMIN)**2)*(ECM*ECM-(EMIN-EMIN)**2))
& *SQRT((ECM*ECM-(EMQQ+EMH)**2)*(ECM*ECM-(EMQQ-EMH)**2)))
TLMIN=LOG(ABS(TTMAX))
TLMAX=LOG(ABS(TTMIN))
TL=X(2)*(TLMAX-TLMIN)+TLMIN
T=EXP(ABS(TL))
CTMP=-T-EMIN**2-EMQQ**2
& +2.*SQRT(PCM**2+EMIN**2)*SQRT(RCM**2+EMQQ**2)
CT5=CTMP/2./PCM/RCM
ST4=X(3)
CT4=SQRT(1.-ST4*ST4)
IF (HWRLOG(HALF)) CT4=-CT4
CF4=X(4)
SF4=SQRT(1.-CF4*CF4)
IF (HWRLOG(HALF)) SF4=-SF4
END IF
ST5=SQRT(1.-CT5*CT5)
IF (HWRLOG(HALF)) ST5=-ST5
RQ52=((ECM*ECM-EMH*EMH-EMQQ*EMQQ)**2-(2.*EMH*EMQQ)**2)/
& (4.*ECM*ECM)
IF(RQ52.LT.0.)THEN
GOTO 100
ELSE
RQ5=SQRT(RQ52)
ENDIF
P5(1)=0.
P5(2)=RQ5*ST5
P5(3)=RQ5*CT5
P5(0)=SQRT(RQ52+EMH*EMH)
DO I=1,3
Q34(I)=-P5(I)
END DO
Q34(0)=SQRT(RQ52+EMQQ*EMQQ)
RQ42=((EMQQ*EMQQ-EMQ*EMQ-ENQ*ENQ)**2-(2.*EMQ*ENQ)**2)/
& (4.*EMQQ*EMQQ)
IF(RQ42.LT.0.)THEN
GOTO 100
ELSE
RQ4=SQRT(RQ42)
ENDIF
Q4(1)=RQ4*ST4*CF4
Q4(2)=RQ4*ST4*SF4
Q4(3)=RQ4*CT4
Q4(0)=SQRT(RQ42+ENQ*ENQ)
PQ4=0.
DO I=1,3
PQ4=PQ4+Q34(I)*Q4(I)
END DO
P4(0)=(Q34(0)*Q4(0)+PQ4)/EMQQ
P3(0)=Q34(0)-P4(0)
DO I=1,3
P4(I)=Q4(I)+Q34(I)*(P4(0)+Q4(0))/(Q34(0)+EMQQ)
P3(I)=Q34(I)-P4(I)
END DO
IF(IMSSM.NE.0)THEN
IF((MOD(IPROC,10000).EQ.3839).OR.
& (MOD(IPROC,10000).EQ.3869).OR.
& (MOD(IPROC,10000).EQ.3899))THEN
IF(SQRT(P4(1)**2+P4(2)**2).LT.PTMIN)RETURN
ELSE
IF((IQ.NE.6).AND.(IQ.NE.12).AND.
& (JQ.NE.6).AND.(JQ.NE.12))THEN
IF(SQRT(P3(1)**2+P3(2)**2).LT.PTMIN)RETURN
IF(SQRT(P4(1)**2+P4(2)**2).LT.PTMIN)RETURN
ELSE
CONTINUE
END IF
END IF
END IF
C...initial state momenta in the partonic CM.
PCM2=((SHAT-EMIN*EMIN-EMIN*EMIN)**2
& -(2.*EMIN*EMIN)**2)/(4.*SHAT)
PCM=SQRT(PCM2)
P1(0)=SQRT(PCM2+EMIN*EMIN)
P1(1)=0.
P1(2)=0.
P1(3)=PCM
P2(0)=SQRT(PCM2+EMIN*EMIN)
P2(1)=0.
P2(2)=0.
P2(3)=-PCM
C...color structured ME summed/averaged over final/initial spins and colors.
IGG=1
IQQ=1
IF((MOD(IPROC,10000).EQ.3839).OR.
& (MOD(IPROC,10000).EQ.3869).OR.
& (MOD(IPROC,10000).EQ.3899))THEN
IF(MOD(IPROC,10000).EQ.3869)IQQ=0
IF(MOD(IPROC,10000).EQ.3899)IGG=0
GRND=TANB
ELSE
IF(IMSSM.NE.0)THEN
IF((MOD(IPROC,10000)/10-380).EQ.4)IQQ=0
IF((MOD(IPROC,10000)/10-380).EQ.7)IGG=0
END IF
GRND=ONE
END IF
FACGPM(1) = ENQ *GRND
FACGPM(2) = EMQ*PARITY/GRND
CALL HWH2QH(ECM,P1,P2,P3,P4,P5,EMQ,ENQ,EMH,FACGPM,GM,IGG,IQQ,
& GGQQHT,GGQQHU,GGQQHNP,QQQQH)
M2GG=GGQQHNP/(8.*CFFAC)
M2GGPL=GGQQHT/(8.*CFFAC)
M2GGMN=GGQQHU/(8.*CFFAC)
M2QQ=QQQQH*(1.-1./CAFAC**2)/4.
C...constant factors: phi along beam and conversion GeV^2->nb.
FACT=2.*PIFAC*GEV2NB
C...Jacobians from X1,X2 to X(5),X(6)
FACT=FACT/S*(-LOG(TAU))*(1./(EMQ+ENQ+EMH)**2-1./ECM_MAX**2)
C...phase space Jacobians, pi's and flux.
FACT=FACT*RQ4*RQ5/PCM/32./(2.*PIFAC)**5
& *((ECM-EMH)**2-(EMQ+ENQ)**2)
& /2./EMQQ
C...Jacobians from CT5 to X(2).
IF((IQ+JQ).EQ.18)THEN
CONTINUE
ELSE
FACT=FACT*(TLMAX-TLMIN)/2./PCM/RCM*ABS(T)
FACT=FACT*2.*ABS(ST4/CT4/SF4)
END IF
C...EW and QCD couplings.
EMSCA=EMQ+ENQ+EMH
EMSC2=EMSCA*EMSCA
ALPHA=HWUAEM(EMSC2)
ALPHAS=HWUALF(1,EMSCA)
FACT=FACT*4.*PIFAC*ALPHA/4./SWEIN/EMW/EMW
FACT=FACT*16.*PIFAC**2*ALPHAS**2
IF((MOD(IPROC,10000).EQ.3839).OR.
& (MOD(IPROC,10000).EQ.3869).OR.
& (MOD(IPROC,10000).EQ.3899))THEN
C...enhancement factor for coupling+c.c.
FACT=FACT*4.*VCKM(3,3)
ELSE
C...enhancement factor for MSSM.
FACT=FACT*ENHANC(IQ)*ENHANC(IQ)
END IF
C...Higgs resonance.
FACT=FACT*EMHWT
C...constant weight.
FACT=FACT*WEIGHT
C...include BR of Higgs.
IF(IMSSM.EQ.0)THEN
IDEC=MOD(IPROC,100)
IF (IDEC.GT.0.AND.IDEC.LE.12) FACT=FACT*BRHIG(IDEC)
IF (IDEC.EQ.0) THEN
BRHIGQ=0.D0
DO I=1,6
BRHIGQ=BRHIGQ+BRHIG(I)
END DO
FACT=FACT*BRHIGQ
ENDIF
c bug fix 11/10/02 SM.
IF (IDEC.EQ.10) THEN
CALL HWDBOZ(198,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(199,ID1,ID2,CV,CA,BR,1)
FACT=FACT*BR
ELSEIF (IDEC.EQ.11) THEN
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
FACT=FACT*BR
ENDIF
c end of bug fix.
END IF
END IF
C...set up flavours in final state.
IF((MOD(IPROC,10000).EQ.3839).OR.
& (MOD(IPROC,10000).EQ.3869).OR.
& (MOD(IPROC,10000).EQ.3899))THEN
IF(HWRGEN(0).LT.0.5)THEN
JHIGGS=207-201
IIQ=6
JJQ=11
FLIP=0
ELSE
JHIGGS=206-201
IIQ=5
JJQ=12
FLIP=1
END IF
ELSE
JHIGGS=IHIGGS
IIQ=IQ
JJQ=JQ
FLIP=0
END IF
C...set up PDFs.
HCS=0.
CALL HWSGEN(.FALSE.)
IQMAX=13
IQMIN=1
IF((MOD(IPROC,10000).EQ.3839).OR.
& (MOD(IPROC,10000).EQ.3869).OR.
& (MOD(IPROC,10000).EQ.3899))THEN
IF(MOD(IPROC,10000).EQ.3869)IQMIN=13
IF(MOD(IPROC,10000).EQ.3899)IQMAX=12
ELSE
IF(IMSSM.NE.0)THEN
C...Some compilers don't like this statement.
C Since it does nothing, just comment it out.
C IF((MOD(IPROC,10000).GE.3811).AND.
C & (MOD(IPROC,10000).LE.3836))CONTINUE
IF((MOD(IPROC,10000).GE.3841).AND.
& (MOD(IPROC,10000).LE.3866))IQMIN=13
IF((MOD(IPROC,10000).GE.3871).AND.
& (MOD(IPROC,10000).LE.3896))IQMAX=12
END IF
END IF
DO I=IQMIN,IQMAX
IF(DISF(I,1).LT.EPS)THEN
GOTO 200
END IF
K=I/7
L=+1-2*K
IF(I.EQ.13)L=0
J=I+L*6
IF(DISF(J,2).LT.EPS)THEN
GOTO 200
END IF
DIST=DISF(I,1)*DISF(J,2)*S
IF(I.LT.13)THEN
C...set up color connections: qq-scattering.
IF(J.EQ.I+6)THEN
HCS=HCS+M2QQ*DIST*FACT
IF(GENEV.AND.HCS.GT.RCS)THEN
CONTINUE
CALL HWHQCP(IIQ,JJQ,2413, 4)
GOTO 9
END IF
ELSE IF(I.EQ.J+6)THEN
HCS=HCS+M2QQ*DIST*FACT
IF(GENEV.AND.HCS.GT.RCS)THEN
FLIP=(2-2*FLIP)/2
CALL HWHQCP(JJQ,IIQ,3142,12)
GOTO 9
END IF
END IF
ELSE
C...set up color connections: gg-scattering.
HCS=HCS
& +(M2GGPL-M2GG*M2GGPL/(M2GGPL+M2GGMN)/FLOAT(NC)**2)*DIST*FACT
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IIQ,JJQ,2413,27)
GOTO 9
ENDIF
HCS=HCS
& +(M2GGMN-M2GG*M2GGMN/(M2GGPL+M2GGMN)/FLOAT(NC)**2)*DIST*FACT
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(IIQ,JJQ,4123,28)
GOTO 9
ENDIF
END IF
200 CONTINUE
END DO
EVWGT=HCS
RETURN
C...generate event.
9 IDN(1)=I
IDN(2)=J
IDN(5)=201+JHIGGS
C...incoming partons: now massive.
EMIN1=RMASS(IDN(1))
EMIN2=RMASS(IDN(2))
C...redo initial state momenta in the partonic CM.
PCM2=((SHAT-EMIN1*EMIN1-EMIN2*EMIN2)**2
& -(2.*EMIN1*EMIN2)**2)/(4.*SHAT)
PCM=SQRT(PCM2)
P1(0)=SQRT(PCM2+EMIN1*EMIN1)
P1(1)=0.
P1(2)=0.
P1(3)=PCM
P2(0)=SQRT(PCM2+EMIN2*EMIN2)
P2(1)=0.
P2(2)=0.
P2(3)=-PCM
C...randomly rotate final state momenta around beam axis.
PHI=2.*PIFAC*HWRGEN(0)
CPHI=COS(PHI)
SPHI=SIN(PHI)
ROT(1,1)=+CPHI
ROT(1,2)=+SPHI
ROT(1,3)=0.
ROT(2,1)=-SPHI
ROT(2,2)=+CPHI
ROT(2,3)=0.
ROT(3,1)=0.
ROT(3,2)=0.
ROT(3,3)=1.
DO L=1,3
DO M=1,3
QAUX(M)=0.
DO N=1,3
IF(L.EQ.1)QAUX(M)=QAUX(M)+ROT(M,N)*P3(N)
IF(L.EQ.2)QAUX(M)=QAUX(M)+ROT(M,N)*P4(N)
IF(L.EQ.3)QAUX(M)=QAUX(M)+ROT(M,N)*P5(N)
END DO
END DO
DO M=1,3
IF(L.EQ.1)P3(M)=QAUX(M)
IF(L.EQ.2)P4(M)=QAUX(M)
IF(L.EQ.3)P5(M)=QAUX(M)
END DO
END DO
C...use HWETWO only to set up status and IDs of quarks.
COSTH=0.
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
C...do real incoming, outgoing momenta in the lab frame.
VCOL=(XX(1)-XX(2))/(XX(1)+XX(2))
GCOL=(XX(1)+XX(2))/2./SQRT(XX(1)*XX(2))
DO M=NHEP-4,NHEP+1
IF(M.EQ.NHEP-2)GO TO 888
DO N=0,3
IF(M.EQ.NHEP-4)QAUX(N)=P1(N)
IF(M.EQ.NHEP-3)QAUX(N)=P2(N)
IF(M.EQ.NHEP-1)QAUX(N)=P3(N)*(1-FLIP)+P4(N)*FLIP
IF(M.EQ.NHEP )QAUX(N)=P4(N)*(1-FLIP)+P3(N)*FLIP
IF(M.EQ.NHEP+1)QAUX(N)=P5(N)
END DO
C...perform boost.
PHEP(4,M)=GCOL*(QAUX(0)+VCOL*QAUX(3))
PHEP(3,M)=GCOL*(QAUX(3)+VCOL*QAUX(0))
PHEP(2,M)=QAUX(2)
PHEP(1,M)=QAUX(1)
888 CONTINUE
END DO
C...needs to set all final state masses.
PHEP(5,NHEP-1)=SQRT(ABS(PHEP(4,NHEP-1)**2
& -PHEP(3,NHEP-1)**2
& -PHEP(2,NHEP-1)**2
& -PHEP(1,NHEP-1)**2))
PHEP(5,NHEP )=SQRT(ABS(PHEP(4,NHEP )**2
& -PHEP(3,NHEP )**2
& -PHEP(2,NHEP )**2
& -PHEP(1,NHEP )**2))
PHEP(5,NHEP+1)=SQRT(ABS(PHEP(4,NHEP+1)**2
& -PHEP(3,NHEP+1)**2
& -PHEP(2,NHEP+1)**2
& -PHEP(1,NHEP+1)**2))
C...sets CMF.
DO I=1,4
PHEP(I,NHEP-2)=PHEP(I,NHEP-4)+PHEP(I,NHEP-3)
END DO
PHEP(5,NHEP-2)=SQRT(ABS(PHEP(4,NHEP-2)**2
& -PHEP(3,NHEP-2)**2
& -PHEP(2,NHEP-2)**2
& -PHEP(1,NHEP-2)**2))
C...status and IDs for Higgs.
ISTHEP(NHEP+1)=114
IDHW(NHEP+1)=IDN(5)
IDHEP(NHEP+1)=IDPDG(IDN(5))
C...Higgs colour (self-)connections.
JMOHEP(1,NHEP+1)=NHEP-2
JMOHEP(2,NHEP+1)=NHEP+1
JDAHEP(2,NHEP+1)=NHEP+1
JDAHEP(2,NHEP-2)=NHEP+1
NHEP=NHEP+1
IF(AZSPIN)THEN
C...set to zero the coefficients of the spin density matrices.
CALL HWVZRO(7,GCOEF)
END IF
END
C-----------------------------------------------------------------------
CDECK ID>, HWHIGS.
*CMZ :- -02/04/98 14.52.22 by Mike Seymour
*-- Author : Mike Seymour
*-- Modified: Stefano Moretti 04/05/98
C-----------------------------------------------------------------------
SUBROUTINE HWHIGS
C-----------------------------------------------------------------------
C HIGGS PRODUCTION VIA GLUON OR QUARK FUSION
C MEAN EVWGT = HIGGS PRODN C-S * BRANCHING FRACTION IN NB
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWUALF,HWHIGT,HWRGEN,HWUSQR,HWUAEM,BRHIGQ,EMH,
& CSFAC(13),EVSUM(13),EMFAC,CV,CA,BR,RWGT,E1,E2,EMQ,GFACTR,RQM(6)
INTEGER IDEC,I,J,ID1,ID2
EXTERNAL HWUALF,HWHIGT,HWRGEN,HWUSQR,HWUAEM
SAVE CSFAC,BR,EVSUM
IF (GENEV) THEN
RWGT=HWRGEN(0)*EVSUM(13)
IDN(1)=1
DO 10 I=1,12
10 IF (RWGT.GT.EVSUM(I)) IDN(1)=I+1
IDN(2)=13
IF (IDN(1).LE.12) IDN(2)=IDN(1)-6
IF (IDN(1).LE. 6) IDN(2)=IDN(1)+6
IDCMF=201+IHIGGS
CALL HWEONE
ELSE
EVWGT=0.
EMH=RMASS(201+IHIGGS)
EMFAC=1.D0
IF(IMSSM.EQ.0)CALL HWHIGM(EMH,EMFAC)
IF (EMH.LE.0 .OR. EMH.GE.PHEP(5,3)) RETURN
EMSCA=EMH
IF (EMSCA.NE.EMLST) THEN
EMLST=EMH
XXMIN=(EMH/PHEP(5,3))**2
XLMIN=LOG(XXMIN)
GFACTR=GEV2NB*HWUAEM(EMH**2)/(576.*SWEIN*RMASS(198)**2)
C--MOD BY BRW 16/07/03 TO USE RUNNING MASSES
CALL HWURQM(EMH,RQM)
DO 20 I=1,13
IF (I.EQ.13) THEN
CSFAC(I)=-GFACTR*HWHIGT( EMH)*XLMIN
& *HWUALF(1,EMH)**2*EMFAC
ELSEIF (I.GT.6) THEN
CSFAC(I)=CSFAC(I-6)
ELSE
EMQ=RQM(I)
IF (EMQ.GT.ZERO.AND.EMH.GT.TWO*EMQ) THEN
CSFAC(I)=-GFACTR*96.*PIFAC**2 *(1-(TWO*EMQ/EMH)**2)
& *(EMQ/EMH)**2 *XLMIN *EMFAC*ENHANC(I)**2
ELSE
CSFAC(I)=0
ENDIF
ENDIF
C--END MOD
20 CONTINUE
C INCLUDE BRANCHING RATIO OF HIGGS
IDEC=MOD(IPROC,100)
BR=1
IF(IMSSM.EQ.0)THEN
C SM case
IF (IDEC.EQ.0) THEN
BRHIGQ=0
DO 30 I=1,6
30 BRHIGQ=BRHIGQ+BRHIG(I)
BR=BRHIGQ
ELSEIF (IDEC.EQ.10) THEN
CALL HWDBOZ(198,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(199,ID1,ID2,CV,CA,BR,1)
BR=BR*BRHIG(IDEC)
ELSEIF (IDEC.EQ.11) THEN
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
BR=BR*BRHIG(IDEC)
ELSEIF (IDEC.LE.12) THEN
BR=BRHIG(IDEC)
ENDIF
ENDIF
ENDIF
CALL HWSGEN(.TRUE.)
EVWGT=0
E1=PHEP(4,MAX(1,JDAHEP(1,1)))
E2=PHEP(4,MAX(2,JDAHEP(1,2)))
DO 40 I=1,13
EMQ=RMASS(I)
IF (EMH.GT.2*EMQ) THEN
J=13
IF (I.LE.12) J=I-6
IF (I.LE. 6) J=I+6
IF (XX(1).LT.0.5*(1-EMQ/E1+HWUSQR(1-2*EMQ/E1)) .AND.
& XX(2).LT.0.5*(1-EMQ/E2+HWUSQR(1-2*EMQ/E2)))
& EVWGT=EVWGT+DISF(I,1)*DISF(J,2)*CSFAC(I)*BR
ENDIF
EVSUM(I)=EVWGT
40 CONTINUE
ENDIF
END
CDECK ID>, HWHIGT.
*CMZ :- -02/04/98 15.00.39 by Mike Seymour
*-- Author : Mike Seymour
C-----------------------------------------------------------------------
FUNCTION HWHIGT(EMH)
C-----------------------------------------------------------------------
C CALCULATE MOD SQUARED I DEFINED AS IN BARGER & PHILLIPS p433
C WARNING: THIS IS A FACTOR OF 3 GREATER THAN EHLQ'S ETA FUNCTION
C PARITY=+1 FOR SCALAR AND -1 FOR PSEUDOSCALAR
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWHIGT,RATIO,RAT2,EMH,FREAL,FIMAG,ETALOG,AIREAL,
& AIIMAG
INTEGER I,J,K,L
HWHIGT=0
IF (ABS(PARITY).NE.1) CALL HWWARN('HWHIGT',500)
AIREAL=0
AIIMAG=0
C---CONTRIBUTION FROM QUARK LOOPS
DO 100 I=1,NFLAV
RATIO=RMASS(I)/EMH
RAT2=RATIO**2
IF (RAT2.GT.0.25) THEN
FREAL=-2.*ASIN(0.5/RATIO)**2
FIMAG=0
ELSEIF (RAT2.LT.0.25) THEN
ETALOG=LOG( (0.5+SQRT(0.25-RAT2)) / (0.5-SQRT(0.25-RAT2)) )
FREAL=0.5 * (ETALOG**2 - PIFAC**2)
FIMAG=PIFAC * ETALOG
ELSE
FREAL=0.5 * ( - PIFAC**2)
FIMAG=0
ENDIF
IF (PARITY.EQ.1) THEN
AIREAL=AIREAL+3*RAT2*(2 + (4*RAT2-1)*FREAL)*ENHANC(I)
AIIMAG=AIIMAG+3*RAT2*( (4*RAT2-1)*FIMAG)*ENHANC(I)
ELSE
AIREAL=AIREAL-2*RAT2*(FREAL)*ENHANC(I)
AIIMAG=AIIMAG-2*RAT2*(FIMAG)*ENHANC(I)
ENDIF
100 CONTINUE
C---CONTRIBUTION FROM SQUARK LOOPS
DO 200 I=1,12
J=I/7
K=6*J+I
L=K
IF(K.GT.6)L=K-12
RATIO=RMASS(L)/EMH
RAT2=RATIO**2
IF (RAT2.GT.0.25) THEN
FREAL=-2.*ASIN(0.5/RATIO)**2
FIMAG=0
ELSEIF (RAT2.LT.0.25) THEN
ETALOG=LOG( (0.5+SQRT(0.25-RAT2)) / (0.5-SQRT(0.25-RAT2)) )
FREAL=0.5 * (ETALOG**2 - PIFAC**2)
FIMAG=PIFAC * ETALOG
ELSE
FREAL=0.5 * ( - PIFAC**2)
FIMAG=0
ENDIF
IF (PARITY.EQ.1) THEN
AIREAL=AIREAL-3*RAT2*(1 + 2*RAT2*FREAL)*SENHNC(K)
AIIMAG=AIIMAG-3*RAT2*( 2*RAT2*FIMAG)*SENHNC(K)
ENDIF
200 CONTINUE
C---FUNCTION RETURNS MOD-SQUARED OF SUM
HWHIGT=AIREAL**2 + AIIMAG**2
END
CDECK ID>, HWHIGV.
*CMZ :- -26/11/00 17.21.55 by Bryan Webber
*-- Author : Stefano Moretti
C-----------------------------------------------------------------------
C...Generate completely differential cross section (EVWGT) in the variables
C...X(I) with I=1,4 (see below) for the processes of ther series
C...IPROC=2600,2700 as described in the HERWIG 6 documentation file.
C...It includes interface to PDFs and takes into account color connections
C...among partons.
C
C...First release: 8-APR-1999 by Stefano Moretti
C
SUBROUTINE HWHIGV
C-----------------------------------------------------------------------
C MSSM NEUTRAL HIGGS PRODUCTION IN ASSOCIATION WITH GAUGE BOSON
C--BRW fix 27/8/04: corrected off-shell gauge boson mass dependence
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER I,J,K,L,M,N
INTEGER IV,IDEC
INTEGER ID1,ID2
DOUBLE PRECISION CV,CA,BR
DOUBLE PRECISION BRHIGQ,EMH,EMHWT,EMV,RMV,GAMV,RMH
DOUBLE PRECISION X(4),XL(4),XU(4)
DOUBLE PRECISION CT,ST,CCT
DOUBLE PRECISION P1(0:3),P2(0:3),P3(0:3),P4(0:3)
DOUBLE PRECISION ECM_MAX,ECM,SHAT,S,TAU
DOUBLE PRECISION EMIN,PCM2,PCM,RCM2,RCM
DOUBLE PRECISION QQV(12,12),C4W,VQ(12),AQ(12)
DOUBLE PRECISION M2,M2L,M2T
DOUBLE PRECISION ALPHA,EMSC2
DOUBLE PRECISION HWRGEN,HWUAEM
DOUBLE PRECISION RNMIN,RNMAX,THETA_MIN,THETA_MAX
DOUBLE PRECISION EPS,HCS,RCS,FACT,DIST
DOUBLE PRECISION WEIGHT
DOUBLE PRECISION VSAVE,HSAVE,CFT,QR,QL
SAVE EMH,EMV,HCS,M2,M2L,M2T,FACT,QQV,S,CT
LOGICAL HWRLOG
EXTERNAL HWHIGM,HWRGEN,HWUAEM,HWH2VH,HWETWO,HWRLOG
PARAMETER (EPS=1.D-9)
IF(IMSSM.EQ.0)THEN
IF(IPRO.EQ.26)IV=0
IF(IPRO.EQ.27)IV=1
ELSE
IF((MOD(IPROC,10000).EQ.3310).OR.
& (MOD(IPROC,10000).EQ.3320))THEN
IV=0
ELSEIF((MOD(IPROC,10000).EQ.3360).OR.
& (MOD(IPROC,10000).EQ.3370))THEN
IV=1
END IF
END IF
IF(GENEV)THEN
RCS=HCS*HWRGEN(0)
ELSE
HCS=0.
EVWGT=0.
C...assign final state masses.
RMV=RMASS(198+2*IV)
RMH=RMASS(201+IHIGGS)
IF(IV.EQ.0)GAMV=GAMW
IF(IV.EQ.1)GAMV=GAMZ
EMH=RMH
EMHWT=1.D0
IF(IMSSM.EQ.0)CALL HWHIGM(EMH,EMHWT)
C...energy at hadron level.
ECM_MAX=PBEAM1+PBEAM2
S=ECM_MAX*ECM_MAX
C...phase space variables.
C...X(1)=COS(THETA_CM),
C...X(2)=(1./SHAT-1./ECM_MAX**2)/(1./(EMV+EMH)**2-1./ECM_MAX**2),
C...X(3)=(LOG(TAU)-LOG(X1))/LOG(TAU),
C...X(4)=(THETA-THETA_MIN)/(THETA_MAX-THETA_MIN),
C...where THETA=ATAN((EMV*EMV-RMV*RMV)/RMV/GAMV);
C...phase space borders.
XL(1)=-1.
XU(1)=1.
XL(2)=0.
XU(2)=1.
XL(3)=0.
XU(3)=1.
XL(4)=0.
XU(4)=1.
C...single phase space point.
WEIGHT=1.
DO I=1,4
X(I)=XL(I)+(XU(I)-XL(I))*HWRGEN(0)
WEIGHT=WEIGHT*ABS(XU(I)-XL(I))
END DO
C...resonant boson mass.
RNMIN=RMV-GAMMAX*GAMV
THETA_MIN=ATAN((RNMIN*RNMIN-RMV*RMV)/RMV/GAMV)
RNMAX=ECM_MAX-EMH
THETA_MAX=ATAN((RNMAX*RNMAX-RMV*RMV)/RMV/GAMV)
EMV=SQRT((TAN(X(4)*(THETA_MAX-THETA_MIN)+THETA_MIN))
& *RMV*GAMV+RMV*RMV)
C...energy at parton level.
ECM=SQRT(1./(X(2)*(1./(EMV+EMH)**2-1./ECM_MAX**2)
& +1./ECM_MAX**2))
IF((EMH.LE.0.).OR.(EMH.GE.ECM))RETURN
SHAT=ECM*ECM
TAU=SHAT/S
C...momentum fractions X1 and X2.
XX(1)=EXP(LOG(TAU)*(1.-X(3)))
XX(2)=TAU/XX(1)
C...two particle kinematics.
CT=X(1)
IF(HWRLOG(HALF))THEN
ST=+SQRT(1.-CT*CT)
ELSE
ST=-SQRT(1.-CT*CT)
END IF
C...single phase space point.
RCM2=((SHAT-EMV*EMV-EMH*EMH)**2
& -(2.*EMV*EMH)**2)/(4.*SHAT)
RCM=SQRT(RCM2)
P3(0)=SQRT(RCM2+EMV*EMV)
P3(1)=0.
P3(2)=RCM*ST
P3(3)=RCM*CT
P4(0)=SQRT(RCM2+EMH*EMH)
P4(1)=0.
P4(2)=-RCM*ST
P4(3)=-RCM*CT
C...incoming partons: massless.
EMIN=0.
C...initial state momenta in the partonic CM.
PCM2=((SHAT-EMIN*EMIN-EMIN*EMIN)**2
& -(2.*EMIN*EMIN)**2)/(4.*SHAT)
PCM=SQRT(PCM2)
P1(0)=SQRT(PCM2+EMIN*EMIN)
P1(1)=0.
P1(2)=0.
P1(3)=PCM
P2(0)=SQRT(PCM2+EMIN*EMIN)
P2(1)=0.
P2(2)=0.
P2(3)=-PCM
C...color structured ME summed/averaged over final/initial spins and colors.
CALL HWH2VH(P1,P2,P3,P4,EMV,M2,M2L,M2T)
IF(M2.LE.0.)RETURN
C...vector-axial couplings of V to qq'/qq.
IF(IV.EQ.0)THEN
DO I=2,12,2
K=I
IF(I.GT.6)K=I-6
M=K/2
N=0
DO J=1,11,2
L=J
IF(J.GT.6)L=J-6
N=L-N
c bug fix 20/05/01 SM.
QQV(I,J)=VCKM(M,N)
c end of bug fix.
QQV(J,I)=QQV(I,J)
IF(N.EQ.3)N=0
END DO
END DO
ELSE IF(IV.EQ.1)THEN
C4W=(1.-SWEIN)*(1.-SWEIN)
DO I=1,11,2
VQ(I)=2.*VFCH(1,1)*SQRT(SWEIN)*SQRT(1.-SWEIN)
AQ(I)=2.*AFCH(1,1)*SQRT(SWEIN)*SQRT(1.-SWEIN)
J=I+6
IF(J.GT.12)J=J-12
QQV(I,J)=(VQ(I)*VQ(I)+AQ(I)*AQ(I))/C4W
END DO
DO I=2,12,2
VQ(I)=2.*VFCH(2,1)*SQRT(SWEIN)*SQRT(1.-SWEIN)
AQ(I)=2.*AFCH(2,1)*SQRT(SWEIN)*SQRT(1.-SWEIN)
J=I+6
IF(J.GT.12)J=J-12
QQV(I,J)=(VQ(I)*VQ(I)+AQ(I)*AQ(I))/C4W
END DO
END IF
C...constant factors: phi along beam and conversion GeV^2->nb.
FACT=2.*PIFAC*GEV2NB
C...Jacobians from X1,X2 to X(2),X(3)
FACT=FACT/S*(-LOG(TAU))*(1./(EMV+EMH)**2-1./ECM_MAX**2)
C...phase space Jacobians, pi's and flux.
FACT=FACT/64./PIFAC/PIFAC*RCM/PCM
C...EW couplings.
EMSCA=RMV+RMH
EMSC2=EMSCA*EMSCA
ALPHA=HWUAEM(EMSC2)
C--BRW fix 27/8/04: RMV*RMV --> EMV*EMV
FACT=FACT*16.*PIFAC**2*ALPHA**2/SWEIN/SWEIN*EMV*EMV
C...enhancement factor for MSSM.
FACT=FACT*ENHANC(10+IV)*ENHANC(10+IV)
C...Higgs resonance.
FACT=FACT*EMHWT
C...vector boson resonance.
FACT=FACT*(THETA_MAX-THETA_MIN)/PIFAC
C...constant weight.
FACT=FACT*WEIGHT
C...include BR of Higgs.
IF(IMSSM.EQ.0)THEN
IDEC=MOD(IPROC,100)
IF (IDEC.GT.0.AND.IDEC.LE.12) FACT=FACT*BRHIG(IDEC)
IF (IDEC.EQ.0) THEN
BRHIGQ=0.D0
DO I=1,6
BRHIGQ=BRHIGQ+BRHIG(I)
END DO
FACT=FACT*BRHIGQ
ENDIF
c bug fix 11/10/02 SM.
IF (IDEC.EQ.10) THEN
CALL HWDBOZ(198,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(199,ID1,ID2,CV,CA,BR,1)
FACT=FACT*BR
ELSEIF (IDEC.EQ.11) THEN
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
FACT=FACT*BR
ENDIF
c end of bug fix.
END IF
END IF
C...set up PDFs.
HCS=0.
CALL HWSGEN(.FALSE.)
DO I=1,12
IF(DISF(I,1).LT.EPS)THEN
GOTO 200
END IF
K=I/7
L=+1-2*K
IF(IV.EQ.0)THEN
J=I+L*6+(-1)**(I+1)
ELSE IF(IV.EQ.1)THEN
J=I+L*6
END IF
IF(DISF(J,2).LT.EPS)THEN
GOTO 200
END IF
DIST=DISF(I,1)*DISF(J,2)*S
C...QQV vector and axial couplings.
DIST=DIST*QQV(I,J)
C...no need to set up color connections.
HCS=HCS+M2*DIST*FACT
IF(GENEV.AND.HCS.GT.RCS)THEN
C...generate event.
IDN(1)=I
IDN(2)=J
IF(IV.EQ.0)
& IDN(3)=NINT(198.5-.1667*FLOAT(ICHRG(IDN(1))+ICHRG(IDN(2))))
IF(IV.EQ.1)IDN(3)=200
IDN(4)=201+IHIGGS
COSTH=CT
IDCMF=15
ICO(1)=2
ICO(2)=1
ICO(3)=3
ICO(4)=4
C...trick HWETWO in using off-shell V and H masses.
VSAVE=RMASS(IDN(3))
HSAVE=RMASS(IDN(4))
RMASS(IDN(3))=EMV
RMASS(IDN(4))=EMH
C-- BRW fix 27/8/04: avoid double smearing of W and H masses
CALL HWETWO(.FALSE.,.FALSE.)
RMASS(IDN(3))=VSAVE
RMASS(IDN(4))=HSAVE
IF(AZSPIN)THEN
C...set to zero the coefficients of the spin density matrices.
CALL HWVZRO(7,GCOEF)
END IF
C...calculates exactly polarized decay matrix of gauge boson.
IF(IERROR.NE.0)RETURN
CCT=CT
IF(I.GT.6)CCT=-CT
IF(M2L.LT.0.)M2L=0.
IF(M2T.LT.0.)M2T=0.
RHOHEP(2,NHEP-1)=M2L/M2
CFT=(M2-M2L)/(1.+CCT**2)/2.
IF(IV.EQ.0)THEN
RHOHEP(1,NHEP-1)=CFT*(1.+CCT)**2/M2
RHOHEP(3,NHEP-1)=CFT*(1.-CCT)**2/M2
ELSE IF(IV.EQ.1)THEN
QR=(VQ(I)-AQ(I))/2.
QL=(VQ(I)+AQ(I))/2.
RHOHEP(1,NHEP-1)=CFT*(QR**2*(1.-CCT)**2+QL**2*(1.+CCT)**2)
& /(QR**2+QL**2)/M2
RHOHEP(3,NHEP-1)=CFT*(QR**2*(1.+CCT)**2+QL**2*(1.-CCT)**2)
& /(QR**2+QL**2)/M2
END IF
RETURN
END IF
200 CONTINUE
END DO
EVWGT=HCS
END
CDECK ID>, HWHIGW.
*CMZ :- -26/04/91 14.55.44 by Federico Carminati
*-- Author : Mike Seymour, modified by Stefano Moretti
C-----------------------------------------------------------------------
SUBROUTINE HWHIGW
C-----------------------------------------------------------------------
C HIGGS PRODUCTION VIA W/Z BOSON FUSION
C MEAN EVWGT = HIGGS PRODN C-S * BRANCHING FRACTION IN NB
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWULDO,HWRUNI,HWRGEN,HWUAEM,K1MAX2,K1MIN2,K12,
& K2MAX2,K2MIN2,K22,EMW2,EMW,ROOTS,EMH2,EMH,ROOTS2,P1,PHI1,PHI2,
& COSPHI,COSTH1,SINTH1,COSTH2,SINTH2,P2,WEIGHT,TAU,TAULN,CSFAC,
& PSUM,PROB,Q1(5),Q2(5),H(5),A,B,C,TERM2,BRHIGQ,G1WW,G2WW,G1ZZ(6),
& G2ZZ(6),AWW,AZZ(6),PWW,PZZ(6),EMZ,EMZ2,RSUM,GLUSQ,GRUSQ,GLDSQ,
& GRDSQ,GLESQ,GRESQ,CW,CZ,EMFAC,CV,CA,BR,X2,ETA,P1JAC,FACTR,EH2
INTEGER HWRINT,IDEC,I,ID1,ID2,IHAD
LOGICAL EE,EP
EXTERNAL HWULDO,HWRUNI,HWRGEN,HWUAEM,HWRINT
SAVE EMW2,EMZ2,EE,GLUSQ,GRUSQ,GLDSQ,GRDSQ,GLESQ,GRESQ,G1ZZ,G2ZZ,
& G1WW,G2WW,CW,CZ,PSUM,AWW,PWW,AZZ,PZZ,ROOTS,Q1,Q2,H,FACTR
EQUIVALENCE (EMW,RMASS(198)),(EMZ,RMASS(200))
IHAD=2
IF (JDAHEP(1,IHAD).NE.0) IHAD=JDAHEP(1,IHAD)
IF (FSTWGT) THEN
EMW2=EMW**2
EMZ2=EMZ**2
GLUSQ=(VFCH(2,1)+AFCH(2,1))**2
GRUSQ=(VFCH(2,1)-AFCH(2,1))**2
GLDSQ=(VFCH(1,1)+AFCH(1,1))**2
GRDSQ=(VFCH(1,1)-AFCH(1,1))**2
GLESQ=(VFCH(11,1)+AFCH(11,1))**2
GRESQ=(VFCH(11,1)-AFCH(11,1))**2
G1ZZ(1)=GLUSQ*GLUSQ+GRUSQ*GRUSQ
G2ZZ(1)=GLUSQ*GRUSQ+GRUSQ*GLUSQ
G1ZZ(2)=GLUSQ*GLDSQ+GRUSQ*GRDSQ
G2ZZ(2)=GLUSQ*GRDSQ+GRUSQ*GLDSQ
G1ZZ(3)=GLDSQ*GLDSQ+GRDSQ*GRDSQ
G2ZZ(3)=GLDSQ*GRDSQ+GRDSQ*GLDSQ
G1ZZ(4)=GLESQ*GLESQ+GRESQ*GRESQ
G2ZZ(4)=GLESQ*GRESQ+GRESQ*GLESQ
G1ZZ(5)=GLESQ*GLUSQ+GRESQ*GRUSQ
G2ZZ(5)=GLESQ*GRUSQ+GRESQ*GLUSQ
G1ZZ(6)=GLESQ*GLDSQ+GRESQ*GRDSQ
G2ZZ(6)=GLESQ*GRDSQ+GRESQ*GLDSQ
G1WW=0.25
G2WW=0
FACTR=GEV2NB/(128.*PIFAC**3)
EH2=RMASS(201+IHIGGS)**2
CW=256*(PIFAC*HWUAEM(EH2)/SWEIN)**3*EMW2
CZ=256.*(PIFAC*HWUAEM(EH2))**3*EMZ2/(SWEIN*(1.-SWEIN))
ENDIF
EE=IPRO.LE.12
EP=IPRO.GE.90
IF (.NOT.GENEV) THEN
C---CHOOSE PARAMETERS
EVWGT=0.
EMH=RMASS(201+IHIGGS)
EMFAC=ONE
IF(IMSSM.EQ.0)CALL HWHIGM(EMH,EMFAC)
IF (EMH.LE.ZERO .OR. EMH.GE.PHEP(5,3)) RETURN
EMSCA=EMH
IF (EE) THEN
ROOTS=PHEP(5,3)
ELSE
TAU=(EMH/PHEP(5,3))**2
TAULN=LOG(TAU)
ROOTS=PHEP(5,3)*SQRT(EXP(HWRUNI(0,-1D-10,TAULN)))
ENDIF
EMH2=EMH**2
ROOTS2=ROOTS**2
C---CHOOSE P1 ACCORDING TO (1-ETA)*(ETA-X2)/ETA**2
C WHERE ETA=1-2P1/ROOTS AND X2=EMH**2/S
X2=EMH2/ROOTS2
1 ETA=X2**HWRGEN(0)
IF (HWRGEN(0)*(1-EMH/ROOTS)**2*ETA.GT.(1-ETA)*(ETA-X2))GOTO 1
P1JAC=0.5*ROOTS*ETA**2/((1-ETA)*(ETA-X2))
& *(-LOG(X2)*(1+X2)-2*(1-X2))
P1=0.5*ROOTS*(1-ETA)
C---CHOOSE PHI1,2 UNIFORMLY
PHI1=2*PIFAC*HWRGEN(0)
PHI2=2*PIFAC*HWRGEN(0)
COSPHI=COS(PHI2-PHI1)
C---CHOOSE K1^2, ON PROPAGATOR FACTOR
K1MAX2=2*P1*ROOTS
K1MIN2=0
K12=EMW2-(EMW2+K1MAX2)*(EMW2+K1MIN2)/
& ((K1MAX2-K1MIN2)*HWRGEN(0)+(EMW2+K1MIN2))
C---CALCULATE COSTH1 FROM K1^2
COSTH1=1+K12/(P1*ROOTS)
SINTH1=SQRT(1-COSTH1**2)
C---CHOOSE K2^2
K2MAX2=ROOTS*(ROOTS2-EMH2-2*ROOTS*P1)*(ROOTS-P1-P1*COSTH1)
& /((ROOTS-P1)**2-(P1*COSTH1)**2-(P1*SINTH1*COSPHI)**2)
K2MIN2=0
K22=EMW2-(EMW2+K2MAX2)*(EMW2+K2MIN2)/
& ((K2MAX2-K2MIN2)*HWRGEN(0)+(EMW2+K2MIN2))
C---CALCULATE A,B,C FACTORS, AND...
A=-2*K22*P1*COSTH1 - ROOTS*(ROOTS2-EMH2-2*ROOTS*P1)
B=-2*K22*P1*SINTH1*COSPHI
C=+2*K22*P1 - 2*ROOTS*K22 - ROOTS*(ROOTS2-EMH2-2*ROOTS*P1)
C---SOLVE A*COSTH2 + B*SINTH2 + C = 0 FOR COSTH2
TERM2=B**2 + A**2 - C**2
IF (TERM2.LT.ZERO) RETURN
TERM2=B*SQRT(TERM2)
IF (A.GE.ZERO) RETURN
COSTH2=(-A*C + TERM2)/(A**2+B**2)
SINTH2=SQRT(1-COSTH2**2)
C---FINALLY, GET P2
IF (COSTH2.EQ.-ONE) RETURN
P2=-K22/(ROOTS*(1+COSTH2))
C---LOAD UP CMF MOMENTA
Q1(1)=P1*SINTH1*COS(PHI1)
Q1(2)=P1*SINTH1*SIN(PHI1)
Q1(3)=P1*COSTH1
Q1(4)=P1
Q1(5)=0
Q2(1)=P2*SINTH2*COS(PHI2)
Q2(2)=P2*SINTH2*SIN(PHI2)
Q2(3)=P2*COSTH2
Q2(4)=P2
Q2(5)=0
H(1)=-Q1(1)-Q2(1)
H(2)=-Q1(2)-Q2(2)
H(3)=-Q1(3)-Q2(3)
H(4)=-Q1(4)-Q2(4)+ROOTS
CALL HWUMAS(H)
C---CALCULATE MATRIX ELEMENTS SQUARED
AWW=ENHANC(10)**2 * CW*(ROOTS2/2*HWULDO(Q1,Q2)*G1WW
& +ROOTS2/4*P1*P2*(1+COSTH1)*(1-COSTH2)*G2WW)
DO 10 I=1,6
AZZ(I)=ENHANC(11)**2 * CZ*(ROOTS2/2*HWULDO(Q1,Q2)*G1ZZ(I)
& +ROOTS2/4*P1*P2*(1+COSTH1)*(1-COSTH2)*G2ZZ(I))
& *((K12-EMW2)/(K12-EMZ2)*(K22-EMW2)/(K22-EMZ2))**2
10 CONTINUE
C---CALCULATE WEIGHT IN INTEGRAL
WEIGHT=FACTR*P2*P1JAC/(ROOTS2**2*HWULDO(H,Q2))
& *(K1MAX2-K1MIN2)/((K1MAX2+EMW2)*(K1MIN2+EMW2))
& *(K2MAX2-K2MIN2)/((K2MAX2+EMW2)*(K2MIN2+EMW2))
& * EMFAC
EMSCA=EMW
XXMIN=(ROOTS/PHEP(5,3))**2
XLMIN=LOG(XXMIN)
C---INCLUDE BRANCHING RATIO OF HIGGS
IF(IMSSM.EQ.0)THEN
IDEC=MOD(IPROC,100)
IF (IDEC.GT.0.AND.IDEC.LE.12) WEIGHT=WEIGHT*BRHIG(IDEC)
IF (IDEC.EQ.0) THEN
BRHIGQ=0
DO 20 I=1,6
20 BRHIGQ=BRHIGQ+BRHIG(I)
WEIGHT=WEIGHT*BRHIGQ
ENDIF
IF (IDEC.EQ.10) THEN
CALL HWDBOZ(198,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(199,ID1,ID2,CV,CA,BR,1)
WEIGHT=WEIGHT*BR
ELSEIF (IDEC.EQ.11) THEN
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
WEIGHT=WEIGHT*BR
ENDIF
END IF
IF (EE) THEN
CSFAC=WEIGHT
PSUM=AWW+AZZ(4)
EVWGT=CSFAC*PSUM
ELSEIF (EP) THEN
CSFAC=-WEIGHT*TAULN
XX(1)=ONE
XX(2)=XXMIN
CALL HWSFUN(XX(2),EMSCA,IDHW(IHAD),NSTRU,DISF(1,2),2)
IF (IDHW(1).LE.126) THEN
PWW=(DISF(2,2)+DISF(4,2)+DISF(7,2)+DISF( 9,2))*AWW
ELSE
PWW=(DISF(1,2)+DISF(3,2)+DISF(8,2)+DISF(10,2))*AWW
ENDIF
PZZ(5)=(DISF(2,2)+DISF(4,2)+DISF(8,2)+DISF(10,2))*AZZ(5)
PZZ(6)=(DISF(1,2)+DISF(3,2)+DISF(7,2)+DISF( 9,2))*AZZ(6)
PSUM=PWW+PZZ(5)+PZZ(6)
EVWGT=CSFAC*PSUM
ELSE
CSFAC=WEIGHT*TAULN*XLMIN
CALL HWSGEN(.TRUE.)
PWW=((DISF(2,1)+DISF(4, 1)+DISF(7,1)+DISF(9,1))
& *(DISF(8,2)+DISF(10,2)+DISF(1,2)+DISF(3,2))
& +(DISF(8,1)+DISF(10,1)+DISF(1,1)+DISF(3,1))
& *(DISF(2,2)+DISF(4, 2)+DISF(7,2)+DISF(9,2)))
& *AWW
PZZ(1)=((DISF(2,1)+DISF(4,1)+DISF(8,1)+DISF(10,1))
& *(DISF(2,2)+DISF(4,2)+DISF(8,2)+DISF(10,2)))
& *AZZ(1)
PZZ(2)=((DISF(2,1)+DISF(4,1)+DISF(8,1)+DISF(10,1))
& *(DISF(1,2)+DISF(3,2)+DISF(7,2)+DISF(9, 2))
& +(DISF(1,1)+DISF(3,1)+DISF(7,1)+DISF(9, 1))
& *(DISF(2,2)+DISF(4,2)+DISF(8,2)+DISF(10,2)))
& *AZZ(2)
PZZ(3)=((DISF(1,1)+DISF(3,1)+DISF(7,1)+DISF(9,1))
& *(DISF(1,2)+DISF(3,2)+DISF(7,2)+DISF(9,2)))
& *AZZ(3)
PSUM=PWW+PZZ(1)+PZZ(2)+PZZ(3)
C---EVENT WEIGHT IS SUM OVER ALL COMBINATIONS
EVWGT=CSFAC*PSUM
ENDIF
ELSE
C---GENERATE EVENT
C---CHOOSE EVENT TYPE
RSUM=PSUM*HWRGEN(0)
C---ELECTRON BEAMS?
IF (EE) THEN
IDN(1)=IDHW(1)
IDN(2)=IDHW(2)
C---WW FUSION?
IF (RSUM.LT.AWW) THEN
IDN(3)=IDN(1)+1
IDN(4)=IDN(2)+1
C---ZZ FUSION?
ELSE
IDN(3)=IDN(1)
IDN(4)=IDN(2)
ENDIF
C---LEPTON-HADRON COLLISION?
ELSEIF (EP) THEN
C---WW FUSION?
IDN(1)=IDHW(1)
IF (RSUM.LT.PWW) THEN
24 IDN(2)=HWRINT(1,8)
IF (IDN(2).GE.5) IDN(2)=IDN(2)+2
IF (ICHRG(IDN(1))*ICHRG(IDN(2)).GT.0) GOTO 24
PROB=DISF(IDN(2),2)*AWW/PWW
IF (HWRGEN(0).GT.PROB) GOTO 24
IDN(3)=IDN(1)+1
IF (HWRGEN(0).GT.SCABI) THEN
IDN(4)= 4*INT((IDN(2)-1)/2)-IDN(2)+3
ELSE
IDN(4)=12*INT((IDN(2)-1)/6)-IDN(2)+5
ENDIF
C---ZZ FUSION FROM U-TYPE QUARK?
ELSEIF (RSUM.LT.PWW+PZZ(5)) THEN
26 IDN(2)=2*HWRINT(1,4)
IF (IDN(2).GE.5) IDN(2)=IDN(2)+2
PROB=DISF(IDN(2),2)*AZZ(5)/PZZ(5)
IF (HWRGEN(0).GT.PROB) GOTO 26
IDN(3)=IDN(1)
IDN(4)=IDN(2)
C---ZZ FUSION FROM D-TYPE QUARK?
ELSE
28 IDN(2)=2*HWRINT(1,4)-1
IF (IDN(2).GE.5) IDN(2)=IDN(2)+2
PROB=DISF(IDN(2),2)*AZZ(6)/PZZ(6)
IF (HWRGEN(0).GT.PROB) GOTO 28
IDN(3)=IDN(1)
IDN(4)=IDN(2)
ENDIF
C---HADRON BEAMS?
ELSE
C---WW FUSION?
IF (RSUM.LT.PWW) THEN
31 DO 32 I=1,2
IDN(I)=HWRINT(1,8)
IF (IDN(I).GE.5) IDN(I)=IDN(I)+2
32 CONTINUE
IF (ICHRG(IDN(1))*ICHRG(IDN(2)).GT.0) GOTO 31
PROB=DISF(IDN(1),1)*DISF(IDN(2),2)*AWW/PWW
IF (HWRGEN(0).GT.PROB) GOTO 31
C---CHOOSE OUTGOING QUARKS
DO 33 I=1,2
IF (HWRGEN(0).GT.SCABI) THEN
IDN(I+2)=4*INT((IDN(I)-1)/2)-IDN(I)+3
ELSE
IDN(I+2)=12*INT((IDN(I)-1)/6)-IDN(I)+5
ENDIF
33 CONTINUE
C---ZZ FUSION FROM U-TYPE QUARKS?
ELSEIF (RSUM.LT.PWW+PZZ(1)) THEN
41 DO 42 I=1,2
IDN(I)=2*HWRINT(1,4)
IF (IDN(I).GE.5) IDN(I)=IDN(I)+2
42 CONTINUE
PROB=DISF(IDN(1),1)*DISF(IDN(2),2)*AZZ(1)/PZZ(1)
IF (HWRGEN(0).GT.PROB) GOTO 41
IDN(3)=IDN(1)
IDN(4)=IDN(2)
C---ZZ FUSION FROM D-TYPE QUARKS?
ELSEIF (RSUM.LT.PWW+PZZ(1)+PZZ(3)) THEN
51 DO 52 I=1,2
IDN(I)=2*HWRINT(1,4)-1
IF (IDN(I).GE.5) IDN(I)=IDN(I)+2
52 CONTINUE
PROB=DISF(IDN(1),1)*DISF(IDN(2),2)*AZZ(3)/PZZ(3)
IF (HWRGEN(0).GT.PROB) GOTO 51
IDN(3)=IDN(1)
IDN(4)=IDN(2)
C---ZZ FUSION FROM UD-TYPE PAIRS?
ELSE
61 IF (HWRGEN(0).GT.HALF) THEN
IDN(1)=2*HWRINT(1,4)-1
IDN(2)=2*HWRINT(1,4)
ELSE
IDN(1)=2*HWRINT(1,4)
IDN(2)=2*HWRINT(1,4)-1
ENDIF
DO 62 I=1,2
62 IF (IDN(I).GE.5) IDN(I)=IDN(I)+2
PROB=DISF(IDN(1),1)*DISF(IDN(2),2)*AZZ(2)/PZZ(2)
IF (HWRGEN(0).GT.PROB) GOTO 61
IDN(3)=IDN(1)
IDN(4)=IDN(2)
ENDIF
ENDIF
C---NOW BOOST TO LAB, AND SET UP STATUS CODES etc
IDCMF=15
C---INCOMING
IF (.NOT.EE) CALL HWEONE
C---CMF POINTERS
JDAHEP(1,NHEP)=NHEP+1
JDAHEP(2,NHEP)=NHEP+3
JMOHEP(1,NHEP+1)=NHEP
JMOHEP(1,NHEP+2)=NHEP
JMOHEP(1,NHEP+3)=NHEP
C---OUTGOING MOMENTA (GIVE QUARKS MASS NON-COVARIANTLY!)
Q1(5)=RMASS(IDN(1))
Q1(4)=SQRT(Q1(4)**2+Q1(5)**2)
Q2(5)=RMASS(IDN(2))
Q2(4)=SQRT(Q2(4)**2+Q2(5)**2)
H(4)=-Q1(4)-Q2(4)+PHEP(5,NHEP)
CALL HWUMAS(H)
CALL HWULOB(PHEP(1,NHEP),Q1,PHEP(1,NHEP+1))
CALL HWULOB(PHEP(1,NHEP),Q2,PHEP(1,NHEP+2))
CALL HWULOB(PHEP(1,NHEP),H,PHEP(1,NHEP+3))
C---STATUS AND IDs
ISTHEP(NHEP+1)=113
ISTHEP(NHEP+2)=114
ISTHEP(NHEP+3)=114
IDHW(NHEP+1)=IDN(3)
IDHEP(NHEP+1)=IDPDG(IDN(3))
IDHW(NHEP+2)=IDN(4)
IDHEP(NHEP+2)=IDPDG(IDN(4))
IDHW(NHEP+3)=201+IHIGGS
IDHEP(NHEP+3)=IDPDG(201+IHIGGS)
C---COLOUR LABELS
JMOHEP(2,NHEP+1)=NHEP-2
JMOHEP(2,NHEP+2)=NHEP-1
JMOHEP(2,NHEP-1)=NHEP+2
JMOHEP(2,NHEP-2)=NHEP+1
JMOHEP(2,NHEP+3)=NHEP+3
JDAHEP(2,NHEP+1)=NHEP-2
JDAHEP(2,NHEP+2)=NHEP-1
JDAHEP(2,NHEP-1)=NHEP+2
JDAHEP(2,NHEP-2)=NHEP+1
JDAHEP(2,NHEP+3)=NHEP+3
NHEP=NHEP+3
ENDIF
END
CDECK ID>, HWHIGY.
*CMZ :- -26/04/91 13.37.37 by Federico Carminati
*-- Author : Mike Seymour
C-----------------------------------------------------------------------
FUNCTION HWHIGY(A,B,XP)
C-----------------------------------------------------------------------
C CALCULATE THE INTEGRAL OF BERENDS AND KLEISS APPENDIX B
C-----------------------------------------------------------------------
IMPLICIT NONE
DOUBLE COMPLEX XQ,Z1,Z2,Z3,Z4,C0,C1,C2,C3,C4,C5,C6,C7,C8,FUN,Z
DOUBLE PRECISION HWHIGY,TWO,A,B,XP,Y
PARAMETER (TWO=2.D0)
C---DECLARE ALL THE STATEMENT-FUNCTION DEFINITIONS
C0(Z,A)=(Z**2-A)**2*((Z**2+A)**2-24*Z*(Z**2+A)+8*Z**2*(A+6))/Z**4
C1(Z,A)=A**4/(3*Z)
C2(Z,A)=-A**3*(24*Z-A)/(2*Z**2)
C3(Z,A)=A**2*(8*Z**2*(A+6)-24*A*Z+A**2)/Z**3
C4(Z,A)=-A**2*(24*Z**3+8*Z**2*(A+6)-24*A*Z+A**2)/Z**4
C5(Z,A)=Z**3-24*Z**2+8*Z*(A+6)+24*A
C6(Z,A)=0.5*Z**2-12*Z+4*(A+6)
C7(Z,A)=Z/3-8
C8(Z,A)=0.25
FUN(Z,Y,A)=C0(Z,A)*LOG(Y-Z)
& +C1(Z,A)/Y**3
& +C2(Z,A)/Y**2
& +C3(Z,A)/Y
& +C4(Z,A)*LOG(Y)
& +C5(Z,A)*Y
& +C6(Z,A)*Y**2
& +C7(Z,A)*Y**3
& +C8(Z,A)*Y**4
C---NOW EVALUATE THE INTEGRAL
HWHIGY=0
IF (A.GT.4) RETURN
XQ=DCMPLX(XP,B)
Z1=XQ+SQRT(XQ**2-A)
Z2=XQ-SQRT(XQ**2-A)
Z3=FUN(Z1,TWO,A)-FUN(Z1,SQRT(A),A)
Z4=FUN(Z2,TWO,A)-FUN(Z2,SQRT(A),A)
HWHIGY=DIMAG((Z3-Z4)/(Z1-Z2))/(8*B)
END
CDECK ID>, HWHIGZ.
*CMZ :- -02/05/91 11.18.44 by Federico Carminati
*-- Author : Mike Seymour, modified by Stefano Moretti
C-----------------------------------------------------------------------
SUBROUTINE HWHIGZ
C-----------------------------------------------------------------------
C HIGGS PRODUCTION VIA THE BJORKEN PROCESS: E+E- --> Z(*) --> Z(*)H
C WHERE ONE OR BOTH OF THE Zs IS OFF-SHELL
C USES ALGORITHM OF BERENDS AND KLEISS: NUCL.PHYS. B260(1985)32
C
C MEAN EVWGT = CROSS-SECTION (IN NB) * HIGGS BRANCHING FRACTION
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWUAEM,HWHIGY,HWRUNI,HWRGEN,HWULDO,EMZ,CVE,CAE,
& POL1,POL2,CE1,CE2,CE3,PMAX,EMZ2,S,B,FACTR,EMH,EMFAC,EMH2,A,XP,
& CV,CA,BRHIGQ,BR,X1,X2,FAC1,FAC2,XPP,XPPSQ,COEF,X,XSQ,PROB,C1,C2,
& CHIGG,PTHETA,SHIGG,C3,PHIMAX,CPHI,SPHI,C2PHI,S2PHI,PCM,ELST
INTEGER IDEC,I,NLOOP,ICMF,IHIG,IZED,IFER,IANT,ID1,ID2,IN1,IN2
EXTERNAL HWUAEM,HWHIGY,HWRUNI,HWRGEN,HWULDO
SAVE CVE,CAE,CE1,CE2,CE3,PMAX,EMZ2,S,EMH,B,FACTR,A,EMH2
EQUIVALENCE (EMZ,RMASS(200))
SAVE ELST
DATA ELST/0/
C---SET UP CONSTANTS
IN1=1
IF (JDAHEP(1,IN1).NE.0) IN1=JDAHEP(1,IN1)
IN2=2
IF (JDAHEP(1,IN2).NE.0) IN2=JDAHEP(1,IN2)
IF (FSTWGT.OR.ELST.NE.PHEP(5,3)) THEN
ELST=PHEP(5,3)
CVE=VFCH(11,1)
CAE=AFCH(11,1)
POL1=1.-EPOLN(3)*PPOLN(3)
POL2=EPOLN(3)-PPOLN(3)
CE1=(POL1*(CVE**2+CAE**2)+POL2*2.*CVE*CAE)
CE2=(POL1*2.*CVE*CAE+POL2*(CVE**2+CAE**2))
IF ((IDHW(IN1).GT.IDHW(IN2).AND.PHEP(3,IN1).LT.ZERO).OR.
& (IDHW(IN2).GT.IDHW(IN1).AND.PHEP(3,IN2).LT.ZERO)) CE2=-CE2
IF (TPOL) CE3=(CVE**2-CAE**2)
PMAX=4
EMZ2=EMZ**2
S=PHEP(5,3)**2
B=EMZ*GAMZ/S
FACTR=GEV2NB*CE1*(HWUAEM(RMASS(201+IHIGGS)**2)*ENHANC(11))**2
& /(12.*S*SWEIN*(1.-SWEIN))*B/((1-EMZ2/S)**2+B**2)
ENDIF
IF (.NOT.GENEV) THEN
C---CHOOSE HIGGS MASS, AND CALCULATE EVENT WEIGHT
EVWGT=0D0
EMH=RMASS(201+IHIGGS)
EMFAC=ONE
IF(IMSSM.EQ.0)CALL HWHIGM(EMH,EMFAC)
IF (EMH.LE.ZERO .OR. EMH.GT.PHEP(5,3)) RETURN
EMSCA=EMH
EMH2=EMH**2
A=4*EMH2/S
XP=1+(EMH2-EMZ2)/S
EVWGT=FACTR*HWHIGY(A,B,XP)*EMFAC
C---INCLUDE BRANCHING RATIO OF HIGGS
IF(IMSSM.EQ.0)THEN
IDEC=MOD(IPROC,100)
IF (IDEC.GT.0.AND.IDEC.LE.12) EVWGT=EVWGT*BRHIG(IDEC)
IF (IDEC.EQ.0) THEN
BRHIGQ=0
DO 10 I=1,6
10 BRHIGQ=BRHIGQ+BRHIG(I)
EVWGT=EVWGT*BRHIGQ
ENDIF
C Add Z branching fractions
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,0)
EVWGT=EVWGT*BR
IF (IDEC.EQ.10) THEN
CALL HWDBOZ(198,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(199,ID1,ID2,CV,CA,BR,1)
EVWGT=EVWGT*BR
ELSEIF (IDEC.EQ.11) THEN
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
CALL HWDBOZ(200,ID1,ID2,CV,CA,BR,1)
EVWGT=EVWGT*BR
ENDIF
END IF
ELSE
C---GENERATE EVENT
ICMF=NHEP+1
IHIG=NHEP+2
IZED=NHEP+3
IFER=NHEP+4
IANT=NHEP+5
CALL HWVEQU(5,PHEP(1,3),PHEP(1,ICMF))
NHEP=NHEP+5
C---CHOOSE ENERGY FRACTION OF HIGGS
X1=SQRT(A)
X2=1+0.25*A
XP=1+(EMH2-EMZ2)/S
FAC1=ATAN((X1-XP)/B)
FAC2=ATAN((X2-XP)/B)
XPP=MIN(X2,MAX(X1+B,XP))
XPPSQ=XPP**2
NLOOP=0
COEF=1./((12+2*A-12*XPP+XPPSQ)*SQRT(XPPSQ-A))
20 NLOOP=NLOOP+1
IF (NLOOP.GT.NBTRY) THEN
CALL HWWARN('HWHIGZ',101)
GOTO 999
ENDIF
X=XP+B*TAN(HWRUNI(1,FAC1,FAC2))
XSQ=X**2
PROB=COEF*((12+2*A-12*X+XSQ)*SQRT(XSQ-A))
IF (PROB.GT.PMAX) THEN
PMAX=1.1*PROB
CALL HWWARN('HWHIGZ',1)
WRITE (6,21) PMAX
21 FORMAT(7X,'NEW HWHIGZ MAX WEIGHT =',F8.4)
ENDIF
IF (PROB.LT.PMAX*HWRGEN(0)) GOTO 20
C Choose Z decay mode
CALL HWDBOZ(200,IDHW(IFER),IDHW(IANT),CV,CA,BR,0)
C1=CE1*(CV**2+CA**2)
C2=CE2*2.*CV*CA
C---CHOOSE HIGGS DIRECTION
C First polar angle
NLOOP=0
COEF=(XSQ-A)/(8.*(1.-X)+XSQ+A)
30 NLOOP=NLOOP+1
IF (NLOOP.GT.NBTRY) THEN
CALL HWWARN('HWHIGZ',102)
GOTO 999
ENDIF
CHIGG=HWRUNI(2,-ONE, ONE)
PTHETA=1-COEF*CHIGG**2
IF (PTHETA.LT.HWRGEN(1)) GOTO 30
SHIGG=SQRT(1-CHIGG**2)
C Now azimuthal angle
IF (TPOL) THEN
C3=CE3*(CV*2+CA**2)
COEF=COEF*SHIGG**2*C3/C1
PHIMAX=PTHETA+ABS(COEF)
40 CALL HWRAZM(ONE,CPHI,SPHI)
C2PHI=2.*CPHI**2-1.
S2PHI=2.*CPHI*SPHI
PROB=PTHETA-COEF*(C2PHI*COSS+S2PHI*SINS)
IF (PROB.LT.HWRGEN(1)*PHIMAX) GOTO 40
ELSE
CALL HWRAZM(ONE,CPHI,SPHI)
ENDIF
C Construct Higgs and Z momenta
PHEP(5,IHIG)=EMH
PHEP(4,IHIG)=X*PHEP(5,ICMF)/2
PCM=SQRT(PHEP(4,IHIG)**2-EMH2)
PHEP(3,IHIG)=CHIGG*PCM
PHEP(1,IHIG)=SHIGG*PCM*CPHI
PHEP(2,IHIG)=SHIGG*PCM*SPHI
CALL HWVDIF(4,PHEP(1,ICMF),PHEP(1,IHIG),PHEP(1,IZED))
CALL HWUMAS(PHEP(1,IZED))
C Choose orientation of Z decay
NLOOP=0
COEF=2.*(C1+ABS(C2))*HWULDO(PHEP(1,IN1),PHEP(1,IZED))
& *HWULDO(PHEP(1,IN2),PHEP(1,IZED))/S
IF (TPOL) COEF=COEF*(C1+ABS(C2)+ABS(C3))/(C1+ABS(C2))
PCM=PHEP(5,IZED)/2
PHEP(5,IFER)=0
PHEP(5,IANT)=0
50 NLOOP=NLOOP+1
IF (NLOOP.GT.NBTRY) THEN
CALL HWWARN('HWHIGZ',103)
GOTO 999
ENDIF
CALL HWDTWO(PHEP(1,IZED),PHEP(1,IFER),PHEP(1,IANT),
& PCM,TWO,.TRUE.)
PROB=C1*(PHEP(4,IFER)*PHEP(4,IANT)-PHEP(3,IFER)*PHEP(3,IANT))
& +C2*(PHEP(4,IFER)*PHEP(3,IANT)-PHEP(3,IFER)*PHEP(4,IANT))
IF (TPOL) PROB=PROB+C3*
& (COSS*(PHEP(1,IFER)*PHEP(1,IANT)-PHEP(2,IFER)*PHEP(2,IANT))
& +SINS*(PHEP(1,IFER)*PHEP(2,IANT)+PHEP(2,IFER)*PHEP(1,IANT)))
IF (PROB.LT.HWRGEN(2)*COEF) GOTO 50
C---SET UP STATUS CODES,
ISTHEP(ICMF)=120
ISTHEP(IHIG)=190
ISTHEP(IZED)=195
ISTHEP(IFER)=113
ISTHEP(IANT)=114
C---COLOR CONNECTIONS,
JMOHEP(1,ICMF)=1
JMOHEP(2,ICMF)=2
JDAHEP(1,ICMF)=IHIG
JDAHEP(2,ICMF)=IZED
JMOHEP(1,IHIG)=ICMF
JMOHEP(1,IZED)=ICMF
JMOHEP(1,IFER)=IZED
JMOHEP(1,IANT)=IZED
JMOHEP(2,IFER)=IANT
JMOHEP(2,IANT)=IFER
JDAHEP(1,IZED)=IFER
JDAHEP(2,IZED)=IANT
JDAHEP(2,IFER)=IANT
JDAHEP(2,IANT)=IFER
C---IDENTITY CODES
IDHW(ICMF)=200
IDHW(IHIG)=201+IHIGGS
IDHW(IZED)=200
IDHEP(ICMF)=IDPDG(IDHW(ICMF))
IDHEP(IHIG)=IDPDG(IDHW(IHIG))
IDHEP(IZED)=IDPDG(IDHW(IZED))
IDHEP(IFER)=IDPDG(IDHW(IFER))
IDHEP(IANT)=IDPDG(IDHW(IANT))
ENDIF
999 RETURN
END
CDECK ID>, HWHIHH.
*CMZ :- -25/11/01 17.11.33 by Stefano Moretti
*-- Author : Kosuke Odagiri, modified by Stefano Moretti
C-----------------------------------------------------------------------
C...Generate completely differential cross section (EVWGT) in the variable
C...X(I) with I=1 (see below) for the processes IPROC=955,965,975 as
C...described in the HERWIG 6 documentation file.
C
C...First release: 12-NOV-2001 by Stefano Moretti
C
C-----------------------------------------------------------------------
SUBROUTINE HWHIHH
C-----------------------------------------------------------------------
C PRODUCTION OF MSSM HIGGS PAIRS IN L+L- (L=E,MU)
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN, HWUAEM, HCS, RCS, S, PF, QPE,
& FACTR, SN2TH, MZ, MNN(2), MCC, EMSC2, GZ2,
& GHH(4), XWEIN, S2W, X(1), XL(1),
& XU(1), WEIGHT, ECM, RMH1, RMH2, EMH1, EMH2,
& EMHWT1, EMHWT2, EMHHWT, SHAT
INTEGER I, ID1, ID2, IH1, IH2, IH, JH
EXTERNAL HWRGEN, HWUAEM
SAVE HCS,MNN,MCC,EMHHWT,S,SHAT
DOUBLE COMPLEX Z, GZ, A, D, E
PARAMETER (Z = (0.D0,1.D0))
EQUIVALENCE (MZ, RMASS(200))
C...process event.
IF (GENEV) THEN
RCS = HCS*HWRGEN(0)
ELSE
HCS = ZERO
EVWGT = ZERO
C...energy at parton level.
ECM = PBEAM1+PBEAM2
S = ECM*ECM
SHAT = S
C...phase space variables.
C...X(1)=COS(THETA_CM),
C...phase space borders.
XL(1)= -1.
XU(1)= 1.
C...single phase space point.
WEIGHT=1.
DO I=1,1
X(I)=XL(I)+(XU(I)-XL(I))*HWRGEN(0)
WEIGHT=WEIGHT*ABS(XU(I)-XL(I))
END DO
C...final state masses.
IF((MOD(IPROC,10000).EQ.965).OR.
& (MOD(IPROC,10000).EQ.975))THEN
JH = IHIGGS-1
ID1 = 205
ID2 = 202 + JH
ELSE IF(MOD(IPROC,10000).EQ.955)THEN
JH = 4
ID1 = 206
ID2 = 207
END IF
RMH1=RMASS(ID1)
RMH2=RMASS(ID2)
EMH1=RMH1
EMH2=RMH2
EMHWT1=1.
EMHWT2=1.
EMHHWT=EMHWT1*EMHWT2
C...polar angle.
COSTH = X(1)
SN2TH = 0.25D0 - 0.25D0*COSTH**2
EMSCA = EMH1+EMH2
EMSC2 = EMSCA*EMSCA
EVWGT = ZERO
FACTR = GEV2NB*PIFAC*(HWUAEM(EMSC2))**2/SHAT*SN2TH/2.
C...constant weight.
FACTR = FACTR*WEIGHT
C...couplings and propagators.
XWEIN = TWO*SWEIN
S2W = DSQRT(XWEIN*(TWO-XWEIN))
GZ = S2W*(SHAT-MZ**2+Z*SHAT*GAMZ/MZ)/SHAT
GZ2 = DREAL(DCONJG(GZ)*GZ)
C...labels: 1 = h0, 2 = H0, 3 = A0, 4 = H+, 5 = H-.
GHH(1)= COSBMA
GHH(2)= SINBMA
GHH(3)= ONE
GHH(4)= ONE-XWEIN
C...set to zero all MEs.
DO I=1,2
MNN(I)=ZERO
END DO
MCC=ZERO
C...start subprocesses.
IF((MOD(IPROC,10000).EQ.965).OR.
& (MOD(IPROC,10000).EQ.975))THEN
c
c - + o o o
c l l -> A h / H
c
DO IH = JH,JH
QPE = SHAT-(EMH1+EMH2)**2
IF (QPE.GT.ZERO) THEN
PF = SQRT(QPE*(SHAT-(EMH1-EMH2)**2))/SHAT
MNN(IH) =
& FACTR*PF**3*GHH(IH)**2*(LFCH(11)**2+RFCH(11)**2)/GZ2
ELSE
CONTINUE
END IF
END DO
ELSE IF(MOD(IPROC,10000).EQ.955)THEN
c
c - + + -
c l l -> H H
c
IH = JH
QPE = SHAT-(EMH1+EMH2)**2
IF (QPE.GT.ZERO) THEN
PF = SQRT(QPE*(SHAT-(EMH1-EMH2)**2))/SHAT
A = GHH(IH)/GZ
D = QFCH(11)+A*LFCH(11)
E = QFCH(11)+A*RFCH(11)
MCC=FACTR*PF**3*DREAL(DCONJG(D)*D+DCONJG(E)*E)
ELSE
CONTINUE
END IF
END IF
END IF
HCS = ZERO
IF(MOD(IPROC,10000).EQ.965)THEN
IH1 = 205
IH2 = 203
HCS = HCS + EMHHWT*MNN(1)
ELSE IF(MOD(IPROC,10000).EQ.975)THEN
IH1 = 205
IH2 = 204
HCS = HCS + EMHHWT*MNN(2)
ELSE IF(MOD(IPROC,10000).EQ.955)THEN
IH1 = 206
IH2 = 207
HCS = HCS + EMHHWT*MCC
END IF
IF (GENEV.AND.HCS.GT.RCS) THEN
C...generate event.
IDN(1)=IDHW(1)
IDN(2)=IDHW(2)
IDN(3)=IH1
IDN(4)=IH2
IDCMF=15
XX(1) = ONE
XX(2) = ONE
CALL HWETWO(.TRUE.,.TRUE.)
IF (AZSPIN) THEN
CALL HWVZRO(7,GCOEF)
END IF
END IF
EVWGT = HCS
END
CDECK ID>, HWHISQ.
*CMZ :- -30/06/01 18.41.23 by Stefano Moretti
*-- Author : Stefano Moretti
C-----------------------------------------------------------------------
C...Generate completely differential cross section (EVWGT) in the variables
C...X(I) with I=1,6 (see below) for the processes from IPROC=3110
C...to IPROC=3298, as described in the HERWIG 6 documentation file.
C...It includes interface to PDFs and takes into account color connections
C...among partons.
C
C...First release: 08-APR-2000 by Stefano Moretti
C...Last modified: 29-JUN-2001 by Stefano Moretti
C
C-----------------------------------------------------------------------
SUBROUTINE HWHISQ
C-----------------------------------------------------------------------
C PRODUCTION OF MSSM HIGGSES IN ASSOCIATION WITH B,T-SQUARK PAIRS
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
COMMON/SQSQH/JHIGGS,ILBL,JH,IF1MIN,IF1MAX,IF2MIN,IF2MAX
INTEGER JHIGGS,ILBL,JH,IF1MIN,IF1MAX,IF2MIN,IF2MAX
INTEGER I,J,K,L,M,N
INTEGER IQMIN,IQMAX,IGG,IQQ,JPP
INTEGER NC,FLIP
INTEGER IF1,IF2
INTEGER JHH,IMIX1,IMIX2
INTEGER JSQ,JSQ1,JSQ2
INTEGER IME,JME
DOUBLE PRECISION EMSQ1,EMSQ2,GAMSQ1,GAMSQ2,EMSQQ,EMH,EMHWT
DOUBLE PRECISION GSQ1,GSQ2
DOUBLE PRECISION X(6),XL(6),XU(6)
DOUBLE PRECISION Q4(0:3),Q34(0:3)
DOUBLE PRECISION CT5,ST5,CT4,ST4,CF4,SF4,RQ52,RQ5,RQ42,RQ4,PQ4
DOUBLE PRECISION P1(0:3),P2(0:3),P3(0:3),P4(0:3),P5(0:3)
DOUBLE PRECISION ECM_MAX,ECM,SHAT,S,TAU
DOUBLE PRECISION EMIN,EMIN1,EMIN2,PCM2,PCM
DOUBLE PRECISION GGSQHT,GGSQHU,GGSQHN,QQSQH
DOUBLE PRECISION M2GG(8),M2GGPL(8),M2GGMN(8),M2QQ(8)
DOUBLE PRECISION ALPHA,ALPHAS,EMSC2
DOUBLE PRECISION HWRGEN,HWUAEM,HWUALF
DOUBLE PRECISION PHI,CPHI,SPHI,ROT(3,3)
DOUBLE PRECISION VCOL,GCOL,QAUX(0:3)
DOUBLE PRECISION EPS,HCS,RCS,GACT,FACT(8),DIST
DOUBLE PRECISION WEIGHT
SAVE HCS,M2QQ,M2GG,M2GGPL,M2GGMN,FACT,S,SHAT,P3,P4,P5
SAVE IME,JSQ1,JSQ2
LOGICAL HWRLOG
EXTERNAL HWRGEN,HWUAEM,HWUALF,HWHQCP,HWH2SH,HWETWO,HWRLOG
PARAMETER (EPS=1.D-9)
EQUIVALENCE (NC,NCOLO)
C...process the event.
IF(GENEV)THEN
RCS=HCS*HWRGEN(0)
ELSE
HCS=0.
EVWGT=0.
C...loop over final state flavours.
IME=0
DO I=1,8
M2GG(I)=0.
M2GGPL(I)=0.
M2GGMN(I)=0.
M2QQ(I)=0.
FACT(I)=0.
END DO
DO 2 IF1=IF1MIN,IF1MAX
IF((IF1.GE.407).AND.(IF1.LE.416))GOTO 2
DO 1 IF2=IF2MIN,IF2MAX
IF((IF2.GE.413).AND.(IF2.LE.422))GOTO 1
C...assign squark flavour.
JSQ1=IF1
JSQ2=IF2
C...check charge.
IF((ICHRG(JSQ1)+ICHRG(JSQ2))/3.NE.-ICHRG(201+JHIGGS+1))GOTO 1
IME=IME+1
IF((IME.LE.0).OR.(IME.GT.8)) THEN
CALL HWWARN('HWHISQ',100)
GOTO 999
ENDIF
C...assign final state masses and widths.
EMSQ1=RMASS(JSQ1)
EMSQ2=RMASS(JSQ2)
GAMSQ1=HBAR/RLTIM(JSQ1)
GAMSQ2=HBAR/RLTIM(JSQ2)
EMH=RMASS(201+JHIGGS+1)
EMHWT=1.
C...energy at hadron level.
ECM_MAX=PBEAM1+PBEAM2
S=ECM_MAX*ECM_MAX
C...phase space variables.
C...X(1)=(EMSQQ-EMSQ1-EMSQ2)/(ECM-EMSQ1-EMSQ2-EMH),
C...X(2)=COS(THETA5_CM),X(3)=COS(THETA4_CM_34),X(4)=FI4_CM_34,
C...X(5)=(1./SHAT-1./ECM_MAX**2)/(1./(EMSQ1+EMSQ2+EMH)**2-1./ECM_MAX**2),
C...X(6)=(LOG(TAU)-LOG(X1))/LOG(TAU);
C...phase space borders.
XL(1)=0.
XU(1)=1.
XL(2)=-1.
XU(2)=1.
XL(3)=-1.
XU(3)=1.
XL(4)=0.
XU(4)=2.*PIFAC
XL(5)=0.
XU(5)=1.
XL(6)=0.
XU(6)=1.
C...single phase space point.
100 CONTINUE
WEIGHT=1.
DO I=1,6
X(I)=XL(I)+(XU(I)-XL(I))*HWRGEN(0)
WEIGHT=WEIGHT*ABS(XU(I)-XL(I))
END DO
C...energy at parton level.
ECM=SQRT(1./(X(5)*(1./(EMSQ1+EMSQ2+EMH)**2-1./ECM_MAX**2)
& +1./ECM_MAX**2))
IF((EMH.LE.0.).OR.(EMH.GE.ECM))RETURN
SHAT=ECM*ECM
TAU=SHAT/S
C...momentum fractions X1 and X2.
XX(1)=EXP(LOG(TAU)*(1.-X(6)))
XX(2)=TAU/XX(1)
C...three particle kinematics.
EMSQQ=X(1)*(ECM-EMSQ1-EMSQ2-EMH)+EMSQ1+EMSQ2
CT5=X(2)
IF(HWRLOG(HALF))THEN
ST5=+SQRT(1.-CT5*CT5)
ELSE
ST5=-SQRT(1.-CT5*CT5)
END IF
CT4=X(3)
ST4=SQRT(1.-CT4*CT4)
CF4=COS(X(4))
SF4=SIN(X(4))
RQ52=((ECM*ECM-EMH*EMH-EMSQQ*EMSQQ)**2-(2.*EMH*EMSQQ)**2)/
& (4.*ECM*ECM)
IF(RQ52.LT.0.)THEN
GOTO 100
ELSE
RQ5=SQRT(RQ52)
ENDIF
P5(1)=0.
P5(2)=RQ5*ST5
P5(3)=RQ5*CT5
P5(0)=SQRT(RQ52+EMH*EMH)
DO I=1,3
Q34(I)=-P5(I)
END DO
Q34(0)=SQRT(RQ52+EMSQQ*EMSQQ)
RQ42=((EMSQQ*EMSQQ-EMSQ1*EMSQ1-EMSQ2*EMSQ2)**2
& -(2.*EMSQ1*EMSQ2)**2)/
& (4.*EMSQQ*EMSQQ)
IF(RQ42.LT.0.)THEN
GOTO 100
ELSE
RQ4=SQRT(RQ42)
ENDIF
Q4(1)=RQ4*ST4*CF4
Q4(2)=RQ4*ST4*SF4
Q4(3)=RQ4*CT4
Q4(0)=SQRT(RQ42+EMSQ2*EMSQ2)
PQ4=0.
DO I=1,3
PQ4=PQ4+Q34(I)*Q4(I)
END DO
P4(0)=(Q34(0)*Q4(0)+PQ4)/EMSQQ
P3(0)=Q34(0)-P4(0)
DO I=1,3
P4(I)=Q4(I)+Q34(I)*(P4(0)+Q4(0))/(Q34(0)+EMSQQ)
P3(I)=Q34(I)-P4(I)
END DO
C...incoming partons: all massless.
EMIN=0.
C...initial state momenta in the partonic CM.
PCM2=((SHAT-EMIN*EMIN-EMIN*EMIN)**2
& -(2.*EMIN*EMIN)**2)/(4.*SHAT)
PCM=SQRT(PCM2)
P1(0)=SQRT(PCM2+EMIN*EMIN)
P1(1)=0.
P1(2)=0.
P1(3)=PCM
P2(0)=SQRT(PCM2+EMIN*EMIN)
P2(1)=0.
P2(2)=0.
P2(3)=-PCM
C...color structured ME summed/averaged over final/initial spins and colors.
IGG=1
IQQ=1
JPP=(MOD(IPROC,10000)/10-ILBL/10)
IF((JPP.EQ.4).OR.(JPP.EQ.5).OR.(JPP.EQ.6))IQQ=0
IF((JPP.EQ.7).OR.(JPP.EQ.8).OR.(JPP.EQ.9))IGG=0
GSQ1=GAMSQ1*EMSQ1
GSQ2=GAMSQ2*EMSQ2
CALL HWH2SH(ECM,P1,P2,P3,P4,P5,EMSQ1,EMSQ2,EMH,GSQ1,GSQ2,
& IGG,IQQ,GGSQHT,GGSQHU,GGSQHN,QQSQH)
M2GG(IME)=GGSQHN/(8.*CFFAC)
M2GGPL(IME)=GGSQHT/(8.*CFFAC)
M2GGMN(IME)=GGSQHU/(8.*CFFAC)
M2QQ(IME)=QQSQH*(1.-1./CAFAC**2)/4.
C...constant factors: phi along beam and conversion GeV^2->nb.
GACT=2.*PIFAC*GEV2NB
C...Jacobians from X1,X2 to X(5),X(6)
GACT=GACT/S*(-LOG(TAU))*(1./(EMSQ1+EMSQ2+EMH)**2-1./ECM_MAX**2)
C...phase space Jacobians, pi's and flux.
GACT=GACT*RQ4*RQ5/PCM/32./(2.*PIFAC)**5
& *(ECM-EMSQ1-EMSQ2-EMH)
C...EW and QCD couplings.
EMSCA=EMSQ1+EMSQ2+EMH
EMSC2=EMSCA*EMSCA
ALPHA=HWUAEM(EMSC2)
ALPHAS=HWUALF(1,EMSCA)
GACT=GACT*4.*PIFAC*ALPHA/SWEIN
GACT=GACT*16.*PIFAC**2*ALPHAS**2
C...enhancement factor for MSSM.
JHH=JHIGGS
IF(JHIGGS.EQ.5)JHH=4
JSQ=JSQ1-400
IF(JSQ1.GT.412)JSQ=JSQ1-412
IMIX1=1
IMIX2=1
IF(JSQ1.GT.412)IMIX1=2
IF(JSQ2.GT.418)IMIX2=2
SENHNC(JSQ)=GHSQSS(JHH,JSQ,IMIX1,IMIX2)
GACT=GACT*SENHNC(JSQ)*SENHNC(JSQ)
C...Higgs resonance.
GACT=GACT*EMHWT
C...constant weight.
GACT=GACT*WEIGHT
C...collects it.
FACT(IME)=GACT
1 CONTINUE
2 CONTINUE
END IF
C...set up flavours in final state.
FLIP=0
C...set up PDFs.
HCS=0.
CALL HWSGEN(.FALSE.)
IQMAX=13
IF(MOD(IPROC,10000)-ILBL.GE.70)IQMAX=12
IQMIN=1
IF(MOD(IPROC,10000)-ILBL.GE.40)IQMIN=13
IF(MOD(IPROC,10000)-ILBL.GE.70)IQMIN=1
DO 3 JME=1,IME
IF((M2GGPL(JME)+M2GGMN(JME)).EQ.0.)GOTO 3
DO I=IQMIN,IQMAX
IF(DISF(I,1).LT.EPS)THEN
GOTO 200
END IF
K=I/7
L=+1-2*K
IF(I.EQ.13)L=0
J=I+L*6
IF(DISF(J,2).LT.EPS)THEN
GOTO 200
END IF
DIST=DISF(I,1)*DISF(J,2)*S
IF(I.LT.13)THEN
C...set up color connections: qq-scattering.
IF(J.EQ.I+6)THEN
HCS=HCS+M2QQ(JME)*DIST*FACT(JME)
IF(GENEV.AND.HCS.GT.RCS)THEN
CONTINUE
CALL HWHQCP(JSQ1,JSQ2,2413, 4)
GOTO 9
END IF
ELSE IF(I.EQ.J+6)THEN
HCS=HCS+M2QQ(JME)*DIST*FACT(JME)
IF(GENEV.AND.HCS.GT.RCS)THEN
FLIP=1
CALL HWHQCP(JSQ2,JSQ1,3142,12)
GOTO 9
END IF
END IF
ELSE
C...set up color connections: gg-scattering.
HCS=HCS
& +(M2GGPL(JME)-M2GG(JME)*M2GGPL(JME)
& /(M2GGPL(JME)+M2GGMN(JME))/FLOAT(NC)**2)*DIST*FACT(JME)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(JSQ1,JSQ2,2413,27)
GOTO 9
ENDIF
HCS=HCS
& +(M2GGMN(JME)-M2GG(JME)*M2GGMN(JME)
& /(M2GGPL(JME)+M2GGMN(JME))/FLOAT(NC)**2)*DIST*FACT(JME)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(JSQ1,JSQ2,4123,28)
GOTO 9
ENDIF
END IF
200 CONTINUE
END DO
3 CONTINUE
EVWGT=HCS
RETURN
C...generate event.
9 IDN(1)=I
IDN(2)=J
IDN(5)=JH
C...incoming partons: now massive.
EMIN1=RMASS(IDN(1))
EMIN2=RMASS(IDN(2))
C...redo initial state momenta in the partonic CM.
PCM2=((SHAT-EMIN1*EMIN1-EMIN2*EMIN2)**2
& -(2.*EMIN1*EMIN2)**2)/(4.*SHAT)
PCM=SQRT(PCM2)
P1(0)=SQRT(PCM2+EMIN1*EMIN1)
P1(1)=0.
P1(2)=0.
P1(3)=PCM
P2(0)=SQRT(PCM2+EMIN2*EMIN2)
P2(1)=0.
P2(2)=0.
P2(3)=-PCM
C...randomly rotate final state momenta around beam axis.
PHI=2.*PIFAC*HWRGEN(0)
CPHI=COS(PHI)
SPHI=SIN(PHI)
ROT(1,1)=+CPHI
ROT(1,2)=+SPHI
ROT(1,3)=0.
ROT(2,1)=-SPHI
ROT(2,2)=+CPHI
ROT(2,3)=0.
ROT(3,1)=0.
ROT(3,2)=0.
ROT(3,3)=1.
DO L=1,3
DO M=1,3
QAUX(M)=0.
DO N=1,3
IF(L.EQ.1)QAUX(M)=QAUX(M)+ROT(M,N)*P3(N)
IF(L.EQ.2)QAUX(M)=QAUX(M)+ROT(M,N)*P4(N)
IF(L.EQ.3)QAUX(M)=QAUX(M)+ROT(M,N)*P5(N)
END DO
END DO
DO M=1,3
IF(L.EQ.1)P3(M)=QAUX(M)
IF(L.EQ.2)P4(M)=QAUX(M)
IF(L.EQ.3)P5(M)=QAUX(M)
END DO
END DO
C...use HWETWO only to set up status and IDs of (s)quarks.
COSTH=0.
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
C...do real incoming, outgoing momenta in the lab frame.
VCOL=(XX(1)-XX(2))/(XX(1)+XX(2))
GCOL=(XX(1)+XX(2))/2./SQRT(XX(1)*XX(2))
DO M=NHEP-4,NHEP+1
IF(M.EQ.NHEP-2)GO TO 888
DO N=0,3
IF(M.EQ.NHEP-4)QAUX(N)=P1(N)
IF(M.EQ.NHEP-3)QAUX(N)=P2(N)
IF(M.EQ.NHEP-1)QAUX(N)=P3(N)*(1-FLIP)+P4(N)*FLIP
IF(M.EQ.NHEP )QAUX(N)=P4(N)*(1-FLIP)+P3(N)*FLIP
IF(M.EQ.NHEP+1)QAUX(N)=P5(N)
END DO
C...perform boost.
PHEP(4,M)=GCOL*(QAUX(0)+VCOL*QAUX(3))
PHEP(3,M)=GCOL*(QAUX(3)+VCOL*QAUX(0))
PHEP(2,M)=QAUX(2)
PHEP(1,M)=QAUX(1)
888 CONTINUE
END DO
C...needs to set all final state masses.
PHEP(5,NHEP-1)=SQRT(ABS(PHEP(4,NHEP-1)**2
& -PHEP(3,NHEP-1)**2
& -PHEP(2,NHEP-1)**2
& -PHEP(1,NHEP-1)**2))
PHEP(5,NHEP )=SQRT(ABS(PHEP(4,NHEP )**2
& -PHEP(3,NHEP )**2
& -PHEP(2,NHEP )**2
& -PHEP(1,NHEP )**2))
PHEP(5,NHEP+1)=SQRT(ABS(PHEP(4,NHEP+1)**2
& -PHEP(3,NHEP+1)**2
& -PHEP(2,NHEP+1)**2
& -PHEP(1,NHEP+1)**2))
C...sets CMF.
DO I=1,4
PHEP(I,NHEP-2)=PHEP(I,NHEP-4)+PHEP(I,NHEP-3)
END DO
PHEP(5,NHEP-2)=SQRT(ABS(PHEP(4,NHEP-2)**2
& -PHEP(3,NHEP-2)**2
& -PHEP(2,NHEP-2)**2
& -PHEP(1,NHEP-2)**2))
C...status and IDs for Higgs.
ISTHEP(NHEP+1)=114
IDHW(NHEP+1)=IDN(5)
IDHEP(NHEP+1)=IDPDG(IDN(5))
C...Higgs colour (self-)connections.
JMOHEP(1,NHEP+1)=NHEP-2
JMOHEP(2,NHEP+1)=NHEP+1
JDAHEP(2,NHEP+1)=NHEP+1
JDAHEP(2,NHEP-2)=NHEP+1
NHEP=NHEP+1
IF(AZSPIN)THEN
C...set to zero the coefficients of the spin density matrices.
CALL HWVZRO(7,GCOEF)
END IF
999 RETURN
END
CDECK ID>, HWHPH2.
*CMZ :- -12/01/93 10.12.43 by Bryan Webber
*-- Author : Ian Knowles
C-----------------------------------------------------------------------
SUBROUTINE HWHPH2
C-----------------------------------------------------------------------
C QQD direct photon pair production: mean EVWGT = sigma in nb
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,HWUALF,HWHPPB,EPS,RCS,ET,EJ,KK,KK2,
& YJ1INF,YJ1SUP,Z1,YJ2INF,YJ2SUP,Z2,FACT,FACTR,RS,S,T,U,CSTU,TQSQ,
& DSTU,HCS
INTEGER ID,ID1,ID2
EXTERNAL HWRGEN,HWRUNI,HWUALF,HWHPPB
SAVE HCS,CSTU,DSTU,FACT
PARAMETER (EPS=1.D-9)
IF (GENEV) THEN
RCS=HCS*HWRGEN(0)
ELSE
EVWGT=0.
CALL HWRPOW(ET,EJ)
KK=ET/PHEP(5,3)
KK2=KK**2
IF (KK.GE.ONE) RETURN
YJ1INF=MAX( YJMIN , LOG((1.-SQRT(1.-KK2))/KK) )
YJ1SUP=MIN( YJMAX , LOG((1.+SQRT(1.-KK2))/KK) )
IF (YJ1INF.GE.YJ1SUP) RETURN
Z1=EXP(HWRUNI(1,YJ1INF,YJ1SUP))
YJ2INF=MAX( YJMIN , -LOG(2./KK-1./Z1) )
YJ2SUP=MIN( YJMAX , LOG(2./KK-Z1) )
IF (YJ2INF.GE.YJ2SUP) RETURN
Z2=EXP(HWRUNI(2,YJ2INF,YJ2SUP))
XX(1)=0.5*(Z1+Z2)*KK
IF (XX(1).GE.ONE) RETURN
XX(2)=XX(1)/(Z1*Z2)
IF (XX(2).GE.ONE) RETURN
COSTH=(Z1-Z2)/(Z1+Z2)
S=XX(1)*XX(2)*PHEP(5,3)**2
RS=0.5*SQRT(S)
T=-0.5*S*(1.-COSTH)
U=-S-T
EMSCA=SQRT(2.*S*T*U/(S*S+T*T+U*U))
FACT=GEV2NB*PIFAC*0.5*ET*EJ*(YJ1SUP-YJ1INF)*(YJ2SUP-YJ2INF)
& *(ALPHEM/S)**2
CALL HWSGEN(.FALSE.)
CSTU=2.*(U/T+T/U)/CAFAC
IF (DISF(13,1).GT.EPS.AND.DISF(13,2).GT.EPS) THEN
TQSQ=0.
DO 10 ID=1,6
10 IF (RMASS(ID).LT.RS) TQSQ=TQSQ+QFCH(ID)**2
DSTU=DISF(13,1)*DISF(13,2)*FACT*HWHPPB(S,T,U)
& /64.*(HWUALF(1,EMSCA)*TQSQ/PIFAC)**2
ELSE
DSTU=0
ENDIF
ENDIF
HCS=0.
DO 30 ID=1,6
FACTR=FACT*CSTU*QFCH(ID)**4
C q+qbar ---> gamma+gamma
ID1=ID
ID2=ID+6
IF (DISF(ID1,1).LT.EPS.OR.DISF(ID2,2).LT.EPS) GOTO 20
HCS=HCS+FACTR*DISF(ID1,1)*DISF(ID2,2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(59,59,2134,61)
GOTO 99
ENDIF
C qbar+q ---> gamma+gamma
20 ID1=ID+6
ID2=ID
IF (DISF(ID1,1).LT.EPS.OR.DISF(ID2,2).LT.EPS) GOTO 30
HCS=HCS+FACTR*DISF(ID1,1)*DISF(ID2,2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(59,59,2134,62)
GOTO 99
ENDIF
30 CONTINUE
C g+g ---> gamma+gamma
ID1=13
ID2=13
HCS=HCS+DSTU
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(59,59,2134,63)
GOTO 99
ENDIF
EVWGT=HCS
RETURN
C Generate event
99 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
END
CDECK ID>, HWHPHO.
*CMZ :- -26/04/91 14.55.45 by Federico Carminati
*-- Author : Bryan Webber
C-----------------------------------------------------------------------
SUBROUTINE HWHPHO
C-----------------------------------------------------------------------
C QCD DIRECT PHOTON + JET PRODUCTION: MEAN EVWGT = SIGMA IN NB
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,HWUALF,HWHPPB,EPS,RCS,ET,EJ,KK,KK2,
& YJ1INF,YJ1SUP,Z1,YJ2INF,YJ2SUP,Z2,FACT,FACTR,FACTF,RS,S,T,U,CF,
& AF,CSTU,CTSU,CUST,DSTU,HCS,TQCH
INTEGER ID,ID1,ID2
EXTERNAL HWRGEN,HWRUNI,HWUALF,HWHPPB
SAVE HCS,FACT,CSTU,CTSU,CUST,DSTU
PARAMETER (EPS=1.D-9)
IF (GENEV) THEN
RCS=HCS*HWRGEN(0)
ELSE
EVWGT=0.
CALL HWRPOW(ET,EJ)
KK=ET/PHEP(5,3)
KK2=KK**2
IF (KK.GE.ONE) RETURN
YJ1INF=MAX( YJMIN , LOG((1.-SQRT(1.-KK2))/KK) )
YJ1SUP=MIN( YJMAX , LOG((1.+SQRT(1.-KK2))/KK) )
IF (YJ1INF.GE.YJ1SUP) RETURN
Z1=EXP(HWRUNI(1,YJ1INF,YJ1SUP))
YJ2INF=MAX( YJMIN , -LOG(2./KK-1./Z1) )
YJ2SUP=MIN( YJMAX , LOG(2./KK-Z1) )
IF (YJ2INF.GE.YJ2SUP) RETURN
Z2=EXP(HWRUNI(2,YJ2INF,YJ2SUP))
XX(1)=0.5*(Z1+Z2)*KK
IF (XX(1).GE.ONE) RETURN
XX(2)=XX(1)/(Z1*Z2)
IF (XX(2).GE.ONE) RETURN
COSTH=(Z1-Z2)/(Z1+Z2)
S=XX(1)*XX(2)*PHEP(5,3)**2
RS=0.5*SQRT(S)
T=-0.5*S*(1.-COSTH)
U=-S-T
C---SET EMSCA TO HARD PROCESS SCALE (APPROX ET-JET)
EMSCA=SQRT(2.*S*T*U/(S*S+T*T+U*U))
FACT=GEV2NB*PIFAC*0.5*ET*EJ*ALPHEM
& *HWUALF(1,EMSCA)*(YJ1SUP-YJ1INF)*(YJ2SUP-YJ2INF)/S**2
CALL HWSGEN(.FALSE.)
C
CF=2.*CFFAC/CAFAC
AF=-1./CAFAC
CSTU=CF*(U/T+T/U)
CTSU=AF*(U/S+S/U)
CUST=AF*(T/S+S/T)
IF (DISF(13,1).GT.EPS.AND.DISF(13,2).GT.EPS) THEN
TQCH=0.
DO 10 ID=1,6
10 IF (RMASS(ID).LT.RS) TQCH=TQCH+QFCH(ID)
DSTU=DISF(13,1)*DISF(13,2)*FACT*HWHPPB(S,T,U)
& *5./768.*(HWUALF(1,EMSCA)*TQCH/PIFAC)**2
ELSE
DSTU=0
ENDIF
ENDIF
C
HCS=0.
DO 30 ID=1,6
FACTR=FACT*QFCH(ID)**2
C---QUARK FIRST
ID1=ID
IF (DISF(ID1,1).LT.EPS) GOTO 20
ID2=ID1+6
HCS=HCS+CSTU*FACTR*DISF(ID1,1)*DISF(ID2,2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP( 13, 59,2314,41)
GOTO 9
ENDIF
ID2=13
HCS=HCS+CTSU*FACTR*DISF(ID1,1)*DISF(ID2,2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1, 59,3124,42)
GOTO 9
ENDIF
C---QBAR FIRST
20 ID1=ID+6
IF (DISF(ID1,1).LT.EPS) GOTO 30
ID2=ID
HCS=HCS+CSTU*FACTR*DISF(ID1,1)*DISF(ID2,2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP( 13, 59,3124,43)
GOTO 9
ENDIF
ID2=13
HCS=HCS+CTSU*FACTR*DISF(ID1,1)*DISF(ID2,2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1, 59,2314,44)
GOTO 9
ENDIF
30 CONTINUE
C---GLUON FIRST
ID1=13
FACTF=FACT*CUST*DISF(ID1,1)
DO 50 ID=1,6
FACTR=FACTF*QFCH(ID)**2
ID2=ID
IF (DISF(ID2,2).LT.EPS) GOTO 40
HCS=HCS+FACTR*DISF(ID2,2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID2, 59,2314,45)
GOTO 9
ENDIF
40 ID2=ID+6
IF (DISF(ID2,2).LT.EPS) GOTO 50
HCS=HCS+FACTR*DISF(ID2,2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID2, 59,3124,46)
GOTO 9
ENDIF
50 CONTINUE
C g+g ---> g+gamma
ID2=13
HCS=HCS+DSTU
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP( 13, 59,2314,47)
GOTO 9
ENDIF
EVWGT=HCS
RETURN
C---GENERATE EVENT
9 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
END
CDECK ID>, HWHPPB.
*CMZ :- -12/01/93 10.12.43 by Bryan Webber
*-- Author : Ian Knowles
C-----------------------------------------------------------------------
FUNCTION HWHPPB(S,T,U)
C-----------------------------------------------------------------------
C Quark box diagram contribution to photon/gluon scattering
C Internal quark mass neglected: m_q << U,T,S
C-----------------------------------------------------------------------
IMPLICIT NONE
DOUBLE PRECISION HWHPPB,S,T,U,S2,T2,U2,PI2,ALNTU,ALNST,ALNSU
PI2=ACOS(-1.D0)**2
S2=S**2
T2=T**2
U2=U**2
ALNTU=LOG(T/U)
ALNST=LOG(-S/T)
ALNSU=ALNST+ALNTU
HWHPPB=5.*4.
& +((2.*S2+2.*(U2-T2)*ALNTU+(T2+U2)*(ALNTU**2+PI2))/S2)**2
& +((2.*U2+2.*(T2-S2)*ALNST+(T2+S2)* ALNST**2 )/U2)**2
& +((2.*T2+2.*(U2-S2)*ALNSU+(U2+S2)* ALNSU**2 )/T2)**2
& +4.*PI2*(((T2-S2+(T2+S2)*ALNST)/U2)**2
& +((U2-S2+(U2+S2)*ALNSU)/T2)**2)
END
CDECK ID>, HWHPPE.
*CMZ :- -12/01/93 10.12.43 by Bryan Webber
*-- Author : Ian Knowles
C-----------------------------------------------------------------------
SUBROUTINE HWHPPE
C-----------------------------------------------------------------------
C point-like photon/QCD heavy flavour single excitation, using exact
C massive lightcone kinematics, mean EVWGT = sigma in nb.
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,HWUALF,EPS,PP1,PP2,QM2,FACTR,
& PT,PJ,PT2,PTM,EXY,T,CC,EXY2,S,U,C,SIGE,HCS,RCS
INTEGER IQ1,IQ2,ID1,ID2,IHAD1,IHAD2
EXTERNAL HWRGEN,HWRUNI,HWUALF
SAVE PP1,PP2,IQ1,IQ2,QM2,FACTR,SIGE,HCS
PARAMETER (EPS=1.E-9)
IHAD1=1
IF (JDAHEP(1,IHAD1).NE.0) IHAD1=JDAHEP(1,IHAD1)
IHAD2=2
IF (JDAHEP(1,IHAD2).NE.0) IHAD2=JDAHEP(1,IHAD2)
IF (FSTWGT.OR.IHAD1.NE.1.OR.IHAD2.NE.2) THEN
PP1=PHEP(4,IHAD1)+ABS(PHEP(3,IHAD1))
PP2=PHEP(4,IHAD2)+ABS(PHEP(3,IHAD2))
XX(1)=1.
IQ1=MOD(IPROC,100)
IQ2=IQ1+6
QM2=RMASS(IQ1)**2
FACTR=GEV2NB*(YJMAX-YJMIN)*4.*PIFAC*CFFAC*PP1
& *ALPHEM*QFCH(IQ1)**2
ENDIF
IF (GENEV) THEN
RCS=HCS*HWRGEN(0)
ELSE
EVWGT=0.
CALL HWRPOW(PT,PJ)
PT2=PT**2
PTM=SQRT(PT2+QM2)
EXY=EXP(HWRUNI(1,YJMIN,YJMAX))
T=-PP1*PT/EXY
CC=T**2-4.*QM2*(PT2+T)
IF (CC.LT.ZERO) RETURN
EXY2=(2.*PT2+T-SQRT(CC))*PP1/(2.*T*PTM)
IF (EXY2.LT.EXP(YJMIN).OR.EXY2.GT.EXP(YJMAX)) RETURN
XX(2)=(PT/EXY+PTM/EXY2)/PP2
IF (XX(2).GT.ONE) RETURN
C define: S=Shat-M**2, T=That ,U=Uhat-M**2 (2p.Q, -2p.g, -2p.Q')
S=XX(2)*PP1*PP2
U=-S-T
COSTH=(1.+QM2/S)*(T-U)/S-QM2/S
C Set hard process scale (Approx ET-jet)
EMSCA=SQRT(2.*S*T*U/(S*S+T*T+U*U))
C=QM2*T/(U*S)
SIGE=-FACTR*PT*PJ*HWUALF(1,EMSCA)*(S/U+U/S+4.*C*(1.-C))
& /(S**2*EXY2*PTM*(1-QM2/(XX(2)*PP2*EXY2)**2))
CALL HWSFUN(XX(2),EMSCA,IDHW(IHAD2),NSTRU,DISF(1,2),2)
ENDIF
HCS=0.
ID1=59
C photon+Q ---> g+Q
ID2=IQ1
IF (DISF(ID2,2).LT.EPS) GOTO 10
HCS=HCS+SIGE*DISF(ID2,2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(13,ID2,1423,51)
GOTO 99
ENDIF
C photon+Qbar ---> g+Qbar
10 ID2=IQ2
IF (DISF(ID2,2).LT.EPS) GOTO 20
HCS=HCS+SIGE*DISF(ID2,2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(13,ID2,1342,52)
GOTO 99
ENDIF
20 EVWGT=HCS
RETURN
C Generate event
99 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
END
CDECK ID>, HWHPPH.
*CMZ :- -12/01/93 10.12.43 by Bryan Webber
*-- Author : Ian Knowles
C-----------------------------------------------------------------------
SUBROUTINE HWHPPH
C-----------------------------------------------------------------------
C Point-like photon/gluon heavy flavour pair production, with
C exact lightcone massive kinematics, mean EVWGT = sigma in nb.
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRUNI,HWUALF,EPS,PP1,PP2,QM2,FACTR,ET,EJ,ET2,
& EXY,EXY2,S,T,U,C
INTEGER IQ1,IHAD1,IHAD2
EXTERNAL HWRUNI,HWUALF
SAVE PP1,PP2,IQ1,QM2,FACTR
PARAMETER (EPS=1.E-9)
IHAD1=1
IF (JDAHEP(1,IHAD1).NE.0) IHAD1=JDAHEP(1,IHAD1)
IHAD2=2
IF (JDAHEP(1,IHAD2).NE.0) IHAD2=JDAHEP(1,IHAD2)
IF (FSTWGT.OR.IHAD1.NE.1.OR.IHAD2.NE.2) THEN
PP1=PHEP(4,IHAD1)+ABS(PHEP(3,IHAD1))
PP2=PHEP(4,IHAD2)+ABS(PHEP(3,IHAD2))
XX(1)=1.
IQ1=MOD(IPROC,100)
QM2=RMASS(IQ1)**2
IHPRO=53
FACTR=-GEV2NB*(YJMAX-YJMIN)*.5*PIFAC*ALPHEM*QFCH(IQ1)**2
ENDIF
IF (GENEV) THEN
C Generate event
IDN(1)=59
IDN(2)=13
IDN(3)=IQ1
IDN(4)=IQ1+6
ICO(1)=1
ICO(2)=4
ICO(3)=2
ICO(4)=3
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
ELSE
C Select kinematics
EVWGT=0.
CALL HWRPOW(ET,EJ)
ET2=ET**2
EXY=EXP(HWRUNI(1,YJMIN,YJMAX))
EXY2=2.*PP1/ET-EXY
IF (EXY2.LT.EXP(YJMIN).OR.EXY2.GT.EXP(YJMAX)) RETURN
XX(2)=.5*ET*(1./EXY+1./EXY2)/PP2
IF (XX(2).LT.ZERO.OR.XX(2).GT.ONE) RETURN
S=XX(2)*PP1*PP2
IF (S.LT.ET2) RETURN
C define: S=Shat, T=That-M**2, U=Uhat-M**2 (2p.g, -2p.Q, -2p.QBar)
T=-.5*PP1*ET/EXY
U=-S-T
COSTH=(T-U)/(S*SQRT(1.-4.*QM2/S))
EMSCA=SQRT(2.*S*T*U/(S*S+T*T+U*U))
CALL HWSFUN(XX(2),EMSCA,IDHW(IHAD2),NSTRU,DISF(1,2),2)
C photon+g ---> Q+Qbar
IF (DISF(13,2).LT.EPS) THEN
EVWGT=0.
ELSE
C=QM2*S/(U*T)
EVWGT=FACTR*EJ*ET*HWUALF(1,EMSCA)
& *DISF(13,2)*(T/U+U/T+4.*C*(1.-C))/(S*T)
ENDIF
ENDIF
END
CDECK ID>, HWHPPM.
*CMZ :- -09/12/93 15.50.26 by Mike Seymour
*-- Author : Ian Knowles & Mike Seymour
C-----------------------------------------------------------------------
SUBROUTINE HWHPPM
C-----------------------------------------------------------------------
C Point-like photon/QCD direct meson production
C See M. Benayoun, et al., Nucl. Phys. B282 (1987) 653 for details.
C mean EVWGT = sigma in nb
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,HWUALF,EPS,PP1,PP2,ET,EJ,EXY,EXY2,
& FACT,FACTR,S,T,U,REDS,DELT(3,3),C1STU,C3STU,HCS,RCS,CMIX,SMIX,
& C1WVFN,FPI,FETA8,FETA1,FRHO,FPHI8,FPHI1,FPI2,FETA2(3),FETAP2(3),
7 FRHO2,FPHI2(3),FOMEG2(3)
INTEGER MNAME(3,3,2),N4(3),I,J,ID2,ID4,I2,I4,M1,M2,IHAD1,IHAD2
LOGICAL SPIN0,SPIN1
EXTERNAL HWRGEN,HWRUNI,HWUALF
SAVE FPI2,FETA2,FETAP2,FRHO2,FPHI2,FOMEG2,HCS,REDS,FACT,DELT,
& C1STU,C3STU
PARAMETER (EPS=1.D-20)
SAVE MNAME,N4,SPIN0,SPIN1,C1WVFN,FPI,FETA8,FETA1,FRHO,FPHI8,FPHI1
DATA MNAME/21,38,42,30,21,34,50,46,0,23,39,43,31,23,35,51,47,0/
DATA N4,SPIN0,SPIN1/3,3,2,.TRUE.,.TRUE./
DATA C1WVFN,FPI,FETA8,FETA1,FRHO,FPHI8,FPHI1
& /1.D0,3*0.093D0,3*0.107D0/
IF (FSTWGT) THEN
FPI2=FPI**2
CMIX=COS(ETAMIX*PIFAC/180.D0)
SMIX=SIN(ETAMIX*PIFAC/180.D0)
FETA2(1) =(+CMIX*FETA8/SQRT(TWO)-SMIX*FETA1)**2/THREE
FETA2(2) =FETA2(1)
FETA2(3) =(-CMIX*FETA8*SQRT(TWO)-SMIX*FETA1)**2/THREE
FETAP2(1)=(+SMIX*FETA8/SQRT(TWO)+CMIX*FETA1)**2/THREE
FETAP2(2)=FETAP2(1)
FETAP2(3)=(-SMIX*FETA8*SQRT(TWO)+CMIX*FETA1)**2/THREE
FRHO2=FRHO**2
CMIX=COS(PHIMIX*PIFAC/180.D0)
SMIX=SIN(PHIMIX*PIFAC/180.D0)
FPHI2(1) =(+CMIX*FPHI8/SQRT(TWO)-SMIX*FPHI1)**2/THREE
FPHI2(2) =FPHI2(1)
FPHI2(3) =(-CMIX*FPHI8*SQRT(TWO)-SMIX*FPHI1)**2/THREE
FOMEG2(1)=(+SMIX*FPHI8/SQRT(TWO)+CMIX*FPHI1)**2/THREE
FOMEG2(2)=FOMEG2(1)
FOMEG2(3)=(-SMIX*FPHI8*SQRT(TWO)+CMIX*FPHI1)**2/THREE
ENDIF
SPIN0=.NOT.(MOD(IPROC/10,10).EQ.2)
SPIN1=.NOT.(MOD(IPROC/10,10).EQ.1)
IF (GENEV) THEN
RCS=HCS*HWRGEN(0)
ELSE
EVWGT=ZERO
IHAD1=1
IF (JDAHEP(1,IHAD1).NE.0) IHAD1=JDAHEP(1,IHAD1)
IHAD2=2
IF (JDAHEP(1,IHAD2).NE.0) IHAD2=JDAHEP(1,IHAD2)
PP1=PHEP(4,IHAD1)+ABS(PHEP(3,IHAD1))
PP2=PHEP(4,IHAD2)+ABS(PHEP(3,IHAD2))
XX(1)=ONE
CALL HWRPOW(ET,EJ)
EXY=EXP(HWRUNI(1,YJMIN,YJMAX))
EXY2=TWO*PP1/ET-EXY
IF (EXY2.LE.EXP(YJMIN).OR.EXY2.GE.EXP(YJMAX)) RETURN
XX(2)=PP1/(PP2*EXY*EXY2)
IF (XX(2).LE.ZERO.OR.XX(2).GE.ONE) RETURN
S=XX(2)*PP1*PP2
REDS=SQRT(S-ET*SQRT(S))
T=-HALF*PP1*ET/EXY
U=-S-T
COSTH=(T-U)/S
C Set EMSCA to hard process scale (Approx ET-jet)
EMSCA=SQRT(TWO*S*T*U/(S*S+T*T+U*U))
FACT=-GEV2NB*ET*EJ*(YJMAX-YJMIN)*ALPHEM*CFFAC
& *(HWUALF(1,EMSCA)*PIFAC*C1WVFN)**2*32.D0/(THREE*S*T)
CALL HWSFUN(XX(2),EMSCA,IDHW(IHAD2),NSTRU,DISF(1,2),2)
DO 10 I=1,3
DO 10 J=1,3
10 DELT(I,J)=(QFCH(I)*U+QFCH(J)*S)**2
C1STU=-(S**2+U**2)/(T*S**2*U**2)
C3STU=-8.D0*T/(S**2*U**2)
ENDIF
HCS=ZERO
DO 50 I2=1,3
C Quark initiated processes
ID2=I2
IF (DISF(ID2,2).LT.EPS) GOTO 30
DO 20 ID4=1,N4(I2)
M1=MNAME(ID2,ID4,1)
FACTR=FACT*DELT(ID2,ID4)*DISF(ID2,2)
IF (ID2.EQ.ID4) FACTR=HALF*FACTR
IF (SPIN0.AND.REDS.GT.RMASS(M1)) THEN
C photon+q --> meson_0+q'
HCS=HCS+HALF*FACTR*C1STU*FPI2
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(M1,ID4,1432,71)
GOTO 99
ENDIF
ENDIF
M2=MNAME(ID2,ID4,2)
IF (SPIN1.AND.REDS.GT.RMASS(M2)) THEN
C photon+q --> meson_L+q'
HCS=HCS+FACTR*C1STU*FRHO2
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(M2,ID4,1432,72)
GOTO 99
ENDIF
C photon+q --> meson_T+q'
HCS=HCS+FACTR*C3STU*FRHO2
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(M2,ID4,1432,73)
GOTO 99
ENDIF
ENDIF
20 CONTINUE
FACTR=FACT*DELT(I2,I2)*DISF(ID2,2)
IF (SPIN0.AND.REDS.GT.RMASS(22)) THEN
C photon+q -->eta+q
HCS=HCS+HALF*FACTR*C1STU*FETA2(I2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(22,ID2,1432,71)
GOTO 99
ENDIF
ENDIF
IF (SPIN0.AND.REDS.GT.RMASS(25)) THEN
C photon+q -->eta'+q
HCS=HCS+HALF*FACTR*C1STU*FETAP2(I2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(25,ID2,1432,71)
GOTO 99
ENDIF
ENDIF
IF (SPIN1.AND.REDS.GT.RMASS(56)) THEN
C photon+q -->phi_L+q
HCS=HCS+FACTR*C1STU*FPHI2(I2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(56,ID2,1432,72)
GOTO 99
ENDIF
C photon+q -->phi_T+q
HCS=HCS+FACTR*C3STU*FPHI2(I2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(56,ID2,1432,73)
GOTO 99
ENDIF
ENDIF
IF (SPIN1.AND.REDS.GT.RMASS(24)) THEN
C photon+q -->omega_L+q
HCS=HCS+FACTR*C1STU*FOMEG2(I2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(24,ID2,1432,72)
GOTO 99
ENDIF
C photon+q -->omega_T+q
HCS=HCS+FACTR*C3STU*FOMEG2(I2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(24,ID2,1432,73)
GOTO 99
ENDIF
ENDIF
C Anti-quark initiated processes
30 ID2=I2+6
IF (DISF(ID2,2).LT.EPS) GOTO 50
DO 40 I4=1,N4(I2)
ID4=I4+6
FACTR=FACT*DELT(I2,I4)*DISF(ID2,2)
IF (ID2.EQ.ID4) FACTR=HALF*FACTR
M1=MNAME(I4,I2,1)
IF (SPIN0.AND.REDS.GT.RMASS(M1)) THEN
C photon+qbar --> meson_0+qbar'
HCS=HCS+HALF*FACTR*C1STU*FPI2
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(M1,ID4,1432,74)
GOTO 99
ENDIF
ENDIF
M2=MNAME(I4,I2,2)
IF (SPIN1.AND.REDS.GT.RMASS(M2)) THEN
C photon+qbar --> meson_L+qbar'
HCS=HCS+FACTR*C1STU*FRHO2
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(M2,ID4,1432,75)
GOTO 99
ENDIF
C photon+qbar --> meson_T+qbar'
HCS=HCS+FACTR*C3STU*FRHO2
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(M2,ID4,1432,76)
GOTO 99
ENDIF
ENDIF
40 CONTINUE
FACTR=FACT*DELT(I2,I2)*DISF(ID2,2)
IF (SPIN0.AND.REDS.GT.RMASS(22)) THEN
C photon+qbar -->eta+qbar
HCS=HCS+HALF*FACTR*C1STU*FETA2(I2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(22,ID2,1432,74)
GOTO 99
ENDIF
ENDIF
IF (SPIN0.AND.REDS.GT.RMASS(25)) THEN
C photon+qbar -->eta'+qbar
HCS=HCS+HALF*FACTR*C1STU*FETAP2(I2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(25,ID2,1432,74)
GOTO 99
ENDIF
ENDIF
IF (SPIN1.AND.REDS.GT.RMASS(56)) THEN
C photon+qbar -->phi_L+qbar
HCS=HCS+FACTR*C1STU*FPHI2(I2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(56,ID2,1432,75)
GOTO 99
ENDIF
C photon+qbar -->phi_T+qbar
HCS=HCS+FACTR*C3STU*FPHI2(I2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(56,ID2,1432,76)
GOTO 99
ENDIF
ENDIF
IF (SPIN1.AND.REDS.GT.RMASS(24)) THEN
C photon+qbar -->omega_L+qbar
HCS=HCS+FACTR*C1STU*FOMEG2(I2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(24,ID2,1432,75)
GOTO 99
ENDIF
C photon+qbar -->omega_T+qbar
HCS=HCS+FACTR*C3STU*FOMEG2(I2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(24,ID2,1432,76)
GOTO 99
ENDIF
ENDIF
50 CONTINUE
EVWGT=HCS
RETURN
C Generate event
99 IDN(1)=59
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
C Set polarization vector
IF (IHPRO.EQ.72.OR.IHPRO.EQ.75) THEN
RHOHEP(2,NHEP-1)=ONE
ELSEIF (IHPRO.EQ.73.OR.IHPRO.EQ.76) THEN
RHOHEP(1,NHEP-1)=HALF
RHOHEP(3,NHEP-1)=HALF
ENDIF
END
CDECK ID>, HWHPPT.
*CMZ :- -12/01/93 10.12.43 by Bryan Webber
*-- Author : Ian Knowles
C-----------------------------------------------------------------------
SUBROUTINE HWHPPT
C-----------------------------------------------------------------------
C point-like photon/QCD di-jet production: mean EVWGT = sigma in nb
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,HWUALF,EPS,RCS,PP1,PP2,ET,EJ,
& EXY,EXY2,FACTR,RS,S,T,U,CSTU,CTSU,HCS
INTEGER ID1,ID2,ID3,ID4,IHAD1,IHAD2
EXTERNAL HWRGEN,HWRUNI,HWUALF
SAVE CSTU,CTSU,HCS,FACTR,RS
PARAMETER (EPS=1.E-9)
IHAD1=1
IF (JDAHEP(1,IHAD1).NE.0) IHAD1=JDAHEP(1,IHAD1)
IHAD2=2
IF (JDAHEP(1,IHAD2).NE.0) IHAD2=JDAHEP(1,IHAD2)
IF (GENEV) THEN
RCS=HCS*HWRGEN(0)
ELSE
EVWGT=0.
PP1=PHEP(4,IHAD1)+ABS(PHEP(3,IHAD1))
PP2=PHEP(4,IHAD2)+ABS(PHEP(3,IHAD2))
XX(1)=1.
CALL HWRPOW(ET,EJ)
EXY=EXP(HWRUNI(1,YJMIN,YJMAX))
EXY2=2.*PP1/ET-EXY
IF (EXY2.LE.EXP(YJMIN).OR.EXY2.GE.EXP(YJMAX)) RETURN
XX(2)=PP1/(PP2*EXY*EXY2)
IF (XX(2).LE.ZERO.OR.XX(2).GE.ONE) RETURN
S=XX(2)*PP1*PP2
RS=.5*SQRT(S)
T=-PP1*0.5*ET/EXY
U=-S-T
COSTH=(T-U)/S
C Set EMSCA to hard process scale (Approx ET-jet)
EMSCA=SQRT(2.*S*T*U/(S*S+T*T+U*U))
FACTR=-GEV2NB*0.5*EJ*(YJMAX-YJMIN)*ET*PIFAC*ALPHEM
& *HWUALF(1,EMSCA)/(S*T)
CALL HWSFUN(XX(2),EMSCA,IDHW(IHAD2),NSTRU,DISF(1,2),2)
CSTU=U/T+T/U
CTSU=-2.*CFFAC*(U/S+S/U)
ENDIF
HCS=0.
ID1=59
DO 20 ID2=1,13
IF (DISF(ID2,2).LT.EPS) GOTO 20
IF (ID2.LT.7) THEN
C photon+q ---> g+q
HCS=HCS+CTSU*DISF(ID2,2)*QFCH(ID2)**2
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP( 13,ID2,1423,51)
GOTO 99
ENDIF
ELSEIF (ID2.LT.13) THEN
C photon+qbar ---> g+qbar
HCS=HCS+CTSU*DISF(ID2,2)*QFCH(ID2-6)**2
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP( 13,ID2,1342,52)
GOTO 99
ENDIF
ELSE
C photon+g ---> q+qbar
DO 10 ID3=1,6
IF (RS.GT.RMASS(ID3)) THEN
ID4=ID3+6
HCS=HCS+CSTU*DISF(ID2,2)*QFCH(ID3)**2
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,1423,53)
GOTO 99
ENDIF
ENDIF
10 CONTINUE
ENDIF
20 CONTINUE
EVWGT=FACTR*HCS
RETURN
C Generate event
99 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
END
CDECK ID>, HWHPQS.
*CMZ :- -27/03/95 13.27.22 by Mike Seymour
*-- Author : Ian Knowles
C-----------------------------------------------------------------------
SUBROUTINE HWHPQS
C-----------------------------------------------------------------------
C Compton scattering of point-like photon and (anti)quark
C mean EVWGT = sigma in nb
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,EPS,RCS,PP1,PP2,ET,EJ,EXY,EXY2,
& FACTR,S,T,U,CTSU,HCS
INTEGER ID1,ID2,IHAD1,IHAD2
EXTERNAL HWRGEN,HWRUNI
SAVE CTSU,HCS,FACTR
PARAMETER (EPS=1.E-9)
IHAD1=1
IF (JDAHEP(1,IHAD1).NE.0) IHAD1=JDAHEP(1,IHAD1)
IHAD2=2
IF (JDAHEP(1,IHAD2).NE.0) IHAD2=JDAHEP(1,IHAD2)
IF (GENEV) THEN
RCS=HCS*HWRGEN(0)
ELSE
EVWGT=0.
PP1=PHEP(4,IHAD1)+ABS(PHEP(3,IHAD1))
PP2=PHEP(4,IHAD2)+ABS(PHEP(3,IHAD2))
XX(1)=1.
CALL HWRPOW(ET,EJ)
EXY=EXP(HWRUNI(1,YJMIN,YJMAX))
EXY2=2.*PP1/ET-EXY
IF (EXY2.LE.EXP(YJMIN).OR.EXY2.GE.EXP(YJMAX)) RETURN
XX(2)=PP1/(PP2*EXY*EXY2)
IF (XX(2).LE.ZERO.OR.XX(2).GE.ONE) RETURN
S=XX(2)*PP1*PP2
T=-PP1*0.5*ET/EXY
U=-S-T
COSTH=(T-U)/S
C Set EMSCA to hard process scale (Approx ET-jet)
EMSCA=SQRT(2.*S*T*U/(S*S+T*T+U*U))
FACTR=-GEV2NB*0.5*EJ*(YJMAX-YJMIN)*ET*PIFAC*ALPHEM**2/(S*T)
CALL HWSFUN(XX(2),EMSCA,IDHW(IHAD2),NSTRU,DISF(1,2),2)
CTSU=-2.*(U/S+S/U)
ENDIF
HCS=0.
ID1=59
DO 20 ID2=1,12
IF (DISF(ID2,2).LT.EPS) GOTO 20
IF (ID2.LT.7) THEN
C photon+q ---> photon+q
HCS=HCS+CTSU*DISF(ID2,2)*QFCH(ID2)**4
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP( 59,ID2,1432,66)
GOTO 99
ENDIF
ELSE
C photon+qbar ---> photon+qbar
HCS=HCS+CTSU*DISF(ID2,2)*QFCH(ID2-6)**4
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP( 59,ID2,1432,67)
GOTO 99
ENDIF
ENDIF
20 CONTINUE
EVWGT=FACTR*HCS
RETURN
C Generate event
99 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
END
CDECK ID>, HWHQCD.
*CMZ :- -20/05/99 12.39.45 by Kosuke Odagiri
*-- Author : Bryan Webber
C-----------------------------------------------------------------------
SUBROUTINE HWHQCD
C-----------------------------------------------------------------------
C QCD HARD 2->2 PROCESSES: MEAN EVWGT = SIGMA IN NB
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,HWUALF,RS,EPS,HF,RCS,Z1,Z2,ET,EJ,
& FACTR,S,T,U,ST,TU,US,STU,TUS,UST,EN,RN,GFLA,AF,ASTU,ASUT,AUST,
& BF,BSTU,BSUT,BUST,BUTS,CF,CSTU,CSUT,CTSU,CTUS,DF,DSTU,DTSU,DUTS,
& DIST,HCS,UT,SU,GT,KK,KK2,YJ1INF,YJ1SUP,YJ2INF,YJ2SUP
INTEGER ID1,ID2,I
EXTERNAL HWRGEN,HWRUNI,HWUALF
SAVE HCS,ASTU,AUST,BSTU,BSUT,BUST,BUTS,CSTU,CSUT,CTSU,CTUS,
& DSTU,DTSU,DUTS,GFLA,RCS,S,T,TU,U,US
PARAMETER (EPS=1.E-9,HF=0.5)
IF (GENEV) THEN
RCS=HCS*HWRGEN(0)
ELSE
EVWGT=0.
CALL HWRPOW(ET,EJ)
KK = ET/PHEP(5,3)
KK2=KK**2
IF (KK.GE.ONE) RETURN
YJ1INF = MAX( YJMIN, LOG((ONE-SQRT(ONE-KK2))/KK) )
YJ1SUP = MIN( YJMAX, LOG((ONE+SQRT(ONE-KK2))/KK) )
IF (YJ1INF.GE.YJ1SUP) RETURN
Z1=EXP(HWRUNI(1,YJ1INF,YJ1SUP))
YJ2INF = MAX( YJMIN, -LOG(TWO/KK-ONE/Z1) )
YJ2SUP = MIN( YJMAX, LOG(TWO/KK-Z1) )
IF (YJ2INF.GE.YJ2SUP) RETURN
Z2=EXP(HWRUNI(2,YJ2INF,YJ2SUP))
XX(1)=.5*(Z1+Z2)*KK
IF (XX(1).GE.ONE) RETURN
XX(2)=XX(1)/(Z1*Z2)
IF (XX(2).GE.ONE) RETURN
COSTH=(Z1-Z2)/(Z1+Z2)
S=XX(1)*XX(2)*PHEP(5,3)**2
RS=HF*SQRT(S)
DO 3 I=1,NFLAV
IF (RS.LT.RMASS(I)) GOTO 4
3 CONTINUE
I=NFLAV+1
4 MAXFL=I-1
IF (MAXFL.EQ.0) THEN
CALL HWWARN('HWHQCD',100)
GOTO 999
ENDIF
C
T=-HF*S*(1.-COSTH)
U=-S-T
C---SET EMSCA TO HARD PROCESS SCALE (APPROX ET-JET)
EMSCA=SQRT(2.*S*T*U/(S*S+T*T+U*U))
FACTR = GEV2NB*.5*PIFAC*EJ*ET*(HWUALF(1,EMSCA)/S)**2
& * (YJ1SUP-YJ1INF)*(YJ2SUP-YJ2INF)
CALL HWSGEN(.FALSE.)
C
ST=S/T
TU=T/U
US=U/S
STU=TU/US
TUS=US/ST
UST=ST/TU
C
EN=CAFAC
RN=CFFAC/EN
GFLA=HF*FLOAT(MAXFL)/(EN*RN)**2
AF=FACTR*RN
ASTU=AF*(1.-2.*UST)
ASUT=AF*(1.-2.*STU)
AUST=AF*(1.-2.*TUS)
C-----------------------------------------------------------------------
C---Colour decomposition modifications below (KO)
C-----------------------------------------------------------------------
BF=HF-AF/EN/TUS/(ASTU+ASUT)
BSTU=BF*ASTU
BSUT=BF*ASUT
BF=ONE-TWO*AF/EN/STU/(AUST+ASTU)
BUST=BF*AUST
BUTS=BF*ASTU
C-----------------------------------------------------------------------
C BF=2.*AF/EN
C BSTU=HF*(ASTU+BF*ST)
C BSUT=HF*(ASUT+BF/US)
C BUST=AUST+BF*US
C BUTS=ASTU+BF/TU
C-----------------------------------------------------------------------
CF=AF*EN
CSTU=(CF*(RN-TUS))/TU
CSUT=(CF*(RN-TUS))*TU
CTSU=(FACTR*(UST-RN))*US
CTUS=(FACTR*(UST-RN))/US
DF=HF*FACTR/RN
DSTU=DF*(1.+1./TUS-STU-UST)
DTSU=DF*(1.+1./UST-STU-TUS)
DUTS=DF*(1.+1./STU-UST-TUS)
ENDIF
C
HCS=0.
DO 6 ID1=1,13
IF (DISF(ID1,1).LT.EPS) GOTO 6
DO 5 ID2=1,13
IF (DISF(ID2,2).LT.EPS) GOTO 5
DIST=DISF(ID1,1)*DISF(ID2,2)
IF (ID1.LT.7) THEN
C---QUARK FIRST
IF (ID2.LT.7) THEN
IF (ID1.NE.ID2) THEN
HCS=HCS+ASTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3421, 3)
GOTO 9
ENDIF
ELSE
HCS=HCS+BSTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3421, 1)
GOTO 9
ENDIF
HCS=HCS+BSUT*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,4312, 2)
GOTO 9
ENDIF
ENDIF
ELSEIF (ID2.NE.13) THEN
IF (ID2.NE.ID1+6) THEN
HCS=HCS+ASTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3142, 9)
GOTO 9
ENDIF
ELSE
HCS=HCS+FLOAT(MAXFL-1)*AUST*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(-ID1, 0,2413, 4)
GOTO 9
ENDIF
HCS=HCS+BUTS*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3142, 5)
GOTO 9
ENDIF
HCS=HCS+BUST*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,2413, 6)
GOTO 9
ENDIF
HCS=HCS+CSTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP( 13, 13,2413, 7)
GOTO 9
ENDIF
HCS=HCS+CSUT*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP( 13, 13,2341, 8)
GOTO 9
ENDIF
ENDIF
ELSE
HCS=HCS+CTSU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3142,10)
GOTO 9
ENDIF
HCS=HCS+CTUS*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3421,11)
GOTO 9
ENDIF
ENDIF
ELSEIF (ID1.NE.13) THEN
C---QBAR FIRST
IF (ID2.LT.7) THEN
IF (ID1.NE.ID2+6) THEN
HCS=HCS+ASTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,2413,17)
GOTO 9
ENDIF
ELSE
HCS=HCS+FLOAT(MAXFL-1)*AUST*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(-ID1, 0,3142,12)
GOTO 9
ENDIF
HCS=HCS+BUTS*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,2413,13)
GOTO 9
ENDIF
HCS=HCS+BUST*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3142,14)
GOTO 9
ENDIF
HCS=HCS+CSTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP( 13, 13,3142,15)
GOTO 9
ENDIF
HCS=HCS+CSUT*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP( 13, 13,4123,16)
GOTO 9
ENDIF
ENDIF
ELSEIF (ID2.NE.13) THEN
IF (ID1.NE.ID2) THEN
HCS=HCS+ASTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,4312,20)
GOTO 9
ENDIF
ELSE
HCS=HCS+BSTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,4312,18)
GOTO 9
ENDIF
HCS=HCS+BSUT*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3421,19)
GOTO 9
ENDIF
ENDIF
ELSE
HCS=HCS+CTSU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,2413,21)
GOTO 9
ENDIF
HCS=HCS+CTUS*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,4312,22)
GOTO 9
ENDIF
ENDIF
ELSE
C---GLUON FIRST
IF (ID2.LT.7) THEN
HCS=HCS+CTSU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,2413,23)
GOTO 9
ENDIF
HCS=HCS+CTUS*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3421,24)
GOTO 9
ENDIF
ELSEIF (ID2.LT.13) THEN
HCS=HCS+CTSU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3142,25)
GOTO 9
ENDIF
HCS=HCS+CTUS*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,4312,26)
GOTO 9
ENDIF
ELSE
HCS=HCS+GFLA*CSTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP( 0, 0,2413,27)
GOTO 9
ENDIF
HCS=HCS+GFLA*CSUT*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP( 0, 0,4123,28)
GOTO 9
ENDIF
HCS=HCS+DTSU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,2341,29)
GOTO 9
ENDIF
HCS=HCS+DSTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3421,30)
GOTO 9
ENDIF
HCS=HCS+DUTS*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,2413,31)
GOTO 9
ENDIF
ENDIF
ENDIF
5 CONTINUE
6 CONTINUE
EVWGT=HCS
RETURN
C---GENERATE EVENT
9 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
IF (AZSPIN) THEN
C Calculate coefficients for constructing spin density matrices
IF (IHPRO.EQ.7 .OR.IHPRO.EQ.8 .OR.
& IHPRO.EQ.15.OR.IHPRO.EQ.16) THEN
C qqbar-->gg or qbarq-->gg
UT=1./TU
GCOEF(1)=UT+TU
GCOEF(2)=-2.
GCOEF(3)=0.
GCOEF(4)=0.
GCOEF(5)=GCOEF(1)
GCOEF(6)=UT-TU
GCOEF(7)=-GCOEF(6)
ELSEIF (IHPRO.EQ.10.OR.IHPRO.EQ.11.OR.
& IHPRO.EQ.21.OR.IHPRO.EQ.22.OR.
& IHPRO.EQ.23.OR.IHPRO.EQ.24.OR.
& IHPRO.EQ.25.OR.IHPRO.EQ.26) THEN
C qg-->qg or qbarg-->qbarg or gq-->gq or gqbar-->gqbar
SU=1./US
GCOEF(1)=-(SU+US)
GCOEF(2)=0.
GCOEF(3)=2.
GCOEF(4)=0.
GCOEF(5)=SU-US
GCOEF(6)=GCOEF(1)
GCOEF(7)=-GCOEF(5)
ELSEIF (IHPRO.EQ.27.OR.IHPRO.EQ.28) THEN
C gg-->qqbar
UT=1./TU
GCOEF(1)=TU+UT
GCOEF(2)=-2.
GCOEF(3)=0.
GCOEF(4)=0.
GCOEF(5)=GCOEF(1)
GCOEF(6)=TU-UT
GCOEF(7)=-GCOEF(6)
ELSEIF (IHPRO.EQ.29.OR.IHPRO.EQ.30.OR.
& IHPRO.EQ.31) THEN
C gg-->gg
GT=S*S+T*T+U*U
GCOEF(2)=2.*U*U*T*T
GCOEF(3)=2.*S*S*U*U
GCOEF(4)=2.*S*S*T*T
GCOEF(1)=GT*GT-GCOEF(2)-GCOEF(3)-GCOEF(4)
GCOEF(5)=GT*(GT-2.*S*S)-GCOEF(2)
GCOEF(6)=GT*(GT-2.*T*T)-GCOEF(3)
GCOEF(7)=GT*(GT-2.*U*U)-GCOEF(4)
ELSE
CALL HWVZRO(7,GCOEF)
ENDIF
ENDIF
999 RETURN
END
CDECK ID>, HWHQCP.
*CMZ :- -26/04/91 10.18.57 by Bryan Webber
*-- Author : Bryan Webber
C-----------------------------------------------------------------------
SUBROUTINE HWHQCP(ID3,ID4,IPERM,IHPR)
C-----------------------------------------------------------------------
C IDENTIFIES HARD SUBPROCESS
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER HWRINT,ID3,ID4,IPERM,IHPR,ND3
EXTERNAL HWRINT
IHPRO=IHPR
IF (ID3.GT.0) THEN
IDN(3)=ID3
IDN(4)=ID4
ELSE
ND3=-ID3
IF (ID3.GT.-7) THEN
1 IDN(3)=HWRINT(1,MAXFL)
IF (IDN(3).EQ.ND3) GOTO 1
IDN(4)=IDN(3)+6
ELSE
2 IDN(3)=HWRINT(1,MAXFL)+6
IF (IDN(3).EQ.ND3) GOTO 2
IDN(4)=IDN(3)-6
ENDIF
ENDIF
ICO(1)=IPERM/1000
ICO(2)=IPERM/100-10*ICO(1)
ICO(3)=IPERM/10 -10*(IPERM/100)
ICO(4)=IPERM -10*(IPERM/10)
END
CDECK ID>, HWHQPM.
*CMZ :- -27/07/95 14.13.56 by Mike Seymour
*-- Author : Mike Seymour
C-----------------------------------------------------------------------
SUBROUTINE HWHQPM
C HARD PROCESS: GAMGAM --> QQBAR/LLBAR/W+W-
C MEAN EVENT WEIGHT = CROSS-SECTION IN NB AFTER CUTS ON PT
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION RCS,HCS,RS,S,EMSQ,BE,TMIN,TMAX,T,U,FACTR,Q,CFAC,
$ HWRGEN
INTEGER IHAD1,IHAD2,HQ,ID3,ID4,I1,I2
SAVE HCS,FACTR,HQ,RS
IHAD1=1
IF (JDAHEP(1,IHAD1).NE.0) IHAD1=JDAHEP(1,IHAD1)
IHAD2=2
IF (JDAHEP(1,IHAD2).NE.0) IHAD2=JDAHEP(1,IHAD2)
IF (GENEV) THEN
RCS=HCS*HWRGEN(0)
ELSE
EVWGT=0.
RS=PHEP(5,3)
S=RS**2
HQ=MOD(IPROC,100)
IF (HQ.EQ.0) THEN
EMSQ=0
BE=1
CFAC=3
ELSE
IF (HQ.GT.6) HQ=2*HQ+107
IF (HQ.EQ.127) HQ=198
EMSQ=RMASS(HQ)**2
BE=1-4*EMSQ/S
IF (BE.LT.ZERO) RETURN
BE=SQRT(BE)
CFAC=1
IF (HQ.LE.6) CFAC=3
ENDIF
TMIN=S/2*(1-SQRT(MAX(1-4*(EMSQ+PTMIN**2)/S,ZERO)))
TMAX=S/2*(1-SQRT(MAX(1-4*(EMSQ+PTMAX**2)/S,ZERO)))
IF (TMIN.GE.TMAX) RETURN
T=-(TMAX/TMIN)**HWRGEN(1)*TMIN
IF (HWRGEN(2).GT.HALF) T=-S-T
U=-S-T
COSTH=(T-U)/(BE*S)
EMSCA=SQRT(2.*S*T*U/(S*S+T*T+U*U))
IF (HQ.NE.198) THEN
FACTR=-GEV2NB*2*LOG(TMAX/TMIN)*MAX(T,U)
$ *2*PIFAC*CFAC*ALPHEM**2/S**2
$ *((U-4*EMSQ)/T+(T-4*EMSQ)/U-4*(EMSQ/T+EMSQ/U)**2)
ELSE
FACTR=-GEV2NB*2*LOG(TMAX/TMIN)*MAX(T,U)
$ *6*PIFAC*CFAC*ALPHEM**2/S**2
$ *(1-S/(T*U)*(4D0/3*S+2*EMSQ)
$ +(S/(T*U))**2*(2D0/3*S**2+2*EMSQ**2))
ENDIF
ENDIF
HCS=0.
XX(1)=1.
XX(2)=1.
IF (HQ.EQ.0) THEN
I1=1
I2=6
ELSE
I1=HQ
I2=HQ
ENDIF
DO 10 ID3=I1,I2
IF (RS.GT.2*RMASS(ID3)) THEN
Q=ICHRG(ID3)
IF (HQ.LE.6) Q=Q/THREE
ID4=ID3+6
IF (HQ.EQ.198) ID4=199
HCS=HCS+Q**4
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID3,ID4,1243,61)
GOTO 99
ENDIF
ENDIF
10 CONTINUE
EVWGT=FACTR*HCS
RETURN
99 IDN(1)=59
IDN(2)=59
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
END
CDECK ID>, HWHRBB.
*CMZ :- -20/10/99 09:46:43 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHRBB
C-----------------------------------------------------------------------
C Subroutine for 2 parton -> 2 parton via UDD resonant squarks
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HCS,S,RCS,HWRGEN,MQ1,MQ2,TAU,LOWTLM,UPPTLM,RTAB,
& SQSH,MATELM,SCF(12),CHANPB(2),HWRUNI,PCM,MIX(12),
& ME(2,3,3,3,3),WD,MS(12),SWD(12),RAND,TAUA,
& CHAN(12),EPS,SH,FAC,TAUB,LAM(6,3,3,3,3),
& XMIN,XMAX,XPOW,XUPP,MS2(12),MSWD(12)
INTEGER I,J,K,L,I1,J1,K1,L1,N,THEP,CONECT(4,5),HWRINT,
& GENR,GN,MIG,MXG,GEN
LOGICAL FIRST
EXTERNAL HWRGEN,HWRUNI
PARAMETER(EPS=1D-20)
COMMON/HWRPIN/XMIN,XMAX,XPOW,FIRST
SAVE HCS,ME,MS,SWD,CHAN,LAM,MIX,FAC,SH,SQSH,SCF,MS2,MSWD
SAVE CONECT
DATA CONECT/1,1,3,4,-1,-1,2,3,0,0,0,0,1,1,-2,-3,-1,-1,-3,-4/
IF(GENEV) THEN
RCS = HCS*HWRGEN(0)
ELSE
IF(FSTWGT) THEN
C--Extract masses and width's needed
DO I=1,3
MS(2*I-1) = RMASS(399+2*I)
MS(2*I) = RMASS(411+2*I)
MS(2*I+5) = RMASS(400+2*I)
MS(2*I+6) = RMASS(412+2*I)
SWD(2*I-1) = HBAR/RLTIM(399+2*I)
SWD(2*I) = HBAR/RLTIM(411+2*I)
SWD(2*I+5) = HBAR/RLTIM(400+2*I)
SWD(2*I+6) = HBAR/RLTIM(412+2*I)
ENDDO
DO I=1,12
MS2(I) = MS(I)**2
MSWD(I) = MS(I)*SWD(I)
ENDDO
C--Now set up the parmaters for multichannel integration
RAND = ZERO
DO K=1,3
CHANPB(1) = ZERO
CHANPB(2) = ZERO
DO I=1,3
DO J=1,3
CHANPB(1)=CHANPB(1)+LAMDA3(I,J,K)**2
CHANPB(2)=CHANPB(2)+LAMDA3(K,I,J)**2
ENDDO
ENDDO
RAND=RAND+CHANPB(1)+CHANPB(2)
DO J=1,2
CHAN(2*K-2+J) = CHANPB(1)*QMIXSS(2*K-1,2,J)**2
CHAN(2*K+4+J) = CHANPB(2)*QMIXSS(2*K ,2,J)**2
MIX(2*K-2+J) = QMIXSS(2*K-1,2,J)**2
MIX(2*K+4+J) = QMIXSS(2*K,2,J)**2
ENDDO
ENDDO
IF(RAND.GT.ZERO) THEN
DO I=1,12
CHAN(I)=CHAN(I)/RAND
ENDDO
ELSE
HCS =ZERO
CALL HWWARN('HWHRBB',500)
ENDIF
C--find the couplings
DO GN=1,3
DO I=1,3
DO J=1,3
DO K=1,3
DO L=1,3
LAM(GN,I,J,K,L) =LAMDA3(I,J,GN)*LAMDA3(K,L,GN)
LAM(GN+3,I,J,K,L)=LAMDA3(GN,I,J)*LAMDA3(GN,K,L)
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
ENDIF
EVWGT = ZERO
S = PHEP(5,3)**2
COSTH = HWRUNI(0,-ONE,ONE)
C--Generate the smoothing
RAND=HWRUNI(0,ZERO,ONE)
DO I=1,12
IF(CHAN(I).GT.RAND) GOTO 20
RAND=RAND-CHAN(I)
ENDDO
20 GENR=I
C--Calculate hard scale and obtain parton distributions
TAUA = MS2(GENR)/S
TAUB = SWD(GENR)**2/S
RTAB = SQRT(TAUA*TAUB)
XUPP = XMAX
IF(XMAX**2.GT.S) XUPP = SQRT(S)
LOWTLM = DATAN((XMIN**2/S-TAUA)/RTAB)/RTAB
UPPTLM = DATAN((XUPP**2/S-TAUA)/RTAB)/RTAB
TAU = HWRUNI(0,LOWTLM,UPPTLM)
TAU = RTAB*TAN(RTAB*TAU)+TAUA
SH = S*TAU
SQSH = SQRT(SH)
EMSCA = SQSH
XX(1) = EXP(HWRUNI(0,ZERO,LOG(TAU)))
XX(2) = TAU/XX(1)
CALL HWSGEN(.FALSE.)
C--Calculate the prefactor due multichannel approach
FAC = ZERO
DO GN=1,12
SCF(GN)=1/((SH-MS2(GN))**2+MSWD(GN)**2)
FAC=FAC+CHAN(GN)*SCF(GN)
ENDDO
FAC=-(UPPTLM-LOWTLM)*LOG(TAU)*GEV2NB
& /(24*PIFAC*SQSH*SH*TAU*FAC*S**2)
ENDIF
C--loop over the quarks
HCS = ZERO
DO GN=1,2
IF(GN.EQ.1) THEN
MIG = 1
MXG = 6
ELSE
MIG = 7
MXG = 12
ENDIF
DO K1=1,3
DO 70 L1=1,3
IF(GN.EQ.1) THEN
K = 2*K1
L = 2*L1-1
ELSE
K=2*K1-1
L=2*L1-1
IF(GN.EQ.2.AND.L1.GE.K1) GOTO 70
ENDIF
MQ1=RMASS(K)
MQ2=RMASS(L)
IF(SQSH.GT.(MQ1+MQ2)) THEN
PCM=SQRT((SH-(MQ1+MQ2)**2)*(SH-(MQ1-MQ2)**2)/(4*SH))
WD = SH*(SH-MQ1**2-MQ2**2)*PCM
ELSE
GOTO 70
ENDIF
DO I1=1,3
DO 60 J1=1,3
IF(GN.EQ.1) THEN
I = 2*I1
J = 2*J1-1
ELSE
I=2*I1-1
J=2*J1-1
IF(J1.GT.I1) GOTO 60
ENDIF
IF(GENEV) GOTO 50
MATELM = ZERO
DO 40 GEN=MIG,MXG
IF(ABS(MIX(GEN)).LT.EPS.OR.
& ABS(LAM(INT((GEN+1)/2),I1,J1,K1,L1)).LT.EPS) GOTO 40
DO 30 GENR=MIG,MXG
IF(ABS(LAM(INT((GENR+1)/2),I1,J1,K1,L1)).LT.EPS.
& OR.ABS(MIX(GENR)).LT.EPS) GOTO 30
MATELM =MATELM+SCF(GEN)*SCF(GENR)*WD*
& ((SH-MS2(GEN))*(SH-MS2(GENR))+
& MSWD(GEN)*MSWD(GENR))
& *LAM(INT((GEN+1)/2),I1,J1,K1,L1)*MIX(GEN)
& *LAM(INT((GENR+1)/2),I1,J1,K1,L1)*MIX(GENR)
30 CONTINUE
40 CONTINUE
ME(GN,I1,J1,K1,L1) = MATELM*FAC
C--Add up the term to get the cross-section
50 HCS = HCS+ME(GN,I1,J1,K1,L1)*DISF(I,1)*DISF(J,2)
IF(HCS.GT.RCS.AND.GENEV) THEN
CALL HWHRSS(1,I,J,K,L,0,0)
GOTO 100
ENDIF
HCS = HCS+ME(GN,I1,J1,K1,L1)*DISF(J,1)*DISF(I,2)
IF(HCS.GT.RCS.AND.GENEV) THEN
CALL HWHRSS(2,J,I,K,L,0,0)
GOTO 100
ENDIF
HCS = HCS+ME(GN,I1,J1,K1,L1)*DISF(I+6,1)*DISF(J+6,2)
IF(HCS.GT.RCS.AND.GENEV) THEN
CALL HWHRSS(1,I,J,K,L,1,0)
GOTO 100
ENDIF
HCS = HCS+ME(GN,I1,J1,K1,L1)*DISF(J+6,1)*DISF(I+6,2)
IF(HCS.GT.RCS.AND.GENEV) THEN
CALL HWHRSS(2,J,I,K,L,1,0)
GOTO 100
ENDIF
60 CONTINUE
ENDDO
70 CONTINUE
ENDDO
ENDDO
100 IF(GENEV) THEN
CALL HWETWO(.TRUE.,.TRUE.)
C--first stage of the colour connection corrections
DO THEP=1,5
IF(THEP.NE.3) THEN
JMOHEP(2,THEP+NHEP-5)=NHEP-5+THEP+CONECT(HWRINT(1,4),THEP)
JDAHEP(2,THEP+NHEP-5) = JMOHEP(2,THEP+NHEP-5)
ENDIF
ENDDO
THEP = NHEP-4
IF(HWRINT(1,2).EQ.1) THEN
HRDCOL(2,1) = THEP+3
HRDCOL(2,2) = THEP+4
HRDCOL(1,4) = THEP
HRDCOL(1,5) = THEP+1
ELSE
HRDCOL(2,1) = THEP+4
HRDCOL(2,2) = THEP+3
HRDCOL(1,4) = THEP+1
HRDCOL(1,5) = THEP
ENDIF
DO N=1,5
IF(N.LE.2) THEN
HRDCOL(1,N)=HRDCOL(2,N)
ELSEIF(N.GE.4) THEN
HRDCOL(2,N)=HRDCOL(1,N)
ENDIF
ENDDO
HRDCOL(1,3) = 4
COLUPD = .TRUE.
ELSE
EVWGT = HCS
ENDIF
END
CDECK ID>, HWHRBS.
*CMZ :- -20/10/99 09:46:43 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHRBS
C-----------------------------------------------------------------------
C Subroutine for 2 parton -> parton SUSY particle via UDD resonant
C squarks.
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HCS,S,RCS,HWRGEN,ME(4),CW,MER(6),MZ,TAU,TAUA,
& TAUB,LOWTLM,UPPTLM,HWRUNI,SH,SQSH,SCF(12),MW2,
& LAMC(3),CHANPB(2),PCM,ECM,RAND,MEN(7,6,3,3),
& MEC(2,6,3,3),RTAB,MS(12),SWD(12),AS,HWUALF,
& MQ,MN,MQS,TH,UH,FAC,MX(14),CHAN(12),MC(2),
& MNS,HWUAEM,SW,G,EC,MW,A(7,14),B(7,14),EPS,XUPP,
& MEH(3,42),XMIN,XMAX,XPOW,FAC2,MH(4),ZSQU(2,2),
& ZQRK(2),MZ2,GUU(4),GDD(4),ME2,MS2(12),MSWD(12)
INTEGER I,J,K,I1,J1,GEN,THEP,HWRINT,L,GT,GU,GR,I2,
& CONECT(2,6,5),GN,GENR,SP,SPMN,SPMX,CON,CHARMN,CHARMX,
& CM,CN
LOGICAL RAD,NEUT,CHAR,HIGGS,FIRST
EXTERNAL HWRGEN,HWRUNI,HWUAEM,HWUALF,HWRINT
COMMON/HWRPIN/XMIN,XMAX,XPOW,FIRST
SAVE HCS,MS,SWD,MX,CHAN,A,B,SPMN,SPMX,RAD,MEN,MEC,HIGGS,
& CHARMN,CHARMX,NEUT,CHAR,SQSH,MEH,SW,CW,MW,MZ,MER,SH,MH,
& AS,EC,FAC,G,SCF,ZSQU,ZQRK,MW2,MZ2,MS2,MSWD,GUU,GDD
PARAMETER(EPS=1D-20)
SAVE CONECT
DATA CONECT/ 4, 4, 2, 3, 0, 0, 1,-2,-1,-3,-4,-4,
& 3, 4, 3, 3, 0, 0, 1,-3,-1,-4,-3,-3,
& 1, 4,-1, 3, 0, 0, 1, 1,-3,-4,-1,-1,
& 1, 3,-1, 2, 0, 0,-3,-2, 0, 0, 0, 0,
& 1, 4,-1, 3, 0, 0,-3,-2,-1,-1,-1,-1/
IF(GENEV) THEN
RCS = HCS*HWRGEN(0)
ELSE
IF(FSTWGT) THEN
C--Extract masses and width's needed
DO I=1,3
MS(2*I-1) = RMASS(399+2*I)
MS(2*I) = RMASS(411+2*I)
MS(2*I+5) = RMASS(400+2*I)
MS(2*I+6) = RMASS(412+2*I)
SWD(2*I-1) = HBAR/RLTIM(399+2*I)
SWD(2*I) = HBAR/RLTIM(411+2*I)
SWD(2*I+5) = HBAR/RLTIM(400+2*I)
SWD(2*I+6) = HBAR/RLTIM(412+2*I)
ENDDO
DO I=1,12
MS2(I) = MS(I)**2
MSWD(I) = MS(I)*SWD(I)
ENDDO
C--Electroweak parameters
SW = SQRT(SWEIN)
CW = SQRT(1-SWEIN)
MW = RMASS(198)
MZ = RMASS(200)
MW2 = MW**2
MZ2 = MZ**2
C--Now set up the parmaters for multichannel integration
RAND = ZERO
DO K=1,3
CHANPB(1) = ZERO
CHANPB(2) = ZERO
DO I=1,3
DO J=1,3
CHANPB(1)=CHANPB(1)+LAMDA3(I,J,K)**2
CHANPB(2)=CHANPB(2)+LAMDA3(K,I,J)**2
ENDDO
ENDDO
RAND=RAND+CHANPB(1)+CHANPB(2)
DO J=1,2
CHAN(2*K-2+J) = CHANPB(1)*QMIXSS(2*K-1,2,J)**2
CHAN(2*K+4+J) = CHANPB(2)*QMIXSS(2*K ,2,J)**2
MX(2*K-2+J) = QMIXSS(2*K-1,2,J)
MX(2*K+4+J) = QMIXSS(2*K,2,J)
ENDDO
MX(13) = ZERO
MX(14) = ZERO
ENDDO
IF(RAND.GT.ZERO) THEN
DO I=1,12
CHAN(I)=CHAN(I)/RAND
ENDDO
ELSE
CALL HWWARN('HWHRBS',500)
ENDIF
C--Couplings we need for the various processes
C--Gluino
DO I=1,3
DO J=1,2
A(1,2*I-2+J) = QMIXSS(2*I-1,2,J)
B(1,2*I-2+J) = -QMIXSS(2*I-1,1,J)
A(1,2*I+4+J) = QMIXSS(2*I,2,J)
B(1,2*I+4+J) = -QMIXSS(2*I,1,J)
ENDDO
ENDDO
C--Now the neutralinos
DO L=1,4
MC(1) = ZMIXSS(L,3)/(2*MW*COSB*SW)
MC(2) = ZMIXSS(L,4)/(2*MW*SINB*SW)
DO I=1,3
DO J=1,2
A(L+1,2*I-2+J) = ZSGNSS(L)*(MC(1)*QMIXSS(2*I-1,1,J)*
& RMASS(2*I-1)+SRFCH(2*I-1,L)*QMIXSS(2*I-1,2,J))
B(L+1,2*I-2+J) = MC(1)*QMIXSS(2*I-1,2,J)*
& RMASS(2*I-1)+SLFCH(2*I-1,L)*QMIXSS(2*I-1,1,J)
A(L+1,2*I+4+J) = ZSGNSS(L)*(MC(2)*QMIXSS(2*I,1,J)*
& RMASS(2*I)+SRFCH(2*I ,L)*QMIXSS(2*I,2,J))
B(L+1,2*I+4+J) = MC(2)*QMIXSS(2*I,2,J)*
& RMASS(2*I)+SLFCH(2*I, L)*QMIXSS(2*I,1,J)
ENDDO
ENDDO
ENDDO
C--Now for the charginos
DO L=1,2
MC(1) = 1/(SQRT(2.0D0)*MW*COSB)
MC(2) = 1/(SQRT(2.0D0)*MW*SINB)
DO I=1,3
DO J=1,2
A(5+L,2*I-2+J) = -WSGNSS(L)*WMXVSS(L,2)*MC(2)*
& RMASS(2*I)*QMIXSS(2*I-1,1,J)
B(5+L,2*I-2+J) = WMXUSS(L,1)*QMIXSS(2*I-1,1,J)
& -WMXUSS(L,2)*MC(1)*RMASS(2*I-1)*QMIXSS(2*I-1,2,J)
A(5+L,2*I+4+J) = -WMXUSS(L,2)*MC(1)*RMASS(2*I-1)
& *QMIXSS(2*I,1,J)
B(5+L,2*I+4+J) = WSGNSS(L)*(WMXVSS(L,1)*QMIXSS(2*I,1,J)
& -WMXVSS(L,2)*MC(2)*RMASS(2*I)*QMIXSS(2*I,2,J))
ENDDO
ENDDO
ENDDO
C--Zero couplings
DO I=1,7
A(I,13) = ZERO
B(I,13) = ZERO
A(I,14) = ZERO
B(I,14) = ZERO
ENDDO
C--Couplings to the Z boson of squarks and right-handed quarks
ZQRK(1) = -SW**2/6.0D0/CW
ZQRK(2) = SW**2/3.0D0/CW
ZSQU(1,1) = HALF*(QMIXSS(5,1,1)**2-2.0D0*SW**2/3.0D0)/CW
ZSQU(1,2) = HALF*QMIXSS(5,1,1)*QMIXSS(5,1,2)/CW
ZSQU(2,1) = -HALF*(QMIXSS(6,1,1)**2-4.0D0*SW**2/3.0D0)/CW
ZSQU(2,2) = -HALF*QMIXSS(6,1,1)*QMIXSS(6,1,2)/CW
C--Higgs Masses
DO I=1,4
MH(I) = RMASS(202+I)
ENDDO
C--Higgs couplings to quarks
DO I=1,3
GUU(I) = GHUUSS(I)**2*HALF**2/MW2
GDD(I) = GHDDSS(I)**2*HALF**2/MW2
ENDDO
GUU(4) = ONE/TANB**2/MW2/8.0D0
GDD(4) = ONE*TANB**2/MW2/8.0D0
C--decide which processes to generate from IPROC
RAD = .FALSE.
NEUT = .FALSE.
CHAR = .FALSE.
HIGGS = .FALSE.
SPMN = 1
SPMX = 5
CHARMN = 1
CHARMX = 2
IF(MOD(IPROC,10000).EQ.4100) THEN
RAD = .TRUE.
NEUT = .TRUE.
CHAR = .TRUE.
HIGGS = .TRUE.
ELSEIF(MOD(IPROC,10000).LT.4120) THEN
SPMN = 2
IF(MOD(IPROC,10000).NE.4110) THEN
SPMN = MOD(IPROC,10)+1
SPMX = SPMN
ENDIF
NEUT=.TRUE.
ELSEIF(MOD(IPROC,10000).LT.4130) THEN
IF(MOD(IPROC,10000).NE.4120) THEN
CHARMN = MOD(IPROC,10)
CHARMX=CHARMN
ENDIF
CHAR = .TRUE.
ELSEIF(MOD(IPROC,10000).EQ.4130) THEN
SPMX = 1
NEUT=.TRUE.
ELSEIF(MOD(IPROC,10000).EQ.4140) THEN
RAD = .TRUE.
ELSEIF(MOD(IPROC,10000).EQ.4150) THEN
HIGGS = .TRUE.
ELSE
CALL HWWARN('HWHRBS',501)
ENDIF
ENDIF
EVWGT = ZERO
S = PHEP(5,3)**2
COSTH = HWRUNI(0,-ONE,ONE)
C--zero the array
DO I=1,6
DO J=1,3
DO K=1,3
DO L=1,7
MEN(L,I,J,K)=ZERO
ENDDO
DO L=1,2
MEC(L,I,J,K)=ZERO
ENDDO
ENDDO
ENDDO
ENDDO
C--Multichannel peak
RAND=HWRUNI(0,ZERO,ONE)
DO I=1,12
IF(CHAN(I).GT.RAND) GOTO 25
RAND=RAND-CHAN(I)
ENDDO
25 GENR=I
C--Calculate the hard scale and obtain parton distributions
TAUA = MS2(GENR)/S
TAUB = SWD(GENR)**2/S
RTAB = SQRT(TAUA*TAUB)
XUPP = XMAX
IF(XMAX**2.GT.S) XUPP = SQRT(S)
LOWTLM = DATAN((XMIN**2/S-TAUA)/RTAB)/RTAB
UPPTLM = DATAN((XUPP**2/S-TAUA)/RTAB)/RTAB
TAU = HWRUNI(0,LOWTLM,UPPTLM)
TAU = RTAB*TAN(RTAB*TAU)+TAUA
SH = S*TAU
SQSH = SQRT(SH)
EMSCA = SQSH
XX(1) = EXP(HWRUNI(0,ZERO,LOG(TAU)))
XX(2) = TAU/XX(1)
CALL HWSGEN(.FALSE.)
C--Strong, EM coupling and weak couplings
AS = HWUALF(1,EMSCA)
EC = SQRT(4*PIFAC*HWUAEM(SH))
G = EC/SW
C--Calculate the prefactor due multichannel approach
FAC = ZERO
DO GN=1,12
SCF(GN)=1/((SH-MS2(GN))**2+MSWD(GN)**2)
FAC=FAC+CHAN(GN)*SCF(GN)
ENDDO
FAC=-(UPPTLM-LOWTLM)*LOG(TAU)*GEV2NB
& /(48*PIFAC*SQSH*SH*TAU*FAC*S**2)
ENDIF
HCS = ZERO
IF(.NOT.NEUT) GOTO 200
DO 140 GN=1,6
GR=2*GN
IF(CHAN(GR).LT.EPS) GOTO 140
DO 130 L=SPMN,SPMX
K = 2*GN+5
IF(GN.GT.3) K = 2*GN
MQ = RMASS(K)
MN = ABS(RMASS(448+L))
MQS = MQ**2
MNS = MN**2
IF(SQSH.LT.(MQ+MN)) GOTO 130
PCM=SQRT((SH-(MQ+MN)**2)*(SH-(MQ-MN)**2)/(4*SH))
ECM=SQRT(PCM**2+MQS)
TH = MQS-SQSH*(ECM-PCM*COSTH)
UH = MQS-SQSH*(ECM+PCM*COSTH)
DO I=1,3
DO 120 J=1,3
IF(GN.LE.3) THEN
GU = 6+2*I
I1 = 2*I
LAMC(1) = LAMDA3(I,J,GN)**2
ELSE
GU = 2*I
I1 = 2*I-1
LAMC(1) = LAMDA3(GN-3,I,J)**2
IF(J.GT.I) LAMC(1) = ZERO
ENDIF
GT = 2*J
J1 = 2*J-1
C--Now the matrix elements
IF(LAMC(1).LT.EPS) GOTO 120
IF(GENEV) GOTO 110
C--S channel
ME(3) = MX(GR)**2*SCF(GR)*SH*((SH-MQS-MNS)*(A(L,GR)**2+
& B(L,GR)**2)-4*MQ*MN*A(L,GR)*B(L,GR))
ME(4) =-TWO*MX(GU)*MX(GT)*(MQS*MNS-UH*TH)*A(L,GT)*A(L,GU)
& /(TH-MS2(GT))/(UH-MS2(GU))
& +TWO*MX(GR)*MX(GU)*(SH-MS2(GR))*SCF(GR)*SH*
& A(L,GU)*(A(L,GR)*UH+B(L,GR)*MQ*MN)/(UH-MS2(GU))
& +TWO*MX(GR)*MX(GT)*(SH-MS2(GR))*SCF(GR)*SH*
& A(L,GT)*(A(L,GR)*TH+B(L,GR)*MQ*MN)/(TH-MS2(GT))
C--L/R s channel and interference
IF(ABS(MX(GR-1)).GT.EPS) THEN
ME(3) = ME(3)+
& MX(GR-1)**2*SCF(GR-1)*SH*((SH-MQS-MNS)*(A(L,GR-1)**2
& +B(L,GR-1)**2)-4*MQ*MN*A(L,GR-1)*B(L,GR-1))
& +TWO*MX(GR)*MX(GR-1)*SCF(GR)*SCF(GR-1)*SH*
& ((SH-MS2(GR))*(SH-MS2(GR-1))+MSWD(GR)*MSWD(GR-1))*
& ((SH-MQS-MNS)*(A(L,GR)*A(L,GR-1)
& +B(L,GR)*B(L,GR-1))
& -TWO*MQ*MN*(A(L,GR)*B(L,GR-1)+A(L,GR-1)*B(L,GR)))
ME(4) = ME(4)+TWO*MX(GR-1)*MX(GU)*(SH-MS2(GR-1))
& *SCF(GR-1)*A(L,GU)*SH*(A(L,GR-1)*UH+B(L,GR-1)*MQ*MN)
& /(UH-MS2(GU))
& +TWO*MX(GR-1)*MX(GT)*(SH-MS2(GR-1))*SCF(GR-1)*SH*
& A(L,GT)*(A(L,GR-1)*TH+B(L,GR-1)*MQ*MN)/(TH-MS2(GT))
IF(ABS(MX(GU-1)).GT.EPS) ME(4)=ME(4)+TWO*MX(GR-1)*
& MX(GU-1)*(SH-MS2(GR-1))*SCF(GR-1)*A(L,GU-1)*SH*(
& A(L,GR-1)*UH+B(L,GR-1)*MQ*MN)/(UH-MS2(GU-1))
IF(ABS(MX(GT-1)).GT.EPS) ME(4)=ME(4)+TWO*MX(GR-1)*
& MX(GT-1)*(SH-MS2(GR-1))*SCF(GR-1)*A(L,GT-1)*SH*
& (A(L,GR-1)*TH+B(L,GR-1)*MQ*MN)/(TH-MS2(GT-1))
ENDIF
C--u channel and L/R mixing
ME(1)= MX(GU)**2*(MQS-UH)*(MNS-UH)*
& (A(L,GU)**2+B(L,GU)**2)/(UH-MS2(GU))**2
IF(ABS(MX(GU-1)).GT.EPS) THEN
ME(1) = ME(1)+MX(GU-1)**2*(MQS-UH)*(MNS-UH)*
& (A(L,GU-1)**2+B(L,GU-1)**2)/(UH-MS2(GU-1))**2
& +TWO*MX(GU)*MX(GU-1)*(MQS-UH)*(MNS-UH)*
& (A(L,GU)*A(L,GU-1)+B(L,GU)*B(L,GU-1))
& /(UH-MS2(GU))/(UH-MS2(GU-1))
ME(4) =ME(4)+TWO*MX(GR)*MX(GU-1)*(SH-MS2(GR))*
& SCF(GR)*A(L,GU-1)*SH*(A(L,GR)*UH+B(L,GR)*MQ*MN)
& /(UH-MS2(GU-1))
& -2*MX(GU-1)*MX(GT)*(MQS*MNS-UH*TH)*A(L,GT)*
& A(L,GU-1)/(TH-MS2(GT))/(UH-MS2(GU-1))
IF(ABS(MX(GT-1)).GT.EPS) ME(4)=ME(4)-2*MX(GU-1)*MX(GT-1)
& *(MQS*MNS-UH*TH)*A(L,GT-1)*A(L,GU-1)
& /(TH-MS2(GT-1))/(UH-MS2(GU-1))
ENDIF
C--t channel and t channel L/R mixing
ME(2) = MX(GT)**2*(MQS-TH)*(MNS-TH)*
& (A(L,GT)**2+B(L,GT)**2)/(TH-MS2(GT))**2
IF(ABS(MX(GT-1)).GT.EPS) THEN
ME(2) = ME(2)+MX(GT-1)**2*(MQS-TH)*(MNS-TH)*
& (A(L,GT-1)**2+B(L,GT-1)**2)/(TH-MS2(GT-1))**2
& +TWO*MX(GT)*MX(GT-1)*(MQS-TH)*(MNS-TH)*(A(L,GT)*
& A(L,GT-1)+ B(L,GT)*B(L,GT-1))
& /(TH-MS2(GT))/(TH-MS2(GT-1))
ME(4)=ME(4)-TWO*MX(GU)*MX(GT-1)*(MQS*MNS-UH*TH)*
& A(L,GT-1)*A(L,GU)/(TH-MS2(GT-1))/(UH-MS2(GU))
& +TWO*MX(GR)*MX(GT-1)*(SH-MS2(GR))*SCF(GR)*
& A(L,GT-1)*SH*(A(L,GR)*TH+B(L,GR)*MQ*MN)
& /(TH-MS2(GT-1))
ENDIF
C--Angular ordering and the phase space factors
IF(L.EQ.1) THEN
ME(4)=-HALF*ME(4)/(ME(1)+ME(2)+ME(3))
LAMC(1) = 32.0D0*LAMC(1)*AS*PIFAC/THREE
DO GEN=1,3
MEN(GEN,GN,I,J) = FAC*PCM*LAMC(1)*ME(GEN)*(ONE+ME(4))
ENDDO
ELSE
LAMC(1) = TWO*LAMC(1)*EC**2
MEN(L+2,GN,I,J)=FAC*PCM*LAMC(1)*(ME(1)+ME(2)+ME(3)+ME(4))
ENDIF
C--Multiply by the pdf's
110 IF(L.EQ.1) THEN
CM = 1
CN = 3
ELSE
CM = L+2
CN = L+2
ENDIF
DO GEN=CM,CN
CON = 4
IF(GEN.LE.3) CON = GEN
HCS=HCS+MEN(GEN,GN,I,J)*DISF(I1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(3,I1,J1,K,GEN,0,0)
GOTO 900
ENDIF
HCS=HCS+MEN(GEN,GN,I,J)*DISF(J1,1)*DISF(I1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(4,J1,I1,K,GEN,0,0)
GOTO 900
ENDIF
HCS=HCS+MEN(GEN,GN,I,J)*DISF(I1+6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(3,I1,J1,K,GEN,1,0)
GOTO 900
ENDIF
HCS=HCS+MEN(GEN,GN,I,J)*DISF(J1+6,1)*DISF(I1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(4,J1,I1,K,GEN,1,0)
GOTO 900
ENDIF
ENDDO
120 CONTINUE
ENDDO
130 CONTINUE
140 CONTINUE
C--Now the chargino processes if wanted
200 IF(.NOT.CHAR) GOTO 300
DO 240 GN=1,6
GR=2*GN
IF(CHAN(GR).LT.EPS) GOTO 240
DO 230 L=CHARMN,CHARMX
SP =5+L
K = 2*GN+6
IF(GN.GT.3) K = 2*GN-1
MQ = RMASS(K)
MN = ABS(RMASS(453+L))
MQS = MQ**2
MNS = MN**2
IF(SQSH.LT.(MQ+MN)) GOTO 230
PCM=SQRT((SH-(MQ+MN)**2)*(SH-(MQ-MN)**2)/(4*SH))
ECM=SQRT(PCM**2+MQS)
TH = MQS-SQSH*(ECM-PCM*COSTH)
UH = MQS-SQSH*(ECM+PCM*COSTH)
DO I=1,3
DO 220 J=1,3
IF(GN.LE.3) THEN
GU = 2*I
GT = 14
I1 = 2*I
LAMC(1) = LAMDA3(I,J,GN)
LAMC(2) = LAMDA3(GN,I,J)
LAMC(3) = ZERO
ELSE
GU = 6+2*I
GT = 6+2*J
I1 = 2*I-1
LAMC(1) = LAMDA3(GN-3,I,J)
LAMC(2) = LAMDA3(I,J,GN-3)
LAMC(3) = LAMDA3(J,GN-3,I)
IF(J.GT.I) LAMC(1) = ZERO
ENDIF
J1 = 2*J-1
IF(ABS(LAMC(1)).LT.EPS) GOTO 220
IF(GENEV) GOTO 210
C--Matrix element
C--S channel
ME(1) = LAMC(1)**2*MX(GR)**2*SCF(GR)*SH*((SH-MQS-MNS)*
& (A(SP,GR)**2+B(SP,GR)**2)-4*MQ*MN*A(SP,GR)*B(SP,GR))
IF(ABS(MX(GU)).GT.EPS) THEN
ME(1) = ME(1)+LAMC(2)**2*MX(GU)**2*(MQS-UH)*(MNS-UH)*
& (A(SP,GU)**2+B(SP,GU)**2)/(UH-MS2(GU))**2
& +LAMC(1)*LAMC(2)*TWO*MX(GR)*MX(GU)*
& (SH-MS2(GR))*SCF(GR)*A(SP,GU)*SH*
& (A(SP,GR)*UH+B(SP,GR)*MQ*MN)/(UH-MS2(GU))
IF(ABS(MX(GT)).GT.EPS) ME(1) = ME(1)-LAMC(2)*LAMC(3)*
& TWO*MX(GU)*MX(GT)*(MQS*MNS-UH*TH)*A(SP,GT)*
& A(SP,GU)/(TH-MS2(GT))/(UH-MS2(GU))
ENDIF
IF(ABS(MX(GT)).GT.EPS) THEN
ME(1) = ME(1)+LAMC(3)**2*MX(GT)**2*(MQS-TH)*(MNS-TH)*
& (A(SP,GT)**2+B(SP,GT)**2)/(TH-MS2(GT))**2
& +LAMC(1)*LAMC(3)*TWO*MX(GR)*MX(GT)*
& (SH-MS2(GR))*SCF(GR)*A(SP,GT)*SH*
& (A(SP,GR)*TH+B(SP,GR)*MQ*MN)/(TH-MS2(GT))
ENDIF
c--L/R s channel and interference
IF(ABS(MX(GR-1)).GT.EPS) THEN
ME(1) = ME(1)+LAMC(1)**2*MX(GR-1)**2*SCF(GR-1)*SH*
& ((SH-MQS-MNS)*(A(SP,GR-1)**2+B(SP,GR-1)**2)
& -4*MQ*MN*A(SP,GR-1)*B(SP,GR-1))
& +LAMC(1)**2*TWO*MX(GR)*MX(GR-1)*SCF(GR)*
& SCF(GR-1)*SH*
& ((SH-MS2(GR))*(SH-MS2(GR-1))+
& MSWD(GR)*MSWD(GR-1))*
& ((SH-MQS-MNS)*(A(SP,GR)*A(SP,GR-1)+
& B(SP,GR)*B(SP,GR-1))-TWO*MQ*MN*
& (A(SP,GR)*B(SP,GR-1)+A(SP,GR-1)*B(SP,GR)))
IF(ABS(MX(GU)).GT.EPS) ME(1) = ME(1)+LAMC(1)*LAMC(2)*
& TWO*MX(GR-1)*MX(GU)*(SH-MS2(GR-1))*SCF(GR-1)*
& A(SP,GU)*SH*(A(SP,GR-1)*UH+B(SP,GR-1)*MQ*MN)
& /(UH-MS2(GU))
IF(ABS(MX(GT)).GT.EPS) ME(1) = ME(1)+LAMC(1)*LAMC(3)*
& TWO*MX(GR-1)*MX(GT)*(SH-MS2(GR-1))*SCF(GR-1)*
& A(SP,GT)*SH*(A(SP,GR-1)*TH+B(SP,GR-1)*MQ*MN)
& /(TH-MS2(GT))
IF(ABS(MX(GU-1)).GT.EPS) ME(1)=ME(1)+LAMC(1)*LAMC(2)*
& TWO*MX(GR-1)*MX(GU-1)*(SH-MS2(GR-1))*
& SCF(GR-1)*A(SP,GU-1)*SH*(A(SP,GR-1)*UH+
& B(SP,GR-1)*MQ*MN)/(UH-MS2(GU-1))
IF(ABS(MX(GT-1)).GT.EPS) ME(1)=ME(1)+LAMC(1)*LAMC(3)*
& TWO*MX(GR-1)*MX(GT-1)*(SH-MS2(GR-1))*
& SCF(GR-1)*A(SP,GT-1)*SH*(A(SP,GR-1)*TH+
& B(SP,GR-1)*MQ*MN)/(TH-MS2(GT-1))
ENDIF
C--u channel and L/R mixing
IF(ABS(MX(GU-1)).GT.EPS) THEN
ME(1) = ME(1)+LAMC(2)**2*MX(GU-1)**2*(MQS-UH)*(MNS-UH)*
& (A(SP,GU-1)**2+B(SP,GU-1)**2)/(UH-MS2(GU-1))**2
& +LAMC(2)**2*TWO*MX(GU)*MX(GU-1)*(MQS-UH)*(MNS-UH)*
& (A(SP,GU)*A(SP,GU-1)+B(SP,GU)*B(SP,GU-1))
& /(UH-MS2(GU))/(UH-MS2(GU-1))
& +TWO*LAMC(1)*LAMC(2)*MX(GR)*MX(GU-1)*
& (SH-MS2(GR))*SCF(GR)*A(SP,GU-1)*SH*
& (A(SP,GR)*UH+B(SP,GR)*MQ*MN)/(UH-MS2(GU-1))
IF(ABS(MX(GT)).GT.EPS) ME(1)=ME(1)-LAMC(2)*LAMC(3)*TWO*
& MX(GU-1)*MX(GT)*(MQS*MNS-UH*TH)*A(SP,GT)*A(SP,GU-1)
& /(TH-MS2(GT))/(UH-MS2(GU-1))
IF(ABS(MX(GT-1)).GT.EPS) ME(1)=ME(1)-LAMC(2)*LAMC(3)*
& TWO*MX(GU-1)*MX(GT-1)*(MQS*MNS-UH*TH)*A(SP,GT-1)*
& A(SP,GU-1)/(TH-MS2(GT-1))/(UH-MS2(GU-1))
ENDIF
C--t channel and t channel L/R mixing
IF(ABS(MX(GT-1)).GT.EPS) THEN
ME(1) = ME(1)+LAMC(3)**2*MX(GT-1)**2*(MQS-TH)*(MNS-TH)*
& (A(SP,GT-1)**2+B(SP,GT-1)**2)/(TH-MS2(GT-1))**2
& +LAMC(3)**2*TWO*MX(GT)*MX(GT-1)*(MQS-TH)*(MNS-TH)*
& (A(SP,GT)*A(SP,GT-1)+B(SP,GT)*B(SP,GT-1))
& /(TH-MS2(GT))/(TH-MS2(GT-1))
& +LAMC(1)*LAMC(3)*TWO*MX(GR)*MX(GT-1)*
& (SH-MS2(GR))*SCF(GR)*A(SP,GT-1)*SH*
& (A(SP,GR)*TH+B(SP,GR)*MQ*MN)/(TH-MS2(GT-1))
IF(ABS(MX(GU)).GT.EPS) ME(1)=ME(1)-LAMC(2)*LAMC(3)*TWO*
& MX(GU)*MX(GT-1)*(MQS*MNS-UH*TH)*A(SP,GT-1)*A(SP,GU)
& /(TH-MS2(GT-1))/(UH-MS2(GU))
ENDIF
c--phase space factors
MEC(L,GN,I,J) = G**2*FAC*ME(1)*PCM
210 CON = 4
I2 = SP+2
IF(MOD(K,2).EQ.1) I2 =I2+2
HCS=HCS+MEC(L,GN,I,J)*DISF(I1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(3,I1,J1,K,I2,0,0)
GOTO 900
ENDIF
HCS=HCS+MEC(L,GN,I,J)*DISF(J1,1)*DISF(I1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(4,J1,I1,K,I2,0,0)
GOTO 900
ENDIF
HCS=HCS+MEC(L,GN,I,J)*DISF(I1+6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(3,I1,J1,K,I2+2,1,0)
GOTO 900
ENDIF
HCS=HCS+MEC(L,GN,I,J)*DISF(J1+6,1)*DISF(I1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(4,J1,I1,K,I2+2,1,0)
GOTO 900
ENDIF
220 CONTINUE
ENDDO
230 CONTINUE
240 CONTINUE
C--Now the radiative decays, if possible
300 IF(.NOT.RAD.OR.(CHAN(5).LT.EPS.AND.CHAN(11).LT.EPS)) GOTO 400
IF(GENEV) GOTO 320
DO 310 I=1,6
310 MER(I)=ZERO
C--stop to light stop and Z
IF(SH.GT.(MZ+MS(11))**2) THEN
PCM = SQRT((SH-(MZ+MS(11))**2)*(SH-(MZ-MS(11))**2))*HALF/SQSH
ECM=SQRT(PCM**2+MZ2)
TH = MZ2-SQSH*(ECM-PCM*COSTH)
UH = MZ2-SQSH*(ECM+PCM*COSTH)
MER(3) = SH**2*PCM**2*(SCF(11)*ZSQU(2,1)**2*QMIXSS(6,2,1)**2
& +SCF(12)*ZSQU(2,2)**2*QMIXSS(6,2,2)**2
& +TWO*SCF(11)*SCF(12)*QMIXSS(6,2,1)*QMIXSS(6,2,2)*
& ZSQU(2,1)*ZSQU(2,2)*((SH-MS2(11))*
& (SH-MS2(12))+MSWD(11)*MSWD(12)))
& +QMIXSS(6,2,1)**2/UH**2*ZQRK(1)**2*(
& TWO*MZ2*(UH*TH-MS2(11)*MZ2)+UH**2*SH)
& +QMIXSS(6,2,1)**2/TH**2*ZQRK(1)**2*(
& TWO*MZ2*(UH*TH-MS2(11)*MZ2)+TH**2*SH)
& +ZQRK(1)*SH*QMIXSS(6,2,1)*
& (QMIXSS(6,2,1)*ZSQU(2,1)*(SH-MS2(11))*SCF(11)
& +QMIXSS(6,2,2)*ZSQU(2,2)*(SH-MS2(12))*SCF(12))
& *((MZ2*(TWO*MS2(11)-TH)+TH*(SH-MS2(11)))/TH
& +(MZ2*(TWO*MS2(11)-UH)+UH*(SH-MS2(11)))/UH)
& -TWO*QMIXSS(6,2,1)**2/UH/TH*ZQRK(1)**2*
& (TWO*MZ2*(MS2(11)-UH)*(MS2(11)-TH)-SH*TH*UH)
MER(3) = MER(3)*FOUR*PCM/MZ2
ENDIF
C--sbottom to light sbottom and Z
IF(SH.GT.(MZ+MS(5))**2) THEN
PCM = SQRT((SH-(MZ+MS(5))**2)*(SH-(MZ-MS(5))**2))*HALF/SQSH
ECM=SQRT(PCM**2+MZ2)
TH = MZ2-SQSH*(ECM-PCM*COSTH)
UH = MZ2-SQSH*(ECM+PCM*COSTH)
MER(6) = SH**2*PCM**2*(SCF(5)*QMIXSS(5,2,1)**2*ZSQU(1,1)**2
& +SCF(6)*QMIXSS(5,2,2)**2*ZSQU(1,2)**2
& +TWO*SCF(5)*SCF(6)*QMIXSS(5,2,1)*QMIXSS(5,2,2)*
& ZSQU(1,1)*ZSQU(1,2)*((SH-MS2(5))*
& (SH-MS2(6))+MSWD(5)*MSWD(6)))
& +QMIXSS(5,2,1)**2/UH**2*ZQRK(1)**2*
& (TWO*MZ2*(UH*TH-MS2(5)*MZ2)+UH**2*SH)
& +QMIXSS(5,2,1)**2/TH**2*ZQRK(2)**2*
& (TWO*MZ2*(UH*TH-MS2(5)*MZ2)+TH**2*SH)
& +QMIXSS(5,2,1)*SH*
& (QMIXSS(5,2,1)*ZSQU(1,1)*(SH-MS2(5))*SCF(5)
& +QMIXSS(5,2,2)*ZSQU(1,2)*(SH-MS2(6))*SCF(6))*
& (ZQRK(1)/UH*(MZ2*(TWO*MS2(5)-UH)+(SH-MS2(5))*UH)
& +ZQRK(2)/TH*(MZ2*(TWO*MS2(5)-TH)+(SH-MS2(5))*TH))
& -TWO*QMIXSS(5,2,1)**2*ZQRK(1)*ZQRK(2)/UH/TH*
& (TWO*MZ2*(MS2(5)-UH)*(MS2(5)-TH)-SH*TH*UH)
MER(6) = MER(6)*FOUR*PCM/MZ2
ENDIF
C--stop to sbottom and W
DO J=1,2
IF(SH.GT.(MW+MS(4+J))**2) THEN
PCM =SQRT((SH-(MW+MS(4+J))**2)*(SH-(MW-MS(4+J))**2))*HALF/SQSH
C--diagram square pieces
DO I=1,2
MER(J)=MER(J)+SCF(10+I)*
& (QMIXSS(6,2,I)*QMIXSS(6,1,I)*QMIXSS(5,1,J))**2
ENDDO
C--light/heavy interference
MER(J)=TWO*SH**2*PCM**3/MW2*(MER(J)+TWO*SCF(11)*SCF(12)*
& ((SH-MS2(11))*(SH-MS2(12))
& +MSWD(11)*MSWD(12))*QMIXSS(5,1,J)**2*
& QMIXSS(6,2,1)*QMIXSS(6,2,2)*QMIXSS(6,1,1)*QMIXSS(6,1,2))
ENDIF
C--sbottom to stop and W
IF(SH.GT.(MW+MS(10+J))**2) THEN
PCM=SQRT((SH-(MW+MS(10+J))**2)*(SH-(MW-MS(10+J))**2))*HALF/SQSH
C--diagram square pieces
DO I=1,2
MER(J+3)=MER(J+3)+SCF(4+I)*
& (QMIXSS(5,2,I)*QMIXSS(5,1,I)*QMIXSS(6,1,J))**2
ENDDO
C--light/heavy interference
MER(J+3)=TWO*SH**2*PCM**3/MW2*(MER(J+3)+TWO*SCF(5)*SCF(6)*
& ((SH-MS2(5))*(SH-MS2(6))+
& MSWD(5)*MSWD(6))*QMIXSS(6,1,J)**2*
& QMIXSS(5,2,1)*QMIXSS(5,2,2)*QMIXSS(5,1,1)*QMIXSS(5,1,2))
ENDIF
ENDDO
C--Now multiply by the parton distributions and phase space factors
320 DO J=1,3
DO K=1,3
CON = 5
C--resonant stop's
IF(ABS(LAMDA3(3,J,K)).GT.EPS.AND.J.LT.K) THEN
FAC2 = LAMDA3(3,J,K)**2*FAC*G**2
DO I=1,3
I1=2*J-1
J1=2*K-1
ME2 = MER(I)*FAC2
HCS=HCS+ME2*DISF(I1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(5,I1,J1,I,I,0,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(J1,1)*DISF(I1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(6,J1,I1,I,I,0,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(I1+6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(5,I1,J1,I,I,1,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(J1+6,1)*DISF(I1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(6,J1,I1,I,I,1,0)
GOTO 900
ENDIF
ENDDO
ENDIF
C--resonant sbottom's
IF(ABS(LAMDA3(J,K,3)).GT.EPS) THEN
FAC2 = LAMDA3(J,K,3)**2*FAC*G**2
DO I=4,6
I1=2*J
J1=2*K-1
ME2 = MER(I)*FAC2
HCS=HCS+ME2*DISF(I1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(5,I1,J1,I,I,0,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(J1,1)*DISF(I1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(6,J1,I1,I,I,0,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(I1+6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(5,I1,J1,I,I,1,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(J1+6,1)*DISF(I1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(6,J1,I1,I,I,1,0)
GOTO 900
ENDIF
ENDDO
ENDIF
ENDDO
ENDDO
C--Now the Higgs decays if possible
400 IF(.NOT.HIGGS) GOTO 900
IF(GENEV) GOTO 490
DO I=1,3
DO 405 J=1,42
405 MEH(I,J) = ZERO
ENDDO
DO I=1,3
DO 420 J=1,3
C--Neutral Higgs down type squark
IF(SQSH.LT.MH(J)+MS(2*I-1)) GOTO 410
PCM = SQRT((SH-(MH(J)+MS(2*I-1))**2)*
& (SH-(MH(J)-MS(2*I-1))**2))*HALF/SQSH
ECM=SQRT(PCM**2+MH(J)**2)
TH = MH(J)**2-SQSH*(ECM-PCM*COSTH)
UH = MH(J)**2-SQSH*(ECM+PCM*COSTH)
MEH(1,3*I-3+J) = PCM*SH*(
& QMIXSS(2*I-1,2,1)**2*SCF(2*I-1)*GHSQSS(J,2*I-1,1,1)**2
& +QMIXSS(2*I-1,2,2)**2*SCF(2*I)*GHSQSS(J,2*I-1,2,1)**2
& +TWO*QMIXSS(2*I-1,2,1)*QMIXSS(2*I-1,2,2)*SCF(2*I-1)
& *SCF(2*I)*GHSQSS(J,2*I-1,1,1)*GHSQSS(J,2*I-1,2,1)*
& ((SH-MS2(2*I-1))*(SH-MS2(2*I))+MSWD(2*I-1)*MSWD(2*I)))
MEH(2,3*I-3+J) = PCM*GUU(J)*QMIXSS(2*I,2,1)**2/TH**2*
& (TH*UH-MH(J)**2*MS2(2*I-1))
MEH(3,3*I-3+J) = PCM*GDD(J)*QMIXSS(2*I,2,1)**2/UH**2*
& (TH*UH-MH(J)**2*MS2(2*I-1))
C--Neutral Higgs up type squarks
410 IF(SQSH.LT.MH(J)+MS(2*I+5)) GOTO 420
PCM = SQRT((SH-(MH(J)+MS(2*I+5))**2)*
& (SH-(MH(J)-MS(2*I+5))**2))*HALF/SQSH
ECM=SQRT(PCM**2+MH(J)**2)
TH = MH(J)**2-SQSH*(ECM-PCM*COSTH)
UH = MH(J)**2-SQSH*(ECM+PCM*COSTH)
MEH(1,3*I+6+J) = PCM*SH*(
& QMIXSS(2*I,2,1)**2*SCF(2*I+5)*GHSQSS(J,2*I,1,1)**2
& +QMIXSS(2*I,2,2)**2*SCF(2*I+6)*GHSQSS(J,2*I,2,1)**2
& +TWO*QMIXSS(2*I,2,1)*QMIXSS(2*I,2,2)*SCF(2*I+5)
& *SCF(2*I+6)*GHSQSS(J,2*I,1,1)*GHSQSS(J,2*I,2,1)*
& ((SH-MS2(2*I+5))*(SH-MS2(2*I+6))+
& MSWD(2*I+5)*MSWD(2*I+6)))
MEH(2,3*I+6+J) = PCM*GDD(J)*QMIXSS(2*I-1,2,1)**2/TH**2*
& (TH*UH-MH(J)**2*MS2(2*I+5))
MEH(3,3*I+6+J) = PCM*GDD(J)*QMIXSS(2*I-1,2,1)**2/UH**2*
& (TH*UH-MH(J)**2*MS2(2*I+5))
420 CONTINUE
C--Charged Higgs up type squark
DO 440 J=1,2
IF(SQSH.LT.MH(4)+MS(2*I+4+J)) GOTO 430
PCM = SQRT((SH-(MH(4)+MS(2*I+4+J))**2)*
& (SH-(MH(4)-MS(2*I+4+J))**2))*HALF/SQSH
ECM=SQRT(PCM**2+MH(4)**2)
TH = MH(4)**2-SQSH*(ECM-PCM*COSTH)
UH = MH(4)**2-SQSH*(ECM+PCM*COSTH)
MEH(1,4*I+14+J) = PCM*SH*(
& QMIXSS(2*I-1,2,1)**2*GHSQSS(4,2*I,J,1)**2*SCF(2*I-1)
& +QMIXSS(2*I-1,2,2)**2*GHSQSS(4,2*I,J,2)**2*SCF(2*I)
& +TWO*QMIXSS(2*I-1,2,1)*QMIXSS(2*I-1,2,2)*SCF(2*I-1)
& *SCF(2*I)*GHSQSS(4,2*I,J,1)*GHSQSS(4,2*I,J,2)*
& ((SH-MS2(2*I-1))*(SH-MS2(2*I))+
& MSWD(2*I-1)*MSWD(2*I)))
MEH(2,4*I+14+J) = PCM*QMIXSS(2*I,2,J)**2*GDD(4)/TH**2*
& (UH*TH-MS2(2*I+4+J)*MH(4)**2)
C--Charged Higgs down type squark
430 IF(SQSH.LT.MH(4)+MS(2*I-2+J)) GOTO 440
PCM = SQRT((SH-(MH(4)+MS(2*I-2+J))**2)*
& (SH-(MH(4)-MS(2*I-2+J))**2))*HALF/SQSH
ECM=SQRT(PCM**2+MH(4)**2)
TH = MH(4)**2-SQSH*(ECM-PCM*COSTH)
UH = MH(4)**2-SQSH*(ECM+PCM*COSTH)
MEH(1,4*I+16+J) = PCM*SH*(
& QMIXSS(2*I,2,1)**2*GHSQSS(4,2*I-1,J,1)**2*SCF(2*I+5)
& +QMIXSS(2*I,2,2)**2*GHSQSS(4,2*I-1,J,2)**2*SCF(2*I+6)
& +TWO*QMIXSS(2*I,2,1)*QMIXSS(2*I,2,2)*SCF(2*I+5)
& *SCF(2*I+6)*GHSQSS(4,2*I-1,J,1)*GHSQSS(4,2*I-1,J,2)*
& ((SH-MS2(2*I+5))*(SH-MS2(2*I+6))+
& MSWD(2*I+5)*MSWD(2*I+6)))
MEH(2,4*I+16+J) = PCM*QMIXSS(2*I-1,2,J)**2*GUU(4)/TH**2*
& (UH*TH-MS2(2*I-2+J)*MH(4)**2)
MEH(3,4*I+16+J) = PCM*QMIXSS(2*I-1,2,J)**2*GUU(4)/UH**2*
& (UH*TH-MS2(2*I-2+J)*MH(4)**2)
440 CONTINUE
ENDDO
490 DO I=1,3
DO J=1,3
DO K=1,3
CON = 5
DO L=1,3
IF(ABS(LAMDA3(J,K,I)).GT.EPS) THEN
C--neutral higgs and sdown
FAC2 = FAC*G**2*LAMDA3(J,K,I)**2
I1=2*J
J1=2*K-1
ME2 = FAC2*(MEH(1,3*I-3+L)+RMASS(I1)**2*MEH(2,3*I-3+L)
& +RMASS(J1)**2*MEH(3,3*I-3+L))
HCS=HCS+ME2*DISF(I1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(7,I1,J1,L,2*I-1,0,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(J1,1)*DISF(I1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(8,J1,I1,L,2*I-1,0,0)
GOTO 900
ENDIF
IF(I2.NE.200) I2=198
HCS=HCS+ME2*DISF(I1+6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(7,I1,J1,L,2*I-1,1,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(J1+6,1)*DISF(I1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(8,J1,I1,L,2*I-1,1,0)
GOTO 900
ENDIF
ENDIF
IF(ABS(LAMDA3(I,J,K)).GT.EPS.AND.J.LT.K) THEN
FAC2 = FAC*G**2*LAMDA3(I,J,K)**2
C--neutral higgs and sup
I1=2*J-1
J1=2*K-1
ME2 = FAC2*(MEH(1,3*I+6+L)+RMASS(I1)**2*MEH(2,3*I+6+L)
& +RMASS(J1)**2*MEH(3,3*I+6+L))
HCS=HCS+ME2*DISF(I1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(7,I1,J1,L,2*I+5,0,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(J1,1)*DISF(I1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(8,J1,I1,L,2*I+5,0,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(I1+6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(7,I1,J1,L,2*I+5,1,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(J1+6,1)*DISF(I1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(8,J1,I1,L,2*I+5,1,0)
GOTO 900
ENDIF
ENDIF
ENDDO
DO L=1,2
IF(ABS(LAMDA3(J,K,I)).GT.EPS) THEN
C--charged higgs and sup
I1=2*J
J1=2*K-1
FAC2 = FAC*G**2
ME2 = FAC2*(LAMDA3(J,K,I)**2*MEH(1,4*I+L+14)
& +LAMDA3(I,J,K)**2*RMASS(I1-1)**2*MEH(2,4*I+L+14))
HCS= HCS+ME2*DISF(I1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(7,I1,J1,4,2*I+4+L,0,0)
GOTO 900
ENDIF
HCS= HCS+ME2*DISF(J1,1)*DISF(I1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(8,J1,I1,4,2*I+4+L,0,0)
GOTO 900
ENDIF
HCS= HCS+ME2*DISF(I1+6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(7,I1,J1,5,2*I+4+L,1,0)
GOTO 900
ENDIF
HCS= HCS+ME2*DISF(J1+6,1)*DISF(I1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(8,J1,I1,5,2*I+4+L,1,0)
GOTO 900
ENDIF
ENDIF
C--charged higgs and sdown
IF(ABS(LAMDA3(I,J,K)).GT.EPS.AND.J.LT.K) THEN
I1=2*J-1
J1=2*K-1
FAC2 = FAC*G**2
ME2 = FAC2*(MEH(1,4*I+L+16)*LAMDA3(I,J,K)**2
& +RMASS(I1+1)**2*LAMDA3(J,I,K)**2*MEH(2,4*I+L+16)
& +RMASS(J1+1)**2*LAMDA3(K,I,J)**2*MEH(3,4*I+L+16))
HCS=HCS+ME2*DISF(I1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(7,I1,J1,5,2*I-2+L,0,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(J1,1)*DISF(I1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(8,J1,I1,5,2*I-2+L,0,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(I1+6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(7,I1,J1,4,2*I-2+L,1,0)
GOTO 900
ENDIF
HCS=HCS+ME2*DISF(J1+6,1)*DISF(I1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(8,J1,I1,4,2*I-2+L,1,0)
GOTO 900
ENDIF
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
C--calculate of the matrix elements
900 IF(GENEV) THEN
CALL HWETWO(.TRUE.,.TRUE.)
IF(IERROR.NE.0) RETURN
HVFCEN = .TRUE.
C--first stage of the colour connection corrections
DO THEP=1,5
IF(THEP.NE.3) THEN
JMOHEP(2,THEP+NHEP-5)=NHEP-5+THEP
& +CONECT(HWRINT(1,2),THEP,CON)
JDAHEP(2,THEP+NHEP-5) = JMOHEP(2,THEP+NHEP-5)
ENDIF
ENDDO
IF(IDHEP(NHEP-4).LT.0) THEN
JDAHEP(2,NHEP-4)=NHEP-1
JDAHEP(2,NHEP-3)=NHEP-3
JDAHEP(2,NHEP-1)=NHEP-4
IF(CON.EQ.5) JDAHEP(2,NHEP-4)=NHEP
JDAHEP(2,NHEP)=CONECT(1,6,CON)+NHEP
ELSE
JMOHEP(2,NHEP-4)=NHEP-1
JMOHEP(2,NHEP-3)=NHEP-3
JMOHEP(2,NHEP-1)=NHEP-4
IF(CON.EQ.5) JMOHEP(2,NHEP-4)=NHEP
JMOHEP(2,NHEP)=CONECT(1,6,CON)+NHEP
ENDIF
IF(CON.EQ.5) THEN
SP=JDAHEP(2,NHEP)
JDAHEP(2,NHEP) = JDAHEP(2,NHEP-1)
JDAHEP(2,NHEP-1) = SP
SP=JMOHEP(2,NHEP)
JMOHEP(2,NHEP) = JMOHEP(2,NHEP-1)
JMOHEP(2,NHEP-1) = SP
ENDIF
HRDCOL(1,1) = NHEP
HRDCOL(1,2) = NHEP-2
ELSE
EVWGT = HCS
ENDIF
END
CDECK ID>, HWHREE.
*CMZ :- -05/04/02 15:40:41 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHREE
C-----------------------------------------------------------------------
C SUSY E+E- --> SM PARTICLES VIA RPV
C MODIFIED TO INCLUDE BEAM POLARIZATION EFFECTS BY PETER RICHARDSON
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,HWUPCM,HWUMBW,HWUAEM,HCS,RCS,FACA,
& S,T,PCM,MQ1,MQ2,SP,TP,TPZ,TPN,TPN2,MSL2(3),MZ,
& MZ2,MSU2(3,2),MWD(3),GL,GR,GLP,GRP,EC,EE,THTMIN,
& MIX(3,2),CFAC,LAM(4,3,3,3,3,3),MET,ME(2,3,3)
DOUBLE COMPLEX FSLL,FSLR,FSRL,FSRR,FTLL,FTLR,FTRL,FTRR,Z,Z0,GZ,
& SCF(3)
INTEGER I,IHEP,RSID(2),IL,GN,J,K,L,GNMN,GNMX,K1,L1,NTRY,GNR,FID(2)
SAVE HCS,MSL2,MWD,LAM,ME,GL,GR,MZ,MZ2,MSU2,MIX,GNMN,GNMX,IL,RSID,
& FID
EXTERNAL HWRGEN,HWRUNI,HWUPCM,HWUMBW,HWUAEM
PARAMETER(Z=(0.D0,1.D0),Z0=(0.D0,0.D0))
C--Start of the code
IF(GENEV) THEN
RCS = HCS*HWRGEN(0)
ELSE
IF(FSTWGT) THEN
C--identify the beam particles
IF(ABS(IDHEP(1)).EQ.11) THEN
C--electron beams
RSID(1) = 2
IL = 1
ELSEIF(ABS(IDHEP(1)).EQ.13) THEN
C--muon beams
RSID(1) = 1
IL = 2
C--unrecognized beam particles issue warning
ELSE
CALL HWWARN('HWHREE',500)
ENDIF
RSID(2) = 3
C--masses of the sleptons
DO I=1,3
MSL2(I) = RMASS(424+2*I)
MWD(I) = MSL2(I)*HBAR/RLTIM(424+2*I)
MSL2(I) = MSL2(I)**2
ENDDO
C--masses and mixings of the t channel squarks
DO I=1,3
MSU2(I,1) = RMASS(400+2*I)
MSU2(I,2) = RMASS(412+2*I)
DO J=1,2
MIX(I,J) = QMIXSS(2*I,1,J)**2
MSU2(I,J) = MSU2(I,J)**2
ENDDO
ENDDO
C--Z mass
MZ = RMASS(200)
MZ2 = MZ**2
C--find the couplings
DO GN=1,3
DO I=1,3
DO J=1,3
DO K=1,3
DO L=1,3
LAM(1,GN,I,J,K,L) = LAMDA1(GN,I,J)*LAMDA1(GN,K,L)
LAM(2,GN,I,J,K,L) = LAMDA1(GN,I,J)*LAMDA2(GN,K,L)
LAM(3,GN,I,J,K,L) = LAM(1,GN,I,J,K,L)
LAM(4,GN,I,J,K,L) = LAMDA2(I,GN,J)*LAMDA2(K,GN,L)
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
C--Z couplings
GL = LFCH(11)
GR = RFCH(11)
C--select the process from the IPROC code
IF(IPROC.EQ.860) THEN
GNMN = 1
GNMX = 2
FID(1) = 0
FID(2) = 0
ELSEIF(IPROC.GE.870.AND.IPROC.LT.890) THEN
J = MOD(IPROC,10)
IF(MOD(IPROC,10).EQ.0) THEN
FID(1) = 0
FID(2) = 0
ELSE
FID(1) = MOD(J-1,3)+1
FID(2) = INT((J-1)/3)+1
ENDIF
IF(IPROC.LT.880) THEN
GNMN = 1
ELSE
GNMN = 2
ENDIF
GNMX = GNMN
ELSE
CALL HWWARN('HWHREE',501)
ENDIF
ENDIF
C--calculate the kinematic varibles
EVWGT = ZERO
S = PHEP(5,3)**2
THTMIN = ONE-FOUR*PTMIN**2/S
IF(THTMIN.LT.ZERO) CALL HWWARN('HWHREE',502)
THTMIN = SQRT(THTMIN)
COSTH = HWRUNI(0,-THTMIN,THTMIN)
EMSCA = PHEP(5,3)
GZ = ONE/(S-MZ**2+Z*MZ*GAMZ)
EE = HWUAEM(S)
FACA = GEV2NB*EE**2*PIFAC*S/FOUR
EE = 0.25D0/EE/PIFAC
SP = ONE/S
T = -HALF*S*(ONE-COSTH)
TP = ONE/T
TPZ = ONE/(T-MZ2)
C--Calculate the prefactor due multichannel approach
DO GN=1,3
IF(GN.EQ.RSID(1).OR.GN.EQ.RSID(2)) THEN
SCF(GN)= ONE/(S-MSL2(GN)+Z*MWD(GN))
ELSE
SCF(GN) = Z0
ENDIF
ENDDO
ENDIF
C--Now the loop to actually calculate the cross sections
HCS = ZERO
DO GN=GNMN,GNMX
GNR = GN+2
DO K1=1,3
DO 80 L1=1,3
IF(FID(1).NE.0.AND.(FID(1).NE.K1.OR.FID(2).NE.L1).AND.
& (FID(1).NE.L1.OR.FID(2).NE.K1)) GOTO 80
IF(GN.EQ.1) THEN
K = 119+2*K1
L = 125+2*L1
GLP = GL
GRP = GR
EC = ONE
CFAC = ONE
ELSEIF(GN.EQ.2) THEN
K = 2*K1-1
L = 2*L1+5
GLP = LFCH(K)
GRP = RFCH(K)
EC = ONE/THREE
CFAC = THREE
ENDIF
MQ1 = RMASS(K)
MQ2 = RMASS(L)
IF(EMSCA.LT.(MQ1+MQ2)) GOTO 80
MET = ZERO
IF(GENEV) GOTO 60
C--calculate the matrix element
C--set all coefficents to zero
FSLL = Z0
FSLR = Z0
FSRL = Z0
FSRR = Z0
FTLL = Z0
FTLR = Z0
FTRL = Z0
FTRR = Z0
C--Standard Model terms
IF(K1.EQ.L1) THEN
C--first if same flavour pair production
FSLL = EC*SP+GL*GRP*GZ
FSLR = EC*SP+GL*GLP*GZ
FSRL = EC*SP+GR*GRP*GZ
FSRR = EC*SP+GR*GLP*GZ
C--t channel terms if e+e- --> e+e-
IF(K1.EQ.IL.AND.GN.EQ.1) THEN
FTLL = TP+GL*GR*TPZ
FTLR = TP+GL**2*TPZ
FTRL = TP+GR**2*TPZ
FTRR = TP+GL*GR*TPZ
ENDIF
ENDIF
C--Now add the RPV terms
DO I=1,3
IF(GN.EQ.1) THEN
TPN = ONE/(T-MSL2(I))
TPN2 = TPN
ELSE
TPN = MIX(I,1)/(T-MSU2(I,1))+ MIX(I,2)/(T-MSU2(I,2))
TPN2 = ZERO
ENDIF
FSLL = FSLL+HALF*LAM(GNR,I,IL,K1,IL,L1)*EE*TPN
FSRR = FSRR+HALF*LAM(GNR,I,K1,IL,L1,IL)*EE*TPN2
FTLL = FTLL+HALF*LAM(GN,I,IL,IL,K1,L1)*EE*SCF(I)
FTRR = FTRR+HALF*LAM(GN,I,IL,IL,L1,K1)*EE*SCF(I)
ENDDO
C--now calculate the matrix element (including beam polarization)
MET =(ONE+COSTH)**2*DREAL(
& DCONJG(FSLR)*FSLR*(ONE-EPOLN(3))*(ONE+PPOLN(3))
& +DCONJG(FSRL)*FSRL*(ONE+EPOLN(3))*(ONE-PPOLN(3))
& +DCONJG(FTLR)*FTLR*(ONE-EPOLN(3))*(ONE+PPOLN(3))
& +DCONJG(FTRL)*FTRL*(ONE+EPOLN(3))*(ONE-PPOLN(3))
& +TWO*FTLR*DCONJG(FSLR)*(ONE-EPOLN(3))*(ONE+PPOLN(3))
& +TWO*FTRL*DCONJG(FSRL)*(ONE+EPOLN(3))*(ONE-PPOLN(3)))
& +(ONE-COSTH)**2*DREAL(
& DCONJG(FSLL)*FSLL*(ONE-EPOLN(3))*(ONE+PPOLN(3))
& +DCONJG(FSRR)*FSRR*(ONE+EPOLN(3))*(ONE-PPOLN(3)))
& +FOUR*DREAL(
& DCONJG(FTLL)*FTLL*(ONE+EPOLN(3))*(ONE+PPOLN(3))
& +DCONJG(FTRR)*FTRR*(ONE-EPOLN(3))*(ONE-PPOLN(3)))
C--final phase space factors
ME(GN,K1,L1) = MET*CFAC*FACA*THTMIN
60 HCS = HCS+ME(GN,K1,L1)
IF(HCS.GT.RCS.AND.GENEV) GOTO 900
80 CONTINUE
ENDDO
ENDDO
900 IF(GENEV) THEN
C--change sign of COSTH if antiparticle first
IF(IDHEP(1).LT.IDHEP(2)) COSTH = -COSTH
C-Set up the particle types
IDHW(NHEP+1) = 15
IDHEP(NHEP+1) = 0
ISTHEP(NHEP+1) = 110
IDHW(NHEP+2) = K
IDHW(NHEP+3) = L
IDHEP(NHEP+2) = IDPDG(K)
IDHEP(NHEP+3) = IDPDG(L)
C--Select the masses of the particles and the final-state momenta
910 NTRY = NTRY+1
PHEP(5,NHEP+2) = HWUMBW(K)
PHEP(5,NHEP+3) = HWUMBW(L)
CALL HWVEQU(5,PHEP(1,3),PHEP(1,NHEP+1))
PCM = HWUPCM(PHEP(5,NHEP+1),PHEP(5,NHEP+2),PHEP(5,NHEP+3))
IF(PCM.LT.ZERO.AND.NTRY.LE.NETRY) THEN
GOTO 910
ELSEIF(PCM.LT.ZERO) THEN
CALL HWWARN('HWHREE',100)
GOTO 999
ENDIF
C--Set up the colours etc
ISTHEP(NHEP+2) = 113
ISTHEP(NHEP+3) = 114
JMOHEP(1,NHEP+1) = 1
IF (JDAHEP(1,1).NE.0) JMOHEP(1,NHEP+1)=JDAHEP(1,1)
JMOHEP(2,NHEP+1) = 2
IF (JDAHEP(1,2).NE.0) JMOHEP(2,NHEP+1)=JDAHEP(1,2)
JMOHEP(1,NHEP+2) = NHEP+1
JMOHEP(2,NHEP+2) = NHEP+3
JMOHEP(1,NHEP+3) = NHEP+1
JMOHEP(2,NHEP+3) = NHEP+2
JDAHEP(1,NHEP+1) = NHEP+2
JDAHEP(2,NHEP+1) = NHEP+3
JDAHEP(1,NHEP+2) = 0
JDAHEP(2,NHEP+2) = NHEP+3
JDAHEP(1,NHEP+3) = 0
JDAHEP(2,NHEP+3) = NHEP+2
C--Set up the momenta
IHEP = NHEP+2
PHEP(4,IHEP) = SQRT(PCM**2+PHEP(5,IHEP)**2)
PHEP(3,IHEP) = PCM*COSTH
PHEP(1,IHEP) = SQRT((PCM+PHEP(3,IHEP))*(PCM-PHEP(3,IHEP)))
PHEP(2,IHEP) = ZERO
CALL HWRAZM(PHEP(1,IHEP),PHEP(1,IHEP),PHEP(2,IHEP))
CALL HWULOB(PHEP(1,NHEP+1),PHEP(1,IHEP),PHEP(1,IHEP))
CALL HWVDIF(4,PHEP(1,NHEP+1),PHEP(1,IHEP),PHEP(1,IHEP+1))
NHEP = NHEP+3
ELSE
EVWGT = HCS
ENDIF
999 RETURN
END
CDECK ID>, HWHREM.
*CMZ :- -01/06/94 17.03.31 by Mike Seymour
*-- Author : Mike Seymour
C-----------------------------------------------------------------------
SUBROUTINE HWHREM(IBEAM,ITARG)
C-----------------------------------------------------------------------
C IDENTIFY THE REMNANTS OF THE HARD SCATTERING
C AND BREAK THEIR COLOUR CONNECTION IF NECESSARY
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION PCL(5),
$ P1P2,P1SQ,P2SQ,S,M1SQ,M2SQ,TMP1,TMP2,A,B,C,D,PTOT(4),HWULDO
INTEGER IBEAM,ITARG,IHEP,NTEMP,I,ICOL,IANT
LOGICAL LTEMP,T,COL,ANT
PARAMETER (T=.TRUE.)
COL(I)=I.EQ.13 .OR. I.GE.1.AND.I.LE.6 .OR. I.GE.115.AND.I.LE.120
ANT(I)=I.EQ.13 .OR. I.GE.7.AND.I.LE.12.OR. I.GE.109.AND.I.LE.114
C---LOOK FOR UNTREATED BEAM AND TARGET REMNANTS
IBEAM=0
ITARG=0
DO 10 IHEP=1,NHEP
IF (ISTHEP(IHEP).EQ.148) THEN
IF (ITARG.NE.0) THEN
CALL HWWARN('HWHREM',100)
GOTO 999
ENDIF
ITARG=IHEP
ELSEIF (ISTHEP(IHEP).EQ.147) THEN
IF (IBEAM.NE.0) THEN
CALL HWWARN('HWHREM',101)
GOTO 999
ENDIF
IBEAM=IHEP
ENDIF
10 CONTINUE
IF (ITARG.EQ.0) THEN
CALL HWWARN('HWHREM',102)
GOTO 999
ENDIF
IF (IBEAM.EQ.0) THEN
CALL HWWARN('HWHREM',103)
GOTO 999
ENDIF
C---MHS FIX TO PREVENT MOMENTUM VIOLATION DUE TO OFF-SHELL BEAM REMNANTS
C---FIND REMNANT MOMENTA AND MASSES
P1P2=HWULDO(PHEP(1,IBEAM),PHEP(1,ITARG))
P1SQ=HWULDO(PHEP(1,IBEAM),PHEP(1,IBEAM))
P2SQ=HWULDO(PHEP(1,ITARG),PHEP(1,ITARG))
S=P1SQ+2*P1P2+P2SQ
TMP1=P1P2**2-P1SQ*P2SQ
IF (TMP1.LE.0) THEN
CALL HWWARN('HWHREM',104)
GOTO 999
ENDIF
TMP1=SQRT(TMP1)
M1SQ=RMASS(IDHW(IBEAM))**2
M2SQ=RMASS(IDHW(ITARG))**2
TMP2=(S-M1SQ-M2SQ)**2-4*M1SQ*M2SQ
IF (TMP2.LE.0) THEN
CALL HWWARN('HWHREM',105)
GOTO 999
ENDIF
TMP2=SQRT(TMP2)
C---EXCHANGE A LITTLE MOMENTUM TO PUT THEM BOTH ON MASS-SHELL
A=(1-(P1P2+P2SQ)/TMP1)/2
B=(1-(P1P2+P1SQ)/TMP1)/2
C=(S-M1SQ+M2SQ-TMP2)/(2*S)
D=(S+M1SQ-M2SQ-TMP2)/(2*S)
CALL HWVSUM(4,PHEP(1,IBEAM),PHEP(1,ITARG),PTOT)
CALL HWVSCA(4,(1-A)*(1-C)+A*D,PHEP(1,IBEAM),PHEP(1,IBEAM))
CALL HWVSCA(4,B*(1-C)+(1-B)*D,PHEP(1,ITARG),PHEP(1,ITARG))
CALL HWVSUM(4,PHEP(1,IBEAM),PHEP(1,ITARG),PHEP(1,IBEAM))
CALL HWVDIF(4,PTOT,PHEP(1,IBEAM),PHEP(1,ITARG))
CALL HWUMAS(PHEP(1,IBEAM))
CALL HWUMAS(PHEP(1,ITARG))
C---END MHS FIX
C---IF THEY ARE COLOUR CONNECTED, DISCONNECT THEM BY EMITTING A SOFT
C GLUON AND SPLITTING THAT GLUON TO LIGHT QUARKS
C (WHICH NORMALLY GETS DONE AS THE FIRST STAGE OF CLUSTER FORMATION)
C---LOOP OVER COLOUR/ANTICOLOUR LINE
DO 20 I=1,2
IF (I.EQ.1) THEN
ICOL=IBEAM
IANT=ITARG
ELSE
ICOL=ITARG
IANT=IBEAM
ENDIF
IF (COL(IDHW(ICOL)).AND.ANT(IDHW(IANT)).AND.
$ JMOHEP(2,ICOL).EQ.IANT.AND.JDAHEP(2,IANT).EQ.ICOL) THEN
CALL HWVSUM(4,PHEP(1,ICOL),PHEP(1,IANT),PCL)
CALL HWUMAS(PCL)
NTEMP=NHEP
CALL HWCCUT(ICOL,IANT,PCL,T,LTEMP)
IF (IERROR.NE.0) RETURN
C---IF NOTHING WAS CREATED THEY MUST BE BELOW THRESHOLD, SO GIVE UP
IF (NHEP.NE.NTEMP+2) RETURN
C---RELABEL THEM AS PERTUBATIVE JUST TO NEATEN UP THE EVENT RECORD
ISTHEP(NHEP-1)=149
ISTHEP(NHEP)=149
ENDIF
20 CONTINUE
999 RETURN
END
CDECK ID>, HWHREP.
*CMZ :- -18/10/00 13:46:47 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHREP
C-----------------------------------------------------------------------
C SUSY E+E- RPV PRODUCTION
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
IF(IPROC.GE.800.AND.IPROC.LE.850) THEN
CALL HWHRES
ELSEIF(IPROC.GE.860.AND.IPROC.LT.890) THEN
CALL HWHREE
C---UNRECOGNIZED PROCESS
ELSE
CALL HWWARN('HWHREP',500)
ENDIF
END
CDECK ID>, HWHRES.
*CMZ :- -07/04/02 10:38:51 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHRES
C-----------------------------------------------------------------------
C SUSY E+E- --> RPV SINGLE SPARTICLE PRODUCTION
C POLARZATION EFFECTS ADDED 5/4/02 BY PETER RICHARDSON
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWUAEM,HWRUNI,HWUPCM,HWUMBW,HCS,RCS,FACA,
& FACB,FACC,FACD,FACE,M1(4,4),M2(2,4),M3(8,2),
& MW,MZ,MSCL(2,2),MSCL2(2,2),MZ2,MSL2,MSR2,MSNU2,
& MW2,MCH(2),MCH2(2),MNU(4),MNU2(4),MLT(3),MLT2(3),
& MNUT(2),MNUT2(2),RMNUT(2),S,U,T,QPE,SQPE,SM,DM,
& PF,PCM,SCF(2),UP,TP,MH(4),MH2(4),THCOS(2),THTMIN,
& A(6,4),B(6,4),SW,CW,MC,SIN2B,ZNU,RHO,HSL(2,2),
& HL(4),M4(10,2),HNU(3)
INTEGER I,SSNU,NTID(2),CHID(2),IG1,IG2,IHEP,SSCH,ISL,ISR,NTRY,
& ISN,IDL,J,L,RSID(2),K,L2,IL,IDZ,RADID(2,8),GMIN,GMAX
LOGICAL NEUT,CHAR,RAD,HIGGS,THSGN
SAVE HCS,M1,M2,M3,M4,SW,CW,MW,MZ,MW2,MZ2,MLT,MLT2,MNUT,MNUT2,
& RMNUT,MNU,MNU2,MCH,MCH2,MSNU2,A,B,MSL2,MSR2,MSCL,
& MSCL2,ZNU,THCOS,HSL,HL,HNU,MH,MH2,GMIN,GMAX,
& RADID,NTID,ISL,ISR,ISN,IDL,CHID,RSID,IL,NEUT,CHAR,RAD,HIGGS
EXTERNAL HWRGEN,HWUAEM,HWRUNI,HWUPCM,HWUMBW
PARAMETER (SSNU=449,SSCH = 455)
C--Start of the code
IF(GENEV) THEN
RCS = HCS*HWRGEN(0)
ELSE
C--Initialise the hard processes
IF(FSTWGT) THEN
C--Decide which processes to generate
NEUT = .FALSE.
CHAR = .FALSE.
RAD = .FALSE.
HIGGS = .FALSE.
C--all single sparticle production
IF(IPROC.EQ.800) THEN
NEUT = .TRUE.
CHAR = .TRUE.
RAD = .TRUE.
HIGGS = .TRUE.
NTID(1) = 1
NTID(2) = 4
CHID(1) = 1
CHID(2) = 2
GMIN = 1
GMAX = 6
C--single neutralino production
ELSEIF(IPROC.GE.810.AND.IPROC.LE.814) THEN
NEUT = .TRUE.
IF(IPROC.EQ.810) THEN
NTID(1) = 1
NTID(2) = 4
ELSE
NTID(1) = IPROC-810
NTID(2) = NTID(1)
ENDIF
C--single chargino production
ELSEIF(IPROC.GE.820.AND.IPROC.LE.822) THEN
CHAR = .TRUE.
IF(IPROC.EQ.820) THEN
CHID(1) = 1
CHID(2) = 2
ELSE
CHID(1) = IPROC-820
CHID(2) = CHID(1)
ENDIF
C--single slepton production with gauge boson
ELSEIF(IPROC.EQ.830) THEN
RAD = .TRUE.
GMIN = 1
GMAX = 6
C--single slepton production with Higgs boson
ELSEIF(IPROC.EQ.840) THEN
HIGGS = .TRUE.
C--photon radiation processes
ELSEIF(IPROC.EQ.850) THEN
RAD = .TRUE.
GMIN = 7
GMAX = 8
C--unrecognized process issue warning
ELSE
CALL HWWARN('HWHRES',500)
ENDIF
C--check the particles in the beam
RSID(2) = 3
IF(ABS(IDHEP(1)).EQ.11) THEN
C--electron beams
ISL = 425
ISR = 437
ISN = 426
RSID(1) = 2
IL = 1
ELSEIF(ABS(IDHEP(1)).EQ.13) THEN
C--muon beams
ISL = 427
ISR = 439
ISN = 428
RSID(1) = 1
IL = 2
C--unrecognised beam particles issue warning
ELSE
CALL HWWARN('HWHRES',501)
ENDIF
IDL=ABS(IDHEP(1))
C--masses and electroweak parameters
SW = SQRT(SWEIN)
CW = SQRT(1-SWEIN)
MW = RMASS(198)
MZ = RMASS(200)
MW2 = MW**2
MZ2 = MZ**2
SIN2B = TWO*SINB*COSB
C--neutralino and chargino masses
DO I=1,4
MNU(I) = RMASS(SSNU+I)
MNU2(I) = MNU(I)**2
ENDDO
DO I = 1,2
MCH(I) = RMASS(I+SSCH)
MCH2(I) = MCH(I)**2
ENDDO
C--incoming lepton mass
MLT(1) = RMASS(IDL+110)
C--lepton masses in chargino production
DO I=1,2
MLT(I+1) = RMASS(119+2*RSID(I))
ENDDO
DO I=1,3
MLT2(I) = MLT(I)**2
ENDDO
C--t-channel slepton masses
MSL2 = RMASS(ISL)**2
MSR2 = RMASS(ISR)**2
MSNU2 = RMASS(ISN)**2
C--resonant sneutrino masses and widths
DO I=1,2
MNUT(I) = RMASS(424+2*RSID(I))
MNUT2(I) = MNUT(I)**2
RMNUT(I) = MNUT2(I)*HBAR**2/RLTIM(424+2*RSID(I))**2
ENDDO
C--now calculate the coefficients for the processes
C--first neutralino production
DO L=1,4
MC = MLT(1)*ZMIXSS(L,3)/(TWO*MW*COSB*SW)
C--first for the left slepton
A(L,1) = SLFCH(IDL,L)
B(L,1) = ZSGNSS(L)*MC
C--then the right slepton
A(L,2) = ZSGNSS(L)*SRFCH(IDL,L)
B(L,2) = MC
C--the resonant sneutrino
DO I=1,2
A(L,2+I) = SLFCH(10+2*RSID(I),L)
B(L,2+I) = ZERO
ENDDO
ENDDO
C--now chargino production
DO L=1,2
J=L+4
MC = WMXUSS(L,2)/(SQRT(TWO)*MW*COSB*SW)
C--first for the t channel sneutrino
A(J,1) = WSGNSS(L)*WMXVSS(L,1)/SW
B(J,1) = -MLT(1)*MC
C--now for the resonant sneutrinos
DO I=1,2
A(J,I+1) = WSGNSS(L)*WMXVSS(L,1)/SW
B(J,I+1) = -MLT(I+1)*MC
ENDDO
ENDDO
C--coupling of the Z to the sneutrino
ZNU = HALF/SW/CW
C--now the masses and IDs of the slepton in the radiative processes
C--IDs and masses of the charged sleptons
DO I=1,2
RADID(2,2*I-1) = 423+RSID(I)*2
RADID(2,2*I ) = 435+RSID(I)*2
MSCL(I,1) = RMASS(RADID(2,2*I-1))
MSCL(I,2) = RMASS(RADID(2,2*I))
DO J=1,2
MSCL2(I,J) = MSCL(I,J)**2
ENDDO
ENDDO
C--ID of the W for charged slepton processes
DO I=1,4
RADID(1,I) = 198
ENDDO
C--ID's for the Z and gamma processes
DO I=1,2
RADID(1,I+4) = 200
RADID(1,I+6) = 59
RADID(2,I+4) = 424+RSID(I)*2
RADID(2,I+6) = RADID(2,I+4)
ENDDO
C--couplings of the sleptons to the Higgs
DO I=1,2
DO J=1,2
K = 2*RSID(I)-1
L = 119+2*RSID(I)
HSL(I,J) = LMIXSS(K,1,J)*(RMASS(L)**2*TANB-MW2*SIN2B)
& +LMIXSS(K,2,J)*RMASS(L)*MUSS
IF(RSID(I).EQ.3) HSL(I,J) = HSL(I,J)
& +LMIXSS(K,2,J)*RMASS(L)*ALSS*TANB
HSL(I,J) = HSL(I,J)/SQRT(HALF)/MW
ENDDO
ENDDO
C--coupling of the sneutrino to the Higgs
HNU(1) = HALF*MZ*SINBPA/CW
HNU(2) = -HALF*MZ*COSBPA/CW
HNU(3) = ZERO
C--couplings of the leptons to the Higgs
RHO = HALF*MLT(1)/MW
HL(1) = -RHO*SINA/COSB
HL(2) = RHO*COSA/COSB
HL(3) = RHO*TANB
HL(4) = RHO*TANB/SQRT(HALF)
C--Higgs Masses
DO I=1,4
MH(I) = RMASS(202+I)
MH2(I) = MH(I)**2
ENDDO
ENDIF
C--Now calculate the weights
COSTH = HWRUNI(1,-ONE,ONE)
S = PHEP(5,3)**2
EMSCA = PHEP(5,3)
FACA = HWUAEM(S)*GEV2NB/S/8.0D0
FACD = HALF*FACA/SWEIN
FACB = HALF*FACD/MW2
FACC = HALF*FACA/MZ2
FACE = ALPHEM*GEV2NB/S/8.0D0
DO I=1,2
SCF(I) = ONE/((S-MNUT2(I))**2+RMNUT(I))
ENDDO
C--single neutralino production
IF(.NOT.NEUT) THEN
DO L=1,4
DO J=1,4
M1(L,J) = ZERO
ENDDO
ENDDO
GOTO 100
ENDIF
DO L=NTID(1),NTID(2)
DO J=1,2
SQPE = S - MNU2(L)
K = J+2
IF(SQPE.GE.ZERO) THEN
PF = SQPE/S
T = HALF*(SQPE*COSTH-S+MNU2(L))
U = -T-S+MNU2(L)
UP = ONE/(U-MSL2)
TP = ONE/(T-MSR2)
C--neutralino antineutrino production (including beam polarization)
M1(L,J) = (ONE-EPOLN(3))*(ONE-PPOLN(3))*(
& A(L,K)**2*S*(S-MNU2(L))*SCF(J)
& +TWO*S*U*(S-MNUT2(J))*UP*SCF(J)*A(L,K)*A(L,1)
& +TWO*S*T*(S-MNUT2(J))*TP*SCF(J)*A(L,K)*A(L,2)
& +TWO*U*T*UP*TP*A(L,1)*A(L,2))
& +U*(U-MNU2(L))*UP**2*(ONE-PPOLN(3))*
& (A(L,1)**2*(ONE-EPOLN(3))+B(L,1)**2*(ONE+EPOLN(3)))
& +T*(T-MNU2(L))*TP**2*(ONE-EPOLN(3))*
& (A(L,2)**2*(ONE-PPOLN(3))+B(L,2)**2*(ONE+PPOLN(3)))
C--neutralino neutrino production (including beam polarization)
M1(L,K) = (ONE+EPOLN(3))*(ONE+PPOLN(3))*(
& A(L,K)**2*S*(S-MNU2(L))*SCF(J)
& +TWO*S*U*(S-MNUT2(J))*UP*SCF(J)*A(L,K)*A(L,1)
& +TWO*S*T*(S-MNUT2(J))*TP*SCF(J)*A(L,K)*A(L,2)
& +TWO*U*T*UP*TP*A(L,1)*A(L,2))
& +U*(U-MNU2(L))*UP**2*(ONE+PPOLN(3))*
& (A(L,1)**2*(ONE+EPOLN(3))+B(L,1)**2*(ONE-EPOLN(3)))
& +T*(T-MNU2(L))*TP**2*(ONE+EPOLN(3))*
& (A(L,2)**2*(ONE+PPOLN(3))+B(L,2)**2*(ONE-PPOLN(3)))
C--final coefficients
M1(L,J) = LAMDA1(RSID(J),IL,IL)**2*FACA*PF*M1(L,J)
M1(L,K) = LAMDA1(RSID(J),IL,IL)**2*FACA*PF*M1(L,K)
ELSE
M1(L,J) = ZERO
M1(L,K) = ZERO
ENDIF
ENDDO
ENDDO
C--single chargino production
100 IF(.NOT.CHAR) THEN
DO L=1,2
DO J=1,4
M2(L,J) = ZERO
ENDDO
ENDDO
GOTO 200
ENDIF
DO L = CHID(1),CHID(2)
DO J = 1,2
K = J+1
L2 = L+4
SM = MCH(L) + MLT(K)
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = MCH(L) - MLT(K)
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T = HALF*(SQPE*COSTH-S+MCH2(L)+MLT2(K))
U = -T-S+MCH2(L)+MLT2(K)
UP = ONE/(U-MSNU2)
C--chargino antilepton (including beam polarization)
M2(L,J) = S*SCF(J)*(-FOUR*MLT(K)*MCH(L)*A(L2,K)*B(L2,K)
& +(S-MLT2(K)-MCH2(L))*(A(L2,K)**2+B(L2,K)**2))*
& (ONE-EPOLN(3))*(ONE-PPOLN(3))
& +(MLT2(K)-U)*(MCH2(L)-U)*UP**2*(ONE-PPOLN(3))*
& (A(L2,1)**2*(ONE-EPOLN(3))+B(L2,1)**2*(ONE+EPOLN(3)))
& -TWO*S*(S-MNUT2(J))*UP*SCF(J)*A(L2,1)*(ONE-EPOLN(3))*
& (ONE-PPOLN(3))*(U*A(L2,K)+MLT(K)*MCH(L)*B(L2,K))
C--chargino lepton (including beam polarization)
M2(L,J+2) = S*SCF(J)*(-FOUR*MLT(K)*MCH(L)*A(L2,K)*B(L2,K)
& +(S-MLT2(K)-MCH2(L))*(A(L2,K)**2+B(L2,K)**2))*
& (ONE+EPOLN(3))*(ONE+PPOLN(3))
& +(MLT2(K)-U)*(MCH2(L)-U)*UP**2*(ONE+PPOLN(3))*
& (A(L2,1)**2*(ONE+EPOLN(3))+B(L2,1)**2*(ONE-EPOLN(3)))
& -TWO*S*(S-MNUT2(J))*UP*SCF(J)*A(L2,1)*(ONE+EPOLN(3))*
& (ONE+PPOLN(3))*(U*A(L2,K)+MLT(K)*MCH(L)*B(L2,K))
C--final coefficients
M2(L,J) =HALF*LAMDA1(RSID(J),IL,IL)**2*FACA*PF*M2(L,J)
M2(L,J+2)=HALF*LAMDA1(RSID(J),IL,IL)**2*FACA*PF*M2(L,J+2)
ELSE
M2(L,J) = ZERO
M2(L,J+2) = ZERO
ENDIF
ENDDO
ENDDO
C--Radiative processes
200 IF(.NOT.RAD) THEN
DO I=1,8
DO J=1,2
M3(I,J) = ZERO
ENDDO
ENDDO
GOTO 300
ENDIF
IF(GMAX.LT.7) THEN
C--W charged slepton production
DO I=1,2
DO J=1,2
QPE = S-(MW+MSCL(I,J))**2
IF(QPE.GE.ZERO) THEN
DM = MW-MSCL(I,J)
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T = HALF*(SQPE*COSTH-S+MW2+MSCL2(I,J))
U = -T-S+MW2+MSCL2(I,J)
UP = ONE/U
C--W slepton
M3(2*I+J-2,1) = SCF(I)*S*SQPE**2
& +UP**2*(TWO*MW2*(U*T-MW2*MSCL2(I,J))+U**2*S)
& -TWO*UP*SCF(I)*(S-MNUT2(I))*S*(MW2*(TWO*MSCL2(I,J)-U)+
& U*(S-MSCL2(I,J)))
M3(2*I+J-2,1) = LAMDA1(RSID(I),IL,IL)**2*FACB*PF
& *LMIXSS(2*RSID(I)-1,1,J)**2*M3(2*I+J-2,1)
C--W- antislepton (including beam polarization)
M3(2*I+J-2,2) = (ONE-EPOLN(3))*(ONE-PPOLN(3))*
& M3(2*I+J-2,1)
C--W+ antislepton (including beam polarization)
M3(2*I+J-2,1) = (ONE+EPOLN(3))*(ONE+PPOLN(3))*
& M3(2*I+J-2,1)
ELSE
M3(2*I+J-2,1) = ZERO
M3(2*I+J-2,2) = ZERO
ENDIF
ENDDO
ENDDO
C--Z sneutrino production
DO I=1,2
QPE = S-(MZ+MNUT(I))**2
IF(QPE.GE.ZERO) THEN
DM = MZ-MNUT(I)
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T = HALF*(SQPE*COSTH-S+MZ2+MNUT2(I))
U = -T-S+MZ2+MNUT2(I)
UP = ONE/U
TP = ONE/T
IDZ = 9+RSID(I)*2
C--Z sneutrino production
M3(I+4,1) = SCF(I)*S*SQPE**2*ZNU**2
& +TP**2*RFCH(IDZ)**2*(TWO*MZ2*(U*T-MNUT2(I)*MZ2)+S*T**2)
& +UP**2*LFCH(IDZ)**2*(TWO*MZ2*(U*T-MNUT2(I)*MZ2)+S*U**2)
& -TWO*ZNU*RFCH(IDZ)*TP*S*SCF(I)*(S-MNUT2(I))*
& (MZ2*(TWO*MNUT2(I)-T)+T*(S-MNUT2(I)))
& +TWO*ZNU*LFCH(IDZ)*UP*S*SCF(I)*(S-MNUT2(I))*
& (MZ2*(TWO*MNUT2(I)-U)+U*(S-MNUT2(I)))
& +TWO*LFCH(IDZ)*RFCH(IDZ)*UP*TP*
& (TWO*MZ2*(MNUT2(I)-T)*(MNUT2(I)-U)-S*U*T)
M3(I+4,1) = LAMDA1(RSID(I),IL,IL)**2*FACC*PF*M3(I+4,1)
C--Z antisneutrino (including beam polarization)
M3(I+4,2) = (ONE-EPOLN(3))*(ONE-PPOLN(3))*M3(I+4,1)
C--Z sneutrino (including beam polarization)
M3(I+4,1) = (ONE+EPOLN(3))*(ONE+PPOLN(3))*M3(I+4,1)
ELSE
M3(I+4,1) = ZERO
M3(I+4,2) = ZERO
ENDIF
ENDDO
ELSE
C--gamma sneutrino production (includes Jacobian 1-costh**2)
C--now includes polarization effects
DO I=1,2
SQPE = S-MNUT2(I)
IF(SQPE.GE.ZERO) THEN
PF = SQPE/S
PCM = HALF*EMSCA*PF
THTMIN = PTMIN/PCM
IF(THTMIN.GT.ONE) CALL HWWARN('HWHRES',502)
THTMIN = ONE-THTMIN**2
THTMIN = HALF*LOG((1+THTMIN)/(1-THTMIN))
RHO = HWRUNI(2,-THTMIN,THTMIN)
THCOS(I) = -TANH(RHO)
T = HALF*(SQPE*THCOS(I)-S+MNUT2(I))
U = -T-S+MNUT2(I)
UP = ONE/U
TP = ONE/T
M3(I+6,1) = U*TP+T*UP+TWO*UP*TP*(MNUT2(I)-U)*(MNUT2(I)-T)
M3(I+6,1) = LAMDA1(RSID(I),IL,IL)**2*FACE*PF*M3(I+6,1)*
& (ONE-THCOS(I)**2)*THTMIN
M3(I+6,2) = M3(I+6,1)*(ONE-EPOLN(3))*(ONE-PPOLN(3))
M3(I+6,1) = M3(I+6,1)*(ONE+EPOLN(3))*(ONE+PPOLN(3))
ELSE
M3(I+6,1) = ZERO
M3(I+6,2) = ZERO
ENDIF
ENDDO
ENDIF
C--Higgs processes
300 IF(.NOT.HIGGS) THEN
DO I=1,10
DO J=1,2
M4(I,J) = ZERO
ENDDO
ENDDO
GOTO 500
ENDIF
C--Charged Higgs charged slepton production
DO I=1,2
DO J=1,2
QPE = S-(MH(4)+MSCL(I,J))**2
IF(QPE.GE.ZERO) THEN
DM = MH(4)-MSCL(I,J)
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T = HALF*(SQPE*COSTH-S+MH2(4)+MSCL2(I,J))
U = -T-S+MH2(4)+MSCL2(I,J)
C--charged Higgs antislepton
M4(2*I+J-2,1) = HSL(I,J)**2*S*SCF(I)*
& (ONE-EPOLN(3))*(ONE-PPOLN(3))
& +FOUR*LMIXSS(2*RSID(I)-1,1,J)**2*HL(4)**2
& *(U*T-MSCL2(I,J)*MH2(4))/U**2*
& (ONE+EPOLN(3))*(ONE-PPOLN(3))
C--charged Higgs slepton
M4(2*I+J-2,2) = HSL(I,J)**2*S*SCF(I)*
& (ONE+EPOLN(3))*(ONE+PPOLN(3))
& +FOUR*LMIXSS(2*RSID(I)-1,1,J)**2*HL(4)**2
& *(U*T-MSCL2(I,J)*MH2(4))/U**2*
& (ONE-EPOLN(3))*(ONE+PPOLN(3))
C--final coefficients
M4(2*I+J-2,1) = FACD*LAMDA1(RSID(I),IL,IL)**2*
& M4(2*I+J-2,1)*PF
M4(2*I+J-2,2) = FACD*LAMDA1(RSID(I),IL,IL)**2*
& M4(2*I+J-2,2)*PF
ELSE
M4(2*I+J-2,1) = ZERO
M4(2*I+J-2,2) = ZERO
ENDIF
ENDDO
ENDDO
C--neutral higgs sneutrino production
DO L=1,3
DO I=1,2
QPE = S-(MH(L)+MNUT(I))**2
IF(QPE.GE.ZERO) THEN
DM = MH(L)-MNUT(I)
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T = HALF*(SQPE*COSTH-S+MH2(L)+MNUT2(I))
U = -T-S+MH2(L)+MNUT2(I)
IF(L.NE.3) THEN
C--h0, H0 antisneutrino (including beam polarization)
M4(2*L+I+2,1) = HNU(L)**2*S*SCF(I)*
& (ONE-EPOLN(3))*(ONE-PPOLN(3))
& +HL(L)**2*( ONE/T**2*(ONE+EPOLN(3))*(ONE-PPOLN(3))
& +ONE/U**2*(ONE-EPOLN(3))*(ONE+PPOLN(3)))
& *(U*T-MH2(L)*MNUT2(I))
C--h0, H0 sneutrino (including beam polarization)
M4(2*L+I+2,2) = HNU(L)**2*S*SCF(I)*
& (ONE+EPOLN(3))*(ONE+PPOLN(3))
& +HL(L)**2*( ONE/T**2*(ONE-EPOLN(3))*(ONE+PPOLN(3))
& +ONE/U**2*(ONE+EPOLN(3))*(ONE-PPOLN(3)))
& *(U*T-MH2(L)*MNUT2(I))
ELSE
C--A0 antisneutrino (including beam polarization)
M4(2*L+I+2,1) = (ONE-EPOLN(3))*(ONE-PPOLN(3))*(
& HNU(L)**2*S*SCF(I)
& +HL(L)**2*(ONE/T**2+ONE/U**2)*(U*T-MH2(L)*MNUT2(I)))
C--A0 sneutrino (including beam polarization)
M4(2*L+I+2,2) = (ONE+EPOLN(3))*(ONE+PPOLN(3))*(
& HNU(L)**2*S*SCF(I)
& +HL(L)**2*(ONE/T**2+ONE/U**2)*(U*T-MH2(L)*MNUT2(I)))
ENDIF
C--final coefficients
M4(2*L+I+2,1) = FACD*LAMDA1(RSID(I),IL,IL)**2*
& M4(2*L+I+2,1)*PF
M4(2*L+I+2,2) = FACD*LAMDA1(RSID(I),IL,IL)**2*
& M4(2*L+I+2,2)*PF
ELSE
M4(2*L+I+2,1) = ZERO
M4(2*L+I+2,2) = ZERO
ENDIF
ENDDO
ENDDO
ENDIF
C--Add up the weights now
500 HCS = ZERO
C--single neutralino production
IF(.NOT.NEUT) GOTO 550
DO L=NTID(1),NTID(2)
IG1= SSNU+L
DO J=1,4
IG2 = 126+2*RSID(MOD(J-1,2)+1)-6*INT((J-1)/2)
HCS = HCS+M1(L,J)
THSGN = (IDHEP(1).LT.IDHEP(2).AND.J.GT.2).OR.
& (IDHEP(1).GT.IDHEP(2).AND.J.LE.2)
IF(GENEV.AND.HCS.GT.RCS) GOTO 900
ENDDO
ENDDO
C--single chargino production
550 IF(.NOT.CHAR) GOTO 600
DO L=CHID(1),CHID(2)
DO J=1,4
IG1 = SSCH+L-2*INT((J-1)/2)
IG2 = 125+2*RSID(MOD((J-1),2)+1)-6*INT((J-1)/2)
HCS = HCS + M2(L,J)
THSGN = (IDHEP(1).LT.IDHEP(2).AND.J.GT.2).OR.
& (IDHEP(1).GT.IDHEP(2).AND.J.LE.2)
IF (GENEV.AND.HCS.GT.RCS) GOTO 900
ENDDO
ENDDO
C--gauge boson slepton production
600 IF(.NOT.RAD) GOTO 650
DO I=GMIN,GMAX
IG1 = RADID(1,I)
IG2 = RADID(2,I)
IF(I.GE.7) COSTH = THCOS(I-6)
DO J=1,2
HCS = HCS+M3(I,J)
THSGN = (IDHEP(1).LT.IDHEP(2).AND.J.EQ.1).OR.
& (IDHEP(1).GT.IDHEP(2).AND.J.EQ.2)
IF(GENEV.AND.HCS.GT.RCS) GOTO 900
IF(I.LE.4) IG1 = IG1+1
IG2 = IG2+6
ENDDO
ENDDO
C--higgs slepton production
650 IF(.NOT.HIGGS) GOTO 900
C--charged Higgs slepton
DO I=1,4
IG1 = 207
IG2 = RADID(2,I)+6
DO J=1,2
HCS=HCS+M4(I,J)
THSGN = (IDHEP(1).LT.IDHEP(2).AND.J.EQ.1).OR.
& (IDHEP(1).GT.IDHEP(2).AND.J.EQ.2)
IF(GENEV.AND.HCS.GT.RCS) GOTO 900
IG1 = IG1-1
IG2 = IG2-6
ENDDO
ENDDO
C--Neutral Higgs sneutrino
DO L=1,3
DO I=1,2
IG1 = 202+L
IG2 = 430+2*RSID(I)
DO J=1,2
HCS = HCS+M4(2+2*L+I,J)
THSGN = (IDHEP(1).LT.IDHEP(2).AND.J.EQ.1).OR.
& (IDHEP(1).GT.IDHEP(2).AND.J.EQ.2)
IF(GENEV.AND.HCS.GT.RCS) GOTO 900
IG2 = IG2-6
ENDDO
ENDDO
ENDDO
900 IF(GENEV) THEN
C--change sign of COSTH if antiparticle first
IF(THSGN) COSTH = -COSTH
C-Set up the particle types
IDHW(NHEP+1) = 15
IDHEP(NHEP+1) = 0
ISTHEP(NHEP+1) = 110
IDHW(NHEP+2) = IG1
IDHW(NHEP+3) = IG2
IDHEP(NHEP+2) = IDPDG(IG1)
IDHEP(NHEP+3) = IDPDG(IG2)
C--generate the particle masses and final-state momenta
NTRY = 0
910 NTRY = NTRY+1
PHEP(5,NHEP+2) = HWUMBW(IG1)
PHEP(5,NHEP+3) = HWUMBW(IG2)
C--Set up the Centre-of-mass energy
CALL HWVEQU(5,PHEP(1,3),PHEP(1,NHEP+1))
PCM = HWUPCM(PHEP(5,NHEP+1),PHEP(5,NHEP+2),PHEP(5,NHEP+3))
IF(PCM.LT.ZERO.AND.NTRY.LE.NETRY) THEN
GOTO 910
ELSEIF(PCM.LT.ZERO) THEN
CALL HWWARN('HWHRES',100)
GOTO 999
ENDIF
C--Set up the colours etc
ISTHEP(NHEP+2) = 113
ISTHEP(NHEP+3) = 114
JMOHEP(1,NHEP+1) = 1
IF (JDAHEP(1,1).NE.0) JMOHEP(1,NHEP+1)=JDAHEP(1,1)
JMOHEP(2,NHEP+1) = 2
IF (JDAHEP(1,2).NE.0) JMOHEP(2,NHEP+1)=JDAHEP(1,2)
JMOHEP(1,NHEP+2) = NHEP+1
JMOHEP(2,NHEP+2) = NHEP+2
JMOHEP(1,NHEP+3) = NHEP+1
JMOHEP(2,NHEP+3) = NHEP+3
JDAHEP(1,NHEP+1) = NHEP+2
JDAHEP(2,NHEP+1) = NHEP+3
JDAHEP(1,NHEP+2) = 0
JDAHEP(2,NHEP+2) = NHEP+2
JDAHEP(1,NHEP+3) = 0
JDAHEP(2,NHEP+3) = NHEP+3
C--set up the rest of the momenta
IHEP = NHEP+2
PHEP(4,IHEP) = SQRT(PCM**2+PHEP(5,IHEP)**2)
PHEP(3,IHEP) = PCM*COSTH
PHEP(1,IHEP) = SQRT((PCM+PHEP(3,IHEP))*(PCM-PHEP(3,IHEP)))
PHEP(2,IHEP) = ZERO
CALL HWRAZM(PHEP(1,IHEP),PHEP(1,IHEP),PHEP(2,IHEP))
CALL HWULOB(PHEP(1,NHEP+1),PHEP(1,IHEP),PHEP(1,IHEP))
CALL HWVDIF(4,PHEP(1,NHEP+1),PHEP(1,IHEP),PHEP(1,IHEP+1))
NHEP = NHEP+3
ELSE
EVWGT = HCS
ENDIF
999 RETURN
END
CDECK ID>, HWHRLL.
*CMZ :- -08/04/02 09:00:27 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHRLL
C-----------------------------------------------------------------------
C Subroutine for resonant sleptons to standard model particles
C slepton mass and mass*width added to save statement to
C avoid problems with Linux by Peter Richardson
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HCS,S,RCS,HWRGEN,FAC,ECM,TH,PCM,CFAC,CHANPB,SH,
& TAU,TAUA,TAUB,LOWTLM,UPPTLM,HWRUNI,MSL(12),
& SQSH,MET(2),SCF(12),MIX(12),ME(4,3,3,3,3,2),
& RAND,CHAN(12),LAM(2,7,3,3,3,3),SLWD(12),RTAB,
& WD,MQ1,MQ2,EPS,XMIN,XMAX,XPOW,XUPP,MSL2(12),
& MSWD(12)
INTEGER I,J,K,L,I1,J1,K1,L1,GEN,GN,GR,GNMX,GNMN,MIG,MXG,CUP,CF
LOGICAL FIRST
EXTERNAL HWRGEN,HWRUNI
PARAMETER(EPS=1D-20)
COMMON/HWRPIN/XMIN,XMAX,XPOW,FIRST
SAVE HCS,ME,MSL,SLWD,LAM,MIX,CHAN,GNMN,GNMX,SH,SQSH,FAC,SCF,MSL2,
& MSWD
IF(GENEV) THEN
RCS = HCS*HWRGEN(0)
ELSE
IF(FSTWGT) THEN
DO I=1,3
MSL(2*I-1) = RMASS(423+2*I)
MSL(2*I) = RMASS(435+2*I)
MSL(2*I+5) = RMASS(424+2*I)
MSL(2*I+6) = RMASS(436+2*I)
SLWD(2*I-1) = HBAR/RLTIM(423+2*I)
SLWD(2*I) = HBAR/RLTIM(435+2*I)
SLWD(2*I+5) = HBAR/RLTIM(424+2*I)
SLWD(2*I+6) = HBAR/RLTIM(436+2*I)
ENDDO
DO I=1,12
MSL2(I) = MSL(I)**2
MSWD(I) = MSL(I)*SLWD(I)
ENDDO
RAND = ZERO
DO I=1,3
CHANPB=ZERO
DO J=1,3
DO K=1,3
CHANPB=CHANPB+LAMDA2(I,J,K)**4
ENDDO
ENDDO
RAND=RAND+2*CHANPB
DO J=1,2
CHAN(2*I-2+J) = LMIXSS(2*I-1,1,J)**2*CHANPB
CHAN(2*I+4+J) = LMIXSS(2*I ,1,J)**2*CHANPB
MIX(2*I-2+J) = LMIXSS(2*I-1,1,J)**2
MIX(2*I+4+J) = LMIXSS(2*I ,1,J)**2
ENDDO
ENDDO
IF(RAND.GT.ZERO) THEN
DO I=1,12
CHAN(I)=CHAN(I)/RAND
ENDDO
ELSE
CALL HWWARN('HWHRLL',500)
ENDIF
C--find the couplings
DO GN=1,3
DO I=1,3
DO J=1,3
DO K=1,3
DO L=1,3
LAM(1,GN,I,J,K,L) =LAMDA2(GN,I,J)*LAMDA1(GN,K,L)
LAM(2,GN,I,J,K,L) =LAMDA2(GN,I,J)*LAMDA2(GN,K,L)
LAM(1,GN+3,I,J,K,L)=LAM(1,GN,I,J,K,L)
LAM(2,GN+3,I,J,K,L)=LAM(2,GN,I,J,K,L)
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
C--select the process from the IPROC code
GNMN = 1
GNMX = 4
IF(MOD(IPROC,10000).EQ.4070) THEN
GNMX = 2
ELSEIF(MOD(IPROC,10000).EQ.4080) THEN
GNMN = 3
ENDIF
ENDIF
EVWGT = ZERO
S = PHEP(5,3)**2
COSTH = HWRUNI(0,-ONE,ONE)
C--Generate the smoothing
RAND=HWRUNI(0,ZERO,ONE)
DO I=1,12
IF(CHAN(I).GT.RAND) GOTO 20
RAND=RAND-CHAN(I)
ENDDO
20 GR = I
C--Calculate hard scale and obtain parton distributions
TAUA = MSL2(GR)/S
TAUB = SLWD(GR)**2/S
RTAB = SQRT(TAUA*TAUB)
XUPP = XMAX
IF(XMAX**2.GT.S) XUPP = SQRT(S)
LOWTLM = DATAN((XMIN**2/S-TAUA)/RTAB)/RTAB
UPPTLM = DATAN((XUPP**2/S-TAUA)/RTAB)/RTAB
TAU = HWRUNI(0,LOWTLM,UPPTLM)
TAU = RTAB*TAN(RTAB*TAU)+TAUA
SH = S*TAU
SQSH = SQRT(SH)
EMSCA = SQSH
XX(1) = EXP(HWRUNI(0,ZERO,LOG(TAU)))
XX(2) = TAU/XX(1)
CALL HWSGEN(.FALSE.)
C--Calculate the prefactor due multichannel approach
FAC = ZERO
DO GN=1,12
SCF(GN)=1/((SH-MSL2(GN))**2+MSWD(GN)**2)
FAC=FAC+CHAN(GN)*SCF(GN)
ENDDO
FAC=-(UPPTLM-LOWTLM)*LOG(TAU)*GEV2NB
& /(96*PIFAC*SQSH*SH*TAU*FAC*S**2)
ENDIF
C--Now the loop to actually calculate the cross-sections
HCS = ZERO
DO GN=GNMN,GNMX
IF(MOD(GN,2).EQ.1) THEN
MIG = 1
MXG = 6
ELSE
MIG = 7
MXG = 12
ENDIF
IF(GN.LE.2) THEN
CFAC = THREE*FAC
CUP=2
ELSE
CFAC = FAC
CUP=1
ENDIF
DO K1=1,3
DO 80 L1=1,3
IF(GN.EQ.1) THEN
K = 2*K1
L = 2*L1+5
ELSEIF(GN.EQ.2) THEN
K = 2*K1-1
L = 2*L1+5
ELSEIF(GN.EQ.3) THEN
K = 120+2*K1
L = 125+2*L1
ELSEIF(GN.EQ.4) THEN
K = 119+2*K1
L = 125+2*L1
ENDIF
MQ1 = RMASS(K)
MQ2 = RMASS(L)
IF(SQSH.GT.(MQ1+MQ2)) THEN
PCM = SQRT((SH-(MQ1+MQ2)**2)*(SH-(MQ1-MQ2)**2))/(2*SQSH)
WD = (SH-MQ1**2-MQ2**2)*SH*PCM
ELSE
GOTO 80
ENDIF
DO I1=1,3
DO 70 J1=1,3
IF(MOD(GN,2).EQ.1) THEN
I=2*I1
J=2*J1+5
ELSE
I=2*I1-1
J=2*J1+5
ENDIF
DO GR =1,2
MET(GR) = ZERO
ENDDO
IF(GENEV) GOTO 60
DO 50 GEN=MIG,MXG
IF(ABS(LAM(CUP,INT((GEN+1)/2),I1,J1,K1,L1)).LT.EPS.
& OR.ABS(MIX(GEN)).LT.EPS) GOTO 50
DO GR=MIG,MXG
IF(ABS(LAM(CUP,INT((GR+1)/2),I1,J1,K1,L1)).GT.EPS.
& AND.ABS(MIX(GR)).GT.EPS) THEN
MET(1) =MET(1)+SCF(GEN)*SCF(GR)*WD*
& ((SH-MSL2(GEN))*(SH-MSL2(GR))+MSWD(GEN)*MSWD(GR))
& *LAM(CUP,INT((GEN+1)/2),I1,J1,K1,L1)*MIX(GEN)
& *LAM(CUP,INT((GR+1)/2),I1,J1,K1,L1)*MIX(GR)
ENDIF
ENDDO
C--Now the t-channel diagrams if the s-channel particles is a sneutrino
IF(GN.EQ.2) THEN
ECM=SQRT(PCM**2+MQ1**2)
TH=MQ1**2-SQSH*(ECM-PCM*COSTH)
DO GR=MIG,MXG
MET(2)=MET(2)+(MQ1**2-TH)*(MQ2**2-TH)*PCM*
& LAM(2,INT((GEN+1)/2),I1,K1,J1,L1)*MIX(GEN)*
& LAM(2,INT((GR+1)/2),I1,K1,J1,L1)*MIX(GR)
& /((TH-MSL2(GEN))*(TH-MSL2(GR)))
ENDDO
ENDIF
50 CONTINUE
C--final phase space factors
IF(MET(1).LT.EPS.AND.MET(2).LT.EPS) GOTO 70
DO GR = 1,2
ME(GN,I1,J1,K1,L1,GR) = MET(GR)*CFAC
ENDDO
60 DO GR = 1,2
CF = GR
IF(CUP.EQ.1) CF=0
HCS = HCS+ME(GN,I1,J1,K1,L1,GR)*DISF(I,1)*DISF(J,2)
IF(HCS.GT.RCS.AND.GENEV) THEN
CALL HWHRSS(9,I,J,K,L,0,CF)
GOTO 100
ENDIF
HCS = HCS+ME(GN,I1,J1,K1,L1,GR)*DISF(J,1)*DISF(I,2)
IF(HCS.GT.RCS.AND.GENEV) THEN
CALL HWHRSS(10,J,I,K,L,0,CF)
GOTO 100
ENDIF
HCS = HCS+ME(GN,I1,J1,K1,L1,GR)
& *DISF(I+6,1)*DISF(J-6,2)
IF(HCS.GT.RCS.AND.GENEV) THEN
CALL HWHRSS(9,I,J,K,L,1,CF)
GOTO 100
ENDIF
HCS = HCS+ME(GN,I1,J1,K1,L1,GR)
& *DISF(J-6,1)*DISF(I+6,2)
IF(HCS.GT.RCS.AND.GENEV) THEN
CALL HWHRSS(10,J,I,K,L,1,CF)
GOTO 100
ENDIF
ENDDO
70 CONTINUE
ENDDO
80 CONTINUE
ENDDO
ENDDO
100 IF(GENEV) THEN
CALL HWETWO(.TRUE.,.TRUE.)
ELSE
EVWGT = HCS
ENDIF
END
CDECK ID>, HWHRLS.
*CMZ :- -23/10/00 13:53:06 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHRLS
C-----------------------------------------------------------------------
C Subroutine for 2 parton -> sparticle + X via LQD
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HCS,A(6,12),B(6,12),S,RCS,HWRGEN,CW,FAC2,EC,ME2,
& MW,G,TAU,TAUA,TAUB,LOWTLM,UPPTLM,HWRUNI,SW,SQSH,LC,
& SH,MSL(12),MSU(12),MST(6),C(2,6,12),D(2,6,12),UH,
& TH,MEN(4,6,3,3),SCF(12),SLWD(12),MLT(6),MNT(4),PCM,
& MXS(12),MER(8),MCR(2),RTAB,H(18),MEH(3,18),MXT(12),
& CHAN(12),MXU(12),RAND,FAC,ECM,MC(2),MEC(2,6,3,3),
& MZ,CHPROB,EPS,HWUAEM,XMIN,XMAX,XPOW,SIN2B,GUU(4),
& ML,MN,MLS,MNS,XUPP,MW2,MZ2,ZSLP(2),ZQRK(2),GDD(4),
& MSL2(12),MH(4),MSWD(12)
INTEGER I,J,K,L,J1,K1,GN,GR,SP,GU,GT,I2,I1,NEUTMN
& ,NEUTMX,CHARMN,CHARMX,P
LOGICAL RAD,NEUT,CHAR,HIGGS,FIRST
EXTERNAL HWRGEN,HWRUNI,HWUAEM
COMMON/HWRPIN/XMIN,XMAX,XPOW,FIRST
SAVE HCS,A,B,C,D,FAC,MER,MEC,MEN,MLT,MSL,MSU,MST,SLWD,MNT,MXT,MXU,
& SW,CW,MXS,H,MEH,CHAN,NEUTMN,NEUTMX,CHARMN,CHARMX,RAD,NEUT,
& CHAR,HIGGS,MW,MZ,MW2,MZ2,MCR,SH,SQSH,EC,G,SCF,ZSLP,ZQRK,GUU,
& GDD,MSL2,MH,MSWD
PARAMETER(EPS=1D-20)
IF(GENEV) THEN
RCS = HCS*HWRGEN(0)
ELSE
IF(FSTWGT) THEN
C--Calculate Electroweak parameters needed
SW = SQRT(SWEIN)
CW = SQRT(1-SWEIN)
MW = RMASS(198)
MZ = RMASS(200)
MW2 = MW**2
MZ2 = MZ**2
SIN2B = TWO*SINB*COSB
C--Masses and widths
DO I=1,3
MSL(2*I-1) = RMASS(423+2*I)
MSL(2*I) = RMASS(435+2*I)
MSL(2*I+5) = RMASS(424+2*I)
MSL(2*I+6) = RMASS(436+2*I)
SLWD(2*I-1) = HBAR/RLTIM(423+2*I)
SLWD(2*I) = HBAR/RLTIM(435+2*I)
SLWD(2*I+5) = HBAR/RLTIM(424+2*I)
SLWD(2*I+6) = HBAR/RLTIM(436+2*I)
MSU(2*I-1) = RMASS(400+2*I)**2
MSU(2*I) = RMASS(412+2*I)**2
MSU(2*I+5) = RMASS(399+2*I)**2
MSU(2*I+6) = RMASS(411+2*I)**2
MST(2*I-1) = RMASS(399+2*I)**2
MST(2*I) = RMASS(411+2*I)**2
MLT(2*I) = ZERO
MLT(2*I-1) = RMASS(119+2*I)
ENDDO
DO I=1,12
MSL2(I) = MSL(I)**2
MSWD(I) = MSL(I)*SLWD(I)
ENDDO
DO I=1,4
MNT(I) = ABS(RMASS(449+I))
ENDDO
MCR(1) = ABS(RMASS(454))
MCR(2) = ABS(RMASS(455))
C--Couplings for the neutralinos
DO L=1,4
MC(1) = ZMIXSS(L,3)/(2*MW*COSB*SW)
MC(2) = ZMIXSS(L,4)/(2*MW*SINB*SW)
DO I=1,3
DO J=1,2
C--resonant charged sleptons
A(L,2*I-2+J) = MC(1)*MLT(2*I-1)*LMIXSS(2*I-1,2,J)
& +SLFCH(9+2*I,L)*LMIXSS(2*I-1,1,J)
B(L,2*I-2+J) = ZSGNSS(L)*(MC(1)*MLT(2*I-1)*
& LMIXSS(2*I-1,1,J)+SRFCH(9+2*I,L)*LMIXSS(2*I-1,2,J))
C--resonant sneutrinos
A(L,2*I+4+J) = SLFCH(10+2*I,L)*LMIXSS(2*I,1,J)
B(L,2*I+4+J) = ZERO
C--u channel up type squarks
C(1,L,2*I-2+J) = MC(2)*QMIXSS(2*I,2,J)*
& RMASS(2*I)+SLFCH(2*I,L)*QMIXSS(2*I,1,J)
D(1,L,2*I-2+J) = ZSGNSS(L)*(MC(2)*QMIXSS(2*I,1,J)*
& RMASS(2*I)+SRFCH(2*I ,L)*QMIXSS(2*I,2,J))
C--u channel down type squarks
C(1,L,2*I+4+J) = MC(1)*QMIXSS(2*I-1,2,J)*
& RMASS(2*I-1)+SLFCH(2*I-1,L)*QMIXSS(2*I-1,1,J)
D(1,L,2*I+4+J) = ZSGNSS(L)*(MC(1)*QMIXSS(2*I-1,1,J)*
& RMASS(2*I-1)+SRFCH(2*I-1,L)*QMIXSS(2*I-1,2,J))
C--t channel down type squarks
C(2,L,2*I-2+J) = ZSGNSS(L)*(MC(1)*QMIXSS(2*I-1,1,J)*
& RMASS(2*I-1)+SRFCH(2*I-1,L)*QMIXSS(2*I-1,2,J))
D(2,L,2*I-2+J) = MC(1)*QMIXSS(2*I-1,2,J)*
& RMASS(2*I-1)+SLFCH(2*I-1,L)*QMIXSS(2*I-1,1,J)
ENDDO
ENDDO
DO I=1,6
C(2,L,6+I) = C(2,L,I)
D(2,L,6+I) = D(2,L,I)
ENDDO
ENDDO
C--Couplings for charginos
DO L=1,2
MC(1) = 1/(SQRT(2.0D0)*MW*COSB)
MC(2) = 1/(SQRT(2.0D0)*MW*SINB)
SP=L+4
DO I=1,3
DO J=1,2
C--resonant charged slepton
A(SP,2*I-2+J) = WMXUSS(L,1)*LMIXSS(2*I-1,1,J)
& -LMIXSS(2*I-1,2,J)*WMXUSS(L,2)*
& MLT(2*I-1)*MC(1)
B(SP,2*I-2+J) = ZERO
C--resonant sneutrinos
A(SP,2*I+4+J) = WSGNSS(L)*WMXVSS(L,1)*LMIXSS(2*I,1,J)
B(SP,2*I+4+J) = -MLT(2*I-1)*WMXUSS(L,2)*LMIXSS(2*I,1,J)
& *MC(1)
C--u channel sup
C(1,SP,2*I-2+J) = WSGNSS(L)*(WMXVSS(L,1)*QMIXSS(2*I,1,J)
& -WMXVSS(L,2)*MC(2)*RMASS(2*I)*QMIXSS(2*I,2,J))
D(1,SP,2*I-2+J) = -WMXUSS(L,2)*MC(1)*RMASS(2*I-1)
& *QMIXSS(2*I,1,J)
C--u channel sdown
C(1,SP,2*I+4+J) = WMXUSS(L,1)*QMIXSS(2*I-1,1,J)
& -WMXUSS(L,2)*MC(1)*RMASS(2*I-1)*QMIXSS(2*I-1,2,J)
D(1,SP,2*I+4+J) = -WSGNSS(L)*WMXVSS(L,2)*MC(2)*
& RMASS(2*I)*QMIXSS(2*I-1,1,J)
ENDDO
ENDDO
ENDDO
C--Couplings and massesfor Higgs
DO I=1,4
MH(I) = RMASS(202+I)
ENDDO
C--first the neutral Higgs
C--fix to the sign of the A and mu term 31/03/00 PR
DO I=1,3
H(I) = MLT(2*I-1)*HALF/MW/COSB*MUSS*COSA
H(I+4) = MLT(2*I-1)*HALF/MW/COSB*MUSS*SINA
H(I+8) = -MLT(2*I-1)*HALF/MW*MUSS
ENDDO
H(3) = (H(3)+MLT(5)*HALF/MW/COSB*ALSS*SINA)*TWO*
& LMIXSS(5,2,1)*LMIXSS(5,1,1)
& -MZ*SINBPA/CW*(LMIXSS(5,1,1)**2*(HALF-SWEIN)
& +SWEIN*LMIXSS(5,2,1)**2)+MLT(5)**2*SINA/MW/COSB
H(4) = -MZ*SINBPA/CW*(LMIXSS(5,1,1)*LMIXSS(5,1,2)*(HALF-SWEIN)
& +SWEIN*LMIXSS(5,2,1)*LMIXSS(5,2,2))
& +MLT(5)*HALF/COSB/MW*(MUSS*COSA+ALSS*SINA)*
& (LMIXSS(5,2,2)*LMIXSS(5,1,1)+LMIXSS(5,1,2)*LMIXSS(5,2,1))
H(7) = (H(7)-MLT(5)*HALF/MW/COSB*ALSS*COSA)*TWO*
& LMIXSS(5,2,1)*LMIXSS(5,1,1)
& +MZ*COSBPA/CW*(LMIXSS(5,1,1)**2*(HALF-SWEIN)
& +LMIXSS(5,2,1)**2*SWEIN)-MLT(5)**2*COSA/MW/COSB
H(8) = MZ*COSBPA/CW*(LMIXSS(5,1,2)*LMIXSS(5,1,1)*(HALF-SWEIN)
& +LMIXSS(5,2,2)*LMIXSS(5,2,1)*SWEIN)
& +MLT(5)*HALF/MW/COSB*(MUSS*SINA-ALSS*COSA)*
& (LMIXSS(5,2,2)*LMIXSS(5,1,1)+LMIXSS(5,1,2)*LMIXSS(5,2,1))
H(12) = H(11)-MLT(5)*HALF/MW*ALSS*TANB
H(11) = ZERO
C--Now the charged Higgs
DO J=1,2
DO I=1,3
H(10+2*I+J) = LMIXSS(2*I-1,1,J)*
& (MLT(2*I-1)**2*TANB-MW2*SIN2B)
& +LMIXSS(2*I-1,2,J)*MLT(2*I-1)*MUSS
ENDDO
H(16+J) = H(16+J)+LMIXSS(5,2,J)*MLT(5)*ALSS*TANB
ENDDO
C--End of fix
C--couplings of the Higgs to quarks
DO I=1,3
GUU(I) = GHUUSS(I)**2/MW2*HALF**2
GDD(I) = GHDDSS(I)**2/MW2*HALF**2
ENDDO
GUU(4) = ONE/TANB**2/MW2/8.0D0
GDD(4) = ONE*TANB**2/MW2/8.0D0
C--Couplings of the Z to quarks, left up right down, and charged sleptons
ZQRK(1) = -SW**2/6.0D0/CW
ZQRK(2) = (SW**2/3.0D0-HALF**2)/CW
ZSLP(1) = HALF*(LMIXSS(5,1,1)**2-2.0D0*SW**2)/CW
ZSLP(2) = HALF*LMIXSS(5,1,1)*LMIXSS(5,1,2)/CW
C--parameters for multichannel integration
RAND = ZERO
DO I=1,3
CHPROB = ZERO
DO J=1,3
DO K=1,3
CHPROB=CHPROB+LAMDA2(I,J,K)**2
ENDDO
ENDDO
RAND = RAND+2*CHPROB
DO J=1,2
MXS(2*I-2+J) = LMIXSS(2*I-1,1,J)
MXS(2*I+4+J) = LMIXSS(2*I,1,J)
MXU(2*I-2+J) = QMIXSS(2*I,1,J)
MXU(2*I+4+J) = QMIXSS(2*I-1,1,J)
MXT(2*I-2+J) = QMIXSS(2*I-1,2,J)
MXT(2*I+4+J) = QMIXSS(2*I-1,2,J)
CHAN(2*I-2+J) = LMIXSS(2*I-1,1,J)**2*CHPROB
CHAN(2*I+4+J) = LMIXSS(2*I,1,J)**2*CHPROB
ENDDO
ENDDO
IF(RAND.GT.ZERO) THEN
DO I=1,12
CHAN(I)=CHAN(I)/RAND
ENDDO
ELSE
CALL HWWARN('HWHRLS',500)
ENDIF
C--decide what processes to generate
RAD = .FALSE.
NEUT = .FALSE.
CHAR = .FALSE.
HIGGS = .FALSE.
NEUTMN= 1
NEUTMX = 4
CHARMN = 1
CHARMX = 2
C--Decide which process to generate
IF(MOD(IPROC,10000).EQ.4000) THEN
RAD = .TRUE.
NEUT = .TRUE.
CHAR = .TRUE.
HIGGS = .TRUE.
ELSEIF(MOD(IPROC,10000).LT.4020) THEN
IF(MOD(IPROC,10000).NE.4010) THEN
NEUTMN = MOD(IPROC,10)
NEUTMX = NEUTMN
ENDIF
NEUT=.TRUE.
ELSEIF(MOD(IPROC,10000).LT.4030) THEN
IF(MOD(IPROC,10000).NE.4020) THEN
CHARMN = MOD(IPROC,10)
CHARMX=CHARMN
ENDIF
CHAR = .TRUE.
ELSEIF(MOD(IPROC,10000).EQ.4040) THEN
RAD = .TRUE.
ELSEIF(MOD(IPROC,10000).EQ.4050) THEN
HIGGS = .TRUE.
ENDIF
ENDIF
C--basic parameters
EVWGT = ZERO
S = PHEP(5,3)**2
COSTH = HWRUNI(0,-ONE,ONE)
RAND = HWRUNI(0,ZERO,ONE)
C--zero arrays
DO I=1,6
DO J=1,3
DO K=1,3
DO L=1,2
MEN(L,I,J,K) = ZERO
MEN(L+2,I,J,K) = ZERO
MEC(L,I,J,K) = ZERO
ENDDO
ENDDO
ENDDO
ENDDO
DO I=1,8
MER(I)=ZERO
ENDDO
C--Perform multichannel integration
DO I=1,12
IF(CHAN(I).GT.RAND) THEN
GR=I
GOTO 25
ENDIF
RAND=RAND-CHAN(I)
ENDDO
C--Calculate the hard scale and obtain parton distributions
25 TAUA = MSL2(GR)/S
TAUB = SLWD(GR)**2/S
RTAB = SQRT(TAUA*TAUB)
XUPP = XMAX
IF(XMAX**2.GT.S) XUPP = SQRT(S)
LOWTLM = DATAN((XMIN**2/S-TAUA)/RTAB)/RTAB
UPPTLM = DATAN((XUPP**2/S-TAUA)/RTAB)/RTAB
TAU = HWRUNI(0,LOWTLM,UPPTLM)
TAU = RTAB*TAN(RTAB*TAU)+TAUA
SH = S*TAU
SQSH = SQRT(SH)
EMSCA = SQSH
XX(1) = EXP(HWRUNI(0,LOG(TAU),ZERO))
XX(2) = TAU/XX(1)
CALL HWSGEN(.FALSE.)
C--EM and Weak couplings
EC = SQRT(4*PIFAC*HWUAEM(SH))
G = EC/SW
C--Calculate the prefactor due multichannel approach
FAC = ZERO
DO GN=1,12
SCF(GN)=1/((SH-MSL2(GN))**2+MSWD(GN)**2)
FAC=FAC+CHAN(GN)*SCF(GN)
ENDDO
FAC=-(UPPTLM-LOWTLM)*GEV2NB*LOG(TAU)/
& (48*TAU*FAC*PIFAC*S**2*SH*SQSH)
ENDIF
HCS = ZERO
C--First we do the neutralino production
IF(.NOT.NEUT) GOTO 200
DO 140 GN=1,6
I=GN
GR = 2*GN-1
I1 = 2*GN-1
IF(GN.GT.3) THEN
I=I-3
I1=I1-5
ENDIF
IF(CHAN(GR).LT.EPS) GOTO 140
DO 130 L=NEUTMN,NEUTMX
MN = MNT(L)
MNS = MN**2
ML = MLT(I1)
MLS = ML**2
IF((ML+MN).GT.SQSH) GOTO 130
C--that and uhat
PCM = SQRT((SH-(ML+MN)**2)*(SH-(ML-MN)**2))*HALF/SQSH
ECM = SQRT(PCM**2+MLS)
TH = MLS-SQSH*(ECM-PCM*COSTH)
UH = MLS-SQSH*(ECM+PCM*COSTH)
DO J=1,3
DO 120 K=1,3
IF(ABS(LAMDA2(I,J,K)).LT.EPS) GOTO 120
J1 = 2*J
K1 = 2*K+5
IF(GN.GT.3) J1=J1-1
IF(GENEV) GOTO 110
C--squarks in u and t channels
GU = 6*INT((GN-1)/3)+2*J-1
GT = 2*K
C--calulate the matrix element
ME2=MXS(GR)**2*SCF(GR)*SH*((SH-MLS-MNS)*
& (A(L,GR)**2+B(L,GR)**2)-4*ML*MN*A(L,GR)*B(L,GR))
& +MXU(GU)**2*(MLS-UH)*(MNS-UH)*
& (C(1,L,GU)**2+D(1,L,GU)**2)/(UH-MSU(GU))**2
& +MXT(GT)**2*(MLS-TH)*(MNS-TH)*
& (C(2,L,GT)**2+D(2,L,GT)**2)/(TH-MST(GT))**2
& -TWO*MXT(GT)*MXU(GU)*C(1,L,GU)*C(2,L,GT)*(MLS*MNS-UH*TH)
& /(UH-MSU(GU))/(TH-MST(GT))
& +TWO*MXS(GR)*MXU(GU)*(SH-MSL2(GR))*SCF(GR)*C(1,L,GU)*
& SH*(UH*A(L,GR)+ML*MN*B(L,GR))/(UH-MSU(GU))
& +TWO*MXS(GR)*MXT(GT)*(SH-MSL2(GR))*SCF(GR)*C(2,L,GT)*
& SH*(TH*A(L,GR)+ML*MN*B(L,GR))/(TH-MST(GT))
C--s channel mixing L/R mixing
IF(ABS(MXS(GR+1)).GT.EPS) THEN
ME2=ME2+MXS(GR+1)**2*SCF(GR+1)*SH*((SH-MLS-MNS)*
& (A(L,GR+1)**2+B(L,GR+1)**2)
& -4*ML*MN*A(L,GR+1)*B(L,GR+1))
& +TWO*MXS(GR)*MXS(GR+1)*SCF(GR)*SCF(GR+1)*
& ((SH-MSL2(GR))*(SH-MSL2(GR+1))+
& MSWD(GR)*MSWD(GR+1))*SH*
& ((SH-MLS-MNS)*(A(L,GR)*A(L,GR+1)+B(L,GR)*B(L,GR+1))
& -2*ML*MN*(A(L,GR)*B(L,GR+1)+A(L,GR+1)*B(L,GR)))
& +TWO*MXS(GR+1)*MXU(GU)*(SH-MSL2(GR+1))*SCF(GR+1)*
& SH*C(1,L,GU)*(UH*A(L,GR+1)+ML*MN*B(L,GR+1))
& /(UH-MSU(GU))
& +TWO*MXS(GR+1)*MXT(GT)*(SH-MSL2(GR+1))*SCF(GR+1)*
& SH*C(2,L,GT)*(TH*A(L,GR+1)+ML*MN*B(L,GR+1))
& /(TH-MST(GT))
IF(ABS(MXU(GU+1)).GT.EPS) ME2=ME2+TWO*MXS(GR+1)*MXU(GU+1)*
& (SH-MSL2(GR+1))*SCF(GR+1)*SH*C(1,L,GU+1)*
& (UH*A(L,GR+1)+ML*MN*B(L,GR+1))/(UH-MSU(GU+1))
IF(ABS(MXT(GT-1)).GT.EPS) ME2=ME2+TWO*MXS(GR+1)*MXT(GT-1)*
& (SH-MSL2(GR+1))*SCF(GR+1)*SH*C(2,L,GT-1)*
& (TH*A(L,GR+1)+ML*MN*B(L,GR+1))/(TH-MST(GT-1))
ENDIF
C--u channel L/R mixing
IF(ABS(MXU(GU+1)).GT.EPS) THEN
ME2=ME2+MXU(GU+1)**2*(MLS-UH)*(MNS-UH)*(C(1,L,GU+1)**2+
& D(1,L,GU+1)**2)/(UH-MSU(GU+1))**2
& +TWO*MXU(GU)*MXU(GU+1)*(MLS-UH)*(MNS-UH)*
& (C(1,L,GU)*C(1,L,GU+1)+D(1,L,GU)*D(1,L,GU+1))
& /(UH-MSU(GU))/(UH-MSU(GU+1))
& -TWO*MXT(GT)*MXU(GU+1)*C(1,L,GU+1)*C(2,L,GT)*
& (MLS*MNS-UH*TH)/(UH-MSU(GU+1))/(TH-MST(GT))
& +TWO*MXS(GR)*MXU(GU+1)*(SH-MSL2(GR))*SCF(GR)*
& SH*C(1,L,GU+1)*(UH*A(L,GR)+ML*MN*B(L,GR))
& /(UH-MSU(GU+1))
IF(ABS(MXT(GT-1)).GT.EPS) ME2=ME2-TWO*MXT(GT-1)*MXU(GU+1)*
& C(1,L,GU+1)*C(2,L,GT-1)*(MLS*MNS-UH*TH)
& /(UH-MSU(GU+1))/(TH-MST(GT-1))
ENDIF
C--t channel L/R mixing
IF(ABS(MXT(GT-1)).GT.EPS) THEN
ME2=ME2+MXT(GT-1)**2*(MLS-TH)*(MNS-TH)*(C(2,L,GT-1)**2
& +D(2,L,GT-1)**2)/(TH-MST(GT-1))**2
& +TWO*MXT(GT)*MXT(GT-1)*(MLS-TH)*(MNS-TH)*
& (C(2,L,GT)*C(2,L,GT-1)+D(2,L,GT)*D(2,L,GT-1))
& /(TH-MST(GT))/(TH-MST(GT-1))
& -TWO*MXT(GT-1)*MXU(GU)*C(1,L,GU)*C(2,L,GT-1)*
& (MLS*MNS-UH*TH)/(UH-MSU(GU))/(TH-MST(GT-1))
& +TWO*MXS(GR)*MXT(GT-1)*(SH-MSL2(GR))*SCF(GR)*
& SH*C(2,L,GT-1)*(TH*A(L,GR)+ML*MN*B(L,GR))
& /(TH-MST(GT-1))
ENDIF
C--multiply by lamda and factors
MEN(L,GN,J,K) = FAC*ME2*EC**2*LAMDA2(I,J,K)**2*PCM
110 I2=I1+6
HCS = HCS+MEN(L,GN,J,K)*DISF(J1,1)*DISF(K1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(11,J1,K1,I2,L,0,0)
GOTO 500
ENDIF
HCS = HCS+MEN(L,GN,J,K)*DISF(K1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(12,K1,J1,I2,L,0,0)
GOTO 500
ENDIF
HCS = HCS+MEN(L,GN,J,K)*DISF(J1+6,1)*DISF(K1-6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(11,J1,K1,I2,L,1,0)
GOTO 500
ENDIF
HCS = HCS+MEN(L,GN,J,K)*DISF(K1-6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(12,K1,J1,I2,L,1,0)
GOTO 500
ENDIF
120 CONTINUE
ENDDO
130 CONTINUE
140 CONTINUE
200 IF(.NOT.CHAR) GOTO 300
C--Chargino production
DO 240 GN=1,6
GR=2*GN-1
I=GN
I1 = 2*GN
IF(GN.GT.3) THEN
I1=I1-7
I=GN-3
ENDIF
IF(CHAN(GR).LT.EPS) GOTO 240
DO 230 L=CHARMN,CHARMX
MN = MCR(L)
MNS = MN**2
ML = MLT(I1)
MLS = ML**2
SP = L+4
IF((ML+MN).GT.EMSCA) GOTO 230
PCM = SQRT((SH-(ML+MN)**2)*(SH-(ML-MN)**2))*HALF/SQSH
ECM = SQRT(PCM**2+MLS)
TH = MLS-SQSH*(ECM-PCM*COSTH)
UH = MLS-SQSH*(ECM+PCM*COSTH)
DO J=1,3
DO 220 K=1,3
IF(ABS(LAMDA2(I,J,K)).LT.EPS) GOTO 220
J1=2*J
K1=2*K+5
IF(GN.GT.3) J1=J1-1
IF(GENEV) GOTO 210
GU = 2*J-1
IF(GN.LE.3) GU=GU+6
C--Calculate the matrix element, s and u terms
ME2 =MXS(GR)**2*SCF(GR)*SH*(
& (SH-MLS-MNS)*(A(SP,GR)**2+B(SP,GR)**2)
& -4*ML*MN*A(SP,GR)*B(SP,GR))
& +MXU(GU)**2*(MLS-UH)*(MNS-UH)*
& (C(1,SP,GU)**2+D(1,SP,GU)**2)/(UH-MSU(GU))**2
& -2*MXS(GR)*MXU(GU)*(SH-MSL2(GR))*SCF(GR)*C(1,SP,GU)*
& SH*(UH*A(SP,GR)+B(SP,GR)*ML*MN)/(UH-MSU(GU))
C--s channel L/R mixing
IF(ABS(MXS(GR+1)).GT.EPS) THEN
ME2=ME2+MXS(GR+1)**2*SCF(GR+1)*SH*((SH-MLS-MNS)*
& (A(SP,GR+1)**2+B(SP,GR+1)**2)
& -4*ML*MN*A(SP,GR+1)*B(SP,GR+1))
& +2*MXS(GR)*MXS(GR+1)*SCF(GR)*SCF(GR+1)*
& ((SH-MSL2(GR))*(SH-MSL2(GR+1))+
& MSWD(GR)*MSWD(GR+1))*SH*
& ((SH-MLS-MNS)*(A(SP,GR)*A(SP,GR+1)
& +B(SP,GR)*B(SP,GR+1))-4*ML*MN*
& (A(SP,GR)*B(SP,GR+1)+B(SP,GR)*A(SP,GR+1)))
& -2*MXS(GR+1)*MXU(GU)*(SH-MSL2(GR+1))*SCF(GR+1)*SH*
& C(1,SP,GU)*(UH*A(SP,GR+1)+B(SP,GR+1)*ML*MN)
& /(UH-MSU(GU))
IF(ABS(MXU(GU+1)).GT.EPS) ME2=ME2-2*MXS(GR+1)*MXU(GU+1)*
& (SH-MSL2(GR+1))*SCF(GR+1)*C(1,SP,GU+1)*SH*
& (UH*A(SP,GR+1)+B(SP,GR+1)*ML*MN)/(UH-MSU(GU+1))
ENDIF
C--u channel L/R mixing
IF(ABS(MXU(GU+1)).GT.EPS) ME2 = ME2+MXU(GU+1)**2*(MLS-UH)*
& (MNS-UH)*(C(1,SP,GU+1)**2+D(1,SP,GU+1)**2)
& /(UH-MSU(GU+1))**2
& +2*MXU(GU)*MXU(GU+1)*(MLS-UH)*(MNS-UH)*
& (C(1,SP,GU)*C(1,SP,GU+1)+D(1,SP,GU)*D(1,SP,GU+1))
& /(UH-MSU(GU))/(UH-MSU(GU+1))
& -2*MXS(GR)*MXU(GU+1)*(SH-MSL2(GR))*SCF(GR)*SH*
& C(1,SP,GU+1)*(UH*A(SP,GR)+B(SP,GR)*ML*MN)
& /(UH-MSU(GU+1))
MEC(L,GN,J,K) = FAC*ME2*G**2*LAMDA2(I,J,K)**2*PCM*HALF
210 I2 = I1+6
P = L+4
HCS = HCS+MEC(L,GN,J,K)*DISF(J1,1)*DISF(K1,2)
IF(GN.GT.3) P = P+2
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(11,J1,K1,I2,P,0,0)
GOTO 500
ENDIF
HCS = HCS+MEC(L,GN,J,K)*DISF(K1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(12,K1,J1,I2,P,0,0)
GOTO 500
ENDIF
HCS = HCS+MEC(L,GN,J,K)*DISF(J1+6,1)*DISF(K1-6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(11,J1,K1,I2,P,1,0)
GOTO 500
ENDIF
HCS = HCS+MEC(L,GN,J,K)*DISF(K1-6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(12,K1,J1,I2,P,1,0)
GOTO 500
ENDIF
220 CONTINUE
ENDDO
230 CONTINUE
240 CONTINUE
300 IF(.NOT.RAD) GOTO 400
C--Radiative decays
IF(GENEV) GOTO 320
DO 310 GN=1,3
I1= 2*GN+5
I = 2*GN-1
C--charged slepton to sneutrino W
IF(SQSH.GT.(MW+MSL(I1))) THEN
PCM = SQRT((SH-(MW+MSL(I1))**2)*(SH-(MW-MSL(I1))**2))*HALF/SQSH
ECM = SQRT(PCM**2+MW2)
TH = MW2-SQSH*(ECM-PCM*COSTH)
UH = MW2-SQSH*(ECM+PCM*COSTH)
ME2 = MXS(I)**4*SCF(I)*SH**2*PCM**2
& +HALF**2/TH**2*(TWO*MW2*(UH*TH-MSL2(I1)*MW2)+TH**2*SH)
& -HALF*MXS(I)**2*SH*(SH-MSL2(I))*SCF(I)/TH*
& (MW2*(TWO*MSL2(I1)-TH)+(SH-MSL2(I1))*TH)
IF(GN.EQ.3) ME2 = ME2+MXS(I+1)**4*SCF(I+1)*SH**2*PCM**2
& +2.0D0*MXS(I)**2*MXS(I+1)**2*SCF(I)*SCF(I+1)*SH**2*PCM**2
& *((SH-MSL2(I))*(SH-MSL2(I+1))+MSWD(I)*MSWD(I+1))
& -HALF*MXS(I+1)**2*SH*(SH-MSL2(I+1))*SCF(I+1)/TH*
& (MW2*(TWO*MSL2(I1)-TH)+(SH-MSL2(I1))*TH)
MER(GN) = ME2*PCM/MW2
ENDIF
C--sneutrino to charged slepton W
IF(SQSH.GT.(MW+MSL(I))) THEN
PCM = SQRT((SH-(MW+MSL(I))**2)*(SH-(MW-MSL(I))**2))*HALF/SQSH
ECM = SQRT(PCM**2+MW2)
TH = MW2-SQSH*(ECM-PCM*COSTH)
UH = MW2-SQSH*(ECM+PCM*COSTH)
ME2 = MXS(I)**2*SCF(I1)*SH**2*PCM**2
& +HALF**2*MXS(I)**2/TH**2*
& (TWO*MW2*(UH*TH-MW2*MSL2(I))+TH**2*SH)
& -HALF*MXS(I)**2*SH*(SH-MSL2(I1))*SCF(I1)/TH*
& (MW2*(TWO*MSL2(I)-TH)+(SH-MSL2(I))*TH)
MER(GN+4) = ME2*PCM/MW2
ENDIF
310 CONTINUE
C--now the decay stau_2 to stau_1 Z
IF(SQSH.GT.(MZ+MSL(5))) THEN
PCM = SQRT((SH-(MZ+MSL(5))**2)*(SH-(MZ-MSL(5))**2))*HALF/SQSH
ECM = SQRT(PCM**2+MZ2)
TH = MZ2-SQSH*(ECM-PCM*COSTH)
UH = MZ2-SQSH*(ECM+PCM*COSTH)
ME2 = SH**2*PCM**2*(SCF(5)*MXS(5)**2*ZSLP(1)**2
& +SCF(6)*MXS(6)**2*ZSLP(2)**2+TWO*SCF(5)*SCF(6)*
& MXS(5)*MXS(6)*ZSLP(1)*ZSLP(2)*((SH-MSL2(5))*
& (SH-MSL2(6))+MSWD(5)*MSWD(6)))
& +MXS(5)**2*ZQRK(2)**2/TH**2*
& (TWO*MZ2*(UH*TH-MZ2*MSL2(5))+TH**2*SH)
& +MXS(5)**2*ZQRK(1)**2/UH**2*
& (TWO*MZ2*(UH*TH-MZ2*MSL2(5))+UH**2*SH)
& +MXS(5)*SH*(MXS(5)*SCF(5)*ZSLP(1)*(SH-MSL2(5))
& +MXS(6)*SCF(6)*ZSLP(2)*(SH-MSL2(6)))*
& (-ZQRK(2)/TH*(MZ2*(TWO*MSL2(5)-TH)+TH*(SH-MSL2(5)))
& +ZQRK(1)/UH*(MZ2*(TWO*MSL2(5)-UH)+UH*(SH-MSL2(5))))
& +TWO*MXS(5)**2*ZQRK(1)*ZQRK(2)/UH/TH*
& (TWO*MZ2*(MSL2(5)-UH)*(MSL2(5)-TH)-SH*UH*TH)
MER(4) = TWO*ME2*PCM/MZ2
ENDIF
C--now the decay tau sneutrino to tau_2 W
IF(SQSH.GT.(MW+MSL(6))) THEN
PCM = SQRT((SH-(MW+MSL(6))**2)*(SH-(MW-MSL(6))**2))*HALF/SQSH
ECM = SQRT(PCM**2+MW2)
TH = MW2-SQSH*(ECM-PCM*COSTH)
UH = MW2-SQSH*(ECM+PCM*COSTH)
ME2 = MXS(6)**2*SCF(11)*SH**2*PCM**2
& +HALF**2*MXS(6)**2/TH**2*
& (TWO*MW2*(UH*TH-MW2*MSL2(6))+TH**2*SH)
& -HALF*MXS(6)**2*SH*(SH-MSL2(11))*SCF(11)/TH*
& (MW2*(2*MSL2(6)-TH)+(SH-MSL2(6))*TH)
MER(8) = ME2*PCM/MW2
ENDIF
C--Multiply by the parton distributions
320 DO I=1,4
DO J=1,3
DO 330 K=1,3
IF(I.LE.3) THEN
LC = LAMDA2(I,J,K)**2
ELSE
LC = LAMDA2(3,J,K)**2
ENDIF
IF(LC.LT.EPS) GOTO 330
FAC2 = G**2*LC*FAC
C--radiative cross-sections
J1=2*J
K1=2*K+5
ME2 = FAC2*MER(I)
HCS = HCS+ME2*DISF(J1,1)*DISF(K1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(13,J1,K1,I,I,0,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(K1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(14,K1,J1,I,I,0,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(J1+6,1)*DISF(K1-6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(13,J1,K1,I,I,1,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(K1-6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(14,K1,J1,I,I,1,0)
GOTO 500
ENDIF
J1=2*J-1
K1=2*K+5
ME2 = FAC2*MER(I+4)
HCS = HCS+ME2*DISF(J1,1)*DISF(K1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(13,J1,K1,I+4,I+4,0,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(K1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(14,K1,J1,I+4,I+4,0,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(J1+6,1)*DISF(K1-6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(13,J1,K1,I+4,I+4,1,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(K1-6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(14,K1,J1,I+4,I+4,1,0)
GOTO 500
ENDIF
330 CONTINUE
ENDDO
ENDDO
400 IF(.NOT.HIGGS) GOTO 500
IF(GENEV) GOTO 480
DO I=1,3
DO 405 J=1,18
405 MEH(I,J) = ZERO
ENDDO
C--Neutral higgs charged slepton
DO 420 L=1,3
DO 410 I=1,2
C--first two generations
IF(SQSH.LT.MH(L)+MSL(2*I)) GOTO 410
PCM = SQRT((SH-(MSL(2*I)+MH(L))**2)*
& (SH-(MSL(2*I)-MH(L))**2))*HALF/SQSH
MEH(1,3*L-3+I) = PCM*SH*SCF(2*I-1)*H(4*L+I-4)**2
410 CONTINUE
C--third generation
IF(SQSH.LT.MH(L)+MSL(5)) GOTO 420
PCM = SQRT((SH-(MSL(5)+MH(L))**2)*
& (SH-(MSL(5)-MH(L))**2))*HALF/SQSH
ECM = SQRT(PCM**2+MH(L)**2)
TH = MH(L)**2-SQSH*(ECM-PCM*COSTH)
UH = MH(L)**2-SQSH*(ECM+PCM*COSTH)
MEH(1,3*L) = PCM*SH*(MXS(5)**2*SCF(5)*H(4*L-1)**2
& +MXS(6)**2*SCF(6)*H(4*L)**2
& +TWO*MXS(5)*MXS(6)*SCF(5)*SCF(6)*H(4*L-1)*
& H(4*L)*((SH-MSL2(5))*(SH-MSL2(6))+
& MSWD(5)*MSWD(6)) )
ME2 = MXS(5)**2*PCM*(UH*TH-MSL2(5)*MH(L)**2)
MEH(2,3*L) =ME2*GUU(L)/TH**2
MEH(3,3*L) =ME2*GDD(L)/UH**2
420 CONTINUE
C--Charged higgs
DO 440 I=1,3
C--charged slepton charged Higgs
DO 430 J=1,2
IF(SQSH.LT.(MH(4)+MSL(2*I-2+J))) GOTO 430
PCM = SQRT((SH-(MH(4)+MSL(2*I-2+J))**2)*
& (SH-(MH(4)-MSL(2*I-2+J))**2))*HALF/SQSH
ECM = SQRT(PCM**2+MH(4)**2)
TH = MH(4)**2-SQSH*(ECM-PCM*COSTH)
UH = MH(4)**2-SQSH*(ECM+PCM*COSTH)
MEH(1,2*I+J+7) = PCM*SH*HALF/MW2*H(2*I+J+10)**2*SCF(5+2*I)
MEH(2,2*I+J+7) = PCM*GDD(4)*MXS(2*I-2+J)**2*
& (UH*TH-MH(4)**2*MSL2(2*I-2+J))/TH**2
430 CONTINUE
C--Sneutrino Charged Higgs
IF(SQSH.LT.(MH(4)+MSL(2*I+5))) GOTO 440
PCM = SQRT((SH-(MH(4)+MSL(2*I+5))**2)*
& (SH-(MH(4)-MSL(2*I+5))**2))*HALF/SQSH
ECM = SQRT(PCM**2+MH(4)**2)
TH = MH(4)**2-SQSH*(ECM-PCM*COSTH)
UH = MH(4)**2-SQSH*(ECM+PCM*COSTH)
MEH(1,15+I) = PCM*SH*HALF/MW2*(
& MXS(2*I-1)**2*SCF(2*I-1)*H(11+2*I)**2
& +MXS(2*I)**2*SCF(2*I)*H(12+2*I)**2
& +TWO*MXS(2*I-1)*MXS(2*I)*SCF(2*I-1)*
& SCF(2*I)*H(11+2*I)*H(12+2*I)*
& ((SH-MSL2(2*I-1))*(SH-MSL2(2*I))+
& MSWD(2*I-1)*MSWD(2*I)))
MEH(2,15+I) = PCM*GUU(4)*
& (UH*TH-MH(4)**2*MSL2(2*I+5))/TH**2
440 CONTINUE
C--Multiply by the parton distributions
480 DO I=1,3
DO J=1,3
DO 490 K=1,3
IF(LAMDA2(I,J,K).LT.EPS) GOTO 490
C--Higgs cross-sections
J1=2*J
K1=2*K+5
FAC2 = G**2*LAMDA2(I,J,K)**2*FAC*HALF
DO L=1,3
ME2 = FAC2*(MEH(1,3*L-3+I)+RMASS(J1)**2*MEH(2,3*L-3+I)
& +RMASS(K1)**2*MEH(3,3*L-3+I))
HCS = HCS+ME2*DISF(J1,1)*DISF(K1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(15,J1,K1,I,L,0,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(K1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(16,K1,J1,I,L,0,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(J1+6,1)*DISF(K1-6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(15,J1,K1,I,L,1,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(K1-6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(16,K1,J1,I,L,1,0)
GOTO 500
ENDIF
ENDDO
ME2 = FAC2*(MEH(1,15+I)+RMASS(J1)**2*MEH(2,15+I))
HCS = HCS+ME2*DISF(J1,1)*DISF(K1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(15,J1,K1,9+I,4,0,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(K1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(16,K1,J1,9+I,4,0,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(J1+6,1)*DISF(K1-6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(15,J1,K1,9+I,5,1,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(K1-6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(16,K1,J1,9+I,5,1,0)
GOTO 500
ENDIF
J1=2*J-1
K1=2*K+5
DO L=2,3
ME2 = FAC2*(MEH(1,2*I+L+6)+RMASS(J1)**2*MEH(2,2*I+L+6))
HCS = HCS+ME2*DISF(J1,1)*DISF(K1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(15,J1,K1,2*I+L,5,0,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(K1,1)*DISF(J1,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(16,K1,J1,2*I+L,5,0,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(J1+6,1)*DISF(K1-6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(15,J1,K1,2*I+L,4,1,0)
GOTO 500
ENDIF
HCS = HCS+ME2*DISF(K1-6,1)*DISF(J1+6,2)
IF(GENEV.AND.HCS.GT.RCS) THEN
CALL HWHRSS(16,K1,J1,2*I+L,4,1,0)
GOTO 500
ENDIF
ENDDO
490 CONTINUE
ENDDO
ENDDO
C--Setup to generate the event
500 IF(GENEV) THEN
CALL HWETWO(.TRUE.,.TRUE.)
ELSE
EVWGT = HCS
ENDIF
END
CDECK ID>, HWHRSP.
*CMZ :- -20/07/99 10:56:12 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHRSP
C-----------------------------------------------------------------------
C Subroutine for all hadron-hadron Rparity violating processes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
IF(MOD(IPROC,10000).GE.4000.AND.MOD(IPROC,10000).LT.4060) THEN
C--SINGLE SPARTICLE VIA LQD
CALL HWHRLS
ELSEIF(MOD(IPROC,10000).GE.4060.AND.MOD(IPROC,10000).LT.4100) THEN
C--RESONANT SLEPTONS TO STANDARD MODEL VIA LQD
CALL HWHRLL
ELSEIF(MOD(IPROC,10000).GE.4100.AND.MOD(IPROC,10000).LT.4160) THEN
C--SINGLE SPARTICLE VIA UDD
CALL HWHRBS
C--RESONANT SQUARKS TO STANDARD MODEL VIA UDD
ELSEIF(MOD(IPROC,10000).EQ.4160) THEN
CALL HWHRBB
ELSE
C--UNKNOWN PROCESS
CALL HWWARN('HWHRSP',500)
ENDIF
END
CDECK ID>, HWHRSS.
*CMZ :- -20/07/99 10:56:12 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHRSS(TYPE,ID1,ID2,ID3,ID4,R4,IPERM)
C-----------------------------------------------------------------------
C IDENTIDY HARD R-PARITY VIOLATING PROCESS
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER ID3, ID4, R4, IPERM,TYPE,ID1,ID2,NEUTD1(8),SLEPID(8),
& NEUTD2(13),SQUID(6),SGN,HWUANT,SQUID2(12),SLPID2(12),
& GAGID1(6),GAGID2(8)
EXTERNAL HWUANT
SAVE NEUTD1,NEUTD2,SLEPID,SQUID ,SQUID2,SLPID2,GAGID1,GAGID2
DATA NEUTD1 /450,451,452,453,454,455,456,457/
DATA NEUTD2 /449,449,449,450,451,452,453,454,455,456,457,454,455/
DATA SLEPID /432,434,436,435,431,433,435,447/
DATA SQUID /411,423,412,412,424,411/
DATA SQUID2 /407,419,409,421,411,423,408,420,410,422,412,424/
DATA SLPID2 /443,445,435,431,443,433,445,435,447,432,434,436/
DATA GAGID1 /199,199,200,198,198,200/
DATA GAGID2 /198,198,198,200,199,199,199,199/
IDCMF = 15
IF(IPERM.EQ.0) THEN
ICO(1) = 2
ICO(2) = 1
ICO(3) = 3
ICO(4) = 4
ELSEIF(IPERM.EQ.1) THEN
ICO(1) = 2
ICO(2) = 1
ICO(3) = 4
ICO(4) = 3
ELSEIF(IPERM.EQ.2) THEN
ICO(1) = 3
ICO(2) = 4
ICO(3) = 1
ICO(4) = 2
ELSE
CALL HWWARN('HWHRSS',100)
GOTO 999
ENDIF
IF(TYPE.LE.8) THEN
IDN(1) = ID1+R4*6
IDN(2) = ID2+R4*6
ELSE
SGN = 1
IF(MOD(TYPE,2).EQ.0) SGN = -1
IDN(1) = ID1+R4*6*SGN
IDN(2) = ID2-R4*6*SGN
ENDIF
IF(TYPE.LE.2) THEN
IDN(3) = ID3+6*R4
IDN(4) = ID4+6*R4
ELSEIF(TYPE.GE.3.AND.TYPE.LE.4) THEN
IDN(3) = ID3-R4*6
IDN(4) = NEUTD2(ID4)
ELSEIF(TYPE.GE.5.AND.TYPE.LE.6) THEN
IDN(3) = GAGID1(ID3)
IDN(4) = SQUID(ID4)-R4*6
IF(R4.EQ.1) IDN(3) = HWUANT(IDN(3))
ELSEIF(TYPE.GE.7.AND.TYPE.LE.8) THEN
IDN(3) =202+ID3
IDN(4) = SQUID2(ID4)-R4*6
ELSEIF(TYPE.GE.9.AND.TYPE.LE.10) THEN
IDN(3) = ID3+6*R4
IDN(4) = ID4-6*R4
IF(IPERM.EQ.2.AND.TYPE.EQ.10) THEN
SGN=IDN(3)
IDN(3) = IDN(4)
IDN(4) = SGN
ENDIF
ELSEIF(TYPE.GE.11.AND.TYPE.LE.12) THEN
IDN(3) = 120+ID3-R4*6
IDN(4) = NEUTD1(ID4)
IF(R4.EQ.1) IDN(4) = HWUANT(IDN(4))
ELSEIF(TYPE.GE.13.AND.TYPE.LE.14) THEN
IDN(3) = SLEPID(ID3)-R4*6
IDN(4) = GAGID2(ID4)
IF(R4.NE.0) IDN(4) = HWUANT(IDN(4))
ELSEIF(TYPE.GE.15.AND.TYPE.LE.16) THEN
IDN(3) = SLPID2(ID3)-R4*6
IDN(4) = 202+ID4
ENDIF
IF(MOD(TYPE,2).EQ.0.AND.TYPE.NE.8) COSTH=-COSTH
999 RETURN
END
CDECK ID>, HWHSCT.
*CMZ :- -18/03/04 18.42.43 by Mike Seymour
*-- Author : Mike Seymour
C-----------------------------------------------------------------------
SUBROUTINE HWHSCT(REPORT,FIRSTC,JMUEO,PTJIM)
C-----------------------------------------------------------------------
C RELABEL THE EVENT RECORD FOR EXTRA HARD SCATTERING,
C DO THE SCATTERING, PARTON SHOWER IT, AND CLEAN UP THE EVENT RECORD
C REPORT RETURNS THE OUTCOME:
C 0 = SUCCESSFUL
C 1 = FAILED DUE TO ERROR IN HARD SCATTERING GENERATION
C 2 = FAILED DUE TO ENERGY CONSERVATION IN HARD SCATTERING
C 3 = FAILED DUE TO ERROR IN PARTON EVOLUTION
C 4 = FAILED DUE TO ENERGY CONSERVATION IN PARTON EVOLUTION
C 5 = COMPLETELY FAILED (IERROR IS ALSO NON-ZERO TO CANCEL EVENT)
C FIRSTC IS AN INPUT FLAG THAT SAYS THAT THIS IS THE FIRST CALL
C OF THE EVENT
C JMUEO IS THE UNDERLYING EVENT OPTION: 1=>VETO EVENTS WITH M
C SCATTERS ABOVE PTMIN WITH PROBABILITY 1/(M+1)
C PTJIM IS THE MINIMUM TRANSVERSE MOMENTUM FOR ADDITIONAL SCATTERS
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRGET,HWRSET,WGT,PBOOST(5),RBOOST(3,3),
$ WJMAX,PT,PTJIM,DUMMY,HWUPCM
INTEGER IHEP,IBM,ITG,IBMN,ITGN,IBMT,ITGT,I,REPORT,NHARD,
$ MYRN(2),TMPRN(2),JMUEO
LOGICAL COL,FIRSTC,TMPFLG
INTEGER IPRTMP
EXTERNAL HWRGEN,HWRGET,HWRSET,HWUPCM
SAVE WJMAX,MYRN,NHARD
DATA WJMAX,MYRN,NHARD/0,004122,7679781,0/
COL(I)=I.EQ.13 .OR. I.GE.1.AND.I.LE.6 .OR. I.GE.115.AND.I.LE.120
REPORT=5
IF (IERROR.NE.0) RETURN
C---RESET THE COUNTER FOR HARD SCATTERS ON THE FIRST CALL
IF (FIRSTC) NHARD=0
C---FIND BEAM AND TARGET REMNANTS
CALL HWHREM(IBM,ITG)
IF (IERROR.NE.0) RETURN
C---RECALCULATE THEIR MASS CORRECTLY
CALL HWUMAS(PHEP(1,IBM))
CALL HWUMAS(PHEP(1,ITG))
C---SET UP NEW ENTRIES IN THE EVENT RECORD
NHEP=NHEP+1
CALL HWVEQU(5,PHEP(1,IBM),PHEP(1,NHEP))
ISTHEP(NHEP)=3
IBMN=NHEP
IBMT=JDAHEP(1,1)
IF (IBMT.EQ.0) THEN
JMOHEP(1,NHEP)=1
IDHW(NHEP)=72
ELSE
JMOHEP(1,NHEP)=IBMT
IDHW(NHEP)=71
ENDIF
JMOHEP(2,NHEP)=0
JDAHEP(1,NHEP)=0
JDAHEP(2,NHEP)=0
IDHEP(NHEP)=IDPDG(IDHW(NHEP))
NHEP=NHEP+1
CALL HWVEQU(5,PHEP(1,ITG),PHEP(1,NHEP))
ISTHEP(NHEP)=3
ITGN=NHEP
ITGT=JDAHEP(1,2)
IF (ITGT.EQ.0) THEN
JMOHEP(1,NHEP)=2
IDHW(NHEP)=72
ELSE
JMOHEP(1,NHEP)=ITGT
IDHW(NHEP)=71
ENDIF
JMOHEP(2,NHEP)=0
JDAHEP(1,NHEP)=0
JDAHEP(2,NHEP)=0
IDHEP(NHEP)=IDPDG(IDHW(NHEP))
C---BOOST TO THEIR CENTRE-OF-MASS FRAME
CALL HWVSUM(4,PHEP(1,IBMN),PHEP(1,ITGN),PBOOST)
CALL HWUMAS(PBOOST)
DO 100 IHEP=IBMN,NHEP
CALL HWULOF(PBOOST,PHEP(1,IHEP),PHEP(1,IHEP))
100 CONTINUE
CALL HWUROT(PHEP(1,IBMN),ONE,ZERO,RBOOST)
DO 110 IHEP=IBMN,NHEP
CALL HWUROF(RBOOST,PHEP(1,IHEP),PHEP(1,IHEP))
110 CONTINUE
C---PERFORM A SEARCH FOR THE MAXIMUM WEIGHT, IF IT IS NOT YET FOUND
IF (WJMAX.EQ.0) THEN
C---USING LOCAL RANDOM NUMBER SEEDS
DUMMY=HWRGET(TMPRN)
DUMMY=HWRSET(MYRN)
GENEV=.FALSE.
DO I=1,IBSH
CALL HWHSCU(WGT,PTJIM)
WJMAX=MAX(WJMAX,WGT)
ENDDO
WRITE (6,'(A,G12.4)') ' Jimmy search for maximum weight=',WJMAX
DUMMY=HWRGET(MYRN)
DUMMY=HWRSET(TMPRN)
C---BECAUSE OF THE ENERGY DEPENDENCE, LEAVE LOTS OF SAFETY MARGIN
WJMAX=WJMAX*2
ENDIF
C---GENERATE A NEW HARD SCATTERING
5 GENEV=.FALSE.
10 CALL HWHSCU(WGT,PTJIM)
IF (WGT.GT.WJMAX) THEN
WRITE (6,'(A,G12.4/A,G12.4,A,G12.4)')
$ ' Jimmy maximum weight exceeded! SQRT(S)=',PHEP(5,3),
$ ' Increasing from ',WJMAX,' to ',WGT*2
WJMAX=WGT*2
ENDIF
IF (WGT.LE.WJMAX*HWRGEN(0)) GOTO 10
GENEV=.TRUE.
CALL HWHSCU(WGT,PTJIM)
C---IF ADDING LOW PT SCATTERS TO HIGH PT EVENTS ADD AN EXTRA VETO ON
C SCATTERS THAT HAPPEN TO BE HIGH PT
TMPFLG=.FALSE.
IF (JMUEO.EQ.1) THEN
C---FIRST RECONSTRUCT THE PT THAT WAS GENERATED IN THE SCATTERING
PT=SQRT(PHEP(1,NHEP)**2+PHEP(2,NHEP)**2)*
$ SQRT(XX(1)*XX(2))*PHEP(5,3)
$ /(2*HWUPCM(PHEP(5,NHEP-2),PHEP(5,NHEP-1),PHEP(5,NHEP)))
C---IF IT IS ABOVE THE TRIGGER THRESHOLD APPLY THE VETO
IF (PT.GT.PTMIN) THEN
IF ((NHARD+2)*HWRGEN(1).LT.1) THEN
NHEP=IBMN-1
GOTO 5
ENDIF
TMPFLG=.TRUE.
ENDIF
ENDIF
C---IF MOMENTUM CANNOT BE CONSERVED, STOP GENERATING HARD SCATTERS
IF ( PHEP(4,IBMN+2) .GT. PHEP(4,IBMN).OR.
$ PHEP(4,ITGN+2) .GT. PHEP(4,ITGN).OR.
$ PHEP(3,IBMN+2) .GT. PHEP(3,IBMN).OR.
$ -PHEP(3,ITGN+2) .GT.-PHEP(3,ITGN).OR.IERROR.NE.0) THEN
IF (IERROR.GT.0) THEN
WRITE (6,'(A/A)')
$ ' THIS ERROR OCCURED DURING A SECONDARY SCATTER AND WAS',
$ ' CAUGHT BY HWHSCT, SO EVENT IS NOT KILLED AFTER ALL'
REPORT=1
ELSE
REPORT=2
ENDIF
NHEP=IBMN-1
IERROR=0
RETURN
ENDIF
C---RELABEL OUTGOING REMNANTS AS INCOMING HADRONS
JDAHEP(1,1)=IBMN
JDAHEP(1,2)=ITGN
C---EVOLVE THEM
ISLENT=-1
C---SAVE THE CURRENT PROCESS TYPE, AND SWITCH TO
C QCD SCATTERING TO AVOID PROBLEMS WITH THE
C PARTON SHOWER.
IPRTMP=IPRO
IPRO=15
CALL HWBGEN
IPRO=IPRTMP
ISLENT=1
C---PUT THE LABELS BACK
JDAHEP(1,1)=IBMT
JDAHEP(1,2)=ITGT
C---IF THERE WERE ANY PROBLEMS, STOP GENERATING HARD SCATTERS
IF (IERROR.NE.0) THEN
IF (IERROR.GT.0) THEN
WRITE (6,'(A/A)')
$ ' THIS ERROR OCCURED DURING A SECONDARY SCATTER AND WAS',
$ ' CAUGHT BY HWHSCT, SO EVENT IS NOT KILLED AFTER ALL'
REPORT=3
ELSE
REPORT=4
ENDIF
NHEP=IBMN-1
IERROR=0
RETURN
ENDIF
C---UNDO THE LORENTZ BOOST
DO 200 IHEP=IBMN,NHEP
CALL HWUROB(RBOOST,PHEP(1,IHEP),PHEP(1,IHEP))
CALL HWULOB(PBOOST,PHEP(1,IHEP),PHEP(1,IHEP))
200 CONTINUE
C---FIND THE NEW BEAM AND TARGET REMNANTS
ISTHEP(IBM)=3
ISTHEP(ITG)=3
CALL HWHREM(IBMN,ITGN)
IF (IERROR.NE.0) RETURN
C---CONNECT UP THE COLOUR/FLAVOUR LINES OF THE TWO SCATTERS
IDHW(IBMN)=IDHW(IBM)
IDHEP(IBMN)=IDHEP(IBM)
IF (COL(IDHW(IBM))) THEN
JMOHEP(2,JDAHEP(2,IBMN))=JMOHEP(2,IBM)
JDAHEP(2,JMOHEP(2,IBM))=JDAHEP(2,IBMN)
JDAHEP(2,IBMN)=JDAHEP(2,IBM)
JMOHEP(2,JDAHEP(2,IBM))=IBMN
ELSE
JDAHEP(2,JMOHEP(2,IBMN))=JDAHEP(2,IBM)
JMOHEP(2,JDAHEP(2,IBM))=JMOHEP(2,IBMN)
JMOHEP(2,IBMN)=JMOHEP(2,IBM)
JDAHEP(2,JMOHEP(2,IBM))=IBMN
ENDIF
JMOHEP(2,IBM)=0
JDAHEP(1,IBM)=IBMN
JDAHEP(2,IBM)=0
IDHW(ITGN)=IDHW(ITG)
IDHEP(ITGN)=IDHEP(ITG)
IF (COL(IDHW(ITG))) THEN
JMOHEP(2,JDAHEP(2,ITGN))=JMOHEP(2,ITG)
JDAHEP(2,JMOHEP(2,ITG))=JDAHEP(2,ITGN)
JDAHEP(2,ITGN)=JDAHEP(2,ITG)
JMOHEP(2,JDAHEP(2,ITG))=ITGN
ELSE
JDAHEP(2,JMOHEP(2,ITGN))=JDAHEP(2,ITG)
JMOHEP(2,JDAHEP(2,ITG))=JMOHEP(2,ITGN)
JMOHEP(2,ITGN)=JMOHEP(2,ITG)
JDAHEP(2,JMOHEP(2,ITG))=ITGN
ENDIF
JMOHEP(2,ITG)=0
JDAHEP(1,ITG)=ITGN
JDAHEP(2,ITG)=0
C---LOOK FOR COLOUR SINGLET GLUONS (A RARE BUT ANNOYING SPECIAL CASE)
DO 20 IHEP=1,NHEP
IF (IDHW(IHEP).EQ.13.AND.JMOHEP(2,IHEP).EQ.IHEP) THEN
CALL HWWARN('HWHSCT',120)
GOTO 999
ENDIF
20 CONTINUE
REPORT=0
IF (TMPFLG) NHARD=NHARD+1
999 RETURN
END
CDECK ID>, HWHSCU
*CMZ :- -17/03/04 14.37.43 by Mike Seymour
*-- Author : Mike Seymour
C-----------------------------------------------------------------------
SUBROUTINE HWHSCU(WGT,PTJIM)
C-----------------------------------------------------------------------
C SWAP THE HARD PROCESS GENERATION PARAMETERS,
C CALL HWHQCD, AND SWAP BACK
C WGT IS THE OUTPUT EVENT WEIGHT
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION WGT,PTJIM,XMIN,XMAX,XPOW,
$ TMPXMN,TMPXMX,TMPXPW,TMPWGT
LOGICAL FIRST
COMMON/HWRPIN/XMIN,XMAX,XPOW,FIRST
C---STORE THE CURRENT VALUES
TMPWGT=EVWGT
TMPXMN=XMIN
TMPXMX=XMAX
TMPXPW=XPOW
C---REPLACE BY NEW ONES
XMIN=2*PTJIM
XMAX=2*SQRT(HALF*(EBEAM1*EBEAM2+PBEAM1*PBEAM2))
XPOW=-4D0
C---AND ENSURE THAT HWRPOW GETS REINITIALIZED
FIRST=.TRUE.
C---GENERATE A PHASE SPACE POINT
CALL HWHQCD
IF (IERROR.NE.0.OR.EVWGT.LT.0) THEN
IERROR=0
EVWGT=0
ENDIF
WGT=EVWGT
C---PUT THE OLD VALUES BACK
EVWGT=TMPWGT
XMIN=TMPXMN
XMAX=TMPXMX
XPOW=TMPXPW
C---AND AGAIN ENSURE THAT HWRPOW GETS REINITIALIZED
FIRST=.TRUE.
C---INCLUDE GAMWT HERE
WGT=WGT*GAMWT
END
CDECK ID>, HWHSNG.
*CMZ :- -20/09/95 14.59.15 by Mike Seymour
*-- Author : Mike Seymour
C-----------------------------------------------------------------------
SUBROUTINE HWHSNG
C PARTON-PARTON SCATTERING VIA COLOUR SINGLET
C MEAN EVWGT = SIGMA IN NB
C TREATS ALL PARTONS ON EQUAL FOOTING WITH HWHSNM(ID1,ID2,S,T)
C PROVIDING THE MATRIX ELEMENT SQUARED FOR PARTON TYPES ID1 AND ID2
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER ID1,ID2
DOUBLE PRECISION HWRGEN,HWRUNI,HWHSNM,EPS,RCS,ET,EJ,KK,KK2,
& YJ1INF,YJ1SUP,Z1,YJ2INF,YJ2SUP,Z2,FACT,S,T,U,HCS
SAVE HCS,FACT,S,T
PARAMETER (EPS=1.D-9)
IF (GENEV) THEN
RCS=HCS*HWRGEN(0)
ELSE
EVWGT=0.
CALL HWRPOW(ET,EJ)
KK=ET/PHEP(5,3)
KK2=KK**2
IF (KK.GE.ONE) RETURN
YJ1INF=MAX( YJMIN , LOG((1.-SQRT(1.-KK2))/KK) )
YJ1SUP=MIN( YJMAX , LOG((1.+SQRT(1.-KK2))/KK) )
IF (YJ1INF.GE.YJ1SUP) RETURN
Z1=EXP(HWRUNI(1,YJ1INF,YJ1SUP))
YJ2INF=MAX( YJMIN , -LOG(2./KK-1./Z1) )
YJ2SUP=MIN( YJMAX , LOG(2./KK-Z1) )
IF (YJ2INF.GE.YJ2SUP) RETURN
Z2=EXP(HWRUNI(2,YJ2INF,YJ2SUP))
XX(1)=0.5*(Z1+Z2)*KK
IF (XX(1).GE.ONE) RETURN
XX(2)=XX(1)/(Z1*Z2)
IF (XX(2).GE.ONE) RETURN
COSTH=(Z1-Z2)/(Z1+Z2)
S=XX(1)*XX(2)*PHEP(5,3)**2
T=-0.5*S*(1.-COSTH)
U=-S-T
C---SET EMSCA TO HARD PROCESS SCALE (APPROX ET-JET)
EMSCA=SQRT(2.*S*T*U/(S*S+T*T+U*U))
FACT=GEV2NB*0.5*ET*EJ*(YJ1SUP-YJ1INF)*(YJ2SUP-YJ2INF)
$ /(16*PIFAC*S**2)
CALL HWSGEN(.FALSE.)
ENDIF
C
HCS=0.
DO 20 ID1=1,13
IF (DISF(ID1,1).LT.EPS) GOTO 20
DO 10 ID2=1,13
IF (DISF(ID2,1).LT.EPS) GOTO 10
HCS=HCS+FACT*DISF(ID1,1)*DISF(ID2,2)*HWHSNM(ID1,ID2,S,T)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHQCP(ID1,ID2,3412,90)
GOTO 30
ENDIF
10 CONTINUE
20 CONTINUE
EVWGT=HCS
RETURN
C---GENERATE EVENT
30 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
END
CDECK ID>, HWHSNM.
*CMZ :- -20/09/95 15.28.53 by Mike Seymour
*-- Author : Mike Seymour
C-----------------------------------------------------------------------
FUNCTION HWHSNM(ID1,ID2,S,T)
C MATRIX ELEMENT SQUARED FOR COLOUR-SINGLET PARTON-PARTON SCATTERING
C INCLUDES SPIN AND COLOUR AVERAGES AND SUMS.
C FOR PHOTON EXCHANGE, INTERFERENCE WITH U-CHANNEL CONTRIBUTION IS
C INCLUDED FOR IDENTICAL QUARKS AND LIKEWISE S-CHANNEL CONTRIBUTION
C FOR IDENTICAL QUARK-ANTIQUARK PAIRS.
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWHSNM,HWUAEM,HWUALF,S,T,ASQ,AINU,AINS,Y,SOLD,
$ TOLD,QQ(13,13),ZETA3
INTEGER ID1,ID2
LOGICAL PHOTON
C---ZETA3=RIEMANN ZETA FUNCTION(3)
PARAMETER (ZETA3=1.202056903159594D0)
SAVE ASQ,AINU,AINS,SOLD,TOLD,QQ
DATA ASQ,AINU,AINS,SOLD,TOLD,QQ/5*0,169*-1/
C---PHOTON=.TRUE. FOR PHOTON EXCHANGE, .FALSE. FOR MUELLER-TANG
PHOTON=MOD(IPROC,100).GE.50
C---QQ CACHES THE KINEMATIC-INDEPENDENT FACTORS, TO MAKE IT RUN FASTER
C (BEARING IN MIND THAT THIS ROUTINE IS CALLED 169 TIMES PER EVENT)
IF (QQ(ID1,ID2).LT.ZERO) THEN
IF (PHOTON) THEN
IF (ID1.EQ.13.OR.ID2.EQ.13) THEN
QQ(ID1,ID2)=0
ELSE
QQ(ID1,ID2)=(QFCH(MOD(ID1-1,6)+1)*QFCH(MOD(ID2-1,6)+1))**2
$ *(4*PIFAC)**2
ENDIF
ELSE
IF (ID1.EQ.13.AND.ID2.EQ.13) THEN
QQ(ID1,ID2)=CAFAC**4
ELSEIF (ID1.EQ.13.OR.ID2.EQ.13) THEN
QQ(ID1,ID2)=(CAFAC*CFFAC)**2
ELSE
QQ(ID1,ID2)=CFFAC**4
ENDIF
QQ(ID1,ID2)=QQ(ID1,ID2)*
$ PIFAC**3/(4*(3.5*ASFIXD*CAFAC*ZETA3)**3)
$ *(16*PIFAC)
ENDIF
ENDIF
C---THE KINEMATIC-DEPENDENT PART IS ALSO CACHED
IF (S.NE.SOLD.OR.T.NE.TOLD) THEN
IF (PHOTON) THEN
AINS=HWUAEM(T)**2
ASQ=2*(S**2+(S+T)**2)/T**2*AINS
AINU=-4*S/T*AINS/NCOLO
AINS=4*AINS/NCOLO-AINU
ELSE
Y=LOG(S/(-T))+ONE
ASQ=HWUALF(1,EMSCA)**4*(S/T)**2*EXP(2*OMEGA0*Y)/Y**3
AINU=0
AINS=0
ENDIF
ENDIF
C---THE FINAL ANSWER IS JUST THEIR PRODUCT
IF (ID1.EQ.ID2) THEN
HWHSNM=QQ(ID1,ID2)*(ASQ+AINU)
ELSEIF (ABS(ID1-ID2).EQ.6) THEN
HWHSNM=QQ(ID1,ID2)*(ASQ+AINS)
ELSE
HWHSNM=QQ(ID1,ID2)*ASQ
ENDIF
END
CDECK ID>, HWHSPN.
*CMZ :- -01/10/01 19.41.18 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHSPN
C-----------------------------------------------------------------------
C Calculates the spin correlations for the hard process
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ZI,S,D,ME(2,2,2,2,NCFMAX),MED(2,2,2,2),F3(2,2,8),
& F4(2,2,8),F3M(2,2,8),F4M(2,2,8),FTP(2,2,8,8),FTM(2,2,8,8),
& FUP(2,2,8,8),FUM(2,2,8,8),FST(2,2,8)
DOUBLE PRECISION P(5,4),A(2,NDIAHD),B(2,NDIAHD),XMASS,PLAB,
& PRW,PCM,MS(NDIAHD),MWD(NDIAHD),MR(NDIAHD),HWULDO,EE,
& PREF(5),EPS,N(3),HWVDOT,PP,PRE,SH,TH,UH,PM(5,4),DIJ(2,2),
& MA(4),MA2(4),PTMP(5),WGT,WGTB(NCFMAX),WGTC,HWRGEN
INTEGER ICM,IHEP,IST,JHEP,KHEP,ID,LHEP,MHEP,IK,IL,IM,IJ,L1,L2,I,J,
& IDP(4+NDIAHD),DRTYPE(NDIAHD),NDIA,P1,P2,P3,P4,IFLOW(NDIAHD),
& ID1,ID2,III,JJJ,KKK,O(2),LLL,MMM
DOUBLE PRECISION SW,CW,TW,E,G,RT,ORT,MW,MZ,GS,AFN(2,12,2,4),
& AFG(2,6,2),AFC(2,12,2,2),OIJ(2,4,2),OIJP(2,2,2),OIJPP(2,4,4),
& HNN(2,3,4,4),HCC(2,3,2,2),HNC(2,4,2),HFF(2,4,12),HWW(2),
& HZZ(2),ZAB(12,2,2),HHB(2,3),HWUAEM
COMMON /HWSPNC/ SW,CW,TW,E,G,RT,ORT,MW,MZ,GS,AFN,AFG,AFC,OIJ,OIJP,
& OIJPP,HNN,HCC,HNC,HFF,HWW,HZZ,ZAB,HHB
LOGICAL SPIN,FIRST
EXTERNAL HWUAEM
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10)
PARAMETER(EPS=1D-20)
EXTERNAL HWULDO,HWVDOT,HWRGEN
SAVE PREF,DIJ,O,FIRST
DATA PREF/1.0D0,0.0D0,0.0D0,1.0D0,0.0D0/
DATA DIJ/1.0D0,0.0D0,0.0D0,1.0D0/
DATA O/2,1/
DATA FIRST/.TRUE./
IF(IERROR.NE.0) RETURN
IF(FIRST) THEN
CALL HWISPC
FIRST = .FALSE.
ENDIF
C--search the event record for the hard process
DO 1 IHEP=1,NHEP
IST = ISTHEP(IHEP)
IF(IST.EQ.110.OR.IST.EQ.120) THEN
ICM = IHEP
GOTO 2
ENDIF
1 CONTINUE
C--now decide whether or not to perform spin correlation
2 KHEP = JDAHEP(1,ICM)
IK = IDHW(KHEP)
JHEP = JDAHEP(2,ICM)
IJ = IDHW(JHEP)
IF(JHEP-KHEP+1.NE.2) CALL HWWARN('HWHSPN',500)
SPIN = .FALSE.
DO 3 IHEP=KHEP,JHEP
ID = IDHW(IHEP)
IF(RSPIN(ID).EQ.0.5D0) SPIN=.TRUE.
3 CONTINUE
IF(.NOT.SPIN) RETURN
IF((RSPIN(IDHW(KHEP)).EQ.ONE.AND.RSPIN(IDHW(JHEP)).EQ.ZERO).OR.
& (RSPIN(IDHW(KHEP)).EQ.ZERO.AND.RSPIN(IDHW(JHEP)).EQ.ONE)) RETURN
LHEP = JMOHEP(1,ICM)
MHEP = JMOHEP(2,ICM)
C--now identify the hard process
C--SM processes first
C--fermion-antifermion production in lepton-lepton collisions
C--or via Z/gamma in hadron-hadron collisions
IF(IPRO.EQ.1.OR.IPRO.EQ.13) THEN
C--only need spin correlations for top and tau production
IF((IK.EQ. 6.AND.IJ.EQ. 12).OR.(IK.EQ. 12.AND.IJ.EQ.6 ).OR.
& (IK.EQ.125.AND.IJ.EQ.131).OR.(IK.EQ.131.AND.IJ.EQ.125)) THEN
C--check fermion first and change order if not
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--Id's of the incoming and outgoing fermions
IL = IDHW(LHEP)
ID1 = IL-6*INT((IL-1)/6)+10*INT((IL-1)/120)
ID2 = IK-6*INT((IK-1)/6)+10*INT((IK-1)/120)
C--couplings for the diagrams
C--first the photon exchange
A(1,1) = -QFCH(ID1)
A(2,1) = -QFCH(ID1)
B(1,1) = -QFCH(ID2)
B(2,1) = -QFCH(ID2)
IDP(5) = 59
DRTYPE(1) = 4
C--then the Z exchange
A(1,2) = -RFCH(ID1)
A(2,2) = -LFCH(ID1)
B(1,2) = -RFCH(ID2)
B(2,2) = -LFCH(ID2)
IDP(6) = 200
DRTYPE(2) = 4
C--setup the colour flow
NDIA = 2
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
IFLOW(1) = 1
IFLOW(2) = 1
ELSE
RETURN
ENDIF
C--fermion-antifermion via s-channel W in hadron-hadron
ELSEIF(IPRO.EQ.14) THEN
IF(IK.EQ. 6.OR.IK.EQ. 12.OR.IJ.EQ. 6.OR.IJ.EQ. 12.OR.
& IK.EQ.125.OR.IJ.EQ.131.OR.IK.EQ.131.OR.IJ.EQ.125) THEN
C--check fermion first and reorder if not
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--couplings for the diagram
A(1,1) = ZERO
A(2,1) =-ORT/SW
B(1,1) = ZERO
B(2,1) =-ORT/SW
IDP(5) = 198
DRTYPE(1) = 4
NDIA = 1
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
IFLOW(1) = 1
ELSE
RETURN
ENDIF
C--top quark production via QCD
ELSEIF(IPRO.EQ.15.OR.IPRO.EQ.17) THEN
IF((IK.EQ.6.AND.IJ.EQ.12).OR.(IK.EQ.12.AND.IJ.EQ.6)) THEN
C--check if the outgoing fermion is first and change order if not
IF(IDHEP(KHEP).LT.0) THEN
ID = KHEP
KHEP = JHEP
JHEP = ID
ENDIF
C--quark-quark to t tbar
IF(IDHW(LHEP).LE.12.AND.IDHW(MHEP).LE.12) THEN
C--first check the incoming fermion is first and change order if not
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
IL = IDHW(LHEP)
C--couplings for the diagram
A(1,1) =-ONE
A(2,1) =-ONE
B(1,1) =-ONE
B(2,1) =-ONE
IDP(5) = 13
DRTYPE(1) = 4
NDIA = 1
C--setup the colour flow
NCFL(1) = 1
SPNCFC(1,1,1) = TWO/9.0D0
IFLOW(1) = 1
C--gluon-gluon to t tbar
ELSEIF(IDHW(LHEP).EQ.13.AND.IDHW(MHEP).EQ.13) THEN
C--setup the diagrams
IDP(5) = 12
IDP(6) = 12
IDP(7) = 13
IDP(8) = 13
DRTYPE(1) = 5
DRTYPE(2) = 6
DRTYPE(3) = 7
DRTYPE(4) = 7
NDIA = 4
C--setup the colour flow
NCFL(1) = 2
IFLOW(1) = 1
IFLOW(2) = 2
IFLOW(3) = 1
IFLOW(4) = 2
SPNCFC(1,1,1) = 0.25D0/THREE
SPNCFC(2,2,1) = SPNCFC(1,1,1)
SPNCFC(1,2,1) = ONE/THREE/32.0D0
SPNCFC(2,1,1) = ONE/THREE/32.0D0
C--incorrect initial state
ELSE
CALL HWWARN('HWHSPN',501)
ENDIF
C--don't need spin correlations haven't produced top
ELSE
RETURN
ENDIF
C--single top quark production in hadron collisions
ELSEIF(IPRO.EQ.20) THEN
C--change order if b quark not first and identify incoming particles
IF(ABS(IDHEP(LHEP)).NE.5) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
IL = IDHEP(LHEP)
IM = IDHEP(MHEP)
C--change order if t quark not first
IF(ABS(IDHEP(KHEP)).NE.6) THEN
ID = KHEP
KHEP = JHEP
JHEP = ID
ENDIF
C--identify diagram type
C--fermion fermion
IF(IL.GT.0.AND.IM.GT.0) THEN
DRTYPE(1) = 17
C--fermion antifermion
ELSEIF(IL.GT.0.AND.IM.LT.0) THEN
DRTYPE(1) = 18
C--antifermion fermion
ELSEIF(IL.LT.0.AND.IM.GT.0) THEN
DRTYPE(1) = 19
C--antifermion antifermion
ELSEIF(IL.LT.0.AND.IM.LT.0) THEN
DRTYPE(1) = 20
C--incorrect initial state
ELSE
CALL HWWARN('HWHSPN',502)
ENDIF
C--couplings
A(1,1) = ZERO
A(2,1) = -ORT/SW
B(1,1) = ZERO
B(2,1) = -ORT/SW
C--virtual particle etc
IDP(5) = 198
NDIA = 1
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
IFLOW(1) = 1
C--SUSY particle production
ELSEIF(IPRO.EQ.7.OR.IPRO.EQ.30) THEN
IF(MOD(IPROC,10000).GT.3030) RETURN
C--fermion-antifermion to neutralino neutralino
IF(IK.GE.450.AND.IK.LE.453.AND.IJ.GE.450.AND.IJ.LE.453) THEN
C--first check the fermion is first and change order if not
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
IL = IDHW(LHEP)
IM = IDHW(MHEP)
C--couplings of the various diagrams
L1 = IK-449
L2 = IJ-449
ID = IL-6*INT((IL-1)/6)+10*INT((IL-1)/120)
C--couplings for the Z exchange diagram
A(1,1) = -RFCH(ID)
A(2,1) = -LFCH(ID)
B(2,1) = HALF*(-ZMIXSS(L1,3)*ZMIXSS(L2,3)
& +ZMIXSS(L1,4)*ZMIXSS(L2,4))/SW/CW
B(1,1) = -B(2,1)
B(2,1) = B(2,1)*ZSGNSS(L1)*ZSGNSS(L2)
DRTYPE(1) = 1
IDP(5) = 200
C--couplings for the t-channel diagrams
A(1,2) = ZERO
A(2,2) =-RT*SLFCH(ID,L1)
B(1,2) =-RT*SLFCH(ID,L2)
B(2,2) = ZERO
IDP(6) = IL-6*INT((IL-1)/6)+24*INT((IL-1)/120)+400
A(1,3) =-RT*SRFCH(ID,L1)*ZSGNSS(L1)
A(2,3) = ZERO
B(1,3) = ZERO
B(2,3) =-RT*SRFCH(ID,L2)*ZSGNSS(L2)
IDP(7) = IL-6*INT((IL-1)/6)+24*INT((IL-1)/120)+412
DRTYPE(2) = 2
DRTYPE(3) = 2
C--couplings for the u-channel diagrams
A(1,4) = ZERO
A(2,4) =-RT*SLFCH(ID,L2)*ZSGNSS(L2)
B(1,4) =-RT*SLFCH(ID,L1)*ZSGNSS(L1)
B(2,4) = ZERO
IDP(8) = IDP(6)
A(1,5) =-RT*SRFCH(ID,L2)
A(2,5) = ZERO
B(1,5) = ZERO
B(2,5) =-RT*SRFCH(ID,L1)
IDP(9) = IDP(7)
DRTYPE(4) = 3
DRTYPE(5) = 3
NDIA=5
C--setup the colour flow
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
IFLOW(1) = 1
IFLOW(2) = 1
IFLOW(3) = 1
IFLOW(4) = 1
IFLOW(5) = 1
C--chargino pair production
ELSEIF(IK.GE.454.AND.IK.LE.457.AND.IJ.GE.454.AND.IJ.LE.457) THEN
C--first check the fermion is first and change order if not
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
IL = IDHW(LHEP)
IM = IDHW(MHEP)
C--couplings of the various diagrams
L1 = IK-453-2*INT((IK-454)/2)
L2 = IJ-453-2*INT((IJ-454)/2)
ID = IL-6*INT((IL-1)/6)+10*INT((IL-1)/120)
C--couplings for the s-channel photon exchange
A(1,1) = -QFCH(ID)
A(2,1) = -QFCH(ID)
B(1,1) = -DIJ(L1,L2)
B(2,1) = -DIJ(L1,L2)
IDP(5) = 59
DRTYPE(1) = 1
C--couplings for the s-channel Z exchange
A(1,2) = -RFCH(ID)
A(2,2) = -LFCH(ID)
B(1,2) =(-WMXUSS(L1,1)*WMXUSS(L2,1)
& -HALF*WMXUSS(L1,2)*WMXUSS(L2,2)+DIJ(L1,L2)*SWEIN)/CW/SW
B(2,2) =WSGNSS(L1)*WSGNSS(L2)*(-WMXVSS(L1,1)*WMXVSS(L2,1)
& -HALF*WMXVSS(L1,2)*WMXVSS(L2,2)+DIJ(L1,L2)*SWEIN)/CW/SW
IDP(6) = 200
DRTYPE(2) = 1
C--couplings for the t-channel diagram
IF(IDHEP(KHEP).GT.0.AND.MOD(IL,2).EQ.0) THEN
A(1,3) = ZERO
A(2,3) =-WMXUSS(L1,1)/SW
B(1,3) =-WMXUSS(L2,1)/SW
B(2,3) = ZERO
DRTYPE(3) = 2
ELSEIF(IDHEP(KHEP).LT.0.AND.MOD(IL,2).NE.0) THEN
A(1,3) =-WMXVSS(L1,1)*WSGNSS(L1)/SW
A(2,3) = ZERO
B(1,3) = ZERO
B(2,3) =-WMXVSS(L2,1)*WSGNSS(L2)/SW
DRTYPE(3) = 2
ELSEIF(IDHEP(KHEP).GT.0.AND.MOD(IL,2).NE.0) THEN
A(1,3) = ZERO
A(2,3) =-WMXVSS(L2,1)*WSGNSS(L2)/SW
B(1,3) =-WMXVSS(L1,1)*WSGNSS(L1)/SW
B(2,3) = ZERO
DRTYPE(3) = 3
ELSE
A(1,3) =-WMXUSS(L2,1)/SW
A(2,3) = ZERO
B(1,3) = ZERO
B(2,3) =-WMXUSS(L1,1)/SW
DRTYPE(3) = 3
ENDIF
IDP(7) = IL-6*INT((IL-1)/6)+24*INT((IL-1)/120)+400
& +2*MOD(IL,2)-1
NDIA = 3
C--setup the colour flow
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
IFLOW(1) = 1
IFLOW(2) = 1
IFLOW(3) = 1
C--chargino neutralino production
ELSEIF((IK.GE.454.AND.IK.LE.457.AND.IJ.GE.450.AND.IJ.LE.453).OR.
& (IJ.GE.454.AND.IJ.LE.457.AND.IK.GE.450.AND.IK.LE.453)) THEN
C--first check the fermion is first and change order if not
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--chargino first
IF(IK.GT.453) THEN
C--change order of outgoing particles if negative chargino
IF(IDHEP(KHEP).LT.0) THEN
ID =KHEP
KHEP=JHEP
JHEP=ID
ENDIF
L1 = IK-453-2*INT((IK-454)/2)
L2 = IJ-449
C--chargino second
ELSE
IF(IDHEP(JHEP).GT.0) THEN
ID =KHEP
KHEP=JHEP
JHEP=ID
ENDIF
L1 = IJ-453-2*INT((IJ-454)/2)
L2 = IK-449
ENDIF
C--first the W exchange diagram
A(1,1) = ZERO
A(2,1) =-ORT/SW
B(1,1) =( ORT*ZMXNSS(L2,3)*WMXUSS(L1,2)
& +ZMXNSS(L2,2)*WMXUSS(L1,1))/SW
B(2,1) =WSGNSS(L1)*ZSGNSS(L2)*(-ORT*ZMXNSS(L2,4)*WMXVSS(L1,2)
& +ZMXNSS(L2,2)*WMXVSS(L1,1))/SW
IDP(5) = 198
DRTYPE(1) = 1
C--intermediate particles for the t and u channel diagrams
IL = IDHW(LHEP)
IM = IDHW(MHEP)
IDP(6) = IM+394
IDP(7) = IL+406
IF(MOD(IL,2).EQ.0) THEN
A(1,2) = ZERO
A(2,2) =-WMXUSS(L1,1)/SW
B(1,2) =-RT*SLFCH(IM-6,L2)
B(2,2) = ZERO
DRTYPE(2) = 2
A(1,3) = ZERO
A(2,3) =-RT*ZSGNSS(L2)*SLFCH(IL,L2)
B(1,3) =-WSGNSS(L1)*WMXVSS(L1,1)/SW
B(2,3) = ZERO
DRTYPE(3) = 3
ELSE
A(1,2) = ZERO
A(2,2) =-WSGNSS(L1)*WMXVSS(L1,1)/SW
B(1,2) =-RT*ZSGNSS(L2)*SLFCH(IM-6,L2)
B(2,2) = ZERO
DRTYPE(2) = 3
A(1,3) = ZERO
A(2,3) =-RT*SLFCH(IL,L2)
B(1,3) =-WMXUSS(L1,1)/SW
B(2,3) = ZERO
DRTYPE(3) = 2
ENDIF
C--setup the colour flow
NDIA = 3
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
IFLOW(1) = 1
IFLOW(2) = 1
IFLOW(3) = 1
C--neutralino gluino production
ELSEIF((IK.EQ.449.AND.IJ.GE.450.AND.IJ.LE.453).OR.
& (IJ.EQ.449.AND.IK.GE.450.AND.IK.LE.453)) THEN
C--first check the fermion is first and change order if not
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--check neutralino first and change order if not
IF(IK.EQ.449) THEN
L1 = IJ-449
ID = KHEP
KHEP = JHEP
JHEP = ID
ELSE
L1 = IK-449
ENDIF
IL = IDHW(LHEP)
C--coupling for the diagrams
C--first t-channel squark exchange
IDP(5) = 400+IL
A(1,1) = ZERO
A(2,1) =-RT*SLFCH(IL,L1)
B(1,1) =-RT
B(2,1) = ZERO
DRTYPE(1) = 2
IDP(6) = 412+IL
A(1,2) =-RT*ZSGNSS(L1)*SRFCH(IL,L1)
A(2,2) = ZERO
B(1,2) = ZERO
B(2,2) = RT
DRTYPE(2) = 2
C--then u-channel s squark exchange
IDP(7) = 400+IL
A(1,3) = ZERO
A(2,3) =-RT
B(1,3) =-RT*ZSGNSS(L1)*SLFCH(IL,L1)
B(2,3) = ZERO
DRTYPE(3) = 3
IDP(8) = 412+IL
A(1,4) = RT
A(2,4) = ZERO
B(1,4) = ZERO
B(2,4) =-RT*SRFCH(IL,L1)
DRTYPE(4) = 3
C--colour flow information
NDIA = 4
NCFL(1) = 1
IFLOW(1) = 1
IFLOW(2) = 1
IFLOW(3) = 1
IFLOW(4) = 1
SPNCFC(1,1,1) = ONE
C--chargino gluino production
ELSEIF((IK.GE.454.AND.IK.LE.457.AND.IJ.EQ.449).OR.
& (IJ.GE.454.AND.IJ.LE.457.AND.IK.EQ.449)) THEN
C--first check the fermion is first and change order if not
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--check chargino first and change order if not
IF(IK.EQ.449) THEN
L1 = IJ-453-2*INT((IJ-454)/2)
ID = KHEP
KHEP = JHEP
JHEP = ID
ELSE
L1 = IK-453-2*INT((IK-454)/2)
ENDIF
IL = IDHW(LHEP)
IM = IDHW(MHEP)
IDP(5) = IM+394
IDP(6) = IL+406
IF(MOD(IL,2).EQ.0) THEN
A(1,1) = ZERO
A(2,1) =-WMXUSS(L1,1)/SW
B(1,1) =-RT
B(2,1) = ZERO
DRTYPE(1) = 2
A(1,2) = ZERO
A(2,2) =-RT
B(1,2) =-WSGNSS(L1)*WMXVSS(L1,1)/SW
B(2,2) = ZERO
DRTYPE(2) = 3
ELSE
A(1,1) = ZERO
A(2,1) =-WSGNSS(L1)*WMXVSS(L1,1)/SW
B(1,1) =-RT
B(2,1) = ZERO
DRTYPE(1) = 2
A(1,2) = ZERO
A(2,2) =-RT
B(1,2) =-WMXUSS(L1,1)/SW
B(2,2) = ZERO
DRTYPE(2) = 3
ENDIF
C--setup the colour flow
NDIA = 2
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
IFLOW(1) = 1
IFLOW(2) = 1
C--quark quark to gluino gluino
ELSEIF(IJ.EQ.449.AND.IK.EQ.449.AND.
& IDHW(LHEP).LE.12.AND.IDHW(MHEP).LE.12) THEN
C--change order if antiquark first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
IL = IDHW(LHEP)
C--couplings of the various diagrams
A(1,1) = ZERO
A(2,1) =-RT
B(1,1) =-RT
B(2,1) = ZERO
A(1,2) = RT
A(2,2) = ZERO
B(1,2) = ZERO
B(2,2) = RT
DO 4 I=1,2
A(I,3) = A(I,1)
B(I,3) = B(I,1)
A(I,4) = A(I,2)
4 B(I,4) = B(I,2)
A(1,5) = ONE
A(2,5) = ONE
B(1,5) = ONE
B(2,5) = ONE
A(1,6) =-ONE
A(2,6) =-ONE
B(1,6) = ONE
B(2,6) = ONE
C--intermediate particles
IDP(5) = 400+IL
IDP(6) = 412+IL
IDP(7) = 400+IL
IDP(8) = 412+IL
IDP(9) = 13
IDP(10) = 13
C--types of diagram
DRTYPE(1) = 2
DRTYPE(2) = 2
DRTYPE(3) = 3
DRTYPE(4) = 3
DRTYPE(5) = 1
DRTYPE(6) = 1
NDIA = 6
C--setup the colour flow
NCFL(1) = 2
SPNCFC(1,1,1) = 8.0D0/27.0D0
SPNCFC(2,2,1) = 8.0D0/27.0D0
SPNCFC(1,2,1) =-ONE/27.0D0
SPNCFC(2,1,1) =-ONE/27.0D0
IFLOW(1) = 1
IFLOW(2) = 1
IFLOW(3) = 2
IFLOW(4) = 2
IFLOW(5) = 1
IFLOW(6) = 2
C--gluon gluon to gluino gluino
ELSEIF(IDHW(LHEP).EQ.13.AND.IDHW(MHEP).EQ.13.AND.IJ.EQ.449
& .AND.IK.EQ.449) THEN
C--setup the diagrams
IDP(5) = 449
IDP(6) = 449
IDP(7) = 13
IDP(8) = 13
DRTYPE(1) = 14
DRTYPE(2) = 15
DRTYPE(3) = 16
DRTYPE(4) = 16
NDIA = 4
C--setup the colour flow
NCFL(1) = 2
IFLOW(1) = 1
IFLOW(2) = 2
IFLOW(3) = 1
IFLOW(4) = 2
SPNCFC(1,1,1) = 9.0D0/16.0D0
SPNCFC(2,2,1) = SPNCFC(1,1,1)
SPNCFC(1,2,1) =-9.0D0/32.0D0
SPNCFC(2,1,1) =-9.0D0/32.0D0
C--neutralino squark production
ELSEIF( (IK.GE.450.AND.IK.LE.453.AND.
& ((IJ.GE.401.AND.IJ.LE.406).OR.(IJ.GE.413.AND.IJ.LE.418)))
& .OR.(IJ.GE.450.AND.IJ.LE.453.AND.
& ((IK.GE.401.AND.IK.LE.406).OR.(IK.GE.413.AND.IK.LE.418))))
& THEN
C--change order if gluon first
IF(IDHW(LHEP).EQ.13) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--change order in squark first
IF(IJ.GE.450) THEN
ID = KHEP
KHEP = JHEP
JHEP = ID
IK = IDHW(KHEP)
IJ = IDHW(JHEP)
ENDIF
IL = IDHW(LHEP)
L1 = IK-449
C--left handed (lighter) squark
IF(IJ.LT.412) THEN
A(1,1) =-RT*SRFCH(IL,L1)*QMIXSS(IL,2,1)
A(2,1) =-RT*ZSGNSS(L1)*SLFCH(IL,L1)*QMIXSS(IL,1,1)
C--right handed (heavier) squark
ELSEIF(IJ.GT.412) THEN
A(1,1) =-RT*SRFCH(IL,L1)*QMIXSS(IL,2,2)
A(2,1) =-RT*ZSGNSS(L1)*SLFCH(IL,L1)*QMIXSS(IL,1,2)
ENDIF
DO 5 I=1,2
5 A(I,2) = A(I,1)
IDP(5) = IJ
IDP(6) = IL
C--colour flow info
DRTYPE(1) = 8
DRTYPE(2) = 10
NDIA = 2
NCFL(1) = 1
SPNCFC(1,1,1) = HALF/THREE
IFLOW(1) = 1
IFLOW(2) = 1
C--neutralino antisquark production
ELSEIF( (IK.GE.450.AND.IK.LE.453.AND.
& ((IJ.GE.407.AND.IJ.LE.412).OR.(IJ.GE.419.AND.IJ.LE.424)))
& .OR.(IJ.GE.450.AND.IJ.LE.453.AND.
& ((IK.GE.407.AND.IK.LE.412).OR.(IK.GE.419.AND.IK.LE.424))))
& THEN
C--change order if gluon first
IF(IDHW(LHEP).EQ.13) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--change order in squark first
IF(IJ.GE.450) THEN
ID = KHEP
KHEP = JHEP
JHEP = ID
IK = IDHW(KHEP)
IJ = IDHW(JHEP)
ENDIF
IL = IDHW(LHEP)-6
L1 = IK-449
C--left handed (lighter) squark
IF(IJ.LE.412) THEN
A(1,1) =-RT*ZSGNSS(L1)*SLFCH(IL,L1)*QMIXSS(IL,1,1)
A(2,1) =-RT*SRFCH(IL,L1)*QMIXSS(IL,2,1)
C--right handed (heavier) squark
ELSEIF(IJ.GT.412) THEN
A(1,1) =-RT*ZSGNSS(L1)*SLFCH(IL,L1)*QMIXSS(IL,1,2)
A(2,1) =-RT*SRFCH(IL,L1)*QMIXSS(IL,2,2)
ENDIF
DO 6 I=1,2
6 A(I,2) = A(I,1)
IDP(5) = IJ
IDP(6) = IL
C--colour flow info
DRTYPE(1) = 9
DRTYPE(2) = 11
NDIA = 2
NCFL(1) = 1
SPNCFC(1,1,1) = HALF/THREE
IFLOW(1) = 1
IFLOW(2) = 1
C--chargino squark
ELSEIF((IK.GE.454.AND.IK.LE.457.AND.
& ((IJ.GE.401.AND.IJ.LE.406).OR.(IJ.GE.413.AND.IJ.LE.418)))
& .OR.(IJ.GE.454.AND.IJ.LE.457.AND.
& ((IK.GE.401.AND.IK.LE.406).OR.(IK.GE.413.AND.IK.LE.418))))
& THEN
C--change order if gluon first
IF(IDHW(LHEP).EQ.13) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--change order if squark first
IF(IJ.GE.454) THEN
ID = KHEP
KHEP = JHEP
JHEP = ID
IK = IDHW(KHEP)
IJ = IDHW(JHEP)
ENDIF
IL = IDHW(LHEP)
L1 = IK-453-2*INT((IK-454)/2)
C--left handed (lighter) squark
A(1,1) = ZERO
IF(IJ.LE.412) THEN
IF(MOD(IL,2).EQ.0) THEN
A(2,1) = -WMXUSS(L1,1)*QMIXSS(IL-1,1,1)/SW
ELSE
A(2,1) = -WSGNSS(L1)*WMXVSS(L1,1)*QMIXSS(IL+1,1,1)/SW
ENDIF
C--right handed (heavier) squark
ELSEIF(IJ.GT.412) THEN
IF(MOD(IL,2).EQ.0) THEN
A(2,1) = -WMXUSS(L1,1)*QMIXSS(IL-1,1,2)/SW
ELSE
A(2,1) = -WSGNSS(L1)*WMXVSS(L1,1)*QMIXSS(IL+1,1,2)/SW
ENDIF
ENDIF
DO 7 I=1,2
7 A(I,2) = A(I,1)
IDP(5) = IJ
IDP(6) = IL
C--colour flow info
DRTYPE(1) = 8
DRTYPE(2) = 10
NDIA = 2
NCFL(1) = 1
SPNCFC(1,1,1) = HALF/THREE
IFLOW(1) = 1
IFLOW(2) = 1
C--chargino antisquark
ELSEIF((IK.GE.454.AND.IK.LE.457.AND.
& ((IJ.GE.407.AND.IJ.LE.412).OR.(IJ.GE.419.AND.IJ.LE.424)))
& .OR.(IJ.GE.454.AND.IJ.LE.457.AND.
& ((IK.GE.407.AND.IK.LE.412).OR.(IK.GE.419.AND.IK.LE.424))))
& THEN
C--change order if gluon first
IF(IDHW(LHEP).EQ.13) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--change order in squark first
IF(IJ.GE.454) THEN
ID = KHEP
KHEP = JHEP
JHEP = ID
IK = IDHW(KHEP)
IJ = IDHW(JHEP)
ENDIF
IL = IDHW(LHEP)-6
L1 = IK-453-2*INT((IK-454)/2)
C--left handed (lighter) squark
A(2,1) = ZERO
IF(IJ.LE.412) THEN
IF(MOD(IL,2).EQ.0) THEN
A(1,1) = -WMXUSS(L1,1)*QMIXSS(IL-1,1,1)/SW
ELSE
A(1,1) = -WSGNSS(L1)*WMXVSS(L1,1)*QMIXSS(IL+1,1,1)/SW
ENDIF
C--right handed (heavier) squark
ELSEIF(IJ.GT.412) THEN
IF(MOD(IL,2).EQ.0) THEN
A(1,1) = -WMXUSS(L1,1)*QMIXSS(IL-1,1,2)/SW
ELSE
A(1,1) = -WMXVSS(L1,1)*QMIXSS(IL+1,1,2)/SW
ENDIF
ENDIF
DO 8 I=1,2
8 A(I,2) = A(I,1)
IDP(5) = IJ
IDP(6) = IL
C--colour flow info
DRTYPE(1) = 9
DRTYPE(2) = 11
NDIA = 2
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
IFLOW(1) = 1
IFLOW(2) = 1
C--squark gluino production
ELSEIF((IK.EQ.449.AND.((IJ.GE.401.AND.IJ.LE.406)
& .OR.(IJ.GE.413.AND.IJ.LE.418)))
& .OR.(IJ.GE.449.AND.((IK.GE.401.AND.IK.LE.406)
& .OR.(IK.GE.413.AND.IK.LE.418)))) THEN
C--change order if gluon first
IF(IDHW(LHEP).EQ.13) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
IL = IDHW(LHEP)
C--change order in squark first
IF(IJ.EQ.449) THEN
ID = KHEP
KHEP = JHEP
JHEP = ID
IJ = IDHW(JHEP)
ENDIF
ID = INT((IJ-401)/12)+1
IF(ID.EQ.1) THEN
A(1,1) = ZERO
A(2,1) =-RT
ELSE
A(1,1) = RT
A(2,1) = ZERO
ENDIF
DO 9 I=1,2
A(I,2) =-A(I,1)
A(I,3) = A(I,1)
9 A(I,4) = A(I,1)
DRTYPE(1) = 12
DRTYPE(2) = 12
DRTYPE(3) = 8
DRTYPE(4) = 10
IDP(5) = 449
IDP(6) = 449
IDP(7) = IJ
IDP(8) = IL
C--colour flows
NDIA = 4
NCFL(1) = 2
IFLOW(1) = 1
IFLOW(2) = 2
IFLOW(3) = 1
IFLOW(4) = 2
SPNCFC(1,1,1) = 2.0D0/9.0D0
SPNCFC(2,2,1) = 2.0D0/9.0D0
SPNCFC(1,2,1) = -0.25D0/9.0D0
SPNCFC(2,1,1) = -0.25D0/9.0D0
C--antisquark gluino production
ELSEIF((IK.GE.449..AND.((IJ.GE.407.AND.IJ.LE.412)
& .OR.(IJ.GE.419.AND.IJ.LE.424)))
& .OR.(IJ.GE.449.AND.((IK.GE.407.AND.IK.LE.412)
& .OR.(IK.GE.419.AND.IK.LE.424)))) THEN
C--change order if gluon first
IF(IDHW(LHEP).EQ.13) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
IL = IDHW(LHEP)
C--change order in squark first
IF(IJ.EQ.449) THEN
ID = KHEP
KHEP = JHEP
JHEP = ID
IJ = IDHW(JHEP)
ENDIF
ID = INT((IJ-401)/12)+1
IF(ID.EQ.1) THEN
A(1,1) =-RT
A(2,1) = ZERO
ELSE
A(1,1) = ZERO
A(2,1) = RT
ENDIF
DO 10 I=1,2
A(I,2) =-A(I,1)
A(I,3) = A(I,1)
10 A(I,4) = A(I,1)
DRTYPE(1) = 13
DRTYPE(2) = 13
DRTYPE(3) = 9
DRTYPE(4) = 11
IDP(5) = 449
IDP(6) = 449
IDP(7) = IJ
IDP(8) = IL
C--colour flows
NDIA = 4
NCFL(1) = 2
IFLOW(1) = 1
IFLOW(2) = 2
IFLOW(3) = 1
IFLOW(4) = 2
SPNCFC(1,1,1) = 2.0D0/9.0D0
SPNCFC(2,2,1) = 2.0D0/9.0D0
SPNCFC(1,2,1) = -0.25D0/9.0D0
SPNCFC(2,1,1) = -0.25D0/9.0D0
C--unrecognised SUSY process
ELSE
CALL HWWARN('HWHSPN',503)
ENDIF
C--LLE processes
ELSEIF(IPRO.EQ.8) THEN
C--neutralino antineutrino production
IF(IK.GE.450.AND.IK.LE.453.AND.
& IJ.GE.127.AND.IJ.LE.132.AND.MOD(IJ,2).EQ.0) THEN
C--ensure lepton first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--RPV indices
III = (IJ-126)/2
JJJ = (IDHW(LHEP)-119)/2
KKK = (IDHW(MHEP)-125)/2
L1 = IK-449
IDP(5) = 424+2*III
DO 11 I=1,2
IDP(5+I) = 423+2*JJJ+(I-1)*12
11 IDP(7+I) = 423+2*KKK+(I-1)*12
C--types of diagram
DRTYPE(1) = 21
DRTYPE(2) = 22
DRTYPE(3) = 22
DRTYPE(4) = 23
DRTYPE(5) = 23
C--RPV couplings
A(1,1) = ZERO
A(2,1) = -LAMDA1(III,JJJ,KKK)
DO 12 I=1,2
B(1,I+1) = ZERO
B(2,I+1) = -LMIXSS(2*JJJ-1,1,I)*LAMDA1(III,JJJ,KKK)
A(1,I+3) = ZERO
12 A(2,I+3) = -LMIXSS(2*KKK-1,2,I)*LAMDA1(III,JJJ,KKK)
C--MSSM couplings
DO 13 J=1,2
B(J,1) = AFN(O(J),2*III+6,1,L1)
DO 13 I=1,2
A(J,I+1) = AFN(O(J),2*JJJ+5,I,L1)
13 B(J,I+3) = AFN( J ,2*KKK+5,I,L1)
C--colour flows
NDIA = 5
NCFL(1) = 1
DO 14 I=1,5
14 IFLOW(I) = 1
SPNCFC(1,1,1) = ONE
C--neutralino neutrino production
ELSEIF(IK.GE.450.AND.IK.LE.453.AND.
& IJ.GE.121.AND.IJ.LE.126.AND.MOD(IJ,2).EQ.0) THEN
C--ensure lepton first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--RPV indices
III = (IJ-120)/2
JJJ = (IDHW(MHEP)-125)/2
KKK = (IDHW(LHEP)-119)/2
L1 = IK-449
IDP(5) = 424+2*III
DO 15 I=1,2
IDP(5+I) = 423+2*JJJ+(I-1)*12
15 IDP(7+I) = 423+2*KKK+(I-1)*12
C--types of diagram
DRTYPE(1) = 24
DRTYPE(2) = 25
DRTYPE(3) = 25
DRTYPE(4) = 26
DRTYPE(5) = 26
C--RPV couplings
A(1,1) = -LAMDA1(III,JJJ,KKK)
A(2,1) = ZERO
DO 16 I=1,2
B(1,I+1) = -LMIXSS(2*JJJ-1,1,I)*LAMDA1(III,JJJ,KKK)
B(2,I+1) = ZERO
A(1,I+3) = -LMIXSS(2*KKK-1,2,I)*LAMDA1(III,JJJ,KKK)
16 A(2,I+3) = ZERO
C--MSSM couplings
DO 17 J=1,2
B(J,1) = AFN( J ,2*III+6,1,L1)
DO 17 I=1,2
A(J,I+1) = AFN( J ,2*JJJ+5,I,L1)
17 B(J,I+3) = AFN(O(J),2*KKK+5,I,L1)
C--colour flows
NDIA = 5
NCFL(1) = 1
DO 18 I=1,5
18 IFLOW(I) = 1
SPNCFC(1,1,1) = ONE
C--chargino antilepton
ELSEIF(IK.GE.456.AND.IK.LE.457.AND.
& IJ.GE.127.AND.IJ.LE.132.AND.MOD(IJ,2).EQ.1) THEN
C--ensure lepton first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--RPV indices
III = (IJ-125)/2
JJJ = (IDHW(LHEP)-119)/2
KKK = (IDHW(MHEP)-125)/2
L1 = IK-455
IDP(5) = 2*III+424
IDP(6) = 2*JJJ+424
C--RPV couplings
A(1,1) = ZERO
A(2,1) = LAMDA1(III,JJJ,KKK)
B(1,2) = ZERO
B(2,2) =-LAMDA1(III,JJJ,KKK)
C--MSSM couplings
DO 19 J=1,2
B(J,1) = AFC(O(J),2*III+6,1,L1)
19 A(J,2) = AFC(O(J),2*JJJ+6,1,L1)
C--colour flows
DRTYPE(1) = 21
DRTYPE(2) = 22
NDIA = 2
NCFL(1) = 1
DO 20 I=1,2
20 IFLOW(I) = 1
SPNCFC(1,1,1) = ONE
C--chargino lepton
ELSEIF(IK.GE.454.AND.IK.LE.455.AND.
& IJ.GE.121.AND.IJ.LE.126.AND.MOD(IJ,2).EQ.1) THEN
C--ensure lepton first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--RPV indices
III = (IJ-119)/2
JJJ = (IDHW(MHEP)-125)/2
KKK = (IDHW(LHEP)-119)/2
L1 = IK-453
IDP(5) = 2*III+424
IDP(6) = 2*JJJ+424
C--RPV couplings
A(1,1) = LAMDA1(III,JJJ,KKK)
A(2,1) = ZERO
B(1,2) =-LAMDA1(III,JJJ,KKK)
B(2,2) = ZERO
C--MSSM couplings
DO 21 J=1,2
B(J,1) = AFC(J,2*III+6,1,L1)
21 A(J,2) = AFC(J,2*JJJ+6,1,L1)
C--colour flows
DRTYPE(1) = 24
DRTYPE(2) = 25
NDIA = 2
NCFL(1) = 1
DO 22 I=1,2
22 IFLOW(I) = 1
SPNCFC(1,1,1) = ONE
C--e+e- production
ELSEIF(IK.GE.121.AND.IK.LE.132.AND.MOD(IK,2).EQ.1.AND.
& IJ.GE.121.AND.IJ.LE.132.AND.MOD(IJ,2).EQ.1) THEN
C--ensure incoming lepton first
IF(IDHEP(LHEP).LT.0) THEN
ID = MHEP
MHEP = LHEP
LHEP = ID
ENDIF
C--ensure outgoing lepton first
IF(IDHEP(KHEP).LT.0) THEN
ID = IK
IK = IJ
IJ = ID
ID = KHEP
KHEP = JHEP
JHEP = ID
ENDIF
C--only need the correlations for tau production
IF(IK.NE.125.AND.IJ.NE.131) RETURN
C--find the RPV indices
III = (IDHW(LHEP)-119)/2
KKK = (IK-119)/2
LLL = (IJ-125)/2
NDIA = 0
EE = SQRT(HWUAEM(SH)*FOUR*PIFAC)
C--s-channel photon and Z exchange if needed
IF(KKK.EQ.LLL) THEN
NDIA = 2
ID1 = 9+2*III
ID2 = 9+2*KKK
C--photon first
A(1,1) = -EE*QFCH(ID1)
A(2,1) = -EE*QFCH(ID1)
B(1,1) = -EE*QFCH(ID2)
B(2,1) = -EE*QFCH(ID2)
IDP(5) = 59
DRTYPE(1) = 4
C--then the Z exchange
A(1,2) = -EE*RFCH(ID1)
A(2,2) = -EE*LFCH(ID1)
B(1,2) = -EE*RFCH(ID2)
B(2,2) = -EE*LFCH(ID2)
IDP(6) = 200
DRTYPE(2) = 4
ENDIF
DO 23 JJJ=1,3
C--s-channel sneutrino exchange
IF(ABS(LAMDA1(III,JJJ,III)*LAMDA1(LLL,JJJ,KKK)).GT.EPS) THEN
NDIA = NDIA+1
DRTYPE(NDIA) = 21
IDP(NDIA+4) = 424+2*JJJ
A(1,NDIA) = LAMDA1(III,JJJ,III)
A(2,NDIA) = ZERO
B(1,NDIA) = ZERO
B(2,NDIA) = LAMDA1(LLL,JJJ,KKK)
ENDIF
C--s-channel antisneutrino exchange
IF(ABS(LAMDA1(III,JJJ,III)*LAMDA1(KKK,JJJ,LLL)).GT.EPS) THEN
NDIA = NDIA+1
DRTYPE(NDIA) = 21
IDP(NDIA+4) = 424+2*JJJ
A(1,NDIA) = ZERO
A(2,NDIA) = LAMDA1(III,JJJ,III)
B(1,NDIA) = LAMDA1(KKK,JJJ,LLL)
B(2,NDIA) = ZERO
ENDIF
C--t-channel sneutrino exchange
IF(ABS(LAMDA1(KKK,JJJ,III)*LAMDA1(LLL,JJJ,III)).GT.EPS) THEN
NDIA = NDIA+1
DRTYPE(NDIA) = 22
IDP(NDIA+4) = 424+2*JJJ
A(1,NDIA) = LAMDA1(KKK,JJJ,III)
A(2,NDIA) = ZERO
B(1,NDIA) = ZERO
B(2,NDIA) = LAMDA1(LLL,JJJ,III)
ENDIF
C--t-channel antisneutrino exchange
IF(ABS(LAMDA1(III,JJJ,KKK)*LAMDA1(III,JJJ,LLL)).GT.EPS) THEN
NDIA = NDIA+1
DRTYPE(NDIA) = 22
IDP(NDIA+4) = 424+2*JJJ
A(1,NDIA) = ZERO
A(2,NDIA) = LAMDA1(III,JJJ,KKK)
B(1,NDIA) = LAMDA1(III,JJJ,LLL)
B(2,NDIA) = ZERO
ENDIF
23 CONTINUE
C--setup the colour flow
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
DO 24 I=1,NDIA
24 IFLOW(I) = 1
C--d dbar production
ELSEIF(IK.LE.12.AND.IK.LE.12.AND.
& MOD(IJ,2).EQ.1.AND.MOD(IK,2).EQ.1) THEN
C--can't produce quark which decays before hadronization
RETURN
C--unrecognised process
ELSE
CALL HWWARN('HWHSPN',504)
ENDIF
C--LQD processes
ELSEIF(IPRO.EQ.40) THEN
C--change outgoing order
ID = IJ
IJ = IK
IK = ID
ID = JHEP
JHEP = KHEP
KHEP = ID
C--neutrino neutralino production
IF(IK.GE.450.AND.IK.LE.453.AND.MOD(IJ,2).EQ.0.AND.
& IDPDG(IJ).GT.0) THEN
C--change order if antiparticle first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--indices for RPV coupling
III = (IJ-120)/2
JJJ = (IDHW(MHEP)-5)/2
KKK = (IDHW(LHEP)+1)/2
L1 = IK - 449
IDP(5) = 424+2*III
DO 25 I=1,2
IDP(5+I) = 399+2*JJJ+(I-1)*12
25 IDP(7+I) = 399+2*KKK+(I-1)*12
C--types of diagram
DRTYPE(1) = 24
DRTYPE(2) = 25
DRTYPE(3) = 25
DRTYPE(4) = 26
DRTYPE(5) = 26
C--RPV couplings
A(1,1) = -LAMDA2(III,JJJ,KKK)
A(2,1) = ZERO
DO 26 I=1,2
B(1,I+1) = -QMIXSS(2*JJJ-1,1,I)*LAMDA2(III,JJJ,KKK)
B(2,I+1) = ZERO
A(1,I+3) = -QMIXSS(2*KKK-1,2,I)*LAMDA2(III,JJJ,KKK)
26 A(2,I+3) = ZERO
C--MSSM couplings
DO 27 J=1,2
B(J,1) = AFN( J ,2*III+6,1,L1)
DO 27 I=1,2
A(J,I+1) = AFN( J ,2*JJJ-1,I,L1)
27 B(J,I+3) = AFN(O(J),2*KKK-1,I,L1)
C--colour flows
NDIA = 5
NCFL(1) = 1
DO 28 I=1,5
28 IFLOW(I) = 1
SPNCFC(1,1,1) = ONE/THREE
C--antineutrino neutralino production
ELSEIF(IK.GE.450.AND.IK.LE.453.AND.MOD(IJ,2).EQ.0.AND.
& IDPDG(IJ).LT.0) THEN
C--change order if antiparticle first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--indices for RPV coupling
III = (IJ-126)/2
JJJ = (IDHW(LHEP)+1)/2
KKK = (IDHW(MHEP)-5)/2
L1 = IK - 449
IDP(5) = 424+2*III
DO 29 I=1,2
IDP(5+I) = 399+2*JJJ+(I-1)*12
29 IDP(7+I) = 399+2*KKK+(I-1)*12
C--types of diagram
DRTYPE(1) = 21
DRTYPE(2) = 22
DRTYPE(3) = 22
DRTYPE(4) = 23
DRTYPE(5) = 23
C--RPV couplings
A(1,1) = ZERO
A(2,1) = -LAMDA2(III,JJJ,KKK)
DO 30 I=1,2
B(1,I+1) = ZERO
B(2,I+1) = -QMIXSS(2*JJJ-1,1,I)*LAMDA2(III,JJJ,KKK)
A(1,I+3) = ZERO
30 A(2,I+3) = -QMIXSS(2*KKK-1,2,I)*LAMDA2(III,JJJ,KKK)
C--MSSM couplings
DO 31 J=1,2
B(J,1) = AFN(O(J),2*III+6,1,L1)
DO 31 I=1,2
A(J,I+1) = AFN(O(J),2*JJJ-1,I,L1)
31 B(J,I+3) = AFN( J ,2*KKK-1,I,L1)
C--colour flows
NDIA = 5
NCFL(1) = 1
DO 32 I=1,5
32 IFLOW(I) = 1
SPNCFC(1,1,1) = ONE/THREE
C--lepton neutralino production
ELSEIF(IK.GE.450.AND.IK.LE.453.AND.MOD(IJ,2).EQ.1.AND.
& IDPDG(IJ).GT.0) THEN
C--change order if antiparticle first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--indices for RPV coupling
III = (IJ-119)/2
JJJ = (IDHW(MHEP)-6)/2
KKK = (IDHW(LHEP)+1)/2
L1 = IK - 449
DO 33 I=1,2
IDP(4+I) = 423+2*III+(I-1)*12
IDP(6+I) = 400+2*JJJ+(I-1)*12
33 IDP(8+I) = 399+2*KKK+(I-1)*12
C--types of diagram
DRTYPE(1) = 24
DRTYPE(2) = 24
DRTYPE(3) = 25
DRTYPE(4) = 25
DRTYPE(5) = 26
DRTYPE(6) = 26
C--RPV couplings
DO 34 I=1,2
A(1,I ) = LMIXSS(2*III-1,1,I)*LAMDA2(III,JJJ,KKK)
A(2,I ) = 0.0D0
B(1,I+2) = QMIXSS(2*JJJ ,1,I)*LAMDA2(III,JJJ,KKK)
B(2,I+2) = 0.0D0
A(1,I+4) = QMIXSS(2*KKK-1,2,I)*LAMDA2(III,JJJ,KKK)
A(2,I+4) = 0.0D0
C--MSSM couplings
DO 34 J=1,2
B(J,I ) = AFN( J ,2*III+5,I,L1)
A(J,I+2) = AFN( J ,2*JJJ ,I,L1)
34 B(J,I+4) = AFN(O(J),2*KKK-1,I,L1)
C--colour flows
NDIA = 6
NCFL(1) = 1
DO 35 I=1,6
35 IFLOW(I) = 1
SPNCFC(1,1,1) = ONE/THREE
C--antilepton neutralino production
ELSEIF(IK.GE.450.AND.IK.LE.453.AND.MOD(IJ,2).EQ.1.AND.
& IDPDG(IJ).LT.0) THEN
C--change order if antiparticle first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--indices for RPV coupling
III = (IJ-125)/2
JJJ = IDHW(LHEP)/2
KKK = (IDHW(MHEP)-5)/2
L1 = IK - 449
DO 36 I=1,2
IDP(4+I) = 423+2*III+(I-1)*12
IDP(6+I) = 400+2*JJJ+(I-1)*12
36 IDP(8+I) = 399+2*KKK+(I-1)*12
C--types of diagram
DRTYPE(1) = 21
DRTYPE(2) = 21
DRTYPE(3) = 22
DRTYPE(4) = 22
DRTYPE(5) = 23
DRTYPE(6) = 23
C--RPV couplings
DO 37 I=1,2
A(1,I ) = 0.0D0
A(2,I ) = LMIXSS(2*III-1,1,I)*LAMDA2(III,JJJ,KKK)
B(1,I+2) = 0.0D0
B(2,I+2) = QMIXSS(2*JJJ ,1,I)*LAMDA2(III,JJJ,KKK)
A(1,I+4) = 0.0D0
A(2,I+4) = QMIXSS(2*KKK-1,2,I)*LAMDA2(III,JJJ,KKK)
C--MSSM couplings
DO 37 J=1,2
B(J,I ) = AFN(O(J),2*III+5,I,L1)
A(J,I+2) = AFN(O(J),2*JJJ ,I,L1)
37 B(J,I+4) = AFN( J ,2*KKK-1,I,L1)
C--colour flows
NDIA = 6
NCFL(1) = 1
DO 39 I=1,6
39 IFLOW(I) = 1
SPNCFC(1,1,1) = ONE/THREE
C-- +ve chargino antineutrino
ELSEIF(IK.GE.454.AND.IK.LE.455.AND.MOD(IJ,2).EQ.0) THEN
C--change order if antiparticle first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--indices for RPV
III = (IJ-126)/2
JJJ = IDHW(LHEP)/2
KKK = (IDHW(MHEP)-5)/2
L1 = IK-453
DO 40 I=1,2
IDP(4+I) = 423+2*III+(I-1)*12
40 IDP(6+I) = 399+2*JJJ+(I-1)*12
C--types of diagram
DRTYPE(1) = 21
DRTYPE(2) = 21
DRTYPE(3) = 22
DRTYPE(4) = 22
DO 41 I=1,2
C--RPV couplings
A(1,I ) = ZERO
A(2,I ) = LMIXSS(2*III-1,1,I)*LAMDA2(III,JJJ,KKK)
B(1,I+2) = ZERO
B(2,I+2) =-QMIXSS(2*JJJ-1,1,I)*LAMDA2(III,JJJ,KKK)
C--MSSM couplings
DO 41 J=1,2
B(J,I ) = AFC(O(J),2*III+5,I,L1)
41 A(J,I+2) = AFC(O(J),2*JJJ-1,I,L1)
C--colour flows
NDIA = 4
NCFL(1) = 1
DO 42 I=1,4
42 IFLOW(I) = 1
SPNCFC(1,1,1) = ONE/THREE
C-- -ve chargino neutrino
ELSEIF(IK.GE.456.AND.IK.LE.457.AND.MOD(IJ,2).EQ.0) THEN
C--change order if antiparticle first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--indices for RPV
III = (IJ-120)/2
JJJ = (IDHW(MHEP)-6)/2
KKK = (IDHW(LHEP)+1)/2
L1 = IK-455
DO 43 I=1,2
IDP(4+I) = 423+2*III+(I-1)*12
43 IDP(6+I) = 399+2*JJJ+(I-1)*12
C--types of diagram
DRTYPE(1) = 24
DRTYPE(2) = 24
DRTYPE(3) = 25
DRTYPE(4) = 25
DO 44 I=1,2
C--RPV couplings
A(1,I ) = LMIXSS(2*III-1,1,I)*LAMDA2(III,JJJ,KKK)
A(2,I ) = ZERO
B(1,I+2) =-QMIXSS(2*JJJ-1,1,I)*LAMDA2(III,JJJ,KKK)
B(2,I+2) = ZERO
C--MSSM couplings
DO 44 J=1,2
B(J,I ) = AFC(J,2*III+5,I,L1)
44 A(J,I+2) = AFC(J,2*JJJ-1,I,L1)
C--colour flows
NDIA = 4
NCFL(1) = 1
DO 45 I=1,4
45 IFLOW(I) = 1
SPNCFC(1,1,1) = ONE/THREE
C-- -ve chargino antilepton
ELSEIF(IK.GE.456.AND.IK.LE.457.AND.MOD(IJ,2).EQ.1) THEN
C--change order if antiparticle first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--indices for RPV
III = (IJ-125)/2
JJJ = (IDHW(LHEP)+1)/2
KKK = (IDHW(MHEP)-5)/2
L1 = IK-455
IDP(5) = 424+2*III
DO 46 I=1,2
46 IDP(5+I) = 400+2*JJJ+(I-1)*12
C--types of diagram
DRTYPE(1) = 21
DRTYPE(2) = 22
DRTYPE(3) = 22
C--RPV couplings
A(1,1) = 0.0D0
A(2,1) =-LAMDA2(III,JJJ,KKK)
DO 47 I=1,2
B(1,I+1) = 0.0D0
47 B(2,I+1) = QMIXSS(2*JJJ,1,I)*LAMDA2(III,JJJ,KKK)
C--MSSM couplings
DO 48 J=1,2
B(J,1) = AFC(O(J),2*III+6,1,L1)
DO 48 I=1,2
48 A(J,I+1) = AFC(O(J),2*JJJ,I,L1)
C--colour flows
NDIA = 3
NCFL(1) = 1
DO 49 I=1,3
49 IFLOW(I) = 1
SPNCFC(1,1,1) = ONE/THREE
C-- +ve chargino lepton
ELSEIF(IK.GE.454.AND.IK.LE.455.AND.MOD(IJ,2).EQ.1) THEN
C--change order if antiparticle first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--indices for RPV
III = (IJ-119)/2
JJJ = (IDHW(MHEP)-5)/2
KKK = (IDHW(LHEP)+1)/2
L1 = IK-453
IDP(5) = 424+2*III
DO 50 I=1,2
50 IDP(5+I) = 400+2*JJJ+(I-1)*12
C--types of diagram
DRTYPE(1) = 24
DRTYPE(2) = 25
DRTYPE(3) = 25
C--RPV couplings
A(1,1) =-LAMDA2(III,JJJ,KKK)
A(2,1) = 0.0D0
DO 51 I=1,2
B(1,I+1) = QMIXSS(2*JJJ,1,I)*LAMDA2(III,JJJ,KKK)
51 B(2,I+1) = 0.0D0
C--MSSM couplings
DO 52 J=1,2
B(J,1) = AFC(J,2*III+6,1,L1)
DO 52 I=1,2
52 A(J,I+1) = AFC(J,2*JJJ,I,L1)
C--colour flows
NDIA = 3
NCFL(1) = 1
DO 53 I=1,3
53 IFLOW(I) = 1
SPNCFC(1,1,1) = ONE/THREE
C--d dbar d dbar
ELSEIF(IK.LE.12.AND.IJ.LE.12.AND.
& MOD(IJ,2).EQ.1.AND.MOD(IK,2).EQ.1) THEN
C--can't produce unstable quark (on hadronization timescale)
RETURN
C--u dbar --> u dbar
ELSEIF((IJ.LE. 6.AND.MOD(IJ,2).EQ.0.AND.
& IK.LE.12.AND.MOD(IK,2).EQ.1).OR.
& (IK.LE.6 .AND.MOD(IK,2).EQ.0.AND.
& IJ.LE.12.AND.MOD(IJ,2).EQ.1)) THEN
C--ensure u first (incoming)
IF(MOD(IDHW(LHEP),2).EQ.1) THEN
ID = MHEP
MHEP = LHEP
LHEP = ID
ENDIF
C--ensure u first (outgoing)
IF(MOD(IK,2).EQ.1) THEN
ID = IJ
IJ = IK
IK = ID
ID = JHEP
JHEP = KHEP
KHEP = ID
ENDIF
C--can't produce unstable quark (on hadronization timescale)
IF(IK.NE.6) RETURN
C--RPV indices
JJJ = IDHW(LHEP)/2
KKK = (IDHW(MHEP)-5)/2
LLL = IK/2
MMM = (IJ-5)/2
NDIA = 0
DO 54 III=1,3
IF(ABS(LAMDA2(III,JJJ,KKK)*LAMDA2(III,LLL,MMM)).LT.EPS)
& GOTO 54
DO 55 J=1,2
IFLOW(NDIA+J) = 1
IDP(4+NDIA+J) = 423+2*III+12*(J-1)
A(1,NDIA+J) = ZERO
A(2,NDIA+J) = LAMDA2(III,JJJ,KKK)*LMIXSS(2*III-1,1,J)
B(1,NDIA+J) = LAMDA2(III,LLL,MMM)*LMIXSS(2*III-1,1,J)
B(2,NDIA+J) = ZERO
55 DRTYPE(NDIA+J) = 21
NDIA = NDIA+2
54 CONTINUE
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
C--ubar d --> ubar d
ELSEIF((IJ.LE.12.AND.MOD(IJ,2).EQ.0.AND.
& IK.LE. 6.AND.MOD(IK,2).EQ.1).OR.
& (IK.LE.12.AND.MOD(IK,2).EQ.0.AND.
& IJ.LE. 6.AND.MOD(IJ,2).EQ.1)) THEN
C--ensure d first (incoming)
IF(MOD(IDHW(LHEP),2).EQ.0) THEN
ID = MHEP
MHEP = LHEP
LHEP = ID
ENDIF
C--ensure d first (outgoing)
IF(MOD(IK,2).EQ.0) THEN
ID = IJ
IJ = IK
IK = ID
ID = JHEP
JHEP = KHEP
KHEP = ID
ENDIF
C--can't produce unstable quark (on hadronization timescale)
IF(IJ.NE.12) RETURN
C--RPV indices
JJJ = (IDHW(MHEP)-6)/2
KKK = (IDHW(LHEP)+1)/2
LLL = (IJ-6)/2
MMM = (IK+1)/2
NDIA = 0
DO 56 III=1,3
IF(ABS(LAMDA2(III,JJJ,KKK)*LAMDA2(III,LLL,MMM)).LT.EPS)
& GOTO 56
DO 57 J=1,2
IFLOW(NDIA+J) = 1
IDP(4+NDIA+J) = 423+2*III+12*(J-1)
A(1,NDIA+J) = LAMDA2(III,JJJ,KKK)*LMIXSS(2*III-1,1,J)
A(2,NDIA+J) = ZERO
B(1,NDIA+J) = ZERO
B(2,NDIA+J) = LAMDA2(III,LLL,MMM)*LMIXSS(2*III-1,1,J)
57 DRTYPE(NDIA+J) = 21
NDIA = NDIA+2
56 CONTINUE
NCFL(1) = 1
SPNCFC(1,1,1) = ONE
C--d dbar --> ell- ell+
ELSEIF(IDHW(LHEP).LE.12.AND.MOD(IDHW(LHEP),2).EQ.1.AND.
& IDHW(MHEP).LE.12.AND.MOD(IDHW(MHEP),2).EQ.1.AND.
& IK.GE.127.AND.IK.LE.132.AND.MOD(IK,2).EQ.1.AND.
& IJ.GE.121.AND.IJ.LE.126.AND.MOD(IJ,2).EQ.1) THEN
C--change outgoing order
ID = IK
IK = IJ
IJ = ID
ID = JHEP
JHEP = KHEP
KHEP = ID
C--change order if dbar first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--don't do correlations if no taus
IF(IK.NE.125.AND.IJ.NE.131) RETURN
C--RPV couplings
JJJ = (IDHW(LHEP)+1)/2
KKK = (IDHW(MHEP)-5)/2
LLL = (IK-119)/2
MMM = (IJ-125)/2
NDIA = 0
DO 58 III=1,3
IF(ABS(LAMDA2(III,JJJ,KKK)*LAMDA1(III,LLL,MMM)).LT.EPS)
& GOTO 58
NDIA = NDIA+1
IFLOW(NDIA) = 1
IDP(4+NDIA) = 424+2*III
A(1,NDIA) = ZERO
A(2,NDIA) = LAMDA2(III,JJJ,KKK)
B(1,NDIA) = LAMDA1(III,LLL,MMM)
B(2,NDIA) = ZERO
DRTYPE(NDIA) = 21
58 CONTINUE
NCFL(1) = 1
SPNCFC(1,1,1) = ONE/THREE
C--dbar d --> ell+ ell-
ELSEIF(IDHW(LHEP).LE.12.AND.MOD(IDHW(LHEP),2).EQ.1.AND.
& IDHW(MHEP).LE.12.AND.MOD(IDHW(MHEP),2).EQ.1.AND.
& IK.GE.121.AND.IK.LE.126.AND.MOD(IK,2).EQ.1.AND.
& IJ.GE.127.AND.IJ.LE.132.AND.MOD(IJ,2).EQ.1) THEN
C--change order if dbar first
IF(IDHEP(LHEP).LT.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--don't do correlations if no taus
IF(IK.NE.125.AND.IJ.NE.131) RETURN
C--RPV couplings
JJJ = (IDHW(MHEP)-5)/2
KKK = (IDHW(LHEP)+1)/2
LLL = (IJ-125)/2
MMM = (IK-119)/2
NDIA = 0
DO 59 III=1,3
IF(ABS(LAMDA2(III,JJJ,KKK)*LAMDA1(III,LLL,MMM)).LT.EPS)
& GOTO 59
NDIA = NDIA+1
IFLOW(NDIA) = 1
IDP(4+NDIA) = 424+2*III
A(1,NDIA) = LAMDA2(III,JJJ,KKK)
A(2,NDIA) = ZERO
B(1,NDIA) = ZERO
B(2,NDIA) = LAMDA1(III,LLL,MMM)
DRTYPE(NDIA) = 21
59 CONTINUE
NCFL(1) = 1
SPNCFC(1,1,1) = ONE/THREE
C--u dbar --> nu ell+
ELSEIF((IK.GE.121.AND.IK.LE.126.AND.MOD(IK,2).EQ.0.AND.
& IJ.GE.127.AND.IJ.LE.132.AND.MOD(IJ,2).EQ.1).OR.
& (IK.GE.127.AND.IK.LE.132.AND.MOD(IK,2).EQ.1.AND.
& IJ.GE.121.AND.IJ.LE.126.AND.MOD(IJ,2).EQ.0)) THEN
C--ensure u first
IF(MOD(IDHW(LHEP),2).NE.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--ensure nu first
IF(MOD(IK,2).NE.0) THEN
ID = IK
IK = IJ
IJ = ID
ID = JHEP
JHEP = KHEP
KHEP = ID
ENDIF
C--only need correlations if tau
IF(IJ.NE.131) RETURN
C--RPV couplings
JJJ = IDHW(LHEP)/2
KKK = (IDHW(MHEP)-5)/2
LLL = (IK-120)/2
MMM = (IJ-125)/2
NDIA = 0
DO 60 III=1,3
IF(ABS(LAMDA2(III,JJJ,KKK)*LAMDA1(III,LLL,MMM)).LT.EPS)
& GOTO 60
DO 61 J=1,2
IFLOW(NDIA+J) = 1
IDP(4+NDIA+J) = 423+2*III+12*(J-1)
A(1,NDIA+J) = ZERO
A(2,NDIA+J) = LAMDA2(III,JJJ,KKK)*LMIXSS(2*III-1,1,J)
B(1,NDIA+J) = LAMDA1(III,LLL,MMM)*LMIXSS(2*III-1,1,J)
B(2,NDIA+J) = ZERO
61 DRTYPE(NDIA+J) = 21
NDIA = NDIA+2
60 CONTINUE
NCFL(1) = 1
SPNCFC(1,1,1) = ONE/THREE
C--ubar d --> ell nubar
ELSEIF((IK.GE.127.AND.IK.LE.132.AND.MOD(IK,2).EQ.0.AND.
& IJ.GE.121.AND.IJ.LE.126.AND.MOD(IJ,2).EQ.1).OR.
& (IK.GE.121.AND.IK.LE.126.AND.MOD(IK,2).EQ.1.AND.
& IJ.GE.127.AND.IJ.LE.132.AND.MOD(IJ,2).EQ.0)) THEN
C--ensure u second
IF(MOD(IDHW(MHEP),2).NE.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C-- ensure nu second
IF(MOD(IJ,2).NE.0) THEN
ID = IK
IK = IJ
IJ = ID
ID = JHEP
JHEP = KHEP
KHEP = ID
ENDIF
C--only need correlations if tau
IF(IK.NE.125) RETURN
C--RPV couplings
JJJ = (IDHW(MHEP)-6)/2
KKK = (IDHW(LHEP)+1)/2
LLL = (IJ-126)/2
MMM = (IK-119)/2
NDIA = 0
DO 62 III=1,3
IF(ABS(LAMDA2(III,JJJ,KKK)*LAMDA1(III,LLL,MMM)).LT.EPS)
& GOTO 62
DO 63 J=1,2
IFLOW(NDIA+J) = 1
IDP(4+NDIA+J) = 423+2*III+12*(J-1)
A(1,NDIA+J) = LAMDA2(III,JJJ,KKK)*LMIXSS(2*III-1,1,J)
A(2,NDIA+J) = ZERO
B(1,NDIA+J) = ZERO
B(2,NDIA+J) = LAMDA1(III,LLL,MMM)*LMIXSS(2*III-1,1,J)
63 DRTYPE(NDIA+J) = 21
NDIA = NDIA+2
62 CONTINUE
NCFL(1) = 1
SPNCFC(1,1,1) = ONE/THREE
C--unrecognized process
ELSE
CALL HWWARN('HWHSPN',505)
ENDIF
C--UDD processes
ELSEIF(IPRO.EQ.41) THEN
C--change outgoing order
ID = IJ
IJ = IK
IK = ID
ID = JHEP
JHEP = KHEP
KHEP = ID
C--ubar neutralino
IF(IK.GE.450.AND.IK.LE.453.AND.MOD(IJ,2).EQ.0.AND.
& IDPDG(IJ).LT.0) THEN
C--indices for RPV
III = (IJ-6)/2
JJJ = (IDHW(LHEP)+1)/2
KKK = (IDHW(MHEP)+1)/2
L1 = IK - 449
C--types of diagram
DRTYPE(1) = 27
DRTYPE(2) = 27
DRTYPE(3) = 28
DRTYPE(4) = 28
DRTYPE(5) = 29
DRTYPE(6) = 29
C--RPV couplings
DO 64 J=1,2
A(1,J ) = QMIXSS(2*III,2,J)*LAMDA3(III,JJJ,KKK)
A(2,J ) = ZERO
B(1,J+2) = QMIXSS(2*JJJ-1,2,J)*LAMDA3(III,JJJ,KKK)
B(2,J+2) = ZERO
A(1,J+4) = QMIXSS(2*KKK-1,2,J)*LAMDA3(III,JJJ,KKK)
A(2,J+4) = ZERO
C--particles
IDP(4+J) = 400+2*III+12*(J-1)
IDP(6+J) = 399+2*JJJ+12*(J-1)
IDP(8+J) = 399+2*KKK+12*(J-1)
C--MSSM couplings
DO 64 I=1,2
B(I,J) = AFN(O(I),2*III,J,L1)
A(I,J+2) = AFN(O(I),2*JJJ-1,J,L1)
64 B(I,J+4) = AFN(O(I),2*KKK-1,J,L1)
C--colour flows
NDIA = 6
NCFL(1) = 1
DO 65 I=1,6
65 IFLOW(I) = 1
SPNCFC(1,1,1) = TWO/THREE
C--u neutralino
ELSEIF(IK.GE.450.AND.IK.LE.453.AND.MOD(IJ,2).EQ.0.AND.
& IDPDG(IJ).GT.0) THEN
C--indices for RPV
III = IJ/2
JJJ = (IDHW(LHEP)-5)/2
KKK = (IDHW(MHEP)-5)/2
L1 = IK - 449
C--types of diagram
DRTYPE(1) = 30
DRTYPE(2) = 30
DRTYPE(3) = 31
DRTYPE(4) = 31
DRTYPE(5) = 32
DRTYPE(6) = 32
C--RPV couplings
DO 66 J=1,2
A(1,J ) = ZERO
A(2,J ) = QMIXSS(2*III,2,J)*LAMDA3(III,JJJ,KKK)
B(1,J+2) = ZERO
B(2,J+2) = QMIXSS(2*JJJ-1,2,J)*LAMDA3(III,JJJ,KKK)
A(1,J+4) = ZERO
A(2,J+4) = QMIXSS(2*KKK-1,2,J)*LAMDA3(III,JJJ,KKK)
C--particles
IDP(4+J) = 400+2*III+12*(J-1)
IDP(6+J) = 399+2*JJJ+12*(J-1)
IDP(8+J) = 399+2*KKK+12*(J-1)
C--MSSM couplings
DO 66 I=1,2
B(I,J) = AFN(I,2*III,J,L1)
A(I,J+2) = AFN(I,2*JJJ-1,J,L1)
66 B(I,J+4) = AFN(I,2*KKK-1,J,L1)
C--colour flows
NDIA = 6
NCFL(1) = 1
DO 67 I=1,6
67 IFLOW(I) = 1
SPNCFC(1,1,1) = TWO/THREE
C--dbar neutralino
ELSEIF(IK.GE.450.AND.IK.LE.453.AND.MOD(IJ,2).EQ.1.AND.
& IDPDG(IJ).LT.0) THEN
C--ensure u type first
IF(MOD(IDHW(LHEP),2).NE.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--RPV indices
III = IDHW(LHEP)/2
JJJ = (IDHW(MHEP)+1)/2
KKK = (IJ-5)/2
L1 = IK - 449
C--types of diagram
DRTYPE(1) = 27
DRTYPE(2) = 27
DRTYPE(3) = 28
DRTYPE(4) = 28
DRTYPE(5) = 29
DRTYPE(6) = 29
C--RPV couplings
DO 68 I=1,2
A(1,I ) = QMIXSS(2*KKK-1,2,I)*LAMDA3(III,JJJ,KKK)
A(2,I ) = ZERO
B(1,I+2) = QMIXSS(2*III,2,I)*LAMDA3(III,JJJ,KKK)
B(2,I+2) = ZERO
A(1,I+4) = QMIXSS(2*JJJ-1,2,I)*LAMDA3(III,JJJ,KKK)
A(2,I+4) = ZERO
C--particles
IDP(4+I) = 399+2*KKK+12*(I-1)
IDP(6+I) = 400+2*III+12*(I-1)
IDP(8+I) = 399+2*JJJ+12*(I-1)
C--MSSM couplings
DO 68 J=1,2
B(J,I ) = AFN(O(J),2*KKK-1,I,L1)
A(J,I+2) = AFN(O(J),2*III ,I,L1)
68 B(J,I+4) = AFN(O(J),2*JJJ-1,I,L1)
C--colour flows
NDIA = 6
NCFL(1) = 1
DO 69 I=1,6
69 IFLOW(I) = 1
SPNCFC(1,1,1) = TWO/THREE
C--d neutralino
ELSEIF(IK.GE.450.AND.IK.LE.453.AND.MOD(IJ,2).EQ.1.AND.
& IDPDG(IJ).GT.0) THEN
C--ensure u type first
IF(MOD(IDHW(LHEP),2).NE.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--RPV indices
III = (IDHW(LHEP)-6)/2
JJJ = (IDHW(MHEP)-5)/2
KKK = (IJ+1)/2
L1 = IK - 449
C--types of diagram
DRTYPE(1) = 30
DRTYPE(2) = 30
DRTYPE(3) = 31
DRTYPE(4) = 31
DRTYPE(5) = 32
DRTYPE(6) = 32
C--RPV couplings
DO 70 I=1,2
A(1,I ) = ZERO
A(2,I ) = QMIXSS(2*KKK-1,2,I)*LAMDA3(III,JJJ,KKK)
B(1,I+2) = ZERO
B(2,I+2) = QMIXSS(2*III,2,I)*LAMDA3(III,JJJ,KKK)
A(1,I+4) = ZERO
A(2,I+4) = QMIXSS(2*JJJ-1,2,I)*LAMDA3(III,JJJ,KKK)
C--particles
IDP(4+I) = 399+2*KKK+12*(I-1)
IDP(6+I) = 400+2*III+12*(I-1)
IDP(8+I) = 399+2*JJJ+12*(I-1)
C--MSSM couplings
DO 70 J=1,2
B(J,I ) = AFN(J,2*KKK-1,I,L1)
A(J,I+2) = AFN(J,2*III ,I,L1)
70 B(J,I+4) = AFN(J,2*JJJ-1,I,L1)
C--colour flows
NDIA = 6
NCFL(1) = 1
DO 71 I=1,6
71 IFLOW(I) = 1
SPNCFC(1,1,1) = TWO/THREE
C--ubar gluino
ELSEIF(IK.EQ.449.AND.MOD(IJ,2).EQ.0.AND.IDPDG(IJ).LT.0) THEN
C--indices for RPV
III = (IJ-6)/2
JJJ = (IDHW(LHEP)+1)/2
KKK = (IDHW(MHEP)+1)/2
C--types of diagram
DRTYPE(1) = 27
DRTYPE(2) = 27
DRTYPE(3) = 28
DRTYPE(4) = 28
DRTYPE(5) = 29
DRTYPE(6) = 29
C--RPV couplings
DO 72 J=1,2
A(1,J ) = QMIXSS(2*III,2,J)*LAMDA3(III,JJJ,KKK)
A(2,J ) = ZERO
B(1,J+2) = QMIXSS(2*JJJ-1,2,J)*LAMDA3(III,JJJ,KKK)
B(2,J+2) = ZERO
A(1,J+4) = QMIXSS(2*KKK-1,2,J)*LAMDA3(III,JJJ,KKK)
A(2,J+4) = ZERO
C--particles
IDP(4+J) = 400+2*III+12*(J-1)
IDP(6+J) = 399+2*JJJ+12*(J-1)
IDP(8+J) = 399+2*KKK+12*(J-1)
C--MSSM couplings
DO 72 I=1,2
B(I,J) = AFG(O(I),2*III,J)
A(I,J+2) = AFG(O(I),2*JJJ-1,J)
72 B(I,J+4) = AFG(O(I),2*KKK-1,J)
C--colour flows
NDIA = 6
NCFL(1) = 3
DO 73 I=1,2
IFLOW(I ) = 1
IFLOW(I+2) = 2
73 IFLOW(I+4) = 3
DO 74 I=1,3
DO 74 J=1,3
IF(I.EQ.J) THEN
SPNCFC(I,J,1) = 8.0D0/9.0D0
ELSE
SPNCFC(I,J,1) =-4.0D0/9.0D0
ENDIF
74 CONTINUE
C--u gluino
ELSEIF(IK.EQ.449.AND.MOD(IJ,2).EQ.0.AND.IDPDG(IJ).GT.0) THEN
C--indices for RPV
III = IJ/2
JJJ = (IDHW(LHEP)-5)/2
KKK = (IDHW(MHEP)-5)/2
C--types of diagram
DRTYPE(1) = 30
DRTYPE(2) = 30
DRTYPE(3) = 31
DRTYPE(4) = 31
DRTYPE(5) = 32
DRTYPE(6) = 32
C--RPV couplings
DO 75 J=1,2
A(1,J ) = ZERO
A(2,J ) = QMIXSS(2*III,2,J)*LAMDA3(III,JJJ,KKK)
B(1,J+2) = ZERO
B(2,J+2) = QMIXSS(2*JJJ-1,2,J)*LAMDA3(III,JJJ,KKK)
A(1,J+4) = ZERO
A(2,J+4) = QMIXSS(2*KKK-1,2,J)*LAMDA3(III,JJJ,KKK)
C--particles
IDP(4+J) = 400+2*III+12*(J-1)
IDP(6+J) = 399+2*JJJ+12*(J-1)
IDP(8+J) = 399+2*KKK+12*(J-1)
C--MSSM couplings
DO 75 I=1,2
B(I,J) = AFG(I,2*III,J)
A(I,J+2) = AFG(I,2*JJJ-1,J)
75 B(I,J+4) = AFG(I,2*KKK-1,J)
C--colour flows
NDIA = 6
NCFL(1) = 3
DO 76 I=1,2
IFLOW(I ) = 1
IFLOW(I+2) = 2
76 IFLOW(I+4) = 3
DO 77 I=1,3
DO 77 J=1,3
IF(I.EQ.J) THEN
SPNCFC(I,J,1) = 8.0D0/9.0D0
ELSE
SPNCFC(I,J,1) =-4.0D0/9.0D0
ENDIF
77 CONTINUE
C--dbar gluino
ELSEIF(IK.EQ.449.AND.MOD(IJ,2).EQ.1.AND.IDPDG(IJ).LT.0) THEN
C--ensure u type first
IF(MOD(IDHW(LHEP),2).NE.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--RPV indices
III = IDHW(LHEP)/2
JJJ = (IDHW(MHEP)+1)/2
KKK = (IJ-5)/2
C--types of diagram
DRTYPE(1) = 27
DRTYPE(2) = 27
DRTYPE(3) = 28
DRTYPE(4) = 28
DRTYPE(5) = 29
DRTYPE(6) = 29
C--RPV couplings
DO 78 I=1,2
A(1,I ) = QMIXSS(2*KKK-1,2,I)*LAMDA3(III,JJJ,KKK)
A(2,I ) = ZERO
B(1,I+2) = QMIXSS(2*III,2,I)*LAMDA3(III,JJJ,KKK)
B(2,I+2) = ZERO
A(1,I+4) = QMIXSS(2*JJJ-1,2,I)*LAMDA3(III,JJJ,KKK)
A(2,I+4) = ZERO
C--particles
IDP(4+I) = 399+2*KKK+12*(I-1)
IDP(6+I) = 400+2*III+12*(I-1)
IDP(8+I) = 399+2*JJJ+12*(I-1)
C--MSSM couplings
DO 78 J=1,2
B(J,I ) = AFG(O(J),2*KKK-1,I)
A(J,I+2) = AFG(O(J),2*III ,I)
78 B(J,I+4) = AFG(O(J),2*JJJ-1,I)
C--colour flows
NDIA = 6
NCFL(1) = 3
DO 79 I=1,2
IFLOW(I ) = 1
IFLOW(I+2) = 2
79 IFLOW(I+4) = 3
DO 80 I=1,3
DO 80 J=1,3
IF(I.EQ.J) THEN
SPNCFC(I,J,1) = 8.0D0/9.0D0
ELSE
SPNCFC(I,J,1) =-4.0D0/9.0D0
ENDIF
80 CONTINUE
C--d gluino
ELSEIF(IK.EQ.449.AND.MOD(IJ,2).EQ.1.AND.IDPDG(IJ).GT.0) THEN
C--ensure u type first
IF(MOD(IDHW(LHEP),2).NE.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--RPV indices
III = (IDHW(LHEP)-6)/2
JJJ = (IDHW(MHEP)-5)/2
KKK = (IJ+1)/2
C--types of diagram
DRTYPE(1) = 30
DRTYPE(2) = 30
DRTYPE(3) = 31
DRTYPE(4) = 31
DRTYPE(5) = 32
DRTYPE(6) = 32
C--RPV couplings
DO 81 I=1,2
A(1,I ) = ZERO
A(2,I ) = QMIXSS(2*KKK-1,2,I)*LAMDA3(III,JJJ,KKK)
B(1,I+2) = ZERO
B(2,I+2) = QMIXSS(2*III,2,I)*LAMDA3(III,JJJ,KKK)
A(1,I+4) = ZERO
A(2,I+4) = QMIXSS(2*JJJ-1,2,I)*LAMDA3(III,JJJ,KKK)
C--particles
IDP(4+I) = 399+2*KKK+12*(I-1)
IDP(6+I) = 400+2*III+12*(I-1)
IDP(8+I) = 399+2*JJJ+12*(I-1)
C--MSSM couplings
DO 81 J=1,2
B(J,I ) = AFG(J,2*KKK-1,I)
A(J,I+2) = AFG(J,2*III ,I)
81 B(J,I+4) = AFG(J,2*JJJ-1,I)
C--colour flows
NDIA = 6
NCFL(1) = 3
DO 82 I=1,2
IFLOW(I ) = 1
IFLOW(I+2) = 2
82 IFLOW(I+4) = 3
DO 83 I=1,3
DO 83 J=1,3
IF(I.EQ.J) THEN
SPNCFC(I,J,1) = 8.0D0/9.0D0
ELSE
SPNCFC(I,J,1) =-4.0D0/9.0D0
ENDIF
83 CONTINUE
C--dbar -ve chargino
ELSEIF(IK.GE.456.AND.IK.LE.457.AND.MOD(IJ,2).EQ.1) THEN
C--change order so highest generation first
IF(IDHW(MHEP).GT.IDHW(LHEP)) THEN
ID = MHEP
MHEP = LHEP
LHEP = ID
ENDIF
C--RPV indices
III = (IJ-5)/2
JJJ = (IDHW(LHEP)+1)/2
KKK = (IDHW(MHEP)+1)/2
L1 = IK-455
C--types of diagram
DRTYPE(1) = 27
DRTYPE(2) = 27
DRTYPE(3) = 28
DRTYPE(4) = 28
DRTYPE(5) = 29
DRTYPE(6) = 29
C--RPV couplings
DO 84 I=1,2
A(1,I ) = QMIXSS(2*III,2,I)*LAMDA3(III,JJJ,KKK)
A(2,I ) = ZERO
B(1,I+2) = QMIXSS(2*JJJ,2,I)*LAMDA3(JJJ,KKK,III)
B(2,I+2) = ZERO
A(1,I+4) = QMIXSS(2*KKK,2,I)*LAMDA3(KKK,III,JJJ)
A(2,I+4) = ZERO
C--particles
IDP(4+I) = 400+2*III+12*(I-1)
IDP(6+I) = 400+2*JJJ+12*(I-1)
IDP(8+I) = 400+2*KKK+12*(I-1)
C--MSSM couplings
DO 84 J=1,2
B(J,I ) = AFC(O(J),2*III,I,L1)
A(J,I+2) = AFC(O(J),2*JJJ,I,L1)
84 B(J,I+4) = AFC(O(J),2*KKK,I,L1)
C--colour flows
NDIA = 6
NCFL(1) = 1
DO 85 I=1,6
85 IFLOW(I) = 1
SPNCFC(1,1,1) = TWO/THREE
C--d +ve chargino
ELSEIF(IK.GE.454.AND.IK.LE.455.AND.MOD(IJ,2).EQ.1) THEN
C--change order so highest generation first
IF(IDHW(MHEP).GT.IDHW(LHEP)) THEN
ID = MHEP
MHEP = LHEP
LHEP = ID
ENDIF
C--RPV indices
III = (IJ+1)/2
JJJ = (IDHW(LHEP)-5)/2
KKK = (IDHW(MHEP)-5)/2
L1 = IK-453
C--types of diagram
DRTYPE(1) = 30
DRTYPE(2) = 30
DRTYPE(3) = 31
DRTYPE(4) = 31
DRTYPE(5) = 32
DRTYPE(6) = 32
C--RPV couplings
DO 86 I=1,2
A(1,I ) = ZERO
A(2,I ) = QMIXSS(2*III,2,I)*LAMDA3(III,JJJ,KKK)
B(1,I+2) = ZERO
B(2,I+2) = QMIXSS(2*JJJ,2,I)*LAMDA3(JJJ,KKK,III)
A(1,I+4) = ZERO
A(2,I+4) = QMIXSS(2*KKK,2,I)*LAMDA3(KKK,III,JJJ)
C--particles
IDP(4+I) = 400+2*III+12*(I-1)
IDP(6+I) = 400+2*JJJ+12*(I-1)
IDP(8+I) = 400+2*KKK+12*(I-1)
C--MSSM couplings
DO 86 J=1,2
B(J,I ) = AFC(J,2*III,I,L1)
A(J,I+2) = AFC(J,2*JJJ,I,L1)
86 B(J,I+4) = AFC(J,2*KKK,I,L1)
C--colour flows
NDIA = 6
NCFL(1) = 1
DO 87 I=1,6
87 IFLOW(I) = 1
SPNCFC(1,1,1) = TWO/THREE
C--ubar +ve chargino
ELSEIF(IK.GE.454.AND.IK.LE.455.AND.MOD(IJ,2).EQ.0) THEN
C--ensure u type first
IF(MOD(IDHW(LHEP),2).NE.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--RPV indices
III = IDHW(LHEP)/2
JJJ = (IDHW(MHEP)+1)/2
KKK = (IJ-6)/2
L1 = IK-453
C--types of diagram
DRTYPE(1) = 27
DRTYPE(2) = 27
DRTYPE(3) = 28
DRTYPE(4) = 28
C--RPV couplings
DO 88 I=1,2
A(1,I ) = QMIXSS(2*KKK-1,2,I)*LAMDA3(III,JJJ,KKK)
A(2,I ) = ZERO
B(1,I+2) = QMIXSS(2*III-1,2,I)*LAMDA3(KKK,III,JJJ)
B(2,I+2) = ZERO
C--particles
IDP(4+I) = 399+2*KKK+12*(I-1)
IDP(6+I) = 399+2*III+12*(I-1)
C--MSSM couplings
DO 88 J=1,2
B(J,I ) = AFC(O(J),2*KKK-1,I,L1)
88 A(J,I+2) = AFC(O(J),2*III-1,I,L1)
C--colour flows
NDIA = 4
NCFL(1) = 1
DO 89 I=1,4
89 IFLOW(I) = 1
SPNCFC(1,1,1) = TWO/THREE
C--u -ve chargino
ELSEIF(IK.GE.456.AND.IK.LE.457.AND.MOD(IJ,2).EQ.0) THEN
C--ensure u type first
IF(MOD(IDHW(LHEP),2).NE.0) THEN
ID = LHEP
LHEP = MHEP
MHEP = ID
ENDIF
C--RPV indices
III = (IDHW(LHEP)-6)/2
JJJ = (IDHW(MHEP)-5)/2
KKK = IJ/2
L1 = IK-455
C--types of diagram
DRTYPE(1) = 30
DRTYPE(2) = 30
DRTYPE(3) = 31
DRTYPE(4) = 31
C--RPV couplings
DO 90 I=1,2
A(1,I ) = ZERO
A(2,I ) = QMIXSS(2*KKK-1,2,I)*LAMDA3(III,JJJ,KKK)
B(1,I+2) = ZERO
B(2,I+2) = QMIXSS(2*III-1,2,I)*LAMDA3(KKK,III,JJJ)
C--particles
IDP(4+I) = 399+2*KKK+12*(I-1)
IDP(6+I) = 399+2*III+12*(I-1)
C--MSSM couplings
DO 90 J=1,2
B(J,I ) = AFC(J,2*KKK-1,I,L1)
90 A(J,I+2) = AFC(J,2*III-1,I,L1)
C--colour flows
NDIA = 4
NCFL(1) = 1
DO 91 I=1,4
91 IFLOW(I) = 1
SPNCFC(1,1,1) = TWO/THREE
C--d d --> d d
ELSEIF(IDPDG(IK).GT.0.AND.IDPDG(IK).GT.0.AND.
& MOD(IK,2).EQ.1.AND.MOD(IJ,2).EQ.1) THEN
C--can't produce unstable quark on hadronisation timescale
RETURN
C--dbar dbar --> dbar dbar
ELSEIF(IDPDG(IK).LT.0.AND.IDPDG(IJ).LT.0.AND.
& MOD(IJ,2).EQ.1.AND.MOD(IK,2).EQ.1) THEN
C--can't produce unstable quark on hadronisation timescale
RETURN
C--u d --> u d
ELSEIF(IDPDG(IK).GT.0.AND.IDPDG(IJ).GT.0.AND.
& ((MOD(IJ,2).EQ.1.AND.MOD(IK,2).EQ.0).OR.
& (MOD(IJ,2).EQ.0.AND.MOD(IK,2).EQ.1))) THEN
C--ensure u first (incoming)
IF(MOD(IDHW(LHEP),2).EQ.1) THEN
ID = MHEP
MHEP = LHEP
LHEP = ID
ENDIF
C--ensure u first (outgoing)
IF(MOD(IK,2).EQ.1) THEN
ID = IJ
IJ = IK
IK = ID
ID = JHEP
JHEP = KHEP
KHEP = ID
ENDIF
C--can't produce unstable quark on hadronisation timescale
IF(IK.NE.6) RETURN
C--RPV indices
III = IDHW(LHEP)/2
KKK = (IDHW(MHEP)+1)/2
LLL = IK/2
MMM = (IJ+1)/2
NDIA = 0
DO 92 JJJ=1,3
IF(ABS(LAMDA3(III,JJJ,KKK)*LAMDA3(LLL,JJJ,MMM)).LT.EPS)
& GOTO 92
DO 93 J=1,2
IFLOW(NDIA+J) = 1
IDP(4+NDIA+J) = 399+2*JJJ+12*(J-1)
A(1,NDIA+J) = LAMDA3(III,JJJ,KKK)*QMIXSS(2*JJJ-1,2,J)
A(2,NDIA+J) = ZERO
B(1,NDIA+J) = ZERO
B(2,NDIA+J) = LAMDA3(LLL,JJJ,MMM)*QMIXSS(2*JJJ-1,2,J)
93 DRTYPE(NDIA+J) = 33
NDIA = NDIA+2
92 CONTINUE
NCFL(1) = 1
SPNCFC(1,1,1) = ONE/THREE
C--ubar dbar --> ubar dbar
ELSEIF(IDPDG(IK).LT.0.AND.IDPDG(IJ).LT.0.AND.
& ((MOD(IJ,2).EQ.1.AND.MOD(IK,2).EQ.0).OR.
& (MOD(IJ,2).EQ.0.AND.MOD(IK,2).EQ.1))) THEN
C--ensure u first (incoming)
IF(MOD(IDHW(LHEP),2).EQ.1) THEN
ID = MHEP
MHEP = LHEP
LHEP = ID
ENDIF
C--ensure u first (outgoing)
IF(MOD(IK,2).EQ.1) THEN
ID = IJ
IJ = IK
IK = ID
ID = JHEP
JHEP = KHEP
KHEP = ID
ENDIF
C--can't produce unstable quark on hadronisation timescale
IF(IK.NE.6) RETURN
C--RPV indices
III = (IDHW(LHEP)-6)/2
KKK = (IDHW(MHEP)-5)/2
LLL = (IK-6)/2
MMM = (IJ-5)/2
NDIA = 0
DO 94 JJJ=1,3
IF(ABS(LAMDA3(III,JJJ,KKK)*LAMDA3(LLL,JJJ,MMM)).LT.EPS)
& GOTO 94
DO 95 J=1,2
IFLOW(NDIA+J) = 1
IDP(4+NDIA+J) = 399+2*JJJ+12*(J-1)
A(1,NDIA+J) = ZERO
A(2,NDIA+J) = LAMDA3(III,JJJ,KKK)*QMIXSS(2*JJJ-1,2,J)
B(1,NDIA+J) = LAMDA3(LLL,JJJ,MMM)*QMIXSS(2*JJJ-1,2,J)
B(2,NDIA+J) = ZERO
95 DRTYPE(NDIA+J) = 34
NDIA = NDIA+2
94 CONTINUE
NCFL(1) = 1
SPNCFC(1,1,1) = ONE/THREE
C--unrecognized process
ELSE
CALL HWWARN('HWHSPN',506)
ENDIF
C--unrecognized process
ELSE
CALL HWWARN('HWHSPN',507)
ENDIF
C--copy the momenta into the internal array
CALL HWVEQU(5,PHEP(1,LHEP),P(1,1))
CALL HWVEQU(5,PHEP(1,MHEP),P(1,2))
CALL HWVEQU(5,PHEP(1,KHEP),P(1,3))
CALL HWVEQU(5,PHEP(1,JHEP),P(1,4))
C--now compute the masses etc for the diagrams
IDP(1) = IDHW(LHEP)
IDP(2) = IDHW(MHEP)
IDP(3) = IDHW(KHEP)
IDP(4) = IDHW(JHEP)
DO 104 I=1,4
MA (I) = P(5,I)
104 MA2(I) = SIGN(MA(I)**2,MA(I))
DO 105 I=1,NDIA
MR(I) = RMASS(IDP(4+I))
MS(I) = MR(I)**2
IF(IDP(I+4).EQ.200) THEN
MWD(I) = RMASS(200)*GAMZ
ELSEIF(IDP(I+4).EQ.198.OR.IDP(I+4).EQ.199) THEN
MWD(I) = RMASS(198)*GAMW
ELSEIF(IDP(I+4).EQ.59.OR.IDP(I+4).EQ.13.OR.
& IDP(I+4).LE.5.OR.(IDP(I+4).GE.7.AND.IDP(I+4).LE.11)) THEN
MR(I) = ZERO
MS(I) = ZERO
MWD(I) = ZERO
ELSE
MWD(I) = MR(I)*HBAR/RLTIM(IDP(I+4))
ENDIF
105 CONTINUE
C--set up the mandelstam variables
SH = TWO*HWULDO(P(1,1),P(1,2))
CALL HWVSCA(4,-ONE,P(1,3),PLAB(1,2))
CALL HWVSUM(5,P(1,1),PLAB(1,2),PLAB(1,1))
TH = P(5,3)**2-TWO*HWULDO(P(1,1),P(1,3))
UH = P(5,4)**2-TWO*HWULDO(P(1,1),P(1,4))
C--copy the momenta into the common block for spinor computation
DO 106 I=1,4
IF(IDP(I).LT.400.AND.(IDP(I).NE.6.AND.IDP(I).NE.12
& .AND.IDP(I).NE.125.AND.IDP(I).NE.131)) THEN
CALL HWVEQU(5,PREF,PLAB(1,I+4))
C--all other particles
ELSE
PP = SQRT(HWVDOT(3,P(1,I),P(1,I)))
CALL HWVSCA(3,ONE/PP,P(1,I),N)
PLAB(4,I+4) = HALF*(P(4,I)-PP)
PP = HALF*(PP-P(5,I)-PP**2/(P(5,I)+P(4,I)))
CALL HWVSCA(3,PP,N,PLAB(1,I+4))
CALL HWUMAS(PLAB(1,I+4))
PP = HWVDOT(3,PLAB(1,I+4),PLAB(1,I+4))
C--fix to avoid problems if approx massless due to energy
IF(PP.LT.EPS) CALL HWVEQU(5,PREF,PLAB(1,I+4))
ENDIF
C--now the massless vectors
PP = HALF*MA2(I)/HWULDO(PLAB(1,I+4),P(1,I))
DO 107 J=1,4
107 PLAB(J,I) = P(J,I)-PP*PLAB(J,I+4)
106 CALL HWUMAS(PLAB(1,I))
C--change order of momenta for call to HE code
DO 108 I=1,4
PM(1,I) = P(3,I)
PM(2,I) = P(1,I)
PM(3,I) = P(2,I)
PM(4,I) = P(4,I)
108 PM(5,I) = P(5,I)
DO 109 I=1,8
PCM(1,I)=PLAB(3,I)
PCM(2,I)=PLAB(1,I)
PCM(3,I)=PLAB(2,I)
PCM(4,I)=PLAB(4,I)
109 PCM(5,I)=PLAB(5,I)
C--compute the S functions
CALL HWHEW2(8,PCM(1,1),S(1,1,2),S(1,1,1),D)
DO 110 I=1,8
DO 110 J=1,8
S(I,J,2) = -S(I,J,2)
110 D(I,J) = TWO*D(I,J)
C--compute the F functions
CALL HWH2F1(8,F3 ,7,PM(1,3), MA(3))
CALL HWH2F2(8,F4 ,8,PM(1,4),-MA(4))
CALL HWH2F1(8,F4M,8,PM(1,4), MA(4))
CALL HWH2F2(8,F3M,7,PM(1,3),-MA(3))
C--t and u channel functions
C--first the t channel ones
CALL HWVSCA(4,-ONE,PM(1,4),PTMP)
CALL HWVSUM(4,PM(1,2),PTMP,PTMP)
CALL HWUMAS(PTMP)
CALL HWH2F3(8,FTP,PTMP, MR(1))
CALL HWH2F3(8,FTM,PTMP,-MR(1))
C--then the u-channel ones
CALL HWVSCA(4,-ONE,PM(1,4),PTMP)
CALL HWVSUM(4,PM(1,1),PTMP,PTMP)
CALL HWUMAS(PTMP)
CALL HWH2F3(8,FUP,PTMP, MR(1))
CALL HWH2F3(8,FUM,PTMP,-MR(1))
C--function for t-channel scalar exchange
CALL HWVSUM(4,PM(1,4),PM(1,4),PTMP)
CALL HWUMAS(PTMP)
CALL HWH2F1(8,FST,2,PTMP,ZERO)
C--compute the prefactor for all diagrams
PRE = HWULDO(PCM(1,7),PM(1,3))*HWULDO(PCM(1,8),PM(1,4))
PRE = ONE/SQRT(PRE)
C--zero the matrix element
DO 200 P1=1,2
DO 200 P2=1,2
DO 200 P3=1,2
DO 200 P4=1,2
DO 200 I=1,NCFL(1)
200 ME(P1,P2,P3,P4,I) = (0.0D0,0.0D0)
C--now call the subroutines to compute the individual diagrams
DO 210 I=1,NDIA
C--s-channel vector boson exchange diagram (f fbar to fermion fermion)
IF(DRTYPE(I).EQ.1) THEN
CALL HWHS01(I,MED)
C--t-channel sfermion exchange diagram (f fbar to fermion fermion)
ELSEIF(DRTYPE(I).EQ.2) THEN
CALL HWHS02(I,MED)
C--u-channel sfermion exchange diagram(f fbar to fermion fermion)
ELSEIF(DRTYPE(I).EQ.3) THEN
CALL HWHS03(I,MED)
C--s-channel vector boson (f fbar to fermion antifermion)
ELSEIF(DRTYPE(I).EQ.4) THEN
CALL HWHS04(I,MED)
C--t-channel fermion exchange (g g to fermion antifermion)
ELSEIF(DRTYPE(I).EQ.5) THEN
CALL HWHS05(I,MED)
C--u-channel fermion exchange (g g to fermion antifermion)
ELSEIF(DRTYPE(I).EQ.6) THEN
CALL HWHS06(I,MED)
C--s-channel gluon exchange (g g to fermion antifermion)
ELSEIF(DRTYPE(I).EQ.7) THEN
CALL HWHS07(I,MED)
C--t-channel sfermion exchange (g q to fermion sfermion)
ELSEIF(DRTYPE(I).EQ.8) THEN
CALL HWHS08(I,MED)
C--t-channel sfermion exchange (g qbar to fermion antisfermion)
ELSEIF(DRTYPE(I).EQ.9) THEN
CALL HWHS09(I,MED)
C--s-channel quark exchange (g q to fermion antisfermion)
ELSEIF(DRTYPE(I).EQ.10) THEN
CALL HWHS10(I,MED)
C--s-channel antiquark exchange (g qbar to fermion antisfermion)
ELSEIF(DRTYPE(I).EQ.11) THEN
CALL HWHS11(I,MED)
C--u-channel gluino exchange (g q to fermion antisfermion)
ELSEIF(DRTYPE(I).EQ.12) THEN
CALL HWHS12(I,MED)
C--u-channel gluino exchange (g qbar to fermion antisfermion)
ELSEIF(DRTYPE(I).EQ.13) THEN
CALL HWHS13(I,MED)
C--t-channel fermion exchange (g g to fermion fermion)
ELSEIF(DRTYPE(I).EQ.14) THEN
CALL HWHS14(I,MED)
C--u-channel fermion exchange (g g to fermion fermion)
ELSEIF(DRTYPE(I).EQ.15) THEN
CALL HWHS15(I,MED)
C--s-channel gluon exchange (g g to fermion fermion)
ELSEIF(DRTYPE(I).EQ.16) THEN
CALL HWHS16(I,MED)
C--t-channel gauge boson exchange (fermion fermion)
ELSEIF(DRTYPE(I).EQ.17) THEN
CALL HWHS17(I,MED)
C--t-channel gauge boson exchange (fermion antifermion)
ELSEIF(DRTYPE(I).EQ.18) THEN
CALL HWHS18(I,MED)
C--t-channel gauge boson exchange (antifermion fermion)
ELSEIF(DRTYPE(I).EQ.19) THEN
CALL HWHS19(I,MED)
C--t-channel gauge boson exchange (antifermion antifermion)
ELSEIF(DRTYPE(I).EQ.20) THEN
CALL HWHS20(I,MED)
C--s-channel scalar exchange (f fbar --> f fbar)
ELSEIF(DRTYPE(I).EQ.21) THEN
CALL HWHS21(I,MED)
C--t-channel scalar exchange (f fbar --> f fbar)
ELSEIF(DRTYPE(I).EQ.22) THEN
CALL HWHS22(I,MED)
C--u-channel scalar exchange (f fbar --> f fbar)
ELSEIF(DRTYPE(I).EQ.23) THEN
CALL HWHS23(I,MED)
C--s-channel scalar exchange (fbar f --> f f)
ELSEIF(DRTYPE(I).EQ.24) THEN
CALL HWHS24(I,MED)
C--t-channel scalar exchange (fbar f --> f f)
ELSEIF(DRTYPE(I).EQ.25) THEN
CALL HWHS25(I,MED)
C--u-channel scalar exchange (fbar f --> f f)
ELSEIF(DRTYPE(I).EQ.26) THEN
CALL HWHS26(I,MED)
C--s-channel scalar exchange (f f --> f fbar)
ELSEIF(DRTYPE(I).EQ.27) THEN
CALL HWHS27(I,MED)
C--t-channel scalar exchange (f f --> f fbar)
ELSEIF(DRTYPE(I).EQ.28) THEN
CALL HWHS28(I,MED)
C--u-channel scalar exchange (f f --> f fbar)
ELSEIF(DRTYPE(I).EQ.29) THEN
CALL HWHS29(I,MED)
C--s-channel scalar exchange (fbar fbar --> f f)
ELSEIF(DRTYPE(I).EQ.30) THEN
CALL HWHS30(I,MED)
C--t-channel scalar exchange (fbar fbar --> f f)
ELSEIF(DRTYPE(I).EQ.31) THEN
CALL HWHS31(I,MED)
C--u-channel scalar exchange (fbar fbar --> f f)
ELSEIF(DRTYPE(I).EQ.32) THEN
CALL HWHS32(I,MED)
C--s-channel scalar exchange (f f --> f f)
ELSEIF(DRTYPE(I).EQ.33) THEN
CALL HWHS33(I,MED)
C--s-channel scalar exchange (fbar fbar --> fbar fbar)
ELSEIF(DRTYPE(I).EQ.34) THEN
CALL HWHS34(I,MED)
C--error not known
ELSE
CALL HWWARN('HWHSPN',508)
ENDIF
C--add up the matrix elements
DO 210 P1=1,2
DO 210 P2=1,2
DO 210 P3=1,2
DO 210 P4=1,2
210 ME(P1,P2,P3,P4,IFLOW(I)) = ME(P1,P2,P3,P4,IFLOW(I))
& +MED(P1,P2,P3,P4)
C--preform the final normalisation
DO 215 P1=1,2
DO 215 P2=1,2
DO 215 P3=1,2
DO 215 P4=1,2
DO 215 I=1,NCFL(1)
215 ME(P1,P2,P3,P4,I) = PRE*ME(P1,P2,P3,P4,I)
C--now enter the matrix element in the spin common block
NSPN = 1
IDSPN(1) = ICM
ISNHEP(ICM) = 1
JMOSPN(1) = 0
JDASPN(1,1) = 2
JDASPN(2,1) = 3
DECSPN(1) = .FALSE.
DO 225 P1=1,2
DO 225 P2=1,2
DO 225 P3=1,2
DO 225 P4=1,2
DO 225 I=1,NCFL(1)
225 MESPN(P1,P2,P3,P4,I,1) = ME(P1,P2,P3,P4,I)
C--now enter the daughter particles
NSPN = NSPN+2
IDSPN(2) = KHEP
ISNHEP(KHEP) = 2
IDSPN(3) = JHEP
ISNHEP(JHEP) = 3
JMOSPN(2) = 1
JMOSPN(3) = 1
C--spin density matrices for daughter particles
DO 230 P1=1,2
DO 230 P2=1,2
DO 230 I=1,3
RHOSPN(1,1,I) = HALF
RHOSPN(1,2,I) = ZERO
RHOSPN(2,1,I) = ZERO
230 RHOSPN(2,2,I) = HALF
DECSPN(2) = .FALSE.
DECSPN(3) = .FALSE.
C--select the colour flow if needed
IF(SPCOPT.EQ.2.AND.NCFL(1).NE.1) THEN
WGT = ZERO
C--assume no incoming polarization, no processes with more than one
C--colour flow in e+e-
DO 335 I =1,NCFL(1)
WGTB(I) = ZERO
DO 335 P1=1,2
DO 335 P2=1,2
DO 335 P3=1,2
DO 335 P4=1,2
WGTB(I) = WGTB(I)+SPNCFC(I,I,1)*DREAL(
& MESPN(P1,P2,P3,P4,I,1)*DCONJG(MESPN(P1,P2,P3,P4,I,1)))
DO 335 J =1,NCFL(1)
335 WGT = WGT+SPNCFC(I,J,1)*DREAL(
& MESPN(P1,P2,P3,P4,I,1)*DCONJG(MESPN(P1,P2,P3,P4,J,1)))
WGTC = ZERO
DO 340 I=1,NCFL(1)
340 WGTC = WGTC+WGTB(I)
WGTC = WGT/WGTC
DO 345 I=1,NCFL(1)
345 WGTB(I) = WGTB(I)*WGTC
WGTC = WGT*HWRGEN(0)
DO 350 I=1,NCFL(1)
IF(WGTB(I).GE.WGTC) THEN
NCFL(1) = I
RETURN
ENDIF
350 WGTC =WGTC-WGTB(I)
ENDIF
END
CDECK ID>, HWHS01.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS01(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f fbar --> gauge boson --> fermion fermion
C This diagram 1 from DAMTP-2001-83 with opposite sign of P4
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = -ONE/(SH-MS(ID)+ZI*MWD(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
IF(P1.EQ.P2) THEN
ME(P1,P2,P3,P4) = PRE*A(P1,ID)*(
& B(O(P1),ID)*F3(O(P3), P1 ,1)*F4( P1 ,P4,2)
& +B( P1 ,ID)*F3(O(P3),O(P1),2)*F4(O(P1),P4,1))
ELSE
ME(P1,P2,P3,P4) = ZERO
ENDIF
10 CONTINUE
END
CDECK ID>, HWHS02.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS02(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f fbar ---> fermion fermion via t-channel scalar exchange
C This diagram 2 from DAMTP-2001-83 with opposite sign of P4
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = -HALF/(TH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*A(P1,ID)*B(O(P2),ID)*
& F3(O(P3),P1,1)*F4(P2,P4,2)
END
CDECK ID>, HWHS03.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS03(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f fbar ---> fermion fermion via u-channel scalar exchange
C This diagram 3 from DAMTP-2001-83 with opposite sign of P4
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,
& F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF/(UH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*A(P1,ID)*B(O(P2),ID)*
& F4M(O(P4),P1,1)*F3M(P2,P3,2)
END
CDECK ID>, HWHS04.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS04(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f fbar --> gauge boson --> fermion antifermion
C This diagram 1 from DAMTP-2001-83
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = -ONE/(SH-MS(ID)+ZI*MWD(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
IF(P1.EQ.P2) THEN
ME(P1,P2,P3,P4) = PRE*A(P1,ID)*(
& B(O(P1),ID)*F3(O(P3), P1 ,1)*F4( P1 ,O(P4),2)
& +B( P1 ,ID)*F3(O(P3),O(P1),2)*F4(O(P1),O(P4),1))
ELSE
ME(P1,P2,P3,P4) = (0.0D0,0.0D0)
ENDIF
10 CONTINUE
END
CDECK ID>, HWHS05.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS05(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section gluon gluon --> fermion antifermion (1st colour flow)
C N.B. a gauge choice has been made to simplify the triple gluon vertex
C This diagram 4 from DAMTP-2001-83 with the gauge choice L1=2 L2=1
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE =+ONE/SH/(TH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*(
& F3(O(P3), P1 ,2)*( FTP( P1 , P2 ,1,1)*F4( P2 ,O(P4),2)
& +FTP( P1 ,O(P2),1,2)*F4(O(P2),O(P4),1))
& +F3(O(P3),O(P1),1)*( FTP(O(P1), P2 ,2,1)*F4( P2 ,O(P4),2)
& +FTP(O(P1),O(P2),2,2)*F4(O(P2),O(P4),1)))
END
CDECK ID>, HWHS06.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS06(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section gluon gluon --> fermion antifermion (2st colour flow)
C N.B. a gauge choice has been made to simplify the triple gluon vertex
C This diagram 5 from DAMTP-2001-83 with the gauge choice L1=2 L2=1
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE =-ONE/SH/(UH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*(
& F3(O(P3), P2 ,1)*( FUP( P2 , P1 ,2,2)*F4( P1 ,O(P4),1)
& +FUP( P2 ,O(P1),2,1)*F4(O(P1),O(P4),2))
& +F3(O(P3),O(P2),2)*( FUP(O(P2), P1 ,1,2)*F4( P1 ,O(P4),1)
& +FUP(O(P2),O(P1),1,1)*F4(O(P1),O(P4),2)))
END
CDECK ID>, HWHS07.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS07(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section gluon gluon --> fermion antifermion (triple gluon piece)
C N.B. a gauge choice has been made to simplify the triple gluon vertex
C This diagram 6 from DAMTP-2001-83 with the gauge choice L1=2 L2=1
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI
& ,F3M(2,2,8),F4M(2,2,8),MET,FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER I,P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF/SH**2
DO 10 P3=1,2
DO 10 P4=1,2
MET = (0.0D0,0.0D0)
DO 5 I=1,2
5 MET=MET+F3(O(P3),I,1)*F4(I,O(P4),1)-F3(O(P3),I,2)*F4(I,O(P4),2)
DO 10 P1=1,2
DO 10 P2=1,2
IF(P1.EQ.P2) THEN
ME(P1,P2,P3,P4) = PRE*S(1,2,P1)*S(1,2,O(P1))*MET
ELSE
ME(P1,P2,P3,P4) = (0.0D0,0.0D0)
ENDIF
10 CONTINUE
END
CDECK ID>, HWHS08.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS08(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section quark gluon --> fermion sfermion
C This diagram 7 from DAMTP-2001-83 with the gauge choice L2=1
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH,HWULDO,XMASS,PLAB,PRW,PCM
INTEGER P1,P2,P3,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10)
EXTERNAL HWULDO
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF*SQRT(HWULDO(PCM(1,8),PCM(1,4)))/SQRT(TWO)/
& SQRT(HWULDO(PCM(1,1),PCM(1,2)))/
& (TH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
ME(P1,P2,P3,2) = ZERO
10 ME(P1,P2,P3,1) = A(P1,ID)*PRE*FST(P2,P2,1)*F3(O(P3), P1,1)
END
CDECK ID>, HWHS09.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS09(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section antiquark gluon --> fermion antisfermion
C This diagram 10 from DAMTP-2001-83 with the gauge choice L2=1
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH,HWULDO,XMASS,PLAB,PRW,PCM
INTEGER P1,P2,P3,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10)
EXTERNAL HWULDO
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF*SQRT(HWULDO(PCM(1,8),PCM(1,4)))/SQRT(TWO)/
& SQRT(HWULDO(PCM(1,1),PCM(1,2)))/
& (TH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
ME(P1,P2,P3,2) = ZERO
10 ME(P1,P2,P3,1) = A(O(P1),ID)*PRE*FST(P2,P2,1)*F3M(P1,P3,1)
END
CDECK ID>, HWHS10.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS10(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section quark gluon --> fermion antisfermion (s-channel quark)
C This is diagram 8 from DAMTP-2001-83 with the gauge choice L2=1
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH,HWULDO,XMASS,PLAB,PRW,PCM
INTEGER P1,P2,P3,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10)
EXTERNAL HWULDO
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = SQRT(HWULDO(PCM(1,8),PCM(1,4)))/SQRT(TWO)/
& SQRT(HWULDO(PCM(1,1),PCM(1,2)))/SH
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
IF(P1.EQ.P2) THEN
ME(p1,p2,p3,1) = PRE*A( P2 ,ID)*F3(O(P3), P2 ,1)*S(1,2,P2)*
& S(1,1,O(P2))
ELSE
ME(P1,P2,P3,1) = PRE*
& A(O(P2),ID)*( F3(O(P3),O(P2),1)*S(1,1,O(P2))
& +F3(O(P3),O(P2),2)*S(2,1,O(P2)))*S(2,1,P2)
ENDIF
10 ME(P1,P2,P3,2) = ZERO
END
CDECK ID>, HWHS11.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS11(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section quark gluon --> fermion antisfermion (s-channel quark)
C This is diagram 11 from DAMTP-2001-83 with the gauge choice L2=1
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH,HWULDO,XMASS,PLAB,PRW,PCM
INTEGER P1,P2,P3,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10)
EXTERNAL HWULDO
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = SQRT(HWULDO(PCM(1,8),PCM(1,4)))/SQRT(TWO)/
& SQRT(HWULDO(PCM(1,1),PCM(1,2)))/SH
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
IF(P1.EQ.P2) THEN
ME(P1,P2,P3,1) = PRE*A(O(P2),ID)*S(1,2,P1)*
& (S(1,1,O(P2))*F3M(P2,P3,1)+S(1,2,O(P2))*F3M(P2,P3,2))
ELSE
ME(P1,P2,P3,1)=PRE*A(P2,ID)*S(1,1,P1)*S(2,1,P2)*F3M(O(P2),P3,1)
ENDIF
10 ME(P1,P2,P3,2) = ZERO
END
CDECK ID>, HWHS12.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS12(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section quark gluon --> fermion antisfermion (s-channel quark)
C This is diagram 9 from DAMTP-2001-83 with the gauge choice L2=1
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH,HWULDO,XMASS,PLAB,PRW,PCM
INTEGER P1,P2,P3,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10)
EXTERNAL HWULDO
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE =-SQRT(HWULDO(PCM(1,8),PCM(1,4)))/SQRT(TWO)/
& SQRT(HWULDO(PCM(1,1),PCM(1,2)))/(UH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
ME(P1,P2,P3,1) = PRE*A(P1,ID)*(
& F3(O(P3), P2 ,1)*FUP( P2 ,P1, 2,1)
& +F3(O(P3),O(P2), 2)*FUP(O(P2),P1,1,1))
10 ME(P1,P2,P3,2) = ZERO
END
CDECK ID>, HWHS13.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS13(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section quark gluon --> fermion antisfermion (s-channel quark)
C This is diagram 12 from DAMTP-2001-83 with the gauge choice L2=1
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH,HWULDO,XMASS,PLAB,PRW,PCM
INTEGER P1,P2,P3,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10)
EXTERNAL HWULDO
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE =-SQRT(HWULDO(PCM(1,8),PCM(1,4)))/SQRT(TWO)/
& SQRT(HWULDO(PCM(1,1),PCM(1,2)))/(UH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
ME(P1,P2,P3,1) = PRE*A(O(P1),ID)*(
& FUM(P1, P2 ,1,1)*F3M( P2 ,P3, 2)
& +FUM(P1,O(P2),1, 2)*F3M(O(P2),P3,1))
10 ME(P1,P2,P3,2) = ZERO
END
CDECK ID>, HWHS14.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS14(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section gluon gluon --> fermion antifermion (1st colour flow)
C N.B. a gauge choice has been made to simplify the triple gluon vertex
C This diagram 4 from DAMTP-2001-83 with opposite helicity for 4
C and gauge choice L1=2 L2=1
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI,
& F3M(2,2,8),F4M(2,2,8),FST(2,2,8),FTP(2,2,8,8),FTM(2,2,8,8),
& FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE =+ONE/(TH-MS(ID))/SH
C--matrix element
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*(
& F3(O(P3), P1 ,2)*( FTP( P1 , P2 , 1,1)*F4( P2 ,P4,2)
& +FTP( P1 ,O(P2), 1,2)*F4(O(P2),P4,1))
& +F3(O(P3),O(P1),1)*( FTP(O(P1), P2 ,2,1)*F4( P2 ,P4,2)
& +FTP(O(P1),O(P2),2,2)*F4(O(P2),P4,1)))
END
CDECK ID>, HWHS15.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS15(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section gluon gluon --> fermion antifermion (2st colour flow)
C N.B. a gauge choice has been made to simplify the triple gluon vertex
C This diagram 5 from DAMTP-2001-83 with opposite helicity for 4
C and gauge choice L1=2 L2=1
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI,
& F3M(2,2,8),F4M(2,2,8),FST(2,2,8),FTP(2,2,8,8),FTM(2,2,8,8),
& FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST, A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE =-ONE/(UH-MS(ID))/SH
C--matrix element
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*(
& F3(O(P3), P2 ,1)*( FUP( P2 , P1 ,2,2)*F4( P1 ,P4,1)
& +FUP( P2 ,O(P1),2,1)*F4(O(P1),P4,2))
&+F3(O(P3),O(P2),2)*( FUP(O(P2), P1 ,1,2)*F4( P1 ,P4,1)
& +FUP(O(P2),O(P1),1,1)*F4(O(P1),P4,2)))
END
CDECK ID>, HWHS16.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS16(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section gluon gluon --> fermion antifermion (triple gluon piece)
C N.B. a gauge choice has been made to simplify the triple gluon vertex
C This diagram 6 from DAMTP-2001-83 with opposite helicity for 4
C and gauge choice L1=2 L2=1
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI
& ,F3M(2,2,8),F4M(2,2,8),MET,FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER I,P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF/SH**2
C--matrix element
DO 10 P3=1,2
DO 10 P4=1,2
MET = (0.0D0,0.0D0)
DO 5 I=1,2
5 MET=MET+F3(O(P3),I,1)*F4(I,P4,1)-F3(O(P3),I,2)*F4(I,P4,2)
DO 10 P1=1,2
DO 10 P2=1,2
IF(P1.EQ.P2) THEN
ME(P1,P2,P3,P4) = PRE*MET*S(1,2,P1)*S(1,2,O(P1))
ELSE
ME(P1,P2,P3,P4) = (0.0D0,0.0D0)
ENDIF
10 CONTINUE
END
CDECK ID>, HWHS17.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS17(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section fermion fermion --> fermion fermion (t-channel boson)
C This diagram 13 from DAMTP-2001-83
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI,
& F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8),DL(2,2)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH,HWULDO,XMASS,PLAB,PRW,PCM
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10)
EXTERNAL HWULDO
SAVE O,DL
DATA O/2,1/
DATA DL/(1.0,0.0D0),(0.0D0,0.0D0),(0.0D0,0.0D0),(1.0D0,0.0D0)/
C--compute the propagator factor
PRE = SQRT(TWO*HWULDO(PCM(1,8),PCM(1,4)))/(TH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
IF(P2.EQ.P4) THEN
ME(P1,P2,P3,P4) = PRE*A(P1,ID)*B(P2,ID)*
& ( DL(P1,O(P2))*F3(O(P3), P2 ,2)*S(4,1, P2 )
& +DL(P1, P2 )*F3(O(P3),O(P2),4)*S(2,1,O(P2)))
ELSE
ME(P1,P2,P3,P4) = (0.0D0,0.0D0)
ENDIF
10 CONTINUE
END
CDECK ID>, HWHS18.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS18(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section fermion antifermion --> fermion antifermion (t-channel boson)
C This diagram 14 from DAMTP-2001-83
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI,
& F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8),DL(2,2)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH,HWULDO,XMASS,PLAB,PRW,PCM
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10)
EXTERNAL HWULDO
SAVE O,DL
DATA O/2,1/
DATA DL/(1.0,0.0D0),(0.0D0,0.0D0),(0.0D0,0.0D0),(1.0D0,0.0D0)/
C--compute the propagator factor
PRE = SQRT(TWO*HWULDO(PCM(1,8),PCM(1,4)))/(TH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
IF(P2.EQ.P4) THEN
ME(P1,P2,P3,P4) = PRE*A(P1,ID)*B(P2,ID)*
& ( DL(P1,O(P2))*F3(O(P3), P2 ,4)*S(2,1, P2 )
& +DL(P1, P2 )*F3(O(P3),O(P2),2)*S(4,1,O(P2)))
ELSE
ME(P1,P2,P3,P4) = (0.0D0,0.0D0)
ENDIF
10 CONTINUE
END
CDECK ID>, HWHS19.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS19(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section antifermion fermion --> antifermion fermion (t-channel boson)
C This diagram 15 from DAMTP-2001-83
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI,
& F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8),DL(2,2)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH,HWULDO,XMASS,PLAB,PRW,PCM
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10)
EXTERNAL HWULDO
SAVE O,DL
DATA O/2,1/
DATA DL/(1.0,0.0D0),(0.0D0,0.0D0),(0.0D0,0.0D0),(1.0D0,0.0D0)/
C--compute the propagator factor
PRE = SQRT(TWO*HWULDO(PCM(1,8),PCM(1,4)))/(TH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
IF(P2.EQ.P4) THEN
ME(P1,P2,P3,P4) = PRE*A(P1,ID)*B(P2,ID)*
& ( DL(P1,O(P2))*S(1,2, P1 )*F3M( P2 ,O(P3),4)
& +DL(P1, P2 )*S(1,4, P1 )*F3M(O(P2),O(P3),2))
ELSE
ME(P1,P2,P3,P4) = (0.0D0,0.0D0)
ENDIF
10 CONTINUE
END
CDECK ID>, HWHS20.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS20(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section antifermion fermion --> antifermion fermion (t-channel boson)
C This diagram 16 from DAMTP-2001-83
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE,ZI,
& F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8),DL(2,2)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH,HWULDO,XMASS,PLAB,PRW,PCM
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
PARAMETER(ZI=(0.0D0,1.0D0))
COMMON/HWHEWS/S(8,8,2),D(8,8)
COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10)
EXTERNAL HWULDO
SAVE O,DL
DATA O/2,1/
DATA DL/(1.0,0.0D0),(0.0D0,0.0D0),(0.0D0,0.0D0),(1.0D0,0.0D0)/
C--compute the propagator factor
PRE = SQRT(TWO*HWULDO(PCM(1,8),PCM(1,4)))/(TH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
IF(P2.EQ.P4) THEN
ME(P1,P2,P3,P4) = PRE*A(P1,ID)*B(P2,ID)*
& ( DL(P1,O(P2))*S(1,4, P1 )*F3M( P2 ,O(P3),2)
& +DL(P1, P2 )*S(1,2, P1 )*F3M(O(P2),O(P3),4))
ELSE
ME(P1,P2,P3,P4) = (0.0D0,0.0D0)
ENDIF
10 CONTINUE
END
CDECK ID>, HWHS21.
*CMZ :- -02/10/01 10:17:10 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS21(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f fbar ---> f fbar via s-channel scalar exchange
C This is diagram 1 from RPV notes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),ZI,
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
PARAMETER(ZI=(0.0D0,1.0D0))
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF/(SH-MS(ID)+ZI*MWD(ID))
DO 10 P1=1,2
DO 10 P3=1,2
DO 10 P4=1,2
ME(P1, P1 ,P3,P4) = (0.0D0,0.0D0)
10 ME(P1,O(P1),P3,P4) = PRE*A(P1,ID)*S(2,1,O(P1))*
& ( B( P4 ,ID)*F3(O(P3), P4 ,4)*S(4,8,P4)
& -B(O(P4),ID)*F3(O(P3),O(P4),8)*MA(4))
END
CDECK ID>, HWHS22.
*CMZ :- -08/04/02 11:54:39 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS22(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f fbar ---> f fbar via t-channel scalar exchange
C This is diagram 2 from RPV notes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = -HALF/(TH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*B(O(P2),ID)*A( P1 ,ID)*
& F4(P2,O(P4),2)*F3(O(P3),P1,1)
END
CDECK ID>, HWHS23.
*CMZ :- -08/04/02 11:54:39 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS23(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f fbar ---> fermion fermion via t-channel scalar exchange
C This is diagram 3 from RPV notes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF/(UH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*B(O(P2),ID)*A( P1 ,ID)*
& F4M(P4,P1,1)*F3M(P2,P3,2)
END
CDECK ID>, HWHS24.
*CMZ :- -08/04/02 11:54:39 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS24(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f fbar ---> f f via s-channel scalar exchange
C This is diagram 4 from RPV notes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),ZI,
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
PARAMETER(ZI=(0.0D0,1.0D0))
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF/(SH-MS(ID)+ZI*MWD(ID))
DO 10 P1=1,2
DO 10 P3=1,2
DO 10 P4=1,2
ME(P1, P1 ,P3,P4) = (0.0D0,0.0D0)
10 ME(P1,O(P1),P3,P4) = PRE*A(P1,ID)*S(2,1,O(P1))*
& ( B(O(P3),ID)*F4M(O(P4),O(P3),3)*S(3,7,O(P3))
& -B( P3 ,ID)*F4M(O(P4), P3 ,7)*MA(3))
END
CDECK ID>, HWHS25.
*CMZ :- -08/04/02 11:54:39 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS25(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f fbar ---> f f via u-channel scalar exchange
C This is diagram 5 from RPV notes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = -HALF/(UH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*B(P1,ID)*A(O(P2),ID)*
& F4M(O(P4),P1,1)*F3M(P2,P3,2)
END
CDECK ID>, HWHS26.
*CMZ :- -08/04/02 11:54:39 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS26(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f fbar ---> f f via t-channel scalar exchange
C This is diagram 6 from RPV notes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF/(TH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*B(P1,ID)*A(O(P2),ID)*
& F4(P2,P4,2)*F3(O(P3),P1,1)
END
CDECK ID>, HWHS27.
*CMZ :- -08/04/02 11:54:39 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS27(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f f ---> f fbar via s-channel scalar exchange
C This is diagram 7 from RPV notes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),ZI,
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
PARAMETER(ZI=(0.0D0,1.0D0))
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE =-HALF/(SH-MS(ID)+ZI*MWD(ID))
DO 10 P1=1,2
DO 10 P3=1,2
DO 10 P4=1,2
ME(P1,O(P1),P3,P4) = (0.0D0,0.0D0)
10 ME(P1, P1 ,P3,P4) = PRE*A(P1,ID)*S(1,2,O(P1))*
& ( B( P4 ,ID)*F3(O(P3), P4 ,4)*S(4,8,P4)
& -B(O(P4),ID)*F3(O(P3),O(P4),8)*MA(4))
END
CDECK ID>, HWHS28.
*CMZ :- -08/04/02 11:54:39 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS28(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f f ---> f fbar via t-channel scalar exchange
C This is diagram 8 from RPV notes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),ZI,
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
PARAMETER(ZI=(0.0D0,1.0D0))
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = -HALF/(TH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*B(P2,ID)*A( P1 ,ID)*
& F4(O(P2),O(P4),2)*F3(O(P3),P1,1)
END
CDECK ID>, HWHS29.
*CMZ :- -08/04/02 11:54:39 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS29(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f f ---> f fbar via u-channel scalar exchange
C This is diagram 9 from RPV notes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),ZI,
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
PARAMETER(ZI=(0.0D0,1.0D0))
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF/(UH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*B(P2,ID)*A(P1,ID)*
& F3(O(P3),P2,2)*F4(O(P1),O(P4),1)
END
CDECK ID>, HWHS30.
*CMZ :- -08/04/02 11:54:39 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS30(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section fbar fbar ---> f f via s-channel scalar exchange
C This is diagram 10 from RPV notes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),ZI,
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
PARAMETER(ZI=(0.0D0,1.0D0))
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF/(SH-MS(ID)+ZI*MWD(ID))
DO 10 P1=1,2
DO 10 P3=1,2
DO 10 P4=1,2
ME(P1,O(P1),P3,P4) = (0.0D0,0.0D0)
10 ME(P1, P1 ,P3,P4) = PRE*A(O(P1),ID)*S(2,1,P1)*
& ( B(O(P3),ID)*F4M(O(P4),O(P3),3)*S(3,7,O(P3))
& -B( P3 ,ID)*F4M(O(P4), P3 ,7)*MA(3))
END
CDECK ID>, HWHS31.
*CMZ :- -08/04/02 11:54:39 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS31(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section fbar fbar ---> f f via t-channel scalar exchange
C This is diagram 11 from RPV notes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),ZI,
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
PARAMETER(ZI=(0.0D0,1.0D0))
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF/(TH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*B(O(P2),ID)*A(O(P1),ID)*
& F4M(O(P4),O(P2),2)*F3M(P1,P3,1)
END
CDECK ID>, HWHS32.
*CMZ :- -08/04/02 11:54:39 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS32(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section fbar fbar ---> f f via u-channel scalar exchange
C This is diagram 12 from RPV notes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),ZI,
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P2,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
PARAMETER(ZI=(0.0D0,1.0D0))
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE =-HALF/(UH-MS(ID))
DO 10 P1=1,2
DO 10 P2=1,2
DO 10 P3=1,2
DO 10 P4=1,2
10 ME(P1,P2,P3,P4) = PRE*B(O(P2),ID)*A(O(P1),ID)*
& F4M(O(P4),O(P1),1)*F3M(P2,P3,2)
END
CDECK ID>, HWHS33.
*CMZ :- -08/04/02 11:54:39 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS33(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section f f ---> f f via s-channel scalar exchange
C This is diagram 13 from RPV
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),ZI,
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
PARAMETER(ZI=(0.0D0,1.0D0))
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF/(SH-MS(ID)+ZI*MWD(ID))
DO 10 P1=1,2
DO 10 P3=1,2
DO 10 P4=1,2
ME(P1,O(P1),P3,P4) = (0.0D0,0.0D0)
10 ME(P1, P1 ,P3,P4) = PRE*A(P1,ID)*S(1,2,O(P1))*
& ( B(O(P3),ID)*F4M(O(P4),O(P3),3)*S(3,7,O(P3))
& -B( P3 ,ID)*F4M(O(P4), P3 ,7)*MA(3))
END
CDECK ID>, HWHS34.
*CMZ :- -08/04/02 11:54:39 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHS34(ID,ME)
C-----------------------------------------------------------------------
C Subroutine to calculate the helicity amplitudes for the 2-to-2 cross
C section fbar fbar ---> fbar fbar via t-channel scalar exchange
C This is diagram 14 from RPV notes
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER NDIAHD
PARAMETER(NDIAHD=10)
DOUBLE COMPLEX ME(2,2,2,2),S,D,F3(2,2,8),F4(2,2,8),PRE
& ,F3M(2,2,8),F4M(2,2,8),FST(2,2,8),ZI,
& FTP(2,2,8,8),FTM(2,2,8,8),FUP(2,2,8,8),FUM(2,2,8,8)
DOUBLE PRECISION A(2,NDIAHD),B(2,NDIAHD),MS(NDIAHD),MWD(NDIAHD),
& MA(4),MA2(4),MR(NDIAHD),SH,TH,UH
INTEGER P1,P3,P4,ID,O(2),IDP(4+NDIAHD),DRTYPE(NDIAHD)
COMMON/HWSPHC/F3,F4,F3M,F4M,FTP,FTM,FUP,FUM,FST,A,B,MS,MWD,MR,MA,
& MA2,SH,TH,UH,IDP,DRTYPE
COMMON/HWHEWS/S(8,8,2),D(8,8)
PARAMETER(ZI=(0.0D0,1.0D0))
SAVE O
DATA O/2,1/
C--compute the propagator factor
PRE = HALF/(SH-MS(ID)+ZI*MWD(ID))
DO 10 P1=1,2
DO 10 P3=1,2
DO 10 P4=1,2
ME(P1,O(P1),P3,P4) = (0.0D0,0.0D0)
10 ME(P1, P1 ,P3,P4) = PRE*A(O(P1),ID)*S(2,1,P1)*
& ( B( P4 ,ID)*F3(P3, P4 ,4)*S(4,8,P4)
& -B(O(P4),ID)*F3(P3,O(P4),8)*MA(4))
END
CDECK ID>, HWHSS1.
*CMZ :- -18/05/99 20.33.45 by Kosuke Odagiri
*-- Author : Kosuke Odagiri
C-----------------------------------------------------------------------
FUNCTION HWHSS1(S, T, U, M3, M4, SGN, CLL, CLR, CRL, CRR)
C-----------------------------------------------------------------------
C QQ(BAR) -> GAUGINOS
C-----------------------------------------------------------------------
IMPLICIT NONE
DOUBLE PRECISION HWHSS1, S, T, U, M3, M4, SGN
DOUBLE COMPLEX CLL, CLR, CRL, CRR
HWHSS1 = DREAL(
& (DCONJG(CLL)*CLL+DCONJG(CRR)*CRR)*(U-M3*M3)*(U-M4*M4)+
& (DCONJG(CLR)*CLR+DCONJG(CRL)*CRL)*(T-M3*M3)*(T-M4*M4)+
& (DCONJG(CLL)*CLR+DCONJG(CRL)*CRR)*2.*SGN*M3*M4*S )
END
CDECK ID>, HWHSS2.
*CMZ :- -10/10/01 10:38:15 by Peter Richardson
*-- Author : Kosuke Odagiri
C-----------------------------------------------------------------------
FUNCTION HWHSS2(S, T, U, M3, M4, SGN, CLL, CLR, CRL, CRR)
C-----------------------------------------------------------------------
C LL(BAR) -> GAUGINOS (including beam polarization)
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWHSS2, S, T, U, M3, M4, SGN
DOUBLE COMPLEX CLL, CLR, CRL, CRR
HWHSS2 =
C--first the incoming left electron
& (ONE-EPOLN(3))*(ONE+PPOLN(3))*DREAL(
& DCONJG(CLL)*CLL*(U-M3*M3)*(U-M4*M4)+
& DCONJG(CLR)*CLR*(T-M3*M3)*(T-M4*M4)+
& DCONJG(CLL)*CLR*2.*SGN*M3*M4*S )
C--then the incoming right electron
&+(ONE+EPOLN(3))*(ONE-PPOLN(3))*DREAL(
& DCONJG(CRR)*CRR*(U-M3*M3)*(U-M4*M4)+
& DCONJG(CRL)*CRL*(T-M3*M3)*(T-M4*M4)+
& DCONJG(CRL)*CRR*2.*SGN*M3*M4*S )
END
CDECK ID>, HWHSSG.
*CMZ :- -31/03/00 17:54:05 by Peter Richardson
*-- Author : Kosuke Odagiri
C-----------------------------------------------------------------------
SUBROUTINE HWHSSG
C-----------------------------------------------------------------------
C SUSY 2 PARTON -> 2 GAUGINOS PROCESSES (1 - 3)
C -> GAUGINO + SPARTON PROCESSES (4 - 7)
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN, HWUALF, HWUAEM, EPS, HCS, RCS, DIST,
& ML(6), ML2(6), MR(6), MR2(6), MCH(2), MCH2(2), MNU(4), MNU2(4),
& MSQK, MG, MG2, SM, DM, DAB, QPE, SGN, PF, SQPE, EMSC2,
& FAC0, FACA, FACB, FACC, S, T, T3, U, U4, SN2TH
DOUBLE PRECISION M1(2,2,6), M2(4,4,6), M3(2,4,6,6),
& M4(4,6), M5(2,6,6), M6L(4,6), M6R(4,6), M7(2,2,6,6),
& XA(4), XB(4), XC(4), XD(4), MZ, MW, XW, SQXW, S2W, S22W
INTEGER I, IQ, IQ1, IQ2, IQ3, IQ4, IG1, IG2, IG3, IG4,
& ID1, ID2, IGL, SSL, SSR, GLU, SSNU, SSCH, INU, ICH, IWD(6), IPB
DOUBLE PRECISION DQD(6), DQU(6), HWHSS1
EXTERNAL HWRGEN, HWUALF, HWUAEM, HWHSS1
SAVE HCS, M1, M2, M3, M4, M5, M6L, M6R, M7
PARAMETER (EPS = 1.D-9, IGL = 49, SSL = 400, SSR = 412, GLU = 449)
PARAMETER (SSNU = 449, SSCH = 453, INU = 49, ICH = 53)
DOUBLE COMPLEX Z, Z0, C1, C2, C3, GZ, GW, CLL, CLR, CRL, CRR
PARAMETER (Z = (0.D0,1.D0), Z0 = (0.D0,0.D0))
EQUIVALENCE (MZ, RMASS(200)), (MW, RMASS(198)), (MG, RMASS(GLU))
EQUIVALENCE (XA(1), ZMIXSS(1,1)), (XA(2), ZMIXSS(2,1))
EQUIVALENCE (XA(3), ZMIXSS(3,1)), (XA(4), ZMIXSS(4,1))
EQUIVALENCE (XB(1), ZMIXSS(1,2)), (XB(2), ZMIXSS(2,2))
EQUIVALENCE (XB(3), ZMIXSS(3,2)), (XB(4), ZMIXSS(4,2))
EQUIVALENCE (XC(1), ZMIXSS(1,3)), (XC(2), ZMIXSS(2,3))
EQUIVALENCE (XC(3), ZMIXSS(3,3)), (XC(4), ZMIXSS(4,3))
EQUIVALENCE (XD(1), ZMIXSS(1,4)), (XD(2), ZMIXSS(2,4))
EQUIVALENCE (XD(3), ZMIXSS(3,4)), (XD(4), ZMIXSS(4,4))
SAVE IWD,DQD,DQU
DATA IWD/2,1,4,3,6,5/
DATA DQD/ONE,ZERO,ONE,ZERO,ONE,ZERO/
DATA DQU/ZERO,ONE,ZERO,ONE,ZERO,ONE/
C
CALL HWSGEN(.FALSE.)
IF (GENEV) THEN
RCS = HCS*HWRGEN(0)
ELSE
SN2TH = 0.25D0 - 0.25D0*COSTH**2
S=XX(1)*XX(2)*PHEP(5,3)**2
EMSC2 = EMSCA**2
FAC0 = FACTSS*HWUAEM(EMSC2)
c prefactor for pair production, includes 1/Nc colour factor
FACA = FAC0*HWUAEM(EMSC2) / CAFAC
c prefactor for qq -> gaugino + gluino, includes CF/Nc colour factor
FACB = FAC0*HWUALF(1,EMSCA) * CFFAC / CAFAC
c prefactor for qg -> gaugino + squark, includes 1/2Nc colour factor
FACC = FACB / CFFAC / TWO
MG2 = MG**2
GZ = S-MZ**2+Z*S/MZ*GAMZ
GW = S-MW**2+Z*S/MW*GAMW
DO IQ = 1,6
IQ1 = SSL + IQ
IQ2 = SSR + IQ
ML(IQ) = RMASS(IQ1)
ML2(IQ) = ML(IQ)**2
MR(IQ) = RMASS(IQ2)
MR2(IQ) = MR(IQ)**2
END DO
XW = TWO * SWEIN
SQXW = SQRT(XW)
S22W = XW * (TWO - XW)
S2W = SQRT(S22W)
DO IG1 = 1,4
MNU(IG1) = RMASS(IG1+SSNU)
MNU2(IG1) = MNU(IG1)**2
END DO
DO IG1 = 1,2
MCH(IG1) = RMASS(IG1+SSCH)
MCH2(IG1) = MCH(IG1)**2
END DO
c _ ~+ ~-
c (1) q q -> X X
c a b
DO IG1 = 1,2
DO IG2 = 1,2
SM = MCH(IG1) + MCH(IG2)
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = MCH(IG1) - MCH(IG2)
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T = (SQPE*COSTH - S + MCH2(IG1) + MCH2(IG2)) / TWO
U = - T - S + MCH2(IG1) + MCH2(IG2)
DAB = ABS(FLOAT(IG1+IG2-3))
C1 = (-WMXVSS(IG1,2)*WMXVSS(IG2,2)+DAB*S22W/XW)/S2W/GZ
C2 = (-WMXUSS(IG1,2)*WMXUSS(IG2,2)+DAB*S22W/XW)/S2W/GZ
SGN = WSGNSS(IG1)*WSGNSS(IG2)
C--PR bug fix 31/03/00
DO IQ = 1,6
C3 = -DAB*QFCH(IQ)/S
CLL = C3 - LFCH(IQ)*C1 +
& DQD(IQ)*WMXVSS(IG1,1)*WMXVSS(IG2,1)/((U-ML2(IWD(IQ)))*XW)
CLR = C3 - LFCH(IQ)*C2 -
& DQU(IQ)*WMXUSS(IG1,1)*WMXUSS(IG2,1)/((T-ML2(IWD(IQ)))*XW)
CRL = C3 - RFCH(IQ)*C1
CRR = C3 - RFCH(IQ)*C2
M1(IG1,IG2,IQ)=FACA*PF*
& HWHSS1(S,T,U,MCH(IG1),MCH(IG2),SGN,CLL,CLR,CRL,CRR)
END DO
C--End of Fix
ELSE
DO IQ = 1,6
M1(IG1,IG2,IQ) = ZERO
END DO
END IF
END DO
END DO
c _ ~o ~o
c (2) q q -> X X
c i j
DO IG1 = 1,4
DO IG2 = 1,4
SM = MNU(IG1) + MNU(IG2)
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = MNU(IG1) - MNU(IG2)
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T = (SQPE*COSTH - S + MNU2(IG1) + MNU2(IG2)) / TWO
U = - T - S + MNU2(IG1) + MNU2(IG2)
C1 = (XD(IG1)*XD(IG2)-XC(IG1)*XC(IG2))/S2W/GZ
C2 = - C1
SGN = ZSGNSS(IG1)*ZSGNSS(IG2)
DO IQ = 1,6
CLL =LFCH(IQ)*C1+SLFCH(IQ,IG1)*SLFCH(IQ,IG2)/(U-ML2(IQ))
CLR =LFCH(IQ)*C2-SLFCH(IQ,IG1)*SLFCH(IQ,IG2)/(T-ML2(IQ))
CRL =RFCH(IQ)*C1-SRFCH(IQ,IG1)*SRFCH(IQ,IG2)/(T-MR2(IQ))
CRR =RFCH(IQ)*C2+SRFCH(IQ,IG1)*SRFCH(IQ,IG2)/(U-MR2(IQ))
M2(IG1,IG2,IQ) = FACA*PF*HALF*
& HWHSS1(S,T,U,MNU(IG1),MNU(IG2),SGN,CLL,CLR,CRL,CRR)
END DO
ELSE
DO IQ = 1,6
M2(IG1,IG2,IQ) = ZERO
END DO
END IF
END DO
END DO
c _ ~+ ~o
c (3) U D -> X X
c a i
DO IG1 = 1,2
DO IG2 = 1,4
SM = MCH(IG1) + MNU(IG2)
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = MCH(IG1) - MNU(IG2)
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T = (SQPE*COSTH - S + MCH2(IG1) + MNU2(IG2)) / TWO
U = - T - S + MCH2(IG1) + MNU2(IG2)
C1 = XA(IG2)+S2W/XW*XB(IG2)
c note the new s-channel signs below. (PR BUG FIX 3/9/01)
C2 = (-XD(IG2)*WMXVSS(IG1,2)/SQXW+C1*WMXVSS(IG1,1))/GW
C3 = ( XC(IG2)*WMXUSS(IG1,2)/SQXW+C1*WMXUSS(IG1,1))/GW
SGN = WSGNSS(IG1)*ZSGNSS(IG2)
DO IQ1 = 1,3
IQ3 = IQ1*2
DO IQ2 = 1,3
IQ4 = IQ2*2-1
CLL = C2+WMXVSS(IG1,1)*SLFCH(IQ3,IG2)/(U-ML2(IQ3))
CLR = C3-WMXUSS(IG1,1)*SLFCH(IQ4,IG2)/(T-ML2(IQ4))
M3(IG1,IG2,IQ1,IQ2) = FACA*PF*VCKM(IQ1,IQ2)/XW*
& HWHSS1(S,T,U,MCH(IG1),MNU(IG2),SGN,CLL,CLR,Z0,Z0)
END DO
END DO
ELSE
DO IQ1 = 1,3
DO IQ2 = 1,3
M3(IG1,IG2,IQ1,IQ2) = ZERO
END DO
END DO
END IF
END DO
END DO
c _ ~o ~
c (4) q q -> X g
c i
DO IG1 = 1,4
SM = MNU(IG1) + MG
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = MNU(IG1) - MG
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T = (SQPE*COSTH - S + MG2 + MNU2(IG1)) / TWO
U = - T - S + MG2 + MNU2(IG1)
DO IQ = 1,6
CLL = SLFCH(IQ,IG1)/(U-ML2(IQ))
CLR = - SLFCH(IQ,IG1)/(T-ML2(IQ))
CRL = - SRFCH(IQ,IG1)/(T-MR2(IQ))
CRR = SRFCH(IQ,IG1)/(U-MR2(IQ))
M4(IG1,IQ) = FACB*PF*
& HWHSS1(S,T,U,MNU(IG1),MG,ZSGNSS(IG1),CLL,CLR,CRL,CRR)
END DO
ELSE
DO IQ = 1,6
M4(IG1,IQ) = ZERO
END DO
END IF
END DO
c _ ~+ ~
c (5) U D -> X g
c a
DO IG1 = 1,2
SM = MCH(IG1) + MG
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = MCH(IG1) - MG
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T = (SQPE*COSTH - S + MCH2(IG1) + MG2) / TWO
U = - T - S + MCH2(IG1) + MG2
DO IQ1 = 1,3
IQ3 = IQ1*2
DO IQ2 = 1,3
IQ4 = IQ2*2-1
CLL = WMXVSS(IG1,1)/(U-ML2(IQ3))
CLR = - WMXUSS(IG1,1)/(T-ML2(IQ4))
M5(IG1,IQ1,IQ2) = FACB*PF*VCKM(IQ1,IQ2)/XW*
& HWHSS1(S,T,U,MCH(IG1),MG,WSGNSS(IG1),CLL,CLR,Z0,Z0)
END DO
END DO
ELSE
DO IQ1 = 1,3
DO IQ2 = 1,3
M5(IG1,IQ1,IQ2) = ZERO
END DO
END DO
END IF
END DO
c ~o ~
c (6) g q -> X q
c i LR
DO IG1 = 1,4
DO IQ = 1,6
c left squarks
SM = MNU(IG1)+ML(IQ)
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = MNU(IG1)-ML(IQ)
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T3 = (SQPE*COSTH - S - SM*DM) / TWO
U4 = - T3 - S
C--KO bug fix 06/10/00
M6L(IG1,IQ) = FACC*PF*((QMIXSS(IQ,1,1)*SLFCH(IQ,IG1))**2
& +(QMIXSS(IQ,2,1)*SRFCH(IQ,IG1))**2)*
& T3/S/U4*(-U4+TWO*SM*DM/T3/U4*SQPE*SQPE*SN2TH)
ELSE
M6L(IG1,IQ) = ZERO
END IF
c right squarks
SM = MNU(IG1)+MR(IQ)
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = MNU(IG1)-MR(IQ)
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T3 = (SQPE*COSTH - S - SM*DM) / TWO
U4 = - T3 - S
C--PR bug fix 28/08/01
M6R(IG1,IQ) = FACC*PF * ((QMIXSS(IQ,1,2)*SLFCH(IQ,IG1))**2
& +(QMIXSS(IQ,2,2)*SRFCH(IQ,IG1))**2)*
& T3/S/U4*(-U4+TWO*SM*DM/T3/U4*SQPE*SQPE*SN2TH)
ELSE
M6R(IG1,IQ) = ZERO
END IF
END DO
END DO
c ~+-~
c (7) g q -> X q'
c a L
DO IG1 = 1,2
DO IQ1 = 1,3
IQ3 = IQ1*2
DO IQ2 = 1,3
IQ4 = IQ2*2-1
DO I = 1,2
c U initiated processes
IF (I.EQ.1) THEN
MSQK = ML(IQ4)
ELSE
MSQK = MR(IQ4)
END IF
SM = MCH(IG1) + MSQK
QPE = S - SM**2
IF (((I.EQ.1).OR.(IQ2.EQ.3)).AND.(QPE.GE.ZERO)) THEN
DM = MCH(IG1) - MSQK
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T3 = (SQPE*COSTH - S - SM*DM) / TWO
U4 = - T3 - S
M7(I,IG1,IQ3,IQ4)=FACC*PF*WMXUSS(IG1,1)**2*VCKM(IQ1,IQ2)
& /XW*T3/S/U4*(-U4+TWO*SM*DM/T3/U4*SQPE*SQPE*SN2TH)*
& QMIXSS(IQ4,1,I)**2
ELSE
M7(I,IG1,IQ3,IQ4) = ZERO
END IF
c D initiated processes
IF (I.EQ.1) THEN
MSQK = ML(IQ3)
ELSE
MSQK = MR(IQ3)
END IF
SM = MCH(IG1) + MSQK
QPE = S - SM**2
IF (((I.EQ.1).OR.(IQ1.EQ.3)).AND.(QPE.GE.ZERO)) THEN
DM = MCH(IG1) - MSQK
SQPE = SQRT(QPE*(S-DM**2))
PF = SQPE/S
T3 = (SQPE*COSTH - S - SM*DM) / TWO
U4 = - T3 - S
M7(I,IG1,IQ4,IQ3)=FACC*PF*WMXVSS(IG1,1)**2*VCKM(IQ1,IQ2)
& /XW*T3/S/U4*(-U4+TWO*SM*DM/T3/U4*SQPE*SQPE*SN2TH)*
& QMIXSS(IQ3,1,I)**2
ELSE
M7(I,IG1,IQ4,IQ3) = ZERO
END IF
END DO
END DO
END DO
END DO
END IF
HCS = 0.
c _ _ ~+ ~- ~o ~o ~o ~
c q q , q q -> X X , X X , X g
c a b i j i
DO 1 ID1 = 1,12
IF (DISF(ID1,1).LT.EPS) GOTO 1
IF (ID1.GT.6) THEN
ID2 = ID1 - 6
IQ = ID2
IPB = 4132
ELSE
ID2 = ID1 + 6
IQ = ID1
IPB = 2431
END IF
IF (DISF(ID2,2).LT.EPS) GOTO 1
DIST = DISF(ID1,1)*DISF(ID2,2)
DO IG1 = 1,2
IG3 = ICH+IG1
DO IG2 = 1,2
IG4 = ICH+IG2+2
HCS = HCS + DIST*M1(IG1,IG2,IQ)
C--PR bug fix 10/10/01
IF (GENEV.AND.HCS.GT.RCS) THEN
IF(ID2.LT.ID1) COSTH=-COSTH
CALL HWHSSS(IG3,0,IG4,0,2134,21)
GOTO 9
ENDIF
END DO
END DO
DO IG1 = 1,4
IG3 = INU+IG1
DO IG2 = 1,4
IG4 = INU+IG2
IF (IG2.GE.IG1) HCS = HCS + DIST*M2(IG1,IG2,IQ)
C--PR bug fix 10/10/01
IF (GENEV.AND.HCS.GT.RCS) THEN
IF(ID2.LT.ID1) COSTH=-COSTH
CALL HWHSSS(IG3,0,IG4,0,2134,22)
GOTO 9
ENDIF
END DO
HCS = HCS + DIST*M4(IG1,IQ)
C--PR bug fix 10/10/01
IF (GENEV.AND.HCS.GT.RCS) THEN
IF(ID2.LT.ID1) COSTH=-COSTH
CALL HWHSSS(IG3,0,IGL,0, IPB,24)
GOTO 9
ENDIF
END DO
1 CONTINUE
c _ _ ~+-~o ~+-~
c q q', q q' -> X X , X g
c a i a
c
c _ _ _ _
c ud(+), ud(-), du(-), du(+)
DO 2 IQ1 = 1, 3
DO IQ2 = 1, 3
IF(VCKM(IQ1,IQ2).GT.EPS) THEN
c _
c ud (+)
ID1 = IQ1 * 2
ID2 = IQ2 * 2 + 5
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = DISF(ID1,1)*DISF(ID2,2)
DO IG1 = 1,2
IG3 = ICH+IG1
DO IG2 = 1,4
IG4 = INU+IG2
HCS = HCS + DIST*M3(IG1,IG2,IQ1,IQ2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG3,0,IG4,0,2134,23)
GOTO 9
ENDIF
END DO
HCS = HCS + DIST*M5(IG1,IQ1,IQ2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG3,0,IGL,0,2431,25)
GOTO 9
ENDIF
END DO
END IF
c _
c du (+)
ID1 = IQ2 * 2 + 5
ID2 = IQ1 * 2
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = DISF(ID1,1)*DISF(ID2,2)
DO IG1 = 1,2
IG3 = ICH+IG1
DO IG2 = 1,4
IG4 = INU+IG2
HCS = HCS + DIST*M3(IG1,IG2,IQ1,IQ2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG4,0,IG3,0,2134,23)
GOTO 9
ENDIF
END DO
HCS = HCS + DIST*M5(IG1,IQ1,IQ2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IGL,0,IG3,0,3124,25)
GOTO 9
ENDIF
END DO
END IF
c _
c du (-)
ID1 = IQ2 * 2 - 1
ID2 = IQ1 * 2 + 6
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = DISF(ID1,1)*DISF(ID2,2)
DO IG1 = 1,2
IG3 = ICH+IG1+2
DO IG2 = 1,4
IG4 = INU+IG2
HCS = HCS + DIST*M3(IG1,IG2,IQ1,IQ2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG4,0,IG3,0,2134,23)
GOTO 9
ENDIF
END DO
HCS = HCS + DIST*M5(IG1,IQ1,IQ2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IGL,0,IG3,0,2314,25)
GOTO 9
ENDIF
END DO
END IF
c _
c ud (-)
ID1 = IQ1 * 2 + 6
ID2 = IQ2 * 2 - 1
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = DISF(ID1,1)*DISF(ID2,2)
DO IG1 = 1,2
IG3 = ICH+IG1+2
DO IG2 = 1,4
IG4 = INU+IG2
HCS = HCS + DIST*M3(IG1,IG2,IQ1,IQ2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG3,0,IG4,0,2134,23)
GOTO 9
ENDIF
END DO
HCS = HCS + DIST*M5(IG1,IQ1,IQ2)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG3,0,IGL,0,4132,25)
GOTO 9
ENDIF
END DO
END IF
END IF
END DO
2 CONTINUE
c _ _ ~o ~ ~+-~
c g q , g q , q g , q g -> X q , X q'
c i LR a L
c neutralino
DO IQ1 = 1,6
c
c gq
ID1 = 13
ID2 = IQ1
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = DISF(ID1,1)*DISF(ID2,2)
DO IG1 = 1,4
IG3 = INU+IG1
HCS = HCS + DIST*M6L(IG1,IQ1)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG3,0,ID2,0,2431,26)
GOTO 9
ENDIF
HCS = HCS + DIST*M6R(IG1,IQ1)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG3,0,ID2,2,2431,26)
GOTO 9
ENDIF
END DO
END IF
c _
c gq
ID1 = 13
ID2 = IQ1 + 6
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = DISF(ID1,1)*DISF(ID2,2)
DO IG1 = 1,4
IG3 = INU+IG1
HCS = HCS + DIST*M6L(IG1,IQ1)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG3,0,ID2,0,4132,26)
GOTO 9
ENDIF
HCS = HCS + DIST*M6R(IG1,IQ1)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG3,0,ID2,2,4132,26)
GOTO 9
ENDIF
END DO
END IF
c
c qg
ID1 = IQ1
ID2 = 13
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = DISF(ID1,1)*DISF(ID2,2)
DO IG1 = 1,4
IG3 = INU+IG1
HCS = HCS + DIST*M6L(IG1,IQ1)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(ID1,0,IG3,0,3124,26)
GOTO 9
ENDIF
HCS = HCS + DIST*M6R(IG1,IQ1)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(ID1,2,IG3,0,3124,26)
GOTO 9
ENDIF
END DO
END IF
c _
c qg
ID1 = IQ1 + 6
ID2 = 13
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = DISF(ID1,1)*DISF(ID2,2)
DO IG1 = 1,4
IG3 = INU+IG1
HCS = HCS + DIST*M6L(IG1,IQ1)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(ID1,0,IG3,0,2314,26)
GOTO 9
ENDIF
HCS = HCS + DIST*M6R(IG1,IQ1)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(ID1,2,IG3,0,2314,26)
GOTO 9
ENDIF
END DO
END IF
END DO
c chargino
DO IQ1 = 1,3
IQ3 = IQ1*2
DO 3 IQ2 = 1,3
IF (VCKM(IQ1,IQ2).LT.EPS) GOTO 3
IQ4 = IQ2*2-1
DO IG1 = 1,2
IG3 = ICH+IG1
IG4 = ICH+IG1+2
c
c gq & qg
ID1 = 13
ID2 = IQ3
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(1,IG1,IQ3,IQ4)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG3,0,IQ4,0,2431,27)
GOTO 9
ENDIF
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(2,IG1,IQ3,IQ4)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG3,0,IQ4,2,2431,27)
GOTO 9
ENDIF
ID2 = IQ4
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(1,IG1,IQ4,IQ3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG4,0,IQ3,0,2431,27)
GOTO 9
ENDIF
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(2,IG1,IQ4,IQ3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG4,0,IQ3,2,2431,27)
GOTO 9
ENDIF
ID1 = IQ3
ID2 = 13
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(1,IG1,IQ3,IQ4)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ4,0,IG3,0,3124,27)
GOTO 9
ENDIF
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(2,IG1,IQ3,IQ4)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ4,2,IG3,0,3124,27)
GOTO 9
ENDIF
ID1 = IQ4
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(1,IG1,IQ4,IQ3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ3,0,IG4,0,3124,27)
GOTO 9
ENDIF
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(2,IG1,IQ4,IQ3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ3,2,IG4,0,3124,27)
GOTO 9
ENDIF
c _ _
c gq & qg
ID1 = 13
ID2 = IQ3 + 6
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(1,IG1,IQ3,IQ4)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG4,0,IQ4,1,4132,27)
GOTO 9
ENDIF
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(2,IG1,IQ3,IQ4)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG4,0,IQ4,3,4132,27)
GOTO 9
ENDIF
ID2 = IQ4 + 6
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(1,IG1,IQ4,IQ3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG3,0,IQ3,1,4132,27)
GOTO 9
ENDIF
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(2,IG1,IQ4,IQ3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IG3,0,IQ3,3,4132,27)
GOTO 9
ENDIF
ID1 = IQ3 + 6
ID2 = 13
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(1,IG1,IQ3,IQ4)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ4,1,IG4,0,2314,27)
GOTO 9
ENDIF
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(2,IG1,IQ3,IQ4)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ4,3,IG4,0,2314,27)
GOTO 9
ENDIF
ID1 = IQ4 + 6
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(1,IG1,IQ4,IQ3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ3,1,IG3,0,2314,27)
GOTO 9
ENDIF
HCS = HCS + DISF(ID1,1)*DISF(ID2,2)*M7(2,IG1,IQ4,IQ3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ3,3,IG3,0,2314,27)
GOTO 9
ENDIF
END DO
3 CONTINUE
END DO
EVWGT = HCS
RETURN
C---GENERATE EVENT
9 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
IF (AZSPIN) THEN
C Calculate coefficients for constructing spin density matrices
C Set to zero for now
CALL HWVZRO(7,GCOEF)
END IF
END
CDECK ID>, HWHSSL.
*CMZ :- -18/05/99 20.33.45 by Kosuke Odagiri
*-- Author : Kosuke Odagiri
C-----------------------------------------------------------------------
SUBROUTINE HWHSSL
C-----------------------------------------------------------------------
C SUSY 2 PARTON -> 2 SLEPTON PROCESSES
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN, HWUAEM, EPS, HCS, RCS, DIST, S, PF, QPE,
& FACTR, SN2TH, MZ, MW, ME2(2,2,6,2), ME2W(2,3), EMSC2, GW2
INTEGER IQ, IQ1, IQ2, ID1, ID2, IL, IL1, IL2, I, J
EXTERNAL HWRGEN, HWUAEM
SAVE HCS, ME2, ME2W
PARAMETER (EPS = 1.D-9)
DOUBLE COMPLEX Z, GZ, A, BL, BR, CL, CR, D, E
PARAMETER (Z = (0.D0,1.D0))
EQUIVALENCE (MZ, RMASS(200)), (MW, RMASS(198))
C
S = XX(1)*XX(2)*PHEP(5,3)**2
EMSC2 = S
EMSCA = SQRT(EMSC2)
CALL HWSGEN(.FALSE.)
IF (GENEV) THEN
RCS = HCS*HWRGEN(0)
ELSE
SN2TH = 0.25D0 - 0.25D0*COSTH**2
FACTR = FACTSS*HWUAEM(EMSC2)**2/CAFAC*SN2TH
GZ = (S-MZ**2+Z*S*GAMZ/MZ)/S
GW2 = ((ONE-MW**2/S)**2+(GAMW/MW)**2)*(TWO*SWEIN)**2
c _ ~ ~*
c q q -> l l
c
DO IL = 1,6
DO I = 1,2
DO J = 1,2
IF (((I.NE.J).AND.(IL.NE.5)).OR.
& ((I.EQ.2).AND.(((IL/2)*2).EQ.IL))) THEN
QPE = -1.
ELSE
ID1 = 412 + I*12 + IL
ID2 = 412 + J*12 + IL
IL1 = IL + 10
QPE = S-(RMASS(ID1)+RMASS(ID2))**2
END IF
IF (QPE.GT.ZERO) THEN
PF = SQRT(QPE*(S-(RMASS(ID1)-RMASS(ID2))**2))/S
DO IQ = 1,2
A = QFCH(IL1)*QFCH(IQ)
BL = LFCH(IL1)/GZ
BR = RFCH(IL1)/GZ
CL = LMIXSS(IL,1,I)*LMIXSS(IL,1,J)
CR = LMIXSS(IL,2,I)*LMIXSS(IL,2,J)
D = (A+BL*LFCH(IQ))*CL+(A+BR*LFCH(IQ))*CR
E = (A+BL*RFCH(IQ))*CL+(A+BR*RFCH(IQ))*CR
ME2(I,J,IL,IQ)=FACTR*PF**3
$ *DREAL(DCONJG(D)*D+DCONJG(E)*E)
END DO
ELSE
ME2(I,J,IL,1)=ZERO
ME2(I,J,IL,2)=ZERO
END IF
END DO
END DO
END DO
c _ ~ ~*
c q q' -> l v
c
DO IL = 1,3
DO I = 1,2
IF ((IL.NE.3).AND.(I.EQ.2)) THEN
QPE = -1.
ELSE
ID1 = 411 + IL*2 + I*12
ID2 = 424 + IL*2
QPE = S-(RMASS(ID1)+RMASS(ID2))**2
END IF
IF (QPE.GT.ZERO) THEN
PF = SQRT(QPE*(S-(RMASS(ID1)-RMASS(ID2))**2))/S
ME2W(I,IL)=FACTR*PF**3/GW2
IF (IL.EQ.3) ME2W(I,3)=ME2W(I,3)*LMIXSS(5,1,I)**2
ELSE
ME2W(I,IL)=ZERO
END IF
END DO
END DO
END IF
HCS = 0.
C
DO 1 ID1 = 1, 12
IF (DISF(ID1,1).LT.EPS) GOTO 1
IF (ID1.GT.6) THEN
ID2 = ID1 - 6
ELSE
ID2 = ID1 + 6
END IF
IQ = ID1 - ((ID1-1)/2)*2
IF (DISF(ID2,2).LT.EPS) GOTO 1
DIST = DISF(ID1,1)*DISF(ID2,2)
DO IL = 1,6
DO I = 1,2
DO J = 1,2
IL1 = IL+I*12
IL2 = IL+J*12
HCS = HCS + DIST*ME2(I,J,IL,IQ)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IL1,2,IL2,3,2134,30)
GOTO 9
ENDIF
END DO
END DO
END DO
1 CONTINUE
c _ _ _ _
c ud(+), ud(-), du(-), du(+)
DO 2 IQ1 = 1, 3
DO IQ2 = 1, 3
IF(VCKM(IQ1,IQ2).GT.EPS) THEN
c _
c ud (+)
ID1 = IQ1 * 2
ID2 = IQ2 * 2 + 5
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = VCKM(IQ1,IQ2)*DISF(ID1,1)*DISF(ID2,2)
DO IL = 1,3
IL1 = IL*2-1
IL2 = IL1+1
HCS = HCS + DIST*ME2W(1,IL)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IL1,5,IL2,4,2134,30)
GOTO 9
ENDIF
END DO
HCS = HCS + DIST*ME2W(2,3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(5,7,6,4,2134,30)
GOTO 9
ENDIF
END IF
c _
c du (+)
ID1 = IQ2 * 2 + 5
ID2 = IQ1 * 2
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = VCKM(IQ1,IQ2)*DISF(ID1,1)*DISF(ID2,2)
DO IL = 1,3
IL1 = IL*2-1
IL2 = IL1+1
HCS = HCS + DIST*ME2W(1,IL)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IL1,5,IL2,4,2134,30)
GOTO 9
ENDIF
END DO
HCS = HCS + DIST*ME2W(2,3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(5,7,6,4,2134,30)
GOTO 9
ENDIF
END IF
c _
c du (-)
ID1 = IQ2 * 2 - 1
ID2 = IQ1 * 2 + 6
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = VCKM(IQ1,IQ2)*DISF(ID1,1)*DISF(ID2,2)
DO IL = 1,3
IL1 = IL*2-1
IL2 = IL1+1
HCS = HCS + DIST*ME2W(1,IL)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IL1,4,IL2,5,2134,30)
GOTO 9
ENDIF
END DO
HCS = HCS + DIST*ME2W(2,3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(5,6,6,5,2134,30)
GOTO 9
ENDIF
END IF
c _
c ud (-)
ID1 = IQ1 * 2 + 6
ID2 = IQ2 * 2 - 1
IF ((DISF(ID1,1).GT.EPS).AND.(DISF(ID2,2).GT.EPS)) THEN
DIST = VCKM(IQ1,IQ2)*DISF(ID1,1)*DISF(ID2,2)
DO IL = 1,3
IL1 = IL*2-1
IL2 = IL1+1
HCS = HCS + DIST*ME2W(1,IL)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IL1,4,IL2,5,2134,30)
GOTO 9
ENDIF
END DO
HCS = HCS + DIST*ME2W(2,3)
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(5,6,6,5,2134,30)
GOTO 9
ENDIF
END IF
END IF
END DO
2 CONTINUE
EVWGT = HCS
RETURN
C---GENERATE EVENT
9 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
IF (AZSPIN) THEN
C Calculate coefficients for constructing spin density matrices
C Set to zero for now
CALL HWVZRO(7,GCOEF)
END IF
END
CDECK ID>, HWHSSQ.
*CMZ :- -18/05/99 20.33.45 by Kosuke Odagiri
*-- Author : Kosuke Odagiri
C-----------------------------------------------------------------------
SUBROUTINE HWHSSQ
C-----------------------------------------------------------------------
C SUSY HARD 2 PARTON -> 2 SPARTON PROCESSES
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN, HWUALF, EPS, HCS, RCS, DIST, NC, NC2,
& NC2C, ML2(6), ML4(6), MR2(6), MR4(6), MG2, SM, DM, QPE,
& SQPE, FACTR, AFAC, AF, BONE, CFAC, CFC2, CFC3, CONE,
& CONN, CONT, CONU, CONL, CONR, DFAC, DONE, PF, S,
& S2, TT, TT2, TMG, TMG2, UU, UU2, UMG, UMG2,
& L, L2, TTML, UUML, R, R2, TTMR, UUMR, SN2TH
DOUBLE PRECISION
& AUSTLL(6), AUSTRR(6),
& ASTULL(6,6), ASTURR(6,6), ASTULR(6,6), ASTURL(6,6),
& AUTSLL(6,6), AUTSRR(6,6), AUTSLR(6,6), AUTSRL(6,6),
& BSTULL(6), BSTURR(6), BSTULR(6), BSTURL(6),
& BSUTLL(6), BSUTRR(6), BSUTLR(6), BSUTRL(6),
& BUTSLL(6), BUTSRR(6), BUTSLR(6), BUTSRL(6),
& BUSTLL(6), BUSTRR(6), BUSTLR(6), BUSTRL(6),
& CSTU(6), CSUT(6), CSTUL(6), CSTUR(6), CSUTL(6), CSUTR(6),
& CTSUL(6), CTSUR(6), CTUSL(6), CTUSR(6), DUTS, DTSU, DSTU
INTEGER IQ, IQ1, IQ2, ID1, ID2, ID2MIN, IGL, SSL, SSR, GLU
EXTERNAL HWRGEN, HWUALF
SAVE HCS, AUSTLL, AUSTRR, ASTULL, ASTURR, ASTULR, ASTURL,
& AUTSLL, AUTSRR, AUTSLR, AUTSRL, BSTULL, BSTURR, BSTULR,
& BSTURL, BSUTLL, BSUTRR, BSUTLR, BSUTRL, BUTSLL, BUTSRR, BUTSLR,
& BUTSRL, BUSTLL, BUSTRR, BUSTLR, BUSTRL, CSTU, CSUT, CSTUL, CSTUR,
& CSUTL, CSUTR, CTSUL, CTSUR, CTUSL, CTUSR, DUTS, DTSU, DSTU
PARAMETER (EPS = 1.D-9, IGL = 49, SSL = 400, SSR = 412, GLU = 449)
CALL HWSGEN(.FALSE.)
IF (GENEV) THEN
RCS = HCS*HWRGEN(0)
ELSE
SN2TH = 0.25D0 - 0.25D0*COSTH**2
S = XX(1)*XX(2)*PHEP(5,3)**2
FACTR = FACTSS*HWUALF(1,EMSCA)**2
NC = CAFAC
NC2 = NC**2
NC2C = ONE - ONE/NC2
AFAC = FACTR*NC2C/FOUR
CFAC = FACTR*CFFAC/FOUR
CFC2 = FACTR/CFFAC/FOUR
CFC3 = FACTR/FOUR
DFAC = FACTR/NC2C
S2 = S**2
MG2 = RMASS(GLU)**2
DO 10 IQ = 1, 6
IQ1 = SSL + IQ
IQ2 = SSR + IQ
ML2(IQ) = RMASS(IQ1)**2
ML4(IQ) = ML2(IQ)**2
MR2(IQ) = RMASS(IQ2)**2
MR4(IQ) = MR2(IQ)**2
10 CONTINUE
c gluino pair production
QPE = S - FOUR*MG2
IF (QPE.GE.ZERO) THEN
SQPE = SQRT(S*QPE)
PF = SQPE/S
TT = (SQPE*COSTH - S) / TWO
TT2 = TT**2
UU = - S - TT
UU2 = UU**2
c ~ ~
c g g -> g g
c
DONE =
& DFAC*PF/TWO*(UU2+TT2+FOUR*MG2*S*SQPE**2*SN2TH/TT/UU)/S2/TT/UU
DUTS = DONE*UU2
DTSU = DONE*TT2
DSTU = DONE*S2
c _ ~ ~
c q q -> g g
c
DO 21 IQ = 1, 6
L = ML2(IQ)-MG2
L2 = L**2
TTML = TT-L
UUML = UU-L
R = MR2(IQ)-MG2
R2 = R**2
TTMR = TT-R
UUMR = UU-R
CONE = TWO*PF**2*SN2TH
CONL = CONE/UUML/TTML
CONR = CONE/UUMR/TTMR
CONT = (UU2-L2)*CONL+(UU2-R2)*CONR+L2/TTML**2+R2/TTMR**2
CONU = (TT2-L2)*CONL+(TT2-R2)*CONR+L2/UUML**2+R2/UUMR**2
CONN = CFAC*(PF-PF/NC2/(CONT+CONU)*( S2*(CONL+CONR)+
& L2*((TT-UU)*CONL/CONE)**2+R2*((TT-UU)*CONR/CONE)**2 ))
CSTU(IQ) = CONT*CONN
CSUT(IQ) = CONU*CONN
21 CONTINUE
ELSE
DUTS = ZERO
DTSU = ZERO
DSTU = ZERO
DO 23 IQ = 1, 6
CSTU(IQ) = ZERO
CSUT(IQ) = ZERO
23 CONTINUE
END IF
c left handed squark (identical flavour) pair production
DO 22 IQ = 1, 6
QPE = S - FOUR*ML2(IQ)
IF (QPE.GE.ZERO) THEN
SQPE = SQRT(S*QPE)
PF = SQPE/S
TT = (SQPE*COSTH - S) / TWO
TT2 = TT**2
UU = - S - TT
UU2 = UU**2
c ~ ~*
c g g -> q q
c L L
CONE = CFC2*PF*((SQPE*PF*SN2TH)**2+ML4(IQ))/TT2/UU2
CONN = CONE-CONE*S2/(TT2+UU2)/NC2
CSTUL(IQ) = CONN*UU2
CSUTL(IQ) = CONN*TT2
c ~ ~
c q q -> q q
c L L
TMG = TT+ML2(IQ)-MG2
TMG2 = TMG**2
UMG = UU+ML2(IQ)-MG2
UMG2 = UMG**2
BONE = AFAC*PF*MG2*S*(HALF-TMG*UMG/(TMG2+UMG2)/NC)
BSTULL(IQ) = BONE/TMG2
BSUTLL(IQ) = BONE/UMG2
c _ ~ ~*
c q q -> q q
c L L
AF = AFAC*PF*PF**2*SN2TH
BONE = AF/TMG2-AF*S/(HALF*S2+TMG2)/TMG/NC
BUTSLL(IQ) = BONE*S2
BUSTLL(IQ) = BONE*TWO*TMG2
c _ ~ ~*
c q q -> q'q' q =/= q'
c L L
AUSTLL(IQ) = TWO*AF
ELSE
CSTUL(IQ) = ZERO
CSUTL(IQ) = ZERO
BSTULL(IQ) = ZERO
BSUTLL(IQ) = ZERO
BUTSLL(IQ) = ZERO
BUSTLL(IQ) = ZERO
AUSTLL(IQ) = ZERO
END IF
c right handed squark (identical flavour) pair production
QPE = S - FOUR*MR2(IQ)
IF (QPE.GE.ZERO) THEN
SQPE = SQRT(S*QPE)
PF = SQPE/S
TT = (SQPE*COSTH - S) / TWO
TT2 = TT**2
UU = - S - TT
UU2 = UU**2
c ~ ~*
c g g -> q q
c R R
CONE = CFC2*PF*((SQPE*PF*SN2TH)**2+MR4(IQ))/TT2/UU2
CONN = CONE-CONE*S2/(TT2+UU2)/NC2
CSTUR(IQ) = CONN*UU2
CSUTR(IQ) = CONN*TT2
c ~ ~
c q q -> q q
c R R
TMG = TT+MR2(IQ)-MG2
TMG2 = TMG**2
UMG = UU+MR2(IQ)-MG2
UMG2 = UMG**2
BONE = AFAC*PF*MG2*S*(HALF-TMG*UMG/(TMG2+UMG2)/NC)
BSTURR(IQ) = BONE/TMG2
BSUTRR(IQ) = BONE/UMG2
c _ ~ ~*
c q q -> q q
c R R
AF = AFAC*PF*PF**2*SN2TH
BONE = AF/TMG2-AF*S/(HALF*S2+TMG2)/TMG/NC
BUTSRR(IQ) = BONE*S2
BUSTRR(IQ) = BONE*TWO*TMG2
c _ ~ ~*
c q q -> q'q' q =/= q'
c R R
AUSTRR(IQ) = TWO*AF
ELSE
CSTUR(IQ) = ZERO
CSUTR(IQ) = ZERO
BSTURR(IQ) = ZERO
BSUTRR(IQ) = ZERO
BUTSRR(IQ) = ZERO
BUSTRR(IQ) = ZERO
AUSTRR(IQ) = ZERO
END IF
c left and right handed squark (identical flavour) pair production
IQ1 = SSL + IQ
IQ2 = SSR + IQ
SM = RMASS(IQ1)+RMASS(IQ2)
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = RMASS(IQ1)-RMASS(IQ2)
SQPE = SQRT( QPE*(S-DM**2) )
PF = SQPE/S
AF = AFAC*PF
TT = (SQPE*COSTH - S - SM*DM) / TWO
UU = - S - TT
TMG = TT + ML2(IQ) - MG2
TMG2 = TMG**2
UMG = UU + MR2(IQ) - MG2
UMG2 = UMG**2
c ~ ~
c q q -> q q
c L R
BONE = AFAC*PF*SQPE**2*SN2TH
BSTULR(IQ) = BONE/TMG2
BSUTLR(IQ) = BONE/UMG2
c _ ~ ~*
c q q -> q q
c L R
BUTSLR(IQ) = AFAC*PF*MG2*S/TMG2
BUSTLR(IQ) = ZERO
TT = (SQPE*COSTH - S + SM*DM) / TWO
UU = - S - TT
TMG = TT + MR2(IQ) - MG2
TMG2 = TMG**2
UMG = UU + ML2(IQ) - MG2
UMG2 = UMG**2
c ~ ~
c q q -> q q
c R L
c BONE = AFAC*PF*SQPE**2*SN2TH
c BSTURL(IQ) = BONE/TMG2
c BSUTRL(IQ) = BONE/UMG2
BSTURL(IQ) = ZERO
BSUTRL(IQ) = ZERO
c _ ~ ~*
c q q -> q q
c R L
BUTSRL(IQ) = AFAC*PF*MG2*S/TMG2
BUSTRL(IQ) = ZERO
ELSE
BSTULR(IQ) = ZERO
BSUTLR(IQ) = ZERO
BUTSLR(IQ) = ZERO
BUSTLR(IQ) = ZERO
BSTURL(IQ) = ZERO
BSUTRL(IQ) = ZERO
BUTSRL(IQ) = ZERO
BUSTRL(IQ) = ZERO
END IF
22 CONTINUE
c distinct flavours - gq, qq'
DO 11 ID1 = 1, 6
IQ1 = SSL + ID1
SM = RMASS(GLU)+RMASS(IQ1)
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = RMASS(GLU)-RMASS(IQ1)
SQPE = SQRT( QPE*(S-DM**2) )
PF = SQPE/S
TT = (SQPE*COSTH - S - SM*DM) / TWO
TT2 = TT**2
UU = - S - TT
UU2 = UU**2
c ~ ~
c g q -> g q
c L
CONE = (-UU+TWO*SM*DM*(ONE+MG2/TT+ML2(ID1)/UU))/S/TT/UU
CONN = CFC3*PF*CONE*(ONE-TT2/(UU2+S2)/NC2)
CTSUL(ID1) = CONN*UU2
CTUSL(ID1) = CONN*S2
ELSE
CTSUL(ID1) = ZERO
CTUSL(ID1) = ZERO
END IF
IQ2 = SSR + ID1
SM = RMASS(GLU)+RMASS(IQ2)
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = RMASS(GLU)-RMASS(IQ2)
SQPE = SQRT( QPE*(S-DM**2) )
PF = SQPE/S
TT = (SQPE*COSTH - S - SM*DM) / TWO
TT2 = TT**2
UU = - S - TT
UU2 = UU**2
c ~ ~
c g q -> g q
c R
CONE = (-UU+TWO*SM*DM*(ONE+MG2/TT+MR2(ID1)/UU))/S/TT/UU
CONN = CFC3*PF*CONE*(ONE-TT2/(UU2+S2)/NC2)
CTSUR(ID1) = CONN*UU2
CTUSR(ID1) = CONN*S2
ELSE
CTSUR(ID1) = ZERO
CTUSR(ID1) = ZERO
END IF
IF(ID1.EQ.6) GOTO 11
ID2MIN = ID1+1
DO 12 ID2 = ID2MIN, 6
IQ1 = SSL + ID1
IQ2 = SSL + ID2
SM = RMASS(IQ1)+RMASS(IQ2)
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = RMASS(IQ1)-RMASS(IQ2)
SQPE = SQRT( QPE*(S-DM**2) )
PF = SQPE/S
TT = (SQPE*COSTH - S - SM*DM) / TWO
UU = - S - TT
TMG = TT+ML2(ID1)-MG2
AF = AFAC*PF/TMG/TMG
c ~ ~
c q q' -> q q'
c L L
ASTULL(ID1,ID2) = AF*MG2*S
ASTULL(ID2,ID1) = ASTULL(ID1,ID2)
c _ ~ ~*
c q q' -> q q'
c L L
AUTSLL(ID1,ID2) = AF*SQPE**2*SN2TH
AUTSLL(ID2,ID1) = AUTSLL(ID1,ID2)
ELSE
ASTULL(ID1,ID2) = ZERO
ASTULL(ID2,ID1) = ZERO
AUTSLL(ID1,ID2) = ZERO
AUTSLL(ID2,ID1) = ZERO
END IF
IQ1 = SSR + ID1
IQ2 = SSR + ID2
SM = RMASS(IQ1)+RMASS(IQ2)
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = RMASS(IQ1)-RMASS(IQ2)
SQPE = SQRT( QPE*(S-DM**2) )
PF = SQPE/S
TT = (SQPE*COSTH - S - SM*DM) / TWO
UU = - S - TT
TMG = TT+MR2(ID1)-MG2
AF = AFAC*PF/TMG/TMG
c ~ ~
c q q' -> q q'
c R R
ASTURR(ID1,ID2) = AF*MG2*S
ASTURR(ID2,ID1) = ASTURR(ID1,ID2)
c _ ~ ~*
c q q' -> q q'
c R R
AUTSRR(ID1,ID2) = AF*SQPE**2*SN2TH
AUTSRR(ID2,ID1) = AUTSRR(ID1,ID2)
ELSE
ASTURR(ID1,ID2) = ZERO
ASTURR(ID2,ID1) = ZERO
AUTSRR(ID1,ID2) = ZERO
AUTSRR(ID2,ID1) = ZERO
END IF
IQ1 = SSL + ID1
IQ2 = SSR + ID2
SM = RMASS(IQ1)+RMASS(IQ2)
QPE = S - SM**2
IF (QPE.GE.ZERO) THEN
DM = RMASS(IQ1)-RMASS(IQ2)
SQPE = SQRT( QPE*(S-DM**2) )
PF = SQPE/S
TT = (SQPE*COSTH - S - SM*DM) / TWO
UU = - S - TT
TMG = TT+ML2(ID1)-MG2
AF = AFAC*PF/TMG/TMG
c ~ ~
c q q' -> q q'
c L R
ASTULR(ID1,ID2) = AF*SQPE**2*SN2TH
ASTULR(ID2,ID1) = ASTULR(ID1,ID2)
c _ ~ ~*
c q q' -> q q'
c L R
AUTSLR(ID1,ID2) = AF*MG2*S
AUTSLR(ID2,ID1) = AUTSLR(ID1,ID2)
TT = (SQPE*COSTH - S + SM*DM) / TWO
UU = - S - TT
TMG = TT+MR2(ID1)-MG2
AF = AFAC*PF/TMG/TMG
c ~ ~
c q q' -> q q'
c R L
ASTURL(ID1,ID2) = AF*SQPE**2*SN2TH
ASTURL(ID2,ID1) = ASTULR(ID1,ID2)
c _ ~ ~*
c q q' -> q q'
c R L
AUTSRL(ID1,ID2) = AF*MG2*S
AUTSRL(ID2,ID1) = AUTSLR(ID1,ID2)
ELSE
ASTULR(ID1,ID2) = ZERO
ASTULR(ID2,ID1) = ZERO
AUTSLR(ID1,ID2) = ZERO
AUTSLR(ID2,ID1) = ZERO
ASTURL(ID1,ID2) = ZERO
ASTURL(ID2,ID1) = ZERO
AUTSRL(ID1,ID2) = ZERO
AUTSRL(ID2,ID1) = ZERO
END IF
12 CONTINUE
11 CONTINUE
END IF
HCS = ZERO
DO 6 ID1 = 1, 13
IF (DISF(ID1,1).LT.EPS) GOTO 6
DO 5 ID2 = 1, 13
IF (DISF(ID2,2).LT.EPS) GOTO 5
DIST = DISF(ID1,1)*DISF(ID2,2)
IF (ID1.LT.7) THEN
IQ1 = ID1
IF (ID2.LT.7) THEN
IQ2 = ID2
IF (IQ1.NE.IQ2) THEN
c ~ ~
c qq' -> q q'
HCS = HCS + ASTULL(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,0,3421,10)
GOTO 9
ENDIF
HCS = HCS + ASTURR(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,2,3421,10)
GOTO 9
ENDIF
HCS = HCS + ASTULR(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,2,3421,10)
GOTO 9
ENDIF
HCS = HCS + ASTURL(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,0,3421,10)
GOTO 9
ENDIF
ELSE
c ~ ~
c qq -> q q
HCS = HCS + BSTULL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,0,3421,10)
GOTO 9
ENDIF
HCS = HCS + BSTURR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,2,3421,10)
GOTO 9
ENDIF
HCS = HCS + BSTULR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,2,3421,10)
GOTO 9
ENDIF
HCS = HCS + BSTURL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,0,3421,10)
GOTO 9
ENDIF
HCS = HCS + BSUTLL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,0,4312,10)
GOTO 9
ENDIF
HCS = HCS + BSUTRR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,2,4312,10)
GOTO 9
ENDIF
HCS = HCS + BSUTLR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,2,4312,10)
GOTO 9
ENDIF
HCS = HCS + BSUTRL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,0,4312,10)
GOTO 9
ENDIF
END IF
ELSEIF (ID2.NE.13) THEN
IQ2 = ID2-6
IF (IQ1.NE.IQ2) THEN
c _ ~ ~*
c qq' -> q q'
HCS = HCS + AUTSLL(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,1,3142,10)
GOTO 9
ENDIF
HCS = HCS + AUTSRR(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,3,3142,10)
GOTO 9
ENDIF
HCS = HCS + AUTSLR(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,3,3142,10)
GOTO 9
ENDIF
HCS = HCS + AUTSRL(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,1,3142,10)
GOTO 9
ENDIF
ELSE
c _ ~ ~*
c qq -> q'q' (q =/= q')
DO 30 IQ = 1, 6
IF (IQ .EQ.IQ1) GOTO 30
HCS = HCS + AUSTLL(IQ )*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ ,0,IQ ,1,2413,10)
GOTO 9
ENDIF
HCS = HCS + AUSTRR(IQ )*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ ,2,IQ ,3,2413,10)
GOTO 9
ENDIF
30 CONTINUE
c _ ~ ~*
c qq -> q q
HCS = HCS + BUTSLL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,1,3142,10)
GOTO 9
ENDIF
HCS = HCS + BUTSRR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,3,3142,10)
GOTO 9
ENDIF
HCS = HCS + BUTSLR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,3,3142,10)
GOTO 9
ENDIF
HCS = HCS + BUTSRL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,1,3142,10)
GOTO 9
ENDIF
HCS = HCS + BUSTLL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,1,2413,10)
GOTO 9
ENDIF
HCS = HCS + BUSTRR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,3,2413,10)
GOTO 9
ENDIF
HCS = HCS + BUSTLR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,3,2413,10)
GOTO 9
ENDIF
HCS = HCS + BUSTRL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,1,2413,10)
GOTO 9
ENDIF
IQ = IGL
c _ ~ ~
c qq -> g g
HCS = HCS + CSTU(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ ,0,IQ ,0,2413,10)
GOTO 9
ENDIF
HCS = HCS + CSUT(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ ,0,IQ ,0,2341,10)
GOTO 9
ENDIF
END IF
ELSE
IQ2 = IGL
c ~ ~
c qg -> q g
HCS = HCS + CTSUL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,0,3142,10)
GOTO 9
ENDIF
HCS = HCS + CTSUR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,0,3142,10)
GOTO 9
ENDIF
HCS = HCS + CTUSL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,0,3421,10)
GOTO 9
ENDIF
HCS = HCS + CTUSR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,2,IQ2,0,3421,10)
GOTO 9
ENDIF
END IF
ELSEIF (ID1.NE.13) THEN
IQ1 = ID1 - 6
IF (ID2.LT.7) THEN
IQ2 = ID2
IF (IQ1.NE.IQ2) THEN
c _ ~*~
c qq' -> q q'
HCS = HCS + AUTSLL(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,0,2413,10)
GOTO 9
ENDIF
HCS = HCS + AUTSRR(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,2,2413,10)
GOTO 9
ENDIF
HCS = HCS + AUTSLR(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,2,2413,10)
GOTO 9
ENDIF
HCS = HCS + AUTSRL(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,0,2413,10)
GOTO 9
ENDIF
ELSE
c _ ~*~
c qq -> q'q' (q =/= q')
DO 31 IQ = 1, 6
IF (IQ .EQ.IQ1) GOTO 31
HCS = HCS + AUSTLL(IQ)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ ,1,IQ ,0,3142,10)
GOTO 9
ENDIF
HCS = HCS + AUSTRR(IQ)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ ,3,IQ ,2,3142,10)
GOTO 9
ENDIF
31 CONTINUE
c _ ~*~
c qq -> q q
HCS = HCS + BUTSLL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,0,2413,10)
GOTO 9
ENDIF
HCS = HCS + BUTSRR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,2,2413,10)
GOTO 9
ENDIF
HCS = HCS + BUTSLR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,2,2413,10)
GOTO 9
ENDIF
HCS = HCS + BUTSRL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,0,2413,10)
GOTO 9
ENDIF
HCS = HCS + BUSTLL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,0,3142,10)
GOTO 9
ENDIF
HCS = HCS + BUSTRR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,2,3142,10)
GOTO 9
ENDIF
HCS = HCS + BUSTLR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,2,3142,10)
GOTO 9
ENDIF
HCS = HCS + BUSTRL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,0,3142,10)
GOTO 9
ENDIF
c _ ~ ~
c qq -> g g
HCS = HCS + CSTU(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IGL,0,IGL,0,3142,10)
GOTO 9
ENDIF
HCS = HCS + CSUT(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IGL,0,IGL,0,4123,10)
GOTO 9
ENDIF
END IF
ELSEIF (ID2.NE.13) THEN
IQ2 = ID2 - 6
IF (IQ1.NE.IQ2) THEN
c __ ~*~*
c qq' -> q q'
HCS = HCS + ASTULL(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,1,4312,10)
GOTO 9
ENDIF
HCS = HCS + ASTURR(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,3,4312,10)
GOTO 9
ENDIF
HCS = HCS + ASTULR(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,3,4312,10)
GOTO 9
ENDIF
HCS = HCS + ASTURL(IQ1,IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,1,4312,10)
GOTO 9
ENDIF
ELSE
c __ ~*~*
c qq -> q q
HCS = HCS + BSTULL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,1,4312,10)
GOTO 9
ENDIF
HCS = HCS + BSTURR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,3,4312,10)
GOTO 9
ENDIF
HCS = HCS + BSTULR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,3,4312,10)
GOTO 9
ENDIF
HCS = HCS + BSTURL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,1,4312,10)
GOTO 9
ENDIF
HCS = HCS + BSUTLL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,1,3421,10)
GOTO 9
ENDIF
HCS = HCS + BSUTRR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,3,3421,10)
GOTO 9
ENDIF
HCS = HCS + BSUTLR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,3,3421,10)
GOTO 9
ENDIF
HCS = HCS + BSUTRL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,1,3421,10)
GOTO 9
ENDIF
END IF
ELSE
IQ2 = IGL
c _ ~*~
c qg -> q g
HCS = HCS + CTSUL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,0,2413,10)
GOTO 9
ENDIF
HCS = HCS + CTSUR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,0,2413,10)
GOTO 9
ENDIF
HCS = HCS + CTUSL(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,1,IQ2,0,4312,10)
GOTO 9
ENDIF
HCS = HCS + CTUSR(IQ1)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,3,IQ2,0,4312,10)
GOTO 9
ENDIF
END IF
ELSE
IQ1 = IGL
IF (ID2.LT.7) THEN
IQ2 = ID2
c ~ ~
c gq -> g q
HCS = HCS + CTSUL(IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,0,2413,10)
GOTO 9
ENDIF
HCS = HCS + CTSUR(IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,2,2413,10)
GOTO 9
ENDIF
HCS = HCS + CTUSL(IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,0,3421,10)
GOTO 9
ENDIF
HCS = HCS + CTUSR(IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,2,3421,10)
GOTO 9
ENDIF
ELSEIF (ID2.LT.13) THEN
IQ2 = ID2 - 6
c _ ~ ~*
c gq -> g q
HCS = HCS + CTSUL(IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,1,3142,10)
GOTO 9
ENDIF
HCS = HCS + CTSUR(IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,3,3142,10)
GOTO 9
ENDIF
HCS = HCS + CTUSL(IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,1,4312,10)
GOTO 9
ENDIF
HCS = HCS + CTUSR(IQ2)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,3,4312,10)
GOTO 9
ENDIF
ELSE
IQ2 = IGL
c ~ ~*
c gg -> q q
DO 32 IQ = 1, 6
HCS = HCS + CSTUL(IQ)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ ,0,IQ ,1,2413,10)
GOTO 9
ENDIF
HCS = HCS + CSTUR(IQ)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ ,2,IQ ,3,2413,10)
GOTO 9
ENDIF
HCS = HCS + CSUTL(IQ)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ ,0,IQ ,1,4123,10)
GOTO 9
ENDIF
HCS = HCS + CSUTR(IQ)*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ ,2,IQ ,3,4123,10)
GOTO 9
ENDIF
32 CONTINUE
c ~ ~
c gg -> g g
HCS = HCS + DTSU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,0,2341,10)
GOTO 9
ENDIF
HCS = HCS + DSTU*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,0,3421,10)
GOTO 9
ENDIF
HCS = HCS + DUTS*DIST
IF (GENEV.AND.HCS.GT.RCS) THEN
CALL HWHSSS(IQ1,0,IQ2,0,2413,10)
GOTO 9
ENDIF
END IF
END IF
5 CONTINUE
6 CONTINUE
EVWGT = HCS
RETURN
C---GENERATE EVENT
9 IDN(1)=ID1
IDN(2)=ID2
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
IF (AZSPIN) THEN
C Calculate coefficients for constructing spin density matrices
C Set to zero for now
CALL HWVZRO(7,GCOEF)
END IF
END
CDECK ID>, HWHSSP.
*CMZ :- -25/06/99 20.33.45 by Kosuke Odagiri
*-- Author : Kosuke Odagiri & Bryan Webber
C-----------------------------------------------------------------------
SUBROUTINE HWHSSP
C-----------------------------------------------------------------------
C SUSY HARD 2 PARTON -> 2 SPARTON/GAUGINO/SLEPTON PROCESSES
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION SAVWT(3),RANWT,HWRGEN,HWRUNI,Z1,Z2,ET,EJ,
& QPE,S,T,U,KK,KK2,YJ1INF,YJ1SUP,YJ2INF,YJ2SUP,SVEMSC
INTEGER ISP
EXTERNAL HWRGEN,HWRUNI
SAVE SAVWT,SVEMSC
IF (.NOT.GENEV) THEN
EVWGT=ZERO
CALL HWRPOW(ET,EJ)
KK = ET/PHEP(5,3)
KK2=KK**2
IF (KK.GE.ONE) RETURN
YJ1INF = MAX( YJMIN, LOG((ONE-SQRT(ONE-KK2))/KK) )
YJ1SUP = MIN( YJMAX, LOG((ONE+SQRT(ONE-KK2))/KK) )
IF (YJ1INF.GE.YJ1SUP) RETURN
Z1=EXP(HWRUNI(1,YJ1INF,YJ1SUP))
YJ2INF = MAX( YJMIN, -LOG(TWO/KK-ONE/Z1) )
YJ2SUP = MIN( YJMAX, LOG(TWO/KK-Z1) )
IF (YJ2INF.GE.YJ2SUP) RETURN
Z2=EXP(HWRUNI(2,YJ2INF,YJ2SUP))
XX(1)=HALF*(Z1+Z2)*KK
IF (XX(1).GE.ONE) RETURN
XX(2)=XX(1)/(Z1*Z2)
IF (XX(2).GE.ONE) RETURN
S=XX(1)*XX(2)*PHEP(5,3)**2
QPE=S-(TWO*RMMNSS)**2
IF (QPE.LE.ZERO) RETURN
COSTH=HALF*ET*(Z1-Z2)/SQRT(Z1*Z2*QPE)
IF (ABS(COSTH).GT.ONE) RETURN
T=-(ONE+Z2/Z1)*(HALF*ET)**2
U=-S-T
C---SET EMSCA TO HEAVY HARD PROCESS SCALE
SVEMSC = SQRT(TWO*S*T*U/(S*S+T*T+U*U))
FACTSS = GEV2NB*HALF*PIFAC*EJ*ET/S**2
& * (YJ1SUP-YJ1INF)*(YJ2SUP-YJ2INF)
& * SQRT(S/QPE)
ENDIF
EMSCA=SVEMSC
ISP=MOD(IPROC,100)
IF (ISP.EQ.0) THEN
IF (GENEV) THEN
RANWT=SAVWT(3)*HWRGEN(0)
IF (RANWT.LT.SAVWT(1)) THEN
CALL HWHSSQ
ELSEIF (RANWT.LT.SAVWT(2)) THEN
CALL HWHSSG
ELSE
CALL HWHSSL
ENDIF
ELSE
CALL HWHSSQ
SAVWT(1)=EVWGT
CALL HWHSSG
SAVWT(2)=SAVWT(1)+EVWGT
CALL HWHSSL
SAVWT(3)=SAVWT(2)+EVWGT
EVWGT=SAVWT(3)
ENDIF
ELSEIF (ISP.EQ.10) THEN
CALL HWHSSQ
ELSEIF (ISP.EQ.20) THEN
CALL HWHSSG
ELSEIF (ISP.EQ.30) THEN
CALL HWHSSL
ELSE
C---UNRECOGNIZED PROCESS
CALL HWWARN('HWHSSP',500)
ENDIF
END
CDECK ID>, HWHSSS.
*CMZ :- -18/05/99 20.33.45 by Kosuke Odagiri
*-- Author : Kosuke Odagiri
C-----------------------------------------------------------------------
SUBROUTINE HWHSSS(ID3,R3,ID4,R4,IPERM,IHPR)
C-----------------------------------------------------------------------
C IDENTIFIES HARD SUSY SUBPROCESS
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER ID3, R3, ID4, R4, IPERM, IHPR, SSL
PARAMETER (SSL = 400)
IHPRO = 3000 + IHPR
IDN(3) = SSL + ID3 + R3*6
IDN(4) = SSL + ID4 + R4*6
ICO(1) = IPERM/1000
ICO(2) = IPERM/100 - 10*ICO(1)
ICO(3) = IPERM/10 - 10*(IPERM/100)
ICO(4) = IPERM - 10*(IPERM/10)
END
CDECK ID>, HWHV1J.
*CMZ :- -18/05/99 14.37.45 by Mike Seymour
*-- Author : Mike Seymour
C-----------------------------------------------------------------------
SUBROUTINE HWHV1J
C-----------------------------------------------------------------------
C V + 1 JET PRODUCTION, WHERE V=W (IHPRO.LT.5) OR Z (IHPRO.GE.5).
C USES CROSS-SECTIONS OF EHLQ FOR ANNIHILATION AND COMPTON SCATTERING
C IHPRO=0 FOR BOTH, 1 FOR ANNIHILATION, AND 2 FOR COMPTON.
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,DISFAC(2,12,2),EMV2,DISMAX,S,T,U,
& SHAT,THAT,UHAT,Z,HWUALF,PT,EMT,GFACTR,SIGANN,SIGCOM(2),CSFAC,ET,
& EJ,YMIN,YMAX,VYMIN,VYMAX,EMAX,CV,CA,BR,EMV,GAMV,HWUAEM,TMIN,TMAX
INTEGER HWRINT,IDINIT(2,12,2),ICOFLO(4,2),I,J,K,L,M,ID1,ID2,
$ IDV,IDI,IDM
EXTERNAL HWRINT
SAVE DISFAC,SHAT,THAT,EMV,EMV2,IDV,IDI
SAVE IDINIT,ICOFLO
C---IDINIT HOLDS THE INITIAL STATES FOR ANNIHILATION PROCESSES
DATA IDINIT/1,8,2,7,3,10,4,9,5,12,6,11,1,10,2,9,3,8,4,7,5,12,6,11,
$ 1,7,2,8,3,9,4,10,5,11,6,12,1,7,2,8,3,9,4,10,5,11,6,12/
C---ICOFLO HOLDS THE COLOR FLOW FOR EACH PROCESS
C---DISFAC HOLDS THE DISTRIBUTION FUNCTION*CROSS-SECTION FOR EACH
C POSSIBLE SUB-PROCESS.
C INDEX1=INITIAL STATE PERMUTATION (1=AS IDINIT/QG;2=OPPOSITE/GQ),
C 2=QUARK (FOR ANNIHILATION, >6 IMPLIES CABIBBO ROTATED PAIR),
C 3=PROCESS (1=ANNIHILATION, 2=COMPTON)
DATA ICOFLO,DISFAC/2,4,3,1,4,1,3,2,48*0.D0/
IF (GENEV) THEN
DISMAX=0
DO 110 I=1,2
DO 110 J=1,12
DO 110 K=1,2
110 DISMAX=MAX(DISFAC(K,J,I),DISMAX)
120 I=HWRINT(1,2)
J=HWRINT(1,12)
K=HWRINT(1,2)
IF (HWRGEN(0)*DISMAX.GT.DISFAC(K,J,I)) GOTO 120
IF (I.EQ.1) THEN
C---ANNIHILATION
IDN(1)=IDINIT(K,J,IDI)
IDN(2)=IDINIT(3-K,J,IDI)
IDN(4)=13
ELSE
C---COMPTON SCATTERING
IDN(1)=J
IDN(2)=13
IF (IDV.EQ.200) THEN
IDN(4)=J
ELSE
IF (J.EQ.5.OR.J.EQ.6.OR.J.GE.11.OR.HWRGEN(0).GT.SCABI) THEN
C---CHANGE QUARKS (1->2,2->1,3->4,4->3,...)
IDN(4)=4*INT((J-1)/2)-J+3
ELSE
C---CHANGE AND CABIBBO ROTATE QUARKS (1->4,2->3,3->2,...)
IDN(4)=12*INT((J-1)/6)-J+5
ENDIF
ENDIF
IF ((SQRT(EMV2)+RMASS(IDN(4)))**2.GT.SHAT) GOTO 120
IF (K.EQ.2) THEN
C---SWAP INITIAL STATES
IDN(3)=IDN(1)
IDN(1)=IDN(2)
IDN(2)=IDN(3)
ENDIF
ENDIF
IF (IDV.EQ.200) THEN
IDN(3)=200
ELSE
C---W+ OR W-? USE CHARGE CONSERVATION TO WORK OUT
IDN(3)=NINT(198.5-.1667*FLOAT(ICHRG(IDN(1))+ICHRG(IDN(2))))
ENDIF
M=K
IF (I.EQ.2.AND.J.LE.6) M=3-K
DO 130 L=1,4
130 ICO(L)=ICOFLO(L,M)
IDCMF=15
COSTH=(SHAT+2*THAT-EMV2)/(SHAT-EMV2)
C---TRICK HWETWO INTO USING THE OFF-SHELL V MASS
RMASS(IDN(3))=SQRT(EMV2)
C-- BRW fix 27/8/04: avoid double smearing of V mass
CALL HWETWO(.FALSE.,.TRUE.)
RMASS(IDN(3))=EMV
RHOHEP(1,NHEP-1)=0.5
RHOHEP(2,NHEP-1)=0.0
RHOHEP(3,NHEP-1)=0.5
ELSE
EVWGT=0.
IHPRO=MOD(IPROC,100)/10
IF (IHPRO.LT.5) THEN
IDV=198
IDI=1
IDM=10
GAMV=GAMW
ELSE
IDV=200
IDI=2
IDM=6
GAMV=GAMZ
IHPRO=IHPRO-5
ENDIF
EMV=RMASS(IDV)
c---mhs---implement cut on number of widths from nominal mass
TMIN=-ATAN(2*GAMMAX-GAMV*GAMMAX**2/EMV)
TMAX=ATAN(2*GAMMAX+GAMV*GAMMAX**2/EMV)
EMV2=EMV*(EMV+GAMV*TAN(HWRUNI(0,TMIN,TMAX)))
IF (EMV2.LE.ZERO) RETURN
CALL HWRPOW(ET,EJ)
PT=0.5*ET
EMT=SQRT(PT**2+EMV2)
EMAX=0.5*(PHEP(5,3)+EMV2/PHEP(5,3))
IF (EMAX.LE.EMT) RETURN
VYMAX=0.5*LOG((EMAX+SQRT(EMAX**2-EMT**2))
& /(EMAX-SQRT(EMAX**2-EMT**2)))
VYMIN=-VYMAX
IF (VYMAX.LE.VYMIN) RETURN
Z=EXP(HWRUNI(0,VYMIN,VYMAX))
S= PHEP(5,3)**2
T=-PHEP(5,3)*EMT/Z+EMV2
U=-PHEP(5,3)*EMT*Z+EMV2
XXMIN=-U/(S+T-EMV2)
IF (XXMIN.LT.ZERO.OR.XXMIN.GT.ONE) RETURN
YMIN=MAX(LOG((XXMIN*PHEP(5,3)-EMT*Z)/PT),YJMIN)
YMAX=MIN(LOG((PHEP(5,3)-EMT*Z)/PT),YJMAX)
IF (YMAX.LE.YMIN) RETURN
XX(1)=(Z*EMT+EXP(HWRUNI(2,YMIN,YMAX))*PT)/PHEP(5,3)
IF (XX(1).LE.ZERO.OR.XX(1).GT.ONE) RETURN
THAT =XX(1)*T+(1.-XX(1))*EMV2
XX(2)=-THAT / (XX(1)*S+U-EMV2)
IF (XX(2).LT.ZERO.OR.XX(2).GT.ONE) RETURN
UHAT =XX(2)*U+(1.-XX(2))*EMV2
SHAT =XX(1)*XX(2)*S
EMSCA=EMT
CALL HWSGEN(.FALSE.)
c---mhs minor improvement: replace thomson coupling by running coupling
c---mhs bug fix: missing factor of m^2/m0^2, where m0 is nominal mass
GFACTR=GEV2NB*2.*PIFAC*HWUAEM(EMV2)*HWUALF(1,EMSCA)/(9.*SWEIN)
$ *EMV2/EMV**2
SIGANN=GFACTR*((THAT-EMV2)**2+(UHAT-EMV2)**2)
& /(SHAT**2*THAT*UHAT)
SIGCOM(2)=.375*GFACTR*(SHAT**2+UHAT**2+2*EMV2*THAT)
& /(-UHAT*SHAT**3)
SIGCOM(1)=.375*GFACTR*(SHAT**2+THAT**2+2*EMV2*UHAT)
& /(-THAT*SHAT**3)
C---IF USER SPECIFIED A SUB-PROCESS, ZERO THE OTHER
IF (IHPRO.EQ.1) THEN
SIGCOM(1)=0.
SIGCOM(2)=0.
ENDIF
IF (IHPRO.EQ.2) SIGANN=0.
DO 210 I=1,IDM
IF (IDV.EQ.200) THEN
J=I
IF(I.GT.6) J=I-6
DISFAC(1,I,1)=4*SWEIN*(VFCH(J,1)**2+AFCH(J,1)**2)
ELSE
IF (I.LE.4) THEN
DISFAC(1,I,1)=1-SCABI
ELSEIF (I.GE.7) THEN
DISFAC(1,I,1)=SCABI
ELSE
DISFAC(1,I,1)=1.
ENDIF
ENDIF
DISFAC(2,I,1)=DISFAC(1,I,1) *
& SIGANN*DISF(IDINIT(1,I,IDI),2)*DISF(IDINIT(2,I,IDI),1)
DISFAC(1,I,1)=DISFAC(1,I,1) *
& SIGANN*DISF(IDINIT(1,I,IDI),1)*DISF(IDINIT(2,I,IDI),2)
210 CONTINUE
DO 211 I=IDM+1,12
DISFAC(1,I,1)=0
DISFAC(2,I,1)=0
211 CONTINUE
DO 220 I=1,12
IF (IDV.EQ.200) THEN
J=I
IF(I.GT.6) J=I-6
DISFAC(1,I,2)=4*SWEIN*(VFCH(J,1)**2+AFCH(J,1)**2)
ELSE
DISFAC(1,I,2)=1.
c---mhs fix: switch off bg->Wt process since we neglect quark masses!
IF (I.EQ.5.OR.I.EQ.11) DISFAC(1,I,2)=0
ENDIF
DISFAC(2,I,2)=DISFAC(1,I,2)*SIGCOM(2)*DISF(I,2)*DISF(13,1)
DISFAC(1,I,2)=DISFAC(1,I,2)*SIGCOM(1)*DISF(I,1)*DISF(13,2)
220 CONTINUE
DO 230 I=1,2
DO 230 J=1,12
DO 230 K=1,2
230 EVWGT=EVWGT+DISFAC(K,J,I)
CSFAC=PT*EJ*(YMAX-YMIN)*(VYMAX-VYMIN)*(TMAX-TMIN)/PIFAC
C---INCLUDE BRANCHING RATIO OF V
CALL HWDBOZ(IDV,ID1,ID2,CV,CA,BR,0)
EVWGT=EVWGT*CSFAC*BR
ENDIF
END
CDECK ID>, HWHV2J.
*CMZ :- -14/03/01 09:03:25 by Peter Richardson
*-- Author : Peter Richardson
C-----------------------------------------------------------------------
SUBROUTINE HWHV2J
C-----------------------------------------------------------------------
C Vector Boson production with two hard jets
C Master subroutine for all vector boson + 2 jet processes
C Currently implemented qqbar Z only
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER I,J,K,IDBS,IPRC,IDP(6),ORD,IB,ICMF,IHEP,IFLOW,IZ,IBRAD,
& ICOL(5),IDZ,IQ
DOUBLE PRECISION HWRGEN,HWRUNI,XMASS,PLAB,PRW,PCM,HWUAEM,BR,FLUX,
& MBOS,MBOS2,ME,DT(4),B(6),HWUPCM,CV,CA,PST,HWUALF,GMBS,FPI4,
& MQ(3),MQ2(3),MJAC,BRZED(12),PTP(5,2),PDOT(2),HWULDO,TWOPI2,
& AMP,WI(IMAXCH)
DOUBLE COMPLEX S,D,F
LOGICAL FSTCLL,MASS,GEN
EXTERNAL HWRGEN,HWRUNI,HWUPCM,HWUALF,HWUAEM,HWULDO
COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10)
COMMON/HWHEWS/S(8,8,2),D(8,8)
COMMON/HWHZBB/F(8,8)
COMMON /HWPSOM/ WI
SAVE ME,MBOS,MBOS2,GMBS,IDBS,IPRC,IDP,FSTCLL,MQ,MQ2,TWOPI2,FPI4,
& IQ,MASS
SAVE B,BRZED
DATA B/-1.0D0,-1.0D0,1.0D0,1.0D0,1.0D0,1.0D0/
DATA BRZED/0.154D0,0.120D0,0.154D0,0.120D0,0.152D0,0.000D0,
& 0.033D0,0.067D0,0.033D0,0.067D0,0.033D0,0.067D0/
C--generate the event
IF(GENEV) THEN
C--find the particles produced
IF(IPRC.EQ.0) THEN
WRITE(*,1000)
STOP
ELSEIF(IPRC.GT.0.AND.IPRC.LE.16) THEN
CALL HWHDYQ(FSTCLL,ME,IFLOW,IDP,ORD,IQ,MASS)
ELSE
CALL HWWARN('HWHV2J',502)
ENDIF
IF(ORD.EQ.2) THEN
IB = IDP(1)
IDP(1) = IDP(2)
IDP(2) = IB
PRW(3,1) = -PRW(3,1)
DO I=3,6
PLAB(3,I)=-PLAB(3,I)
ENDDO
ENDIF
C--enter the incoming particles
ICMF = NHEP+3
DO I=1,2
IHEP = NHEP+I
CALL HWVEQU(5,PLAB(1,I),PHEP(1,IHEP))
IDHW(IHEP) = IDP(I)
IDHEP(IHEP)= IDPDG(IDP(I))
ISTHEP(IHEP)=110+I
JMOHEP(1,IHEP)=ICMF
JMOHEP(I,ICMF)=IHEP
JDAHEP(1,IHEP)=ICMF
ENDDO
IDHW(ICMF)=15
IDHEP(ICMF)=IDPDG(15)
ISTHEP(ICMF)=110
CALL HWVSUM(4,PHEP(1,NHEP+1),PHEP(1,NHEP+2),PHEP(1,ICMF))
CALL HWUMAS(PHEP(1,ICMF))
JDAHEP(1,ICMF) = ICMF+1
JDAHEP(2,ICMF) = ICMF+3
NHEP = NHEP+3
C--Now the outgoing jets
DO 10 I=1,2
CALL HWVEQU(5,PLAB(1,2+I),PHEP(1,NHEP+I))
C--Set the status and pointers
ISTHEP(NHEP+I)=113
IDHW(NHEP+I)=IDP(2+I)
IDHEP(NHEP+I)=IDPDG(IDP(2+I))
JMOHEP(1,NHEP+I)=NHEP
10 CONTINUE
NHEP=NHEP+2
C--Now sort out the colour connections
ICOL(1)=IFLOW/1000
ICOL(2)=IFLOW/100-10*ICOL(1)
ICOL(3)=IFLOW/10 -10*(IFLOW/100)
ICOL(4)=IFLOW -10*(IFLOW/10)
DO 30 I=1,4
J=I
IF (J.GT.2) J=J+1
K=ICOL(I)
IF (K.GT.2) K=K+1
JMOHEP(2,NHEP-5+J)=NHEP+K-5
30 JDAHEP(2,NHEP-5+K)=NHEP+J-5
C--Now add the Z to the event record
CALL HWVEQU(5,PRW(1,1),PHEP(1,NHEP+1))
CALL HWVZRO(4,VHEP(1,NHEP+1))
CALL HWUDKL(200,PHEP(1,NHEP+1),DT)
CALL HWVSUM(4,VHEP(1,NHEP+1),DT,DT)
IDHW(NHEP+1)=IDBS
IDHEP(NHEP+1)=IDPDG(IDBS)
JMOHEP(1,NHEP+1)=ICMF
JMOHEP(2,NHEP+1)=ICMF
ISTHEP(NHEP+1)=114
NHEP = NHEP+1
IBRAD = NHEP
C--generate the inital-state shower
CALL HWBGEN
C--now add the decay products of the Z
IZ = JDAHEP(1,IBRAD)
ISTHEP(IZ) = 195
JDAHEP(1,IZ) = NHEP+1
JDAHEP(2,IZ) = NHEP+2
IDHW(NHEP+1) = IDP(5)
IDHW(NHEP+2) = IDP(6)
ISTHEP(NHEP+1) = 113
ISTHEP(NHEP+2) = 114
IDHEP(NHEP+1) = IDPDG(IDP(5))
IDHEP(NHEP+2) = IDPDG(IDP(6))
JMOHEP(1,NHEP+1) = IZ
JMOHEP(1,NHEP+2) = IZ
JMOHEP(2,NHEP+1) = NHEP+2
JDAHEP(2,NHEP+1) = NHEP+2
JMOHEP(2,NHEP+2) = NHEP+1
JDAHEP(2,NHEP+2) = NHEP+1
CALL HWVEQU(5,PLAB(1,5),PHEP(1,NHEP+1))
CALL HWVEQU(5,PLAB(1,6),PHEP(1,NHEP+2))
DO IHEP=NHEP+1,NHEP+2
CALL HWVEQU(4,DT,VHEP(1,IHEP))
C--Boost the fermion momenta to the rest frame of the original Z
CALL HWULOF(PRW(1,1),PHEP(1,IHEP),PHEP(1,IHEP))
C--Now boost back to the lab from rest frame of the Z after radiation
CALL HWULOB(PHEP(1,IZ),PHEP(1,IHEP),PHEP(1,IHEP))
ENDDO
NHEP = NHEP+2
ELSE
C--initialisation
IF(FSTWGT) THEN
C--for second option minimum invariant mass of the jet pair
C--set the type of events to be generated
TWOPI2= FOUR*PIFAC**2
FPI4 = (FOUR*PIFAC)**4
IPRC = MOD(IPROC,100)
IF(IPRC.GE.0.AND.IPRC.LE.16) THEN
C--Z + 2 jets
MBOS = RMASS(200)
MBOS2 = MBOS**2
GMBS = MBOS2*GAMZ**2
IDBS = 200
MQ(1) = ZERO
MQ(2) = ZERO
IF(IPRC.EQ.0) THEN
IQ = 0
ELSEIF(IPRC.GT.0.AND.IPRC.LE.6) THEN
IQ = IPRC
IF(MJJMIN.LT.TWO*RMASS(IQ)) MJJMIN = TWO*RMASS(IQ)
ELSEIF(IPRC.GE.11.AND.IPRC.LE.16) THEN
MASS = .TRUE.
IQ = IPRC-10
MQ(1) = RMASS(IQ)
MQ(2) = RMASS(IQ)
IF(MJJMIN.LT.(MQ(1)+MQ(2))) MJJMIN = MQ(1)+MQ(2)
ELSE
CALL HWWARN('HWHV2J',500)
ENDIF
DO I=1,2
MQ2(I) = MQ(I)**2
ENDDO
ELSE
CALL HWWARN('HWHV2J',503)
ENDIF
FSTCLL = .TRUE.
ENDIF
C--generate the weight
EVWGT = ZERO
C--find the mass of the gauge boson
CALL HWHGB1(1,2,IDBS,MJAC,MQ2(3),(PHEP(5,3)-MQ(1)-MQ(2))**2,
& EMMIN**2)
MQ(3) = SQRT(MQ2(3))
MJAC = MJAC/((MQ2(3)-MBOS2)**2+GMBS)
C--do the phase space
CALL HWH2PS(FLUX,GEN,MQ,MQ2)
AMP = ONE
IF(.NOT.GEN) RETURN
C--copy the gauge boson momentum
CALL HWVEQU(5,PLAB(1,5),PRW(1,1))
C--select the decay mode of the boson
CALL HWDBOZ(IDBS,IDP(5),IDP(6),CV,CA,BR,0)
IDZ = IDP(5)
IF(IDZ.GT.6) IDZ = IDZ-114
BR = BR/BRZED(IDZ)
IF(IDZ.LE.6) AMP = AMP*THREE
C--Finds the momenta of the boson decay products
PST=HWUPCM(PRW(5,1),ZERO,ZERO)
PLAB(5,5)=ZERO
PLAB(5,6)=ZERO
IF(PRW(5,1).LT.(RMASS(IDP(5))+RMASS(IDP(6)))) RETURN
CALL HWDTWO(PRW(1,1),PLAB(1,5),PLAB(1,6),PST,TWO,.FALSE.)
MJAC = HALF*PST*MJAC/TWOPI2/MQ(3)
C--copy the momenta, change order and boost to CMF
PTP(1,1) = ZERO
PTP(2,1) = ZERO
PTP(3,1) = HALF*(XX(1)-XX(2))*PHEP(5,3)
PTP(4,1) = HALF*(XX(1)+XX(2))*PHEP(5,3)
PTP(5,1) = PHEP(5,3)*SQRT(XX(1)*XX(2))
DO I=1,6
CALL HWULOF(PTP(1,1),PLAB(1,I),PTP(1,2))
PCM(1,I)=PTP(3,2)
PCM(2,I)=PTP(1,2)
PCM(3,I)=PTP(2,2)
PCM(4,I)=PTP(4,2)
ENDDO
IF(MASS) THEN
C--Massive momentum case
C--reorder the products
C--move b and bbar to 9 and 10
DO I=3,4
DO J=1,5
PCM(J,I+6) = PCM(J,I)
ENDDO
ENDDO
C--select the reference momenta for the b and bbar and put in 3,4
C--the results is independent of this choice
CALL HWVEQU(5,PCM(1,1),PCM(1,3))
CALL HWVEQU(5,PCM(1,1),PCM(1,4))
C--find the massless vectors for the b and bbar
PDOT(1) = HALF*MQ2(1)/HWULDO(PCM(1,3),PCM(1, 9))
PDOT(2) = HALF*MQ2(2)/HWULDO(PCM(1,4),PCM(1,10))
DO I=1,4
PCM(I,7) = PCM(I,9) -PDOT(1)*PCM(I,3)
PCM(I,8) = PCM(I,10)-PDOT(2)*PCM(I,4)
ENDDO
PCM(5,7) = ZERO
PCM(5,8) = ZERO
C--use e+e- code to calculate the spinor products
CALL HWHEW2(8,PCM(1,1),S(1,1,2),S(1,1,1),D)
DO I=1,8
DO J=1,8
S(I,J,2) = -S(I,J,2)
D(I,J) = TWO*D(I,J)
ENDDO
ENDDO
ELSE
C--Massless case, use the e+e- code to calculate the spinor products
CALL HWHEW2(6,PCM(1,1),S(1,1,2),S(1,1,1),D)
DO I=1,6
DO J=1,6
D(I,J) = TWO*D(I,J)
F(I,J) = B(I)*B(J)*D(I,J)
S(I,J,2) = -S(I,J,2)
ENDDO
ENDDO
ENDIF
C--now call the code to calculate the matrix element*PDF
IF(IPRC.EQ.0) THEN
WRITE(*,1000)
STOP
ELSEIF(IPRC.GT.0.AND.IPRC.LE.16) THEN
CALL HWHDYQ(FSTCLL,ME,IFLOW,IDP,ORD,IQ,MASS)
ELSE
CALL HWWARN('HWHV2J',501)
GOTO 999
ENDIF
AMP = AMP*MJAC*BR*FPI4*HWUAEM(EMSCA**2)**2*HWUALF(1,EMSCA)**2
EVWGT = FLUX*ME*AMP
IF(OPTM) THEN
DO I=1,IMAXCH
IF(CHON(I)) WI(I) = WI(I)*ME**2*AMP**2
ENDDO
ENDIF
ENDIF
RETURN
1000 FORMAT('DRELL-YAN + 2 JETS NOT YET IMPLEMENTED')
999 RETURN
END
CDECK ID>, HWHVVJ.
*CMZ :- -11/05/01 09.19.45 by Bryan Webber
*-- Author : Bryan Webber
C-----------------------------------------------------------------------
SUBROUTINE HWHVVJ
C-----------------------------------------------------------------------
C VV + 1 JET PRODUCTION, WHERE VV=WW,ZZ,WZ FOR IPROC=2850,2860,2870
C-----------------------------------------------------------------------
IMPLICIT NONE
PRINT *,' VV + 1 JET CALLED BUT NOT YET IMPLEMENTED'
CALL HWWARN('HWHVVJ',500)
END
CDECK ID>, HWHWEX.
*CMZ :- -26/04/91 14.55.45 by Federico Carminati
*-- Author : Mike Seymour
C-----------------------------------------------------------------------
SUBROUTINE HWHWEX
C-----------------------------------------------------------------------
C TOP QUARK PRODUCTION VIA W EXCHANGE: MEAN EVWGT=TOP PROD C-S IN NB
C C-S IS SUM OF:
C UbarBbar, DBbar, DbarB, UB, CbarBbar, SBbar, SbarB, AND CB
C UNLESS USER SPECIFIES OTHERWISE BY MOD(IPROC,100)=1-8 RESPECTIVELY
C---DSDCOS HOLDS THE CROSS-SECTIONS FOR THE PROCESSES LISTED ABOVE
C (1-8) ARE WITH B FROM BEAM 1, (9-16) ARE WITH B FROM BEAM 2.
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,DSDCOS(16),EMT2,EMT,EMW2,EMW,
& CMFMIN,TAUMIN,TAUMLN,S,T,U,ROOTS,DSMAX
INTEGER HWRINT,IDHWEX(2,16),I
EXTERNAL HWRGEN,HWRUNI,HWRINT
SAVE DSDCOS,DSMAX
EQUIVALENCE (EMW,RMASS(198)),(EMT,RMASS(6))
C---IDHWEX HOLDS THE IDs OF THE INCOMING PARTICLES FOR EACH SUB-PROCESS
SAVE IDHWEX
DATA IDHWEX/11,8,11,1,5,7,5,2,11,10,11,3,5,9,5,4,
& 8,11,1,11,7,5,2,5,10,11,3,11,9,5,4,5/
EMT2=EMT**2
EMW2=EMW**2
IF (GENEV) THEN
300 IHPRO=HWRINT(1,16)
IF (HWRGEN(0).GT.DSDCOS(IHPRO)/DSMAX) GOTO 300
DO 10 I=1,2
IDN(I)=IDHWEX(I,IHPRO)
IF (IDN(I).EQ.5 .OR. IDN(I).EQ.11) THEN
C---CHANGE B QUARK INTO T QUARK
IDN(I+2)=IDN(I)+1
ELSEIF (HWRGEN(0).GT.SCABI) THEN
C---CHANGE QUARKS (1->2,2->1,3->4,4->3,7->8,8->7,...)
IDN(I+2)=4*INT((IDN(I)-1)/2)-IDN(I)+3
ELSE
C---CHANGE AND CABIBBO ROTATE QUARKS (1->4,2->3,3->2,4->1,7->10,...)
IDN(I+2)=12*INT((IDN(I)-1)/6)-IDN(I)+5
ENDIF
ICO(I)=I+2
ICO(I+2)=I
10 CONTINUE
IDCMF=15
CALL HWETWO(.TRUE.,.TRUE.)
ELSE
EVWGT=0.
CMFMIN=EMT
TAUMIN=(CMFMIN/PHEP(5,3))**2
TAUMLN=LOG(TAUMIN)
ROOTS=PHEP(5,3)*SQRT(EXP(HWRUNI(0,ZERO,TAUMLN)))
XXMIN=(ROOTS/PHEP(5,3))**2
XLMIN=LOG(XXMIN)
COSTH=HWRUNI(0,-ONE, ONE)
S=ROOTS**2
T=-0.5*S*(1-COSTH)
U=-0.5*S*(1+COSTH)
EMSCA=SQRT(2*S*T*U/(S*S+T*T+U*U))
DSDCOS(1)=GEV2NB*PIFAC*.125*(ALPHEM/SWEIN)**2
& *(S-EMT2)**2 / S / (EMW2 + 0.5*(S-EMT2)*(1-COSTH))**2
DSDCOS(2)=DSDCOS(1) / 4
& * (1 + EMT2/S + 2*COSTH + (1-EMT2/S)*COSTH**2)
DSDCOS(3)=DSDCOS(2)
DSDCOS(4)=DSDCOS(1)
C---IF USER SPECIFIED SUB-PROCESS THEN ZERO ALL THE OTHERS
IHPRO=MOD(IPROC,100)
IF (IHPRO.GT.8) THEN
CALL HWWARN('HWHWEX',1)
IHPRO=0
ENDIF
DO 100 I=1,8
IF (I.LE.4) DSDCOS(I+4)=DSDCOS(I)
IF (IHPRO.NE.0 .AND. IHPRO.NE.I) DSDCOS(I)=0
DSDCOS(I+8)=DSDCOS(I)
100 CONTINUE
CALL HWSGEN(.TRUE.)
DSMAX=0
DO 200 I=1,16
DSDCOS(I)=DSDCOS(I)*DISF(IDHWEX(1,I),1)*DISF(IDHWEX(2,I),2)
EVWGT=EVWGT + 2*TAUMLN*XLMIN*DSDCOS(I)
IF (DSDCOS(I).GT.DSMAX) DSMAX=DSDCOS(I)
200 CONTINUE
ENDIF
END
CDECK ID>, HWHWPR.
*CMZ :- -18/05/99 14.22.13 by Mike Seymour
*-- Author : Bryan Webber
C-----------------------------------------------------------------------
SUBROUTINE HWHWPR
C-----------------------------------------------------------------------
C W+/- PRODUCTION AND DECAY VIA DRELL-YAN PROCESS
C MEAN EVWGT IS SIG(W+/-)*(BRANCHING FRACTION) IN NB
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION HWRGEN,HWRUNI,HWUPCM,PRAN,PROB,COEF,CSFAC,EMW,
& FTQK,PTOP,ETOP,EBOT,PMAX,FHAD,FTOT,BRAF,FLEP,TMIN,HWUAEM,TMAX
INTEGER HWRINT,ICH,IC,IL,ID,IDEC,JDEC,IWP(2,16)
LOGICAL HWRLOG
EXTERNAL HWRGEN,HWRUNI,HWUPCM,HWRINT,HWRLOG
SAVE CSFAC,IDEC,FLEP,FTQK,ETOP,PTOP,EBOT,PMAX,PROB
SAVE IWP
DATA IWP/2,7,1,8,7,2,8,1,4,9,3,10,9,4,10,3,
& 2,9,3,8,9,2,8,3,4,7,1,10,7,4,10,1/
IF (GENEV) THEN
C---GENERATE EVENT (X'S AND STRUCTURE FUNCTIONS ALREADY FOUND)
PRAN=PROB*HWRGEN(0)
C---LOOP OVER PARTON FLAVOURS
PROB=0.
COEF=1.-SCABI
DO 10 IC=1,16
IF (IC.EQ.9) COEF=SCABI
PROB=PROB+DISF(IWP(1,IC),1)*DISF(IWP(2,IC),2)*COEF
IF (PROB.GE.PRAN) GOTO 20
10 CONTINUE
C---STORE INCOMING PARTONS
20 IDN(1)=IWP(1,IC)
IDN(2)=IWP(2,IC)
ICO(1)=2
ICO(2)=1
C---ICH=1/2 FOR W+/-
ICH=2-MOD(IC,2)
IF ((IDEC.GT.49.AND.IDEC.LT.54).OR.
& (IDEC.EQ.99.AND.HWRLOG(FLEP))) THEN
C---LEPTONIC DECAY
IL=IDEC-50
IF (IL.EQ.0.OR.IL.GT.3) IL=HWRINT(1,3)
IDN(3)=2*IL+121-ICH
IDN(4)=2*IL+124+ICH
C---W DECAY ANGLE (1+COSTH)**2
COSTH=2.*HWRGEN(1)**0.3333-1.
ELSEIF (IDEC.EQ.5.OR.IDEC.EQ.6.OR.
& ((IDEC.EQ.0.OR.IDEC.EQ.99).AND.HWRLOG(FTQK))) THEN
C---W -> TOP + BOTTOM DECAY
IDN(3)=7-ICH
IDN(4)=10+ICH
21 COSTH=HWRUNI(1,-ONE, ONE)
IF ((ETOP+(PTOP*COSTH))*(EBOT+(PTOP*COSTH)).LT.
& PMAX*HWRGEN(1)) GOTO 21
ELSE
C---OTHER HADRONIC DECAY
25 PROB=0.
PRAN=2.*HWRGEN(2)
COEF=1.-SCABI
DO 30 ID=ICH,16,4
IF (ID.GT.8) COEF=SCABI
PROB=PROB+COEF
IF (PROB.GE.PRAN) THEN
IDN(3)=IWP(1,ID)
IDN(4)=IWP(2,ID)
GOTO 40
ENDIF
30 CONTINUE
40 CONTINUE
IF (IDEC.GT.0.AND.IDEC.LT.5) THEN
JDEC=IDEC+6
IF (IDN(3).NE.IDEC.AND.IDN(4).NE.IDEC
& .AND.IDN(3).NE.JDEC.AND.IDN(4).NE.JDEC) GOTO 25
ENDIF
COSTH=2.*HWRGEN(1)**0.3333-1.
ENDIF
IDCMF=197+ICH
IF (IDN(1).GT.6) COSTH=-COSTH
ICO(3)=4
ICO(4)=3
CALL HWETWO(.TRUE.,.TRUE.)
ELSE
IDEC=MOD(IPROC,100)
IF (IDEC.EQ.5.OR.IDEC.EQ.6) THEN
TMIN=ATAN((RMASS(6)**2-RMASS(199)**2)/(GAMW*RMASS(199)))
ELSE
TMIN=-ATAN(RMASS(199)/GAMW)
ENDIF
EVWGT=0.
c---mhs---implement cut on number of widths from nominal mass
TMIN=MAX(TMIN,-ATAN(2*GAMMAX-GAMW*GAMMAX**2/RMASS(199)))
TMAX=ATAN(2*GAMMAX+GAMW*GAMMAX**2/RMASS(199))
EMW=GAMW*TAN(HWRUNI(0,TMIN,TMAX))+RMASS(199)
IF (EMW.LE.ZERO) RETURN
EMW=SQRT(EMW*RMASS(199))
IF (EMW.LE.QSPAC.OR.EMW.GE.PHEP(5,3)) RETURN
EMSCA=EMW
IF (EMLST.NE.EMW) THEN
EMLST=EMW
XXMIN=(EMW/PHEP(5,3))**2
XLMIN=LOG(XXMIN)
CSFAC=-GEV2NB*PIFAC**2*HWUAEM(EMSCA**2)
& /(3.*SWEIN*RMASS(199)**2)*XLMIN
C---COMPUTE TOP AND LEPTONIC FRACTIONS
FTQK=0.
IF (NFLAV.GT.5) THEN
PTOP=HWUPCM(EMW,RMASS(5),RMASS(6))
IF (PTOP.GT.ZERO) THEN
ETOP=SQRT(PTOP**2+RMASS(6)**2)
EBOT=EMW-ETOP
FTQK=2.*PTOP*(3.*ETOP*EBOT+PTOP**2)/EMW**3
PMAX=(ETOP+PTOP)*(EBOT+PTOP)
ENDIF
ENDIF
FHAD=FTQK+2.
FTOT=FTQK+3.
C---MULTIPLY WEIGHT BY BRANCHING FRACTION
IF (IDEC.EQ.0) THEN
BRAF=FHAD
ELSEIF (IDEC.LT.5.OR.IDEC.EQ.50) THEN
BRAF=1.
ELSEIF (IDEC.LT.7) THEN
BRAF=FTQK
ELSEIF (IDEC.EQ.99) THEN
BRAF=FTOT
ELSE
BRAF=1/THREE
ENDIF
c---mhs fix: normalization should be to on-shell total width
c (only different if chosen mass is above top threshold)
CSFAC=CSFAC*BRAF/THREE*(TMAX-TMIN)/PIFAC
FTQK=FTQK/FHAD
FLEP=1./FTOT
ENDIF
CALL HWSGEN(.TRUE.)
C---LOOP OVER PARTON FLAVOURS
PROB=0.
COEF=1.-SCABI
DO 100 IC=1,16
IF (IC.EQ.9) COEF=SCABI
PROB=PROB+DISF(IWP(1,IC),1)*DISF(IWP(2,IC),2)*COEF
100 CONTINUE
EVWGT=PROB*CSFAC
ENDIF
END
CDECK ID>, HWICHK.
*-- Author : M. Kirsanov
C-----------------------------------------------------------------------
SUBROUTINE HWICHK
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
IF(RMASS(1).LT.0.1.OR.RMASS(1).GT.1.0.OR.
& FMRS(1,1,20,1).LT.0.1.OR.FMRS(1,1,20,1).GT.1.0) THEN
STOP 'Block data hwudat not loaded, stop execution'
ENDIF
END
CDECK ID>, HWIODK.
*CMZ :- -27/07/99 13.33.03 by Mike Seymour
*-- Author : Ian Knowles
C-----------------------------------------------------------------------
SUBROUTINE HWIODK(IUNIT,IOPT,IME)
C-----------------------------------------------------------------------
C If IUNIT > 0 writes out present HERWIG decay tables to unit IUNIT
C < 0 reads in decay tables from unit IUNIT
C The format used during the read/write is specified by IOPT
C =1 PDG; =2 HERWIG numeric; =3 HERWIG character name.
C When reading in if IME =1 matrix element codes >= 100 are accepted
C 0 are set zero.
C-----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
INTEGER IUNIT,IOPT,IME,JUNIT,I,J,K,L,IDKY,ITMP(5),IDUM
CHARACTER*8 CDK(NMXDKS),CDKPRD(5,NMXDKS),CDUM
JUNIT=ABS(IUNIT)
OPEN(UNIT=JUNIT,FORM='FORMATTED',STATUS='UNKNOWN')
IF (IUNIT.GT.0) THEN
C Write out the decay table
WRITE(JUNIT,100) NDKYS
IF (IOPT.EQ.1) THEN
DO 20 I=1,NRES
IF (NMODES(I).EQ.0) GOTO 20
K=LSTRT(I)
DO 10 J=1,NMODES(I)
WRITE(JUNIT,110) IDPDG(I),BRFRAC(K),NME(K),
& (IDPDG(IDKPRD(L,K)),L=1,5)
10 K=LNEXT(K)
20 CONTINUE
ELSEIF (IOPT.EQ.2) THEN
DO 40 I=1,NRES
IF (NMODES(I).EQ.0) GOTO 40
K=LSTRT(I)
DO 30 J=1,NMODES(I)
WRITE(JUNIT,120) I,BRFRAC(K),NME(K),(IDKPRD(L,K),L=1,5)
30 K=LNEXT(K)
40 CONTINUE
ELSEIF (IOPT.EQ.3) THEN
DO 60 I=1,NRES
IF (NMODES(I).EQ.0) GOTO 60
K=LSTRT(I)
DO 50 J=1,NMODES(I)
WRITE(JUNIT,130) RNAME(I),BRFRAC(K),NME(K),
& (RNAME(IDKPRD(L,K)),L=1,5)
50 K=LNEXT(K)
60 CONTINUE
ENDIF
ELSEIF (IUNIT.LT.0) THEN
C Read in the decay table and convert to HERWIG numeric format
READ(JUNIT,100) NDKYS
IF (NDKYS.GT.NMXDKS) THEN
CALL HWWARN('HWIODK',100)
GOTO 999
ENDIF
IF (IOPT.EQ.1) THEN
DO 70 I=1,NDKYS
READ(JUNIT,110) IDKY,BRFRAC(I),NME(I),ITMP
IF (IME.EQ.0.AND.NME(I).GE.100) NME(I)=0
CALL HWUIDT(1,IDKY,IDK(I),CDUM)
DO 70 J=1,5
70 CALL HWUIDT(1,ITMP(J),IDKPRD(J,I),CDUM)
ELSEIF (IOPT.EQ.2) THEN
DO 80 I=1,NDKYS
READ(JUNIT,120) IDK(I),BRFRAC(I),NME(I),(IDKPRD(J,I),J=1,5)
IF (IDK(I).LT.0.OR.IDK(I).GT.NRES) IDK(I)=20
80 IF (IME.EQ.0.AND.NME(I).GE.100) NME(I)=0
ELSEIF (IOPT.EQ.3) THEN
DO 90 I=1,NDKYS
READ(JUNIT,130) CDK(I),BRFRAC(I),NME(I),(CDKPRD(J,I),J=1,5)
IF (IME.EQ.0.AND.NME(I).GE.100) NME(I)=0
CALL HWUIDT(3,IDUM,IDK(I),CDK(I))
DO 90 J=1,5
90 CALL HWUIDT(3,IDUM,IDKPRD(J,I),CDKPRD(J,I))
ELSE
CALL HWWARN('HWIODK',101)
GOTO 999
ENDIF
ENDIF
CLOSE(UNIT=JUNIT)
100 FORMAT(1X,I4)
110 FORMAT(1X,I7,1X,F7.5,1X,I3,5(1X,I7))
120 FORMAT(1X,I3,1X,F7.5,6(1X,I3))
130 FORMAT(1X,A8,1X,F7.5,1X,I3,5(1X,A8))
999 RETURN
END
CDECK ID>, HWIGIN.
*CMZ :- -12/10/01 09.50.50 by Peter Richardson
*-- Author : Bryan Webber
C----------------------------------------------------------------------
SUBROUTINE HWIGIN
C-----------------------------------------------------------------------
C SETS INPUT PARAMETERS
C----------------------------------------------------------------------
INCLUDE 'HERWIG65.INC'
DOUBLE PRECISION FAC,ANGLE
INTEGER I,J,N,L
CHARACTER*28 TITLE
SAVE TITLE
DATA TITLE/'HERWIG 6.510 31st Oct. 2005'/
WRITE (6,10) TITLE
10 FORMAT(//10X,A28//,
& 10X,'Please reference: G. Marchesini, B.R. Webber,',/,
& 10X,'G.Abbiendi, I.G.Knowles, M.H.Seymour & L.Stanco',/,
& 10X,'Computer Physics Communications 67 (1992) 465',/,
& 10X,' and',/,
& 10X,'G.Corcella, I.G.Knowles, G.Marchesini, S.Moretti,'
& ,/, 10X,'K.Odagiri, P.Richardson, M.H.Seymour & B.R.Webber,'
& ,/, 10X,'JHEP 0101 (2001) 010')
CALL HWICHK
C---PRINT OPTIONS:
C IPRINT=0 NO PRINTOUT
C 1 PRINT SELECTED INPUT PARAMETERS
C 2 1 + TABLE OF PARTICLE CODES AND PROPERTIES
C 3 2 + TABLES OF SUDAKOV FORM FACTORS
IPRINT=1
C Format for track numbers in event listing
C PRNDEC=.TRUE. use decimal
C .FALSE. use hexadecimal
PRNDEC=(NMXHEP.LE.9999)
C Number of significant figures to print out in event listing
C NPRFMT (< 2) compact 80 character stout and A4-long tex output,
C (= 2) 2 decimal places in stout, (> 2) - 5 decimal places in stout
NPRFMT=1
C Print out vertex information
PRVTX=.TRUE.
C Print out particle properties/event record to stout, tex or web
PRNDEF=.TRUE.
PRNTEX=.FALSE.
PRNWEB=.FALSE.
C---MAX NO OF EVENTS TO PRINT
MAXPR=1
C---UNIT FOR READING SUDAKOV FORM FACTORS (IF ZERO THEN COMPUTE THEM)
LRSUD=0
C---UNIT FOR WRITING SUDAKOV FORM FACTORS (IF ZERO THEN NOT WRITTEN)
LWSUD=77
C---UNIT FOR WRITING EVENT DATA IN HWANAL (IF ZERO THEN NOT WRITTEN)
LWEVT=0
C---SEEDS FOR RANDOM NUMBER GENERATOR (CALLED HWRGEN)
NRN(1)= 17673
NRN(2)= 63565
C---ALLOW NEGATIVE WEIGHTS?
NEGWTS=.FALSE.
C---AZIMUTHAL CORRELATIONS?
C THESE INCLUDE SOFT GLUON (INSIDE CONE)
AZSOFT=.TRUE.
C AND NEAREST-NEIGHBOUR SPIN CORRELATIONS
AZSPIN=.TRUE.
C---MATRIX-ELEMENT MATCHING FOR E+E-, DIS, DRELL-YAN AND TOP DECAY
C---HARD EMISSION
HARDME=.TRUE.
C---SOFT EMISSION
SOFTME=.TRUE.
C---GLUON ENERGY CUT FOR TOP DECAY CASE
GCUTME=2
C Electromagnetic fine structure constant: Thomson limit
ALPHEM=.0072993
C---QCD LAMBDA: CORRESPONDS TO 5-FLAVOUR LAMBDA-MS-BAR AT LARGE X ONLY
QCDLAM=0.18
C---NUMBER OF COLOURS
NCOLO=3
C---NUMBER OF FLAVOURS
NFLAV=6
C---QUARK, GLUON AND PHOTON VIRTUAL MASS CUTOFFS IN
C PARTON SHOWER (ADDED TO MASSES GIVEN BELOW)
VQCUT=0.48
VGCUT=0.10
VPCUT=0.40
ALPFAC=1
C---D,U,S,C,B,T QUARK AND GLUON MASSES (IN THAT ORDER)
RMASS(1)=0.32
RMASS(2)=0.32
RMASS(3)=0.5
RMASS(4)=1.55
RMASS(5)=4.95
RMASS(6)=174.3
RMASS(13)=0.75
C---W+/- AND Z0 MASSES
RMASS(198)=80.42
RMASS(199)=80.42
RMASS(200)=91.188
C---HIGGS BOSON MASS
RMASS(201)=115.
C---WIDTHS OF W, Z, HIGGS
GAMW=2.12
GAMZ=2.495
C SM Higgs width is actually recomputed by HWDHIG
C but this value corresponds to RMASS(201)=115.
GAMH=0.0037
C Include additional neutral, massive vector boson (Z')
ZPRIME=.FALSE.
C Z' mass and width
RMASS(202)=500.
GAMZP=5.
C Graviton properties
C Graviton mass and width (default mass 1 TeV and calculated width)
EMGRV = 1000.0D0
GAMGRV = ZERO
C Graviton coupling (this has dimensions of mass)
GRVLAM = 10000.0D0
C Lepton (EPOLN) and anti-lepton (PPOLN) beam polarisations used in:
C e+e- --> ffbar/qqbar g; and l/lbar N DIS.
C Cpts. 1,2 Transverse polarisation; cpt. 3 longitudinal polarisation.
C Note require POLN(1)**2+POLN(2)**2+POLN(3)**2 < 1.
DO 20 I=1,3
EPOLN(I)=0.
20 PPOLN(I)=0.
C-----------------------------------------------------------------------
C Specify couplings of weak vector bosons to fermions:
C
C electric current: QFCH(I)*e*G_mu (electric charge, e>0)
C weak neutral current: [VFCH(I,J).1+AFCH(I,J).G_5]*e*G_mu
C weak charged current: SQRT(VCKM(K,L)/2.)*g*(1+G_5)*G_mu
C
C I= 1- 6: d,u,s,c,b,t (quarks)
C =11-16: e,nu_e,mu,nu_mu,tau,nu_tau (leptons) (`I=IDHW-110')
C J=1 for minimal SM:
C =2 for Z' couplings (ZPRIME=.TRUE.)
C K=1,2,3 for u,c,t; L=1,2,3 for d,s,b
C-----------------------------------------------------------------------
C Minimal standard model neutral vector boson couplings
C VFCH(I,1)=(T3/2-Q*S^2_W)/(C_W*S_W); AFCH(I,1)=T3/(2*C_W*S_W)
C sin**2 Weinberg angle (PDG '94)
SWEIN=.2319
FAC=1./SQRT(SWEIN*(1.-SWEIN))
DO 30 I=1,3
C Down-type quarks
J=2*I-1
QFCH(J)=-1./3.
VFCH(J,1)=(-0.25+SWEIN/3.)*FAC
AFCH(J,1)= -0.25*FAC
C Up-type quarks
J=2*I
QFCH(J)=+2./3.
VFCH(J,1)=(+0.25-2.*SWEIN/3.)*FAC
AFCH(J,1)= +0.25*FAC
C Charged leptons
J=2*I+9
QFCH(J)=-1.
VFCH(J,1)=(-0.25+SWEIN)*FAC
AFCH(J,1)= -0.25*FAC
C Neutrinos
J=2*I+10
QFCH(J)=0.
VFCH(J,1)=+0.25*FAC
AFCH(J,1)=+0.25*FAC
30 CONTINUE
C Additional Z' couplings (To be set by the user)
IF (.NOT.ZPRIME) THEN
DO 40 I=1,6
AFCH(I,2)=0.
AFCH(10+I,2)=0.
VFCH(I,2)=0.
VFCH(10+I,2)=0.
40 CONTINUE
ENDIF
C--calculate left and right couplings of bosons for axial and vector ones
DO 45 J=1,16
IF(J.LE.6.OR.J.GE.11) THEN
LFCH(J)=VFCH(J,1)+AFCH(J,1)
RFCH(J)=VFCH(J,1)-AFCH(J,1)
ENDIF
45 CONTINUE
C Cabibbo-Kobayashi-Maskawa matrix elements squared (PDG '92):
C sin**2 of Cabibbo angle
SCABI=.0488
C u ---> d,s,b
VCKM(1,1)=1.-SCABI
VCKM(1,2)=SCABI
VCKM(1,3)=0.0
C c ---> d,s,b
VCKM(2,1)=SCABI
VCKM(2,2)=1.-SCABI-.002
VCKM(2,3)=0.002
C t ---> d,b,s
VCKM(3,1)=0.0
VCKM(3,2)=0.002
VCKM(3,3)=0.998
C---GAUGE BOSON DECAYS
DO 50 I=1,12
BRHIG(I)=1.D0/12
ENHANC(I)=1.D0
50 CONTINUE
DO 55 I=1,MODMAX
MODBOS(I)=0
55 CONTINUE
C
C THE iTH GAUGE BOSON DECAY PER EVENT IS CONTROLLED BY MODBOS AS FOLLOWS
C MODBOS(i) W DECAY Z DECAY
C 0 all all
C 1 qqbar qqbar
C 2 enu e+e-
C 3 munu mu+mu-
C 4 taunu tau+tau-
C 5 enu & munu ee & mumu
C 6 all nunu
C 7 all bbbar
C >7 all all
C BOSON PAIRS (eg FROM HIGGS DECAY)ARE CHOSEN FROM MODBOS(i),MODBOS(i+1)
C
C---CONTROL OF LARGE EMH BEHAVIOUR (SEE HWHIGM FOR DETAILS)
IOPHIG=3
GAMMAX=10.
C Specify approximation used in HWHIGA
IAPHIG=1
C---MASSES OF HYPOTHETICAL NEW QUARKS GO
C INTO 209-214 (ANTIQUARKS IN 215-220)
C ID = 209,210 ARE B',T' WITH DECAYS T'->B'->C
C 211,212 ARE B',T' WITH DECAYS T'->B'->T
C 215-218 ARE THEIR ANTIQUARKS
RMASS(209)=200.
RMASS(215)=200.
C---MAXIMUM CLUSTER MASS PARAMETERS
C N.B. LIMIT FOR Q1-Q2BAR CLUSTER MASS
C IS (CLMAX**CLPOW + (QM1+QM2)**CLPOW)**(1/CLPOW)
CLMAX=3.35
CLPOW=2.0
C For PSPLT(I), CLDIR(I) & CLSMR(I): I=1 light u,d,s,c cluster
C =2 heavy b cluster
C---MASS SPECTRUM OF PRODUCTS IN CLUSTER
C SPLITTING ABOVE CLMAX - FLAT IN M**PSPLT(*)
PSPLT(1)=1.0
PSPLT(2)=PSPLT(1)
C---KINEMATIC TREATMENT OF CLUSTER DECAY
C 0=ISOTROPIC, 1=REMEMBER DIRECTION OF PERTURBATIVELY PRODUCED QUARKS
CLDIR(1)=1
CLDIR(2)=CLDIR(1)
C IF CLDIR(*)=1, DO GAUSSIAN SMEARING OF DIRECTION:
C ACTUALLY EXPONENTIAL IN 1-COS(THETA) WITH MEAN CLSMR(*)
CLSMR(1)=0.0
CLSMR(2)=CLSMR(1)
C---OPTION FOR TREATMENT OF REMNANT CLUSTERS:
C 0=BOTH CHILDREN ARE SOFT, (EQUIVALENT TO PREVIOUS VERSIONS)
C 1=REMNANT CHILD IS SOFT, BUT PERTURBATIVE CHILD IS NORMAL
IOPREM=1
C---TREATMENT OF LOWER LIMIT FOR SPACELIKE EVOLUTION
C 0=EVOLUTION STOPS AT QSPAC, BUT STRUCT FUNS CAN GET CALLED AT
C SMALLER SCALES IN FORCED EMISSION (EQUIVALENT TO V5.7 AND EARLIER)
C 1=EVOLUTION STOPS AT QSPAC, STRUCTURE FUNCTIONS FREEZE AT QSPAC
C 2=EVOLUTION CONTINUES TO INFRARED CUT, BUT S.F.S FREEZE AT QSPAC
ISPAC=0
C---LOWER LIMIT FOR SPACELIKE EVOLUTION
QSPAC=2.5
C---SWITCH OFF SPACE-LIKE SHOWERS
NOSPAC=.FALSE.
C---INTRINSIC PT OF SPACELIKE PARTONS (RMS)
PTRMS=0.0
C---MASS PARAMETER IN REMNANT FRAGMENTATION
BTCLM=1.0
C---PARAMETERS CONTROLLING VERY SMALL-X BEHAVIOUR OF PDFS
PDFX0=0
PDFPOW=0
C---STRUCTURE FUNCTION SET:
C SET MODPDF(I)=MODE AND AUTPDF='AUTHOR GROUP' TO USE CERN LIBRARY
C PDFLIB PACKAGE FOR STRUCTURE FUNCTIONS IN BEAM I
MODPDF(1)=-1
MODPDF(2)=-1
AUTPDF(1)='MRS'
AUTPDF(2)='MRS'
C OR SET MODPDF(I)=-1 TO USE BUILT-IN STRUCTURE FUNCTION SET:
C 1,2 FOR DUKE+OWENS SETS 1,2 (SOFT/HARD GLUE)
C 3,4 FOR EICHTEN+AL SETS 1,2 (NUCLEONS ONLY)
C 5 FOR OWENS SET 1.1 (SOFT GLUE ONLY)
C 6 FOR MRST98LO central alpha_s/gluon
C 7 FOR MRST98LO higher gluon
C 8 FOR MRST98LO average of central and higher gluon (default)
NSTRU=8
C PARAMETER FOR B CLUSTER DECAY TO 1 HADRON. IF MCL IS CLUSTER MASS
C AND MTH IS THRESHOLD FOR 2-HADRON DECAY, THEN PROBABILITY IS
C 1 IF MCL