5 * Revision 1.1.1.1 1995/10/24 10:21:06 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.40 by S.Giani
14 C *** DOUBLE PRECISION VERSION OF THE PHASE SPACE ROUTINE "PHASP"
15 C *** THIS ROUTINE MUST BE CALLED BY THE NUCLEAR INTERACTION ROUTINE
16 C *** "NUCREC" (SEE ALSO COMMENTS THEREIN). THE REASON IS SIMPLY THAT
17 C *** ENERGY-MOMENTUM CALCULATIONS ARE NOT POSSIBLE WITHIN ONLY
18 C *** 6 DIGITS OF ACCURACY FOR TOTAL ENERGIES
19 C *** IN THE ORDER OF HUNDREDS OF GEV (URANIUM NUCLEUS), COMPARED WITH
20 C *** KINETIC ENERGIES IN THE ORDER OF MEV (NEUTRONS, PROTONS AND
21 C *** PHOTONS IN THE REACTIONS A(X,Y(GAMMA,GAMMA))A'). IN THE ORIGINAL
22 C *** GHEISHA8 CODE ALL THESE CALCULATIONS ARE DONE IN DOUBLE PRECISION
23 C *** HMF 29-AUG-1989 RWTH AACHEN
26 C ORIGIN : H.FESEFELDT
28 #if !defined(CERNLIB_SINGLE)
29 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
33 #include "geant321/s_prntfl.inc"
34 #include "geant321/s_nucio.inc"
39 DIMENSION EM(18),PD(18),EMS(18),SM(18),FFQ(18),PCM1(90)
40 EQUIVALENCE (NT,NPG),(AMASS(1),EM(1)),(PCM1(1),PCM(1,1))
41 DATA FFQ/0.,3.141592, 19.73921, 62.01255, 129.8788, 204.0131,
42 2 256.3704, 268.4705, 240.9780, 189.2637,
43 3 132.1308, 83.0202, 47.4210, 24.8295,
44 4 12.0006, 5.3858, 2.2560, 0.8859/
45 DATA KNT , TWOPI / 1 , 6.2831853073 /
47 C --- Initialise local arrays and the result array PCM ---
57 IF (.NOT.NPRT(3).AND..NOT.NPRT(4)) GOTO 100
58 WRITE(NEWBCD,1200) NPG,TECM,(AMASS(JK),JK=1,NPG)
60 150 IF (NT .LT. 2) GO TO 1001
61 IF (NT .GT. 18) GO TO 1002
74 IF (TECMTM .LE. 0.0) GO TO 1000
76 IF (KGENEV.GT.1) GO TO 400
83 350 WTMAX=WTMAX*DPDNUC(EMMAX,EMMIN,EM(I))
86 400 WTMAXQ=TECMTM**NTM2*FFQ(NT) / TECM
90 #if defined(CERNLIB_SINGLE)
93 #if !defined(CERNLIB_SINGLE)
94 457 RNO(I) = DBLE(RNDM(1))
100 508 EMM(J)=RNO(J-1)*(TECMTM)+SM(J)
104 PD(I)=DPDNUC(EMM(I+1),EMM(I),EM(I+1))
120 IF(I.EQ.NT) GO TO 1567
121 ESYS=SQRT(PD(I)**2+EMM(I)**2)
126 AA= PCM1(NDX+1)**2 + PCM1(NDX+2)**2 + PCM1(NDX+3)**2
127 PCM1(NDX+5) = SQRT(AA)
128 PCM1(NDX+4) = SQRT(AA+EMS(J))
129 CALL DOTNUC(C,S,CB,SB,PCM,J)
130 PSAVE = GAMA*(PCM(2,J)+BETA*PCM(4,J))
134 AA=PCM(1,J)**2 + PCM(2,J)**2 + PCM(3,J)**2
136 PCM(4,J)=SQRT(AA+EMS(J))
137 CALL DOTNUC(C,S,CB,SB,PCM,J)
147 212 PCM(5,I)=AMASS(I)
150 1001 IF(NPRT(3).OR.NPRT(4)) WRITE(NEWBCD,1101)
152 1002 WRITE(NEWBCD,1102)
153 1050 WRITE(NEWBCD,1150) KNT
154 WRITE(NEWBCD,1200) NPG,TECM,(AMASS(JK),JK=1,NPG)
156 1100 FORMAT ('0*PHPNUC* AVAILABLE ENERGY NEGATIVE')
157 1101 FORMAT ('0*PHPNUC* LESS THAN 2 OUTGOING PARTICLES')
158 1102 FORMAT ('0*PHPNUC* MORE THAN 18 OUTGOING PARTICLES')
159 1150 FORMAT ('0*PHPNUC* ABOVE ERROR DETECTED IN PHASP',
160 $ ' AT CALL NUMBER ',I7)
161 1200 FORMAT ('0*PHPNUC* INPUT DATA TO PHPNUC. NPG = ',I6/
162 $ ' TECM = ',E15.7,' PARTICLE MASSES = ',5E15.7/(42X,5E15.7))