Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:21:12

0001  
0002 C*********************************************************************
0003  
0004 C...PYJOIN
0005 C...Connects a sequence of partons with colour flow indices,
0006 C...as required for subsequent shower evolution (or other operations).
0007  
0008       SUBROUTINE PYJOIN(NJOIN,IJOIN)
0009  
0010 C...Double precision and integer declarations.
0011       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0012       IMPLICIT INTEGER(I-N)
0013       INTEGER PYK,PYCHGE,PYCOMP
0014 C...Commonblocks.
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 C...Local array.
0020       DIMENSION IJOIN(*)
0021  
0022 C...Check that partons are of right types to be connected.
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 C...Connect the partons sequentially (closing for gluon loop).
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 C...Error exit: no action taken.
0056       RETURN
0057   120 CALL PYERRM(12,
0058      &'(PYJOIN:) given entries can not be joined by one string')
0059  
0060       RETURN
0061       END