4 *CMZ :- -18/10/99 19.08.45 by Mike Seymour
6 *-- Author : Bryan Webber
8 C-----------------------------------------------------------------------
10 SUBROUTINE HWSBRN(KPAR)
12 C-----------------------------------------------------------------------
14 C DOES BRANCHING OF SPACELIKE PARTON KPAR
16 C-----------------------------------------------------------------------
18 INCLUDE 'HERWIG61.INC'
20 DOUBLE PRECISION HWBVMC,HWR,HWRUNI,HWSTAB,HWUALF,HWUTAB,HWSGQQ,
22 & HWSSUD,XLAST,QNOW,QLST,QP,QMIN,QLAM,QSAV,SMAX,SLST,SNOW,RN,SUDA,
24 & SUDB,ZZ,ENOW,XI,PMOM,DIST(13),DMIN,X1,X2,REJFAC,OTHXI,OTHZ,QTMP,
26 & PTMP(2),JAC,OTHJAC,S,T,U
28 INTEGER N0,IS,ID,ID1,ID2,IDHAD,N1,I,MQ,NTRY,NDEL,NA,NB,IW1,IW2,
30 & KPAR,LPAR,MPAR,ISUD(13),IREJ,NREJ
32 LOGICAL HWSVAL,FORCE,VALPAR,FTMP
34 EXTERNAL HWBVMC,HWR,HWRUNI,HWSTAB,HWUALF,HWUTAB,HWSGQQ,HWSSUD,
38 COMMON/HWTABC/XLAST,N0,IS,ID
40 DATA ISUD,DMIN/2,2,3,4,5,6,2,2,3,4,5,6,1,1.D-15/
42 IF (IERROR.NE.0) RETURN
46 C--TEST FOR PARTON TYPE
52 ELSEIF (ID.GE.208) THEN
66 C--SPACELIKE PARTON BRANCHING
76 XLAST=XFACT*PPAR(4,KPAR)
78 IF (XLAST.GE.ONE) CALL HWWARN('HWSBRN',107,*999)
86 ELSEIF (ID.EQ.13) THEN
92 QMIN=.5*(QP+QV+SQRT((QP-QV)**2+4.*QP*QV*XLAST))/(1.-XLAST)
98 IF (QMIN.LE.QSPAC.AND.ISPAC.LT.2) THEN
104 ELSEIF (QMIN.LE.QEV(1,IS)) THEN
114 IF (QEV(I,IS).GT.QMIN) GOTO 120
132 IF (QLST.GT.QMIN.AND..NOT.NOSPAC.OR..NOT.VALPAR) THEN
134 IF (QLST.LE.QMIN) THEN
136 C--CHECK PHASE SPACE FOR FORCED SPLITTING OF NON-VALENCE PARTON
138 IF (QLST.LT.QSAV) CALL HWWARN('HWSBRN',ISLENT*105,*999)
142 QNOW=(QLST/QSAV)**HWR()*QSAV
146 C--ENHANCE EMISSION BY A FACTOR OF TWO IF THIS BRANCH
148 C IS CAPABLE OF BEING THE HARDEST SO FAR
150 IF (QLST.GT.HARDST) NREJ=2
156 C--FIND NEW VALUE OF SUD/DIST
158 CALL HWSFUN(XLAST,QMIN,IDHAD,NSTRU,DIST,JNHAD)
160 IF (ID.EQ.13) DIST(ID)=DIST(ID)*HWSGQQ(QMIN)
162 IF (DIST(ID).LT.DMIN) DIST(ID)=DMIN
164 SMAX=HWUTAB(SUD(N1,IS),QEV(N1,IS),MQ,QMIN,INTER)/DIST(ID)
166 CALL HWSFUN(XLAST,QLST,IDHAD,NSTRU,DIST,JNHAD)
168 IF (ID.EQ.13) DIST(ID)=DIST(ID)*HWSGQQ(QLST)
170 IF (DIST(ID).LT.DMIN) DIST(ID)=DMIN
172 SLST=HWUTAB(SUD(N1,IS),QEV(N1,IS),MQ,QLST,INTER)/DIST(ID)
186 IF (VALPAR.AND.SNOW.GE.SMAX) GOTO 200
188 IF (SNOW.LT.SMAX.AND..NOT.NOSPAC) THEN
194 C--FORCE SPLITTING OF NON-VALENCE PARTON
198 QNOW=(MIN(QLST,1.1*QMIN)/QSAV)**HWR()*QSAV
202 IF (QNOW.LT.ZERO) THEN
204 C--BRANCHING OCCURS. FIRST CHECK FOR MONOTONIC FORM FACTOR
214 IF (NB.GT.NQEV) CALL HWWARN('HWSBRN',103,*999)
216 CALL HWSFUN(XLAST,QEV(NB,IS),IDHAD,NSTRU,DIST,JNHAD)
218 IF (ID.EQ.13) DIST(ID)=DIST(ID)*HWSGQQ(QEV(NB,IS))
220 IF (DIST(ID).LT.DMIN) DIST(ID)=DMIN
222 SUDB=SUD(NB,IS)/DIST(ID)
224 IF (SUDB.GT.SUDA) THEN
232 ELSEIF (NA.NE.N1) THEN
234 IF (SUDB.LT.SNOW) THEN
238 IF (NDEL.EQ.0) CALL HWWARN('HWSBRN',100,*999)
254 QNOW=HWSTAB(QEV(N1,IS),HWSSUD,MQ,SNOW,INTER)
256 IF (QNOW.LE.QMIN.OR.QNOW.GT.QLST) THEN
258 C--INTERPOLATION PROBLEM: USE LINEAR INSTEAD
260 C CALL HWWARN('HWSBRN',1,*999)
262 QNOW=HWRUNI(0,QMIN,QLST)
270 IF (QNOW.GT.QTMP) THEN
288 IF (QNOW.LT.ZERO) GOTO 210
292 CALL HWSFBR(XLAST,QNOW,FORCE,ID,1,ID1,ID2,IW1,IW2,ZZ)
296 C--NO PHASE SPACE FOR BRANCHING
302 ELSEIF (ID1.EQ.0) THEN
304 C--BRANCHING REJECTED: REDUCE Q AND REPEAT
306 IF (NTRY.GT.NBTRY.OR.IERROR.NE.0)
308 $ CALL HWWARN('HWSBRN',102,*999)
316 ELSEIF (ID1.EQ.59) THEN
318 C--ANOMALOUS PHOTON SPLITTING: ADD PT TO INTRINSIC PT AND STOP BRANCHING
320 IF (IDHAD.NE.59) CALL HWWARN('HWSBRN',109,*999)
322 ENOW=PPAR(4,KPAR)/XLAST
328 IF ((2.-XI)*QLAM**2.GT.EMSCA**2) THEN
330 C--BRANCHING REJECTED: REDUCE Q AND REPEAT
332 IF (NTRY.GT.NBTRY) CALL HWWARN('HWSBRN',110,*999)
342 CALL HWRAZM(QNOW*(1.-XLAST),PTMP(1),PTMP(2))
344 CALL HWVSUM(2,PTMP,PTINT(1,JNHAD),PTINT(1,JNHAD))
346 PTINT(3,JNHAD)=PTINT(1,JNHAD)**2+PTINT(2,JNHAD)**2
350 ANOMSC(2,JNHAD)=QNOW*(1.-XLAST)
358 ELSEIF (FORCE.AND..NOT.HWSVAL(ID1).AND.ID1.NE.13) THEN
360 C--FORCED BRANCHING PRODUCED A NON-VALENCE PARTON: TRY AGAIN
362 IF (NTRY.GT.NBTRY) CALL HWWARN('HWSBRN',108,*999)
376 IF (QNOW.GT.ZERO) THEN
378 C--BRANCHING HAS OCCURRED
386 IF (SUDORD.EQ.1.AND.HWUALF(2,QLAM).LT.HWR() .OR.
388 & (2.-XI)*QLAM**2.GT.EMSCA**2.AND..NOT.FORCE) THEN
390 C--BRANCHING REJECTED: REDUCE Q AND REPEAT
392 IF (NTRY.GT.NBTRY) CALL HWWARN('HWSBRN',104,*999)
402 C--IF THIS IS HARDEST EMISSION SO FAR, APPLY MATRIX-ELEMENT CORRECTION
408 IF (QLAM.GT.HARDST .AND. ID.NE.13) THEN
410 IF (MOD(ISTHEP(JCOPAR(1,1)),10).GE.3) THEN
412 C---COLOUR PARTNER IS OUTGOING (X1=XP, X2=ZP)
414 X2=SQRT((ZZ**2-(1-ZZ)*XI)**2+2*(ZZ*(1-ZZ))**2*XI*(2-XI))
416 X1=(ZZ**2+(1-ZZ)*XI-X2)/(2*(1-ZZ)*XI)
418 X2=(ZZ**2-(1-ZZ)*XI+X2)/(2*ZZ**2)
424 REJFAC=ZZ**3*(1-X1-X2+2*X1*X2)
426 $ /(X1**2*(1-ZZ)*(ZZ+XI*(1-ZZ)))
428 $ *(1+ZZ**2)/((1-ZZ)*XI)
432 $ (1+(1-X1-X2+2*X1*X2)**2+2*(1-X1)*(1-X2)*X1*X2)
434 C---CHECK WHETHER IT IS IN THE OVERLAP REGION
436 OTHXI=2*(1-X1)/(1-X1+2*(3*X1-2)*X2*(1-X2))
438 IF (OTHXI.LT.ONE) THEN
440 OTHZ=(1-(2*X2-1)*SQRT((3*X1-2)/X1))/2
442 REJFAC=REJFAC+SQRT(3-2/X1)/(X1**2*OTHZ*(1-OTHZ))
444 $ *(1+(1-OTHZ)**2)/(OTHZ*OTHXI)
448 $ (1+(1-X1-X2+2*X1*X2)**2+2*(1-X1)*(1-X2)*X1*X2)
452 ELSEIF (ID1.EQ.13) THEN
456 REJFAC=ZZ**3*(1-X1-X2+2*X1*X2)
458 $ /(X1**2*(1-ZZ)*(ZZ+XI*(1-ZZ)))
460 $ *(ZZ**2+(1-ZZ)**2)/XI
464 $ (( X1+X2-2*X1*X2)**2+2*(1-X1)*(1-X2)*X1*X2
466 $ +(1-X1-X2+2*X1*X2)**2+2*(1-X1)*(1-X2)*X1*X2)
472 C---COLOUR PARTNER IS ALSO INCOMING
476 S=2*(ZZ**2+(1-ZZ)*XI)/(ZZ**2*(2*ZZ+XI*(1-ZZ)))
480 JAC=-T*(1-T)/S**2*ZZ**5/(XI*(1-ZZ)**2*(ZZ+XI*(1-ZZ)))
486 REJFAC=(1+ZZ**2)/((1-ZZ)*ZZ*XI)
488 & *JAC*S**2*T*U/((1-U)**2+(1-T)**2)
490 C---CHECK WHETHER IT IS IN THE OVERLAPPING REGION
492 OTHZ=(1+SQRT(1-2*U*(1-U)/S))/U
494 OTHXI=2*(1-OTHZ+T/S)/(1-OTHZ)
496 IF (OTHXI.LT.OTHZ**2) THEN
498 OTHJAC=-U*(1-U)/S**2*OTHZ**5/(OTHXI*
500 & (1-OTHZ)**2*(OTHZ+OTHXI*(1-OTHZ)))
502 REJFAC=REJFAC+(1+OTHZ**2)/((1-OTHZ)*OTHZ*OTHXI)
504 & *OTHJAC*S**2*T*U/((1-U)**2+(1-T)**2)
508 ELSEIF (ID1.EQ.13) THEN
512 REJFAC=-((1-ZZ)**2+ZZ**2)/(ZZ*XI)
514 & *JAC*S**3*T/((1-S)**2+(1-T)**2)
522 IF (NREJ*REJFAC*HWR().GT.ONE) THEN
532 IF (QLAM.GT.HARDST) HARDST=QLAM
542 C---NEW MOTHER-DAUGHTER RELATIONS
544 C N.B. DEFINED MOVING AWAY FROM HARD PROCESS
550 C---NEW COLOUR CONNECTIONS
606 PPAR(1,MPAR)=QNOW*(1.-ZZ)
610 PPAR(4,MPAR)=ENOW*(1.-ZZ)
618 IF (QNOW.LT.ZERO) THEN
632 C---PUT SPECTATOR (APPROXIMATELY) ON-SHELL
634 XLAST=XFACT*PPAR(4,KPAR)
636 IF ((1-XLAST)**2.LT.(RMASS(ID)**2+PTINT(3,JNHAD))*XFACT**2)
646 PPAR(5,KPAR)=-(RMASS(ID)**2*XLAST+PTINT(3,JNHAD))/(1.-XLAST)
648 & +XLAST*SIGN(PHEP(5,INHAD)**2,PHEP(5,INHAD))
650 ELSEIF (ID.EQ.IDHW(INHAD)) THEN
652 C---IF INCOMING PARTON IS INCOMING BEAM, ALLOW IT TO BE OFF-SHELL
654 PPAR(5,KPAR)=SIGN(PHEP(5,INHAD)**2,PHEP(5,INHAD))
658 PPAR(5,KPAR)=RMASS(ID)**2
662 PMOM=PPAR(4,KPAR)**2-PPAR(5,KPAR)
664 IF (PMOM.LT.ZERO) THEN
672 PPAR(3,KPAR)=SQRT(PMOM)
680 *CMZ := =26/04/91 12.47.48 by Federico Carminati
682 *-- Author : Drees, Grassie, Charchula, modified by Bryan Webber
684 C ===============================================================
686 C DREES & GRASSIE PARAMETRIZATION OF PHOTON STRUCTURE FUNCTION
690 C HWSDGQ(X,Q2,NFL,NCH) - X*QUARK_IN_PHOTON/ALPHA (!)
692 C HWSDGG(X,Q2,NFL) - X*GLUON_IN_PHOTON/ALPHA (!)
696 C (INTEGER) NCH - QUARK CHARGE: 1 FOR 1/3
700 C (INTEGER) NFL - NUMBER OF QUARK FLAVOURS /3 OR 4/
702 C Q2 - SQUARE OF MOMENTUM Q /IN GEV2/
704 C X - LONGITUDINAL FRACTION
710 C NFL=3: 1 < Q2 < 50 GEV^2
712 C NFL=4: 20 < Q2 < 500 GEV^2
714 C NFL=5: 200 < Q2 < 10^4 GEV^2
720 C KRZYSZTOF CHARCHULA /14.02.1989/
722 C================================================================
726 C PS. Note that for the case of three flavors, one has to add
728 C the QPM charm contribution for getting F2.
732 C================================================================
734 C MODIFIED FOR HERWIG BY BRW 19/4/91
736 C--- -----------------------------------------------
738 C GLUON PART OF THE PHOTON SF
740 C--- -----------------------------------------------
742 FUNCTION HWSDGG(X,Q2,NFL)
744 IMPLICIT REAL (A-H,P-Z)
748 DIMENSION A(3,4,3),AT(3)
754 C- --- CHECK WHETHER NFL HAVE RIGHT VALUES -----
756 IF (.NOT.((NFL.EQ.3).OR.(NFL.EQ.4).OR.(NFL.EQ.5)))THEN
760 131 FORMAT(' NUMBER OF FLAVOURS(NFL) HAS NOT BEEN SET TO: 3,4 OR 5;'/
762 *' NFL=3 IS ASSUMED')
770 132 FORMAT(' HWSDGG CALLED WITH SCALE < LAMBDA. RETURNING ZERO.')
778 C ------ INITIALIZATION OF PARAMETERS ARRAY -----
780 DATA(((A(I,J,K),I=1,3),J=1,4),K=1,3)/
782 + -0.20700,-0.19870, 5.11900,
784 + 0.61580, 0.62570,-0.27520,
786 + 1.07400, 8.35200,-6.99300,
788 + 0.00000, 5.02400, 2.29800,
790 + 0.8926E-2, 0.05090,-0.23130,
792 + 0.659400, 0.27740, 0.13820,
794 + 0.476600,-0.39060, 6.54200,
796 + 0.019750,-0.32120, 0.51620,
798 + 0.031970, -0.618E-2, -0.1216,
800 + 1.0180, 0.94760, 0.90470,
802 + 0.24610, -0.60940, 2.6530,
804 + 0.027070, -0.010670, 0.2003E-2/
806 C ------ Q2 DEPENDENCE -----------
812 AT(I)=A(I,1,LF)*T**A(I,2,LF)+A(I,3,LF)*T**(-A(I,4,LF))
816 C ------ GLUON DISTRIBUTION -------------
818 HWSDGG=AT(1)*X**AT(2)*(1.0-X)**AT(3)/137.