5 * Revision 1.1.1.1 1995/10/24 10:21:58 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/04 23/02/95 14.46.01 by S.Giani
12 SUBROUTINE SECEGY(EX,FSE,E,IFSE)
13 C THIS ROUTINE SELECTS A PARTIAL ENERGY DISTRIBUTION
14 C TO SAMPLE THE EXIT ENERGY FROM
15 #include "geant321/minput.inc"
16 DIMENSION FSE(*),IFSE(*)
30 IF(LF.EQ.11)U=FLOAT(IFSE(IP))
40 C IF E IS LESS THAN THE LOWEST ENERGY OF THE MESH, THEN THE
41 C PROBABILITY WILL EQUAL ZERO FOR SELECTING THAT DISTRIBUTION
42 IF(E.LT.FSE(IP-1))GO TO 50
44 C TRY THE NEXT PARTIAL DISTRIBUTION
49 IF((LF.EQ.7).OR.(LF.EQ.9))GO TO 130
52 IF(E+CADIG(E).LT.FSE(IP-1))GO TO 60
59 C DETERMINE THE INTERPOLATING SCHEME
63 IF(I.LE.IFSE(J1))GO TO 90
66 CALL INTERP(E,P,FSE(IP-3),FSE(IP-2),FSE(IP-1),FSE(IP),IS)
68 IF(R.LE.PROB)GO TO 150
71 C SKIP THE DATA FOR LF EQUAL ONE
84 C SKIP THE DATA FOR LF EQUAL FIVE
95 C SKIP THE DATA FOR LF EQUAL SEVEN, AND LF EQUAL NINE
102 C SKIP THE DATA FOR LF EQUAL ELEVEN
114 C NOW SELECT THE SECONDARY ENERGY FROM THE CHOSEN DISTRIBUTION
117 IF(LF.EQ.1)CALL SECLF1(FSE(IP+1),IFSE(IP+1),EX,U,E)
118 IF(LF.EQ.5)CALL SECLF5(FSE(IP+1),IFSE(IP+1),EX,U,E)
119 IF(LF.EQ.7)CALL SECLF7(FSE(IP+1),IFSE(IP+1),EX,U,E)
120 IF(LF.EQ.9)CALL SECLF9(FSE(IP+1),IFSE(IP+1),EX,U,E)
121 IF(LF.EQ.11)CALL SECL11(FSE(IP+1),IFSE(IP+1),EX,U,E)
124 #if defined(CERNLIB_MDEBUG)
125 WRITE(IOUT,10000)R,PROB,E
126 10000 FORMAT(' MICAP: WARNING-SECONDARY ENERGY DISTRIBUTION NOT ',
127 + 'CHOSEN IN SECEGY',1P3E11.4)
132 IF(LF.EQ.11)U=FLOAT(IFSE(IPP+2))