]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/neutron/secl11.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / neutron / secl11.F
CommitLineData
fe4da5cc 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)
13C THIS ROUTINE SAMPLES AN EXIT ENERGY FROM
14C 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
23C 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
30C 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
38C INCIDENT ENERGY IS ABOVE THE LAST INCIDENT ENERGY GIVEN
39C USE THE LAST DISTRIBUTION
40 30 IP=2+2*NR+2*NE
41 A=FSE(IP)
42 GO TO 50
43C INCIDENT ENERGY IS BELOW THE FIRST INCIDENT ENERGY GIVEN
44C USE THE FIRST DISTRIBUTION
45 40 A=FSE(4+2*NR)
46C 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)
68C 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
7310000 FORMAT(' MICAP: WARNING-EX,EMAX=',1P2E13.5,' IN SECL11')
74#endif
75 EX=EMAX
76 RETURN
77 END