]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA/pythia/pydocu.F
added copyright, updated class description
[u/mrichter/AliRoot.git] / PYTHIA / pythia / pydocu.F
1  
2 C*********************************************************************
3  
4       SUBROUTINE PYDOCU
5  
6 C...Handles the decumentation of the process in MSTI and PARI,
7 C...and also computes cross-sections based on accumulated statistics.
8       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
9       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
10       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
11       COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
12       COMMON/PYINT1/MINT(400),VINT(400)
13       COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
14       COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
15       COMMON/PYINT9/DXSEC(0:200)
16       DOUBLE PRECISION DXSEC
17       SAVE /LUJETS/,/LUDAT1/
18       SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYINT9/
19  
20 C...Calculate Monte Carlo estimates of cross-sections.
21       ISUB=MINT(1)
22       IF(MSTP(111).NE.-1) NGEN(ISUB,3)=NGEN(ISUB,3)+1
23       NGEN(0,3)=NGEN(0,3)+1
24       XSEC(0,3)=0.
25       DO 100 I=1,200
26       IF(I.EQ.96.OR.I.EQ.97) THEN
27         XSEC(I,3)=0.
28       ELSEIF(MSUB(95).EQ.1.AND.(I.EQ.11.OR.I.EQ.12.OR.I.EQ.13.OR.
29      &I.EQ.28.OR.I.EQ.53.OR.I.EQ.68)) THEN
30         XSEC(I,3)=DXSEC(96)*NGEN(I,3)/MAX(1.,FLOAT(NGEN(96,1))*
31      &  FLOAT(NGEN(96,2)))
32       ELSEIF(MSUB(I).EQ.0.OR.NGEN(I,1).EQ.0) THEN
33         XSEC(I,3)=0.
34       ELSEIF(NGEN(I,2).EQ.0) THEN
35         XSEC(I,3)=DXSEC(I)*NGEN(0,3)/(FLOAT(NGEN(I,1))*
36      &  FLOAT(NGEN(0,2)))
37       ELSE
38         XSEC(I,3)=DXSEC(I)*NGEN(I,3)/(FLOAT(NGEN(I,1))*
39      &  FLOAT(NGEN(I,2)))
40       ENDIF
41       XSEC(0,3)=XSEC(0,3)+XSEC(I,3)
42   100 CONTINUE
43  
44 C...Rescale to known low-pT cross-section for standard QCD processes.
45       IF(MSUB(95).EQ.1) THEN
46         XSECH=XSEC(11,3)+XSEC(12,3)+XSEC(13,3)+XSEC(28,3)+XSEC(53,3)+
47      &  XSEC(68,3)+XSEC(95,3)
48         XSECW=DXSEC(97)/MAX(1.,FLOAT(NGEN(97,1)))
49         IF(XSECH.GT.1E-10.AND.XSECW.GT.1E-10) THEN
50           FAC=XSECW/XSECH
51           XSEC(11,3)=FAC*XSEC(11,3)
52           XSEC(12,3)=FAC*XSEC(12,3)
53           XSEC(13,3)=FAC*XSEC(13,3)
54           XSEC(28,3)=FAC*XSEC(28,3)
55           XSEC(53,3)=FAC*XSEC(53,3)
56           XSEC(68,3)=FAC*XSEC(68,3)
57           XSEC(95,3)=FAC*XSEC(95,3)
58           XSEC(0,3)=XSEC(0,3)-XSECH+XSECW
59         ENDIF
60       ENDIF
61  
62 C...Save information for gamma-p and gamma-gamma.
63       IF(MINT(121).GT.1) THEN
64         IGA=MINT(122)
65         CALL PYSAVE(2,IGA)
66         CALL PYSAVE(5,0)
67       ENDIF
68  
69 C...Reset information on hard interaction.
70       DO 110 J=1,200
71       MSTI(J)=0
72       PARI(J)=0.
73   110 CONTINUE
74  
75 C...Copy integer valued information from MINT into MSTI.
76       DO 120 J=1,31
77       MSTI(J)=MINT(J)
78   120 CONTINUE
79       IF(MINT(121).GT.1) MSTI(9)=MINT(122)
80  
81 C...Store cross-section variables in PARI.
82       PARI(1)=XSEC(0,3)
83       PARI(2)=XSEC(0,3)/MINT(5)
84       PARI(9)=VINT(99)
85       PARI(10)=VINT(100)
86       VINT(98)=VINT(98)+VINT(100)
87       IF(MSTP(142).EQ.1) PARI(2)=XSEC(0,3)/VINT(98)
88  
89 C...Store kinematics variables in PARI.
90       PARI(11)=VINT(1)
91       PARI(12)=VINT(2)
92       IF(ISUB.NE.95) THEN
93         DO 130 J=13,26
94         PARI(J)=VINT(30+J)
95   130   CONTINUE
96         PARI(31)=VINT(141)
97         PARI(32)=VINT(142)
98         PARI(33)=VINT(41)
99         PARI(34)=VINT(42)
100         PARI(35)=PARI(33)-PARI(34)
101         PARI(36)=VINT(21)
102         PARI(37)=VINT(22)
103         PARI(38)=VINT(26)
104         PARI(39)=VINT(157)
105         PARI(40)=VINT(158)
106         PARI(41)=VINT(23)
107         PARI(42)=2.*VINT(47)/VINT(1)
108       ENDIF
109  
110 C...Store information on scattered partons in PARI.
111       IF(ISUB.NE.95.AND.MINT(7)*MINT(8).NE.0) THEN
112         DO 140 IS=7,8
113         I=MINT(IS)
114         PARI(36+IS)=P(I,3)/VINT(1)
115         PARI(38+IS)=P(I,4)/VINT(1)
116         PR=MAX(1E-20,P(I,5)**2+P(I,1)**2+P(I,2)**2)
117         PARI(40+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
118      &  SQRT(PR),1E20)),P(I,3))
119         PR=MAX(1E-20,P(I,1)**2+P(I,2)**2)
120         PARI(42+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
121      &  SQRT(PR),1E20)),P(I,3))
122         PARI(44+IS)=P(I,3)/SQRT(1E-20+P(I,1)**2+P(I,2)**2+P(I,3)**2)
123         PARI(46+IS)=ULANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
124         PARI(48+IS)=ULANGL(P(I,1),P(I,2))
125   140   CONTINUE
126       ENDIF
127  
128 C...Store sum up transverse and longitudinal momenta.
129       PARI(65)=2.*PARI(17)
130       IF(ISUB.LE.90.OR.ISUB.GE.95) THEN
131         DO 150 I=MSTP(126)+1,N
132         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150
133         PT=SQRT(P(I,1)**2+P(I,2)**2)
134         PARI(69)=PARI(69)+PT
135         IF(I.LE.MINT(52)) PARI(66)=PARI(66)+PT
136         IF(I.GT.MINT(52).AND.I.LE.MINT(53)) PARI(68)=PARI(68)+PT
137   150   CONTINUE
138         PARI(67)=PARI(68)
139         PARI(71)=VINT(151)
140         PARI(72)=VINT(152)
141         PARI(73)=VINT(151)
142         PARI(74)=VINT(152)
143       ELSE
144         PARI(66)=PARI(65)
145         PARI(69)=PARI(65)
146       ENDIF
147  
148 C...Store various other pieces of information into PARI.
149       PARI(61)=VINT(148)
150       PARI(75)=VINT(155)
151       PARI(76)=VINT(156)
152       PARI(77)=VINT(159)
153       PARI(78)=VINT(160)
154       PARI(81)=VINT(138)
155  
156 C...Set information for LUTABU.
157       IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
158         MSTU(161)=MINT(21)
159         MSTU(162)=0
160       ELSEIF(ISET(ISUB).EQ.5) THEN
161         MSTU(161)=MINT(23)
162         MSTU(162)=0
163       ELSE
164         MSTU(161)=MINT(21)
165         MSTU(162)=MINT(22)
166       ENDIF
167  
168       RETURN
169       END