]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 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 |