File indexing completed on 2025-08-05 08:15:44
0001
0002
0003
0004 SUBROUTINE PYHIOVLY(MOVLY)
0005
0006
0007
0008
0009 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0010 SAVE /LUDAT1/
0011 COMMON/PYHIPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
0012 SAVE /PYHIPARS/
0013 COMMON/PYHIINT1/MINT(400),VINT(400)
0014 SAVE /PYHIINT1/
0015 DIMENSION WTI(0:100)
0016 SAVE IMAX,WTI,WTS
0017
0018
0019 IF(MOVLY.EQ.1) THEN
0020 VINT(131)=VINT(106)
0021 IF(MSTP(132).GE.2) VINT(131)=VINT(131)+VINT(104)
0022 IF(MSTP(132).GE.3) VINT(131)=VINT(131)+VINT(103)
0023 IF(MSTP(132).GE.4) VINT(131)=VINT(131)+VINT(102)
0024
0025
0026 IF(MSTP(133).EQ.1) THEN
0027 XNAVE=VINT(131)*PARP(131)
0028 IF(XNAVE.GT.40.) WRITE(MSTU(11),1000) XNAVE
0029 WTI(0)=EXP(-MIN(50.,XNAVE))
0030 WTS=0.
0031 WTN=0.
0032 DO 100 I=1,100
0033 WTI(I)=WTI(I-1)*XNAVE/I
0034 IF(I-2.5.GT.XNAVE.AND.WTI(I).LT.1E-6) GOTO 110
0035 WTS=WTS+WTI(I)
0036 WTN=WTN+WTI(I)*I
0037 100 IMAX=I
0038 110 VINT(132)=XNAVE
0039 VINT(133)=WTN/WTS
0040 VINT(134)=WTS
0041
0042
0043 ELSEIF(MSTP(133).EQ.2) THEN
0044 XNAVE=VINT(131)*PARP(131)
0045 IF(XNAVE.GT.40.) WRITE(MSTU(11),1000) XNAVE
0046 WTI(1)=EXP(-MIN(50.,XNAVE))*XNAVE
0047 WTS=WTI(1)
0048 WTN=WTI(1)
0049 DO 120 I=2,100
0050 WTI(I)=WTI(I-1)*XNAVE/(I-1)
0051 IF(I-2.5.GT.XNAVE.AND.WTI(I).LT.1E-6) GOTO 130
0052 WTS=WTS+WTI(I)
0053 WTN=WTN+WTI(I)*I
0054 120 IMAX=I
0055 130 VINT(132)=XNAVE
0056 VINT(133)=WTN/WTS
0057 VINT(134)=WTS
0058 ENDIF
0059
0060
0061 ELSE
0062 IF(MSTP(133).EQ.0) THEN
0063 MINT(81)=MAX(1,MSTP(134))
0064 ELSE
0065 WTR=WTS*RLU(0)
0066 DO 140 I=1,IMAX
0067 MINT(81)=I
0068 WTR=WTR-WTI(I)
0069 IF(WTR.LE.0.) GOTO 150
0070 140 CONTINUE
0071 150 CONTINUE
0072 ENDIF
0073 ENDIF
0074
0075
0076 1000 FORMAT(1X,'Warning: requested average number of events per bunch',
0077 &'crossing too large, ',1P,E12.4)
0078
0079 RETURN
0080 END