5 * Revision 1.1.1.1 1995/10/24 10:19:58 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.44 by S.Giani
15 *=== rbkekv ===========================================================*
17 SUBROUTINE RBKEKV ( IT, EXSOP, TO, AMSS, TKIN, TSTRCK,
18 & PSTRCK, ARECL, TKRECL, COD, SID )
20 #include "geant321/dblprc.inc"
21 #include "geant321/dimpar.inc"
22 #include "geant321/iounit.inc"
24 *----------------------------------------------------------------------*
25 * version by Alfredo Ferrari
27 * last change 19 april 93 by Alfredo Ferrari
30 * To be called from the high energy production
32 * this is a subroutine of fluka to sample intranuclear cascade
33 * particles: it is based on the old Rakeka from J. Ranft
36 * it = type of the secondary requested; 1=proton, 2=neutron
37 * bbtar = atomic weight of the medium
40 * tkin = kinetic energy of the secondary in GeV before applying
41 * the nuclear well (and eventually the Coulomb barreer)
42 * tstrck= kinetic energy of the secondary in GeV
43 * pstrck= momentum of the secondary in GeV/c
44 * sid,cod = sine and cosine of the angle between
45 * the directions of the primary
46 * and secondary particles
48 *********************************************************************
50 PARAMETER ( PI = PIPIPI )
51 PARAMETER ( PIO2 = PI / 2.D+00 )
52 #include "geant321/nucdat.inc"
54 DIMENSION EXSOP (2), AMMOLD (2)
55 DIMENSION PFINIT (50,2), TKINIT (50,2), TSINIT (50,2),
56 & TRINIT (50,2), NINI (2)
58 SAVE AMMOLD, PFINIT, TKINIT, TSINIT, TRINIT, NINI
59 DATA AMMOLD / 0.9382796D+00, 0.9395731D+00 /
62 IF ( NINI (IT) .GT. 0 ) THEN
63 PKFRMI = PFINIT (NINI(IT),IT)
64 TKIN = TKINIT (NINI(IT),IT)
65 TSTRCK = TSINIT (NINI(IT),IT)
66 TKRECL = TRINIT (NINI(IT),IT)
67 NINI (IT) = NINI (IT) - 1
73 ENTRY RBKINI ( IT, LZEROI, EXSOP, TKIN, TSTRCK,
74 & PSTRCK, ARECL, TKRECL )
82 * In this version the low energy component has been suppressed, since
83 * they are now produced by the evaporation model, A. Ferrari.
84 * The parameters needed for the sampling have been already set in
87 * Sample the Fermi momentum
95 * +-------------------------------------------------------------------*
98 * | Sample the Fermi momentum
100 PKFRMI = PFRMMX (IT) * MAX ( RNDM (1), RNDM (2),
102 PKFRSQ = PKFRMI * PKFRMI
103 TKIN = - ESLPFF * LOG ( EXDWFF - RNDM (4) * (
104 & EXDWFF - EXUPFF ) )
105 TKRECL = 0.5D+00 * PKFRSQ / ( AMUC12 * ARECL ) * ( 1.D+00 -
106 & 0.25D+00 * PKFRSQ / ( ARECL**2 * AMUCSQ ) )
107 TSTRCK = SQRT ( AMNUSQ (IT) + PKFRSQ ) + TKIN - AMNUCL (IT)
108 & - V0WELL (IT) - TKRECL - EBNDNG (IT)
109 * | +----------------------------------------------------------------*
111 IF ( TSTRCK .LE. VEFFNU (IT) - V0WELL (IT) ) THEN
112 EXSOP (IT) = EXSOP (IT) + TKIN
114 * | | +-------------------------------------------------------------*
116 IF ( IRECNT .GT. 10 ) THEN
117 * | | | +----------------------------------------------------------*
119 IF ( TKRECL - ERCLFF .GT. EKUPFF - EKDWFF .AND.
120 & IRECNT .LT. 20 ) THEN
121 ERCLFF = ERCLFF + TKRECL - ERCLFF
122 EKUPFF = EKUPFF + TKRECL - ERCLFF
123 EKDWFF = EKDWFF + TKRECL - ERCLFF
124 AHELP = EXP ( - ( TKRECL - ERCLFF ) / ESLPFF )
125 EXUPFF = EXUPFF * AHELP
126 EXDWFF = EXDWFF * AHELP
128 * | | | +----------------------------------------------------------*
130 ELSE IF ( IRECNT .GT. 15 ) THEN
131 TKRECL = MAX ( TKRECL, ERCLFF )
132 ERCLFF = ERCLFF + TKRECL
133 EKUPFF = EKUPFF + TKRECL - ERCLFF
134 EKDWFF = EKDWFF + TKRECL - ERCLFF
135 AHELP = EXP ( - TKRECL / ESLPFF )
136 EXUPFF = EXUPFF * AHELP
137 EXDWFF = EXDWFF * AHELP
140 * | | | +----------------------------------------------------------*
143 * | | +-------------------------------------------------------------*
145 * +-<|--<--<--<--<--< go to resampling
148 * | +----------------------------------------------------------------*
149 * +-------------------------------------------------------------------*
152 NINI (IT) = NINI (IT) + 1
153 PFINIT (NINI(IT),IT) = PKFRMI
154 TKINIT (NINI(IT),IT) = TKIN
155 TSINIT (NINI(IT),IT) = TSTRCK
156 TRINIT (NINI(IT),IT) = TKRECL
160 * +-------------------------------------------------------------------*
162 * | Masses have been updated
163 PSTRCK = SQRT ( TSTRCK * ( TSTRCK + 2.D+00 * AMNUCL (IT) ) )
165 ********************* Sample the angle ********************************
166 * Polar angle selection
167 ADE=0.090D0*(1.D0+0.081D0*ATO1O3)/TKIN
168 DEX=EXP(- PIO2 * PIO2 / ADE)
169 AN1=(1.D0-DEX)*ADE/2.D0
174 IF(RNDM(1).GT.AN1) GO TO 3
177 DE=SQRT(-ADE*LOG(1.D0-RNDM(1)*(1.D0-DEX)))
178 IF(DE.GT.PIO2) GO TO 2
179 C WRITE(LUNOUT,*)IT,TO,AMSS,SQAMSS,T,P,DE
186 SID = SQRT ( (1.D0 + COD ) * ( 1.D0 - COD ) )
187 C WRITE(LUNOUT,*)IT,TO,AMSS,SQAMSS,T,P,DE
190 NINI(IT) = NINI(IT)-1