5 * Revision 1.1.1.1 1995/10/24 10:19:55 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.42 by S.Giani
15 *=== evdeex ===========================================================*
17 SUBROUTINE EVDEEX ( WEE )
19 #include "geant321/dblprc.inc"
20 #include "geant321/dimpar.inc"
21 #include "geant321/iounit.inc"
23 *----------------------------------------------------------------------*
25 * Evdeex : created on 5-10-1990 by A. Ferrari & P. Sala, INFN Milan *
27 * Last change on 28-jan-93 by Alfredo Ferrari, INFN-Milan *
29 * This routine provides a simple model for sampling nuclear deexci- *
30 * tation gammas following the evaporation step *
32 *----------------------------------------------------------------------*
34 #include "geant321/balanc.inc"
35 #include "geant321/eva0.inc"
36 #include "geant321/finuc.inc"
37 #include "geant321/nucdat.inc"
38 #include "geant321/parevt.inc"
39 #include "geant321/resnuc.inc"
41 *----------------------------------------------------------------------*
42 * Entering the routine we have: *
43 * Ammres is the atomic mass of the residual nucleus *
44 * Ibres (Anow) its mass number *
45 * Icres (Znow) its atomic number *
46 * Eres its total energy *
47 * Ptres its momentum *
48 * Pxres x-component of the momentum *
49 * Pyres y-component of the momentum *
50 * Pzres z-component of the momentum *
51 * Tvrecl kinetic energy *
52 * Tvcms excitation energy *
53 *----------------------------------------------------------------------*
55 PARAMETER ( C0M1E1 = 0.306 D+00 )
56 PARAMETER ( C0E2E1 = 7.1 D-01 )
57 PARAMETER ( HNDFE1 = 5.0 D-03 )
58 PARAMETER ( HNDFM1 = 5.0 D-02 )
59 PARAMETER ( HNDFE2 = 1.0 D+01 )
65 IF ( IBRES .LE. 0 .OR. TVCMS .LE. GAMMIN ) THEN
72 IF ( IBHELP * 2 .LT. IBRES ) THEN
73 CALL EEXLVL ( IBRES, ICRES, DELTA, EEX2ND, EEXDUM )
79 IF ( ICHELP * 2 .LT. ICRES ) THEN
80 CALL EEXLVL ( IBRES, ICRES, DELTA, EEX1ST, EEXDUM )
83 CALL EEXLVL ( IBRES, ICRES, EEX1ST, DELTA, EEXDUM )
87 DELPAI = MIN ( EEXDUM, DELTA )
88 RNUCL = R0NUCL * RMASS (IBRES)
89 AINERM = 0.24D+00 * AMMRES * RNUCL * RNUCL
90 ROTEN0 = 0.5D+00 * PLABRC * PLABRC / AINERM
91 ENMIN = MAX ( DELTA, TWOTWO * ROTEN0 )
92 RNMASS = AMMRES + TVCMS
98 IF ( TVCMS .LE. ENMIN .OR. IBRES .LE. 4 ) GO TO 3000
99 AHELP = HNDFE1 * RMASS (IBRES) * RMASS (IBRES)
100 CFM1E1 = C0M1E1 * HNDFM1 / AHELP
101 CFE2E1 = C0E2E1 * HNDFE2 / AHELP
103 UMEV = 1.D+03 * TVCMS
104 ASMALL = GETA ( UMEV , ICRES , IBRES-ICRES, ILVMOD, ISDUM,
106 TEMPSQ = 1.D-03 * ( TVCMS - DELPAI ) / ASMALL
107 TEMPER = SQRT ( TEMPSQ )
113 AHELP = EXP ( - HHH )
115 BRE1M1 = 6.D+00 - AHELP * ( HHHSQ * HHH + 3.D+00 * HHHSQ
117 BRE2 = 20.D+00 * BRE1M1 - AHELP * ( HHHSQ * HHHSQ * HHH
118 & + 5.D+00 * HHHSQ * HHHSQ )
119 BRE1M1 = BRE1M1 * ( 1.D+00 + CFM1E1 )
120 BRE2 = BRE2 * TEMPSQ * CFE2E1
122 IF ( RNDM (1) .LT. BRE1M1 / ( BRE1M1 + BRE2 ) ) THEN
127 LEXPN = 2 * LMULT + 1
129 XDISMX = MIN ( DDLEXP, HHH )
130 IF(XDISMX.GT.88) THEN
133 DISMX = XDISMX ** LEXPN * EXP ( - XDISMX )
137 XTENT = RNDM (1) * HHH
141 FREJE = XTENT ** LEXPN * EXP ( - XTENT ) / DISMX
143 IF ( RNDM (2) .GE. FREJE ) GO TO 2000
144 ENERG0 = XTENT * TEMPER
145 TVCMS = TVCMS - ENERG0
146 RNMASS = AMMRES + TVCMS
147 CALL RACO ( COSGAM (1), COSGAM (2), COSGAM (3) )
148 ERNCM = 0.5D+00 * ( UMO * UMO + RNMASS * RNMASS ) / UMO
151 PCMSX = PCMS * COSGAM (1)
152 PCMSY = PCMS * COSGAM (2)
153 PCMSZ = PCMS * COSGAM (3)
154 ETAPCM = PCMSX * ETAX + PCMSY * ETAY + PCMSZ * ETAZ
155 ENERG = GAMCM * EEGCM + ETAPCM
156 PHELP = ETAPCM / ( GAMCM + 1.D+00 ) + EEGCM
157 PLBGX = PCMSX + ETAX * PHELP
158 PLBGY = PCMSY + ETAY * PHELP
159 PLBGZ = PCMSZ + ETAZ * PHELP
160 ERES = GAMCM * ERNCM - ETAPCM
161 EKRES = ERES - RNMASS
162 PHELP = - ETAPCM / ( GAMCM + 1.D+00 ) + ERNCM
163 PXRES = - PCMSX + ETAX * PHELP
164 PYRES = - PCMSY + ETAY * PHELP
165 PZRES = - PCMSZ + ETAZ * PHELP
166 ECHCK = ECHCK - ENERG
173 CXR (NP) = PLBGX / ENERG
174 CYR (NP) = PLBGY / ENERG
175 CZR (NP) = PLBGZ / ENERG
176 GAMCM = ERES / RNMASS
177 ETAX = PXRES / RNMASS
178 ETAY = PYRES / RNMASS
179 ETAZ = PZRES / RNMASS
181 IF ( TVCMS .GT. ENMIN ) GO TO 1000
182 IF ( NP .GE. MXP ) THEN
183 WRITE ( LUNOUT, * )' **** Finuc overflow in Evdeex,',
184 & ' program stopped ****'
185 WRITE ( LUNERR, * )' **** Finuc overflow in Evdeex,',
186 & ' program stopped ****'
190 IF ( TVCMS .LE. ( 6 + 2 * JPAR ) * ROTEN0 ) THEN
193 CALL RACO ( COSGAM (1), COSGAM (2), COSGAM (3) )
194 ERNCM = 0.5D+00 * ( UMO * UMO + AMMRES * AMMRES ) / UMO
197 PCMSX = PCMS * COSGAM (1)
198 PCMSY = PCMS * COSGAM (2)
199 PCMSZ = PCMS * COSGAM (3)
200 ETAPCM = PCMSX * ETAX + PCMSY * ETAY + PCMSZ * ETAZ
201 ENERG = GAMCM * EEGCM + ETAPCM
202 PHELP = ETAPCM / ( GAMCM + 1.D+00 ) + EEGCM
203 PLBGX = PCMSX + ETAX * PHELP
204 PLBGY = PCMSY + ETAY * PHELP
205 PLBGZ = PCMSZ + ETAZ * PHELP
206 ERES = GAMCM * ERNCM - ETAPCM
207 EKRES = ERES - AMMRES
208 PHELP = - ETAPCM / ( GAMCM + 1.D+00 ) + ERNCM
209 PXRES = - PCMSX + ETAX * PHELP
210 PYRES = - PCMSY + ETAY * PHELP
211 PZRES = - PCMSZ + ETAZ * PHELP
212 ECHCK = ECHCK - ENERG
219 CXR (NP) = PLBGX / ENERG
220 CYR (NP) = PLBGY / ENERG
221 CZR (NP) = PLBGZ / ENERG
223 AIAMOM = SQRT ( 0.25D+00 + TVCMS / ROTEN0
224 & + 0.75D+00 * JPAR ) - 0.25D+00
225 IF ( IPAR .EQ. 1 ) THEN
226 IF ( JPAR .EQ. 1 ) THEN
227 JAMIN = 2 * INT ( AIAMOM ) + 1
229 IF ( MOD ( IAMIN, 2 ) .GT. 0 ) THEN
230 EGROUN = 3.75D+00 * ROTEN0
232 EGROUN = 0.75D+00 * ROTEN0
235 IAMIN = INT ( AIAMOM )
237 IF ( MOD ( IAMIN, 2 ) .GT. 0 ) THEN
238 EGROUN = 2.D+00 * ROTEN0
244 IAMIN = INT ( AIAMOM ) / IPAR
249 DELTAE = TVCMS + EGROUN - 0.25D+00 * ROTEN0 * JAMIN *
251 DO 4000 JAMOM = JAMIN, 4, -4
252 ENERG0 = ROTEN0 * ( 2 * JAMOM - 2 )
255 TVCMS = TVCMS - ENERG0
256 RNMASS = AMMRES + TVCMS
257 CALL RACO ( COSGAM (1), COSGAM (2), COSGAM (3) )
258 ERNCM = 0.5D+00 * ( UMO * UMO + RNMASS * RNMASS ) / UMO
261 PCMSX = PCMS * COSGAM (1)
262 PCMSY = PCMS * COSGAM (2)
263 PCMSZ = PCMS * COSGAM (3)
264 ETAPCM = PCMSX * ETAX + PCMSY * ETAY + PCMSZ * ETAZ
265 ENERG = GAMCM * EEGCM + ETAPCM
266 PHELP = ETAPCM / ( GAMCM + 1.D+00 ) + EEGCM
267 PLBGX = PCMSX + ETAX * PHELP
268 PLBGY = PCMSY + ETAY * PHELP
269 PLBGZ = PCMSZ + ETAZ * PHELP
270 ERES = GAMCM * ERNCM - ETAPCM
271 EKRES = ERES - RNMASS
272 PHELP = - ETAPCM / ( GAMCM + 1.D+00 ) + ERNCM
273 PXRES = - PCMSX + ETAX * PHELP
274 PYRES = - PCMSY + ETAY * PHELP
275 PZRES = - PCMSZ + ETAZ * PHELP
276 ECHCK = ECHCK - ENERG
283 CXR (NP) = PLBGX / ENERG
284 CYR (NP) = PLBGY / ENERG
285 CZR (NP) = PLBGZ / ENERG
286 GAMCM = ERES / RNMASS
287 ETAX = PXRES / RNMASS
288 ETAY = PYRES / RNMASS
289 ETAZ = PZRES / RNMASS
293 ECHCK = ECHCK - EKRES
294 IF ( ABS ( ECHCK ) .GT. 1.D-7 * ECHCK0 ) THEN
295 WRITE ( LUNERR, * )' **** No energy conservation in Evdeex',
296 & ' ****', ECHCK, IDEEXG
299 IF ( NP .GT. MXP ) THEN
300 WRITE ( LUNOUT, * )' **** Finuc overflow in Evdeex,',
301 & ' program stopped ****'
302 WRITE ( LUNERR, * )' **** Finuc overflow in Evdeex,',
303 & ' program stopped ****'
307 P2RES = PXRES * PXRES + PYRES * PYRES + PZRES * PZRES
309 *=== End of subroutine Evdeex =========================================*