]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/gheisha/caskp.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / gheisha / caskp.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:21:01 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.39 by S.Giani
11*-- Author :
12 SUBROUTINE CASKP(K,INT,NFL)
13C
14C *** CASCADE OF K+ ***
15C *** NVE 04-MAY-1988 CERN GENEVA ***
16C
17C ORIGIN : H.FESEFELDT (13-SEP-1987)
18C
19C K+ UNDERGOES INTERACTION WITH NUCLEON WITHIN NUCLEUS.
20C CHECK IF ENERGETICALLY POSSIBLE TO PRODUCE PIONS/KAONS.
21C IF NOT ASSUME NUCLEAR EXCITATION OCCURS AND INPUT PARTICLE
22C IS DEGRADED IN ENERGY. NO OTHER PARTICLES PRODUCED.
23C IF REACTION IS POSSIBLE FIND CORRECT NUMBER OF PIONS/PROTONS/
24C NEUTRONS PRODUCED USING AN INTERPOLATION TO MULTIPLICITY DATA.
25C REPLACE SOME PIONS OR PROTONS/NEUTRONS BY KAONS OR STRANGE BARYONS
26C ACCORDING TO AVERAGE MULTIPLICITY PER INELASTIC REACTIONS.
27C
28#include "geant321/mxgkgh.inc"
29#include "geant321/s_curpar.inc"
30#include "geant321/s_consts.inc"
31#include "geant321/s_result.inc"
32#include "geant321/s_prntfl.inc"
33#include "geant321/s_kginit.inc"
34#include "geant321/limits.inc"
35C
36 REAL N
37 DIMENSION PMUL(2,1200),ANORM(2,60),SUPP(10),CECH(10),B(2)
38 DIMENSION RNDM(1)
39 SAVE PMUL,ANORM
40 DATA SUPP/0.,0.4,0.55,0.65,0.75,0.82,0.86,0.90,0.94,0.98/
41 DATA CECH/0.33,0.27,0.29,0.31,0.27,0.18,0.13,0.10,0.09,0.07/
42 DATA B/0.7,0.7/,C/1.25/
43C
44C --- INITIALIZATION INDICATED BY KGINIT(5) ---
45 IF (KGINIT(5) .NE. 0) GO TO 10
46 KGINIT(5)=1
47C
48C --- INITIALIZE PMUL AND ANORM ARRAYS ---
49 DO 9000 J=1,1200
50 DO 9001 I=1,2
51 PMUL(I,J)=0.0
52 IF (J .LE. 60) ANORM(I,J)=0.0
53 9001 CONTINUE
54 9000 CONTINUE
55C
56C** COMPUTE NORMALIZATION CONSTANTS
57C** FOR P AS TARGET
58C
59 L=0
60 DO 1 NP1=1,20
61 NP=NP1-1
62 NMM1=NP1-2
63 IF(NMM1.LE.1) NMM1=1
64 DO 1 NM1=NMM1,NP1
65 NM=NM1-1
66 DO 1 NZ1=1,20
67 NZ=NZ1-1
68 L=L+1
69 IF(L.GT.1200) GOTO 1
70 NT=NP+NM+NZ
71 IF(NT.LE.0.OR.NT.GT.60) GOTO 1
72 PMUL(1,L)=PMLTPC(NP,NM,NZ,NT,B(1),C)
73 ANORM(1,NT)=ANORM(1,NT)+PMUL(1,L)
74 1 CONTINUE
75C** FOR N AS TARGET
76 L=0
77 DO 2 NP1=1,20
78 NP=NP1-1
79 NMM1=NP1-1
80 IF(NMM1.LE.1) NMM1=1
81 NPP1=NP1+1
82 DO 2 NM1=NMM1,NPP1
83 NM=NM1-1
84 DO 2 NZ1=1,20
85 NZ=NZ1-1
86 L=L+1
87 IF(L.GT.1200) GOTO 2
88 NT=NP+NM+NZ
89 IF(NT.LE.0.OR.NT.GT.60) GOTO 2
90 PMUL(2,L)=PMLTPC(NP,NM,NZ,NT,B(2),C)
91 ANORM(2,NT)=ANORM(2,NT)+PMUL(2,L)
92 2 CONTINUE
93 DO 3 I=1,60
94 IF(ANORM(1,I).GT.0.) ANORM(1,I)=1./ANORM(1,I)
95 IF(ANORM(2,I).GT.0.) ANORM(2,I)=1./ANORM(2,I)
96 3 CONTINUE
97 IF(.NOT.NPRT(10)) GOTO 10
98 WRITE(NEWBCD,2001)
99 DO 4 NFL=1,2
100 WRITE(NEWBCD,2002) NFL
101 WRITE(NEWBCD,2003) (ANORM(NFL,I),I=1,60)
102 WRITE(NEWBCD,2003) (PMUL(NFL,I),I=1,1200)
103 4 CONTINUE
104C** CHOOSE PROTON OR NEUTRON AS TARGET
105 10 NFL=2
106 CALL GRNDM(RNDM,1)
107 IF(RNDM(1).LT.ZNO2/ATNO2) NFL=1
108 TARMAS=RMASS(14)
109 IF (NFL .EQ. 2) TARMAS=RMASS(16)
110 S=AMASQ+TARMAS**2+2.0*TARMAS*EN
111 RS=SQRT(S)
112 ENP(8)=AMASQ+TARMAS**2+2.0*TARMAS*ENP(6)
113 ENP(9)=SQRT(ENP(8))
114 EAB=RS-TARMAS-RMASS(10)
115C
116C** ELASTIC SCATTERING
117 NP=0
118 NM=0
119 NZ=0
120 N=0.
121 IPA(1)=10
122 IPA(2)=14
123 IF(NFL.EQ.2) IPA(2)=16
124 IF(INT.EQ.2) GOTO 20
125C** FOR K+ N REACTIONS CHANGE SOME OF THE ELASTIC CROSS SECTION
126C** TO K+ N --> K0 P
127 IF(NFL.EQ.1) GOTO 100
128 IPLAB=IFIX(P *5.)+1
129 IF(IPLAB.GT.10) IPLAB=10
130 CALL GRNDM(RNDM,1)
131 IF(RNDM(1).GT.CECH(IPLAB)/ATNO2**0.42) GOTO 100
132 IPA(1)=11
133 IPA(2)=14
134 GOTO 100
135C** CHECK IF ENERGETICALLY POSSIBLE TO PRODUCE ONE EXTRA PION IN REACT.
136 20 IF (EAB .LE. RMASS(7)) GOTO 55
137C** SUPPRESSION OF HIGH MULTIPLICITY EVENTS AT LOW MOMENTUM
138 IEAB=IFIX(EAB*5.)+1
139 IF(IEAB.GT.10) GOTO 22
140 CALL GRNDM(RNDM,1)
141 IF(RNDM(1).LT.SUPP(IEAB)) GOTO 22
142 N=1.
143 GOTO (23,24),NFL
144 23 CONTINUE
145 TEST=-(1+B(1))**2/(2.0*C**2)
146 IF (TEST .LT. EXPXL) TEST=EXPXL
147 IF (TEST .GT. EXPXU) TEST=EXPXU
148 W0=EXP(TEST)
149 WP=EXP(TEST)
150 WP=WP*2.0
151 CALL GRNDM(RNDM,1)
152 RAN=RNDM(1)
153 NP=0
154 NM=0
155 NZ=1
156 IF(RAN.LT.W0/(W0+WP)) GOTO 50
157 NP=1
158 NM=0
159 NZ=0
160 GOTO 50
161 24 CONTINUE
162 TEST=-(1+B(2))**2/(2.0*C**2)
163 IF (TEST .LT. EXPXL) TEST=EXPXL
164 IF (TEST .GT. EXPXU) TEST=EXPXU
165 W0=EXP(TEST)
166 WP=EXP(TEST)
167 TEST=-(-1+B(2))**2/(2.0*C**2)
168 IF (TEST .LT. EXPXL) TEST=EXPXL
169 IF (TEST .GT. EXPXU) TEST=EXPXU
170 WM=EXP(TEST)
171 WT=W0+WP+WM
172 WP=W0+WP
173 CALL GRNDM(RNDM,1)
174 RAN=RNDM(1)
175 NP=0
176 NM=0
177 NZ=1
178 IF(RAN.LT.W0/WT) GOTO 50
179 NP=1
180 NM=0
181 NZ=0
182 IF(RAN.LT.WP/WT) GOTO 50
183 NP=0
184 NM=1
185 NZ=0
186 GOTO 50
187C
188 22 ALEAB=LOG(EAB)
189C** NO. OF TOTAL PARTICLES VS SQRT(S)-2*MP
190 N=3.62567+0.665843*ALEAB+0.336514*ALEAB*ALEAB
191 * +0.117712*ALEAB*ALEAB*ALEAB+0.0136912*ALEAB*ALEAB*ALEAB*ALEAB
192 N=N-2.
193C** NORMALIZATION CONSTANT FOR KNO-DISTRIBUTION
194 ANPN=0.
195 DO 21 NT=1,60
196 TEST=-(PI/4.0)*(NT/N)**2
197 IF (TEST .LT. EXPXL) TEST=EXPXL
198 IF (TEST .GT. EXPXU) TEST=EXPXU
199 DUM1=PI*NT/(2.0*N*N)
200 DUM2=ABS(DUM1)
201 DUM3=EXP(TEST)
202 ADDNVE=0.0
203 IF (DUM2 .GE. 1) ADDNVE=DUM1*DUM3
204 IF ((DUM2 .LT. 1) .AND. (DUM3 .GE. 1.0E-10)) ADDNVE=DUM1*DUM3
205 ANPN=ANPN+ADDNVE
206 21 CONTINUE
207 ANPN=1./ANPN
208C** P OR N AS TARGET
209 CALL GRNDM(RNDM,1)
210 RAN=RNDM(1)
211 EXCS=0.
212 GOTO (30,40),NFL
213C** FOR P AS TARGET
214 30 L=0
215 DO 31 NP1=1,20
216 NP=NP1-1
217 NMM1=NP1-2
218 IF(NMM1.LE.1) NMM1=1
219 DO 31 NM1=NMM1,NP1
220 NM=NM1-1
221 DO 31 NZ1=1,20
222 NZ=NZ1-1
223 L=L+1
224 IF(L.GT.1200) GOTO 31
225 NT=NP+NM+NZ
226 IF(NT.LE.0.OR.NT.GT.60) GOTO 31
227 TEST=-(PI/4.0)*(NT/N)**2
228 IF (TEST .LT. EXPXL) TEST=EXPXL
229 IF (TEST .GT. EXPXU) TEST=EXPXU
230 DUM1=ANPN*PI*NT*PMUL(1,L)*ANORM(1,NT)/(2.0*N*N)
231 DUM2=ABS(DUM1)
232 DUM3=EXP(TEST)
233 ADDNVE=0.0
234 IF (DUM2 .GE. 1) ADDNVE=DUM1*DUM3
235 IF ((DUM2 .LT. 1) .AND. (DUM3 .GE. 1.0E-10)) ADDNVE=DUM1*DUM3
236 EXCS=EXCS+ADDNVE
237 IF(RAN.LT.EXCS) GOTO 50
238 31 CONTINUE
239 GOTO 80
240C** FOR N AS TARGET
241 40 L=0
242 DO 41 NP1=1,20
243 NP=NP1-1
244 NMM1=NP1-1
245 IF(NMM1.LE.1) NMM1=1
246 NPP1=NP1+1
247 DO 41 NM1=NMM1,NPP1
248 NM=NM1-1
249 DO 41 NZ1=1,20
250 NZ=NZ1-1
251 L=L+1
252 IF(L.GT.1200) GOTO 41
253 NT=NP+NM+NZ
254 IF(NT.LE.0.OR.NT.GT.60) GOTO 41
255 TEST=-(PI/4.0)*(NT/N)**2
256 IF (TEST .LT. EXPXL) TEST=EXPXL
257 IF (TEST .GT. EXPXU) TEST=EXPXU
258 DUM1=ANPN*PI*NT*PMUL(2,L)*ANORM(2,NT)/(2.0*N*N)
259 DUM2=ABS(DUM1)
260 DUM3=EXP(TEST)
261 ADDNVE=0.0
262 IF (DUM2 .GE. 1) ADDNVE=DUM1*DUM3
263 IF ((DUM2 .LT. 1) .AND. (DUM3 .GE. 1.0E-10)) ADDNVE=DUM1*DUM3
264 EXCS=EXCS+ADDNVE
265 IF(RAN.LT.EXCS) GOTO 50
266 41 CONTINUE
267 GOTO 80
268 50 GOTO (60,65),NFL
269 60 IF(NP.EQ.1+NM) GOTO 61
270 IF(NP.EQ.2+NM) GOTO 63
271 IPA(1)=10
272 IPA(2)=14
273 GOTO 100
274 61 CALL GRNDM(RNDM,1)
275 IF(RNDM(1).LT.0.5) GOTO 62
276 IPA(1)=10
277 IPA(2)=16
278 GOTO 100
279 62 IPA(1)=11
280 IPA(2)=14
281 GOTO 100
282 63 IPA(1)=11
283 IPA(2)=16
284 GOTO 100
285 65 IF(NP.EQ.NM) GOTO 66
286 IF(NP.EQ.1+NM) GOTO 68
287 IPA(1)=10
288 IPA(2)=14
289 GOTO 100
290 66 CALL GRNDM(RNDM,1)
291 IF(RNDM(1).LT.0.25) GOTO 67
292 IPA(1)=10
293 IPA(2)=16
294 GOTO 100
295 67 IPA(1)=11
296 IPA(2)=14
297 GOTO 100
298 68 IPA(1)=11
299 IPA(2)=16
300 GOTO 100
301 70 IF(NPRT(4))
302 *WRITE(NEWBCD,1003) EAB,N,NFL,NP,NM,NZ
303 CALL STPAIR
304 IF(INT.EQ.1) CALL TWOB(10,NFL,N)
305 IF(INT.EQ.2) CALL GENXPT(10,NFL,N)
306 GO TO 9999
307 55 IF(NPRT(4))
308 *WRITE(NEWBCD,1001)
309 GOTO 53
310C** EXCLUSIVE REACTION NOT FOUND
311 80 IF(NPRT(4))
312 *WRITE(NEWBCD,1004) RS,N
313 53 INT=1
314 NP=0
315 NM=0
316 NZ=0
317 N=0.
318 IPA(1)=10
319 IPA(2)=14
320 IF(NFL.EQ.2) IPA(2)=16
321 100 DO 101 I=3,60
322 101 IPA(I)=0
323 IF(INT.LE.0) GOTO 131
324 120 NT=2
325 IF(NP.EQ.0) GOTO 122
326 DO 121 I=1,NP
327 NT=NT+1
328 121 IPA(NT)=7
329 122 IF(NM.EQ.0) GOTO 124
330 DO 123 I=1,NM
331 NT=NT+1
332 123 IPA(NT)=9
333 124 IF(NZ.EQ.0) GOTO 130
334 DO 125 I=1,NZ
335 NT=NT+1
336 125 IPA(NT)=8
337 130 IF(NPRT(4))
338 *WRITE(NEWBCD,2004) NT,(IPA(I),I=1,20)
339 DO 132 I=1,NT
340 IF(IPA(I).NE.11) GOTO 132
341 CALL GRNDM(RNDM,1)
342 IF(RNDM(1).LT.0.5) GOTO 132
343 IPA(I)=12
344 132 CONTINUE
345 GOTO 70
346 131 IF(NPRT(4))
347 *WRITE(NEWBCD,2005)
348C
3491001 FORMAT('0*CASKP* CASCADE ENERGETICALLY NOT POSSIBLE',
350 $ ' CONTINUE WITH QUASI-ELASTIC SCATTERING')
3511003 FORMAT(' *CASKP* KAON+ -INDUCED CASCADE,',
352 $ ' AVAIL. ENERGY',2X,F8.4,
353 $ 2X,'<NTOT>',2X,F8.4,2X,'FROM',4(2X,I3),2X,'PARTICLES')
3541004 FORMAT(' *CASKP* KAON+ -INDUCED CASCADE,',
355 $ ' EXCLUSIVE REACTION NOT FOUND',
356 $ 'TRY ELASTIC SCATTERING AVAIL. ENERGY',2X,F8.4,2X,
357 $ '<NTOT>',2X,F8.4)
3582001 FORMAT('0*CASKP* TABLES FOR MULT. DATA KAON+ INDUCED REACTION',
359 $ ' FOR DEFINITION OF NUMBERS SEE FORTRAN CODING')
3602002 FORMAT(' *CASKP* TARGET PARTICLE FLAG',2X,I5)
3612003 FORMAT(1H ,10E12.4)
3622004 FORMAT(' *CASKP* ',I3,2X,'PARTICLES , MASS INDEX ARRAY',2X,20I4)
3632005 FORMAT(' *CASKP* NO PARTICLES PRODUCED')
364C
365 9999 CONTINUE
366 END