File indexing completed on 2025-08-05 08:21:12
0001
0002
0003
0004
0005
0006
0007
0008 SUBROUTINE PYJOIN(NJOIN,IJOIN)
0009
0010
0011 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0012 IMPLICIT INTEGER(I-N)
0013 INTEGER PYK,PYCHGE,PYCOMP
0014
0015 COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
0016 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0017 COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
0018 SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
0019
0020 DIMENSION IJOIN(*)
0021
0022
0023 IF(NJOIN.LT.2) GOTO 120
0024 KQSUM=0
0025 DO 100 IJN=1,NJOIN
0026 I=IJOIN(IJN)
0027 IF(I.LE.0.OR.I.GT.N) GOTO 120
0028 IF(K(I,1).LT.1.OR.K(I,1).GT.3) GOTO 120
0029 KC=PYCOMP(K(I,2))
0030 IF(KC.EQ.0) GOTO 120
0031 KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
0032 IF(KQ.EQ.0) GOTO 120
0033 IF(IJN.NE.1.AND.IJN.NE.NJOIN.AND.KQ.NE.2) GOTO 120
0034 IF(KQ.NE.2) KQSUM=KQSUM+KQ
0035 IF(IJN.EQ.1) KQS=KQ
0036 100 CONTINUE
0037 IF(KQSUM.NE.0) GOTO 120
0038
0039
0040 KCS=(9-KQS)/2
0041 IF(KQS.EQ.2) KCS=INT(4.5D0+PYR(0))
0042 DO 110 IJN=1,NJOIN
0043 I=IJOIN(IJN)
0044 K(I,1)=3
0045 IF(IJN.NE.1) IP=IJOIN(IJN-1)
0046 IF(IJN.EQ.1) IP=IJOIN(NJOIN)
0047 IF(IJN.NE.NJOIN) IN=IJOIN(IJN+1)
0048 IF(IJN.EQ.NJOIN) IN=IJOIN(1)
0049 K(I,KCS)=MSTU(5)*IN
0050 K(I,9-KCS)=MSTU(5)*IP
0051 IF(IJN.EQ.1.AND.KQS.NE.2) K(I,9-KCS)=0
0052 IF(IJN.EQ.NJOIN.AND.KQS.NE.2) K(I,KCS)=0
0053 110 CONTINUE
0054
0055
0056 RETURN
0057 120 CALL PYERRM(12,
0058 &'(PYJOIN:) given entries can not be joined by one string')
0059
0060 RETURN
0061 END