]> git.uio.no Git - u/mrichter/AliRoot.git/blob - GEANT321/neutron/thrmsc.F
Fix problems in interpretation of GROUPPATH
[u/mrichter/AliRoot.git] / GEANT321 / neutron / thrmsc.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1995/10/24 10:21:59  cernlib
6 * Geant
7 *
8 *
9 #include "geant321/pilot.h"
10 *CMZ :  3.21/04 28/02/95  17.12.29  by  S.Giani
11 *-- Author :
12       SUBROUTINE THRMSC(D,LD,ITHRMS,LTHRM,E,U,V,W,TEMP,FM,AWR,IIN,
13      +                  IFLG,IOUT)
14 C      THIS ROUTINE CONTROLS SELECTION OF THE NEUTRON EXIT ENERGY
15 C      IN THE THERMAL DATA RANGE
16 #include "geant321/mupsca.inc"
17       DIMENSION D(*),LD(*),ITHRMS(*),LTHRM(*),AWR(*)
18       REAL HMASSN, SPI
19       DATA HMASSN, SPI/0.5044905, 1.1283792/
20  
21 C       HMASSN EQUALS ONE-HALF THE NEUTRON MASS
22 C       SPI EQUALS TWO DIVIDED BY THE SQUARE ROOT OF PI
23 C       CONVERT TEMPERATURE FROM DEGREES KELVIN TO EV
24       DATA BK/8.6167E-5/
25       SAVE
26 C
27       TDK=BK*TEMP
28       AAWR=AWR(IIN)
29       IFLG=0
30       NE=ITHRMS(IIN)
31       IF(NE.LE.0)GO TO 10
32       EO=E
33       NP7=ITHRMS(IIN+1)
34       NB7=ITHRMS(IIN+2)
35       CT=ITHRMS(IIN+3)
36       LENMD=ITHRMS(IIN+4)
37       N=NB7*NE
38       CALL THRSEL(NE,NP7,NB7,E,EOUT,FM,CT,ITHRMS(IIN+5),
39      + ITHRMS(IIN+5+NE),ITHRMS(IIN+5+NE+NP7),
40      + ITHRMS(IIN+5+NE+NP7+NB7),
41      + ITHRMS(IIN+5+2*NE+NP7+NB7),ITHRMS(IIN+5+2*NE+NP7+NB7+N),
42      + ITHRMS(IIN+5+2*NE+NP7+NB7+N+LENMD),AWR,IIN,
43      + ITHRMS(IIN+5+2*NE+NP7+NB7+N+LENMD+NP7*NB7),
44      + ITHRMS(IIN+5+2*NE+NP7+NB7+N),IOUT)
45       E=EOUT
46 C       IFLG EQUAL TO ONE IMPLIES (FM) IN LABORATORY SYSTEM
47       IFLG=1
48       RETURN
49 C       FREE GAS MODEL
50    10 CONTINUE
51 C       SPD IS THE SPEED OF THE INCIDENT NEUTRON
52       SPD=SQRT(E/HMASSN)
53       TAUN=SPI*SQRT(2.0*TDK/AAWR)
54       PTEST=SPD/(SPD+TAUN)
55 C       UO, VO, AND WO ARE THE VELOCITY COMPONENTS OF THE INCIDENT
56 C       NEUTRON IN TERMS OF THE NEUTRON SPEED
57       UO=SPD*U
58       VO=SPD*V
59       WO=SPD*W
60    20 CONTINUE
61       IF(PTEST.GT.FLTRNF(0))GO TO 30
62       ETA=-ALOG(FLTRNF(0)*FLTRNF(0))*TDK
63       GO TO 40
64    30 CONTINUE
65       ETA=RNMAXF(TDK)
66    40 CONTINUE
67 C       ERFGM IS THE INITIAL ENERGY OF THE TARGET NUCLEUS
68       ERFGM=ETA
69 C       ETA IS THE SPEED OF THE TARGET NUCLEUS
70       ETA=SQRT(2.0*ETA/AAWR)
71 C       UN, VN, AND WN ARE THE VELOCITY COMPONENTS OF THE TARGET
72 C       NUCLEUS IN TERMS OF THE TARGET NUCLEUS SPEED
73       CALL GTISO(UN,VN,WN)
74       UN=UN*ETA
75       VN=VN*ETA
76       WN=WN*ETA
77       VRELSQ=(UO-UN)**2+(VO-VN)**2+(WO-WN)**2
78       F2=FLTRNF(0)**2
79       V2=VRELSQ/(SPD+ETA)**2
80       IF(F2.GT.V2)GO TO 20
81       VREL=SQRT(VRELSQ)
82       ALPHA=1.0/(AAWR+1.0)
83       BETA=1.0-ALPHA
84       CALL GTISO(UA,VA,WA)
85       UO=UO*ALPHA+BETA*(UN+VREL*UA)
86       VO=VO*ALPHA+BETA*(VN+VREL*VA)
87       WO=WO*ALPHA+BETA*(WN+VREL*WA)
88       SPDSQ=UO*UO+VO*VO+WO*WO
89 C       E IS THE EXIT ENERGY OF THE NEUTRON
90       E=HMASSN*SPDSQ
91       SPD=1.0/SQRT(SPDSQ)
92       FM=(U*UO+V*VO+W*WO)*SPD
93 C       U, V, AND W ARE THE EXIT NEUTRON DIRECTION COSINES
94       U=UO*SPD
95       V=VO*SPD
96       W=WO*SPD
97 C       IFLG EQUAL TO TWO IMPLIES (U,V,W) IN LABORATORY SYSTEM
98       IFLG=2
99       RETURN
100       END