2 C*********************************************************************
4 SUBROUTINE PYPILE(MPILE)
6 C...Initializes multiplicity distribution and selects mutliplicity
7 C...of pileup events, i.e. several events occuring at the same
9 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
10 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
11 COMMON/PYINT1/MINT(400),VINT(400)
12 COMMON/PYINT7/SIGT(0:6,0:6,0:5)
14 SAVE /PYPARS/,/PYINT1/,/PYINT7/
16 SAVE IMIN,IMAX,WTI,WTS
18 C...Sum of allowed cross-sections for pileup events.
21 IF(MSTP(132).GE.2) VINT(131)=VINT(131)+SIGT(0,0,4)
22 IF(MSTP(132).GE.3) VINT(131)=VINT(131)+SIGT(0,0,2)+SIGT(0,0,3)
23 IF(MSTP(132).GE.4) VINT(131)=VINT(131)+SIGT(0,0,1)
24 IF(MSTP(133).LE.0) RETURN
26 C...Initialize multiplicity distribution at maximum.
27 XNAVE=VINT(131)*PARP(131)
28 IF(XNAVE.GT.120.) WRITE(MSTU(11),5000) XNAVE
29 INAVE=MAX(1,MIN(200,NINT(XNAVE)))
34 C...Find shape of multiplicity distribution below maximum.
37 IF(MSTP(133).EQ.1) WTI(I)=WTI(I+1)*(I+1)/XNAVE
38 IF(MSTP(133).GE.2) WTI(I)=WTI(I+1)*I/XNAVE
39 IF(WTI(I).LT.1E-6) GOTO 110
45 C...Find shape of multiplicity distribution above maximum.
48 IF(MSTP(133).EQ.1) WTI(I)=WTI(I-1)*XNAVE/I
49 IF(MSTP(133).GE.2) WTI(I)=WTI(I-1)*XNAVE/(I-1)
50 IF(WTI(I).LT.1E-6) GOTO 130
57 IF(MSTP(133).EQ.1.AND.IMIN.EQ.1) VINT(134)=
58 & WTS/(WTS+WTI(1)/XNAVE)
59 IF(MSTP(133).EQ.1.AND.IMIN.GT.1) VINT(134)=1.
60 IF(MSTP(133).GE.2) VINT(134)=XNAVE
62 C...Pick multiplicity of pileup events.
64 IF(MSTP(133).LE.0) THEN
65 MINT(81)=MAX(1,MSTP(134))
71 IF(WTR.LE.0.) GOTO 150
77 C...Format statement for error message.
78 5000 FORMAT(1X,'Warning: requested average number of events per bunch',
79 &'crossing too large, ',1P,E12.4)