* * $Id$ * * $Log$ * Revision 1.1.1.1 1995/10/24 10:21:58 cernlib * Geant * * #include "geant321/pilot.h" *CMZ : 3.21/04 23/02/95 14.46.01 by S.Giani *-- Author : SUBROUTINE SECL11(FSE,IFSE,EX,U,E) C THIS ROUTINE SAMPLES AN EXIT ENERGY FROM C AN ENERGY DEPENDENT WATT SPECTRUM #include "geant321/minput.inc" DIMENSION FSE(*),IFSE(*) SAVE IP=1 NR=IFSE(IP) NE=IFSE(IP+1) IP=2*NR+1 EMAX=E-U C DETERMINE A DO 10 I=1,NE IP=IP+2 IF(E.LE.FSE(IP))GO TO 20 10 CONTINUE GO TO 30 20 IF(I.EQ.1)GO TO 40 C DETERMINE THE INTERPOLATING SCHEME CALL INTSCH(IFSE,I,IS,NR) E1=FSE(IP-2) E2=FSE(IP) T1=FSE(IP-1) T2=FSE(IP+1) CALL INTERP(E,A,E1,T1,E2,T2,IS) GO TO 50 C INCIDENT ENERGY IS ABOVE THE LAST INCIDENT ENERGY GIVEN C USE THE LAST DISTRIBUTION 30 IP=2+2*NR+2*NE A=FSE(IP) GO TO 50 C INCIDENT ENERGY IS BELOW THE FIRST INCIDENT ENERGY GIVEN C USE THE FIRST DISTRIBUTION 40 A=FSE(4+2*NR) C DETERMINE B 50 IP=3+2*NR+2*NE NR1=IFSE(IP) NF=IFSE(IP+1) IP=2*NR+2*NE+2*NR1+3 DO 60 I=1,NF IP=IP+2 IF(E.LE.FSE(IP))GO TO 70 60 CONTINUE GO TO 80 70 IF(I.EQ.1)GO TO 90 CALL INTSCH(IFSE(2*NR+2*NE+3),I,IS,NR1) E1=FSE(IP-2) E2=FSE(IP) T1=FSE(IP-1) T2=FSE(IP+1) CALL INTERP(E,B,E1,T1,E2,T2,IS) GO TO 100 80 IP=2*NR+2*NF+2*NE+2*NR1+4 B=FSE(IP) GO TO 100 90 B=FSE(IP+1) C SELECT THE EXIT ENERGY FROM THE WATT SPECTRUM 100 EX=FISRNF(A,B) IF(EX.LE.EMAX)RETURN #if defined(CERNLIB_MDEBUG) WRITE(IOUT,10000)EX,EMAX 10000 FORMAT(' MICAP: WARNING-EX,EMAX=',1P2E13.5,' IN SECL11') #endif EX=EMAX RETURN END