File indexing completed on 2025-08-05 08:21:09
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 SUBROUTINE PYCTTR(I,KCS,IEND)
0013
0014 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0015 INTEGER PYK,PYCHGE,PYCOMP
0016
0017 COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
0018 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0019 COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
0020 COMMON/PYINT1/MINT(400),VINT(400)
0021
0022 COMMON/PYCTAG/NCT,MCT(4000,2)
0023 SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/,/PYCTAG/
0024 DATA NERRPR/0/
0025 SAVE NERRPR
0026
0027
0028 IF (K(I,1).LE.0) GOTO 120
0029 KC=PYCOMP(K(I,2))
0030 IF (KC.EQ.0) GOTO 120
0031 KQ=KCHG(KC,2)
0032 IF (KQ.EQ.0) GOTO 120
0033 IF (IABS(KQ).EQ.1.AND.KQ*(9-2*ABS(KCS)).NE.ISIGN(1,K(I,2)))
0034 & GOTO 120
0035
0036 IF (KCS.GT.0) THEN
0037 NCT=NCT+1
0038
0039 MCT(I,KCS-3)=NCT
0040 NCS=NCT
0041 ELSE
0042 KCS=-KCS
0043 NCS=MCT(I,KCS-3)
0044 IF (NCS.EQ.0) GOTO 120
0045 ENDIF
0046
0047 IA=I
0048 NSTP=0
0049 100 NSTP=NSTP+1
0050 IF(NSTP.GT.4*N) THEN
0051 CALL PYERRM(14,'(PYCTTR:) caught in infinite loop')
0052 GOTO 120
0053 ENDIF
0054
0055
0056 IF(K(IA,1).EQ.3) THEN
0057 IF(NSTP.GE.2.AND.KCHG(PYCOMP(K(IA,2)),2).NE.2) GOTO 120
0058 ENDIF
0059
0060
0061 IF(K(IA,1).EQ.42) THEN
0062 GOTO 120
0063 ENDIF
0064
0065
0066 110 IB=IA
0067
0068 IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5))
0069 & .NE.0) THEN
0070 IA=MOD(K(IB,KCS),MSTU(5))
0071 K(IB,KCS)=K(IB,KCS)+MSTU(5)**2
0072 MREV=0
0073 ELSE
0074
0075 IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),
0076 & MSTU(5)).EQ.0) THEN
0077 KCS=9-KCS
0078 NCT=NCT+1
0079 NCS=NCT
0080
0081 MCT(IB,KCS-3)=NCT
0082 ENDIF
0083
0084 IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5))
0085 K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2
0086 MREV=1
0087 ENDIF
0088 IF(IA.LE.0.OR.IA.GT.N) THEN
0089 CALL PYERRM(12,'(PYCTTR:) colour tag tracing failed')
0090 IF(NERRPR.LT.5) THEN
0091 write(*,*) 'began at ',I
0092 write(*,*) 'ended going from', IB, ' to', IA, ' KCS=',KCS,
0093 & ' NCS=',NCS,' MREV=',MREV
0094 CALL PYLIST(4)
0095 NERRPR=NERRPR+1
0096 ENDIF
0097 MINT(51)=1
0098 RETURN
0099 ENDIF
0100 IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5),
0101 & MSTU(5)).EQ.IB) THEN
0102 IF(MREV.EQ.1) KCS=9-KCS
0103 IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS
0104
0105 K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2
0106 ELSE
0107 IF(MREV.EQ.0) KCS=9-KCS
0108 IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS
0109
0110 K(IA,KCS)=K(IA,KCS)+MSTU(5)**2
0111 ENDIF
0112
0113 MCT(IA,KCS-3)=NCS
0114 IF(IA.NE.I.AND.IA.NE.IEND) GOTO 100
0115
0116 120 RETURN
0117 END