]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 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 |