From 92a676c3e274b7864d57267ecd899fbdd3b89b7d Mon Sep 17 00:00:00 2001 From: Richard Jones Date: Thu, 5 Feb 2026 03:51:12 -0500 Subject: [PATCH 1/2] * add ROOT to the link list in support of JANA2 [rtj] --- src/programs/Simulation/gxtwist/Makefile.bms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/programs/Simulation/gxtwist/Makefile.bms b/src/programs/Simulation/gxtwist/Makefile.bms index c7a5adc9a..93d830826 100644 --- a/src/programs/Simulation/gxtwist/Makefile.bms +++ b/src/programs/Simulation/gxtwist/Makefile.bms @@ -1,5 +1,5 @@ -PACKAGES := CERNLIB:JANA:CURL +PACKAGES := CERNLIB:JANA:CURL:ROOT MISC_LIBS = -L$(HALLD_RECON_HOME)/$(BMS_OSNAME)/lib -L$(HALLD_SIM_HOME)/$(BMS_OSNAME)/lib -L$(JANA_HOME)/lib -lXm -lXt -lgelhad -lhitutil -rdynamic -ltirpc -lcurl -lJANA #FFLAGS = -Wno-globals CFLAGS += -g -I$(HALLD_RECON_HOME)/src/libraries -I$(HALLD_RECON_HOME)/${BMS_OSNAME}/include -I/usr/include/tirpc -L$(HALLD_RECON_HOME)/$(BMS_OSNME)/lib From 0fd11e6ca9494e6757e28415d2dd4686b45d79d8 Mon Sep 17 00:00:00 2001 From: Richard Jones Date: Thu, 5 Feb 2026 03:53:29 -0500 Subject: [PATCH 2/2] * debug fixes to some cernlib fortran code to support the latest fortran runtime changes [rtj] --- src/programs/Simulation/gxtwist/csinit.F | 255 ++++++++++++++++++++ src/programs/Simulation/gxtwist/gelhad | 1 + src/programs/Simulation/gxtwist/gfmfin.F | 286 +++++++++++++++++++++++ 3 files changed, 542 insertions(+) create mode 100644 src/programs/Simulation/gxtwist/csinit.F create mode 120000 src/programs/Simulation/gxtwist/gelhad create mode 100644 src/programs/Simulation/gxtwist/gfmfin.F diff --git a/src/programs/Simulation/gxtwist/csinit.F b/src/programs/Simulation/gxtwist/csinit.F new file mode 100644 index 000000000..b1f897f4d --- /dev/null +++ b/src/programs/Simulation/gxtwist/csinit.F @@ -0,0 +1,255 @@ +* This needs to be included in the primary source tree in order to +* be properly initialized during application startup. Without it, +* I found that COMIS functions could not be called on the Linux +* platform using the compiled library loader interface that makes +* them run with near-full efficiency. -Richard Jones, 2/4/2026 + +#define CERNLIB_LINUX +#define CERNLIB_UNIX +#define CERNLIB_SHL +#define CERNLIB_QX_SC +#define CERNLIB_GSF77 +* +* $Id: csinit.F,v 1.11 2005/04/18 15:23:11 mclareni Exp $ +* +* $Log: csinit.F,v $ +* Revision 1.11 2005/04/18 15:23:11 mclareni +* Mods submitted by Kevin B. McCarty to fix insecure Cernlib uses of /tmp. +* +* Revision 1.10 2002/06/19 14:27:59 couet +* - _-PIC option removed from the list of default c compiler options on LINUX. +* +* Revision 1.9 1998/05/13 08:14:14 couet +* - Default compilation options for HPUX have been changed. With HPUX 10.20 +* the option -O produce a crash when COMIS routines containing math funtionc +* are called with the f77 extension. +* +* Revision 1.8 1998/04/08 14:00:59 couet +* - VIDQQ was not used, and was initialise as a wrong "what" string. +* +* Revision 1.7 1998/01/27 08:51:23 couet +* - option -fPIC removed for LINUX g77 b +* +* Revision 1.6 1998/01/15 14:41:52 mclareni +* Mods for shared libraries for Linux +* +* Revision 1.5 1998/01/12 09:55:47 couet +* - Mods for LINUX (shared libraries) +* +* Revision 1.4 1997/02/14 16:22:12 dinofm +* ONLY for PIAF: if CERNLIB_SOLARIS is defined and IPIAF=1 Fortran modules +* are compiled with the -PIC option instead the -pic (larger global symbol +* table). +* +* Revision 1.3 1996/05/13 08:04:58 berejnoi +* Mods for SHL version on IBMRT +* +* Revision 1.2 1996/04/02 22:11:23 thakulin +* Add support for shared lib compilation with Apogee and EPC C and +* Fortran compilers. +* +* Revision 1.1.1.1 1996/02/26 17:16:16 mclareni +* Comis +* +* +#include "comis/pilot.h" +*CMZ : 1.19/00 07/04/95 14.21.05 by Unknown +*-- Author : V.Berezhnoi + SUBROUTINE CSINIT(NW) +***--------------------------- +#include "comis/cslun.inc" + COMMON/CSCONT/LCONT +#include "comis/cspar.inc" +#include "comis/mdpool.inc" +#include "comis/comis.inc" +#include "comis/csbuf.inc" +#include "comis/csrec.inc" +#include "comis/cstab.inc" +#include "comis/cspnts.inc" +#include "comis/cssysd.inc" +#include "comis/csdpvs.inc" +#include "comis/cskeys.inc" +#include "comis/cscbwl.inc" +#include "comis/csichv.inc" +#include "comis/cskucs.inc" +#if defined(CERNLIB_SHL) +#include "comis/cshlnm.inc" +#endif +#if defined(CERNLIB_SHL)&&(defined(CERNLIB_QMLXIA64)) +#include "comis/cstab64.inc" +#endif +#if defined(CERNLIB_PAW) +#include "paw/pcmode.inc" +#include "comis/cshfill.inc" +#endif + COMMON /MPLIST/ INDP + EXTERNAL MDEXP, CSMBIT + EXTERNAL CSOFIL,CSOLOG,CSOMAP,CSLIB + EXTERNAL CGCONT,CSCOMX,CSEXTX,CSPTFS + EXTERNAL CSNPAR,CSKPAR,CSIPAR,CSRPAR,CSLPAR, + + CSTPAR,CSCPAR,CSSPAR + CHARACTER KWORDS*22 + DATA KWORDS/'ENDIFITHENELSEIFENDDOD'/ + INDP=0 + CALL MDINIT(LHP,MDEXP) + CALL MHDEF (LHP-6,MDEXP) + LAST=MAX0(NW,LASTK)-2 + IBASE=0 + IPC=0 + ITA=0 + IDP=0 + IFORS=1 + ITMPLEN=0 + NCBARR=0 + NTRACE=1 + NPARAM=1 + IBSEM=MHLOC(LSSTK) + ITS=IBSEM + ILSEM=LSSTK+IBSEM + LIMPL=17 + IBIMPL=MHLOC(LIMPL) + IQ(IBIMPL)=0 + LBB=10 + NBB=0 + NBG=0 + IBB=MHLOC(LBB)-1 + IPMCAD=0 + IPGB=0 + IPGP=0 + IPGI=0 + IPLI=0 + IPLL=0 + LDATA=0 + IEXTGB=0 + LCONT=0 + NUMST=0 + JTCH=MJCHAR(IBUF(1)) + NCHS=LCSTK*NBYTPW + JID=MJCHAR(IDEN(1)) + JTOPA=LOCF(IA(1))-1 + JPMB=0 + JPMC=0 + JMB=JTCH + JMC=JMB + NMC=0 + NMB=NCHS + JFI1=MJSCHA(KWORDS) + JFI2=JFI1+4 + JTHEN=JFI2+2 + JELSE=JTHEN+4 + JOD1=JELSE+6 + JOD2=JOD1+4 + JSR=MJSCHA(REC) + JSR1=MJSCHA(REC1) + JSMAIN=MJSCHA(MAINPR) + JB4=MJCHAR(IB(4)) + PROMPT(1)='CS>' + PROMPT(2)='FSD>' + PROMPT(3)='MND>' + PROMPT(4)='PAU>' + PROMPT(5)='???>' + KEYRD=0 + LIBRD=0 + KEYC=0 + IRECU=1-LRECU + LUNINP=5 + ISTPM=0 + ICBWL=0 + LISTCL=0 + ICHLA=ICHAR('A') + ICHLZ=ICHAR('Z') + ICHD0=ICHAR('0') + ICHD9=ICHAR('9') + ICHSUSC=ICHAR('_') + ICHSX=ICHAR('#') + ICHSE=ICHAR('!') + ICHBLN=ICHAR(' ') + CALL UCTOH(' ',KBLN,4,4) + ICHQUO=ICHAR('''') + ICHSSC=ICHAR(';') + ICHSEQ=ICHAR('=') + ICHBRA=ICHAR('(') + ICHKET=ICHAR(')') + ICHMINU=ICHAR('-') + ICHPLUS=ICHAR('+') + ICHCOMM=ICHAR(',') +#if defined(CERNLIB_SHL)&&(defined(CERNLIB_QMLXIA64)) + IPIADGV=0 +#endif +#if defined(CERNLIB_PAW) + CALL CSPAWI + MODHFI=0 +#endif +#if !defined(CERNLIB_PAW) + JKUVBS=-1 +#endif +#if (defined(CERNLIB_HPUX))&&(defined(CERNLIB_SHL)) + ITMPLEN=CSTMPD(CHPATH, 256) + CHF77 ='f77 -c +z +ppu' + CHCC ='cc -c +z' +#endif +#if (defined(CERNLIB_IBMRT))&&(defined(CERNLIB_SHL)) + ITMPLEN=CSTMPD(CHPATH, 256) + CHF77 ='xlf -qextname -qrndsngl -qcharlen=32767 -c' + CHCC ='cc -c' +#endif +#if (defined(CERNLIB_SUN))&&(defined(CERNLIB_SOLARIS))&&(defined(CERNLIB_SHL)) + ITMPLEN=CSTMPD(CHPATH, 256) +# if defined(CERNLIB_QFAPOGEE) + CHF77 ='apf77 -c -pic' + CHCC ='apcc -c -pic' +# else +# if defined(CERNLIB_QFEPC) + CHF77 ='epcf90 -c -K pic' + CHCC ='ecc -c -K pic' +# else +* increase some internal tables: up to 100 nested control statements, +* 200 continuation lines, 10000 identifier names per module +#if defined(CERNLIB_PAW) + IF (IPIAF.EQ.1) THEN +*-- PIAF requires -PIC to cope with larger selection functions + CHF77 ='/opt/SUNWspro/bin/f77 -Nc100 -Nl200 -Nn10000 -c -PIC' + CHCC ='/opt/SUNWspro/bin/cc -c -K PIC' + ELSE + CHF77 ='/opt/SUNWspro/bin/f77 -Nc100 -Nl200 -Nn10000 -c -pic' + CHCC ='/opt/SUNWspro/bin/cc -c -K pic' + ENDIF +# else + CHF77 ='/opt/SUNWspro/bin/f77 -Nc100 -Nl200 -Nn10000 -c -pic' + CHCC ='/opt/SUNWspro/bin/cc -c -K pic' +#endif +# endif +# endif +#endif +#if (defined(CERNLIB_SUN))&&(!defined(CERNLIB_SOLARIS))&&(defined(CERNLIB_SHL)) + ITMPLEN=CSTMPD(CHPATH, 256) + CHF77 ='f77 -c -pic' + CHCC ='cc -c -pic' +#endif +#if (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_QMLXIA64))&&(!defined(CERNLIB_GFORTRAN)) + ITMPLEN=CSTMPD(CHPATH, 256) + CHF77 ='g77 -c' + CHCC ='cc -c' +#endif +#if (defined(CERNLIB_LINUX))&&(defined(CERNLIB_GCC3)) + ITMPLEN=CSTMPD(CHPATH, 256) + CHF77 ='g77 -c -fPIC' + CHCC ='cc -c -fPIC' +#endif +#if (defined(CERNLIB_LINUX))&&(defined(CERNLIB_GCC4)) + ITMPLEN=CSTMPD(CHPATH, 256) + CHF77 ='gfortran -c -fPIC' + CHCC ='cc -c -fPIC' +#endif +#if (defined(CERNLIB_SGI))&&(defined(CERNLIB_SHL)) + ITMPLEN=CSTMPD(CHPATH, 256) + CHF77 ='f77 -c' + CHCC ='cc -cckr -c' +#endif +#if (defined(CERNLIB_ALPHA_OSF))&&(defined(CERNLIB_SHL)) + ITMPLEN=CSTMPD(CHPATH, 256) + CHF77 ='f77 -c' + CHCC ='cc -c' +#endif + RETURN + END diff --git a/src/programs/Simulation/gxtwist/gelhad b/src/programs/Simulation/gxtwist/gelhad new file mode 120000 index 000000000..0c9d1631b --- /dev/null +++ b/src/programs/Simulation/gxtwist/gelhad @@ -0,0 +1 @@ +../HDGeant/gelhad \ No newline at end of file diff --git a/src/programs/Simulation/gxtwist/gfmfin.F b/src/programs/Simulation/gxtwist/gfmfin.F new file mode 100644 index 000000000..07f257e4c --- /dev/null +++ b/src/programs/Simulation/gxtwist/gfmfin.F @@ -0,0 +1,286 @@ +* +* $Id: gfmfin.F,v 1.1.1.1 1995/10/24 10:21:53 cernlib Exp $ +* +* $Log: gfmfin.F,v $ +* Revision 1.1.1.1 1995/10/24 10:21:53 cernlib +* Geant +* +* +#include "geant321/pilot.h" +*CMZ : 3.21/02 29/03/94 15.41.47 by S.Giani +*-- Author : + SUBROUTINE GFMFIN +#include "geant321/gcbank.inc" +#include "geant321/gccuts.inc" +#include "geant321/gcjloc.inc" +#include "geant321/gcflag.inc" +#include "geant321/gckine.inc" +#include "geant321/gcking.inc" +#include "geant321/gcmate.inc" +#include "geant321/gcphys.inc" +#include "geant321/gctrak.inc" +#include "geant321/gsecti.inc" +#include "geant321/gctmed.inc" +#include "geant321/gcunit.inc" +#include "geant321/dimpar.inc" + +#if !defined(CERNLIB_SINGLE) +#include "geant321/finuct.inc" +#endif +#include "geant321/finuc.inc" + REAL RNDM(1) +#if !defined(CERNLIB_SINGLE) + DOUBLE PRECISION AOCMBM, AMSS , ZTAR, RHO , ZLIN, ZLEL, ZLRAD, + +ZUL +#endif + COMMON / FKMAPA / AOCMBM (MXXMDF), AMSS (MXXMDF), ZTAR (MXXMDF), + + RHO (MXXMDF), ZLIN (MXXMDF), ZLEL (MXXMDF), + + ZLRAD (MXXMDF), ZUL (MXXMDF), MEDIUM (MXXRGN), + + MULFLG (MXXMDF),IFCOMP(MXXMDF), MSSNUM (MXXMDF), + + NREGS, NMATF, MTBSNM +#if !defined(CERNLIB_SINGLE) +#include "geant321/part2t.inc" +#endif +#include "geant321/part2.inc" +#if !defined(CERNLIB_SINGLE) +#include "geant321/comcont.inc" +#endif +#include "geant321/comcon.inc" +#if !defined(CERNLIB_SINGLE) +#include "geant321/fheavyt.inc" +#endif +#include "geant321/fheavy.inc" +#include "geant321/paprop.inc" +#if !defined(CERNLIB_SINGLE) +#include "geant321/papropt.inc" +#endif +#include "geant321/gfkdis.inc" +#if !defined(CERNLIB_SINGLE) + DOUBLE PRECISION POO,EKE,TXI,TYI,TZI,AMM,WE,ONE,PGEANT,DMOD +#endif + PARAMETER (ONE=1) + DIMENSION IGTOFL(49),IFLTOG(39),IHVTOG(6),ZSAMP(50) + DATA IGTOFL / 0, 0, 0, 0, 0, 0,23,13,14,12, 15,16, 8, 1, 2,19, 0, + +17,21,22, 20, 34, 36, 38, 9,18, 31, 32, 33, 35, 37, 39, 17*0/ + + DATA IFLTOG /14,15, 3, 2, 4, 4, 1,13,25, 5, 6,10, 8, 9,11,12,18, + +26,16,21, 19,20, 7, 7*0, 27, 28, 29, 22, 30, 23, 31, 24, 32/ + DATA IHVTOG /13,14,45,46,49,47/ +* + NP = 0 + NPHEAV = 0 +* +* Stopped particles: +* o Neutral particles are sent to GHSTOP +* o pi+ and K+/K- are forced to decay +* o pi-, antiprotons and antineutrons are sent to FLUKA +* for annihilation (not here but later in this routine) + IF (IGF.EQ.2.OR.(GEKIN.EQ.0.0.AND.IPART.EQ.13)) THEN + IF (GEKIN.LT.CUTNEU) THEN + GEKIN = MAX(GEKIN,1E-14) +* should kinetic energy be deposited? + ISTOP = 2 + IGF = 0 + GOTO 110 + ENDIF + CALL GMICAP + IGF = 0 + GOTO 110 + ELSE IF (GEKIN.EQ.0..AND. + + (IPART.EQ.8.OR.IPART.EQ.12.OR.IPART.EQ.11)) THEN + CALL GDECAY + NMEC=NMEC+1 + LMEC(NMEC)=5 + ISTOP=1 + GOTO 999 + ENDIF +* + IF (IFINIT(5) .EQ. 0) CALL FLINIT + INT=0 + IJ=IGTOFL(IPART) + IF(IJ.EQ.0) GOTO 110 + NMEC = NMEC + 1 + EKE = GEKIN + TXI = VECT(4) + TYI = VECT(5) + TZI = VECT(6) + DMOD = ONE/SQRT(TXI**2+TYI**2+TZI**2) + TXI = TXI*DMOD + TYI = TYI*DMOD + TZI = TZI*DMOD + WE = 1. + JMA = LQ(JMATE-NMAT) + NCOMP = ABS (Q(JMA+11)) + AMM = Q(JMA+6) + JMIXT = LQ(JMA-5) + +* Antiprotons, antineutrons and pi- are sent to +* eventv for annihilation + IF (GEKIN.EQ.0..AND. + + (IPART.EQ.15.OR.IPART.EQ.9.OR.IPART.EQ.25)) THEN + IF(NCOMP.LE.1) THEN + AMSS(1) = Q(JMA+6) + ZTAR(1) = Q(JMA+7) + MSSNUM(1) = 0 + RHO(1) = Q(JMA+8) + ELSE + ZSAMP(1) = 0. + DO 10 I=1,NCOMP + ZSAMP(I+1) = ZSAMP(I) + Q(JMIXT+NCOMP+I) + 10 CONTINUE + CALL GRNDM(RNDM,1) + ZCONT=ZSAMP(NCOMP+1)*RNDM(1) + DO 20 I=1,NCOMP + IF(ZCONT.LE.ZSAMP(I+1)) GO TO 30 + 20 CONTINUE + I = NCOMP + 30 CONTINUE + AMSS(1) = Q(JMIXT+I) + MSSNUM(1) = 0 + ZTAR(1) = Q(JMIXT+NCOMP+I) + RHO(1) = Q(JMIXT+2*NCOMP+I)*DENS + END IF + EKE = 1E-9 + POO=SQRT(EKE*(EKE+2*AM(IJ))) + CALL EVENTV(IJ,POO,EKE,TXI,TYI,TZI,WE,1) + GOTO 80 + ELSE IF (GEKIN.LE.CUTHAD .AND. ITRTYP.EQ.4) THEN + DESTEP = DESTEP + GEKIN + GEKIN = 0. + GETOT = AMASS + VECT(7) = 0. + ISTOP = 1 + GO TO 110 + ENDIF +* + CALL GRNDM(RNDM,1) + RNDEVT=RNDM(1) + IF ( RNDEVT .GE. SINE/FSIG) THEN + + IF (GEKIN .GT. 0.02) THEN + POO=SQRT(EKE*(EKE+2*AM(IJ))) + ELSE + GO TO 110 + END IF + INT=1 + LMEC(NMEC)=13 + IF(NCOMP.LE.1) THEN + CALL NUCREL(IJ,POO,EKE,TXI,TYI,TZI,AMM,WE) + ELSE + CALL GRNDM(RNDM,1) + RCONT=ELXNOR*RNDM(1) + DO 40 I=1,NCOMP + IF(RCONT.LE.CABELX(I)) GO TO 50 + 40 CONTINUE + I=NCOMP + 50 CONTINUE + CALL NUCREL(IJ,POO,EKE,TXI,TYI,TZI,ONE*Q(JMIXT+I),WE) + END IF + ELSE + LMEC(NMEC)=20 + IF (IHADR.EQ.2) THEN + ISTOP = 2 + DESTEP = DESTEP + GETOT + GO TO 110 + ENDIF + IF (GEKIN .GT. 0.02) THEN + POO=SQRT(EKE*(EKE+2*AM(IJ))) + ELSE + IF ((IJ.EQ.2 .OR. IJ.EQ.9 .OR. IJ.EQ.14 .OR. IJ.EQ.16) + + .AND. GEKIN .GT. 0.0) THEN + POO=SQRT(EKE*(EKE+2*AM(IJ))) + ELSE + NMEC=NMEC-1 + GO TO 110 + END IF + END IF + INT=2 + IF(NCOMP.LE.1) THEN + AMSS(1) = Q(JMA+6) + ZTAR(1) = Q(JMA+7) + MSSNUM(1) = 0 + RHO(1) = Q(JMA+8) + ELSE + CALL GRNDM(RNDM,1) + RCONT=ANXNOR*RNDM(1) + DO 60 I=1,NCOMP + IF(RCONT.LE.CABINX(I)) GO TO 70 + 60 CONTINUE + I=NCOMP + 70 CONTINUE + AMSS(1) = Q(JMIXT+I) + MSSNUM(1) = 0 + ZTAR(1) = Q(JMIXT+NCOMP+I) + RHO(1) = Q(JMIXT+2*NCOMP+I)*DENS + END IF + CALL EVENTV(IJ,POO,EKE,TXI,TYI,TZI,WE,1) + END IF +* + 80 IF(NP.EQ.1.AND.NPHEAV.EQ.0.AND.KPART(1).EQ.IJ) THEN + VECT(4)=CXR(1) + VECT(5)=CYR(1) + VECT(6)=CZR(1) + VECT(7)=SQRT(TKI(1)*(TKI(1)+2*AMASS)) + GETOT=TKI(1)+AMASS + GEKIN=TKI(1) + ELSE + ISTOP=1 + NSTAK1 = MIN(NP,MXGKIN-NGKINE) + IF(NP.GT.NSTAK1) THEN + WRITE(CHMAIL,10000) NP-NSTAK1 + CALL GMAIL(0,0) + ENDIF + DO 90 K=1,NSTAK1 + NGKINE = NGKINE + 1 + IF (KPART(K) .EQ. 24 .OR. KPART(K) .EQ. 25) THEN + KPART(K) = 19 + CALL GRNDM(RNDM,1) + IF (RNDM(1) .GT. 0.5) KPART(K) = 12 + END IF + IGEPAR = IFLTOG(KPART(K)) + JPA = LQ(JPART-IGEPAR) + AGEMAS = Q(JPA+7) + PGEANT = SQRT(TKI(K)*(TKI(K)+2*AGEMAS)) + GKIN(1,NGKINE)=CXR(K)*PGEANT + GKIN(2,NGKINE)=CYR(K)*PGEANT + GKIN(3,NGKINE)=CZR(K)*PGEANT + GKIN(4,NGKINE)=TKI(K)+AGEMAS + GKIN(5,NGKINE)=IGEPAR + TOFD(NGKINE)=0.0 + GPOS(1,NGKINE) = VECT(1) + GPOS(2,NGKINE) = VECT(2) + GPOS(3,NGKINE) = VECT(3) + 90 CONTINUE +* + NSTAK2 = MIN(NPHEAV,MXGKIN-NGKINE) + IF(NPHEAV.GT.NSTAK2) THEN + WRITE(CHMAIL,10100) NPHEAV-NSTAK2 + CALL GMAIL(0,0) + ENDIF + DO 100 K=1,NSTAK2 + NGKINE = NGKINE + 1 + IGEPAR = IHVTOG(KHEAVY(K)) + JPA = LQ(JPART-IGEPAR) + AGEMAS = Q(JPA+7) + PGEANT = SQRT(TKHEAV(K)*(TKHEAV(K)+2*AGEMAS)) + GKIN(1,NGKINE)=CXHEAV(K)*PGEANT + GKIN(2,NGKINE)=CYHEAV(K)*PGEANT + GKIN(3,NGKINE)=CZHEAV(K)*PGEANT + GKIN(4,NGKINE)=TKHEAV(K)+AGEMAS + GKIN(5,NGKINE)=IGEPAR + TOFD(NGKINE)=0.0 + GPOS(1,NGKINE) = VECT(1) + GPOS(2,NGKINE) = VECT(2) + GPOS(3,NGKINE) = VECT(3) + 100 CONTINUE +* + KCASE=NAMEC(12) + END IF + 110 CONTINUE + ZINTHA = GARNDM(DUMMY) + SLHADR = SLENG + STEPHA = 1.0E10 +10000 FORMAT(' **** FLUFIN: Stack overflow, ',I6,' particles lost') +10100 FORMAT(' **** FLUFIN: Stack overflow, ',I6, + +' heavy particles lost') + 999 END