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 'HERWIG61.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))) THEN 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