5 * Revision 1.1.1.1 1995/10/24 10:21:59 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/04 23/02/95 14.46.01 by S.Giani
12 SUBROUTINE SECLF1(FSE,IFSE,EX,U,E)
13 C THIS ROUTINE SAMPLES AN EXIT ENERGY FROM
14 C A TABULATED DISTRIBUTION
15 #include "geant321/minput.inc"
16 DIMENSION FSE(*),IFSE(*)
23 C FIND THE TWO INCIDENT ENERGY DISTRIBUTIONS THAT BOUND E
24 C INCIDENT ENERGY IS BELOW THE FIRST INCIDENT ENERGY GIVEN
25 C USE THE FIRST DISTRIBUTION
42 C INCIDENT ENERGY IS ABOVE THE LAST INCIDENT ENERGY GIVEN
43 C USE THE LAST DISTRIBUTION
60 C DETERMINE THE INTERPOLATING SCHEME
61 CALL INTSCH(IFSE,IE,IS,NRE)
62 C SELECT THE DISTRIBUTION TO SAMPLE FROM
64 C INTERPOLATION SCHEMES OF 1 (CONSTANT) OR 2 (LINEAR) ALLOWED
69 C SELECT FROM THE SECOND DISTRIBUTION
74 C SELECT FROM THE FIRST DISTRIBUTION
75 C OR FROM THE LAST INCIDENT ENERGY
79 C SELECT THE EXIT ENERGY FROM THE TABULATED DISTRIBUTION
87 CALL INTSCH(IFSE(IPR),NP,IS,IFSE(IPR))
93 PROB=PROB+(FSE(N)+FSE(N-2))*(FSE(N-1)-FSE(N-3))/2.
95 70 PROB=PROB+FSE(N-2)*(FSE(N-1)-FSE(N-3))
96 80 IF(R.LE.PROB)GO TO 100
100 IF(R.LT..998)GO TO 120
101 100 EX=FSE(N-3)+(R-PROB1)*(FSE(N-1)-FSE(N-3))/(PROB-PROB1)
103 110 WRITE(IOUT,10000)IS
104 10000 FORMAT(' MICAP: INTERPOLATION SCHEME=',I3,' IN SECLF1')
106 120 WRITE(IOUT,10100)R,PROB
107 10100 FORMAT(' MICAP: EXIT ENERGY NOT SELECTED IN SECLF1',1P2E13.5)
108 130 WRITE(6,*) ' CALOR: ERROR in SECLF1 =====> STOP '