14 #include "geant321/gcbank.inc"
15 #include "geant321/gccuts.inc"
16 #include "geant321/gcjloc.inc"
17 #include "geant321/gconsp.inc"
18 #include "geant321/gcphys.inc"
19 #include "geant321/gcstak.inc"
20 #include "geant321/gctmed.inc"
21 #include "geant321/gcmulo.inc"
22 #include "geant321/gctrak.inc"
23 #include "geant321/gcunit.inc"
25 parameter(epsmac=1.
e-6)
26 DOUBLE PRECISION one,xcoef1,xcoef2,xcoef3,
zero
29 parameter(epcut=1.022
e-3)
39 IF (gekin.LE.cutgam) goto 998
60 IF (getot.GT.epcut)
THEN
62 steppa = gekrt1*q(jpair+iekbin) +gekrat*q(jpair+iekbin+1)
64 IF (spair.LT.step)
THEN
74 stepco = gekrt1*q(jcomp+iekbin) +gekrat*q(jcomp+iekbin+1)
76 IF (scomp.LT.step)
THEN
84 IF (gekin.LT.0.4)
THEN
86 stepph = gekrt1*q(jphot+iekbin) +gekrat*q(jphot+iekbin+1)
88 IF (sphot.LT.step)
THEN
98 steppf = gekrt1*q(jpfis+iekbin) +gekrat*q(jpfis+iekbin+1)
100 IF (spfis.LT.step)
THEN
109 IF (gekin.LT.0.01)
THEN
110 stepra = gekrt1*q(jrayl+iekbin) +gekrat*q(jrayl+iekbin+1)
111 srayl = stepra*zintra
112 IF (srayl.LT.step)
THEN
119 IF (step.LT.0.) step = 0.
123 IF (step.GE.safety)
THEN
125 IF (ignext.NE.0)
THEN
134 IF (iq(jstak+3).NE.0)
THEN
135 DO 10 ist = iq(jstak+3),iq(jstak+1)
136 jst = jstak +3 +(ist-1)*nwstak
148 IF (inwvol.EQ.2)
THEN
151 IF(vectmp.EQ.
vect(i))
THEN
155 IF(
vect(i+3).NE.0.)
THEN
159 IF(lmec(nmec).EQ.104) nmec=nmec-1
166 WRITE(chmail, 10100) gekin, numed, step, snext
168 10000
FORMAT(
' Boundary correction in GTGAMA: ',
169 +
' GEKIN NUMED STEP SNEXT')
170 10100
FORMAT(31
x,e10.3,1
x,i10,1
x,e10.3,1
x,e10.3,1
x)
186 tofg = tofg +step/clight
190 IF (getot.GT.epcut)
THEN
191 IF (ipair.GT.0) zintpa = zintpa -step/steppa
193 IF (icomp.GT.0) zintco = zintco -step/stepco
194 IF (gekin.LT.0.4)
THEN
195 IF (iphot.GT.0) zintph = zintph -step/stepph
197 IF (jpfis.GT.0) zintpf = zintpf -step/steppf
199 IF (gekin.LT.0.01) zintra = zintra -step/stepra
202 IF (iproc.EQ.0) go to 999
213 ELSE IF (iproc.EQ.7)
THEN
218 ELSE IF (iproc.EQ.8)
THEN
220 IF ((iaban.NE.0).AND.(gekin.LE.0.001))
THEN
223 IF(gekrat.LT.0.7)
THEN
226 i1 = min(iekbin,nekbin-1)
230 xcoef2 = q(jcoef+i1+1)
231 xcoef3 = q(jcoef+i1+2)
232 IF(xcoef1.NE.0.)
THEN
233 stopmx = -xcoef2+sign(
one,xcoef1)*
sqrt(xcoef2**2 - (xcoef3-
236 stopmx = - (xcoef3-gekin)/xcoef2
242 IF (stopmx.LE.safety) goto 998
249 ELSE IF (iproc.EQ.25)
THEN
254 ELSE IF (iproc.EQ.23)
THEN
G4int nint(G4double number)
static c2_sqrt_p< float_type > & sqrt()
make a *new object