]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/neutron/seclf5.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / neutron / seclf5.F
CommitLineData
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 SECLF5(FSE,IFSE,EX,U,E)
13C THIS ROUTINE SAMPLES AN EXIT ENERGY FROM
14C A GENERAL EVAPORATION SPECTRUM
15#include "geant321/minput.inc"
16 DIMENSION FSE(*),IFSE(*)
17 SAVE
18C DETERMINE THETA
19 IP=1
20 NR=IFSE(IP)
21 NE=IFSE(IP+1)
22 IP=2*NR+IP
23 EMAX=E-U
24 R=FLTRNF(0)
25 DO 10 I=1,NE
26 IP=IP+2
27 IF(E.LE.FSE(IP))GO TO 20
28 10 CONTINUE
29 GO TO 80
30 20 IF(I.EQ.1)GO TO 90
31C DETERMINE THE INTERPOLATING SCHEME
32 CALL INTSCH(IFSE,I,IS,NR)
33 E2=FSE(IP)
34 E1=FSE(IP-2)
35 CALL INTERP(E,THETA,E1,FSE(IP-1),E2,FSE(IP+1),IS)
36 IP=IP+2+(NE-I)*2
37C DETERMINE X
38 30 NF=IFSE(IP+1)
39 NR=IFSE(IP)
40 IPR=IP
41 IP=IP+1+2*NR
42 PROB=0.
43 DO 60 I=1,NF
44 N=IP+2*I
45 PROB1=PROB
46 CALL INTSCH(IFSE(IPR),I,IS,NR)
47 IF(I.EQ.1)GO TO 60
48 IF(IS.EQ.1)GO TO 40
49 IF(IS.GT.2)GO TO 100
50 PROB=PROB+(FSE(N)+FSE(N-2))*(FSE(N-1)-FSE(N-3))/2.
51 GO TO 50
52 40 PROB=PROB+FSE(N-2)*(FSE(N-1)-FSE(N-3))
53 50 CONTINUE
54 IF(R.LE.PROB)GO TO 70
55 60 CONTINUE
56 70 X=FSE(N-3)+(R-PROB1)*(FSE(N-1)-FSE(N-3))/(PROB-PROB1)
57C SELECT THE EXIT ENERGY FROM THE GENERAL EVAPORATION SPECTRUM
58 EX=THETA*X
59 IF(EX.LE.EMAX)RETURN
60#if defined(CERNLIB_MDEBUG)
61 WRITE(IOUT,10000)EX,EMAX
6210000 FORMAT(' MICAP: WARNING-EX,EMAX=',1P2E13.5,' IN SECLF5')
63#endif
64 EX=EMAX
65 RETURN
66C INCIDENT ENERGY IS ABOVE THE LAST INCIDENT ENERGY GIVEN
67C USE THE LAST DISTRIBUTION
68 80 THETA=FSE(IP+1)
69 IP=IP+2
70 GO TO 30
71C INCIDENT ENERGY IS BELOW THE FIRST INCIDENT ENERGY GIVEN
72C USE THE FIRST DISTRIBUTION
73 90 THETA=FSE(IP+1)
74 IP=IP+2*(NE-I)+2
75 GO TO 30
76 100 WRITE(IOUT,10100)IS
7710100 FORMAT(' MICAP: INTERPOLATION SCHEME=',I3,' IN SECLF5')
78 WRITE(6,*) ' CALOR: ERROR in SECLF5 =====> STOP '
79 STOP
80 END