5 * Revision 1.1.1.1 1995/10/24 10:20:16 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/04 13/12/94 17.08.38 by S.Giani
12 SUBROUTINE GPRMAT(IMATE,IPART,MECAN,KDIN,TKIN)
14 C. ******************************************************************
16 C. * INTERPOLATE and PRINT the DE/DX ,stopping range and *
17 C. * Cross sections tabulated in JMATE banks corresponding to *
18 C. * material IMATE, particle IPART, mecanism name MECAN , *
19 C. * kinetic energies TKIN. *
21 C. * The MECAnism name can be : *
22 C. * 'HADF' 'INEF' 'ELAF' 'FISF' 'CAPF' *
23 C. * 'HADG' 'INEG' 'ELAG' 'FISG' 'CAPG' *
24 C. * 'LOSS' 'PHOT' 'ANNI' 'COMP' 'BREM' *
25 C. * 'PAIR' 'DRAY' 'PFIS' 'RAYL' 'HADG' *
26 C. * 'MUNU' 'RANG' 'STEP' *
28 C. * For Hadronic particles it also computes the *
29 C. * hadronic cross section from FLUKA ( '***F' ) or *
30 C. * GHEISHA ( '***G' ) programs: *
31 C. * HADF or HADG -- total *
32 C. * INEF or INEG -- inelastic *
33 C. * ELAF or ELAG -- elastic *
34 C. * FISF or FISG -- fission (0.0 for FLUKA) *
35 C. * CAPF or CAPG -- neutron capture (0.0 for FLUKA) *
37 C. * Input parameters *
38 C. * IMATE Geant material number *
39 C. * IPART Geant particle number *
40 C. * MECAN mechanism name of the bank to be fetched *
41 C. * KDIM dimension of the arrays TKIN , VALUE *
42 C. * TKIN array of kinetic energy of incident particle (in Gev) *
44 C. * ==>Called by : <USER> *
45 C. * Authors R.Brun, M.Maire ********* *
47 C. ******************************************************************
49 #include "geant321/gcbank.inc"
50 #include "geant321/gcnum.inc"
51 #include "geant321/gcunit.inc"
55 CHARACTER*4 KU1 , KU2 , KU3 , KU(5)
56 DIMENSION TKIN(KDIN),VALUE(MMX),SIGT(MMX),PCUT(5),CU(5)
58 #include "geant321/gcnmec.inc"
60 * ------------------------------------------------------------------
63 IF (KDIM.LE.0) GO TO 999
65 IF (JMATE.LE.0) GO TO 999
66 IF (IMATE.LE.0) GO TO 999
67 IF (IMATE.GT.NMATE) GO TO 90
69 IF (JMA.LE.0) GO TO 90
71 IF (JPART.LE.0) GO TO 999
72 IF (IPART.LE.0) GO TO 999
73 IF (IPART.GT.NPART) GO TO 90
75 IF (JPA.LE.0) GO TO 90
80 IF(MECAN.EQ.'ALL') THEN
86 IF(MECAN.EQ.CHNMEC(IMECA)) THEN
91 WRITE(CHMAIL,'('' *** GPRMAT: Mechanism '',A,
92 + '' not implemented'')') MECAN
99 IF(CHNMEC(IMEC).NE.'NULL') THEN
101 CALL GFTMAT(IMATE,IPART,MECA,KDIM,TKIN,VALUE,PCUT,IXST)
102 IF(IXST.EQ.0) GO TO 60
105 WRITE(CHMAIL,10100)(IQ(JMA+I),I=1,5),MECA,(IQ(JPA+J),J=1,5)
107 CHMAIL(31:)='-----------------------------------------'
111 30 CALL GEVKEV(PCUT(K),CU(K),KU(K))
112 WRITE(CHMAIL,10200) (CU(K),KU(K),K=1,5)
115 IF (MECA.EQ.'LOSS'.OR.MECA.EQ.'RANG'.OR.MECA.EQ.'STEP')
117 IF (MECA.EQ.'LOSS') WRITE(CHMAIL,10300)
118 IF (MECA.EQ.'RANG') WRITE(CHMAIL,10400)
119 IF (MECA.EQ.'STEP') WRITE(CHMAIL,10500)
121 NROW = (KDIM-1)/3 + 1
125 CALL GEVKEV(TKIN(IK),EK1,KU1)
128 IF (IK.GT.KDIM) IK=KDIM
130 CALL GEVKEV(TKIN(IK),EK2,KU2)
133 IF (IK.GT.KDIM) IK=KDIM
135 CALL GEVKEV(TKIN(IK),EK3,KU3)
137 WRITE(CHMAIL,10600) EK1,KU1,DE1,EK2,KU2,DE2,EK3,KU3,
144 NROW = (KDIM-1)/2 + 1
149 IF(SIG1.NE.0.)AL1 = 1./SIG1
150 SIGT(IK) = SIGT(IK) + SIG1
151 CALL GEVKEV(TKIN(IK),EK1,KU1)
154 IF (IK.GT.KDIM) IK=KDIM
157 IF(SIG2.NE.0.)AL2 = 1./SIG2
158 SIGT(IK) = SIGT(IK) + SIG2
159 CALL GEVKEV(TKIN(IK),EK2,KU2)
161 WRITE(CHMAIL,10900) EK1,KU1,SIG1,AL1,EK2,KU2,SIG2,AL2
168 * *** print total cross section
169 IF (MECAN.EQ.'ALL') THEN
173 WRITE(CHMAIL,10100)(IQ(JMA+I),I=1,5),MECA,(IQ(JPA+J),J=1,5)
175 CHMAIL(31:)='-----------------------------------------'
179 70 CALL GEVKEV(PCUT(K),CU(K),KU(K))
180 WRITE(CHMAIL,10200) (CU(K),KU(K),K=1,5)
184 NROW = (KDIM-1)/2 + 1
189 IF(SIG1.NE.0.)AL1 = 1./SIG1
190 CALL GEVKEV(TKIN(IK),EK1,KU1)
193 IF (IK.GT.KDIM) IK=KDIM
196 IF(SIG2.NE.0.)AL2 = 1./SIG2
197 CALL GEVKEV(TKIN(IK),EK2,KU2)
199 WRITE(CHMAIL,10900) EK1,KU1,SIG1,AL1,EK2,KU2,SIG2,AL2
206 90 WRITE(CHMAIL,10000) IMATE ,IPART
209 10000 FORMAT(' ***** GPRMAT error : material',I4,
210 + ' or particle',I4,' not defined' )
211 10100 FORMAT(30X,5A4,A4, ' for ',5A4)
212 10200 FORMAT( 6X,'BCUTE =',F6.2,A4,3X,'BCUTM =',F6.2,A4,3X,
213 + 'DCUTE =',F6.2,A4,3X,'DCUTM =',F6.2,A4,3X,
214 + 'PPCUTM =',F6.2,A4 )
215 10300 FORMAT( 6X,'kinetic energy DE/DX(mev/cm)',
216 + 6X,'kinetic energy DE/DX(mev/cm)',
217 + 6X,'kinetic energy DE/DX(mev/cm)')
218 10400 FORMAT( 6X,'kinetic energy Stop range cm',
219 + 6X,'kinetic energy Stop ramge cm',
220 + 6X,'kinetic energy Stop range cm')
221 10500 FORMAT( 6X,'kinetic energy Mulof step cm',
222 + 6X,'kinetic energy Mulof step cm',
223 + 6X,'kinetic energy Mulof step cm')
224 10600 FORMAT( 3(F16.2,A4,E15.4))
225 10700 FORMAT( 6X,'kinetic energy Sigma (1/cm) Lambda (cm)',
226 + 6X,'kinetic energy Sigma (1/cm) Lambda (cm)')
227 10800 FORMAT( 6X,'kinetic energy Sigto (1/cm) Lambda (cm)',
228 + 6X,'kinetic energy Sigto (1/cm) Lambda (cm)')
229 10900 FORMAT( 2(F16.2,A4,2(E15.4)))