File indexing completed on 2025-08-05 08:21:14
0001
0002
0003
0004
0005
0006
0007
0008
0009 SUBROUTINE PYPILE(MPILE)
0010
0011
0012 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0013 IMPLICIT INTEGER(I-N)
0014 INTEGER PYK,PYCHGE,PYCOMP
0015
0016 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0017 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
0018 COMMON/PYINT1/MINT(400),VINT(400)
0019 COMMON/PYINT7/SIGT(0:6,0:6,0:5)
0020 SAVE /PYDAT1/,/PYPARS/,/PYINT1/,/PYINT7/
0021
0022 DIMENSION WTI(0:200)
0023 SAVE IMIN,IMAX,WTI,WTS
0024
0025
0026 IF(MPILE.EQ.1) THEN
0027 VINT(131)=SIGT(0,0,5)
0028 IF(MSTP(132).GE.2) VINT(131)=VINT(131)+SIGT(0,0,4)
0029 IF(MSTP(132).GE.3) VINT(131)=VINT(131)+SIGT(0,0,2)+SIGT(0,0,3)
0030 IF(MSTP(132).GE.4) VINT(131)=VINT(131)+SIGT(0,0,1)
0031 IF(MSTP(133).LE.0) RETURN
0032
0033
0034 XNAVE=VINT(131)*PARP(131)
0035 IF(XNAVE.GT.120D0) WRITE(MSTU(11),5000) XNAVE
0036 INAVE=MAX(1,MIN(200,NINT(XNAVE)))
0037 WTI(INAVE)=1D0
0038 WTS=WTI(INAVE)
0039 WTN=WTI(INAVE)*INAVE
0040
0041
0042 IMIN=INAVE
0043 DO 100 I=INAVE-1,1,-1
0044 IF(MSTP(133).EQ.1) WTI(I)=WTI(I+1)*(I+1)/XNAVE
0045 IF(MSTP(133).GE.2) WTI(I)=WTI(I+1)*I/XNAVE
0046 IF(WTI(I).LT.1D-6) GOTO 110
0047 WTS=WTS+WTI(I)
0048 WTN=WTN+WTI(I)*I
0049 IMIN=I
0050 100 CONTINUE
0051
0052
0053 110 IMAX=INAVE
0054 DO 120 I=INAVE+1,200
0055 IF(MSTP(133).EQ.1) WTI(I)=WTI(I-1)*XNAVE/I
0056 IF(MSTP(133).GE.2) WTI(I)=WTI(I-1)*XNAVE/(I-1)
0057 IF(WTI(I).LT.1D-6) GOTO 130
0058 WTS=WTS+WTI(I)
0059 WTN=WTN+WTI(I)*I
0060 IMAX=I
0061 120 CONTINUE
0062 130 VINT(132)=XNAVE
0063 VINT(133)=WTN/WTS
0064 IF(MSTP(133).EQ.1.AND.IMIN.EQ.1) VINT(134)=
0065 & WTS/(WTS+WTI(1)/XNAVE)
0066 IF(MSTP(133).EQ.1.AND.IMIN.GT.1) VINT(134)=1D0
0067 IF(MSTP(133).GE.2) VINT(134)=XNAVE
0068
0069
0070 ELSE
0071 IF(MSTP(133).LE.0) THEN
0072 MINT(81)=MAX(1,MSTP(134))
0073 ELSE
0074 WTR=WTS*PYR(0)
0075 DO 140 I=IMIN,IMAX
0076 MINT(81)=I
0077 WTR=WTR-WTI(I)
0078 IF(WTR.LE.0D0) GOTO 150
0079 140 CONTINUE
0080 150 CONTINUE
0081 ENDIF
0082 ENDIF
0083
0084
0085 5000 FORMAT(1X,'Warning: requested average number of events per bunch',
0086 &'crossing too large, ',1P,D12.4)
0087
0088 RETURN
0089 END