]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | |
2 | C********************************************************************* | |
3 | ||
4 | SUBROUTINE PYSAVE(ISAVE,IGA) | |
5 | ||
6 | C...Saves and restores parameter and cross section values for the | |
7 | C...3 gamma-p and 6 gamma-gamma alnternatives. Also makes random | |
8 | C...choice between alternatives. | |
9 | COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200) | |
10 | COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) | |
11 | COMMON/PYINT1/MINT(400),VINT(400) | |
12 | COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2) | |
13 | COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3) | |
14 | COMMON/PYINT9/DXSEC(0:200) | |
15 | DOUBLE PRECISION DXSEC | |
16 | SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYINT9/ | |
17 | DIMENSION NCP(10),NSUBCP(10,20),MSUBCP(10,20),COEFCP(10,20,20), | |
18 | &NGENCP(10,0:20,3),XSECCP(10,0:20,3),INTCP(10,20),RECP(10,20) | |
19 | DOUBLE PRECISION DXSECC(10,0:20) | |
20 | SAVE NCP,NSUBCP,MSUBCP,COEFCP,NGENCP,XSECCP,INTCP,RECP,DXSECC | |
21 | ||
22 | C...Save list of subprocesses and cross-section information. | |
23 | IF(ISAVE.EQ.1) THEN | |
24 | ICP=0 | |
25 | DO 120 I=1,200 | |
26 | IF(MSUB(I).EQ.0.AND.I.NE.96.AND.I.NE.97) GOTO 120 | |
27 | ICP=ICP+1 | |
28 | NSUBCP(IGA,ICP)=I | |
29 | MSUBCP(IGA,ICP)=MSUB(I) | |
30 | DO 100 J=1,20 | |
31 | COEFCP(IGA,ICP,J)=COEF(I,J) | |
32 | 100 CONTINUE | |
33 | DO 110 J=1,3 | |
34 | NGENCP(IGA,ICP,J)=NGEN(I,J) | |
35 | XSECCP(IGA,ICP,J)=XSEC(I,J) | |
36 | 110 CONTINUE | |
37 | DXSECC(IGA,ICP)=DXSEC(I) | |
38 | 120 CONTINUE | |
39 | NCP(IGA)=ICP | |
40 | DO 130 J=1,3 | |
41 | NGENCP(IGA,0,J)=NGEN(0,J) | |
42 | XSECCP(IGA,0,J)=XSEC(0,J) | |
43 | 130 CONTINUE | |
44 | DXSECC(IGA,0)=DXSEC(0) | |
45 | C...Save various common process variables. | |
46 | DO 140 J=1,10 | |
47 | INTCP(IGA,J)=MINT(40+J) | |
48 | 140 CONTINUE | |
49 | INTCP(IGA,11)=MINT(101) | |
50 | INTCP(IGA,12)=MINT(102) | |
51 | INTCP(IGA,13)=MINT(107) | |
52 | INTCP(IGA,14)=MINT(108) | |
53 | INTCP(IGA,15)=MINT(123) | |
54 | RECP(IGA,1)=CKIN(3) | |
55 | ||
56 | C...Save cross-section information only. | |
57 | ELSEIF(ISAVE.EQ.2) THEN | |
58 | DO 160 ICP=1,NCP(IGA) | |
59 | I=NSUBCP(IGA,ICP) | |
60 | DO 150 J=1,3 | |
61 | NGENCP(IGA,ICP,J)=NGEN(I,J) | |
62 | XSECCP(IGA,ICP,J)=XSEC(I,J) | |
63 | 150 CONTINUE | |
64 | DXSECC(IGA,ICP)=DXSEC(I) | |
65 | 160 CONTINUE | |
66 | DO 170 J=1,3 | |
67 | NGENCP(IGA,0,J)=NGEN(0,J) | |
68 | XSECCP(IGA,0,J)=XSEC(0,J) | |
69 | 170 CONTINUE | |
70 | DXSECC(IGA,0)=DXSEC(0) | |
71 | ||
72 | C...Choose between allowed alternatives. | |
73 | ELSEIF(ISAVE.EQ.3.OR.ISAVE.EQ.4) THEN | |
74 | IF(ISAVE.EQ.4) THEN | |
75 | XSUMCP=0. | |
76 | DO 180 IG=1,MINT(121) | |
77 | XSUMCP=XSUMCP+XSECCP(IG,0,1) | |
78 | 180 CONTINUE | |
79 | XSUMCP=XSUMCP*RLU(0) | |
80 | DO 190 IG=1,MINT(121) | |
81 | IGA=IG | |
82 | XSUMCP=XSUMCP-XSECCP(IG,0,1) | |
83 | IF(XSUMCP.LE.0.) GOTO 200 | |
84 | 190 CONTINUE | |
85 | 200 CONTINUE | |
86 | ENDIF | |
87 | ||
88 | C...Restore cross-section information. | |
89 | DO 210 I=1,200 | |
90 | MSUB(I)=0 | |
91 | 210 CONTINUE | |
92 | DO 240 ICP=1,NCP(IGA) | |
93 | I=NSUBCP(IGA,ICP) | |
94 | MSUB(I)=MSUBCP(IGA,ICP) | |
95 | DO 220 J=1,20 | |
96 | COEF(I,J)=COEFCP(IGA,ICP,J) | |
97 | 220 CONTINUE | |
98 | DO 230 J=1,3 | |
99 | NGEN(I,J)=NGENCP(IGA,ICP,J) | |
100 | XSEC(I,J)=XSECCP(IGA,ICP,J) | |
101 | 230 CONTINUE | |
102 | DXSEC(I)=DXSECC(IGA,ICP) | |
103 | 240 CONTINUE | |
104 | DO 250 J=1,3 | |
105 | NGEN(0,J)=NGENCP(IGA,0,J) | |
106 | XSEC(0,J)=XSECCP(IGA,0,J) | |
107 | 250 CONTINUE | |
108 | DXSEC(0)=DXSECC(IGA,0) | |
109 | ||
110 | C...Restore various common process variables. | |
111 | DO 260 J=1,10 | |
112 | MINT(40+J)=INTCP(IGA,J) | |
113 | 260 CONTINUE | |
114 | MINT(101)=INTCP(IGA,11) | |
115 | MINT(102)=INTCP(IGA,12) | |
116 | MINT(107)=INTCP(IGA,13) | |
117 | MINT(108)=INTCP(IGA,14) | |
118 | MINT(123)=INTCP(IGA,15) | |
119 | CKIN(3)=RECP(IGA,1) | |
120 | CKIN(1)=2.*CKIN(3) | |
121 | ||
122 | C...Sum up cross-section info (for PYSTAT). | |
123 | ELSEIF(ISAVE.EQ.5) THEN | |
124 | DO 270 I=1,200 | |
125 | MSUB(I)=0 | |
126 | NGEN(I,1)=0 | |
127 | NGEN(I,3)=0 | |
128 | XSEC(I,3)=0. | |
129 | 270 CONTINUE | |
130 | NGEN(0,1)=0 | |
131 | NGEN(0,2)=0 | |
132 | NGEN(0,3)=0 | |
133 | XSEC(0,3)=0 | |
134 | DO 290 IG=1,MINT(121) | |
135 | DO 280 ICP=1,NCP(IG) | |
136 | I=NSUBCP(IG,ICP) | |
137 | IF(MSUBCP(IG,ICP).EQ.1) MSUB(I)=1 | |
138 | NGEN(I,1)=NGEN(I,1)+NGENCP(IG,ICP,1) | |
139 | NGEN(I,3)=NGEN(I,3)+NGENCP(IG,ICP,3) | |
140 | XSEC(I,3)=XSEC(I,3)+XSECCP(IG,ICP,3) | |
141 | 280 CONTINUE | |
142 | NGEN(0,1)=NGEN(0,1)+NGENCP(IG,0,1) | |
143 | NGEN(0,2)=NGEN(0,2)+NGENCP(IG,0,2) | |
144 | NGEN(0,3)=NGEN(0,3)+NGENCP(IG,0,3) | |
145 | XSEC(0,3)=XSEC(0,3)+XSECCP(IG,0,3) | |
146 | 290 CONTINUE | |
147 | ENDIF | |
148 | ||
149 | RETURN | |
150 | END |