Skip to content

Commit 6e991fa

Browse files
klendathu2kgenevb
authored andcommitted
Apply changes found in VMC geant3 (reorder, protect against div-by-0's)
1 parent 0348440 commit 6e991fa

1 file changed

Lines changed: 21 additions & 7 deletions

File tree

asps/Simulation/geant321/gphys/gvaviv.F

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
*
2-
* $Id: gvaviv.F,v 1.1.1.1 2004/01/15 00:12:16 potekhin Exp $
2+
* $Id: gvaviv.F,v 1.2 2020/06/05 15:31:12 jwebb Exp $
33
*
44
* $Log: gvaviv.F,v $
5+
* Revision 1.2 2020/06/05 15:31:12 jwebb
6+
* Apply changes found in VMC geant3 (reorder, protect against div-by-0's)
7+
*
58
* Revision 1.1.1.1 2004/01/15 00:12:16 potekhin
69
*
10+
*
711
* Revision 1.1.1.1 1997/11/03 15:30:44 atlascvs
812
* Importing CERNLIB version 08.21.
913
*
@@ -201,6 +205,10 @@ FUNCTION GVAVIV(RKAPPA,BETA2,RAN)
201205

202206
GVAVIV=0
203207
IF(RKAPPA .LT. 0.01 .OR. RKAPPA .GT. 12) RETURN
208+
HC(0)=LOG(RKAPPA)+BETA2+0.42278434
209+
DSIGM(1)=SQRT(RKAPPA/(1-0.5*BETA2))
210+
HC(1)=DSIGM(1)
211+
HC(8)=0.39894228*HC(1)
204212
IF(RKAPPA .GE. 0.29) THEN
205213
ITYPE=1
206214
NPT=100
@@ -210,14 +218,11 @@ FUNCTION GVAVIV(RKAPPA,BETA2,RAN)
210218
AC(8)=(-0.013483*BETA2-0.048801)*RKAPPA+
211219
1 (-1.6921*BETA2+8.3656)*WK+(-0.73275*BETA2-3.5226)
212220
DRK(1)=WK**2
213-
DSIGM(1)=SQRT(RKAPPA/(1-0.5*BETA2))
214221
DO 1 J = 1,4
215222
DRK(J+1)=DRK(1)*DRK(J)
216223
DSIGM(J+1)=DSIGM(1)*DSIGM(J)
217224
1 ALFA(J+1)=(FNINV(J)-BETA2*FNINV(J+1))*DRK(J)
218225

219-
HC(0)=LOG(RKAPPA)+BETA2+0.42278434
220-
HC(1)=DSIGM(1)
221226
HC(2)=ALFA(3)*DSIGM(3)
222227
HC(3)=(3*ALFA(2)**2+ALFA(4))*DSIGM(4)-3
223228
HC(4)=(10*ALFA(2)*ALFA(3)+ALFA(5))*DSIGM(5)-10*HC(2)
@@ -226,7 +231,6 @@ FUNCTION GVAVIV(RKAPPA,BETA2,RAN)
226231
HC(7)=HC(2)*HC(5)
227232
DO 2 J = 2,7
228233
2 HC(J)=EDGEC(J)*HC(J)
229-
HC(8)=0.39894228*HC(1)
230234
ELSEIF(RKAPPA .GE. 0.22) THEN
231235
ITYPE=2
232236
NPT=150
@@ -331,11 +335,21 @@ FUNCTION GVAVIV(RKAPPA,BETA2,RAN)
331335
AC(9)=(AC(8)-AC(0))/NPT
332336
IF(ITYPE .EQ. 3) THEN
333337
X=(AC(7)-AC(8))/(AC(7)*AC(8))
334-
Y=1/LOG(AC(8)/AC(7))
338+
IF(AC(7) .NE. AC(8)) THEN
339+
Y=1/LOG(AC(8)/AC(7))
340+
ELSE
341+
Y=1.E10
342+
ENDIF
335343
P2=AC(7)**2
344+
C. PROTECT AGAINST DIVISION BY ZERO
345+
DIVISOR=1+X*Y*AC(7)
346+
IF(DIVISOR .EQ. 0) THEN
347+
AC(11)=1.E10
348+
ELSE
336349
AC(11)=P2*(AC(1)*EXP(-AC(2)*(AC(7)+AC(5)*P2)-
337350
1 AC(3)*EXP(-AC(4)*(AC(7)+AC(6)*P2)))-0.045*Y/AC(7))/
338-
2 (1+X*Y*AC(7))
351+
2 DIVISOR
352+
ENDIF
339353
AC(12)=(0.045+X*AC(11))*Y
340354
ENDIF
341355
IF(ITYPE .EQ. 4) AC(10)=0.995/GLANDS(AC(8))

0 commit comments

Comments
 (0)