diff -u --recursive --exclude=.svn geant3/comad/gcomad.F geant3.247.patched/comad/gcomad.F --- geant3/comad/gcomad.F 2010-04-13 11:45:27.000000000 +0200 +++ geant3.247.patched/comad/gcomad.F 2010-04-13 11:39:18.000000000 +0200 @@ -254,7 +254,7 @@ ELSE IF(CHCOMM.EQ.'ERTRIO') THEN IADD=GCADDD(ERDTRP) ELSE IF(CHCOMM.EQ.'ERTRIO1') THEN - IADD=GCADDD(IERTR) + IADD=GCADDI(IERTR) ELSE IF(CHCOMM.EQ.'EROPTS') THEN IADD=GCADDF(ERPLI) ELSE IF(CHCOMM.EQ.'EROPTC') THEN diff -u --recursive --exclude=.svn geant3/erdecks/erland.F geant3.247.patched/erdecks/erland.F --- geant3/erdecks/erland.F 2010-04-13 11:45:37.000000000 +0200 +++ geant3.247.patched/erdecks/erland.F 2010-04-13 11:40:41.000000000 +0200 @@ -175,9 +175,15 @@ IF(XMASS.LT.0.6E-3) THEN LX = 1.442695*STEP/RADL EMB=E/(2**LX) - S2B=E*E*(1/3**LX - 1/4**LX) - SB=SQRT(ABS(S2B)) - DEDXB = 1.2*SB + DEDXB = 0. +c correction by A. Rotondi and L. Lavezzi to prevent FPE (15/03/2010) + IF(LX.LT.25) THEN + S2B=E*E*(1/3**LX - 1/4**LX) + SB=SQRT(ABS(S2B)) + DEDXB = 1.2*SB + ENDIF +c end + DEDX2 = DEDX2 + DEDXB**2 ENDIF C PRINT *,XI/EMAX,AMAT,ZMAT,RHO diff -u --recursive --exclude=.svn geant3/erdecks/erprop.F geant3.247.patched/erdecks/erprop.F --- geant3/erdecks/erprop.F 2010-04-13 11:45:37.000000000 +0200 +++ geant3.247.patched/erdecks/erprop.F 2010-04-13 11:41:16.000000000 +0200 @@ -78,6 +78,15 @@ * IF(IERR.NE.0) THEN WRITE (LOUT, 778) IERR +c +c added by A. Rotondi and L. Lavezzi (01/04/2010) to update +c the XI, PPI, HI even when the error calculation fails + IF(IERR.EQ.3) THEN + CALL UCOPY (XF, XI, 3) + CALL UCOPY (PF, PPI, 3) + CALL UCOPY (HF, HI, 9) + ENDIF +c end RETURN ENDIF * diff -u --recursive --exclude=.svn geant3/erdecks/ertrch.F geant3.247.patched/erdecks/ertrch.F --- geant3/erdecks/ertrch.F 2010-04-13 11:45:37.000000000 +0200 +++ geant3.247.patched/erdecks/ertrch.F 2010-04-13 11:43:03.000000000 +0200 @@ -328,7 +328,12 @@ * * preset plane reached ? 74 CONTINUE - IF ((LEPLAN).AND.(STEP.GE.ASCL1)) THEN +c 25/02/2010: A. Rotondi and L. Lavezzi: sometimes when STEP is +c less than ASCL1 but their difference is very small (less than +c 1E-6) the plane is not found properly (if the plane is virtual) +c IF ((LEPLAN).AND.(STEP.GE.ASCL1)) THEN + IF ((LEPLAN).AND.((STEP.GE.ASCL1) + + .OR.(ABS(STEP - ASCL1).LT.PREC))) THEN SCAL3 = 0. DO 28 I=1,3 SCAL3=SCAL3+ERPLO(I,4,INLIST)*(ERPLO(I,3,INLIST)-VOUT(I)) @@ -342,7 +347,10 @@ LMEC(NMEC) = 24 GOTO 50 ELSE - IF(ASCL3.LE.PREC) LERST = 1 +c 25/02/2010: A. Rotondi and L. Lavezzi: for the same +c reason of change at line 335 +c IF(ASCL3.LE.PREC) LERST = 1 + IF(ASCL3.LE.(3. * PREC)) LERST = 1 ENDIF ENDIF * diff -u --recursive --exclude=.svn geant3/erpremc/trprfn.F geant3.247.patched/erpremc/trprfn.F --- geant3/erpremc/trprfn.F 2010-04-13 11:45:28.000000000 +0200 +++ geant3.247.patched/erpremc/trprfn.F 2010-04-13 11:43:32.000000000 +0200 @@ -432,7 +432,10 @@ 998 FORMAT('0',' *** S/R TRPROP DELTA(H*ALFA/P)',5X 1,'EXCEEDS TOLERANCE '/'0',3E12.5//' ********** ',///) INIT=1 - GO TO 30 +cc changed by A. Rotondi and L. Lavezzi (december 2009) +cc from GO TO 30 to GO TO 900 +c GO TO 30 + GO TO 900 904 IERR=4 999 WRITE (LOUT, 1000) IERR 1000 FORMAT(1H ,' *** S/R ERPROP IERR =',I5) Only in geant3.247.patched: l diff -u --recursive --exclude=.svn geant3/TGeant3/geant3LinkDef.h geant3.247.patched/TGeant3/geant3LinkDef.h --- geant3/TGeant3/geant3LinkDef.h 2010-04-13 11:45:46.000000000 +0200 +++ geant3.247.patched/TGeant3/geant3LinkDef.h 2010-04-13 11:43:47.000000000 +0200 @@ -41,6 +41,7 @@ #pragma link C++ class Gcvdma_t+; #pragma link C++ class Gctpol_t+; #pragma link C++ class Ertrio_t+; +#pragma link C++ class Ertrio1_t+; #pragma link C++ class Eropts_t+; #pragma link C++ class Eroptc_t+; #pragma link C++ class Erwork_t+; diff -u --recursive --exclude=.svn geant3/TGeant3/TGeant3.h geant3.247.patched/TGeant3/TGeant3.h --- geant3/TGeant3/TGeant3.h 2010-04-13 11:45:46.000000000 +0200 +++ geant3.247.patched/TGeant3/TGeant3.h 2010-04-13 11:44:03.000000000 +0200 @@ -544,7 +544,7 @@ Int_t nepred; Int_t inlist; Int_t ilpred; - Int_t iepred; + Int_t iepred[MXPRED]; } Ertrio_t; typedef struct {