]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA/pythia/pypile.F
cuts on Q out, side, long added
[u/mrichter/AliRoot.git] / PYTHIA / pythia / pypile.F
1  
2 C*********************************************************************
3  
4       SUBROUTINE PYPILE(MPILE)
5  
6 C...Initializes multiplicity distribution and selects mutliplicity
7 C...of pileup events, i.e. several events occuring at the same
8 C...beam crossing.
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)
13       SAVE /LUDAT1/
14       SAVE /PYPARS/,/PYINT1/,/PYINT7/
15       DIMENSION WTI(0:200)
16       SAVE IMIN,IMAX,WTI,WTS
17  
18 C...Sum of allowed cross-sections for pileup events.
19       IF(MPILE.EQ.1) THEN
20         VINT(131)=SIGT(0,0,5)
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
25  
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)))
30         WTI(INAVE)=1.
31         WTS=WTI(INAVE)
32         WTN=WTI(INAVE)*INAVE
33  
34 C...Find shape of multiplicity distribution below maximum.
35         IMIN=INAVE
36         DO 100 I=INAVE-1,1,-1
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
40         WTS=WTS+WTI(I)
41         WTN=WTN+WTI(I)*I
42         IMIN=I
43   100   CONTINUE
44  
45 C...Find shape of multiplicity distribution above maximum.
46   110   IMAX=INAVE
47         DO 120 I=INAVE+1,200
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
51         WTS=WTS+WTI(I)
52         WTN=WTN+WTI(I)*I
53         IMAX=I
54   120   CONTINUE
55   130   VINT(132)=XNAVE
56         VINT(133)=WTN/WTS
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
61  
62 C...Pick multiplicity of pileup events.
63       ELSE
64         IF(MSTP(133).LE.0) THEN
65           MINT(81)=MAX(1,MSTP(134))
66         ELSE
67           WTR=WTS*RLU(0)
68           DO 140 I=IMIN,IMAX
69           MINT(81)=I
70           WTR=WTR-WTI(I)
71           IF(WTR.LE.0.) GOTO 150
72   140     CONTINUE
73   150     CONTINUE
74         ENDIF
75       ENDIF
76  
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)
80  
81       RETURN
82       END