5 * Revision 1.1.1.1 1995/10/24 10:21:15 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.38 by S.Giani
12 SUBROUTINE GNSLWD(NUCFLG,INT,NFL,TEKLOW)
14 C *** NEUTRON TRACKING ROUTINE FOR ENERGIES BELOW THE CUT-OFF. ***
15 C *** TAKE ONLY ELASTIC SCATTERING, NEUTRON CAPTURE ***
16 C *** AND NUCLEAR FISSION. ***
17 C *** NVE 11-MAY-1988 CERN GENEVA ***
20 C ORIGIN : H.FESEFELDT (ROUTINE NSLDOW 20-OCT-1987)
22 #include "geant321/gctrak.inc"
23 C --- GHEISHA COMMONS ---
24 #include "geant321/mxgkgh.inc"
25 #include "geant321/s_consts.inc"
26 #include "geant321/s_curpar.inc"
27 #include "geant321/s_result.inc"
28 #include "geant321/s_blankp.inc"
29 #include "geant321/s_prntfl.inc"
32 C --- FLAGS TO INDICATE THE NUCREC ACTION ---
33 C NUCFLG = 0 ==> NO ACTION BY NUCREC
34 C 1 ==> ACTION BY NUCREC ==> SPECIAL TREATMENT IN GHEISH
38 C --- IN ORDER TO AVOID TROUBLES CAUSED BY ARITHMETIC INCERTAINTIES, ---
39 C --- RECALCULATE SOME QUANTITIES. TAKE KINETIC ENERGY EK AS MOST ---
40 C --- RELEVANT QUANTITY. ---
42 C --- VERY LOW KINETIC ENERGY ==> NEUTRON CAPTURE ---
43 IF (EK .LT. 1.E-9) GO TO 22
46 P=SQRT(ABS(EN*EN-AMAS*AMAS))
47 PU=SQRT(PX**2+PY**2+PZ**2)
48 IF (PU .GE. 1.E-9) GO TO 7
60 C --- SELECT PROCESS ACCORDING TO "INT" ---
61 GO TO (23,23,21,22), INT
63 C *** NUCLEAR FISSION ***
69 C *** NEUTRON CAPTURE ***
75 C *** ELASTIC AND INELASTIC SCATTERING ***
88 C --- SPECIAL TREATMENT FOR INELASTIC SCATTERING IN HEAVY MEDIA ---
89 IF ((INT .EQ. 2) .AND. (ATNO2 .GE. 1.5)) GO TO 29
91 C *** ELASTIC SCATTERING ***
94 IF (NPRT(9)) PRINT 1000
95 1000 FORMAT(' *GNSLWD* ELASTIC SCATTERING')
102 C --- VERY SIMPLE SIMULATION OF SCATTERING ANGLE AND ENERGY ---
103 C --- NONRELATIVISTIC APPROXIMATION WITH ISOTROPIC ANGULAR ---
104 C --- DISTRIBUTION IN THE CMS SYSTEM ---
105 25 CALL GRNDM(RNDM,2)
108 EKA=1.0+2.0*COST1*ATNO2+ATNO2**2
109 IF(EKA.LE.0.) GOTO 25
110 COST=(ATNO2*COST1+1.0)/SQRT(EKA)
111 IF (COST .LT. -1.0) COST=-1.0
112 IF (COST .GT. 1.0) COST=1.0
113 EKA=EKA/(1.0+ATNO2)**2
116 P=SQRT(ABS(EN*EN-AMAS*AMAS))
117 SINT=SQRT(ABS(1.0-COST*COST))
119 PV(1,2)=SINT*SIN(PHI)
120 PV(2,2)=SINT*COS(PHI)
122 CALL DEFS1(2,MXGKPV,2)
123 PU=SQRT(PV(1,2)**2+PV(2,2)**2+PV(3,2)**2)
132 C --- STORE BACKSCATTERED PARTICLE FOR ATNO < 4.5 ---
133 IF (ATNO2 .GT. 4.5) GO TO 27
135 IF (NPRT(9)) PRINT 1001,ATNO2
136 1001 FORMAT(' *GNSLWD* BACKSCATTERED PARTICLE STORED FOR ATNO ',G12.5)
138 PV(1,2)=PV(1,MXGKPV)-PV(1,1)
139 PV(2,2)=PV(2,MXGKPV)-PV(2,1)
140 PV(3,2)=PV(3,MXGKPV)-PV(3,1)
146 IF (ATNO2 .GT. 3.5) GO TO 274
147 IF (ATNO2 .GT. 2.5) GO TO 273
148 IF (ATNO2 .GT. 1.5) GO TO 272
152 PV(4,2)=SQRT(PP*PP+PV(5,2)*PV(5,2))
159 PV(4,2)=SQRT(PP*PP+PV(5,2)*PV(5,2))
166 PV(4,2)=SQRT(PP*PP+PV(5,2)*PV(5,2))
173 PV(4,2)=SQRT(PP*PP+PV(5,2)*PV(5,2))
184 C --- PUT QUANTITIES IN COMMON /RESULT/ ---
186 IF (PV(10,1) .NE. 0.0) USERW=PV(10,1)
188 COSL=SQRT(ABS(1.0-SINL*SINL))
189 IF (ABS(COSL) .LT. 1.E-10) GO TO 28
202 C *** INELASTIC SCATTERING ON HEAVY NUCLEI ***
205 IF (NPRT(9)) PRINT 1002
206 1002 FORMAT(' *GNSLWD* INELASTIC SCATTERING ON HEAVY NUCLEUS')
208 C --- DECIDE BETWEEN SPALLATION OR SIMPLE NUCLEAR REACTION ---
212 IF (TEST1 .GT. TEST2) GO TO 40
216 IF (NPRT(9)) PRINT 1003
217 1003 FORMAT(' *GNSLWD* SPALLATION')
230 C --- FERMI-MOTION AND EVAPORATION ---
233 C --- CHECK FOR LOWERBOUND OF EKIN IN CROSS-SECTION TABLES ---
234 IF (ENP(5) .LE. TEKLOW) ENP(5)=TEKLOW
235 ENP(6)=ENP(5)+ABS(AMAS)
236 ENP(7)=ENP(6)*ENP(6)-AMASQ
240 C --- CHECK FOR LOWERBOUND OF EKIN IN CROSS-SECTION TABLES ---
241 IF (ENP(5) .LE. TEKLOW) ENP(5)=TEKLOW
242 ENP(6)=ENP(5)+ABS(AMAS)
243 ENP(7)=ENP(6)*ENP(6)-AMASQ
247 C --- CHECK FOR LOWERBOUND OF EKIN IN CROSS-SECTION TABLES ---
248 IF (ENP(5) .LE. TEKLOW) ENP(5)=TEKLOW
249 ENP(6)=ENP(5)+ABS(AMAS)
250 ENP(7)=ENP(6)*ENP(6)-AMASQ
253 C --- NEUTRON CASCADE ---
255 CALL VZERO(IPA(1),MXGKCU)
260 IF (NPRT(9)) PRINT 1004
261 1004 FORMAT(' *GNSLWD* NUCLEAR REACTION')
263 IF (NOPT .NE. 0) NUCFLG=1
264 IF (NOPT .EQ. 0) GO TO 30