]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.1.1.1 1995/10/24 10:19:54 cernlib | |
6 | * Geant | |
7 | * | |
8 | * | |
9 | #include "geant321/pilot.h" | |
10 | *CMZ : 3.21/02 29/03/94 15.41.41 by S.Giani | |
11 | *-- Author : | |
12 | *$ CREATE COREVT.FOR | |
13 | *COPY COREVT | |
14 | * * | |
15 | *=== corevt ===========================================================* | |
16 | * * | |
17 | SUBROUTINE COREVT ( ZZTAR, BBTAR, KPROJ, PPROJ, EKE ) | |
18 | ||
19 | #include "geant321/dblprc.inc" | |
20 | #include "geant321/dimpar.inc" | |
21 | #include "geant321/iounit.inc" | |
22 | * | |
23 | *----------------------------------------------------------------------* | |
24 | * * | |
25 | * Last change on 07-may-92 by Alfredo Ferrari, INFN-Milan * | |
26 | * * | |
27 | * This version has been developed by A. Ferrari trying to take into * | |
28 | * account a few papers about correlations between projectile colli- * | |
29 | * sions and secondary collisions. An improved (but slower) version * | |
30 | * is going on. * | |
31 | * This subroutine correlates intranuclear cascade with the number * | |
32 | * of projectile collisions sampled in the nucleus * | |
33 | * * | |
34 | * input parameters: * | |
35 | * bbtar - atomic number of the target * | |
36 | * kproj - type of the projectile * | |
37 | * pproj - momentum of the projectile * | |
38 | * * | |
39 | * output parameters (in common corinc) * | |
40 | * frainc - reduction factor for intran. cascade energy, * | |
41 | * inc. correlat. * | |
42 | * nsea+1 - number of high energy collisions in the nucleus * | |
43 | * * | |
44 | *----------------------------------------------------------------------* | |
45 | * | |
46 | #include "geant321/balanc.inc" | |
47 | #include "geant321/corinc.inc" | |
48 | #include "geant321/nucdat.inc" | |
49 | #include "geant321/parevt.inc" | |
50 | #include "geant321/part.inc" | |
51 | #include "geant321/qquark.inc" | |
52 | #include "geant321/resnuc.inc" | |
53 | * | |
54 | PARAMETER ( PIO2 = 0.5D+00 * PIPIPI ) | |
55 | PARAMETER ( SQPI = 1.772453850905516 D+00 ) | |
56 | PARAMETER ( SQPIT3 = 3.D+00 * SQPI ) | |
57 | PARAMETER ( TWOSQT = 2.828427124746190 D+00 ) | |
58 | PARAMETER ( ECUTRF = 100.0 D+00 ) | |
59 | PARAMETER ( UMOREF = 13.83 D+00 ) | |
60 | PARAMETER ( FINCFR = 1.0 D+00 ) | |
61 | PARAMETER ( ANUC00 = 1.4 D+00 ) | |
62 | PARAMETER ( RAOB00 = 3.0 D+00 ) | |
63 | PARAMETER ( ACPAR0 = 0.5D+00 - 0.5D+00 * ( ANUC00 - 1.D+00 ) | |
64 | & / RAOB00 ) | |
65 | * | |
66 | COMMON / FKNUCO / HELP (2), HHLP (2), FTVTH (2), FINCX (2), | |
67 | & EKPOLD (2), BBOLD, ZZOLD, SQROLD, ASEASQ, | |
68 | & FSPRED, FEX0RD | |
69 | DIMENSION KPA (39) | |
70 | DIMENSION FRA(2,110) | |
71 | REAL RNDM(3) | |
72 | SAVE BBONE, FRA, KPA, XIXIXI, ANCOSQ | |
73 | LOGICAL LNUCNW, LUFFA | |
74 | DATA BBONE / 1.D+00 / | |
75 | DATA KPA/1,1,3,3,3,3,3,2,2,3,3,3,3,3,3,3,2,2,3,1,1,2,3,3,3,3, | |
76 | & 3,3,3,3,1,2,1,2,2,1,1,1,1/ | |
77 | * Reduction factors for intran. cascade energy, taken from Alsmiller | |
78 | * Incoming baryons | |
79 | DATA (FRA(1,I), I=1,107) / .048D0,.076D0,0.10D0,.12D0, | |
80 | * .14D0,.16D0,.17D0,.19D0,.21D0,.22D0,.24D0, | |
81 | 1 .25D0,.26D0,.28D0,.29D0,.30D0,.315D0,.33D0,.34D0, | |
82 | * .35D0,.36D0,.38D0,.39D0,.40D0,.41D0,.42D0, | |
83 | 2 .43D0,.44D0,.46D0,.47D0,.48D0,.49D0,.50D0,.51D0, | |
84 | * .52D0,.53D0,.54D0,.55D0,.56D0,.57D0,.58D0,.59D0, | |
85 | 3 .60D0,.61D0,.62D0,.63D0,.635D0,.64D0,.65D0,.66D0, | |
86 | * .67D0,.675D0,.68D0,.69D0,.70D0,.71D0,.715D0, | |
87 | 4 .72D0,.725D0,.73D0,.735D0,.74D0,.75D0,.755D0, | |
88 | * .76D0,.767D0,.77D0,.77D0,.775D0,.78D0,.783D0, | |
89 | 5 .786D0,.79D0,.795D0,.80D0,.805D0,.81D0,.812D0, | |
90 | * .815D0,.82D0,.822D0,.824D0,.825D0,.825D0,.83D0, | |
91 | 6 .832D0,.834D0,.836D0,.838D0,.84D0,.843D0,.836D0, | |
92 | * .849D0,.852D0,.855D0,.856D0,.857D0,.858D0, | |
93 | 7 .859D0,.860D0,.862D0,.864D0,.866D0,.868D0,.870D0, | |
94 | * .872D0,.874D0/ | |
95 | * Incoming mesons | |
96 | DATA (FRA(2,I), I=1,63) / .048D0,.076D0,0.10D0,.12D0, | |
97 | * .14D0,.16D0,.17D0,.19D0,.21D0,.22D0,.24D0, | |
98 | 1 .25D0,.262D0,.274D0,.285D0,.295D0,.305D0,.315D0, | |
99 | * .327D0,.340D0,.345D0,.350D0,.360D0, | |
100 | 2 .370D0,.380D0,.385D0,.390D0,.398D0,.406D0,.415D0, | |
101 | * .420D0,.425D0,.430D0,.435D0,.440D0,.446D0, | |
102 | 3 .452D0,.458D0,.464D0,.470D0,.474D0,.478D0,.482D0, | |
103 | * .486D0,.490D0,.495D0,.500D0,.505D0,.510D0, | |
104 | 4 .515D0,.519D0,.523D0,.526D0,.520D0,.533D0,.537D0, | |
105 | * .540D0,.543D0,.547D0,.550D0,.555D0,.559D0, | |
106 | 5 .5625D0 / | |
107 | * | |
108 | * The calculation of number of collisions inside nucleus is moved | |
109 | * from subroutine nucevt; nsea is stored in common corinc | |
110 | * | |
111 | IBPROJ = IBAR (KPROJ) | |
112 | * Get the "paprop" index | |
113 | IJ = KPTOIP (KPROJ) | |
114 | IJJ = KPA (IJ) | |
115 | * +-------------------------------------------------------------------* | |
116 | * | Incoming baryons | |
117 | IF ( IBPROJ .NE. 0 ) THEN | |
118 | * | +----------------------------------------------------------------* | |
119 | * | | | |
120 | IF ( IBTAR .LE. 107 ) THEN | |
121 | FRAC = FRA ( 1, IBTAR ) | |
122 | * | | | |
123 | * | +----------------------------------------------------------------* | |
124 | * | | | |
125 | ELSE IF (IBTAR .LE. 206) THEN | |
126 | FRAC = 0.739D+00 + 0.00126D+00 * BBTAR | |
127 | * | | | |
128 | * | +----------------------------------------------------------------* | |
129 | * | | | |
130 | ELSE | |
131 | FRAC = 1.D+00 | |
132 | END IF | |
133 | * | | | |
134 | * | +----------------------------------------------------------------* | |
135 | * | +----------------------------------------------------------------* | |
136 | * | | This is a very simple patch to slightly increase the cascade | |
137 | * | | yield at low energies for antibaryons. The factor 0.5 to | |
138 | * | | take into account very roughly that not all interactions will | |
139 | * | | result in complete annihilation | |
140 | IF ( IBPROJ .LT. 0 ) THEN | |
141 | EKEFF = EKE + 0.5D+00 * AMDISC (KPROJ) | |
142 | * | | | |
143 | * | +----------------------------------------------------------------* | |
144 | * | | | |
145 | ELSE | |
146 | EKEFF = EKE | |
147 | END IF | |
148 | * | | | |
149 | * | +----------------------------------------------------------------* | |
150 | STRRED = 0.D+00 | |
151 | * | +----------------------------------------------------------------* | |
152 | * | | Apply a 50 % reduction in the intranuclear cascade probability | |
153 | * | | for each s/sbar quark of the projectile | |
154 | DO 100 IQ = 1,3 | |
155 | STRRED = STRRED + 0.1666666666666667D+00 | |
156 | & * ABS ( IQSCHR ( MQUARK (IQ,IJ) ) ) | |
157 | 100 CONTINUE | |
158 | * | | | |
159 | * | +----------------------------------------------------------------* | |
160 | * | Make the strangeness reduction effective only at low energies | |
161 | * | (where secondaries are few ==> the s composition of the projecti- | |
162 | * | le is relevant) | |
163 | STRRED = STRRED * AM (KPROJ) / ( EKE + AM (KPROJ) ) | |
164 | FRAC = ( 1.D+00 - STRRED ) * FRAC | |
165 | * | | |
166 | * +-------------------------------------------------------------------* | |
167 | * | Incoming mesons | |
168 | ELSE | |
169 | * | +----------------------------------------------------------------* | |
170 | * | | | |
171 | IF ( IBTAR .LE. 63 ) THEN | |
172 | WEIGH1 = 1.D+00 / ( 1.D+00 + ( 60.D+00 / EKE ) ) | |
173 | FRAC = FRA ( 2, IBTAR ) * ( ( 1.D+00 + 0.1333D+00 * MAX ( | |
174 | & 0.D+00, BBTAR - 35.D+00 ) / 28.D+00 ) * WEIGH1 + | |
175 | & 1.D+00 - WEIGH1 ) | |
176 | * | | | |
177 | * | +----------------------------------------------------------------* | |
178 | * | | | |
179 | ELSE IF ( IBTAR .LE. 107 ) THEN | |
180 | WEIGH1 = 1.D+00 / ( 1.D+00 + ( 60.D+00 / EKE ) ) | |
181 | FRAC = ( 0.75D+00 + WEIGH1 * 0.1D+00 ) * FRA ( 1, IBTAR ) | |
182 | * | | | |
183 | * | +----------------------------------------------------------------* | |
184 | * | | | |
185 | ELSE IF ( IBTAR .LE. 206 ) THEN | |
186 | WEIGH1 = 1.D+00 / ( 1.D+00 + ( 60.D+00 / EKE ) ) | |
187 | FRAC = ( 0.6279D+00 + 0.001077D+00 * BBTAR ) * WEIGH1 | |
188 | & + ( 1.D+00 - WEIGH1 ) * ( 0.554D+00 + 0.00095D+00 | |
189 | & * BBTAR ) | |
190 | * | | | |
191 | * | +----------------------------------------------------------------* | |
192 | * | | | |
193 | ELSE | |
194 | WEIGH1 = 1.D+00 / ( 1.D+00 + ( 60.D+00 / EKE ) ) | |
195 | FRAC = 0.75D+00 + 0.1D+00 * WEIGH1 | |
196 | END IF | |
197 | * | | | |
198 | * | +----------------------------------------------------------------* | |
199 | EKEFF = EKE | |
200 | STRRED = 0.D+00 | |
201 | * | +----------------------------------------------------------------* | |
202 | * | | Apply a 50 % reduction in the intranuclear cascade probability | |
203 | * | | for each s/sbar quark of the projectile | |
204 | DO 150 IQ = 1,2 | |
205 | STRRED = STRRED + 0.25D+00 | |
206 | & * ABS ( IQSCHR ( MQUARK (IQ,IJ) ) ) | |
207 | 150 CONTINUE | |
208 | * | | | |
209 | * | +----------------------------------------------------------------* | |
210 | * | Make the strangeness reduction effective only at low energies | |
211 | * | (where secondaries are few ==> the s composition of the projecti- | |
212 | * | le is relevant) | |
213 | STRRED = STRRED * AM (KPROJ) / ( EKE + AM (KPROJ) ) | |
214 | FRAC = ( 1.D+00 - STRRED ) * FRAC | |
215 | END IF | |
216 | * | | |
217 | * +-------------------------------------------------------------------* | |
218 | * The following is a reduction factor to bring Hannes's parametri- | |
219 | * zations for the average energy carried by cascade nucleons in | |
220 | * better agreement with experimental data | |
221 | FSPRED = FSPRD0 + ( 1.D+00 - FSPRD0 ) * MAX ( 10.D+00 - EKE, | |
222 | & 0.D+00 ) / 10.D+00 | |
223 | FEX0RD = FSPRD0**ABS(IBPROJ) | |
224 | * +-------------------------------------------------------------------* | |
225 | * | Check whether it is the same target nucleus of the last call | |
226 | IF ( BBTAR .NE. BBOLD .OR. ZZTAR .NE. ZZOLD ) THEN | |
227 | LNUCNW = .TRUE. | |
228 | SQRAMS = SQRT ( BBTAR ) | |
229 | ATO1O3 = BBTAR**0.3333333333333333D+00 | |
230 | * ZTO1O3 = ZZTAR**0.3333333333333333D+00 | |
231 | BBOLD = BBTAR | |
232 | ZZOLD = ZZTAR | |
233 | SQROLD = SQRAMS | |
234 | HKAP = BBTAR**2 / ( ZZTAR**2 + ( BBTAR - ZZTAR )**2 ) | |
235 | HHLP (1) = ( HKAP * ZZTAR )**0.3333333333333333D+00 / ATO1O3 | |
236 | HHLP (2) = ( HKAP * ( BBTAR - ZZTAR ) ) | |
237 | & **0.3333333333333333D+00 / ATO1O3 | |
238 | RDSNUC = R0NUCL * ATO1O3 | |
239 | RDSCOU = RCCOUL * ATO1O3 | |
240 | FLKCOU = DOST ( 1, ZZTAR ) | |
241 | * | Coulomb barrier "a la Evap" | |
242 | VEFFNU (1) = FLKCOU * COULPR * ZZTAR / RDSCOU | |
243 | VEFFNU (2) = 0.D+00 | |
244 | AMRCAV = MAX ( 1.D+00, ( BBTAR - 2.D+00 ) ) * AMUC12 | |
245 | AMRCSQ = AMRCAV * AMRCAV | |
246 | * | +----------------------------------------------------------------* | |
247 | * | | | |
248 | DO 3000 I = 1, 2 | |
249 | PFRMMX (I) = HHLP (I) * APFRMX | |
250 | P2HELP = PFRMMX (I)**2 | |
251 | EFRMMX (I) = SQRT ( P2HELP + AMNUSQ (I) ) - AMNUCL (I) | |
252 | EFRMAV (I) = 0.3D+00 * P2HELP / AMNUCL (I) * ( 1.D+00 | |
253 | & - P2HELP / ( 5.6D+00 * AMNUSQ (I) ) ) | |
254 | ERCLAV (I) = 0.3D+00 * P2HELP / AMRCAV * ( 1.D+00 | |
255 | & - P2HELP / ( 5.6D+00 * AMRCSQ ) ) | |
256 | V0WELL (I) = EFRMMX (I) + EBNDNG (I) | |
257 | VEFFNU (I) = VEFFNU (I) + V0WELL (I) | |
258 | ERCLMX = 0.5D+00 * P2HELP / AMRCAV * ( 1.D+00 | |
259 | & - 0.25D+00 * P2HELP / AMRCSQ ) | |
260 | EKMNNU (I) = VEFFNU (I) + EBNDNG (I) | |
261 | & - EFRMMX (I) + ERCLMX | |
262 | EKMXNU (I) = VEFFNU (I) + EBNDNG (I) | |
263 | EKMNAV (I) = VEFFNU (I) + EBNDNG (I) | |
264 | & - EFRMAV (I) + ERCLAV (I) | |
265 | ESWELL (I) = EBNDNG (I) + V0WELL (I) | |
266 | & - EFRMAV (I) + ERCLAV (I) | |
267 | FTVTH (I) = ( EKMNNU (I) / EFRMMX (I) )**3 | |
268 | FTVTH (I) = 0.4D+00 * SQRT ( FTVTH (I) ) | |
269 | FINCUP (I) = AKEKA ( I, EKEFF, BBTAR ) * FSPRED | |
270 | 3000 CONTINUE | |
271 | * | | | |
272 | * | +----------------------------------------------------------------* | |
273 | * | | |
274 | * +-------------------------------------------------------------------* | |
275 | * | It is the same target nucleus of the last call to Nucevv/Nucriv | |
276 | ELSE | |
277 | LNUCNW = .FALSE. | |
278 | SQRAMS = SQROLD | |
279 | FINCUP (1) = AKEKA ( 1, EKEFF, BBTAR ) * FSPRED | |
280 | FINCUP (2) = AKEKA ( 2, EKEFF, BBTAR ) * FSPRED | |
281 | END IF | |
282 | * | | |
283 | * +-------------------------------------------------------------------* | |
284 | CALL NIZL (IJ, BBTAR, EKE, PPROJ, SIHA, ZLA) | |
285 | CALL NIZL (IJ, BBONE, EKE, PPROJ, SIHN, ZLP) | |
286 | ANUAV = BBTAR * SIHN / SIHA | |
287 | * Anuav= average number of collisions in nucleus | |
288 | ANUSEA = ANUAV - 1.D+00 | |
289 | * +-------------------------------------------------------------------* | |
290 | * | Call the function sampling the distribution for the | |
291 | * | number of high energy collisions | |
292 | IF ( ANUSEA .GT. 0.D+00 .AND. PPROJ .GT. 5.D+00 ) THEN | |
293 | EXPLAM = EXP ( -ANUSEA ) | |
294 | NSEA = NUDISV ( ANUAV, IBPROJ, EXPLAM, ASEASQ, APOWER, | |
295 | & PRZERO ) - 1 | |
296 | NSEA = MIN ( NSEA, IBTAR - 1 ) | |
297 | LUFFA = .FALSE. | |
298 | * | | |
299 | * +-------------------------------------------------------------------* | |
300 | * | | |
301 | ELSE | |
302 | ASEASQ = 0.D+00 | |
303 | ANUSEA = 0.D+00 | |
304 | APOWER = 1.D+00 | |
305 | ANUAV = 1.D+00 | |
306 | PRZERO = 1.D+00 | |
307 | ANUCSQ = 1.D+00 | |
308 | NSEA = 0 | |
309 | RATOLD = 0.D+00 | |
310 | ACFACT = 0.D+00 | |
311 | BCFACT = 2.D+00 | |
312 | ANUC11 = ANUC00 | |
313 | ANUCOR = ANUC00 | |
314 | ACPARM = 0.D+00 | |
315 | RRPCO = 0.D+00 | |
316 | LUFFA = .TRUE. | |
317 | END IF | |
318 | * | | |
319 | * +-------------------------------------------------------------------* | |
320 | NSEALD = NSEA | |
321 | * +-------------------------------------------------------------------* | |
322 | * | Check if the parameterized intranuclear cascade is requested | |
323 | IF ( LINCTV ) THEN | |
324 | IF ( LUFFA ) GO TO 3500 | |
325 | CALL GRNDM(RNDM,1) | |
326 | RRPCR = RNDM (1) | |
327 | * | +----------------------------------------------------------------* | |
328 | * | | Check for negative <n_sea^2> | |
329 | IF ( ASEASQ .LT. 0.D+00 ) THEN | |
330 | ANUCOR = ANUC00 / ( 1.D+00 + 2.D+00 / PPROJ ) | |
331 | ASEASQ = ANUCOR * ANUAV**2 - 2.D+00 * ANUAV + 1.D+00 | |
332 | ANUCSQ = ANUCOR * ANUAV**2 | |
333 | ACPARM = ACPAR0 | |
334 | ANUC11 = ANUC00 | |
335 | PRZERO = EXPLAM | |
336 | * | | | |
337 | * | +----------------------------------------------------------------* | |
338 | * | | | |
339 | ELSE | |
340 | ANUCSQ = ASEASQ + 2.D+00 * ANUAV - 1.D+00 | |
341 | ANUC11 = ANUCSQ / ANUAV**2 | |
342 | * | | +-------------------------------------------------------------* | |
343 | * | | | Check if a power different from 2 must be used for the | |
344 | * | | | cascade particle distributions | |
345 | * | | | Power = 2: | |
346 | IF ( .NOT. LPOWER ) THEN | |
347 | APOWER = ANUCSQ | |
348 | * | | | | |
349 | * | | +-------------------------------------------------------------* | |
350 | * | | | | |
351 | ELSE | |
352 | IPOWER = NINT (-DPOWER) | |
353 | IF ( IPOWER .EQ. 17 ) THEN | |
354 | FEX0RD = FEX0RD * FSPRD0 | |
355 | ELSE IF ( IPOWER .EQ. 8 .OR. IPOWER .EQ. 1 .OR. IPOWER | |
356 | & .GE. 12 ) THEN | |
357 | FEX0RD = FEX0RD * FSPRD0 | |
358 | END IF | |
359 | END IF | |
360 | * | | | | |
361 | * | | +-------------------------------------------------------------* | |
362 | ANUC11 = MIN ( ANUC11, ANUC00 ) | |
363 | ANUCOR = ANUC11 / ( 1.D+00 + 5.D+00 * ( ANUC11 - 1.D+00 ) | |
364 | & / PPROJ ) | |
365 | ANUCOR = MAX ( ANUCOR, ONEONE ) | |
366 | BBCOF = ( ANUC11 * ANUAV**2 - 2.D+00 * ANUCOR * ANUAV**2 | |
367 | & + 2.D+00 * ANUCOR * ANUAV - 1.D+00 ) | |
368 | BBCOF = ABS (BBCOF) | |
369 | AACOF = ANUCOR * ( ANUAV - 1.D+00 )**2 | |
370 | CCCOF = - ANUAV**2 * ( ANUC11 - ANUCOR ) | |
371 | IF ( AACOF - CCCOF .GT. ANGLGB ) THEN | |
372 | RRPCO = 0.5D+00 * ( - BBCOF + SQRT ( BBCOF**2 - 4.D+00 | |
373 | & * AACOF * CCCOF ) ) / AACOF | |
374 | ELSE | |
375 | RRPCO = 0.D+00 | |
376 | END IF | |
377 | RRPCO = MIN ( ONEONE, RRPCO ) | |
378 | RRPCO = MAX ( ZERZER, RRPCO ) | |
379 | RRPCO = 1.D+00 - RRPCO | |
380 | END IF | |
381 | * | | | |
382 | * | +----------------------------------------------------------------* | |
383 | * | Supply the fraction of the total kinetic energy to be | |
384 | * | used for intranuclear cascade nucleons | |
385 | 3500 CONTINUE | |
386 | EKUPNU (1) = AINEL (IJJ, 6, EKEFF, BBTAR, SQRAMS) * EKEFF | |
387 | & * FSPRED | |
388 | EKUPNU (2) = AINEL (IJJ, 7, EKEFF, BBTAR, SQRAMS) * EKEFF | |
389 | & * FSPRED | |
390 | EINCP = FRAC * EKUPNU (1) | |
391 | EINCN = FRAC * EKUPNU (2) | |
392 | FRAMAX = FRAC | |
393 | * | +----------------------------------------------------------------* | |
394 | * | | Now start Fincup (i) calculation!!!! | |
395 | DO 4000 I = 1, 2 | |
396 | EKPOLD (I) = EKUPNU (I) | |
397 | EKUPNU (I) = MAX ( FRAMAX * EKUPNU (I), EKMXNU (I)/TWOTHI | |
398 | & , FOUFOU * FINCUP (I) ) | |
399 | EKUPNU (I) = MIN ( EKUPNU (I), FOUFOU * FINCUP (I) ) | |
400 | AHELP = - ( EKUPNU (I) - EKMNAV (I) ) / FINCUP (I) | |
401 | CHELP = EKMNAV (I) / FINCUP (I) | |
402 | DHELP = EKUPNU (I) / FINCUP (I) | |
403 | FINC0 = FINCFR + ESWELL (I) / FINCUP (I) | |
404 | BHELP = EXP ( AHELP / FINC0 ) | |
405 | FINCA = FINC0 | |
406 | FUNCA = - ( CHELP - DHELP * BHELP ) / ( 1.D+00 - BHELP ) | |
407 | FINCB = 2.D+00 * FINC0 | |
408 | BHELP = EXP ( AHELP / FINCB ) | |
409 | FUNCB = FINC0 - FINCB - ( CHELP - DHELP * BHELP ) / | |
410 | & ( 1.D+00 - BHELP ) | |
411 | ICOU = 1 | |
412 | FINCLD = FINC0 | |
413 | * | | +-------------------------------------------------------------* | |
414 | * | | | | |
415 | 3800 CONTINUE | |
416 | FINCX (I) = FINCA - FUNCA * ( FINCB - FINCA ) / | |
417 | & ( FUNCB - FUNCA ) | |
418 | * | | | +----------------------------------------------------------* | |
419 | * | | | | | |
420 | IF ( ABS ( FINCX (I) - FINCLD ) .GT. 0.03D+00 .AND. | |
421 | & ICOU .LT. 20 ) THEN | |
422 | ICOU = ICOU + 1 | |
423 | FINCLD = FINCX (I) | |
424 | * | | | | +-------------------------------------------------------* | |
425 | * | | | | | | |
426 | IF ( ABS (FUNCA) .LT. ABS (FUNCB) ) THEN | |
427 | FINCB = FINCLD | |
428 | BHELP = EXP ( AHELP / FINCB ) | |
429 | FUNCB = FINC0 - FINCB - ( CHELP - DHELP * BHELP | |
430 | & ) / ( 1.D+00 - BHELP ) | |
431 | * | | | | | | |
432 | * | | | | +-------------------------------------------------------* | |
433 | * | | | | | | |
434 | ELSE | |
435 | FINCA = FINCLD | |
436 | BHELP = EXP ( AHELP / FINCA ) | |
437 | FUNCA = FINC0 - FINCA - ( CHELP - DHELP * BHELP | |
438 | & ) / ( 1.D+00 - BHELP ) | |
439 | END IF | |
440 | * | | | | | | |
441 | * | | | | +-------------------------------------------------------* | |
442 | GO TO 3800 | |
443 | * | | | | | |
444 | * | | +-<|--<--<--<--<--< | |
445 | END IF | |
446 | * | | | | | |
447 | * | | | +----------------------------------------------------------* | |
448 | * | | | | |
449 | * | | +-------------------------------------------------------------* | |
450 | * | | | | |
451 | * | | +-------------------------------------------------------------* | |
452 | ESLOPE (I) = FINCUP (I) * FINCX (I) | |
453 | AHELP = EXP ( - EKPOLD (I) / FINCUP (I) ) | |
454 | EKNOLD = FINCUP (I) - EKPOLD (I) * AHELP / | |
455 | & ( 1.D+00 - AHELP ) | |
456 | EXMNAV (I) = EXP ( - EKMNAV (I) / ESLOPE (I) ) | |
457 | EXMNNU (I) = EXP ( - EKMNNU (I) / ESLOPE (I) ) | |
458 | EXUPNU (I) = EXP ( - EKUPNU (I) / ESLOPE (I) ) | |
459 | EKINAV (I) = ESLOPE (I) + ( EKMNAV (I) * EXMNAV (I) - | |
460 | & EKUPNU (I) * EXUPNU (I) ) / ( EXMNAV (I) - | |
461 | & EXUPNU (I) ) | |
462 | EKPOLD (I) = EKPOLD (I) * FRAC | |
463 | FINCUP (I) = EKINAV (I) / EKNOLD | |
464 | 4000 CONTINUE | |
465 | * | | | |
466 | * | +----------------------------------------------------------------* | |
467 | EINCP = EINCP * FINCUP (1) | |
468 | EINCN = EINCN * FINCUP (2) | |
469 | AGREYP = EINCP / EKINAV (1) | |
470 | AGREYN = EINCN / EKINAV (2) | |
471 | AGREYT = AGREYP + AGREYN | |
472 | CALL GRNDM(RNDM,1) | |
473 | RNPCO = RNDM ( 1 ) | |
474 | * | +----------------------------------------------------------------* | |
475 | * | | Check if we have to sample from a distribution with <n_casc> | |
476 | * | | prop. <nu^power> or to <nu> | |
477 | IF ( RNPCO .LT. RRPCO ) THEN | |
478 | * | | +-------------------------------------------------------------* | |
479 | * | | | Power .ne. 2: | |
480 | IF ( LPOWER ) THEN | |
481 | * | | | +----------------------------------------------------------* | |
482 | * | | | | 1**Y = 1 | |
483 | IF ( NSEA .EQ. 0 ) THEN | |
484 | IF ( IPOWER .LT. 7 ) THEN | |
485 | ANCOSQ = 1.D+00 | |
486 | ELSE | |
487 | ANCOSQ = FPOWER ( IPOWER, 1, ANUAV ) | |
488 | END IF | |
489 | * | | | | | |
490 | * | | | +----------------------------------------------------------* | |
491 | * | | | | The exponent has a fixed value | |
492 | ELSE IF ( DPOWER .GT. 0.D+00 ) THEN | |
493 | ANCOSQ = ( NSEA + 1 )**DPOWER | |
494 | * | | | | | |
495 | * | | | +----------------------------------------------------------* | |
496 | * | | | | The function Fpower supplies the exponent | |
497 | ELSE | |
498 | IF ( IPOWER .LT. 7 ) THEN | |
499 | ANCOSQ = ( NSEA + 1 )**FPOWER ( IPOWER, | |
500 | & NSEA + 1, ANUAV ) | |
501 | ELSE IF ( IPOWER .LT. 11 ) THEN | |
502 | ANCOSQ = ( NSEA + 1 ) * FPOWER ( IPOWER, | |
503 | & NSEA + 1, ANUAV ) | |
504 | ELSE | |
505 | ANCOSQ = ( NSEA + 1 )**FPOWER ( IPOWER, | |
506 | & NSEA + 1, ANUAV ) | |
507 | END IF | |
508 | END IF | |
509 | * | | | | | |
510 | * | | | +----------------------------------------------------------* | |
511 | * | | | | |
512 | * | | +-------------------------------------------------------------* | |
513 | * | | | Power = 2: | |
514 | ELSE | |
515 | ANCOSQ = ( NSEA + 1 )**2 | |
516 | END IF | |
517 | * | | | | |
518 | * | | +-------------------------------------------------------------* | |
519 | XIXIXI = AGREYP / ( AGREYP + APOWER ) | |
520 | * | | | |
521 | * | +----------------------------------------------------------------* | |
522 | * | | | |
523 | ELSE | |
524 | ANCOSQ = NSEA + 1 | |
525 | XIXIXI = AGREYP / ( AGREYP + ANUAV ) | |
526 | END IF | |
527 | * | | | |
528 | * | +----------------------------------------------------------------* | |
529 | RRPC0 = ( 1.D+00 - XIXIXI )**ANCOSQ | |
530 | RRPCR = RRPC0 | |
531 | CALL GRNDM(RNDM,1) | |
532 | RNPCR = RNDM (1) | |
533 | IF ( RRPCR .GE. RNPCR ) THEN | |
534 | NGREYP = 0 | |
535 | ELSE | |
536 | DO 4600 I = 1, ICHTAR | |
537 | RRPC0 = RRPC0 * ( I - 1 + ANCOSQ ) * XIXIXI | |
538 | & / I | |
539 | RRPCR = RRPCR + RRPC0 | |
540 | IF ( RNPCR .LE. RRPCR ) GO TO 4700 | |
541 | 4600 CONTINUE | |
542 | I = I - 1 | |
543 | IF ( BBTAR .GT. 12.D+00 ) | |
544 | & WRITE (LUNERR,*)' *** RRPCR,I,NSEA,ANCOSQ*XIXIXI ***', | |
545 | & RRPCR,I,NSEA,ANCOSQ*XIXIXI | |
546 | 4700 CONTINUE | |
547 | NGREYP = I | |
548 | END IF | |
549 | * | +----------------------------------------------------------------* | |
550 | * | | Check if we have to sample from a distribution with <n_casc> | |
551 | * | | prop. <nu^power> or to <nu> | |
552 | IF ( RNPCO .LT. RRPCO ) THEN | |
553 | XIXIXI = AGREYN / ( AGREYN + APOWER ) | |
554 | * | | | |
555 | * | +----------------------------------------------------------------* | |
556 | * | | | |
557 | ELSE | |
558 | ANCOSQ = NSEA + 1 | |
559 | XIXIXI = AGREYN / ( AGREYN + ANUAV ) | |
560 | END IF | |
561 | * | | | |
562 | * | +----------------------------------------------------------------* | |
563 | RRNC0 = ( 1.D+00 - XIXIXI )**ANCOSQ | |
564 | RRNCR = RRNC0 | |
565 | * | Correlate cascade neutrons to cascade protons: | |
566 | * | No correlation | |
567 | CALL GRNDM(RNDM,1) | |
568 | RNNCR = RNDM (1) | |
569 | RN1GSC = RNPCR | |
570 | RN2GSC = RNNCR | |
571 | IF ( RRNCR .GE. RNNCR ) THEN | |
572 | NGREYN = 0 | |
573 | ELSE | |
574 | DO 4650 I = 1, IBTAR - ICHTAR | |
575 | RRNC0 = RRNC0 * ( I - 1 + ANCOSQ ) * XIXIXI | |
576 | & / I | |
577 | RRNCR = RRNCR + RRNC0 | |
578 | IF ( RNNCR .LE. RRNCR ) GO TO 4750 | |
579 | 4650 CONTINUE | |
580 | I = I - 1 | |
581 | IF ( BBTAR .GT. 12.D+00 ) | |
582 | & WRITE (LUNERR,*)' *** RRNCR,I,NSEA,ANCOSQ*XIXIXI ***', | |
583 | & RRNCR,I,NSEA,ANCOSQ*XIXIXI | |
584 | 4750 CONTINUE | |
585 | NGREYN = I | |
586 | END IF | |
587 | NGREYT = NGREYN + NGREYP | |
588 | NGREYN = 0 | |
589 | NGREYP = 0 | |
590 | PROBPR = AGREYP / ( AGREYP + AGREYN ) | |
591 | DO 4760 I = 1, NGREYT | |
592 | CALL GRNDM(RNDM,1) | |
593 | RNDPPR = RNDM (1) | |
594 | IF ( RNDPPR .LT. PROBPR .AND. NGREYP .LT. ICHTAR ) | |
595 | & THEN | |
596 | NGREYP = NGREYP + 1 | |
597 | ELSE IF ( NGREYN .LT. IBTAR - ICHTAR ) THEN | |
598 | NGREYN = NGREYN + 1 | |
599 | ELSE | |
600 | NGREYP = NGREYP + 1 | |
601 | END IF | |
602 | 4760 CONTINUE | |
603 | FRAMAX = FRAC | |
604 | * | The number of grey particles is now correlated to the number | |
605 | * | of high energy collisions | |
606 | EINCP = NGREYP * EKINAV (1) | |
607 | EINCN = NGREYN * EKINAV (2) | |
608 | TVTENT = ( NSEA + 1 ) * ( AV0WEL - AEFRMA ) | |
609 | * | | |
610 | * +-------------------------------------------------------------------* | |
611 | * | | |
612 | ELSE | |
613 | EINCP = 0.D+00 | |
614 | EINCN = 0.D+00 | |
615 | EKUPNU (1) = 1.D+01 | |
616 | EKUPNU (2) = 1.D+01 | |
617 | ESLOPE (1) = 0.D+00 | |
618 | ESLOPE (2) = 0.D+00 | |
619 | EKINAV (1) = 1.D+10 | |
620 | EKINAV (2) = 1.D+10 | |
621 | FRAC = 0.D+00 | |
622 | PCR = 1.D+00 | |
623 | FRAINC = 0.D+00 | |
624 | TVTENT = 0.D+00 | |
625 | END IF | |
626 | * | | |
627 | * +-------------------------------------------------------------------* | |
628 | PCROLD = PCR | |
629 | EKTRIA = EKE - EINCP - EINCN - TVTENT | |
630 | IF ( EKTRIA .LE. 0.5D+00 * EKE ) THEN | |
631 | EKTRIA = 0.5D+00 * EKE | |
632 | END IF | |
633 | ETRIAL = EKTRIA + AM (KPROJ) | |
634 | * +-------------------------------------------------------------------* | |
635 | * | | |
636 | IF ( ETRIAL .LT. ECUTRF ) THEN | |
637 | PTRIAL = SQRT ( ETRIAL**2 - AM (KPROJ)**2 ) | |
638 | XCUTFF = 0.3D+00 * ETHSEA / EKTRIA | |
639 | * XCUTFF = 0.3D+00 / PTRIAL | |
640 | * | | |
641 | * +-------------------------------------------------------------------* | |
642 | * | | |
643 | ELSE | |
644 | PTRIAL = ETRIAL | |
645 | UMO = SQRT ( 2.D+00*AM(1) * ETRIAL + AM (KPROJ)**2 + AM(1)**2 ) | |
646 | XCUTFF = 0.30D+00 * ETHSEA * UMO / ( UMOREF * EKTRIA ) | |
647 | END IF | |
648 | * | | |
649 | * +-------------------------------------------------------------------* | |
650 | 200 CONTINUE | |
651 | IF ( NSEA .EQ. 0 ) GO TO 1000 | |
652 | * *** Sample X-values of nsea sea-quark-antiquark pairs | |
653 | NC3 = 0 | |
654 | * +-------------------------------------------------------------------* | |
655 | * | | |
656 | 300 CONTINUE | |
657 | * *** Sea distribution X**(-1)*(1-X)**5 | |
658 | NC3 = NC3 + 1 | |
659 | * | +----------------------------------------------------------------* | |
660 | * | | | |
661 | IF ( NC3 .GT. 10 ) THEN | |
662 | NSEA = NSEA - 1 | |
663 | GO TO 200 | |
664 | END IF | |
665 | * | | | |
666 | * | +----------------------------------------------------------------* | |
667 | XO = 1.D+00 | |
668 | UNOSEA = 2.0D+00 | |
669 | GAMSEA = 0.05D+00 | |
670 | XSEAMX = 1.0D+00 | |
671 | * | +----------------------------------------------------------------* | |
672 | * | | | |
673 | DO 400 I=1,NSEA | |
674 | NCOU= 0 | |
675 | 22 CONTINUE | |
676 | NCOU = NCOU + 1 | |
677 | * | | +-------------------------------------------------------------* | |
678 | * | | | | |
679 | IF ( NCOU .LT. 11 ) THEN | |
680 | XSEA(I) = BETRST ( GAMSEA, UNOSEA, XCUTFF, XSEAMX ) | |
681 | IF ( XSEA(I) .LT. XCUTFF ) GO TO 22 | |
682 | END IF | |
683 | * | | | | |
684 | * | | +-------------------------------------------------------------* | |
685 | NCOU = 0 | |
686 | 23 CONTINUE | |
687 | NCOU = NCOU + 1 | |
688 | * | | +-------------------------------------------------------------* | |
689 | * | | | | |
690 | IF ( NCOU .LT. 11 ) THEN | |
691 | XASEA(I) = BETRST ( GAMSEA, UNOSEA, XCUTFF, XSEAMX ) | |
692 | IF ( XASEA(I) .LT. XCUTFF ) GO TO 23 | |
693 | END IF | |
694 | * | | | | |
695 | * | | +-------------------------------------------------------------* | |
696 | XO = XO * ( 1.D+00 - XSEA (I) - XASEA(I) ) | |
697 | 400 CONTINUE | |
698 | * | | | |
699 | * | +----------------------------------------------------------------* | |
700 | * | +----------------------------------------------------------------* | |
701 | * | | | |
702 | IF ( XO * PTRIAL .LT. 4.D+00 ) THEN | |
703 | NSEA = NSEA - 1 | |
704 | IF ( NSEA .LE. 0 ) GO TO 1000 | |
705 | GO TO 300 | |
706 | * | | | |
707 | * +--+--<--<--<--<--< go to resample | |
708 | * | | | |
709 | END IF | |
710 | * | | | |
711 | * | +----------------------------------------------------------------* | |
712 | ILOW = 0 | |
713 | * | +----------------------------------------------------------------* | |
714 | * | | | |
715 | DO 500 I = 1, NSEA | |
716 | EMSEA = EKTRIA * ( XSEA (I) + XASEA (I) ) | |
717 | * | | +-------------------------------------------------------------* | |
718 | * | | | | |
719 | IF ( EMSEA .LE. ETHSEA + AM (23) ) THEN | |
720 | ILOW = ILOW + 1 | |
721 | * | | | +----------------------------------------------------------* | |
722 | * | | | | | |
723 | IF ( I .LT. NSEA ) THEN | |
724 | II = I + 1 | |
725 | XSEA (II) = XSEA (II) + XSEA (I) | |
726 | XASEA (II) = XASEA (II) + XASEA (I) | |
727 | * | | | | | |
728 | * | | | +----------------------------------------------------------* | |
729 | * | | | | | |
730 | ELSE IF ( I - ILOW .GT. 0 ) THEN | |
731 | II = I - ILOW | |
732 | EKTRIA = EKTRIA * ( 1.D+00 - XSEA(I) - XASEA (I) ) | |
733 | XSEA (II) = XSEA (II) + XSEA (I) | |
734 | XASEA (II) = XASEA (II) + XASEA (I) | |
735 | END IF | |
736 | * | | | | | |
737 | * | | | +----------------------------------------------------------* | |
738 | * | | | | |
739 | * | | +-------------------------------------------------------------* | |
740 | * | | | | |
741 | ELSE | |
742 | XSEA (I-ILOW) = XSEA (I) | |
743 | XASEA (I-ILOW) = XASEA (I) | |
744 | EKTRIA = EKTRIA * ( 1.D+00 - XSEA(I) - XASEA (I) ) | |
745 | END IF | |
746 | * | | | | |
747 | * | | +-------------------------------------------------------------* | |
748 | 500 CONTINUE | |
749 | * | | | |
750 | * | +----------------------------------------------------------------* | |
751 | NSEA = NSEA - ILOW | |
752 | * | | |
753 | * +-------------------------------------------------------------------* | |
754 | 1000 CONTINUE | |
755 | * +-------------------------------------------------------------------* | |
756 | * | Now sample the target nucleons for the high energy collisions | |
757 | DO 1200 I = 1, NSEA + 1 | |
758 | ZAPU = ZNOW / ANOW | |
759 | * | +----------------------------------------------------------------* | |
760 | * | | Wounded nucleon selection: | |
761 | * | | Kt is the index of the target nucleon (1=proton, 8=neutron) | |
762 | CALL GRNDM(RNDM,1) | |
763 | IF ( RNDM(1) .LE. ZAPU ) THEN | |
764 | IJTARG (I) = 1 | |
765 | ZNOW = ZNOW - 1.D0 | |
766 | KTARP = KTARP + 1 | |
767 | * | | | |
768 | * | +----------------------------------------------------------------* | |
769 | * | | | |
770 | ELSE | |
771 | IJTARG (I) = 8 | |
772 | KTARN = KTARN + 1 | |
773 | END IF | |
774 | * | | | |
775 | * | +----------------------------------------------------------------* | |
776 | ANOW = ANOW - 1.D0 | |
777 | 1200 CONTINUE | |
778 | * | | |
779 | * +-------------------------------------------------------------------* | |
780 | ZNCOLL = KTARP | |
781 | ANCOLL = NSEA + 1 | |
782 | AHELP = EKMNNU (1) / ESLOPE (1) | |
783 | AHELP = AHELP * FTVTH (1) * ( 1.D+00 + 0.3333333333333333D+00 | |
784 | & * AHELP ) / ( 1.D+00 - EXUPNU (1) ) | |
785 | AHELPP = AHELP | |
786 | AHELP = EKMNNU (2) / ESLOPE (2) | |
787 | AHELP = AHELP * FTVTH (2) * ( 1.D+00 + 0.3333333333333333D+00 | |
788 | & * AHELP ) / ( 1.D+00 - EXUPNU (2) ) | |
789 | AHELPN = AHELP | |
790 | FEXTRA = 0.3D+00 * AGREYP | |
791 | TVCHCP = EFRMMX (1) - EFRMAV (1) + EBNDNG (1) | |
792 | TVGRYP = AHELPP * ( EINCP + FEXTRA * EKINAV (1) ) * AGREYP | |
793 | & / ( AGREYP + FEXTRA ) * FEX0RD | |
794 | NHELP = INT ( TVGRYP / TVCHCP ) | |
795 | TVGRE0 = NHELP * TVCHCP | |
796 | PROB0 = ( TVGRYP - TVGRE0 ) / TVCHCP | |
797 | CALL GRNDM(RNDM,1) | |
798 | IF ( RNDM (1) .LT. PROB0 ) THEN | |
799 | CALL GRNDM(RNDM,3) | |
800 | P2HELP = ( PFRMMX (1) * MAX ( RNDM (1), | |
801 | & RNDM (2), RNDM (3) ) )**2 | |
802 | TVGRYP = 0.5D+00 * P2HELP / AMNUCL (1) * ( 1.D+00 | |
803 | & - 0.25D+00 * P2HELP / AMNUSQ (1) ) | |
804 | TVGRYP = EFRMMX (1) - TVGRYP + EBNDNG (1) + TVGRE0 | |
805 | ELSE | |
806 | TVGRYP = TVGRE0 | |
807 | END IF | |
808 | FEXTRA = 0.3D+00 * AGREYN | |
809 | TVCHCN = EFRMMX (2) - EFRMAV (2) + EBNDNG (2) | |
810 | TVGRYN = AHELPN * ( EINCN + FEXTRA * EKINAV (2) ) * AGREYN | |
811 | & / ( AGREYN + FEXTRA ) * FEX0RD | |
812 | NHELP = INT ( TVGRYN / TVCHCN ) | |
813 | TVGRE0 = NHELP * TVCHCN | |
814 | PROB0 = ( TVGRYN - TVGRE0 ) / TVCHCN | |
815 | CALL GRNDM(RNDM,1) | |
816 | IF ( RNDM (1) .LT. PROB0 ) THEN | |
817 | CALL GRNDM(RNDM,3) | |
818 | P2HELP = ( PFRMMX (2) * MAX ( RNDM (1), | |
819 | & RNDM (2), RNDM (3) ) )**2 | |
820 | TVGRYN = 0.5D+00 * P2HELP / AMNUCL (2) * ( 1.D+00 | |
821 | & - 0.25D+00 * P2HELP / AMNUSQ (2) ) | |
822 | TVGRYN = EFRMMX (2) - TVGRYN + EBNDNG (2) + TVGRE0 | |
823 | ELSE | |
824 | TVGRYN = TVGRE0 | |
825 | END IF | |
826 | TVGRE0 = TVGRYP + TVGRYN | |
827 | TVGREY = 0.D+00 | |
828 | NDIFFT = NGREYT - NINT (ANOW) | |
829 | IF ( NINT (ZNOW) - NGREYP .LT. 0 ) THEN | |
830 | NDIFFP = NGREYP - NINT ( ZNOW ) | |
831 | NGREYP = NGREYP - NDIFFP | |
832 | EINCP = EINCP - NDIFFP * EKINAV (1) | |
833 | NGREYN = NGREYN + NDIFFP | |
834 | EINCN = EINCN + NDIFFP * EKINAV (2) | |
835 | IF ( NINT (ANOW-ZNOW) - NGREYN .LT. 0 ) THEN | |
836 | NDIFFN = NGREYN - NINT ( ANOW - ZNOW ) | |
837 | NGREYN = NGREYN - NDIFFN | |
838 | EINCN = EINCN - NDIFFN * EKINAV (2) | |
839 | END IF | |
840 | ELSE IF ( NINT (ANOW-ZNOW) - NGREYN .LT. 0 ) THEN | |
841 | NDIFFN = NGREYN - NINT ( ANOW - ZNOW ) | |
842 | NGREYN = NGREYN - NDIFFN | |
843 | EINCN = EINCN - NDIFFN * EKINAV (2) | |
844 | NGREYP = NGREYP + NDIFFN | |
845 | EINCP = EINCP + NDIFFN * EKINAV (1) | |
846 | IF ( NINT (ZNOW) - NGREYP .LT. 0 ) THEN | |
847 | NDIFFP = NGREYP - NINT ( ZNOW ) | |
848 | NGREYP = NGREYP - NDIFFP | |
849 | EINCP = EINCP - NDIFFP * EKINAV (1) | |
850 | END IF | |
851 | END IF | |
852 | NGREYT = NGREYP + NGREYN | |
853 | RETURN | |
854 | END |