2 C*********************************************************************
4 SUBROUTINE PYSAVE(ISAVE,IGA)
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
22 C...Save list of subprocesses and cross-section information.
26 IF(MSUB(I).EQ.0.AND.I.NE.96.AND.I.NE.97) GOTO 120
29 MSUBCP(IGA,ICP)=MSUB(I)
31 COEFCP(IGA,ICP,J)=COEF(I,J)
34 NGENCP(IGA,ICP,J)=NGEN(I,J)
35 XSECCP(IGA,ICP,J)=XSEC(I,J)
37 DXSECC(IGA,ICP)=DXSEC(I)
41 NGENCP(IGA,0,J)=NGEN(0,J)
42 XSECCP(IGA,0,J)=XSEC(0,J)
44 DXSECC(IGA,0)=DXSEC(0)
45 C...Save various common process variables.
47 INTCP(IGA,J)=MINT(40+J)
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)
56 C...Save cross-section information only.
57 ELSEIF(ISAVE.EQ.2) THEN
61 NGENCP(IGA,ICP,J)=NGEN(I,J)
62 XSECCP(IGA,ICP,J)=XSEC(I,J)
64 DXSECC(IGA,ICP)=DXSEC(I)
67 NGENCP(IGA,0,J)=NGEN(0,J)
68 XSECCP(IGA,0,J)=XSEC(0,J)
70 DXSECC(IGA,0)=DXSEC(0)
72 C...Choose between allowed alternatives.
73 ELSEIF(ISAVE.EQ.3.OR.ISAVE.EQ.4) THEN
77 XSUMCP=XSUMCP+XSECCP(IG,0,1)
82 XSUMCP=XSUMCP-XSECCP(IG,0,1)
83 IF(XSUMCP.LE.0.) GOTO 200
88 C...Restore cross-section information.
94 MSUB(I)=MSUBCP(IGA,ICP)
96 COEF(I,J)=COEFCP(IGA,ICP,J)
99 NGEN(I,J)=NGENCP(IGA,ICP,J)
100 XSEC(I,J)=XSECCP(IGA,ICP,J)
102 DXSEC(I)=DXSECC(IGA,ICP)
105 NGEN(0,J)=NGENCP(IGA,0,J)
106 XSEC(0,J)=XSECCP(IGA,0,J)
108 DXSEC(0)=DXSECC(IGA,0)
110 C...Restore various common process variables.
112 MINT(40+J)=INTCP(IGA,J)
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)
122 C...Sum up cross-section info (for PYSTAT).
123 ELSEIF(ISAVE.EQ.5) THEN
134 DO 290 IG=1,MINT(121)
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)
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)