]>
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 23/02/95 14.46.01 by S.Giani | |
11 | *-- Author : | |
12 | SUBROUTINE SECLF7(FSE,IFSE,EX,U,E) | |
13 | C THIS ROUTINE SAMPLES AN EXIT ENERGY FROM | |
14 | C A SIMPLE FISSION SPECTRUM | |
15 | #include "geant321/minput.inc" | |
16 | DIMENSION FSE(*),IFSE(*) | |
17 | SAVE | |
18 | C DETERMINE THETA | |
19 | IP=1 | |
20 | EMAX=E-U | |
21 | NR=IFSE(IP) | |
22 | NE=IFSE(IP+1) | |
23 | IP=2*NR+1 | |
24 | DO 10 I=1,NE | |
25 | IP=IP+2 | |
26 | IF(E.LE.FSE(IP))GO TO 20 | |
27 | 10 CONTINUE | |
28 | GO TO 30 | |
29 | 20 IF(I.EQ.1)GO TO 40 | |
30 | C DETERMINE THE INTERPOLATING SCHEME | |
31 | CALL INTSCH(IFSE,I,IS,NR) | |
32 | E1=FSE(IP-2) | |
33 | E2=FSE(IP) | |
34 | CALL INTERP(E,THETA,E1,FSE(IP-1),E2,FSE(IP+1),IS) | |
35 | GO TO 50 | |
36 | C INCIDENT ENERGY IS ABOVE THE LAST INCIDENT ENERGY GIVEN | |
37 | C USE THE LAST DISTRIBUTION | |
38 | 30 THETA=FSE(IP+1) | |
39 | GO TO 50 | |
40 | C INCIDENT ENERGY IS BELOW THE FIRST INCIDENT ENERGY GIVEN | |
41 | C USE THE FIRST DISTRIBUTION | |
42 | 40 THETA=FSE(IP+1) | |
43 | C SELECT THE EXIT ENERGY FROM THE FISSION SPECTRUM | |
44 | 50 R1=FLTRNF(0) | |
45 | R2=FLTRNF(0) | |
46 | S=R1**2+R2**2 | |
47 | IF(S.GT.1.)GO TO 50 | |
48 | TAU=(-ALOG(S)/S)*(R1**2) | |
49 | R=FLTRNF(0) | |
50 | W=-ALOG(R)+TAU | |
51 | EX=THETA*W | |
52 | IF(EX.LE.EMAX)RETURN | |
53 | #if defined(CERNLIB_MDEBUG) | |
54 | WRITE(IOUT,10000)EX,EMAX | |
55 | 10000 FORMAT(' MICAP: WARNING-EX,EMAX=',1P2E13.5,' IN SECLF7') | |
56 | #endif | |
57 | EX=EMAX | |
58 | RETURN | |
59 | END |