]> git.uio.no Git - u/mrichter/AliRoot.git/blob - GEANT321/neutron/secl11.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / neutron / secl11.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1995/10/24 10:21:58  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 SECL11(FSE,IFSE,EX,U,E)
13 C       THIS ROUTINE SAMPLES AN EXIT ENERGY FROM
14 C       AN ENERGY DEPENDENT WATT SPECTRUM
15 #include "geant321/minput.inc"
16       DIMENSION FSE(*),IFSE(*)
17       SAVE
18       IP=1
19       NR=IFSE(IP)
20       NE=IFSE(IP+1)
21       IP=2*NR+1
22       EMAX=E-U
23 C       DETERMINE A
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       T1=FSE(IP-1)
35       T2=FSE(IP+1)
36       CALL INTERP(E,A,E1,T1,E2,T2,IS)
37       GO TO 50
38 C       INCIDENT ENERGY IS ABOVE THE LAST INCIDENT ENERGY GIVEN
39 C       USE THE LAST DISTRIBUTION
40    30 IP=2+2*NR+2*NE
41       A=FSE(IP)
42       GO TO 50
43 C       INCIDENT ENERGY IS BELOW THE FIRST INCIDENT ENERGY GIVEN
44 C       USE THE FIRST DISTRIBUTION
45    40 A=FSE(4+2*NR)
46 C       DETERMINE B
47    50 IP=3+2*NR+2*NE
48       NR1=IFSE(IP)
49       NF=IFSE(IP+1)
50       IP=2*NR+2*NE+2*NR1+3
51       DO 60  I=1,NF
52          IP=IP+2
53          IF(E.LE.FSE(IP))GO TO 70
54    60 CONTINUE
55       GO TO 80
56    70 IF(I.EQ.1)GO TO 90
57       CALL INTSCH(IFSE(2*NR+2*NE+3),I,IS,NR1)
58       E1=FSE(IP-2)
59       E2=FSE(IP)
60       T1=FSE(IP-1)
61       T2=FSE(IP+1)
62       CALL INTERP(E,B,E1,T1,E2,T2,IS)
63       GO TO 100
64    80 IP=2*NR+2*NF+2*NE+2*NR1+4
65       B=FSE(IP)
66       GO TO 100
67    90 B=FSE(IP+1)
68 C       SELECT THE EXIT ENERGY FROM THE WATT SPECTRUM
69   100 EX=FISRNF(A,B)
70       IF(EX.LE.EMAX)RETURN
71 #if defined(CERNLIB_MDEBUG)
72       WRITE(IOUT,10000)EX,EMAX
73 10000 FORMAT(' MICAP: WARNING-EX,EMAX=',1P2E13.5,' IN SECL11')
74 #endif
75       EX=EMAX
76       RETURN
77       END