]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA/pythia/pysave.F
Addition of CPV library as a separate detector from PHOS
[u/mrichter/AliRoot.git] / PYTHIA / pythia / pysave.F
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