5 * Revision 1.1.1.1 1995/10/24 10:21:58 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.48 by S.Giani
12 SUBROUTINE PARTXS(D,LD,E,SIGTOT,EP)
13 C THIS ROUTINE SAMPLES FROM THE FILE 12 OR 13 PHOTON
14 C PRODUCTION PARTIAL DISTRIBUTIONS TO OBTAIN THE EXIT
15 C PHOTON ENERGY FROM A NEUTRON REACTION
16 #include "geant321/minput.inc"
19 C INITIALIZE THE VALUES USED IN THE SELECTION PROCESS
20 C THE VALUE (II) IS A POINTER
27 C SET THE NUMBER OF PARTIAL DISTRIBUTIONS (NK) AND THE NUMBER
28 C OF POINTS PER PARTIAL DISTRIBUTION (NP)
32 C DETERMINE WHICH POINTS (NL) AND (NH) BOUND THE INCIDENT
35 IF(E.LE.D(II+N))GO TO 40
37 C THE INCIDENT NEUTRON ENERGY IS GREATER THAN THE LAST ENERGY
38 C POINT OF THE PARTIAL DISTRIBUTIONS, THEREFORE USE THE LAST
39 C ENERGY POINT OF THE PARTIAL DISTRIBUTION TO SAMPLE FROM
47 IF(LP.EQ.2)EP=EP+(A/(A+1))*E
51 IF(EP.EQ.0.0)GO TO 100
57 C THE INCIDENT NEUTRON ENERGY IS BOUNDED BY THE ENEGY POINTS
58 C (NL) AND (NH) OF THE PARTIAL DISTRIBUTIONS, THEREFORE USE
59 C LINEAR INTERPOLATION
70 IF(LP.EQ.2)EP=EP+(A/(A+1))*E
72 SIG=D(II+NL)+(E-EL)*(D(II+NH)-D(II+NL))/(EH-EL)
74 IF(EP.EQ.0.0)GO TO 100
79 C THE INCIDENT NEUTRON ENERGY IS LESS THAN THE FIRST ENERGY
80 C POINT OF THE PARTIAL DISTRIBUTIONS, THEREFORE USE THE FIRST
81 C ENERGY POINT OF THE PARTIAL DISTRIBUTION TO SAMPLE FROM
89 IF(LP.EQ.2)EP=EP+(A/(A+1))*E
93 IF(EP.EQ.0.0)GO TO 100
97 C retry with new R if SUM != 0
98 80 IF(SUM.EQ.0.0) GOTO 90
100 IF(ITRY1.LE.2) GOTO 10
101 C no success set EP = 0