Code is distributed via fluka_vmc
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 May 2008 13:13:11 +0000 (13:13 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 May 2008 13:13:11 +0000 (13:13 +0000)
64 files changed:
TFluka/FLUKA_input.f [deleted file]
TFluka/Falldlt.h [deleted file]
TFluka/Fbeamcm.h [deleted file]
TFluka/Fdblprc.h [deleted file]
TFluka/Fdimpar.h [deleted file]
TFluka/Fdpdxcm.h [deleted file]
TFluka/Fdrawcalls.h [deleted file]
TFluka/Femfrgn.h [deleted file]
TFluka/Femfstk.h [deleted file]
TFluka/Fevtflg.h [deleted file]
TFluka/Ffheavy.h [deleted file]
TFluka/Fflkmat.h [deleted file]
TFluka/Fflkstk.h [deleted file]
TFluka/Fgenstk.h [deleted file]
TFluka/Fioiocm.h [deleted file]
TFluka/Fiounit.h [deleted file]
TFluka/Fltclcm.h [deleted file]
TFluka/Fopphcm.h [deleted file]
TFluka/Fopphst.h [deleted file]
TFluka/Fpaprop.h [deleted file]
TFluka/Fpart.h [deleted file]
TFluka/Fscohlp.h [deleted file]
TFluka/Fsouevt.h [deleted file]
TFluka/Fsourcm.h [deleted file]
TFluka/Fstepsz.h [deleted file]
TFluka/Fsumcou.h [deleted file]
TFluka/Ftrackr.h [deleted file]
TFluka/TCallf77.h [deleted file]
TFluka/TFluka.cxx [deleted file]
TFluka/TFluka.h [deleted file]
TFluka/TFlukaCerenkov.cxx [deleted file]
TFluka/TFlukaCerenkov.h [deleted file]
TFluka/TFlukaCodes.h [deleted file]
TFluka/TFlukaConfigOption.cxx [deleted file]
TFluka/TFlukaConfigOption.h [deleted file]
TFluka/TFlukaIon.cxx [deleted file]
TFluka/TFlukaIon.h [deleted file]
TFluka/TFlukaLinkDef.h [deleted file]
TFluka/TFlukaMCGeometry.cxx [deleted file]
TFluka/TFlukaMCGeometry.h [deleted file]
TFluka/TFlukaMCLinkDef.h [deleted file]
TFluka/TFlukaScoringOption.cxx [deleted file]
TFluka/TFlukaScoringOption.h [deleted file]
TFluka/abscff.cxx [deleted file]
TFluka/bxdraw.cxx [deleted file]
TFluka/comscw.cxx [deleted file]
TFluka/comscw_activity.f [deleted file]
TFluka/crnkvp.f [deleted file]
TFluka/dffcff.cxx [deleted file]
TFluka/eedraw.cxx [deleted file]
TFluka/endraw.cxx [deleted file]
TFluka/fluscw_1mevn.f [deleted file]
TFluka/fluscw_deq99c.f [deleted file]
TFluka/libTFluka.pkg [deleted file]
TFluka/magfld.cxx [deleted file]
TFluka/mgdraw.cxx [deleted file]
TFluka/queffc.cxx [deleted file]
TFluka/rflctv.cxx [deleted file]
TFluka/rfrndx.cxx [deleted file]
TFluka/sodraw.cxx [deleted file]
TFluka/source.cxx [deleted file]
TFluka/stupre.cxx [deleted file]
TFluka/stuprf.cxx [deleted file]
TFluka/usdraw.cxx [deleted file]

diff --git a/TFluka/FLUKA_input.f b/TFluka/FLUKA_input.f
deleted file mode 100644 (file)
index e1531c6..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-*======================================================================*
-* Routines to open and close a given file with a given FORTRAN unit    *
-* from the C++ world                                                   *
-*======================================================================*
-*
-*=== FLUKA_OPENINP ====================================================*
-*
-      SUBROUTINE FLUKA_OPENINP(IOUNIT,FILNAM)
-*
-*----------------------------------------------------------------------*
-* Opens a file with a given unit number
-*
-*
-* IOUNIT: Input unit to be assiged to the file
-* FILNAM: Name of the file
-*
-*----------------------------------------------------------------------*
-*
-
-      IMPLICIT NONE
-      INTEGER IOUNIT
-      CHARACTER*(*) FILNAM
-
-      OPEN (UNIT=IOUNIT, FILE=FILNAM, STATUS="OLD")
-      RETURN
- 9999 END
-
-      SUBROUTINE FLUKA_OPENOUT(IOUNIT,FILNAM)
-*
-*----------------------------------------------------------------------*
-* Opens a file with a given unit number
-*
-*
-* IOUNIT: Input unit to be assiged to the file
-* FILNAM: Name of the file
-*
-*----------------------------------------------------------------------*
-*
-
-      IMPLICIT NONE
-      INTEGER IOUNIT
-      CHARACTER*(*) FILNAM
-
-      OPEN (UNIT=IOUNIT, FILE=FILNAM, STATUS="UNKNOWN")
-
-      RETURN
- 9999 END
-
-
-*
-*=== FLUKA_CLOSEINP ====================================================*
-*
-      SUBROUTINE FLUKA_CLOSEINP(IOUNIT)
-*
-*----------------------------------------------------------------------*
-* Closes the given unit number
-*
-*
-* IOUNIT: Input unit to be assiged to the file
-*
-*----------------------------------------------------------------------*
-*
-      IMPLICIT NONE
-      INTEGER IOUNIT
-
-
-      CLOSE (UNIT=IOUNIT)
-
-      RETURN
- 9999 END
diff --git a/TFluka/Falldlt.h b/TFluka/Falldlt.h
deleted file mode 100644 (file)
index 99bec1d..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#ifndef FALLDLT_H
-#define FALLDLT_H 
-
-#include "cfortran.h"
-#include "Rtypes.h"
-extern "C" {
-//*$ CREATE ALLDLT.ADD
-//*COPY ALLDLT
-//*
-//*=== Alldlt ===========================================================*
-//*
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     Copyright (C) 2005-2006         by        Alfredo Ferrari        *
-//*     All Rights Reserved.                                             *
-//*                                                                      *
-//*                                                                      *
-//*     Include file: alldlt  (ALL DeLTas)  vv                           *
-//*                                                                      *
-//*     Created  on  10 october 2005    by        Alfredo Ferrari        *
-//*                                                INFN - Milan          *
-//*                                                                      *
-//*     Last change on  19-feb-06       by        Alfredo Ferrari        *
-//*                                                                      *
-//*     Included in the following routines:                              *
-//*                                                                      *
-//*              blockmvax/bdtrns.f                                      *
-//*              dedxmvax/dedxfl.f                                       *
-//*              dedxmvax/enion.f                                        *
-//*              dedxmvax/enionf.f                                       *
-//*              emfmvax/ededxf.f                                        *
-//*              emfmvax/emenio.f                                        *
-//*              emfmvax/emfsco.f                                        *
-//*              emfmvax/pdedxf.f                                        *
-//*              kaskadmvax/kaskad.f                                     *
-//*                                                                      *
-//*           Talldl (m) = kinetic energy of the m_th primary electron   *
-//*                        emitted during energy loss fluctuation pro-   *
-//*                        cesses                                        *
-//*               Tallmn = minimum energy of the recorded primary        *
-//*                        electrons
-//*       X/Y/Zalldl (m) = position coord. of the m_th primary electron  *
-//*                        emitted during energy loss fluctuation pro-   *
-//*                        cesses                                        *
-//*
-//*               Nalldl = number of recorded primary electrons          *
-//*               Lalldl = logical flag for primary electrons recording  *
-//*                                                                      *
-//*----------------------------------------------------------------------*
-//*
-//      PARAMETER ( MXALLD = 5000 )
-//*
-//      LOGICAL LALLDL
-//         COMMON / ALLDLT / TALLDL (MXALLD), XALLDL (MXALLD),
-//     &                  YALLDL (MXALLD), ZALLDL (MXALLD),
-//     &                  TALLMN, NALLDL, LALLDL
-//      SAVE / ALLDLT /
-
-    const Int_t mxalld = 5000;
-    typedef struct {
-       Double_t talldl[mxalld];
-       Double_t xalldl[mxalld];
-       Double_t yalldl[mxalld];
-       Double_t zalldl[mxalld];
-       Double_t tallmn;
-       Int_t    nalldl;
-       Int_t    lalldl;
-    } alldltCommon;
-#define ALLDLT COMMON_BLOCK(ALLDLT,alldlt)
-    COMMON_BLOCK_DEF(alldltCommon,ALLDLT);
-}
-
-#endif
diff --git a/TFluka/Fbeamcm.h b/TFluka/Fbeamcm.h
deleted file mode 100644 (file)
index 857e284..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-#ifndef FBEAMCM_H
-#define FBEAMCM_H 1
-
-#include "cfortran.h"
-#include "Rtypes.h"
-extern "C" {
-
-//*=== beam =============================================================*
-//*
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     CoMmon for BEAM properties:                                      *
-//*                                                                      *
-//*        Pbeam  = average beam particle momentum (GeV/c)               *
-//*        Pbmmax = maximum momentum for which tabulations must be       *
-//*                 generated (GeV/c)                                    *
-//*        Dpbeam = beam momentum spread (GeV/c)                         *
-//*        Divbm  = beam angular divergense (mrad)                       *
-//*        Xspot  = beam width in (beam frame) x-direction (cm)          *
-//*        Yspot  = beam width in (beam frame) y-direction (cm)          *
-//*        Xbeam  = beam spot centre (geom frame) x-coordinate (cm)      *
-//*        Ybeam  = beam spot centre (geom frame) y-coordinate (cm)      *
-//*        Zbeam  = beam spot centre (geom frame) z-coordinate (cm)      *
-//*        Ubeam  = beam direction cosine wrt the (beam frame) x-axis    *
-//*        Vbeam  = beam direction cosine wrt the (beam frame) y-axis    *
-//*        Wbeam  = beam direction cosine wrt the (beam frame) z-axis    *
-//*        Ubmpol = beam polarization cosine wrt the (beam frame) x-axis *
-//*        Vbmpol = beam polarization cosine wrt the (beam frame) y-axis *
-//*        Wbmpol = beam polarization cosine wrt the (beam frame) z-axis *
-//*        Polfra = polarization fraction                                *
-//*        Rflood = emission radius for a uniform and isotropic source   *
-//*                 or maximum radius for a cylindrical/spherical volume *
-//*                 source                                               *
-//*        Rvlmax = emission radius for a uniform and isotropic source   *
-//*                 or maximum radius for a cylindrical/spherical volume *
-//*                 source                                               *
-//*        Rvlmin = minimum radius for a cylindrical/spherical volume    *
-//*                 source                                               *
-//*        Dxvlmx = maximum Dx for a cartesian volume source             *
-//*                (particle emitted inside [Xina+Dxvlmn/2,Xina+Dxvlmx/2]*
-//*                 and inside [Xina-Dxvlmx/2, Xina-Dxvlmn/2])           *
-//*        Dxvlmn = minimum Dx for a cartesian volume source             *
-//*        Dyvlmx = maximum Dy for a cartesian volume source             *
-//*                (particle emitted inside [Yina+Dyvlmn/2,Yina+Dyvlmx/2]*
-//*                 and inside [Yina-Dyvlmx/2, Yina-Dyvlmn/2])           *
-//*        Dyvlmn = minimum Dy for a cartesian volume source             *
-//*        Dzvlmx = maximum Dz for a cartesian/cylindrical volume source *
-//*                (particle emitted inside [Zina+Dzvlmn/2,Zina+Dzvlmx/2]*
-//*                 and inside [Zina-Dzvlmx/2, Zina-Dzvlmn/2])           *
-//*        Dzvlmn = minimum Dz for a cartesian/cylindrical volume source *
-//*        Ijbeam = beam particle type (see btype in /paprop/)           *
-//*        Ijhion = heavy ion type if ijbeam = -2                        *
-//*        Ldpgss = true for a gaussian momentum distribution of the     *
-//*                 beam particles, false for a rectangular one          *
-//*        Ldvgss = true for a gaussian angular divergence distribution  *
-//*                 of the beam particles, false for a rectangular one   *
-//*        Ldxgss = true for a gaussian spatial distribution of the beam *
-//*                 spot in the x-direction, false for a rectangular one *
-//*        Ldygss = true for a gaussian spatial distribution of the beam *
-//*                 spot in the y-direction, false for a rectangular one *
-//*        Beawei = weight of the beam particles                         *
-//*        Lbeamc = flag for an annular beam                             *
-//*        Lpperp = flag for polar. perp. to the beam direction          *
-//*        Lpfrac = flag for interpreting the polar. fraction            *
-//*   Bmaxis(j,i) = j_th component of the i_th axis used to define the   *
-//*                 conventional x,y,z beam reference frame              *
-//*!!!!! ATTENTION: in C++ it is the component bmaxis(i,j) !!!!!         *
-//*        Lbaxis = logical flag for using a beam axis frame different   *
-//*                 from the standard one                                *
-//*        Lflood = logical flag for using a uniform and isotropic beam  *
-//*                 source out of a sphere of radius Rflood              *
-//*        Lvlcar = logical flag for using a cartesian   volume source   *
-//*        Lvlcyl = logical flag for using a cylindrical volume source   *
-//*        Lvlsph = logical flag for using a spherical   volume source   *
-//*        Lsourc = logical flag for a user written source routine       *
-//*        Lrdbea = logical flag for a radioactive isotope beam          * 2006.3
-//*                                                                      *
-//*----------------------------------------------------------------------*
-
-typedef struct {
-    Double_t pbeam;
-    Double_t dpbeam;
-    Double_t pbmmax;
-    Double_t divbm;
-    Double_t xspot;
-    Double_t yspot;
-    Double_t xbeam;
-    Double_t ybeam;
-    Double_t zbeam;
-    Double_t ubeam;
-    Double_t vbeam;
-    Double_t wbeam;
-    Double_t ubmpol;
-    Double_t vbmpol;
-    Double_t wbmpol;
-    Double_t polfra;
-    Double_t beawei;
-    Double_t bmaxis[3][3];
-    Double_t rvlmin;
-    Double_t rvlmax;
-    Double_t dxvlmn;
-    Double_t dxvlmx;
-    Double_t dyvlmn;
-    Double_t dyvlmx;
-    Double_t dzvlmn;
-    Double_t dzvlmx;
-    Int_t    ijbeam;
-    Int_t    ijhion;
-    Int_t    ldpgss;
-    Int_t    ldvgss;
-    Int_t    ldxgss;
-    Int_t    ldygss;
-    Int_t    lbeamc;
-    Int_t    lpperp;
-    Int_t    lpfrac;
-    Int_t    lbaxis;
-    Int_t    lflood;
-    Int_t    lvlcar;
-    Int_t    lvlcyl;
-    Int_t    lvlsph;
-    Int_t    lsourc;
-    Int_t    lrdbea; // 2006.3
-} beamcmCommon;
-#define BEAMCM COMMON_BLOCK(BEAMCM,beamcm)
-COMMON_BLOCK_DEF(beamcmCommon,BEAMCM);
-}
-
-#endif
diff --git a/TFluka/Fdblprc.h b/TFluka/Fdblprc.h
deleted file mode 100644 (file)
index 37949b9..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-#ifndef FDBLPRC_H
-#define FDBLPRC_H 1
-
-#include "Rtypes.h"
-#include "cfortran.h"
-extern "C" {
-//*$ create dblprc.add
-//*copy dblprc
-//*                                                                     *
-//*=== dblprc ==========================================================*
-//*                                                                     *
-//*---------------------------------------------------------------------*
-//*                                                                     *
-//*      dblprc: included in any routine, machine, mathematical and     *
-//*              physical constants plus global declarations            *
-//*                                                                     *
-//*  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  *
-//*  !!!! o n   m a c h i n e s   w h e r e   t h e   d o u b l e !!!!  *
-//*  !!!! p r e c i s i o n   i s   n o t   r e q u i r e d  r e -!!!!  *
-//*  !!!! m o v e   t h e   d o u b l e   p r e c i s i o n       !!!!  *
-//*  !!!! s t a t e m e n t,  s e t   k a l g n m = 1   a n d     !!!!  *
-//*  !!!! c h a n g e   a l l   n u m e r i c a l   c o n s -     !!!!  *
-//*  !!!! t a n t s   t o   s i n g l e   p r e c i s i o n       !!!!  *
-//*  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  *
-//*                                                                     *
-//*         kalgnm = real address alignment, 2 for double precision,    *
-//*                  1 for single precision                             *
-//*         kalch8 = character*8 address alignment wrt the precision    *
-//*                  defined by kalgnm (mostly 1 in all situations)     *
-//*         i2algn = integer*2 address alignment wrt the normal integer *
-//*                  precision (mostly 2, 4 for 64 bit integers)        *
-//*         anglgb = this parameter should be set equal to the machine  *
-//*                  "zero" with respect to unit                        *
-//*         anglsq = this parameter should be set equal to the square   *
-//*                  of anglgb                                          *
-//*         axcssv = this parameter should be set equal to the number   *
-//*                  for which unity is negligible for the machine      *
-//*                  accuracy                                           *
-//*         andrfl = "underflow" of the machine for floating point      *
-//*                  operation                                          *
-//*         avrflw = "overflow"  of the machine for floating point      *
-//*                  operation                                          *
-//*         ainfnt = code "infinite"                                    *
-//*         azrzrz = code "zero"                                        *
-//*         einfnt = natural logarithm of the code "infinite"           *
-//*         ezrzrz = natural logarithm of the code "zero"               *
-//*         excssv = natural logarithm of the code number for which     *
-//*                  unit is negligible                                 *
-//*         englgb = natural logarithm of the code "zero" with respect  *
-//*                  to unit                                            *
-//*         onemns = 1- of the machine, it is 1 - 2 x anglgb            *
-//*         onepls = 1+ of the machine, it is 1 + 2 x anglgb            *
-//*         csnnrm = maximum tolerable error on cosine normalization,   *
-//*                  u**2+v**2+w**2: assuming a typical anglgb relative *
-//*                  error on each component we would get 2xanglgb: use *
-//*                  4xanglgb to avoid too many normalizations          *
-//*         dmxtrn = "infinite" distance for transport (cm)             *
-//*         rhflmn = minimal density for fluka (g/cm^3)                 *
-//*                                                                     *
-//*   "global" declarations:                                            *
-//*         lfluka = set to true for a real (full) fluka run            *
-//*         lgbias = set to true for a fully biased run                 *
-//*         lgbana = set to true for a fully analogue run               *
-//*         lflgeo = set to true when using the standard fluka geometry *
-//*         loflts = set to true for special off-line testing of speci- *
-//*                  fic routines                                       *
-//*         lusrin = set to true if the user dependent initialization   *
-//*                  routine usrini has been called at least once       *
-//*         lnmgeo = set to true for a name-base geometry input         *
-//*         lnminp = set to true for a name-base fluka input            *
-//*         Lfrfmt = set to true for a free-format based Fluka input    *
-//*         lfdrtr = set to true for going in/out feeder/flukam at each *
-//*                  event                                              *
-//*                                                                     *
-//*---------------------------------------------------------------------*
-//*                                                                     *
-const Int_t kalgnm = 2;
-const Int_t kalch8 = 1;
-const Int_t i2algn = 2;
-const Double_t anglgb = 5.0e-16;
-const Double_t anglsq = 2.5e-31;
-const Double_t axcssv = 0.2e+16;
-const Double_t andrfl = 1.0e-38;
-const Double_t avrflw = 1.0e+38;
-const Double_t ainfnt = 1.0e+30;
-const Double_t azrzrz = 1.0e-30;
-const Double_t einfnt = +69.07755278982137e+00;
-const Double_t ezrzrz = -69.07755278982137e+00;
-const Double_t excssv = +35.23192357547063e+00;
-const Double_t englgb = -35.23192357547063e+00;
-const Double_t onemns = 0.999999999999999e+00;
-const Double_t onepls = 1.000000000000001e+00;
-const Double_t csnnrm = 2.0e-15;
-const Double_t dmxtrn = 1.0e+08;
-const Double_t rhflmn = 1.0e-10;
-//*
-//*======================================================================*
-//*======================================================================*
-//*=========                                                   ==========*
-//*=========    m a t h e m a t i c a l   c o n s t a n t s    ==========*
-//*=========                                                   ==========*
-//*======================================================================*
-//*======================================================================*
-//*                                                                      *
-//*   numerical constants (single precision):                            *
-//*                                                                      *
-//*         zersng = 0                                                   *
-//*                                                                      *
-//*   numerical constants (double precision):                            *
-//*                                                                      *
-//*         zerzer = 0                                                   *
-//*         oneone = 1                                                   *
-//*         twotwo = 2                                                   *
-//*         thrthr = 3                                                   *
-//*         foufou = 4                                                   *
-//*         fivfiv = 5                                                   *
-//*         sixsix = 6                                                   *
-//*         sevsev = 7                                                   *
-//*         eigeig = 8                                                   *
-//*         aninen = 9                                                   *
-//*         tenten = 10                                                  *
-//*         eleven = 11                                                  *
-//*         twelve = 12                                                  *
-//*         fiften = 15                                                  *
-//*         sixten = 16                                                  *
-//*         hlfhlf = 1/2                                                 *
-//*         onethi = 1/3                                                 *
-//*         onefou = 1/4                                                 *
-//*         onefiv = 1/5                                                 *
-//*         onesix = 1/6                                                 *
-//*         onesev = 1/7                                                 *
-//*         oneeig = 1/8                                                 *
-//*         twothi = 2/3                                                 *
-//*         thrfou = 3/4                                                 *
-//*         thrtwo = 3/2                                                 *
-//*         two2o3 = 2^2/3                                               *
-//*         pipipi = circumference / diameter                            *
-//*         twopip = 2 x pipipi                                          *
-//*         pip5o2 = 5/2 x pipipi                                        *
-//*         pipisq = pipipi x pipipi                                     *
-//*         pihalf = 1/2 x pipipi                                        *
-//*         erfa00 = erf (oo) = 1/2 x square root of pi                  *
-//*         sqtwpi = square root of 2xpi                                 *
-//*         eulero = eulero's constant                                   *
-//*         eulexp = exp ( eulero )                                      *
-//*         e1m2eu = exp ( 1 - 2 eulero )                                *
-//*         eneper = "e", base of natural logarithm                      *
-//*         sqrent = square root of "e"                                  *
-//*         sqrtwo = square root of  2                                   *
-//*         sqrthr = square root of  3                                   *
-//*         sqrfiv = square root of  5                                   *
-//*         sqrsix = square root of  6                                   *
-//*         sqrsev = square root of  7                                   *
-//*         sqrt12 = square root of 12                                   *
-//*         s2fwhm = 2 x square root of 2 x logarithm of 2               *
-//*                                                                      *
-//*----------------------------------------------------------------------*
-//*
-    const Float_t  zersng = 0.e+00;
-    const Double_t zerzer = 0.e+00;
-    const Double_t oneone = 1.e+00;
-    const Double_t twotwo = 2.e+00;
-    const Double_t thrthr = 3.e+00;
-    const Double_t foufou = 4.e+00;
-    const Double_t fivfiv = 5.e+00;
-    const Double_t sixsix = 6.e+00;
-    const Double_t sevsev = 7.e+00;
-    const Double_t eigeig = 8.e+00;
-    const Double_t aninen = 9.e+00;
-    const Double_t tenten = 10.e+00;
-    const Double_t eleven = 11.e+00;
-    const Double_t twelve = 12.e+00;
-    const Double_t fiften = 15.e+00;
-    const Double_t sixten = 16.e+00;
-    const Double_t hlfhlf = 0.5e+00;
-    const Double_t onethi = oneone/thrthr;
-    const Double_t onefou = oneone/foufou;
-    const Double_t onefiv = oneone/fivfiv;
-    const Double_t onesix = oneone/sixsix;
-    const Double_t onesev = oneone/sevsev;
-    const Double_t oneeig = oneone/eigeig;
-    const Double_t twothi = twotwo/thrthr;
-    const Double_t thrfou = thrthr/foufou;
-    const Double_t thrtwo = thrthr/twotwo;
-    const Double_t fouthr = foufou/thrthr;    
-    const Double_t pipipi = 3.141592653589793238462643383279e+00;
-    const Double_t two2o3 = 1.587401051968199e+00; // 2006.3
-    const Double_t twopip = 6.283185307179586476925286766559e+00;
-    const Double_t pip5o2 = 7.853981633974483096156608458199e+00;
-    const Double_t pipisq = 9.869604401089358618834490999876e+00;
-    const Double_t pihalf = 1.570796326794896619231321691640e+00;
-    const Double_t erfa00 = 0.886226925452758013649083741671e+00;
-    const Double_t sqrtpi = 1.772453850905516027298167483341e+00;
-    const Double_t sqtwpi = 2.506628274631000502415765284811e+00;
-    const Double_t eulero = 0.577215664901532860606512e+00;
-    const Double_t eulexp = 1.781072417990197985236504e+00;
-    const Double_t eullog = -0.5495393129816448223376619e+00;
-    const Double_t e1m2eu = 0.8569023337737540831433017e+00;
-    const Double_t eneper = 2.718281828459045235360287471353e+00;
-    const Double_t sqrent = 1.648721270700128146848650787814e+00;
-    const Double_t sqrtwo = 1.414213562373095048801688724210e+00;
-    const Double_t sqrthr = 1.732050807568877293527446341506e+00;
-    const Double_t sqrfiv = 2.236067977499789696409173668731e+00;
-    const Double_t sqrsix = 2.449489742783178098197284074706e+00;
-    const Double_t sqrsev = 2.645751311064590590501615753639e+00;
-    const Double_t sqrt12 = 3.464101615137754587054892683012e+00;
-    const Double_t s2fwhm = 2.354820045030949e+00;
-    const Double_t twolog = 0.693147180559945309417232121458e+00;
-//*
-//*======================================================================*
-//*======================================================================*
-//*=========                                                   ==========*
-//*=========       p h y s i c a l   c o n s t a n t s         ==========*
-//*=========                                                   ==========*
-//*======================================================================*
-//*======================================================================*
-//*                                                                      *
-//*   primary constants:                                                 *
-//*                                                                      *
-//*         clight = speed of light in cm s-1                            *
-//*         avogad = avogadro number                                     *
-//*         boltzm = k boltzmann constant (j k-1)                        *
-//*         amelgr = electron mass (g)                                   *
-//*         plckbr = reduced planck constant (erg s)                     *
-//*         elccgs = elementary charge (cgs unit)                        *
-//*         elcmks = elementary charge (mks unit)                        *
-//*         epsil0 = vacuum dielectric constant (MKS unit)               *
-//*         amugrm = atomic mass unit (g)                                *
-//*         ammumu = muon    mass (amu)                                  *
-//*         amprmu = proton  mass (amu)                                  *
-//*         amnemu = neutron mass (amu)                                  *
-//*                                                                      * //*          Note:                                                       *
-//*          e[MKS]^2/ (4 pi epsilon0 hbar[MKS] c[MKS]) = alpha = 1/137  *
-//*          e[CGS]^2/ (hbar[CGS] c[CGS]) = alpha = 1/137                *
-//*          with c[MKs] = 10^-2 c[CGS], hbar[MKS] = 10^-7 hbar[CGS]     *
-//*   derived constants:                                                 *
-//*                                                                      *
-//*         alpfsc = fine structure constant  = e^2/(hbar c) (cgs units) *
-//*         amelct = electron mass (gev) = 10^-16amelgr clight^2 / elcmks*
-//*         amugev = atomic mass unit (gev) = 10^-16amugrm clight^2      *
-//*                                           / elcmks                   *
-//*         ammuon = muon    mass (gev) = ammumu * amugev                *
-//*         amprtn = proton  mass (gev) = amprmu * amugev                *
-//*         amntrn = neutron mass (gev) = amnemu * amugev                *
-//*         amdeut = deuteron mass (gev)                                 *
-//*         amalph = alpha    mass (gev) (derived from the excess mass   *
-//*                  and an (approximate) atomic binding not a really    *
-//*                  measured constant)                                  *
-//*         cougfm = e^2 (gev fm) = elccgs^2 / elcmks * 10^-7 * 10^-9    *
-//*                * 10^13 (10^..=erg cm->joule cm->gev cm->gev fm       *
-//*                it is equal to 0.00144 gev fm                         *
-//*         fscto2 = (fine structure constant)^2                         *
-//*         fscto3 = (fine structure constant)^3                         *
-//*         fscto4 = (fine structure constant)^4                         *
-//*         plabrc = reduced planck constant times the light velocity    *
-//*                  expressed in gev fm                                 *
-//*         rclsel = classical electron radius (cm) = e^2 / (m_e c^2)    *
-//*         bltzmn = k boltzmann constant in gev k-1                     *
-//*         a0bohr = bohr radius, hbar^2 / ( m_e e^2) (fm) = plabrc**2   *
-//*                / amelct / cougfm, or equivalently,                   *
-//*                plabrc / alpfsc / amelct                              *
-//*         gfohb3 = fermi constant, g_f/(hbar c)^3, in gev^-2           *
-//*         gfermi = fermi constant in gev fm^3                          *
-//*         sin2tw = sin^2 theta_weinberg                                *
-//*         prmgnm = proton  magnetic moment (magneton)                  *
-//*         anmgnm = neutron magnetic moment (magneton)                  *
-//*         s0thms = sigma_0 Thomson, 8/3 pi r_e^2 (mb)                  *
-//*                                                                      *
-//*   astronomical constants:                                            *
-//*                                                                      *
-//*         rearth = earth equatorial radius (cm)                        *
-//*         auastu = astronomical unit       (cm)                        *
-//*                                                                      *
-//*   conversion constants:                                              *
-//*                                                                      *
-//*         gevmev = from gev to mev                                     *
-//*         emvgev = from mev to gev                                     *
-//*         gev2ev = from gev to  ev                                     *
-//*         ev2gev = from ev  to gev                                     *
-//*         algvmv = from gev to mev, log                                *
-//*         raddeg = from radians to degrees                             *
-//*         degrad = from degrees to radians                             *
-//*         gevomg = from (photon) energy [gev] in 2pi x frequency [s^-1]*
-//*         cmq2mb = from square centimetres to millibarns               *
-//*                                                                      *
-//*   useful constants:                                                  *
-//*                                                                      *
-//*         fertho = constant to be used in the fermi-thomas approxima-  *
-//*                  ted expression for atomic binding energies          *
-//*         expebn = exponent to be used in the fermi-thomas approxima-  *
-//*                  ted expression for atomic binding energies          *
-//*                    b_atomic (z) = fertho x z^expebn (gev)            *
-//*         bexc12 = fermi-thomas approximated expression for 12-c ato-  *
-//*                  mic binding energies (gev)                          *
-//*         amunmu = difference between the atomic and nuclear mass units*
-//*         amuc12 = "nuclear" mass unit = 1/12 m_nucl (12-c),           *
-//*                  m_nucl (12-c) = m_atom (12-c) - 6 m_e + b_atom(12-c)*
-//*                                                                      *
-//*----------------------------------------------------------------------*
-//*
-    const Double_t clight = 2.99792458e+10;
-    const Double_t avogad = 6.0221367e+23;
-    const Double_t boltzm = 1.380658e-23;
-    const Double_t amelgr = 9.1093897e-28;
-    const Double_t plckbr = 1.05457266e-27;
-    const Double_t elccgs = 4.8032068e-10;
-    const Double_t elcmks = 1.60217733e-19;
-    const Double_t epsil0 = 8.854187817e-12; // 2006.3
-    const Double_t amugrm = 1.6605402e-24;
-    const Double_t ammumu = 0.113428913e+00;
-    const Double_t amprmu = 1.007276470e+00;
-    const Double_t amnemu = 1.008664904e+00;
-//* const Double_t alpfsc = 1.e+00 / 137.035989561e+00
-//* const Double_t fscto2 = alpfsc * alpfsc
-//* const Double_t fscto3 = fscto2 * alpfsc
-//* const Double_t fscto4 = fscto3 * alpfsc
-//*    it is important to set the electron mass exactly with the same
-//*    rounding as in the mass tables, so use the explicit expression
-//* const Double_t amelct = 1.e-16 * amelgr * clight * clight / elcmks
-//*    it is important to set the amu mass exactly with the same
-//*    rounding as in the mass tables, so use the explicit expression
-//* const Double_t amugev = 1.e-16 * amugrm * clight * clight / elcmks
-//*    it is important to set the muon,proton,neutron masses exactly with
-//*    the same rounding as in the mass tables, so use the explicit
-//*    expression
-//* const Double_t ammuon = ammumu * amugev
-//* const Double_t amprtn = amprmu * amugev
-//* const Double_t amntrn = amnemu * amugev
-//* const Double_t rclsel = elccgs * elccgs / clight / clight / amelgr
-//* const Double_t bltzmn = boltzm / elcmks * 1.e-09
-const Double_t alpfsc = 7.2973530791728595e-3;
-const Double_t fscto2 = 5.3251361962113614e-5;
-const Double_t fscto3 = 3.8859399018437826e-7;
-const Double_t fscto4 = 2.8357075508200407e-9;
-const Double_t plabrc = 0.197327053e+00;
-const Double_t amelct = 0.51099906e-3;
-const Double_t amugev = 0.93149432e+00;
-const Double_t ammuon = 0.105658389e+00;
-const Double_t amprtn = 0.93827231e+00;
-const Double_t amntrn = 0.93956563e+00;
-const Double_t amdeut = 1.87561339e+00;
-const Double_t amalph = 3.72738025692891e+00;
-const Double_t cougfm = elccgs*elccgs/elcmks*(1.e-7)*(1.e+13)*(1.e-9);
-const Double_t rclsel = 2.8179409183694872e-13;
-const Double_t alamb0 = twotwo * pipipi * rclsel / alpfsc;
-const Double_t bltzmn = 8.617385e-14;
-const Double_t a0bohr = plabrc/alpfsc/amelct;
-const Double_t gfohb3 = 1.16639e-5;
-const Double_t gfermi = gfohb3*plabrc*plabrc*plabrc;
-const Double_t sin2tw = 0.2319e+00;
-const Double_t prmgnm = 2.792847386e+00;
-const Double_t anmgnm = -1.91304275e+00;
-const Double_t rearth = 6.378140e+8;
-const Double_t auastu = 1.4959787066e+13;
-const Double_t gevmev = 1.0e+3;
-const Double_t ev2gev = 1.0e-9;
-const Double_t gev2ev = 1.0e+9;
-const Double_t emvgev = 1.0e-3;
-const Double_t cmq2mb = 1.0e+27;
-const Double_t fmb2ba = 1.0e-3;
-const Double_t bar2mb = 1.0e+3;
-const Double_t fmb2fs = 1.0e-1;
-const Double_t fms2mb = 1.0e+1;
-const Double_t algvmv = 6.90775527898214e+00;
-const Double_t raddeg = (180.e+00)/pipipi;
-const Double_t degrad = pipipi/(180.e+00);
-const Double_t gevomg = clight*(1.e+13)/plabrc;
-const Double_t s0thms = eigeig / thrthr * pipipi * rclsel * rclsel * cmq2mb;
-//*  old Fermi-Thomas parametrization of atomic binding energies:
-//*     const Double_t fertho = 15.73       e-9
-//*     const Double_t expebn = 7.e+00 / 3.e+00
-//*     const Double_t bexc12 = fertho * 65.41634134195703e+00
-//*  new Fermi-Thomas parametrization of atomic binding energies:
-const Double_t fertho = 14.33e-9;
-const Double_t expebn = 2.39e+00;
-const Double_t bexc12 = fertho*72.40715579499394e+00;
-const Double_t amunmu = hlfhlf*amelct-bexc12/12.e+00;
-const Double_t amuc12 = amugev-amunmu;
-//*  Old MeV units:
-const Double_t amemev = gevmev * amelct;
-//*
-
-typedef struct {
-    Int_t    lfluka;
-    Int_t    lgbias;
-    Int_t    lgbana;
-    Int_t    lflgeo;
-    Int_t    loflts;
-    Int_t    lusrin;
-    Int_t    lusrgl; // 2006.3
-    Int_t    lnmgeo;
-    Int_t    lnminp;
-    Int_t    lfrfmt;
-    Int_t    lfdrtr;
-    Int_t    kflgeo;
-    Int_t    kfldnr;
-} globalCommon;
-#define GLOBAL COMMON_BLOCK(GLOBAL,global)
-COMMON_BLOCK_DEF(globalCommon,GLOBAL);
-}
-
-#endif
diff --git a/TFluka/Fdimpar.h b/TFluka/Fdimpar.h
deleted file mode 100644 (file)
index 6843be1..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-#ifndef FDIMPAR_H
-#define FDIMPAR_H
-
-#include "cfortran.h"
-#include "Rtypes.h"
-extern "C" {
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*      DIMPAR: included in any routine                                 *
-//*                                                                      *
-//*          Mxxrgn = maximum number of regions                          *
-//*          Mxxmdf = maximum number of media in Fluka                   *
-//*          Mxxmde = maximum number of media in Emf                     *
-//*          Mfstck = stack dimension in Fluka                           *
-//*          Mestck = stack dimension in Emf                             *
-//*          Mostck = stack dimension for optical photons                *
-//*          Mxprsn = secondary stack dimension for resonance generator  *
-//*          Mxpdpm = secondary stack dimension for DPM generators       *
-//*          Mxpscs = secondary stack dimension overall                  *
-//*          Mxoutu = maximum number of output units                     *
-//*          Nallwp = number of allowed particles                        *
-//*          Nelemx = number of maximum allowed elements of a compound   *
-//*                   or mixture                                         *
-//*          Mpdpdx = number of particle types for which EM dE/dx pro-   *
-//*                   cesses (ion,pair,bremss) have to be computed       *
-//*          Mxhttr = maximum number of (hit) target nucleons for a      *
-//*                   given collision generation                         *
-//*          Icomax = maximum number of materials for compounds/mixtures *
-//*                  (equal to the sum of the number of materials for    *
-//*                   every compound/mixture)                            *
-//*          Ichmax = maximum number of harmonic oscillator levels for   *
-//*                   compounds/mixtures (equal to the sum of the number *
-//*                   of harmonic oscillator levels for every compound   *
-//*                   /mixture)                                          *
-//*          Nstbis = number of stable isotopes recorded in common iso-  *
-//*                   top                                                *
-//*          Nqstis = number of "quasi" stable isotopes which are not    *
-//*                   in the standard isotopic composition of a given    *
-//*                   element, but for which special data (like GDR data)*
-//*                   are anyway available                               *
-//*          Ntstis = total number of stable ans "quasi" stable isotopes *
-//*          Mxpabl = number of resonances inside Hadrin common blocks   *
-//*          Idmaxp = number of particles/resonances defined in common   *
-//*                   part                                               *
-//*          Idmxdc = number of particles/resonances decay channels      *
-//*                   defined in common decayc                           *
-//*          Ihypmx = maximum number of hyperons in a hypernucleus       *
-//*          Mkbmx1 = dimension for KWB real spare array in Fluka Stack  *
-//*          Mkbmx2 = dimension for KWB int. spare array in Fluka Stack  *
-//*          Mxirrd = maximum number of irradiation sub-intervals        *
-//*          Mxtrdc = maximum number of decay (cooling) times            *
-//*          Nktl   = overall dimension parameter for EMF bremsstrahlung *
-//*                                                                      *
-//*----------------------------------------------------------------------*   
-
-    const Int_t mxxrgn = 20000;
-//    const Int_t mxxmdf = 510;
-//    const Int_t mxxmde = 502;
-    const Int_t mxxmdf = 710;   // 2006.3
-    const Int_t mxxmde = 702;   // 2006.3
-    const Int_t mfstck = 6500;
-    const Int_t mestck = 100;
-    const Int_t mostck = 2000;
-    const Int_t mxprsn = 100;
-    const Int_t mxpdpm = 800;
-    const Int_t mxpscs = 4999;
-    const Int_t mxoutu = 50;
-    const Int_t nallwp = 64;
-    const Int_t nelemx = 80;
-    const Int_t mpdpdx = 18;
-    const Int_t mxhttr = 260;
-    const Int_t mxseax = 20;         // 2006.3
-    const Int_t mxhtnc = mxseax + 1; // 2006.3
-//    const Int_t icomax = 1000;
-    const Int_t icomax = 2400; // 2006.3   
-    const Int_t ichmax = icomax+mxxmdf;
-    const Int_t nstbis = 304;
-    const Int_t nqstis = 46;
-    const Int_t ntstis = nstbis + nqstis;
-    
-//* till 3-aug-99:
-//*     const Int_t mxpabl =  110;
-    const Int_t mxpabl = 120;
-    const Int_t idmaxp = 450;
-    const Int_t idmxdc = 2000;
-    const Int_t mxmcin = 410;
-    const Int_t ihypmx = 4;
-//* till 19-jul-2000:
-//*     const Int_t mkbmx1 =    9;
-//*     const Int_t mkbmx2 =    3;
-    const Int_t mkbmx1 = 11;
-    const Int_t mkbmx2 = 11;
-    const Int_t mxirrd = 500;
-    const Int_t mxtrdc = 500;
-    const Int_t nktl   = 17;
-}
-
-#endif
diff --git a/TFluka/Fdpdxcm.h b/TFluka/Fdpdxcm.h
deleted file mode 100644 (file)
index 2a3cedb..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-#include "cfortran.h"
-#include "Rtypes.h"
-
-#include "Fdimpar.h"
-
-extern "C" {
-/*$ CREATE DPDXCM.ADD
-*COPY DPDXCM
-*
-*=== dpdxcm ===========================================================*
-*
-*----------------------------------------------------------------------*
-*                                                                      *
-*     Copyright (C) 1989-2006         by        Alfredo Ferrari        *
-*     All Rights Reserved.                                             *
-*                                                                      *
-*                                                                      *
-*     Include file: dpdxcm  (DP/DX CoMmon)                             *
-*                                                                      *
-*     Created  on  10 february 1991   by        Alfredo Ferrari        *
-*                                                INFN - Milan          *
-*                                                                      *
-*     Last change on  21-may-06       by        Alfredo Ferrari        *
-*                                                                      *
-*     Included in the following routines:                              *
-*                                                                      *
-*              blockmvax/bdtrns.f                                      *
-*              dedxmvax/dedsdv.f                                       *
-*              dedxmvax/dedx.f                                         *
-*              dedxmvax/dedxfl.f                                       *
-*              dedxmvax/deltad.f                                       *
-*              dedxmvax/deltar.f                                       *
-*              dedxmvax/deltas.f                                       *
-*              dedxmvax/delthr.f                                       *
-*              dedxmvax/delths.f                                       *
-*              dedxmvax/dpdx.f                                         *
-*              dedxmvax/dpdxio.f                                       *
-*              dedxmvax/enion.f                                        *
-*              dedxmvax/enionf.f                                       *
-*              dedxmvax/gdedxc.f                                       *
-*              dedxmvax/heabre.f                                       *
-*              dedxmvax/hosufl.f                                       *
-*              dedxmvax/hvbrem.f                                       *
-*              dedxmvax/hvpair.f                                       *
-*              dedxmvax/t0zffc.f                                       *
-*              elsmvax/sigtab.f                                        *
-*              emfmvax/ededxf.f                                        *
-*              emfmvax/emfin.f                                         *
-*              emfmvax/emfret.f                                        *
-*              emfmvax/emfsco.f                                        *
-*              emfmvax/emfstp.f                                        *
-*              emfmvax/pdedxf.f                                        *
-*              kaskadmvax/hmsnsc.f                                     *
-*              kaskadmvax/kashea.f                                     *
-*              kaskadmvax/kaskad.f                                     *
-*              kaskadmvax/mulhad.f                                     *
-*              kaskadmvax/omegah.f                                     *
-*              kaskadmvax/sgttot.f                                     *
-*              kaskadmvax/stepop.f                                     *
-*              mainmvax/deflts.f                                       *
-*              mainmvax/dltcrd.f                                       *
-*              mainmvax/matcrd.f                                       *
-*              mainmvax/zeroin.f                                       *
-*                                                                      *
-*           Avionp (m) = average ionization potential (eV) of medium m *
-*           Ccster (m) = Sternheimer cbar   parameter for medium m     *
-*           X0ster (m) = Sternheimer x0     parameter for medium m     *
-*           Xester (m) = Sternheimer x1     parameter for medium m     *
-*           Amster (m) = Sternheimer m      parameter for medium m     *
-*           Aaster (m) = Sternheimer a      parameter for medium m     *
-*           D0ster (m) = Sternheimer delta0 parameter for medium m     *
-*           Aviont (m) = auxiliary ionization potential of medium m    *
-*           T0dpdx (m) = delta ray production threshold of medium m    *
-*                        (all particle but e+/e-)                      *
-*           Tedpdx (m) = delta ray production threshold of medium m    *
-*                        (electrons and positrons)                     *
-*           Gaspfl (m) = pressure (atm) if a gas                       *
-*           Pthrmx     = maximum momentum of the tabulations           *
-*           Anpicm (m) = average number of primary ionization per cm   *
-*                        for a mip for medium m (at NTP for a gas)     *
-*           Frstip (m) = first ionization potential for medium m (GeV) *
-*           Faltmt (m) = density modifying factor for a possible alt-  *
-*                        ernate material for medium m                  *
-*           Maltmt (m) = alternate material for medium m               *
-*           Msdpdx (m) = possible "special material" flag for medium m *
-*                        0: no special treatment                       *
-*                        1: implicit delta production down to Avionr   *
-*                           inside ..dedxf.. routines with recording   *
-*                           of the selected values activated           *
-*----------------------------------------------------------------------*
-*
-      PARAMETER ( MNDPDX = 50 )
-      PARAMETER ( RMDPDX = 1.15D+00 )
-      PARAMETER ( DPDXR1 = 0.15D+00 )
-      PARAMETER ( DPDXR2 = 0.70D+00 )
-      PARAMETER ( ERDEDX = 0.15D+00 * 0.15D+00 )
-      PARAMETER ( MDPDXH =  4 )
-*  Toln10 = 2 x log (10)
-      PARAMETER ( TOLN10 = 4.605170185988091 D+00 )
-*
-      LOGICAL LDELTA, LPDETB, LETFUN
-      COMMON / DPDXCM / P0DPDX (MPDPDX,MXXMDF), P1DPDX (MPDPDX,MXXMDF),
-     &                  TMDPDX (MXXMDF), T0DPDX (MXXMDF),
-     &                  TEDPDX (MXXMDF), D0DPDX (MXXMDF),
-     &                  AVIONP (MXXMDF), RHORFL (MXXMDF),
-     &                  GASPFL (MXXMDF), CCSTER (MXXMDF),
-     &                  AMSTER (MXXMDF), XOSTER (MXXMDF),
-     &                  XESTER (MXXMDF), AASTER (MXXMDF),
-     &                  D0STER (MXXMDF), AVIONT (MXXMDF),
-     &                  ETDPDX (MXXMDF), ALMASS (MPDPDX), PTHRMX,
-     &                  FRSTIP (MXXMDF), ANPICM (MXXMDF),
-     &                  FALTMT (MXXMDF), MALTMT (MXXMDF),
-     &                  MSDPDX (MXXMDF), NBDPDX (MXXMDF),
-     &                  KDPDXT (MPDPDX,MXXMDF),
-     &                  LDELTA (MXXMDF), LPDETB (MXXMDF),
-     &                  IJDPDX (-6:NALLWP), LETFUN
-      SAVE / DPDXCM /
-*/
-
-    const Int_t     mndpdx = 50;
-    const Double_t  rmdpdx = 1.15e0;
-    const Double_t  dpdxr1 = 0.15e0;
-    const Double_t  dpdxr2 = 0.70e0;
-    const Double_t  erdedx = 0.15e0 * 0.15e0;
-    const Int_t     mdpdxh = 4;
-
-    typedef struct {
-       Double_t p0dpdx [mxxmdf][mpdpdx];
-       Double_t p1dpdx [mxxmdf][mpdpdx];
-       Double_t tmdpdx [mxxmdf];
-       Double_t t0dpdx [mxxmdf];
-       Double_t tedpdx [mxxmdf];
-       Double_t d0dpdx [mxxmdf];
-       Double_t avionp [mxxmdf];
-       Double_t rhorfl [mxxmdf];
-       Double_t gaspfl [mxxmdf];
-       Double_t ccster [mxxmdf];
-       Double_t amster [mxxmdf];
-       Double_t xoster [mxxmdf];
-       Double_t xester [mxxmdf];
-       Double_t aaster [mxxmdf];
-       Double_t d0ster [mxxmdf];
-       Double_t aviont [mxxmdf];
-       Double_t etdpdx [mxxmdf];
-       Double_t almass [mpdpdx];
-       Double_t pthrmx;
-       Double_t frstip [mxxmdf];
-       Double_t anpicm [mxxmdf];
-       Double_t faltmt [mxxmdf];
-       Int_t    maltmt [mxxmdf];
-       Int_t    msdpdx [mxxmdf];
-       Int_t    nbdpdx [mxxmdf];
-       Int_t    kdpdxt [mxxmdf][mpdpdx];
-       Int_t    ldelta [mxxmdf];
-       Int_t    lpdetb [mxxmdf];
-       Int_t    ijdpdx [nallwp + 7];
-       Int_t    letfun;
-    } dpdxcmCommon;
-#define DPDXCM COMMON_BLOCK(DPDXCM,dpdxcm)
-COMMON_BLOCK_DEF(dpdxcmCommon, DPDXCM);
-}
diff --git a/TFluka/Fdrawcalls.h b/TFluka/Fdrawcalls.h
deleted file mode 100644 (file)
index b7111bc..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-#include "Rtypes.h"
-//
-// Structure saving parameters of Fluka procedures
-// mgdraw(Int_t& icode, Int_t& mreg)
-// bxdraw(Int_t& icode, Int_t& mreg, Int_t& newreg,
-//        Double_t& xsco, Double_t& ysco, Double_t& zsco)
-// eedraw(Int_t& icode)
-// endraw(Int_t& icode, Int_t& mreg,
-//        Double_t& rull, Double_t& xsco, Double_t& ysco, Double_t& zsco)
-// sogdraw
-// usdraw(Int_t& icode, Int_t& mreg,
-//        Double_t& xsco, Double_t& ysco, Double_t& zsco)
-//
-//*---------------------- icode values ----------------------------------*
-//*                                                                      *
-//*    Icode = 1:  call from Kaskad                                      *
-//*    Icode = 2:  call from Emfsco                                      *
-//*    Icode = 3:  call from Kasneu                                      *
-//*    Icode = 4:  call from Kashea                                      *
-//*    Icode = 5:  call from Kasoph                                      *
-//*                                                                      *
-//*    Boundary- (X) crossing                                            *
-//*    ======================                                            *
-//*    Icode = 1x: call from Kaskad                                      *
-//*    Icode = 19: boundary crossing                                     *
-//*    Icode = 2x: call from Emfsco                                      *
-//*    Icode = 29: boundary crossing                                     *
-//*    Icode = 3x: call from Kasneu                                      *
-//*    Icode = 39: boundary crossing                                     *
-//*    Icode = 4x: call from Kashea                                      *
-//*    Icode = 49: boundary crossing                                     *
-//*    Icode = 59: call from Kasoph                                      *
-//*    Icode = 59: boundary crossing                                     *
-//*                                                                      *
-//*    ENergy deposition DRAWing:                                        *
-//*    =========================                                         *
-//*                                                                      *
-//*     Icode = 1x: call from Kaskad                                     *
-//*             10: elastic interaction recoil                           *
-//*             11: inelastic interaction recoil                         *
-//*             12: stopping particle                                    *
-//*             13: pseudo-neutron deposition                            *
-//*             14: escape                                               *
-//*             15: time kill                                            *
-//*     Icode = 2x: call from Emfsco                                     *
-//*             20: local energy deposition (i.e. photoelectric)         *
-//*             21: below threshold, iarg=1                              *
-//*             22: below threshold, iarg=2                              *
-//*             23: escape                                               *
-//*             24: time kill                                            *
-//*     Icode = 3x: call from Kasneu                                     *
-//*             30: target recoil                                        *
-//*             31: below threshold                                      *
-//*             32: escape                                               *
-//*             33: time kill                                            *
-//*     Icode = 4x: call from Kashea                                     *
-//*             40: escape                                               *
-//*             41: time kill                                            *
-//*     Icode = 5x: call from Kasoph                                     *
-//*             50: optical photon absorption                            *
-//*             51: escape                                               *
-//*             52: time kill                                            *
-//*                                                                      *
-//*     USer dependent DRAWing:                                          *
-//*     ======================                                           *
-//*                                                                      *
-//*     Icode = 10x: call from Kaskad                                    *
-//*             100: elastic   interaction secondaries                   *
-//*             101: inelastic interaction secondaries                   *
-//*             102: particle decay  secondaries                         *
-//*             103: delta ray  generation secondaries                   *
-//*             104: pair production secondaries                         *
-//*             105: bremsstrahlung  secondaries                         *
-//*     Icode = 20x: call from Emfsco                                    *
-//*             208: bremsstrahlung secondaries                          *
-//*             210: Moller secondaries                                  *
-//*             212: Bhabha secondaries                                  *
-//*             214: in-flight annihilation secondaries                  *
-//*             215: annihilation at rest   secondaries                  *
-//*             217: pair production        secondaries                  *
-//*             219: Compton scattering     secondaries                  *
-//*             221: photoelectric          secondaries                  *
-//*             225: Rayleigh scattering    secondaries                  *
-//*     Icode = 30x: call from Kasneu                                    *
-//*             300: interaction secondaries                             *
-//*     Icode = 40x: call from Kashea                                    *
-//*             400: delta ray  generation secondaries                   *
-//*     For all interactions secondaries are put on FINUC common (kp=1,np)
-//*     but for KASHEA delta ray generation where only the secondary     *
-//*     electron is present and stacked on STACK common for kp=lstack    *
-//*                                                                      *
-//*---------------------- end of icode values ---------------------------*
-//
-
-typedef struct {
-   Int_t    icode;
-   Int_t    mreg;
-   Int_t    newreg;
-   Double_t rull;
-   Double_t xsco;
-   Double_t ysco;
-   Double_t zsco;
-} Fdrawcalls;
-
diff --git a/TFluka/Femfrgn.h b/TFluka/Femfrgn.h
deleted file mode 100644 (file)
index 4d7805c..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef FEMFRGN_H
-#define FEMFRGN_H 1
-
-#include "cfortran.h"
-#include "Rtypes.h"
-extern "C" {
-  //*$ CREATE EMFRGN.ADD
-  //*COPY EMFRGN
-  //*
-  //*----------------------------------------------------------------------*
-  //*                                                                      *
-  //*     Common Emfrgn for EMF                                            *
-  //*                                                                      *
-  //*----------------------------------------------------------------------*
-  //*
-  //    COMMON / EMFRGN / ELETHR (MXXRGN), PHOTHR (MXXRGN),
-  //   &                  EMREJE, EMSAMP, EMSNGL,
-  //   &                  MEDEMF (MXXRGN), IRAYLR (MXXRGN), NRGEMF,
-  //   &                  NOSCAT, NOLLDA
-  // OLD EFMRGN:
-  //    COMMON / EFMRGN / RHOR   (MXXRGN), ECUT   (MXXRGN), PCUT (MXXRGN),
-  //   &                  EMREJE, EMSAMP, EMSNGL, VACDST,
-  //   &                  MEDEMF (MXXRGN), IRAYLR (MXXRGN), NRGEMF,
-  //   &                  NOSCAT, NOLLDA
-  //*D === Obsolete variable names === *
-  //*D     DIMENSION MED (MXXRGN)
-  //*D     EQUIVALENCE ( MED (1), MEDEMF (1) )
-typedef struct {
-  Double_t elethr[mxxrgn];
-  Double_t phothr[mxxrgn];
-  Double_t emreje;
-  Double_t emsamp;
-  Double_t emsngl;
-  Int_t    medemf[mxxrgn];
-  Int_t    iraylr[mxxrgn];
-  Int_t    nrgemf;
-  Int_t    noscat;
-  Int_t    nollda;
-} emfrgnCommon;
-
-#define EMFRGN COMMON_BLOCK(EMFRGN,emfrgn)
-COMMON_BLOCK_DEF(emfrgnCommon,EMFRGN);
-}
-
-#endif
diff --git a/TFluka/Femfstk.h b/TFluka/Femfstk.h
deleted file mode 100644 (file)
index b4dfc26..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-#ifndef FEMFSTK
-#define FEMFSTK_H 1
-
-#include "Rtypes.h"
-#include "cfortran.h"
-
-#include "Fdimpar.h"
-extern "C" {
-//*$ create emfstk.add
-//*copy emfstk
-//*
-//*=== emfstk ===========================================================*
-//*
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     common emfstk (emf stack) for emf                                *
-//*                                                                      *
-//*     last change on  08-oct-97    by    alfredo ferrari               *
-//*                                                                      *
-//*----------------------------------------------------------------------*
-//*
-
-typedef struct {
-   Double_t etemf[mestck]; // total energy in MeV
-   Double_t pmemf[mestck];
-   Double_t xemf[mestck]; // particle x-coordinate
-   Double_t yemf[mestck]; // particle y-coordinate
-   Double_t zemf[mestck]; // particle z-coordinate
-   Double_t uemf[mestck]; // x direction cosine
-   Double_t vemf[mestck]; // y direction cosine
-   Double_t wemf[mestck]; // z direction cosine
-   Double_t dnear[mestck]; // equivalent to GEANT "safety"
-   Double_t upol[mestck]; // polarisation in x direction
-   Double_t vpol[mestck]; // polarisation in y direction
-   Double_t wpol[mestck]; // polarisation in z direction
-   Double_t usnrml[mestck];
-   Double_t vsnrml[mestck];
-   Double_t wsnrml[mestck];
-   Double_t wtemf[mestck]; // weight
-   Double_t agemf[mestck]; // age
-   Double_t cmpemf[mestck];
-   Double_t espark[mestck][mkbmx1];
-   Double_t rdlyem[mestck];
-   Int_t    iespak[mestck][mkbmx2];
-   Int_t    ichemf[mestck]; // charge
-   Int_t    iremf[mestck];  // region
-   Int_t    irlatt[mestck]; // lattice cell
-   Int_t    nhpemf[mestck];
-   Int_t    lloemf[mestck]; // generation number
-   Int_t    louemf[mestck];
-   Int_t    lrdemf[mestck];
-   Int_t    npemf;  // number of particles in stack
-   Int_t    npstrt; // EMF stack index before the interaction (since
-                    // the projectile disappears it is also the starting
-                    // index of secondaries)
-//*d === obsolete variable names === *
-//*d     parameter ( idmemf = mestck )
-//*d     dimension e (idmemf), wt (idmemf), iq (idmemf), ir (idmemf)
-//*d     equivalence ( e   (1), etemf  (1) )
-//*d     equivalence ( wt  (1), wtemf  (1) )
-//*d     equivalence ( ir  (1), iremf  (1) )
-//*d     equivalence ( iq  (1), ichemf (1) )
-//*d     equivalence ( np, npemf )
-} emfstkCommon;
-#define EMFSTK COMMON_BLOCK(EMFSTK,emfstk)
-COMMON_BLOCK_DEF(emfstkCommon,EMFSTK);
-}
-#endif
diff --git a/TFluka/Fevtflg.h b/TFluka/Fevtflg.h
deleted file mode 100644 (file)
index 74c5aa5..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-extern "C" {
-//*$ create evtflg.add
-//*copy evtflg
-//*
-//*=== evtflg ===========================================================*
-//*
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     event flags:                                                     *
-//*                                                                      *
-//*     created on    19 may 1998    by    alfredo ferrari & paola sala  *
-//*                                                   infn - milan       *
-//*                                                                      *
-//*     last change on   13-aug-99   by    alfredo ferrari               *
-//*                                                                      *
-//*                                                                      *
-//*----------------------------------------------------------------------*
-//*
-//*
-
-typedef struct {
-   Int_t    lelevt;
-   Int_t    linevt;
-   Int_t    ldecay;
-   Int_t    ldltry;
-   Int_t    lpairp;
-   Int_t    lbrmsp;
-   Int_t    lannrs;
-   Int_t    lannfl;
-   Int_t    lphoel;
-   Int_t    lcmptn;
-   Int_t    lcohsc;
-   Int_t    llensc;
-   Int_t    loppsc;
-   Int_t    leldis;
-   Int_t    lrdcay;
-   Int_t    ntrcks;
-} evtflgCommon;
-#define EVTFLG COMMON_BLOCK(EVTFLG,evtflg)
-COMMON_BLOCK_DEF(evtflgCommon,EVTFLG);
-}
diff --git a/TFluka/Ffheavy.h b/TFluka/Ffheavy.h
deleted file mode 100644 (file)
index 4fb3cb8..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-extern "C" {
-//*$ create fheavy.add
-//*copy fheavy
-//*
-//*=== fheavy ===========================================================*
-//*
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     include file: fheavy                                             *
-//*                                                                      *
-//*     created  on  5 april 1990     by   alfredo ferrari, infn milan   *
-//*                                                                      *
-//*     last change on   26-jul-97    by   alfredo ferrari, infn milan   *
-//*                                                                      *
-//*     included in the following subroutines or functions: not updated  *
-//*                                                                      *
-//*     description of the common block(s) and variable(s)               *
-//*                                                                      *
-//*     /fheavy/ is the storage for heavy secondaries created in the     *
-//*              nuclear evaporation                                     *
-//*        npheav     = number of secondaries                            *
-//*        kheavy(ip) = type of the secondary ip                         *
-//*                   ( 3 = deuteron, 4 = 3-h, 5 = 3-he, 6 = 4-he,       *
-//*                     7-12 = "heavy" fragment specified by ibheav and  *
-//*                     icheav )                                         *
-//*        cxheav(ip) = direction cosine of the secondary ip             *
-//*                     with respect to x-axis                           *
-//*        cyheav(ip) = direction cosine of the secondary ip             *
-//*                     with respect to y-axis                           *
-//*        czheav(ip) = direction cosine of the secondary ip             *
-//*                     with respect to z-axis                           *
-//*        tkheav(ip) = kinetic energy of secondary ip                   *
-//*        pheavy(ip) = momentum of the secondary ip                     *
-//*        wheavy(ip) = weight of the secondary ip                       *
-//*        agheav(ip) = "age" of the secondary ip with respect to the    *
-//*                     interaction time                                 *
-//*        amheav(kp) = atomic masses of the twelve types of evaporated  *
-//*                     or fragmented or fissioned particles             *
-//*        amnhea(kp) = nuclear masses of the twelve types of evaporated *
-//*                     or fragmented or fissioned particles             *
-//*     bhheav(jp,kp) = (nuclear) binding energy of the jp_th hyperon of *
-//*                     the kp-type heavy particle                       *
-//*        anheav(kp) = name of the kp-type heavy particle               *
-//*        icheav(kp) = charge of the kp-type heavy particle             *
-//*        ibheav(kp) = mass number of the kp-type heavy particle        *
-//*        imheav(kp) = isomeric state of the kp-type heavy particle     *
-//*        ihheav(kp) = number of hyperons of the kp-type heavy particle *
-//*     khheav(jp,kp) = id of the jp_th hyperon of the kp-type heavy     *
-//*                     particle                                         *
-//*        infhea(ip) = possible extra infos for the ip_th secondary     * 2006.3
-//*   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   *
-//*   !!! there is now the possibility to produce up to 6 "heavy" !!!!   *
-//*   !!! fragments besides the residual nucleus recorded in      !!!!   *
-//*   !!! resnuc: they are identified by indeces 7-12, of course  !!!!   *
-//*   !!! the corresponding physical properties (z,a,m..) must be !!!!   *
-//*   !!! updated every time they are produced                    !!!!   *
-//*   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   *
-//*----------------------------------------------------------------------*
-//*
-const Int_t mxheav = 100;
-const Int_t kxheav = 30;
-
-typedef struct {
-    Double_t cxheav[mxheav];
-    Double_t cyheav[mxheav];
-    Double_t czheav[mxheav];
-    Double_t tkheav[mxheav];
-    Double_t pheavy[mxheav];
-    Double_t wheavy[mxheav];
-    Double_t agheav[mxheav];
-    Double_t bhheav[kxheav][ihypmx];
-    Double_t amheav[kxheav];
-    Double_t amnhea[kxheav];
-    Int_t    kheavy[mxheav];
-    Int_t    infhea[mxheav]; // 2006.3
-    Int_t    icheav[kxheav];
-    Int_t    ibheav[kxheav];
-    Int_t    imheav[kxheav];
-    Int_t    ihheav[kxheav];
-    Int_t    khheav[kxheav][ihypmx];
-    Int_t    npheav;
-} fheavyCommon;
-#define FHEAVY COMMON_BLOCK(FHEAVY,fheavy)
-COMMON_BLOCK_DEF(fheavyCommon,FHEAVY);
-
-typedef struct {
-   Char_t   anheav[kxheav][8];
-} fheavcCommon;
-#define FHEAVC COMMON_BLOCK(FHEAVC,fheavc)
-COMMON_BLOCK_DEF(fheavcCommon,FHEAVC);
-}
diff --git a/TFluka/Fflkmat.h b/TFluka/Fflkmat.h
deleted file mode 100644 (file)
index 33d2141..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-#include "cfortran.h"
-#include "Rtypes.h"
-
-#include "Fdimpar.h"
-
-extern "C" {
-/*$ CREATE FLKMAT.ADD
-*COPY FLKMAT
-*
-*=== Flkmat ===========================================================*
-*
-*----------------------------------------------------------------------*
-*                                                                      *
-*     Partial (some variables come from FLUKA87)                       *
-*     Copyright (C) 1996-2005      by        Alfredo Ferrari           *
-*     All Rights Reserved.                                             *
-*                                                                      *
-*                                                                      *
-*     FLuKa MATerial properties and atomic data                        *
-*                                                                      *
-*     Version for Fluka91/.../2005/...:                                *
-*                                                                      *
-*     Last change on  28-Apr-05    by  Alfredo Ferrari, INFN-Milan     *
-*                                                                      *
-*                                                                      *
-*     This common contains the basic properties of the materials used  *
-*     in the FLUKA run. Other properties are recorded in specialized   *
-*     commons (ie for dE/dx etc)                                       *
-*                                                                      *
-*     Aocmbm(i) = Atomic density of the i_th material in barn^-1 cm^-1 *
-*                 (Atoms Over Cm times Barn for Materials)             *
-*     Eocmbm(i) = Electron density of the i_th material in barn^-1cm^-1*
-*                 (Atoms Over Cm times Barn for Materials)             *
-*       Amss(i) = Atomic weight (g/mole) of the i_th material          *
-*     Amssem(i) = "Effective" i_th material atomic weight for the para-*
-*                 metrized EM cascade                                  *
-*        Rho(i) = Density of the i_th material                         *
-*       Ztar(i) = Atomic number of the i_th material                   *
-*     Zsqtar(i) = Squared atomic number of the i_th material           *
-*     Ztarem(i) = "Effective" atomic number for the i_th material for  *
-*                 the parametrized EM cascade                          *
-*     Ainlng(i) = Inelastic scattering length of the i_th material     *
-*                 for beam particles at the average beam energy in cm  *
-*     Aellng(i) = Elastic scattering length of the i_th material for   *
-*                 beam particles at average beam energy in cm          *
-*      X0rad(i) = Radiation lengths of the materials in cm             *
-*     Ainnth(i) = Inelastic scattering length of the i_th material     *
-*                 for neutrons at threshold energy in cm               *
-*     Medium(k) = Material number of the k_th region                   *
-*     Mulflg(i) = Flags for multiple scattering options for the i_th   *
-*                 material                                             *
-*      Icomp(i) = Starting address in the Matnum array if the i_th     *
-*                 material is a compound/mixture, 0 otherwise          *
-*     Mssnum(i) = Mass number of the target nucleus for the i_th mater-*
-*                 ial, if =< 0 it means that it is in the natural isot-*
-*                 opic composition                                     *
-*     Msindx(i) = Index for tabulations for the given isotope of the   *
-*                 target nucleus (meaningful only for mssnum > 0)      *
-*                 that it is in the natural isotopic composition       *
-*     Lcmpnd(i) = logical flag for real compounds versus mixtures      *
-*     Matnam(i) = Alphabetical name of the i_th material number        *
-*        Nregs  = total number of regions                              *
-*        Nregcg = total number of combinatorial geometry regions       *
-*        Nmat   = total number of materials used in the problem        *
-*        Mtbsnm = medium for which inelastic interaction biasing must  *
-*                 be done                                              *
-*                                                                      *
-*                        Mxxmdf = maximum number of materials          *
-*                        Mxxrgn = maximum number of regions            *
-*                                                                      *
-*----------------------------------------------------------------------*
-*
-      CHARACTER*8 MATNAM
-      LOGICAL     LCMPND
-      COMMON / FLKMAT / AOCMBM(MXXMDF), EOCMBM(MXXMDF), AMSS  (MXXMDF),
-     &                  AMSSEM(MXXMDF), RHO   (MXXMDF), ZTAR  (MXXMDF),
-     &                  ZTAREM(MXXMDF), ZSQTAR(MXXMDF), AINLNG(MXXMDF),
-     &                  AELLNG(MXXMDF), X0RAD (MXXMDF), AINNTH(MXXMDF),
-     &                  MEDIUM(MXXRGN), MULFLG(MXXMDF), ICOMP (MXXMDF),
-     &                  MSSNUM(MXXMDF), MSINDX(MXXMDF), LCMPND(MXXMDF),
-     &                  NREGS , NMAT  , MTBSNM, NREGCG
-      COMMON / CHFLKM / MATNAM(MXXMDF)
-      SAVE / FLKMAT /
-      SAVE / CHFLKM /
-*/
-
-    typedef struct {
-       Double_t aocmbm[mxxmdf];
-       Double_t eocmbm[mxxmdf];
-       Double_t amss  [mxxmdf];
-       Double_t amssem[mxxmdf];
-       Double_t rho   [mxxmdf];
-       Double_t ztar  [mxxmdf];
-       Double_t ztarem[mxxmdf];
-       Double_t zsqtar[mxxmdf];
-       Double_t ainlng[mxxmdf];
-       Double_t aellng[mxxmdf];
-       Double_t x0rad [mxxmdf];
-       Double_t ainnth[mxxmdf];
-       Int_t    medium[mxxrgn];
-       Int_t    mulflg[mxxmdf];
-       Int_t    icomp [mxxmdf];
-       Int_t    mssnum[mxxmdf];
-       Int_t    msindx[mxxmdf];
-       Int_t    lcmpnd[mxxmdf];
-       Int_t    nregs;
-       Int_t    nmat;
-       Int_t    mtbsnm;
-       Int_t    nregcg;
-    } flkmatCommon;
-#define FLKMAT COMMON_BLOCK(FLKMAT,flkmat)
-    COMMON_BLOCK_DEF(flkmatCommon, FLKMAT);
-}
diff --git a/TFluka/Fflkstk.h b/TFluka/Fflkstk.h
deleted file mode 100644 (file)
index d0ad92e..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-#ifndef FFLKSTK_H
-#define FFLKSTK_H 1
-
-#include "cfortran.h"
-#include "Rtypes.h"
-
-#include "Fdimpar.h"
-
-extern "C" {
-//*$ create flkstk.add
-//*copy flkstk
-//*
-//*=== flkstk ============================================================*
-//*
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     FLUKA90-200x particle stack:                                     *
-//*                                                                      *
-//*     Changes: last change on 15-may-2005   by    Alfredo Ferrari      *
-//*                                                  INFN, Milan         *
-//*                                                                      *
-//*                                                                      *
-//*     description of the common block(s) and variable(s)               *
-//*                                                                      *
-//*     /Flkstk/ stack for the primaries                                  *
-//*        Wtflk  = particle statistical weight                          *
-//*        Pmoflk = particle (laboratory) momentum (GeV/c)               *
-//*        Tkeflk = particle (laboratory) kinetic energy (GeV)           *
-//*        Xflk   = particle position  x-coordinate                      *
-//*        Yflk   = particle position  y-coordinate                      *
-//*        Zflk   = particle position  z-coordinate                      *
-//*        Txflk  = particle direction x-coordinate                      *
-//*        Tyflk  = particle direction y-coordinate                      *
-//*        Tzflk  = particle direction z-coordinate                      *
-//*        Txpol  = x direction cosine of the particle polarization      *
-//*        Typol  = y direction cosine of the particle polarization      *
-//*        Tzpol  = z direction cosine of the particle polarization      *
-//*        Txnor  = x direction cosine of a (possible) surface normal    *
-//*        Tynor  = y direction cosine of a (possible) surface normal    *
-//*        Tznor  = z direction cosine of a (possible) surface normal    *
-//*        Dfnear = distance to the nearest boundary                     *
-//*        Agestk = age of the particle (seconds)                        *
-//*        Aknshr = Kshort component of K0/K0bar                         *
-//*        Frcphn = cross section for force photonuclear interaction (if *
-//*                 < 0), distance to a forced photonuclear interaction  *
-//*                (if > 0)                                              *
-//*        Lfrphn = flag for forced photonuclear interaction             *
-//*        Raddly = delay (s) in production wrt the nominal primary "0"  *
-//*                 time for particle produced in radioactive decays     *
-//*                (i.e. those coming from decays of daughter isotopes), *
-//*                 when in analogue mode, flag for position in the      *
-//*                 activr array when in non-analogue mode               *
-//*        Cmpath = cumulative path travelled by the particle since it   *
-//*                 was produced (cm)                                    *
-//*        Sparek = spare real variables available for K.W.Burn          *
-//*        Ispark = spare integer variables available for K.W.Burn       *
-//*        Iloflk = particle identity (Paprop numbering)                 *
-//*        Igroup = energy group for low energy neutrons                 *
-//*        Loflk  = particle generation                                  *
-//*        Louse  = user flag                                            *
-//*        Nrgflk = particle region number                               *
-//*        Nlattc = particle lattice cell number                         *
-//*        Nhspnt = pointer to the history object (Geant4 geometry)      *
-//*        Nevent = number of the event which created the particle       *
-//*        Numpar = particle number                                      *
-//*        Lraddc = flag for particles generated in radioactive decays   *
-//*        Nparma = largest particle number ever reached                 *
-//*        Nstmax = highest value of the stack pointer ever reached      *
-//*                 in the run                                           *
-//*        Npflka = Fluka stack pointer                                  *
-//*        Nstaol = stack pointer of the last processed particle         *
-//*        Igroun = energy group number of the last processed particle   *
-//*                 if it is a low energy neutron                        *
-//*----------------------------------------------------------------------*
-//*
-
-typedef struct {
-   Double_t xflk[mfstck+1];           //(0:MFSTCK)
-   Double_t yflk[mfstck+1];           //(0:MFSTCK)
-   Double_t zflk[mfstck+1];           //(0:MFSTCK)
-   Double_t txflk[mfstck+1];          //(0:MFSTCK)
-   Double_t tyflk[mfstck+1];          //(0:MFSTCK)
-   Double_t tzflk[mfstck+1];          //(0:MFSTCK)
-   Double_t txpol[mfstck+1];          //(0:MFSTCK)
-   Double_t typol[mfstck+1];          //(0:MFSTCK)
-   Double_t tzpol[mfstck+1];          //(0:MFSTCK)
-   Double_t txnor[mfstck+1];          //(0:MFSTCK)
-   Double_t tynor[mfstck+1];          //(0:MFSTCK)
-   Double_t tznor[mfstck+1];          //(0:MFSTCK)
-   Double_t wtflk[mfstck+1];          //(0:MFSTCK)
-   Double_t pmoflk[mfstck+1];         //(0:MFSTCK)
-   Double_t tkeflk[mfstck+1];         //(0:MFSTCK)
-   Double_t dfnear[mfstck+1];         //(0:MFSTCK)
-   Double_t agestk[mfstck+1];         //(0:MFSTCK)
-   Double_t aknshr[mfstck+1];         //(0:MFSTCK)
-   Double_t raddly[mfstck+1];         //(0:MFSTCK)
-   Double_t cmpath[mfstck+1];         //(0:MFSTCK)
-   Double_t frcphn[mfstck+1];         //(0:MFSTCK)
-   Double_t sparek[mfstck+1][mkbmx1]; //(MKBMX1,0:MFSTCK)
-   Int_t    ispark[mfstck+1][mkbmx2]; //(MKBMX2,0:MFSTCK)
-   Int_t    iloflk[mfstck+1];         //(0:MFSTCK)
-   Int_t    igroup[mfstck+1];         //(0:MFSTCK)
-   Int_t    loflk[mfstck+1];          //(0:MFSTCK)
-   Int_t    louse[mfstck+1];          //(0:MFSTCK)
-   Int_t    nrgflk[mfstck+1];         //(0:MFSTCK)
-   Int_t    nlattc[mfstck+1];         //(0:MFSTCK)
-   Int_t    nhspnt[mfstck+1];         //(0:MFSTCK)
-   Int_t    nevent[mfstck+1];         //(0:MFSTCK)
-   Int_t    numpar[mfstck+1];         //(0:MFSTCK)
-   Int_t    lraddc[mfstck+1];         //(0:MFSTCK)
-   Int_t    lfrphn[mfstck+1];         //(0:MFSTCK)
-   Int_t    nparma;
-   Int_t    nstmax;
-   Int_t    npflka;
-   Int_t    nstaol;
-   Int_t    igroun;
-} flkstkCommon;
-#define FLKSTK COMMON_BLOCK(FLKSTK,flkstk)
-COMMON_BLOCK_DEF(flkstkCommon,FLKSTK);
-}
-
-#endif
diff --git a/TFluka/Fgenstk.h b/TFluka/Fgenstk.h
deleted file mode 100644 (file)
index 3362f8b..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-#ifndef FGENSTK
-#define FGENSTK_H 1
-                                                                                
-#include "Rtypes.h"
-#include "cfortran.h"
-                                                                                
-#include "Fdimpar.h"
-//*$ CREATE GENSTK.ADD
-//*COPY GENSTK
-//*
-//*=== Genstk ===========================================================*
-//*
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     hadron GENerator STacK for FLUKA: (new version of old Finuc of   *
-//*     FLUKA86 by J.Ranft)                                              *
-//*                                                                      *
-//*     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!      *
-//*     !!!!     S E E   A L S O   I N C L U D E   F I L E     !!!!      *
-//*     !!!!                 G E N S T K 2                     !!!!      *
-//*     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!      *
-//*                                                                      *
-//*     Created on  20 january 1996  by    Alfredo Ferrari & Paola Sala  *
-//*                                                   Infn - Milan       *
-//*                                                                      *
-//*     Last change on 15-may-05     by    Alfredo Ferrari               *
-//*                                                                      *
-//*                                                                      *
-//*     /Genstk/ is the storage for secondaries created in hadronic      *
-//*              events                                                  *
-//*        Np        = total number of secondaries                       *
-//*       Kpart (ip) = (Paprop) id of the ip_th secondary                *
-//*         Cxr (ip) = x-axis direction cosine of the ip_th secondary    *
-//*         Cyr (ip) = y-axis direction cosine of the ip_th secondary    *
-//*         Czr (ip) = z-axis direction cosine of the ip_th secondary    *
-//*      Cxrpol (ip) = x-axis direction cosine of the ip_th secondary    *
-//*                    polarization vector (rest frame when applicable)  *
-//*      Cyrpol (ip) = y-axis direction cosine of the ip_th secondary    *
-//*                    polarization vector (rest frame when applicable)  *
-//*      Czrpol (ip) = z-axis direction cosine of the ip_th secondary    *
-//*                    polarization vector (rest frame when applicable)  *
-//*         Tki (ip) = laboratory kinetic energy of ip_th secondary (GeV)*
-//*         Plr (ip) = laboratory momentum of the ip_th secondary (GeV/c)*
-//*         Wei (ip) = statistical weight of the ip_th secondary         *
-//*      Agesec (ip) = "age" of the ip_th secondary with respect to the  *
-//*                    interaction time                                  *
-//*        Tv        = excitation energy (GeV)                           *
-//*        Tvcms     = actual excitation energy of the residual nucleus  *
-//*        Tvrecl    = recoil kinetic energy of the residual nucleus     *
-//*        Tvheav    = recoil kinetic energies of heavy (2-H, 3-H, 3-He, *
-//*                    4-He) fragments after evaporation                 *
-//*        Tvbind    = approximate energy wasted in nuclear binding      *
-//*                    effects (not yet operational)                     *
-//*      Infext (ip) = possible extra infos for the ip_th secondary      * 2006.3
-//*                                                                      *
-//*----------------------------------------------------------------------*
-
-extern "C" {
-const Int_t mxp = mxpscs;
-//*
-
-typedef struct {
-    Double_t cxr[mxp];
-    Double_t cyr[mxp];
-    Double_t czr[mxp];
-    Double_t cxrpol[mxp];
-    Double_t cyrpol[mxp];
-    Double_t czrpol[mxp];
-    Double_t tki[mxp];
-    Double_t plr[mxp];
-    Double_t wei[mxp];
-    Double_t agesec[mxp];
-    Double_t tv;
-    Double_t tvcms;
-    Double_t tvrecl;
-    Double_t tvheav;
-    Double_t tvbind;
-    Int_t    kpart[mxp];
-    Int_t    infext[mxpscs];
-    Int_t    np0;
-    Int_t    np;
-} genstkCommon;
-#define GENSTK COMMON_BLOCK(GENSTK,genstk)
-COMMON_BLOCK_DEF(genstkCommon,GENSTK);
-}
-#endif
diff --git a/TFluka/Fioiocm.h b/TFluka/Fioiocm.h
deleted file mode 100644 (file)
index 21ee0ce..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-#ifndef FIOIOCM_H
-#define FIOIOCM_H
-
-#include "Rtypes.h"
-#include "cfortran.h"
-extern "C" {
-
-/*
-*$ CREATE IOIOCM.ADD
-*COPY IOIOCM
-*
-*=== Ioiocm ===========================================================*
-*
-*----------------------------------------------------------------------*
-*                                                                      *
-*     Copyright (C) 2002-2006      by  Alfredo Ferrari                 *
-*     All Rights Reserved.                                             *
-*                                                                      *
-*                                                                      *
-*     IOn-IOn CoMmon:                                                  *
-*                                                                      *
-*     Ion-Ion collision common for Fluka9x/Fluka200x....:              *
-*                                                                      *
-*     Last change  on  19-apr-06   by  Alfredo Ferrari, INFN-Milan     *
-*                                                                      *
-*     Description of the variable(s):                                  *
-*                                                                      *
-*        Eknion = laboratory kinetic  energy per nucleon  (GeV/amu)    *
-*        Etnion = laboratory total    energy per nucleon  (GeV/amu)    *
-*        Plnion = laboratory momentum        per nucleon  (GeV/c/amu)  *
-*        Eexion = excitation energy of the projectile ion (GeV)        *
-*        T12ion = half life of the projectile ion (for Eexion=0) (s)   *
-*     Matprj(i) = list   of materials used as projectiles              *
-*        Nmatpr = number of materials defined inside Matprj            *
-*        Iproa  = the projectile mass   number                         *
-*        Iproz  = the projectile proton number                         *
-*        Iprom  = the projectile isomer number                         *
-*                                                                      *
-*     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!     *
-*     !!!! Note that the units are GeV/amu --> per unit mass  !!!!     *
-*     !!!! with mass measured in amu (1 amu = Amuc12 GeV)     !!!!     *
-*     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!     *
-*                                                                      *
-*----------------------------------------------------------------------*
-*
-      COMMON / IOIOCM / EKNION, ETNION, PLNION, EEXION, T12ION,
-     &                  MATPRJ (MXXMDF), NMATPR, IPROA , IPROZ , IPROM
-      SAVE / IOIOCM /
-*/
-    typedef struct {
-       Double_t eknion;
-       Double_t etnion;
-       Double_t plnion;
-       Double_t eexion;
-       Double_t t12ion;
-       Int_t    matprj[mxxmdf];
-       Int_t    nmatpr;
-       Int_t    iproa;
-       Int_t    iproz;
-       Int_t    iprom;
-    } ioiocmCommon;
-#define IOIOCM COMMON_BLOCK(IOIOCM,ioiocm)
-COMMON_BLOCK_DEF(ioiocmCommon, IOIOCM);
-
-}
-#endif
diff --git a/TFluka/Fiounit.h b/TFluka/Fiounit.h
deleted file mode 100644 (file)
index 5b11c1a..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-extern "C" {
-//*$ create iounit.add
-//*copy iounit
-//*                                                                      *
-//*=== iounit ===========================================================*
-//*                                                                      *
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*      iounit: included in any routine                                 *
-//*                                                                      *
-//*     created on   01 june 1990    by    alfredo ferrari, infn -milan  *
-//*                                                                      *
-//*     last change on 20-jan-99     by    alfredo ferrari               *
-//*                                                                      *
-//*         lunin  = standard input unit                                 *
-//*         lunout = standard output unit                                *
-//*         lunerr = standard error unit                                 *
-//*         lunber = input file for bertini nuclear data                 *
-//*         lunech = echo file for pegs dat                              *
-//*         lunflu = input file for photoelectric edges and x-ray fluo-  *
-//*                  rescence data                                       *
-//*         lungeo = scratch file for combinatorial geometry             *
-//*         lunpmf = input file for pegs material data                   *
-//*         lunran = output file for the final random number seed        *
-//*         lunxsc = input file for low energy neutron cross sections    *
-//*         lundet = output file for the detect option                   *
-//*         lunray = output file for ray-tracing options                 *
-//*         lunrdb = unit number for reading (extra) auxiliary external  *
-//*                  files to be closed just after reading               *
-//*         lunrd2 = unit number for reading (extra) auxiliary external  *
-//*                  files to be closed just after reading               *
-//*         lunscr = unit number to be used for temporary scratch files  *
-//*         lunpgo = output file for plotgeom                            *
-//*         lunpgs = store (formatted/unformatted) file for plotgeom     *
-//*                                                                      *
-//*----------------------------------------------------------------------*
-//*                                                                      *
-const Int_t lunin = 5;
-//* start_vax_seq
-//*     parameter ( lunout =  6 )
-//* end_vax_seq
-//* start_ibm_seq
-//*     parameter ( lunout =  6 )
-//* end_ibm_seq
-//* start_unix_seq
-const Int_t lunout = 11;
-//* end_unix_seq
-const Int_t lunerr = 15;
-const Int_t lunber = 14;
-const Int_t lunech = 8;
-const Int_t lunflu = 13;
-const Int_t lungeo = 16;
-const Int_t lunpmf = 12;
-const Int_t lunran = 2;
-const Int_t lunxsc = 9;
-const Int_t lundet = 17;
-const Int_t lunray = 10;
-const Int_t lunrdb = 1;
-const Int_t lunrd2 = 18;
-const Int_t lundpm = 19;
-const Int_t lunpgo = 7;
-const Int_t lunpgs = 4;
-const Int_t lunscr = 3;
-}
diff --git a/TFluka/Fltclcm.h b/TFluka/Fltclcm.h
deleted file mode 100644 (file)
index 18a9fa6..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef FLTCLCM_H
-#define FLTCLCM_H 1
-
-#include "cfortran.h"
-#include "Rtypes.h"
-
-extern "C" {
-//*$ create ltclcm.add
-//*copy ltclcm
-//*
-//*=== ltclcm ===========================================================*
-//*
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     lattice cell common:                                             *
-//*                                                                      *
-//*     created on 09 december 1993  by    alfredo ferrari & paola sala  *
-//*                                                   infn - milan       *
-//*                                                                      *
-//*     last change on 10-dec-93     by    alfredo ferrari               *
-//*                                                                      *
-//*                                                                      *
-//*----------------------------------------------------------------------*
-//*
-
-typedef struct {
-   Int_t    mlattc;
-   Int_t    newlat;
-   Int_t    mlatld;
-   Int_t    mlatm1;
-   Int_t    mltsen;
-   Int_t    mltsm1;
-} ltclcmCommon;
-#define LTCLCM COMMON_BLOCK(LTCLCM,ltclcm)
-COMMON_BLOCK_DEF(ltclcmCommon,LTCLCM);
-}
-
-#endif
diff --git a/TFluka/Fopphcm.h b/TFluka/Fopphcm.h
deleted file mode 100644 (file)
index 1cefe37..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-#ifndef FOPPHCM_H
-#define FOPPHCM_H 1
-
-#include "Rtypes.h"
-#include "cfortran.h"
-#include "Fdimpar.h"
-
-extern "C" {
-/*
-*=== Opphcm ===========================================================*
-*
-*----------------------------------------------------------------------*
-*                                                                      *
-*     OPtical PHoton CoMmon:                                           *
-*                                                                      *
-*     Created on 19 september 1997 by    Alfredo Ferrari & Paola Sala  *
-*                                                   Infn - Milan       *
-*                                                                      *
-*     Last change on 11-jan-99     by    Alfredo Ferrari               *
-*                                                                      *
-*       Opphpr (ip,im) = ip_th optical property parameter of the im_th *
-*                        material (non metal)                          *
-*                       ip =                                           *
-*                            1: refraction index                       *
-*                            2: absorption  coeff. (cm^-1)             *
-*                            3: diffusion   coeff. (cm^-1)             *
-*                            4: refraction index 1st derivative        *
-*                            5: absorption 1st derivative              *
-*                            6: diffusion  1st derivative              *
-*                            7: refraction index 2nd derivative        *
-*                            8: absorption 2nd derivative              *
-*                            9: diffusion  2nd derivative              *
-*                           10: refraction index 3rd derivative        *
-*                           11: absorption 3rd derivative              *
-*                           12: diffusion  3rd derivative              *
-*                        metal:                                        *
-*                       ip =                                           *
-*                            1: refraction index (not used)            *
-*                            2: absorption  coeff. (cm^-1) (not used)  *
-*                            3: 1 - reflectivity index                 *
-*                            7: 1 - reflectivity index 1st derivative  *
-*                            9: 1 - reflectivity index 2nd derivative  *
-*                           12: 1 - reflectivity index 3rd derivative  *
-*          Emncer (im) = minimum energy for Cerenkov photon production *
-*                        for im_th medium                              *
-*          Emxcer (im) = maximum energy for Cerenkov photon production *
-*                        for im_th medium                              *
-*          Rmxcer (im) = maximum refractive index in the energy range  *
-*                        of interest for Cerenkov photon production    *
-*                        for im_th medium                              *
-*       Escint (je,im) = energy for je_th scintillation photon produc- *
-*                        tion for im_th medium                         *
-*       Fscint (je,im) = fraction of energy emitted as the je_th scin- *
-*                        tillation photon energy for im_th medium      *
-*       Sscint (je,im) = sensitivity for the je_th scintillation photon*
-*                        energy for im_th medium                       *
-*       Tscint (je,im) = time constant of  je_th scintillation photon  *
-*                        production  for im_th medium                  *
-*          Emntrd (im) = minimum energy for transition radiation photon*
-*                        production for im_th medium                   *
-*          Emxtrd (im) = maximum energy for transition radiation photon*
-*                        production for im_th medium                   *
-*          Wvmnop (im) = minimum wavelength for opt. photon transport  *
-*                        for im_th medium (default: 250 nm)            *
-*          Wvcnop (im) = central wavelength for opt. photon transport  *
-*                        for im_th medium (default: 589 nm, Na D)      *
-*          Wvmxop (im) = maximum wavelength for opt. photon transport  *
-*                        for im_th medium (default: 600 nm)            *
-*          Ommnop (im) = minimum 2pi x freq. for opt. photon transport *
-*                        for im_th medium                              *
-*          Omcnop (im) = central 2pi x freq. for opt. photon transport *
-*                        for im_th medium                              *
-*          Ommxop (im) = maximum 2pi x freq. for opt. photon transport *
-*                        for im_th medium                              *
-*               Wvmnsn = minimum wavelength for opt. photon sensitivity*
-*                        (default:  25 nm)                             *
-*               Wvcnsn = central wavelength for opt. photon sensitivity*
-*                        (default: 589 nm, Na D)                       *
-*               Wvmxsn = maximum wavelength for opt. photon sensitivity*
-*                        for im_th medium (default: 6000 nm)           *
-*               Ommnsn = minimum 2pi x freq. for opt. photon sensiti-  *
-*                        vity                                          *
-*               Omcnsn = central 2pi x freq. for opt. photon sensiti-  *
-*                        vity                                          *
-*               Ommxsn = maximum 2pi x freq. for opt. photon sensiti-  *
-*                        vity                                          *
-*               Opsnmx = maximum of optical photon sensitivity         *
-*          Rghnss (ib) = Roughness parameter for ib_th material-to-ma- *
-*                        terial boundary ib_th                         *
-*          M1rghn (ib) = 1st material of ib_th material-to-material    *
-*                        boundary                                      *
-*          M2rghn (ib) = 2nd material of ib_th material-to-material    *
-*                        boundary                                      *
-*          M1rgbx (ix) = 1st region of ix_th region-to-region special  *
-*                        boundary                                      *
-*          M2rgbx (ix) = 2nd region of ix_th region-to-region special  *
-*                        boundary                                      *
-*          Lopprp (im) = logical flag for optical properties of im_th  *
-*                        material                                      *
-*          Lopmtl (im) = logical flag whether the im_th optical mate-  *
-*                        rial is a metal or not                        *
-*          Lwvopp (im) = logical flag whether optical properties of    *
-*                        im_th material are expressed as a function of *
-*                        wavelength (true) or 2pi x frequency (false). *
-*                        By default it is true.                        *
-*               Lwvops = logical flag whether optical photon sensiti-  *
-*                        vities are expressed as a function of wave-   *
-*                        length (true) or 2pi x frequency (false).     *
-*                        By default it is true.                        *
-*          Lcrnkv (im) = logical flag for Cerenkov photon production   *
-*                        for im_th material                            *
-*          Lscntl (im) = logical flag for scintillation photon produ-  *
-*                        ction for im_th material                      *
-*       Ltscnt (je,im) = logical flag  for time constant for je_th     *
-*                        scintill photon production in im_th medium    *
-*          Ltrrad (im) = logical flag for transition radiation photon  *
-*                        production for im_th material                 *
-*          Lopphp (im) = logical flag for transition radiation photon  *
-*                        production for im_th material                 *
-*               Nxoppb = number of material boundaries for which the   *
-*                        roughness has been defined                    *
-*               Nxopbx = number of region boundaries for which the     *
-*                        special user routine ophbdx should be called  *
-*                                                                      *
-*----------------------------------------------------------------------*
-
-      PARAMETER ( MXOPSN =  4 )
-      PARAMETER ( MXOPPR = 12 )
-      PARAMETER ( MXOPPB = 20 )
-      PARAMETER ( MXOPBX = 40 )
-      PARAMETER ( MXSCPH =  3 )
-      PARAMETER ( WVMNTR = 250.D-07 )
-      PARAMETER ( WVCNTR = 589.D-07 )
-      PARAMETER ( WVMXTR = 600.D-07 )
-      LOGICAL LOPPRP, LOPMTL, LWVOPP, LCRNKV, LTRRAD, LSCNTL, LOPPHP,
-     &        LWVOPS, LTSCNT
-      COMMON / OPPHCM /  WVMNSN, WVCNSN, WVMXSN, OMMNSN, OMCNSN, OMMXSN,
-     &                   OPSNMX, OPSNPR (MXOPSN),OPPHPR (MXOPPR,MXXMDF),
-     &                EMNCER (MXXMDF), EMXCER (MXXMDF), RMXCER (MXXMDF),
-     &                EMNTRD (MXXMDF), EMXTRD (MXXMDF), WVMNOP (MXXMDF),
-     &                WVMXOP (MXXMDF), WVCNOP (MXXMDF), OMMNOP (MXXMDF),
-     &                OMMXOP (MXXMDF), OMCNOP (MXXMDF), RGHNSS (MXOPPB),
-     &                ESCINT (MXSCPH,MXXMDF),    FSCINT (MXSCPH,MXXMDF),
-     &                SSCINT (MXSCPH,MXXMDF), TSCINT(MXSCPH,MXXMDF),
-     &                M1RGHN (MXOPPB), M2RGHN (MXOPPB), M1RGBX (MXOPBX),
-     &                M2RGBX (MXOPBX), LOPPRP (MXXMDF), LOPMTL (MXXMDF),
-     &                LWVOPP (MXXMDF), LCRNKV (MXXMDF), LSCNTL (MXXMDF),
-     &                LTRRAD (MXXMDF), LOPPHP (MXXMDF), LWVOPS, NXOPPB,
-     &                NXOPBX, LTSCNT (MXSCPH,MXXMDF)
-*/
-    const Int_t mxopsn =  4;
-    const Int_t mxoppr = 12;
-    const Int_t mxoppb = 20;
-    const Int_t mxopbx = 40;
-    const Int_t mxscph =  3;
-    const Double_t wvmntr = 250.e-07;
-    const Double_t wvcntr = 589.e-07;
-    const Double_t wvmxtr = 600.e-07;
-
-    typedef struct {
-       Double_t wvmnsn;
-       Double_t wvcnsn;
-       Double_t wvmxsn;
-       Double_t ommnsn;
-       Double_t omcnsn;
-       Double_t ommxsn;
-       Double_t opsnmx;
-       Double_t opsnpr [mxopsn];
-       Double_t opphpr [mxxmdf][mxoppr];
-       Double_t emncer [mxxmdf];
-       Double_t emxcer [mxxmdf];
-       Double_t rmxcer [mxxmdf];
-       Double_t emntrd [mxxmdf];
-       Double_t emxtrd [mxxmdf];
-       Double_t wvmnop [mxxmdf];
-       Double_t wvmxop [mxxmdf];
-       Double_t wvcnop [mxxmdf];
-       Double_t ommnop [mxxmdf];
-       Double_t ommxop [mxxmdf];
-       Double_t omcnop [mxxmdf];
-       Double_t rghnss [mxoppb];
-       Double_t escint [mxxmdf][mxscph];
-       Double_t fscint [mxxmdf][mxscph];
-       Double_t sscint [mxxmdf][mxscph];
-       Double_t tscint [mxxmdf][mxscph];
-       Int_t    m1rghn [mxoppb];
-       Int_t    m2rghn [mxoppb];
-       Int_t    m1rgbx [mxopbx];
-       Int_t    m2rgbx [mxopbx];
-       Int_t    lopprp [mxxmdf];
-       Int_t    lopmtl [mxxmdf];
-       Int_t    lwvopp [mxxmdf];
-       Int_t    lcrnkv [mxxmdf];
-       Int_t    lscntl [mxxmdf];
-       Int_t    ltrrad [mxxmdf];
-       Int_t    lopphp [mxxmdf];
-       Int_t    lwvops;
-       Int_t    nxoppb;
-        Int_t    nxopbx;
-       Int_t    ltscnt [mxxmdf][mxscph];
-    } opphcmCommon;
-#define OPPHCM COMMON_BLOCK(OPPHCM,opphcm)
-COMMON_BLOCK_DEF(opphcmCommon,OPPHCM);
-}
-#endif
diff --git a/TFluka/Fopphst.h b/TFluka/Fopphst.h
deleted file mode 100644 (file)
index c386ec9..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-#ifndef OPPHST
-#define OPPHST_H 1
-
-#include "Rtypes.h"
-#include "cfortran.h"
-#include "Fdimpar.h"
-
-extern "C" {
-
-//*$ CREATE OPPHST.ADD
-//*COPY OPPHST
-//*
-//*=== Opphst ===========================================================//*
-//*
-//*----------------------------------------------------------------------//*
-//*                                                                      //*
-//*     OPtical PHoton STack:                                            //*
-//*                                                                      //*
-//*     Created on 19 september 1997 by    Alfredo Ferrari & Paola Sala  //*
-//*                                                   Infn - Milan       //*
-//*                                                                      //*
-//*     Last change on 13-oct-98     by    Alfredo Ferrari               //*
-//*                                                                      //*
-//*        wtopph = weight of the photon                                 //*
-//*        poptph = laboratory momentum of the photon in GeV/c           //*
-//*        xoptph = x-coordinate of the photon                           //*
-//*        yoptph = y-coordinate of the photon                           //*
-//*        zoptph = z-coordinate of the photon                           //*
-//*        txopph = direction cosine of the photon                       //*
-//*                 with respect to x-axis                               //*
-//*        tyopph = direction cosine of the photon                       //*
-//*                 with respect to y-axis                               //*
-//*        tzopph = direction cosine of the photon                       //*
-//*                 with respect to z-axis                               //*
-//*        txpopp = direction cosine of the photon polarization          //*
-//*        typopp = direction cosine of the photon polarization          //*
-//*        tzpopp = direction cosine of the photon polarization          //*
-//*        donear = distance to the nearest boundary                     //*
-//*        agopph = age of the photon (seconds)                          //*
-//*        cmpopp = total path length of the photon (cm)                 //*
-//*        loopph = generation of the photon                             //*
-//*        louopp = user flag                                            //*
-//*        nregop = number of the region of the photon                   //*
-//*        nlatop = number of the lattice cell of the photon             //*
-//*        tpropp = kinetic energy of parent particle of the photon      //*
-//*        apropp = age of the parent particle of the photon (seconds)   //*
-//*        ipropp = id (paprop) of the parent particle of the photon     //*
-//*        lpropp = generation of the parent particle of the photon      //*
-//*        npropp = # of the primary track which generated the photon    //*
-//*                 (not used for the moment)                            //*
-//*        lstopp = stack pointer                                        //*
-//*        lmxopp = highest value of the stack pointer encountered       //*
-//*                 in the run                                           //*
-//*                                                                      //*
-//*----------------------------------------------------------------------//*
-//*
-typedef struct {
-    Double_t wtopph [mostck];
-    Double_t poptph [mostck];
-    Double_t xoptph [mostck];
-    Double_t yoptph [mostck];
-    Double_t zoptph [mostck];
-    Double_t txopph [mostck];
-    Double_t tyopph [mostck];
-    Double_t tzopph [mostck];
-    Double_t txpopp [mostck];
-    Double_t typopp [mostck];
-    Double_t tzpopp [mostck];
-    Double_t donear [mostck];
-    Double_t agopph [mostck];
-    Double_t tpropp [mostck];
-    Double_t apropp [mostck];
-    Double_t cmpopp [mostck];
-    Double_t sparok [mostck][mkbmx1];
-    Int_t    ispork [mostck][mkbmx2];
-    Int_t    loopph [mostck];
-    Int_t    louopp [mostck];
-    Int_t    nregop [mostck];
-    Int_t    nlatop [mostck];
-    Int_t    ipropp [mostck];
-    Int_t    lpropp [mostck];
-    Int_t    npropp [mostck];
-    Int_t    lstopp;
-    Int_t    lmxopp;
-} opphstCommon;
-
-#define OPPHST COMMON_BLOCK(OPPHST,opphst)
-COMMON_BLOCK_DEF(opphstCommon, OPPHST);
-
-}
-#endif
-
diff --git a/TFluka/Fpaprop.h b/TFluka/Fpaprop.h
deleted file mode 100644 (file)
index dc2d809..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-#ifndef FPAPROP_H
-#define FPAPROP_H 1
-
-#include "Rtypes.h"
-#include "cfortran.h"
-
-#include "Fdimpar.h"
-
-extern "C" {
-  //*$ CREATE PAPROP.ADD
-  //*COPY PAPROP
-  //*
-  //*=== paprop ===========================================================*
-  //*
-  //*----------------------------------------------------------------------*
-  //*                                                                      *
-  //*     PArticle PROPerties:                                             *
-  //*                                                                      *
-  //*     !!!!  N E W   V E R S I O N   F O R   FLUKA9x/FLUKA200x  !!!!    *
-  //*                                                                      *
-  //*     Created on    07 may 1991    by    Alfredo Ferrari & Paola Sala  *
-  //*                                                   Infn - Milan       *
-  //*                                                                      *
-  //*     Last change on 03-jul-97     by    Alfredo Ferrari               *
-  //*                                                                      *
-  //*     Variable description:                                            *
-  //*                                                                      *
-  //*        btype (i) = literal name of the i_th particle                 *
-  //*        am    (i) = i_th particle mass (GeV)                          *
-  //*        amdisc(i) = i_th particle mass (GeV) for energy conservation  *
-  //*                    purposes when discarded                           *
-  //*        ichrge(i) = electric charge of the i_th particle              *
-  //*        ibarch(i) = baryonic charge of the i_th particle              *
-  //*        iscore(j) = id for the j_th scored distribution               *
-  //*        gnname(k) = name of the k_th generalized particle type        * 2006.3
-  //*        ijdisc(i) = flag for discarding the i_th particle type        *
-  //*        tmnlf (i) = mean (not half!) life of the i_th particle (s)    *
-  //*        biasdc(i) = decay biasing factor for the i_th particle        *
-  //*        biasin(i) = inelastic interaction biasing factor for the i_th *
-  //*                    particle                                          *
-  //*        lhadro(i) = True if the i_th particle type is a hadron        *
-  //*        jspinp(i) = i_th particle spin (in units of 1/2)              *
-  //*        iparty(i) = i_th particle parity (when meaningful)            *
-  //*        iparid(i) = particle type id flag for the i_th particle       *
-  //*        lbsdcy(i) = logical flag for biased decay for the i_th parti- *
-  //*                    cle: if .true. the biasing factor is used as an   *
-  //*                    upper limit to the decay length                   *
-  //*        lprbsd    = logical flag for biased decay: if .true. the bia- *
-  //*                    sing factor is applied only to primaries          *
-  //*        lprbsi    = logical flag for inelastic interaction biasing:   *
-  //*                    if .true. the biasing factor is applied only to   *
-  //*                    primaries                                         *
-  //*        lsclwf    = logical flag for low energy neutron fission sco-  *
-  //*                    ring                                              *
-  //*        lscnbl    = logical flag for neutron balance scoring          *
-  //*                                                                      *
-  //*----------------------------------------------------------------------*
-
-
-//    const Int_t mxgnpr =  33; // 2006.3
-    const Int_t mxgnpr =  35;
-    typedef struct {
-       Double_t am[nallwp+7];         //(-6:NALLWP)
-       Double_t amdisc[nallwp+7];     //(-6:NALLWP)
-       Double_t tmnlf[nallwp+7];      //(-6:NALLWP)
-       Double_t biasdc[nallwp+7];     //(-6:NALLWP)
-       Double_t biasin[nallwp+7];     //(-6:NALLWP)
-       Int_t    ichrge[nallwp+7];     //(-6:NALLWP)
-       Int_t    ibarch[nallwp+7];     //(-6:NALLWP)
-       Int_t    ijdisc[nallwp+7];     //(-6:NALLWP)
-       Int_t    jspinp[nallwp+7];     //(-6:NALLWP)
-       Int_t    iparty[nallwp+7];     //(-6:NALLWP)
-       Int_t    iparid[nallwp+7];     //(-6:NALLWP)
-       Int_t    lhadro[nallwp+7];     //(-6:NALLWP)
-       Int_t    lbsdcy[nallwp+7];     //(-6:NALLWP)
-       Int_t    iscore[12];
-       Int_t    lprbsd;
-       Int_t    lprbsi;
-       Int_t    lsclwf;
-       Int_t    lscnbl;
-    } papropCommon;
-#define PAPROP COMMON_BLOCK(PAPROP,paprop)
-COMMON_BLOCK_DEF(papropCommon,PAPROP);
-
-    typedef struct {
-       Char_t   btype[nallwp+7][8];     //(-6:NALLWP)
-//     Char_t   genpar[mxgnpr][8];          // 2006.3 
-       Char_t   gnname[mxgnpr][8];          // 2006.3
-    } chpprpCommon;
-#define CHPPRP COMMON_BLOCK(CHPPRP,chpprp)
-COMMON_BLOCK_DEF(chpprpCommon,CHPPRP);
-}
-#endif
diff --git a/TFluka/Fpart.h b/TFluka/Fpart.h
deleted file mode 100644 (file)
index 646c5cf..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-#ifndef FPART_H
-#define FPART_H 1
-
-#include "Rtypes.h"
-#include "cfortran.h"
-#include "Fdimpar.h" //For some constants
-extern "C" {
-//*$ create part.add
-//*copy part
-//*
-//*=== part =============================================================*
-//*
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     include file: part copy        revised on 20-08-96 by a. ferrari *
-//*                                                                      *
-//*     last change   on   14-oct-00     by       alfredo ferrari        *
-//*                                                                      *
-//*     included in the following subroutines or functions:              *
-//*                                                                      *
-//*     w a r n i n g !!!! check also part2 and part3 for any change!!!  *
-//*                                                                      *
-//*     description of the common block(s) and variable(s)               *
-//*                                                                      *
-//*             am = particle mass (gev/c^2)                             *
-//*             ga = particle width (gev)                                *
-//*            tau = particle mean life (s)                              *
-//*         amdisc = "effective" particle mass for energy balance (gev)  *
-//*         zmnabs = lower width (adimensional unit) to be used during   *
-//*                  particle decay to assure that at least one decay    *
-//*                  channel is physically open                          *
-//*         atnmna = atan (zmnabs)                                       *
-//*            ich = particle electric charge                            *
-//*           ibar = particle baryon number                              *
-//*         isosym = index of the isospin reversed (t_z --> -t_z)        *
-//*                  particle (if any, if 0 no such particle is available*
-//*                  in the part listing)                                *
-//*         ichcon = index of the charge conjugated (antiparticle)       *
-//*                  particle (if any, if 0 no such particle is available*
-//*                  in the part listing)                                *
-//*             k1 = index of first decay channel                        *
-//*             k2 = index of last  decay channel                        *
-//*         kptoip = conversion from part to paprop numbering            *
-//*         iptokp = conversion from paprop to part numbering            *
-//*         kptoia = conversion from part to abltis numbering            *
-//*         iatokp = conversion from abltis to part numbering            *
-//*         idcflg = decay flag                                          *
-//*         iptype = particle type                                       *
-//*                  -1: heavy fragments                                 *
-//*                   0: unknown particle or lepton                      *
-//*                   1: nucleon                                         *
-//*                   2: antinucleon                                     *
-//*                   3: pion                                            *
-//*                   4: k+/k0                                           *
-//*                  -4: kshrt/klong                                     *
-//*                   5: k-/k0bar                                        *
-//*                   6: lamda/sigma   (strangeness -1 hyperon)          *
-//*                   7: xsi           (strangeness -2 hyperon)          *
-//*                   8: omega         (strangeness -3 hyperon)          *
-//*                   9: alamda/asigma (strangeness +1 antihyperon)      *
-//*                  10: axsi          (strangeness +2 antihyperon)      *
-//*                  11: aomega        (strangeness +3 antihyperon)      *
-//*                  12: d+/d0                                           *
-//*                  13: d-/d0bar                                        *
-//*                  14: d_s+/d_s-                                       *
-//*                  15: lambda_c+                                       *
-//*                  16: xsi_c+/xsi_c0                                   *
-//*                  17: xsi'_c+/xsi'_c0                                 *
-//*                  18: omega_c                                         *
-//*                  19: alambda_c+                                      *
-//*                  20: axsi_c-/axsi_c0                                 *
-//*                  21: axsi'_c-/axsi'_c0                               *
-//*                  22: aomega_c                                        *
-//*          aname = particle literal name                               *
-//*                                                                      *
-//*----------------------------------------------------------------------*
-//*
-
-typedef struct {
-   Double_t am[idmaxp+7];
-   Double_t ga[idmaxp+7];
-   Double_t tau[idmaxp+7];
-   Double_t amdisc[idmaxp+7];
-   Double_t zmnabs[idmaxp+7];
-   Double_t atnmna[idmaxp+7];
-   Int_t    ich[idmaxp+7];
-   Int_t    ibar[idmaxp+7];
-   Int_t    isosym[idmaxp+7];
-   Int_t    ichcon[idmaxp+7];
-   Int_t    k1[idmaxp+7];
-   Int_t    k2[idmaxp+7];
-   Int_t    kptoip[idmaxp+7];
-   Int_t    iptokp[nallwp+7];
-   Int_t    kptoia[idmaxp+7];
-   Int_t    iatokp[mxpabl+7];
-   Int_t    idcflg[nallwp+7];
-   Int_t    iptype[nallwp+7];
-} partCommon;
-#define PART COMMON_BLOCK(PART,part)
-COMMON_BLOCK_DEF(partCommon,PART);
-
-typedef struct {
-   Char_t   aname[idmaxp+7][8];
-} chpartCommon;
-#define CHPART COMMON_BLOCK(CHPART,chpart)
-COMMON_BLOCK_DEF(chpartCommon,CHPART);
-}
-
-//Get functions
-inline Double_t GetFlukaAM(unsigned int i) {return PART.am[i+6];}
-inline Double_t GetFlukaGA(unsigned int i) {return PART.ga[i+6];}
-inline Double_t GetFlukaTAU(unsigned int i) {return PART.tau[i+6];}
-inline Double_t GetFlukaAMDISC(unsigned int i) {return PART.amdisc[i+6];}
-inline Double_t GetFlukaZMNABS(unsigned int i) {return PART.zmnabs[i+6];}
-inline Double_t GetFlukaATNMNA(unsigned int i) {return PART.atnmna[i+6];}
-inline Int_t    GetFlukaICH(unsigned int i) {return PART.ich[i+6];}
-inline Int_t    GetFlukaIBAR(unsigned int i) {return PART.ibar[i+6];}
-inline Int_t    GetFlukaISOSYM(unsigned int i) {return PART.isosym[i+6];}
-inline Int_t    GetFlukaICHCON(unsigned int i) {return PART.ichcon[i+6];}
-inline Int_t    GetFlukaK1(unsigned int i) {return PART.k1[i+6];}
-inline Int_t    GetFlukaK2(unsigned int i) {return PART.k2[i+6];}
-inline Int_t    GetFlukaKPTOIP(unsigned int i) {return PART.kptoip[i+6];}
-inline Int_t    GetFlukaIPTOKP(unsigned int i) {return PART.iptokp[i+6];}
-inline Int_t    GetFlukaKPTOIA(unsigned int i) {return PART.kptoia[i+6];}
-inline Int_t    GetFlukaIATOKP(unsigned int i) {return PART.iatokp[i+6];}
-inline Int_t    GetFlukaIDCFLG(unsigned int i) {return PART.idcflg[i+6];}
-inline Int_t    GetFlukaIPTYPE(unsigned int i) {return PART.iptype[i+6];}
-
-#endif
diff --git a/TFluka/Fscohlp.h b/TFluka/Fscohlp.h
deleted file mode 100755 (executable)
index ab4f805..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-extern "C" {
-//*$ create scohlp.add
-//*copy scohlp 
-//*
-//*=== scohlp ===========================================================*
-//*
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     Copyright (C) 1991-2005      by    Alfredo Ferrari & Paola Sala  *
-//*     All Rights Reserved.                                             *
-//*                                                                      *
-//*                                                                      *
-//*     Created on  05  august 1991  by    Alfredo Ferrari & Paola Sala  *
-//*                                                   Infn - Milan       *
-//*                                                                      *
-//*     Last change on 29-oct-94     by    Alfredo Ferrari               *
-//*                                                                      *
-//*     Energy/Star binnings/scorings (Comscw):                          *
-//*          ISCRNG = 1 --> Energy density  binning                      *
-//*          ISCRNG = 2 --> Star   density  binning                      *
-//*          ISCRNG = 3 --> Residual nuclei scoring                      *
-//*          JSCRNG = # of the binning                                   *
-//*     Flux like binnings/estimators (Fluscw):                          *
-//*          ISCRNG = 1 --> Boundary crossing estimator                  *
-//*          ISCRNG = 2 --> Track  length     binning                    *
-//*          ISCRNG = 3 --> Track  length     estimator                  *
-//*          ISCRNG = 4 --> Collision density estimator                  *
-//*          ISCRNG = 5 --> Yield             estimator                  *
-//*          JSCRNG = # of the binning/estimator                         *
-//*                                                                      *
-//*----------------------------------------------------------------------*
-
-typedef struct {
-   Int_t    iscrng;
-   Int_t    jscrng;
-   Int_t    lsczer;
-} scohlpCommon;
-#define SCOHLP COMMON_BLOCK(SCOHLP,scohlp)
-COMMON_BLOCK_DEF(scohlpCommon,SCOHLP);
-}
diff --git a/TFluka/Fsouevt.h b/TFluka/Fsouevt.h
deleted file mode 100755 (executable)
index c484022..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "cfortran.h"
-#include "Rtypes.h"
-
-#include "Fdimpar.h"
-
-extern "C" {
-//*$ create souevt.add
-//*copy souevt 
-   
-//*=== Souevt ===========================================================*
-//*
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     Copyright (C) 1996-2005      by    Alfredo Ferrari & Paola Sala  *
-//*     All Rights Reserved.                                             *
-//*                                                                      *
-//*                                                                      *
-//*     SOUrce EVenT:                                                    *
-//*                                                                      *
-//*     Created on 14 november 1996  by    Alfredo Ferrari & Paola Sala  *
-//*                                                   Infn - Milan       *
-//*                                                                      *
-//*     Last change on 16-mar-98     by    Alfredo Ferrari               *
-//*                                                                      *
-//*          X,Y,Zsoevt(i) = position    of the i_th source particle     *
-//*          TX,Y,Zsoev(i) = direction   of the i_th source particle     *
-//*              Wtsoev(i) = weight      of the i_th source particle     *
-//*              Pmsoev(i) = momentum    of the i_th source particle     *
-//*              Tksoev(i) = kin. energy of the i_th source particle     *
-//*              Agsoev(i) = age         of the i_th source particle     *
-//*              Aksoev(i) = Kaon ampl.  of the i_th source particle     *
-//*            Ussoev(j,i) = user var.   of the i_th source particle     *
-//*              Ijsoev(i) = identity    of the i_th source particle     *
-//*              Nrsoev(i) = region      of the i_th source particle     *
-//*              Nlsoev(i) = lattice     of the i_th source particle     *
-//*              Losoev(i) = user flag   of the i_th source particle     *
-//*            Iusoev(j,i) = user flags  of the i_th source particle     *
-//*                Npsoev  = number of the source particles              *
-//*                                                                      *
-//*----------------------------------------------------------------------*
-const Int_t mxsoev = 100;
-
-typedef struct {
-   Double_t xsoevt[mxsoev];
-   Double_t ysoevt[mxsoev];
-   Double_t zsoevt[mxsoev];
-   Double_t txsoev[mxsoev];
-   Double_t tysoev[mxsoev];
-   Double_t tzsoev[mxsoev];
-   Double_t txpsov[mxsoev];
-   Double_t typsov[mxsoev];
-   Double_t tzpsov[mxsoev];
-   Double_t wtsoev[mxsoev];
-   Double_t pmsoev[mxsoev];
-   Double_t tksoev[mxsoev];
-   Double_t agsoev[mxsoev];
-   Double_t aksoev[mxsoev];
-   Double_t ussoev[mkbmx1][mxsoev];
-   Int_t    ijsoev[mxsoev];
-   Int_t    nrsoev[mxsoev];
-   Int_t    nlsoev[mxsoev];
-   Int_t    losoev[mxsoev];
-   Int_t    iusoevo[mkbmx2][mxsoev];
-   Int_t    npsoev;
-
-} souevtCommon;
-#define SOUEVT COMMON_BLOCK(SOUEVT,souevt)
-COMMON_BLOCK_DEF(souevtCommon,SOUEVT);
-}
diff --git a/TFluka/Fsourcm.h b/TFluka/Fsourcm.h
deleted file mode 100644 (file)
index 6e7267a..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-#ifndef FSOURCM_H
-#define FSOURCM_H 1
-
-#include "Rtypes.h"
-#include "cfortran.h"
-extern "C" {
-//*$ create sourcm.add
-//*copy sourcm
-//*
-//*=== Sourcm ===========================================================*
-//*
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     Include file: sourcm                                             *
-//*                                                                      *
-//*     version       march 1996     by   Alfredo Ferrari, INFN - Milan  *
-//*                                                                      *
-//*     Last change on 09-mar-02     by    Alfredo Ferrari               *
-//*                                                                      *
-//*     Included in the following subroutines or functions:              *
-//*                                                                      *
-//*            BDNOPT                                                    *
-//*            FLKEND                                                    *
-//*            EVTDAT                                                    *
-//*            FEEDER                                                    *
-//*            FLUKAM                                                    *
-//*            MGDRAW                                                    *
-//*            SOURCE                                                    *
-//*                                                                      *
-//*                                                                      *
-//*      Whasou(1-18) = user variables                                   *
-//*            Tkesum = total kinetic energy of the primaries of the     *
-//*                     user written source                              *
-//*            Lussrc = flag to inform that the user written source was  *
-//*                     used                                             *
-//*            Sdusou = user character variable                          *
-//*            Lsouit = source is called iteratively until it is .true.  *
-//*                                                                      *
-//*----------------------------------------------------------------------*
-//*
-
-typedef struct {
-   Double_t whasou[18];
-   Double_t tkesum;
-   Int_t    lussrc;
-   Int_t    lsouit;
-} sourcmCommon;
-#define SOURCM COMMON_BLOCK(SOURCM,sourcm)
-COMMON_BLOCK_DEF(sourcmCommon,SOURCM);
-
-typedef struct {
-   Char_t   sdusou[8];
-} chsocmCommon;
-#define CHSOCM COMMON_BLOCK(CHSOCM,chsocm)
-COMMON_BLOCK_DEF(chsocmCommon,CHSOCM);
-
-typedef struct {
-   Double_t xn[3];
-   Double_t wn[3];
-   Double_t distn;
-   Int_t    irltno;
-   Int_t    irrnor;
-} norlatCommon;
-#define NORLAT COMMON_BLOCK(NORLAT,norlat)
-COMMON_BLOCK_DEF(norlatCommon,NORLAT);   
-
-typedef struct {
-   Double_t xb[3];
-   Double_t wb[3];
-   Double_t wp[3];
-   Double_t xp[3];
-   Double_t rin;
-   Double_t rout;
-   Double_t pinf;
-   Double_t dist;
-   Int_t    ir;
-   Int_t    idbg;
-   Int_t    irprim;
-   Int_t    nasc;
-   Int_t    lsurf;
-   Int_t    nbo;
-   Int_t    lri;
-   Int_t    lro;
-   Int_t    kloop;
-   Int_t    loop;
-   Int_t    itype;
-   Int_t    n0a;
-} paremCommon;
-#define PAREM COMMON_BLOCK(PAREM,parem)
-COMMON_BLOCK_DEF(paremCommon,PAREM);   
-}
-
-#endif
diff --git a/TFluka/Fstepsz.h b/TFluka/Fstepsz.h
deleted file mode 100644 (file)
index 4e6b0b5..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "Fdimpar.h"
-extern "C" {
-/*
-*$ CREATE STEPSZ.ADD
-*COPY STEPSZ
-*
-*=== stepsz ===========================================================*
-*
-*----------------------------------------------------------------------*
-*                                                                      *
-*   Common stepsz for setting the minimum and maximum step sizes on a  *
-*                 a region by region basis: very useful for vacuum re- *
-*                 gions with magnetic filed and for saving time ( and  *
-*                 accuracy ) with the new plc and lca algorithm in     *
-*                 Emf and Fluka                                        *
-*                                                                      *
-*          W A R N I N G !!!!! At the moment implemented only for      *
-*          electron and positron transport in Emf and for charged      *
-*          particles transport in Fluka with the new multiple scat-    *
-*          tering module!!!!!!                                         *
-*                                                                      *
-*                  created by A. Ferrari & P. Sala on 14-jan-1990      *
-*                                                                      *
-*          included in:                                                *
-*                        fiprou                                        *
-*                        flukam (main)                                 *
-*                        kashea                                        *
-*                        kaskad                                        *
-*                        electr (new version)                          *
-*                        mageas                                        *
-*                        magnew                                        *
-*                        zeroin                                        *
-*                                                                      *
-*                        Stepmn  = minimum step size (cm)              *
-*                        Stepmx  = maximum step size (cm)              *
-*                        Mxxrgn = maximum number of regions            *
-*                                                                      *
-*----------------------------------------------------------------------*
-*/
-
-//      COMMON / STEPSZ / STEPMN ( MXXRGN ), STEPMX ( MXXRGN )
-typedef struct {
-    Double_t stepmn[mxxrgn];
-    Double_t stepmx[mxxrgn];
-} stepszCommon;
-
-#define STEPSZ COMMON_BLOCK(STEPSZ,stepsz)
-COMMON_BLOCK_DEF(stepszCommon,STEPSZ);
-}
-
diff --git a/TFluka/Fsumcou.h b/TFluka/Fsumcou.h
deleted file mode 100644 (file)
index 022d47f..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-#ifndef FSUMCOU_H
-#define FSUMCOU_H 1
-
-#include "cfortran.h"
-#include "Rtypes.h"
-
-#include "Fdimpar.h"
-
-extern "C" {
-//*=== Sumcou ===========================================================*
-//*
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     All additions wrt the original one are:                          *
-//*     Copyright (C) 2005-2005      by    Alfredo Ferrari & Paola Sala  *
-//*     All Rights Reserved.                                             *
-//*                                                                      *
-//*                                                                      *
-//*     SUMmary COUnters common for FLUKA9x/200x:                        *
-//*                                                                      *
-//*     (New version of the original STARS comon)                        *
-//*                                                                      *
-//*                                                                      *
-//*     Created on    15 may 1990    by    Alfredo Ferrari & Paola Sala  *
-//*                                                   Infn - Milan       *
-//*                                                                      *
-//*     Last change on  09-jul-05    by    Alfredo Ferrari               *
-//*                                                                      *
-//*                                                                      *
-//*     Variable description:                                            *
-//*                                                                      *
-//*        Ntstar = total number of stars generated (modulo 1000000000)  *
-//*        Neulow = total number of low energy neutron interactions      *
-//*                (modulo 1000000000)                                   *
-//*        Numdec = total number of decays (modulo 1000000000)           *
-//*        Numoph = total number of optical photons generated            *
-//*                (modulo 1000000000)                                   *
-//*        Mtstar = total number of stars generated / 100000000          *
-//*        Meulow = total number of low energy neutron interactions      *
-//*               / 1000000000                                           *
-//*        Mumdec = total number of decays / 1000000000                  *
-//*        Mumoph = total number of optical photons generated /1000000000*
-//*   Wneulw(k,j) = total weight of the low energy neutron interactions  *
-//*   Woptph(k,j) = total weight of generated optical photons            *
-//*   Westar(k,j) = weight of the stars generated by                     *
-//*                 different particle types                             *
-//*   Westop(k,j) = weight of particles of different types stopped       *
-//*   Wedaug(k,j) = weight of the decay products                         *
-//*   Wekill(k,j) = weight of the time-killed particles                  *
-//*   Wedecy(k,j) = weight of the particles decayed                      *
-//*   Weifis(k,j) = weight of high energy fissions generated by particles*
-//*                 of different kind                                    *
-//*   Deccts(k,j) = decay c tau scoring                                  *
-//*   Wdecct(k,j) = weight of the particles decayed for which a c tau    *
-//*                 scoring is done                                      *
-//*   Weprdc(k,j) = weight of produced particles of different kind       *
-//*   Wlwnsc(k,j) = weight of the low energy neutrons interaction secon- *
-//*                 daries                                               *
-//*   Wophsc(k,j) = weight of optical photons production/interaction     *
-//*                 secondaries                                          *
-//*        Weipri = total weight of the primaries handled                *
-//*   Edpsco(i,j) = energy deposition scoring (j = 1: prompt particles,  *
-//*                                            j = 2: decay  particles)  *
-//*            Edpsco(1,j) = by ionisation                               *
-//*            Edpsco(2,j) = by pi-zeros and/or EM cascade               *
-//*            Edpsco(3,j) = by nuclear excitation (or nuclear recoil    *
-//*                          and heavies if the evaporation module is    *
-//*                          activated)                                  *
-//*            Edpsco(4,j) = by stopped particles                        *
-//*            Edpsco(5,j) = energy leaving the system                   *
-//*            Edpsco(6,j) = energy carried by discarded particles       *
-//*            Edpsco(7,j) = by residual excitation energy (only if the  *
-//*                          evaporation module is activated)            *
-//*            Edpsco(8,j) = by low energy neutrons (kerma due to low    *
-//*                          energy neutrons transport is in effect)     *
-//*            Edpsco(9,j) = energy carried by time killed particles     *
-//*            Edpsco(10,j)= energy wasted for nuclear binding energy    *
-//*                          effects for (low energy neutrons excluded)  *
-//*            Edpsco(11,j)= energy wasted for nuclear binding energy    *
-//*                          effects for low energy neutrons             *
-//*                                                                      *
-//*----------------------------------------------------------------------*
-//*
-
-typedef struct {
-   Double_t westar[2][nallwp+7];
-   Double_t westop[2][nallwp+7];
-   Double_t wedaug[2][nallwp+7];
-   Double_t wekill[2][nallwp+7];
-   Double_t wedecy[2][nallwp+7];
-   Double_t weifis[2][nallwp+7];
-   Double_t deccts[2][nallwp+7];
-   Double_t wdecct[2][nallwp+7];
-   Double_t weprdc[2][nallwp+7];
-   Double_t wlwnsc[2][4];
-   Double_t wophsc[2][4];
-   Double_t edpsco[2][11];
-   Double_t woptph;
-   Double_t wneulw;
-   Double_t weipri;
-   Int_t    numdec;
-   Int_t    ntstar;
-   Int_t    neulow;
-   Int_t    numoph;
-   Int_t    mumdec;
-   Int_t    mtstar;
-   Int_t    meulow;
-   Int_t    mumoph;
-} sumcouCommon;
-#define SUMCOU COMMON_BLOCK(SUMCOU,sumcou)
-COMMON_BLOCK_DEF(sumcouCommon,SUMCOU);
-}
-
-#endif
diff --git a/TFluka/Ftrackr.h b/TFluka/Ftrackr.h
deleted file mode 100644 (file)
index da33d59..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-#include "cfortran.h"
-#include "Rtypes.h"
-
-#include "Fdimpar.h"
-
-extern "C" {
-//*$ create trackr.add
-//*copy trackr
-//*                                                                      *
-//*=== trackr ===========================================================*
-//*                                                                      *
-//*----------------------------------------------------------------------*
-//*                                                                      *
-//*     tracks recording       by  alfredo ferrari, infn - milan         *
-//*                                                                      *
-//*     last change    31 january 2001    by   alfredo ferrari           *
-//*                                                                      *
-//*            included in :                                             *
-//*                          electr                                      *
-//*                          emfsco                                      *
-//*                          kaskad (new version)                        *
-//*                          kashea                                      *
-//*                          kasneu                                      *
-//*                          geoden (new version)                        *
-//*                          mageas                                      *
-//*                          magmov                                      *
-//*                          magnew                                      *
-//*                          move                                        *
-//*                          photon                                      *
-//*                          usrsco                                      *
-//*                                                                      *
-//*          ntrack = number of track segments                           *
-//*          mtrack = number of energy deposition events along the track *
-//*   0 < i < ntrack                                                     *
-//*          xtrack = end x-point of the ith track segment               *
-//*          ytrack = end y-point of the ith track segment               *
-//*          ztrack = end z-point of the ith track segment               *
-//*   1 < i < ntrack                                                     *
-//*          ttrack = length of the ith track segment                    *
-//*   1 < j < mtrack                                                     *
-//*          dtrack = energy deposition of the jth deposition event      *
-//*          dptrck = momentum loss of the jth deposition event          *
-//*                                                                      *
-//*          Jtrack = identity number of the particle: for recoils or    *
-//*                   kerma deposition it can be outside the allowed     *
-//*                   particle id range, assuming values like:           *
-//*                     208: "heavy" recoil                              *
-//*                     211: EM below threshold                          *
-//*                     308: low energy neutron kerma                    *
-//*                   in those cases the id of the particle originating  *
-//*                   the interaction is saved inside J0trck (which othe-*
-//*                   rwise is zero)                                     *
-//*          J0trck = see above                                          *
-//*          Ifltrk = flag used for internal debugging (trying to solve  *
-//*                   possible residual issues with Mgdraw driven        *
-//*                   quenching)                                         *
-//*          etrack = total energy of the particle                       *
-//*          ptrack = momentum of the particle (not always defined, if   *
-//*                 < 0 must be obtained from etrack)                    *
-//*      cx,y,ztrck = direction cosines of the current particle          *
-//*      cx,y,ztrpl = polarization cosines of the current particle       *
-//*          wtrack = weight of the particle                             *
-//*          wscrng = scoring weight: it can differ from wtrack if some  *
-//*                   biasing techniques are used (for example inelastic *
-//*                   interaction length biasing)                        *
-//*          ctrack = total curved path                                  *
-//*          cmtrck = cumulative curved path since particle birth        *
-//*          zfftrk = <z_eff> of the particle                            *
-//*          zfrttk = actual z_eff of the particle                       *
-//*          atrack = age of the particle                                *
-//*          akshrt = kshrt amplitude for k0/k0bar                       *
-//*          aklong = klong amplitude for k0/k0bar                       *
-//*          wninou = neutron algebraic balance of interactions (both    *
-//*                   for "high" energy particles and "low" energy       *
-//*                   neutrons)                                          *
-//*          spausr = user defined spare variables for the current       *
-//*                   particle                                           *
-//*          sttrck = macroscopic total cross section for low energy     *
-//*                   neutron collisions                                 *
-//*          satrck = macroscopic absorption cross section for low energy*
-//*                   neutron collisions (it can be negative for pnab>1) *
-//*          ktrack = if > 0 neutron group of the particle (neutron)     *
-//*                                                                      *
-//*          ntrack > 0, mtrack > 0 : energy loss distributed along the  *
-//*                                   track                              *
-//*          ntrack > 0, mtrack = 0 : no energy loss along the track     *
-//*          ntrack = 0, mtrack = 0 : local energy deposition (the       *
-//*                                   value and the point are not re-    *
-//*                                   corded in trackr)                  *
-//*          mmtrck = flag recording the material index for low energy   *
-//*                   neutron collisions                                 *
-//*          lt1trk = initial lattice cell of the current track          *
-//*                  (or lattice cell for a point energy deposition)     *
-//*          lt2trk = final   lattice cell of the current track          *
-//*          ihspnt = current geometry history pointer (not set if -1)   *
-//*          ltrack = flag recording the generation number               *
-//*          llouse = user defined flag for the current particle         *
-//*          ispusr = user defined spare flags for the current particle  *
-//*          lfsssc = logical flag for inelastic interactions ending with*
-//*                   fission (used also for low energy neutrons)        *
-//*                                                                      *
-//*----------------------------------------------------------------------*
-//
-
-//
-// TFluka specific:
-// ispusr[mkbmx2 - 1] : track index in vmcstack
-// ispusr[mkbmx2 - 2] : flag for "interrupted" track
-//
-    
-const Int_t mxtrck = 2500;
-
-typedef struct {
-    Double_t xtrack[mxtrck+1];
-    Double_t ytrack[mxtrck+1];
-    Double_t ztrack[mxtrck+1];
-    Double_t ttrack[mxtrck];
-    Double_t dtrack[mxtrck];
-    Double_t dptrck[mxtrck][3];
-    Double_t etrack;
-    Double_t ptrack;
-    Double_t cxtrck;
-    Double_t cytrck;
-    Double_t cztrck;
-    Double_t wtrack;
-    Double_t cxtrpl;
-    Double_t cytrpl;
-    Double_t cztrpl;
-    Double_t zfftrk;
-    Double_t zfrttk;
-    Double_t atrack;
-    Double_t ctrack;
-    Double_t cmtrck;
-    Double_t akshrt;
-    Double_t aklong;
-    Double_t wscrng;
-    Double_t wninou;
-    Double_t spausr[mkbmx1];
-    Double_t sttrck;
-    Double_t satrck;
-    Int_t    ntrack;
-    Int_t    mtrack;
-    Int_t    ifltrk;
-    Int_t    jtrack;
-    Int_t    j0trck;
-    Int_t    ktrack;
-    Int_t    mmtrck;
-    Int_t    lt1trk;
-    Int_t    lt2trk;
-    Int_t    ihspnt;
-    Int_t    ltrack;
-    Int_t    llouse;
-    Int_t    ispusr[mkbmx2];
-    Int_t    lfsssc;
-    Int_t    lpkill;
-} trackrCommon;
-#define TRACKR COMMON_BLOCK(TRACKR,trackr)
-COMMON_BLOCK_DEF(trackrCommon,TRACKR);
-//static union { Double_t spause; Double_t spausr[0];};
-//static union { Int_t    ispuse; Int_t    ispusr[0];};
-}
diff --git a/TFluka/TCallf77.h b/TFluka/TCallf77.h
deleted file mode 100644 (file)
index be1b44b..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef ROOT_TCallf77
-#define ROOT_TCallf77
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-
-#ifndef WIN32
-# define type_of_call
-# define DEFCHARD     const char* 
-# define DEFCHARL   , const int 
-# define PASSCHARD(string) string 
-# define PASSCHARL(string) , strlen(string) 
-#else
-# define type_of_call  _stdcall
-# define DEFCHARD   const char* , const int        
-# define DEFCHARL          
-# define PASSCHARD(string) string, strlen(string) 
-# define PASSCHARL(string) 
-#endif
-#define DEFCHARA   DEFCHARD DEFCHARL
-#define PASSCHARA(string)  PASSCHARD(string) PASSCHARL(string)
-#endif //ROOT_TCallf77
diff --git a/TFluka/TFluka.cxx b/TFluka/TFluka.cxx
deleted file mode 100644 (file)
index 502a609..0000000
+++ /dev/null
@@ -1,2772 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/* $Id$ */
-
-//
-// Realisation of the TVirtualMC interface for the FLUKA code
-// (See official web side http://www.fluka.org/).
-//
-// This implementation makes use of the TGeo geometry modeller.
-// User configuration is via automatic generation of FLUKA input cards.
-//
-// Authors:
-// A. Fasso
-// E. Futo
-// A. Gheata
-// A. Morsch
-//
-
-#include <Riostream.h>
-#include <TList.h>
-
-#include "TFluka.h"
-#include "TFlukaIon.h"
-#include "TFlukaCodes.h"
-#include "TCallf77.h"      //For the fortran calls
-#include "Fdblprc.h"       //(DBLPRC) fluka common
-#include "Fsourcm.h"       //(SOURCM) fluka common
-#include "Fgenstk.h"       //(GENSTK)  fluka common
-#include "Fiounit.h"       //(IOUNIT) fluka common
-#include "Fpaprop.h"       //(PAPROP) fluka common
-#include "Fpart.h"         //(PART)   fluka common
-#include "Ftrackr.h"       //(TRACKR) fluka common
-#include "Fpaprop.h"       //(PAPROP) fluka common
-#include "Ffheavy.h"       //(FHEAVY) fluka common
-#include "Fopphst.h"       //(OPPHST) fluka common
-#include "Fflkstk.h"       //(FLKSTK) fluka common
-#include "Fstepsz.h"       //(STEPSZ) fluka common
-#include "Fopphst.h"       //(OPPHST) fluka common
-#include "Fltclcm.h"       //(LTCLCM) fluka common
-#include "Falldlt.h"       //(ALLDLT) fluka common
-
-#include "TVirtualMC.h"
-#include "TMCProcess.h"
-#include "TGeoManager.h"
-#include "TGeoMaterial.h"
-#include "TGeoMedium.h"
-#include "TFlukaMCGeometry.h"
-#include "TGeoMCGeometry.h"
-#include "TFlukaCerenkov.h"
-#include "TFlukaConfigOption.h"
-#include "TFlukaScoringOption.h"
-#include "TLorentzVector.h"
-#include "TArrayI.h"
-#include "TArrayD.h"
-#include "TDatabasePDG.h"
-#include "TStopwatch.h"
-
-
-// Fluka methods that may be needed.
-#ifndef WIN32 
-# define flukam  flukam_
-# define fluka_openinp fluka_openinp_
-# define fluka_openout fluka_openout_
-# define fluka_closeinp fluka_closeinp_
-# define mcihad mcihad_
-# define mpdgha mpdgha_
-# define newplo newplo_
-# define genout genout_
-# define flkend flkend_
-#else 
-# define flukam  FLUKAM
-# define fluka_openinp FLUKA_OPENINP
-# define fluka_openout FLUKA_OPENOUT
-# define fluka_closeinp FLUKA_CLOSEINP
-# define mcihad MCIHAD
-# define mpdgha MPDGHA
-# define newplo NEWPLO
-# define genout GENOUT
-# define flkend FLKEND
-#endif
-
-extern "C" 
-{
-  //
-  // Prototypes for FLUKA functions
-  //
-  void type_of_call flukam(const int&);
-  void type_of_call newplo();
-  void type_of_call genout();
-  void type_of_call flkend();
-  void type_of_call fluka_openinp(const int&, DEFCHARA);
-  void type_of_call fluka_openout(const int&, DEFCHARA);
-  void type_of_call fluka_closeinp(const int&);
-  int  type_of_call mcihad(const int&);
-  int  type_of_call mpdgha(const int&);
-}
-
-//
-// Class implementation for ROOT
-//
-ClassImp(TFluka)
-
-//
-//----------------------------------------------------------------------------
-// TFluka constructors and destructors.
-//______________________________________________________________________________
-TFluka::TFluka()
-  :TVirtualMC(),
-   fVerbosityLevel(0),
-   fNEvent(0),
-   fInputFileName(""),
-   fCoreInputFileName(""),
-   fCaller(kNoCaller),
-   fIcode(kNoProcess),
-   fNewReg(-1),
-   fRull(0),
-   fXsco(0),
-   fYsco(0),
-   fZsco(0),
-   fPItime(0),
-   fPIlength(0),
-   fNPI(0),
-   fTrackIsEntering(kFALSE),
-   fTrackIsExiting(kFALSE),
-   fTrackIsNew(kFALSE),
-   fFieldFlag(kTRUE),
-   fDummyBoundary(kFALSE),
-   fStopped(kFALSE),
-   fStopEvent(kFALSE),
-   fStopRun(kFALSE),
-   fPrimaryElectronIndex(-1),
-   fLowEnergyNeutronTransport(kFALSE),
-   fMaterials(0),
-   fNVolumes(0),
-   fCurrentFlukaRegion(-1),
-   fNCerenkov(0),
-   fGeom(0),
-   fMCGeo(0),
-   fUserConfig(0), 
-   fUserScore(0),
-   fUserIons(0)
-{ 
-  //
-  // Default constructor
-  //
-    for (Int_t i = 0; i < 4; i++) fPint[i] = 0.;
-} 
-//______________________________________________________________________________ 
-TFluka::TFluka(const char *title, Int_t verbosity, Bool_t isRootGeometrySupported)
-  :TVirtualMC("TFluka",title, isRootGeometrySupported),
-   fVerbosityLevel(verbosity),
-   fNEvent(0),
-   fInputFileName(""),
-   fCoreInputFileName(""),
-   fCaller(kNoCaller),
-   fIcode(kNoProcess),
-   fNewReg(-1),
-   fRull(0),
-   fXsco(0),
-   fYsco(0),
-   fZsco(0),
-   fPItime(0),
-   fPIlength(0),
-   fNPI(0),
-   fTrackIsEntering(kFALSE),
-   fTrackIsExiting(kFALSE),
-   fTrackIsNew(kFALSE),
-   fFieldFlag(kTRUE),
-   fDummyBoundary(kFALSE),
-   fStopped(kFALSE),
-   fStopEvent(kFALSE),
-   fStopRun(kFALSE),
-   fPrimaryElectronIndex(-1),
-   fLowEnergyNeutronTransport(kFALSE),
-   fMaterials(0),
-   fNVolumes(0),
-   fCurrentFlukaRegion(-1),
-   fNCerenkov(0),
-   fGeom(0),
-   fMCGeo(0),
-   fUserConfig(new TObjArray(100)),
-   fUserScore(new TObjArray(100)),
-   fUserIons(0)
-{
-  // create geometry interface
-    for (Int_t i = 0; i < 4; i++) fPint[i] = 0.;
-    
-   if (fVerbosityLevel >=3)
-       cout << "<== TFluka::TFluka(" << title << ") constructor called." << endl;
-   SetCoreInputFileName();
-   SetInputFileName();
-   fMCGeo = new TGeoMCGeometry("MCGeo", "TGeo Implementation of VirtualMCGeometry", kFALSE);
-   fGeom  = new TFlukaMCGeometry("geom", "FLUKA VMC Geometry");
-   if (verbosity > 2) fGeom->SetDebugMode(kTRUE);
-   PrintHeader();
-}
-
-//______________________________________________________________________________ 
-TFluka::~TFluka()
-{
-    // Destructor
-    if (fVerbosityLevel >=3)
-        cout << "<== TFluka::~TFluka() destructor called." << endl;
-    if (fMaterials) delete [] fMaterials;
-    
-//    delete fGeom;
-//    delete fMCGeo;
-    
-    if (fUserConfig) {
-        fUserConfig->Delete();
-        delete fUserConfig;
-    }
-    
-    if (fUserScore) {
-        fUserScore->Delete();
-        delete fUserScore;
-    }
-}
-
-//
-//______________________________________________________________________________
-// TFluka control methods
-//______________________________________________________________________________ 
-void TFluka::Init() {
-//
-//  Geometry initialisation
-//
-    if (fVerbosityLevel >=3) cout << "==> TFluka::Init() called." << endl;
-    
-    if (!gGeoManager) new TGeoManager("geom", "FLUKA geometry");
-    fApplication->ConstructGeometry();
-    if (!gGeoManager->IsClosed()) {
-       TGeoVolume *top = (TGeoVolume*)gGeoManager->GetListOfVolumes()->First();
-       gGeoManager->SetTopVolume(top);
-       gGeoManager->CloseGeometry("di");
-    } else {
-       TGeoNodeCache *cache = gGeoManager->GetCache();
-       if (!cache->HasIdArray()) {
-          Warning("Init", "Node ID tracking must be enabled with TFluka: enabling...\n");
-          cache->BuildIdArray();
-       }   
-    }           
-    fNVolumes = fGeom->NofVolumes();
-    fGeom->CreateFlukaMatFile("flukaMat.inp");   
-    if (fVerbosityLevel >=3) {
-       printf("== Number of volumes: %i\n ==", fNVolumes);
-       cout << "\t* InitPhysics() - Prepare input file to be called" << endl; 
-    }
-
-    fApplication->InitGeometry();
-    fApplication->ConstructOpGeometry();
-    //
-    // Add ions to PDG Data base
-    //
-     AddParticlesToPdgDataBase();
-     fApplication->AddIons();
-    //
-}
-
-
-//______________________________________________________________________________ 
-void TFluka::FinishGeometry() {
-//
-// Build-up table with region to medium correspondance
-//
-  if (fVerbosityLevel >=3) {
-    cout << "==> TFluka::FinishGeometry() called." << endl;
-    printf("----FinishGeometry - applying misalignment if any\n");
-    cout << "<== TFluka::FinishGeometry() called." << endl;
-  }  
-  TVirtualMCApplication::Instance()->MisalignGeometry();
-} 
-
-//______________________________________________________________________________ 
-void TFluka::BuildPhysics() {
-//
-//  Prepare FLUKA input files and call FLUKA physics initialisation
-//
-    
-    if (fVerbosityLevel >=3)
-        cout << "==> TFluka::BuildPhysics() called." << endl;
-
-    
-    if (fVerbosityLevel >=3) {
-        TList *medlist = gGeoManager->GetListOfMedia();
-        TIter next(medlist);
-        TGeoMedium*   med = 0x0;
-        TGeoMaterial* mat = 0x0;
-        Int_t ic = 0;
-        
-        while((med = (TGeoMedium*)next()))
-        {
-            mat = med->GetMaterial();
-            printf("Medium %5d %12s %5d %5d\n", ic, (med->GetName()), med->GetId(), mat->GetIndex());
-            ic++;
-        }
-    }
-    
-
-    // Prepare input file with the current physics settings
-    
-    InitPhysics(); 
-//  Open fortran files    
-    const char* fname = fInputFileName;
-    fluka_openinp(lunin, PASSCHARA(fname));
-    fluka_openout(11, PASSCHARA("fluka.out"));
-//  Read input cards    
-    cout << "==> TFluka::BuildPhysics() Read input cards." << endl;
-    TStopwatch timer;
-    timer.Start();
-    GLOBAL.lfdrtr = true;
-    flukam(1);
-    cout << "<== TFluka::BuildPhysics() Read input cards End"
-         << Form(" R:%.2fs C:%.2fs", timer.RealTime(),timer.CpuTime()) << endl;
-//  Close input file
-    fluka_closeinp(lunin);
-//  Finish geometry    
-    FinishGeometry();
-}  
-
-//______________________________________________________________________________ 
-void TFluka::ProcessEvent() {
-//
-// Process one event
-//
-    if (fStopRun) {
-        Warning("ProcessEvent", "User Run Abortion: No more events handled !\n");
-        fNEvent += 1;
-        return;
-    }
-
-    if (fVerbosityLevel >=3)
-        cout << "==> TFluka::ProcessEvent() called." << endl;
-    fApplication->GeneratePrimaries();
-    SOURCM.lsouit = true;
-    flukam(1);
-    if (fVerbosityLevel >=3)
-        cout << "<== TFluka::ProcessEvent() called." << endl;
-    //
-    // Increase event number
-    //
-    fNEvent += 1;
-}
-
-//______________________________________________________________________________ 
-Bool_t TFluka::ProcessRun(Int_t nevent) {
-//
-// Run steering
-//
-    
-  if (fVerbosityLevel >=3)
-    cout << "==> TFluka::ProcessRun(" << nevent << ") called." 
-         << endl;
-
-  if (fVerbosityLevel >=2) {
-    cout << "\t* GLOBAL.fdrtr = " << (GLOBAL.lfdrtr?'T':'F') << endl;
-    cout << "\t* Calling flukam again..." << endl;
-  }
-
-  Int_t todo = TMath::Abs(nevent);
-  for (Int_t ev = 0; ev < todo; ev++) {
-      TStopwatch timer;
-      timer.Start();
-      fApplication->BeginEvent();
-      ProcessEvent();
-      fApplication->FinishEvent();
-      cout << "Event: "<< ev
-           << Form(" R:%.2fs C:%.2fs", timer.RealTime(),timer.CpuTime()) << endl;
-  }
-
-  if (fVerbosityLevel >=3)
-    cout << "<== TFluka::ProcessRun(" << nevent << ") called." 
-         << endl;
-  
-  // Write fluka specific scoring output
-  genout();
-  newplo();
-  flkend();
-  
-  return kTRUE;
-}
-
-//_____________________________________________________________________________
-// methods for building/management of geometry
-
-// functions from GCONS 
-//____________________________________________________________________________ 
-void TFluka::Gfmate(Int_t imat, char *name, Float_t &a, Float_t &z,  
-                    Float_t &dens, Float_t &radl, Float_t &absl,
-                    Float_t* /*ubuf*/, Int_t& /*nbuf*/) {
-//
-   TGeoMaterial *mat;
-   TIter next (gGeoManager->GetListOfMaterials());
-   while ((mat = (TGeoMaterial*)next())) {
-     if (mat->GetUniqueID() == (UInt_t)imat) break;
-   }
-   if (!mat) {
-      Error("Gfmate", "no material with index %i found", imat);
-      return;
-   }
-   sprintf(name, "%s", mat->GetName());
-   a = mat->GetA();
-   z = mat->GetZ();
-   dens = mat->GetDensity();
-   radl = mat->GetRadLen();
-   absl = mat->GetIntLen();
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Gfmate(Int_t imat, char *name, Double_t &a, Double_t &z,  
-                    Double_t &dens, Double_t &radl, Double_t &absl,
-                    Double_t* /*ubuf*/, Int_t& /*nbuf*/) {
-//
-   TGeoMaterial *mat;
-   TIter next (gGeoManager->GetListOfMaterials());
-   while ((mat = (TGeoMaterial*)next())) {
-     if (mat->GetUniqueID() == (UInt_t)imat) break;
-   }
-   if (!mat) {
-      Error("Gfmate", "no material with index %i found", imat);
-      return;
-   }
-   sprintf(name, "%s", mat->GetName());
-   a = mat->GetA();
-   z = mat->GetZ();
-   dens = mat->GetDensity();
-   radl = mat->GetRadLen();
-   absl = mat->GetIntLen();
-} 
-
-// detector composition
-//______________________________________________________________________________ 
-void TFluka::Material(Int_t& kmat, const char* name, Double_t a, 
-                      Double_t z, Double_t dens, Double_t radl, Double_t absl,
-                      Float_t* buf, Int_t nwbuf) {
-//
-   Double_t* dbuf = fGeom->CreateDoubleArray(buf, nwbuf);  
-   Material(kmat, name, a, z, dens, radl, absl, dbuf, nwbuf);
-   delete [] dbuf;
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Material(Int_t& kmat, const char* name, Double_t a, 
-                      Double_t z, Double_t dens, Double_t radl, Double_t absl,
-                      Double_t* /*buf*/, Int_t /*nwbuf*/) {
-//
-// Define a material
-  TGeoMaterial *mat;
-  kmat = gGeoManager->GetListOfMaterials()->GetSize();
-  if ((z-Int_t(z)) > 1E-3) {
-     mat = fGeom->GetMakeWrongMaterial(z);
-     if (mat) {
-        mat->SetRadLen(radl,absl);
-        mat->SetUniqueID(kmat);
-        return;
-     }
-  }      
-  gGeoManager->Material(name, a, z, dens, kmat, radl, absl);
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Mixture(Int_t& kmat, const char *name, Float_t *a, 
-                     Float_t *z, Double_t dens, Int_t nlmat, Float_t *wmat) {
-//
-// Define a material mixture
-//
-  Double_t* da = fGeom->CreateDoubleArray(a, TMath::Abs(nlmat));  
-  Double_t* dz = fGeom->CreateDoubleArray(z, TMath::Abs(nlmat));  
-  Double_t* dwmat = fGeom->CreateDoubleArray(wmat, TMath::Abs(nlmat));  
-
-  Mixture(kmat, name, da, dz, dens, nlmat, dwmat);
-  for (Int_t i=0; i<nlmat; i++) {
-    a[i] = da[i]; z[i] = dz[i]; wmat[i] = dwmat[i];
-  }  
-
-  delete [] da;
-  delete [] dz;
-  delete [] dwmat;
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Mixture(Int_t& kmat, const char *name, Double_t *a, 
-                     Double_t *z, Double_t dens, Int_t nlmat, Double_t *wmat) {
-//
-  // Defines mixture OR COMPOUND IMAT as composed by 
-  // THE BASIC NLMAT materials defined by arrays A,Z and WMAT
-  // 
-  // If NLMAT > 0 then wmat contains the proportion by
-  // weights of each basic material in the mixture. 
-  // 
-  // If nlmat < 0 then WMAT contains the number of atoms 
-  // of a given kind into the molecule of the COMPOUND
-  // In this case, WMAT in output is changed to relative
-  // weigths.
-  //
-  Int_t i,j;
-  if (nlmat < 0) {
-     nlmat = - nlmat;
-     Double_t amol = 0;
-     for (i=0;i<nlmat;i++) {
-        amol += a[i]*wmat[i];
-     }
-     for (i=0;i<nlmat;i++) {
-        wmat[i] *= a[i]/amol;
-     }
-  }
-  kmat = gGeoManager->GetListOfMaterials()->GetSize();
-  // Check if we have elements with fractional Z
-  TGeoMaterial *mat = 0;
-  TGeoMixture *mix = 0;
-  Bool_t mixnew = kFALSE;
-  for (i=0; i<nlmat; i++) {
-     if (z[i]-Int_t(z[i]) < 1E-3) continue;
-     // We have found an element with fractional Z -> loop mixtures to look for it
-     for (j=0; j<kmat; j++) {
-        mat = (TGeoMaterial*)gGeoManager->GetListOfMaterials()->At(j);
-        if (!mat) break;
-        if (!mat->IsMixture()) continue;
-        mix = (TGeoMixture*)mat;
-        if (TMath::Abs(z[i]-mix->GetZ()) >1E-3) continue;
-        mixnew = kTRUE;
-        break;
-     }
-     if (!mixnew) Warning("Mixture","%s : cannot find component %i with fractional Z=%f\n", name, i, z[i]);
-     break;
-  }   
-  if (mixnew) {
-     Int_t nlmatnew = nlmat+mix->GetNelements()-1;
-     Double_t *anew = new Double_t[nlmatnew];
-     Double_t *znew = new Double_t[nlmatnew];
-     Double_t *wmatnew = new Double_t[nlmatnew];
-     Int_t ind=0;
-     for (j=0; j<nlmat; j++) {
-        if (j==i) continue;
-        anew[ind] = a[j];
-        znew[ind] = z[j];
-        wmatnew[ind] = wmat[j];
-        ind++;
-     }
-     for (j=0; j<mix->GetNelements(); j++) {
-        anew[ind] = mix->GetAmixt()[j];
-        znew[ind] = mix->GetZmixt()[j];
-        wmatnew[ind] = wmat[i]*mix->GetWmixt()[j];
-        ind++;
-     }
-     Mixture(kmat, name, anew, znew, dens, nlmatnew, wmatnew);
-     delete [] anew;
-     delete [] znew;
-     delete [] wmatnew;
-     return;
-  }   
-  // Now we need to compact identical elements within the mixture
-  // First check if this happens   
-  mixnew = kFALSE;  
-  for (i=0; i<nlmat-1; i++) {
-     for (j=i+1; j<nlmat; j++) {
-        if (z[i] == z[j]) {
-           mixnew = kTRUE;
-           break;
-        }
-     }   
-     if (mixnew) break;
-  }   
-  if (mixnew) {
-     Int_t nlmatnew = 0;
-     Double_t *anew = new Double_t[nlmat];
-     Double_t *znew = new Double_t[nlmat];
-     memset(znew, 0, nlmat*sizeof(Double_t));
-     Double_t *wmatnew = new Double_t[nlmat];
-     Bool_t skipi;
-     for (i=0; i<nlmat; i++) {
-        skipi = kFALSE;
-        for (j=0; j<nlmatnew; j++) {
-           if (z[i] == z[j]) {
-              wmatnew[j] += wmat[i];
-              skipi = kTRUE;
-              break;
-           }
-        }   
-        if (skipi) continue;    
-        anew[nlmatnew] = a[i];
-        znew[nlmatnew] = z[i];
-        wmatnew[nlmatnew] = wmat[i];
-        nlmatnew++;
-     }
-     Mixture(kmat, name, anew, znew, dens, nlmatnew, wmatnew);
-     delete [] anew;
-     delete [] znew;
-     delete [] wmatnew;
-     return;     
-   }
-  gGeoManager->Mixture(name, a, z, dens, nlmat, wmat, kmat);
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Medium(Int_t& kmed, const char *name, Int_t nmat, 
-                    Int_t isvol, Int_t ifield, Double_t fieldm, Double_t tmaxfd,
-                    Double_t stemax, Double_t deemax, Double_t epsil,
-                    Double_t stmin, Float_t* ubuf, Int_t nbuf) {
-  // Define a medium
-  // 
-  kmed = gGeoManager->GetListOfMedia()->GetSize()+1;
-  fMCGeo->Medium(kmed, name, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax, 
-             epsil, stmin, ubuf, nbuf);
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Medium(Int_t& kmed, const char *name, Int_t nmat, 
-                    Int_t isvol, Int_t ifield, Double_t fieldm, Double_t tmaxfd,
-                    Double_t stemax, Double_t deemax, Double_t epsil,
-                    Double_t stmin, Double_t* ubuf, Int_t nbuf) {
-  // Define a medium
-  // 
-  kmed = gGeoManager->GetListOfMedia()->GetSize()+1;
-  fMCGeo->Medium(kmed, name, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax, 
-             epsil, stmin, ubuf, nbuf);
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Matrix(Int_t& krot, Double_t thetaX, Double_t phiX, 
-                    Double_t thetaY, Double_t phiY, Double_t thetaZ,
-                    Double_t phiZ) {
-//        
-  krot = gGeoManager->GetListOfMatrices()->GetEntriesFast();
-  fMCGeo->Matrix(krot, thetaX, phiX, thetaY, phiY, thetaZ, phiZ); 
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Gstpar(Int_t itmed, const char* param, Double_t parval) {
-//
-//
-//
-   Bool_t process = kFALSE;
-   Bool_t modelp  = kFALSE;
-   
-   if (strncmp(param, "DCAY",  4) == 0 ||
-       strncmp(param, "PAIR",  4) == 0 ||
-       strncmp(param, "COMP",  4) == 0 ||
-       strncmp(param, "PHOT",  4) == 0 ||
-       strncmp(param, "PFIS",  4) == 0 ||
-       strncmp(param, "DRAY",  4) == 0 ||
-       strncmp(param, "ANNI",  4) == 0 ||
-       strncmp(param, "BREM",  4) == 0 ||
-       strncmp(param, "MUNU",  4) == 0 ||
-       strncmp(param, "CKOV",  4) == 0 ||
-       strncmp(param, "HADR",  4) == 0 ||
-       strncmp(param, "LOSS",  4) == 0 ||
-       strncmp(param, "MULS",  4) == 0 ||
-       strncmp(param, "RAYL",  4) == 0 ||
-       strncmp(param, "STRA",  4) == 0) 
-   {
-       process = kTRUE;
-   } 
-   
-   if (strncmp(param, "PRIMIO_N",  8) == 0 ||
-       strncmp(param, "PRIMIO_E",  8) == 0)
-   {
-       modelp = kTRUE;
-   }
-   
-   if (process) {
-       // Process switch
-       SetProcess(param, Int_t (parval), itmed);
-   } else if (modelp) {
-       // Model parameters
-       SetModelParameter(param, parval, itmed);
-   } else {
-       // Cuts
-       SetCut(param, parval, itmed);
-   }
-   
-   
-}    
-
-// functions from GGEOM 
-//_____________________________________________________________________________
-void TFluka::Gsatt(const char *name, const char *att, Int_t val)
-{ 
-  // Set visualisation attributes for one volume
-  char vname[5];
-  fGeom->Vname(name,vname);
-  char vatt[5];
-  fGeom->Vname(att,vatt);
-  gGeoManager->SetVolumeAttribute(vname, vatt, val);
-}
-
-//______________________________________________________________________________ 
-Int_t TFluka::Gsvolu(const char *name, const char *shape, Int_t nmed,  
-                     Float_t *upar, Int_t np)  {
-//
-    return fMCGeo->Gsvolu(name, shape, nmed, upar, np); 
-}
-
-//______________________________________________________________________________ 
-Int_t TFluka::Gsvolu(const char *name, const char *shape, Int_t nmed,  
-                     Double_t *upar, Int_t np)  {
-//
-    return fMCGeo->Gsvolu(name, shape, nmed, upar, np); 
-}
-//______________________________________________________________________________ 
-void TFluka::Gsdvn(const char *name, const char *mother, Int_t ndiv, 
-                   Int_t iaxis) {
-//
-    fMCGeo->Gsdvn(name, mother, ndiv, iaxis); 
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Gsdvn2(const char *name, const char *mother, Int_t ndiv, 
-                    Int_t iaxis, Double_t c0i, Int_t numed) {
-//
-    fMCGeo->Gsdvn2(name, mother, ndiv, iaxis, c0i, numed); 
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Gsdvt(const char *name, const char *mother, Double_t step, 
-                   Int_t iaxis, Int_t numed, Int_t ndvmx) {
-//        
-    fMCGeo->Gsdvt(name, mother, step, iaxis, numed, ndvmx); 
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Gsdvt2(const char *name, const char *mother, Double_t step, 
-                    Int_t iaxis, Double_t c0, Int_t numed, Int_t ndvmx) {
-//
-    fMCGeo->Gsdvt2(name, mother, step, iaxis, c0, numed, ndvmx); 
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Gsord(const char * /*name*/, Int_t /*iax*/) {
-//
-// Nothing to do with TGeo
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Gspos(const char *name, Int_t nr, const char *mother,  
-                   Double_t x, Double_t y, Double_t z, Int_t irot,
-                   const char *konly) {
-//
-  fMCGeo->Gspos(name, nr, mother, x, y, z, irot, konly); 
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Gsposp(const char *name, Int_t nr, const char *mother,  
-                    Double_t x, Double_t y, Double_t z, Int_t irot,
-                    const char *konly, Float_t *upar, Int_t np)  {
-  //
-  fMCGeo->Gsposp(name, nr, mother, x, y, z, irot, konly, upar, np); 
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Gsposp(const char *name, Int_t nr, const char *mother,  
-                    Double_t x, Double_t y, Double_t z, Int_t irot,
-                    const char *konly, Double_t *upar, Int_t np)  {
-  //
-  fMCGeo->Gsposp(name, nr, mother, x, y, z, irot, konly, upar, np); 
-} 
-
-//______________________________________________________________________________ 
-void TFluka::Gsbool(const char* /*onlyVolName*/, const char* /*manyVolName*/) {
-//
-// Nothing to do with TGeo
-}
-
-//______________________________________________________________________
-Bool_t TFluka::GetTransformation(const TString &volumePath,TGeoHMatrix &mat)
-{
-    // Returns the Transformation matrix between the volume specified
-    // by the path volumePath and the Top or mater volume. The format
-    // of the path volumePath is as follows (assuming ALIC is the Top volume)
-    // "/ALIC_1/DDIP_1/S05I_2/S05H_1/S05G_3". Here ALIC is the top most
-    // or master volume which has only 1 instance of. Of all of the daughter
-    // volumes of ALICE, DDIP volume copy #1 is indicated. Similarly for
-    // the daughter volume of DDIP is S05I copy #2 and so on.
-    // Inputs:
-    //   TString& volumePath  The volume path to the specific volume
-    //                        for which you want the matrix. Volume name
-    //                        hierarchy is separated by "/" while the
-    //                        copy number is appended using a "_".
-    // Outputs:
-    //  TGeoHMatrix &mat      A matrix with its values set to those
-    //                        appropriate to the Local to Master transformation
-    // Return:
-    //   A logical value if kFALSE then an error occurred and no change to
-    //   mat was made.
-
-   // We have to preserve the modeler state
-   return fMCGeo->GetTransformation(volumePath, mat);
-}   
-   
-//______________________________________________________________________
-Bool_t TFluka::GetShape(const TString &volumePath,TString &shapeType,
-                        TArrayD &par)
-{
-    // Returns the shape and its parameters for the volume specified
-    // by volumeName.
-    // Inputs:
-    //   TString& volumeName  The volume name
-    // Outputs:
-    //   TString &shapeType   Shape type
-    //   TArrayD &par         A TArrayD of parameters with all of the
-    //                        parameters of the specified shape.
-    // Return:
-    //   A logical indicating whether there was an error in getting this
-    //   information
-   return fMCGeo->GetShape(volumePath, shapeType, par);
-}
-   
-//______________________________________________________________________
-Bool_t TFluka::GetMaterial(const TString &volumeName,
-                            TString &name,Int_t &imat,
-                            Double_t &a,Double_t &z,Double_t &dens,
-                            Double_t &radl,Double_t &inter,TArrayD &par)
-{
-    // Returns the Material and its parameters for the volume specified
-    // by volumeName.
-    // Note, Geant3 stores and uses mixtures as an element with an effective
-    // Z and A. Consequently, if the parameter Z is not integer, then
-    // this material represents some sort of mixture.
-    // Inputs:
-    //   TString& volumeName  The volume name
-    // Outputs:
-    //   TSrting   &name       Material name
-    //   Int_t     &imat       Material index number
-    //   Double_t  &a          Average Atomic mass of material
-    //   Double_t  &z          Average Atomic number of material
-    //   Double_t  &dens       Density of material [g/cm^3]
-    //   Double_t  &radl       Average radiation length of material [cm]
-    //   Double_t  &inter      Average interaction length of material [cm]
-    //   TArrayD   &par        A TArrayD of user defined parameters.
-    // Return:
-    //   kTRUE if no errors
-   return fMCGeo->GetMaterial(volumeName,name,imat,a,z,dens,radl,inter,par);
-}
-
-//______________________________________________________________________
-Bool_t TFluka::GetMedium(const TString &volumeName,TString &name,
-                         Int_t &imed,Int_t &nmat,Int_t &isvol,Int_t &ifield,
-                         Double_t &fieldm,Double_t &tmaxfd,Double_t &stemax,
-                         Double_t &deemax,Double_t &epsil, Double_t &stmin,
-                         TArrayD &par)
-{
-    // Returns the Medium and its parameters for the volume specified
-    // by volumeName.
-    // Inputs:
-    //   TString& volumeName  The volume name.
-    // Outputs:
-    //   TString  &name       Medium name
-    //   Int_t    &nmat       Material number defined for this medium
-    //   Int_t    &imed       The medium index number
-    //   Int_t    &isvol      volume number defined for this medium
-    //   Int_t    &iflield    Magnetic field flag
-    //   Double_t &fieldm     Magnetic field strength
-    //   Double_t &tmaxfd     Maximum angle of deflection per step
-    //   Double_t &stemax     Maximum step size
-    //   Double_t &deemax     Maximum fraction of energy allowed to be lost
-    //                        to continuous process.
-    //   Double_t &epsil      Boundary crossing precision
-    //   Double_t &stmin      Minimum step size allowed
-    //   TArrayD  &par        A TArrayD of user parameters with all of the
-    //                        parameters of the specified medium.
-    // Return:
-    //   kTRUE if there where no errors
-   return fMCGeo->GetMedium(volumeName,name,imed,nmat,isvol,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin,par);
-}         
-
-//______________________________________________________________________________ 
-void TFluka::SetCerenkov(Int_t itmed, Int_t npckov, Float_t* ppckov,
-                         Float_t* absco, Float_t* effic, Float_t* rindex) {
-//
-// Set Cerenkov properties for medium itmed
-//
-// npckov: number of sampling points
-// ppckov: energy values
-// absco:  absorption length
-// effic:  quantum efficiency
-// rindex: refraction index
-//
-//
-//  
-//  Create object holding Cerenkov properties
-// 
-    
-    TFlukaCerenkov* cerenkovProperties = new TFlukaCerenkov(npckov, ppckov, absco, effic, rindex);
-//
-//  Pass object to medium
-    TGeoMedium* medium = gGeoManager->GetMedium(itmed);
-    medium->SetCerenkovProperties(cerenkovProperties);
-}  
-
-void TFluka::SetCerenkov(Int_t itmed, Int_t npckov, Float_t* ppckov,
-                         Float_t* absco, Float_t* effic, Float_t* rindex, Float_t* rfl) {
-//
-// Set Cerenkov properties for medium itmed
-//
-// npckov: number of sampling points
-// ppckov: energy values
-// absco:  absorption length
-// effic:  quantum efficiency
-// rindex: refraction index
-// rfl:    reflectivity for boundary to medium itmed
-//
-//  
-//  Create object holding Cerenkov properties
-//  
-    TFlukaCerenkov* cerenkovProperties = new TFlukaCerenkov(npckov, ppckov, absco, effic, rindex, rfl);
-//
-//  Pass object to medium
-    TGeoMedium* medium = gGeoManager->GetMedium(itmed);
-    medium->SetCerenkovProperties(cerenkovProperties);
-}  
-
-
-//______________________________________________________________________________ 
-void TFluka::SetCerenkov(Int_t itmed, Int_t npckov, Double_t *ppckov,
-                         Double_t *absco, Double_t *effic, Double_t *rindex) {
-//
-// Set Cerenkov properties for medium itmed
-//
-// npckov: number of sampling points
-// ppckov: energy values
-// absco:  absorption length
-// effic:  quantum efficiency
-// rindex: refraction index
-//
-
-//
-//  Double_t version 
-  Float_t* fppckov = CreateFloatArray(ppckov, npckov);
-  Float_t* fabsco  = CreateFloatArray(absco,  npckov);
-  Float_t* feffic  = CreateFloatArray(effic,  npckov);
-  Float_t* frindex = CreateFloatArray(rindex, npckov);
-
-  SetCerenkov(itmed, npckov, fppckov, fabsco, feffic, frindex);
-
-  delete [] fppckov;
-  delete [] fabsco;
-  delete [] feffic;
-  delete [] frindex;
-}  
-
-void TFluka::SetCerenkov(Int_t itmed, Int_t npckov, Double_t* ppckov,
-                         Double_t* absco, Double_t* effic, Double_t* rindex, Double_t* rfl) {
-//
-// Set Cerenkov properties for medium itmed
-//
-// npckov: number of sampling points
-// ppckov: energy values
-// absco:  absorption length
-// effic:  quantum efficiency
-// rindex: refraction index
-// rfl:    reflectivity for boundary to medium itmed
-//
-
-//
-// //  Double_t version 
-  Float_t* fppckov = CreateFloatArray(ppckov, npckov);
-  Float_t* fabsco  = CreateFloatArray(absco,  npckov);
-  Float_t* feffic  = CreateFloatArray(effic,  npckov);
-  Float_t* frindex = CreateFloatArray(rindex, npckov);
-  Float_t* frfl    = CreateFloatArray(rfl,    npckov);
-
-  SetCerenkov(itmed, npckov, fppckov, fabsco, feffic, frindex, frfl);
-
-  delete [] fppckov;
-  delete [] fabsco;
-  delete [] feffic;
-  delete [] frindex;
-  delete [] frfl;
-}
-
-// Euclid
-//______________________________________________________________________________ 
-void TFluka::WriteEuclid(const char* /*fileName*/, const char* /*topVol*/, 
-                          Int_t /*number*/, Int_t /*nlevel*/) {
-//
-// Not with TGeo
-   Warning("WriteEuclid", "Not implemented !");
-} 
-
-
-
-//_____________________________________________________________________________
-// methods needed by the stepping
-//____________________________________________________________________________ 
-
-Int_t TFluka::GetMedium() const {
-//
-//  Get the medium number for the current fluka region
-//
-    if (gGeoManager->IsOutside()) {
-       return (-1);
-    } else {
-       return (fGeom->GetMedium()); // this I need to check due to remapping !!!
-    }
-}
-
-//____________________________________________________________________________ 
-Int_t TFluka::GetDummyRegion() const
-{
-// Returns index of the dummy region.
-   return fGeom->GetDummyRegion();
-}   
-
-//____________________________________________________________________________ 
-Int_t TFluka::GetDummyLattice() const
-{
-// Returns index of the dummy lattice.
-   return fGeom->GetDummyLattice();
-}   
-
-//____________________________________________________________________________ 
-// particle table usage
-// ID <--> PDG transformations
-//_____________________________________________________________________________
-Int_t TFluka::IdFromPDG(Int_t pdg) const 
-{
-
-    //
-    // Return Fluka code from PDG and pseudo ENDF code
-    Int_t idSpecial[4] = {TFlukaIon::GetIonPdg(2,4), 
-                         TFlukaIon::GetIonPdg(2,3), 
-                         TFlukaIon::GetIonPdg(1,3), 
-                         TFlukaIon::GetIonPdg(1,2)};    
-    // Catch the feedback photons
-    if (pdg == 50000051) return (kFLUKAoptical);
-
-    // Light ions (d,t,h3,alpha)
-    for (Int_t i = 0; i < 4; i++) {
-       if (pdg == idSpecial[i]) return (i + kFLUKAcodemin);
-    }
-    
-    // Heavy ions
-    if (pdg > TFlukaIon::GetIonPdg(1,1)) return (-2);
-
-    // MCIHAD() goes from pdg to fluka internal.
-    Int_t intfluka = mcihad(pdg);
-    // KPTOIP array goes from internal to official
-    return GetFlukaKPTOIP(intfluka);
-}
-
-//______________________________________________________________________________ 
-Int_t TFluka::PDGFromId(Int_t id) const 
-{
-  //
-  // Return PDG code and pseudo ENDF code from Fluka code
-    Int_t idSpecial[6] = {TFlukaIon::GetIonPdg(2,4), // alpha 
-                         TFlukaIon::GetIonPdg(2,3), // He3
-                         TFlukaIon::GetIonPdg(1,3), // triton
-                         TFlukaIon::GetIonPdg(1,2), // deuteron 
-                         TFlukaIon::GetIonPdg(0,0), // gen. ion 
-                         50000050};
-  // IPTOKP array goes from official to internal
-
-    if (id == kFLUKAoptical) {
-// Cerenkov photon
-//        if (fVerbosityLevel >= 3)
-//            printf("\n PDGFromId: Cerenkov Photon \n");
-        return  50000050;
-    }
-// Error id    
-    if (id == 0 || id < kFLUKAcodemin || id > kFLUKAcodemax) {
-        if (fVerbosityLevel >= 3)
-            printf("PDGFromId: Error id = 0 %5d %5d\n", id, fCaller);
-        return -1;
-    }
-// Good id    
-    if (id > 0) {
-        Int_t intfluka = GetFlukaIPTOKP(id);
-        if (intfluka == 0) {
-            if (fVerbosityLevel >= 3)
-                printf("PDGFromId: Error intfluka = 0: %d\n", id);
-            return -1;
-        } else if (intfluka < 0) {
-            if (fVerbosityLevel >= 3)
-                printf("PDGFromId: Error intfluka < 0: %d\n", id);
-            return -1;
-        }
-//        if (fVerbosityLevel >= 3)
-//            printf("mpdgha called with %d %d \n", id, intfluka);
-        return mpdgha(intfluka);
-    } else {
-        // ions and optical photons
-        return idSpecial[id - kFLUKAcodemin];
-    }
-}
-
-void TFluka::StopTrack()
-{
-    // Set stopping conditions
-    // Works for photons and charged particles
-    fStopped = kTRUE;
-}
-  
-//_____________________________________________________________________________
-// methods for physics management
-//____________________________________________________________________________ 
-//
-// set methods
-//
-
-void TFluka::SetProcess(const char* flagName, Int_t flagValue, Int_t imed)
-{
-//  Set process user flag for material imat
-//
-//    
-//  Update if already in the list
-//
-    TIter next(fUserConfig);
-    TFlukaConfigOption* proc;
-    while((proc = (TFlukaConfigOption*)next()))
-    { 
-        if (proc->Medium() == imed) {
-            proc->SetProcess(flagName, flagValue);
-            return;
-        }
-    }
-    proc = new TFlukaConfigOption(imed);
-    proc->SetProcess(flagName, flagValue);
-    fUserConfig->Add(proc);
-}
-
-//______________________________________________________________________________ 
-Bool_t TFluka::SetProcess(const char* flagName, Int_t flagValue)
-{
-//  Set process user flag 
-//
-//    
-    SetProcess(flagName, flagValue, -1);
-    return kTRUE;  
-}
-
-//______________________________________________________________________________ 
-void TFluka::SetCut(const char* cutName, Double_t cutValue, Int_t imed)
-{
-// Set user cut value for material imed
-//
-    TIter next(fUserConfig);
-    TFlukaConfigOption* proc;
-    while((proc = (TFlukaConfigOption*)next()))
-    { 
-        if (proc->Medium() == imed) {
-            proc->SetCut(cutName, cutValue);
-            return;
-        }
-    }
-
-    proc = new TFlukaConfigOption(imed);
-    proc->SetCut(cutName, cutValue);
-    fUserConfig->Add(proc);
-}
-
-
-//______________________________________________________________________________ 
-void TFluka::SetModelParameter(const char* parName, Double_t parValue, Int_t imed)
-{
-// Set model parameter for material imed
-//
-    TIter next(fUserConfig);
-    TFlukaConfigOption* proc;
-    while((proc = (TFlukaConfigOption*)next()))
-    { 
-        if (proc->Medium() == imed) {
-            proc->SetModelParameter(parName, parValue);
-            return;
-        }
-    }
-
-    proc = new TFlukaConfigOption(imed);
-    proc->SetModelParameter(parName, parValue);
-    fUserConfig->Add(proc);
-}
-
-//______________________________________________________________________________ 
-Bool_t TFluka::SetCut(const char* cutName, Double_t cutValue)
-{
-// Set user cut value 
-//
-//    
-    SetCut(cutName, cutValue, -1);
-    return kTRUE;
-}
-
-
-void TFluka::SetUserScoring(const char* option, const char* sdum, Int_t npr, char* outfile, Float_t* what)
-{
-//
-// Adds a user scoring option to the list
-//
-    TFlukaScoringOption* opt = new TFlukaScoringOption(option, sdum, npr,outfile,what);
-    fUserScore->Add(opt);
-}
-//______________________________________________________________________________
-void TFluka::SetUserScoring(const char* option, const char* sdum, Int_t npr, char* outfile, Float_t* what, 
-                           const char* det1, const char* det2, const char* det3)
-{
-//
-// Adds a user scoring option to the list
-//
-    TFlukaScoringOption* opt = new TFlukaScoringOption(option, sdum, npr, outfile, what, det1, det2, det3);
-    fUserScore->Add(opt);
-}
-
-//______________________________________________________________________________ 
-Double_t TFluka::Xsec(char*, Double_t, Int_t, Int_t)
-{
-  Warning("Xsec", "Not yet implemented.!\n"); return -1.;
-}
-
-
-//______________________________________________________________________________ 
-void TFluka::InitPhysics()
-{
-//
-// Physics initialisation with preparation of FLUKA input cards
-//
-// Construct file names
-    FILE *pFlukaVmcCoreInp, *pFlukaVmcFlukaMat, *pFlukaVmcInp;
-    TString sFlukaVmcTmp = "flukaMat.inp";
-    TString sFlukaVmcInp = GetInputFileName();
-    TString sFlukaVmcCoreInp = GetCoreInputFileName();
-    
-// Open files 
-    if ((pFlukaVmcCoreInp = fopen(sFlukaVmcCoreInp.Data(),"r")) == NULL) {
-        Warning("InitPhysics", "\nCannot open file %s\n",sFlukaVmcCoreInp.Data());
-        exit(1);
-    }
-    if ((pFlukaVmcFlukaMat = fopen(sFlukaVmcTmp.Data(),"r")) == NULL) {
-        Warning("InitPhysics", "\nCannot open file %s\n",sFlukaVmcTmp.Data());
-        exit(1);
-    }
-    if ((pFlukaVmcInp = fopen(sFlukaVmcInp.Data(),"w")) == NULL) {
-        Warning("InitPhysics", "\nCannot open file %s\n",sFlukaVmcInp.Data());
-        exit(1);
-    }
-
-// Copy core input file 
-    Char_t sLine[255];
-    Float_t fEventsPerRun;
-    
-    while ((fgets(sLine,255,pFlukaVmcCoreInp)) != NULL) {
-        if (strncmp(sLine,"GEOEND",6) != 0)
-            fprintf(pFlukaVmcInp,"%s",sLine); // copy until GEOEND card
-        else {
-            fprintf(pFlukaVmcInp,"GEOEND\n");   // add GEOEND card
-            goto flukamat;
-        }
-    } // end of while until GEOEND card
-    
-
- flukamat:
-    while ((fgets(sLine,255,pFlukaVmcFlukaMat)) != NULL) { // copy flukaMat.inp file
-        fprintf(pFlukaVmcInp,"%s\n",sLine);
-    }
-    
-    while ((fgets(sLine,255,pFlukaVmcCoreInp)) != NULL) { 
-        if (strncmp(sLine,"START",5) != 0)
-            fprintf(pFlukaVmcInp,"%s\n",sLine);
-        else {
-            sscanf(sLine+10,"%10f",&fEventsPerRun);
-            goto fin;
-        }
-    } //end of while until START card
-    
- fin:
-
-    
-// Pass information to configuration objects
-    
-    Float_t fLastMaterial = fGeom->GetLastMaterialIndex();
-    TFlukaConfigOption::SetStaticInfo(pFlukaVmcInp, 3, fLastMaterial, fGeom);
-    
-    TIter next(fUserConfig);
-    TFlukaConfigOption* proc;
-    while((proc = dynamic_cast<TFlukaConfigOption*> (next()))) proc->WriteFlukaInputCards();
-//
-// Process Fluka specific scoring options
-//
-    TFlukaScoringOption::SetStaticInfo(pFlukaVmcInp, fGeom);
-    Float_t loginp        = -49.0;
-    Int_t inp             = 0;
-    Int_t nscore          = fUserScore->GetEntries();
-    
-    TFlukaScoringOption *mopo = 0;
-    TFlukaScoringOption *mopi = 0;
-
-    for (Int_t isc = 0; isc < nscore; isc++) 
-    {
-        mopo = dynamic_cast<TFlukaScoringOption*> (fUserScore->At(isc));
-        char*    fileName = mopo->GetFileName();
-        Int_t    size     = strlen(fileName);
-        Float_t  lun      = -1.;
-//
-// Check if new output file has to be opened
-        for (Int_t isci = 0; isci < isc; isci++) {
-
-        
-            mopi = dynamic_cast<TFlukaScoringOption*> (fUserScore->At(isci));
-            if(strncmp(mopi->GetFileName(), fileName, size)==0) {
-                //
-                // No, the file already exists
-                lun = mopi->GetLun();
-                mopo->SetLun(lun);
-                break;
-            }
-        } // inner loop
-
-        if (lun == -1.) {
-            // Open new output file
-            inp++;
-            mopo->SetLun(loginp + inp);
-            mopo->WriteOpenFlukaFile();
-        }
-        mopo->WriteFlukaInputCards();
-    }
-
-// Add RANDOMIZ card
-    fprintf(pFlukaVmcInp,"RANDOMIZ  %10.1f%10.0f\n", 1., Float_t(gRandom->GetSeed()));
-// User defined ion
-    if (fUserIons) TFlukaIon::WriteUserInputCard(pFlukaVmcInp);
-// Add START and STOP card
-    fprintf(pFlukaVmcInp,"START     %10.1f\n",fEventsPerRun);
-    fprintf(pFlukaVmcInp,"STOP      \n");
-   
-  
-// Close files
-   fclose(pFlukaVmcCoreInp);
-   fclose(pFlukaVmcFlukaMat);
-   fclose(pFlukaVmcInp);
-
-
-//
-// Initialisation needed for Cerenkov photon production and transport
-    TObjArray *matList = GetFlukaMaterials();
-    Int_t nmaterial =  matList->GetEntriesFast();
-    fMaterials = new Int_t[nmaterial+25];
-    
-    for (Int_t im = 0; im < nmaterial; im++)
-    {
-        TGeoMaterial* material = dynamic_cast<TGeoMaterial*> (matList->At(im));
-        Int_t idmat = material->GetIndex();
-        fMaterials[idmat] = im;
-    }
-} // end of InitPhysics
-
-
-//______________________________________________________________________________ 
-void TFluka::SetMaxStep(Double_t step)
-{
-// Set the maximum step size
-//    if (step > 1.e4) return;
-    
-//    Int_t mreg=0, latt=0;
-//    fGeom->GetCurrentRegion(mreg, latt);
-
-    
-    Int_t mreg = fGeom->GetCurrentRegion();
-    STEPSZ.stepmx[mreg - 1] = step;
-}
-
-
-Double_t TFluka::MaxStep() const
-{
-// Return the maximum for current medium
-    Int_t mreg, latt;
-    fGeom->GetCurrentRegion(mreg, latt);
-    return (STEPSZ.stepmx[mreg - 1]);
-}
-
-//______________________________________________________________________________ 
-void TFluka::SetMaxNStep(Int_t)
-{
-// SetMaxNStep is dummy procedure in TFluka !
-  if (fVerbosityLevel >=3)
-  cout << "SetMaxNStep is dummy procedure in TFluka !" << endl;
-}
-
-//______________________________________________________________________________ 
-void TFluka::SetUserDecay(Int_t)
-{
-// SetUserDecay is dummy procedure in TFluka !
-  if (fVerbosityLevel >=3)
-  cout << "SetUserDecay is dummy procedure in TFluka !" << endl;
-}
-
-//
-// dynamic properties
-//
-//______________________________________________________________________________ 
-void TFluka::TrackPosition(TLorentzVector& position) const
-{
-// Return the current position in the master reference frame of the
-// track being transported
-// TRACKR.atrack = age of the particle
-// TRACKR.xtrack = x-position of the last point
-// TRACKR.ytrack = y-position of the last point
-// TRACKR.ztrack = z-position of the last point
-  FlukaCallerCode_t caller = GetCaller();
-  if (caller == kENDRAW    || caller == kUSDRAW || 
-      caller == kBXExiting || caller == kBXEntering || 
-      caller == kUSTCKV) { 
-      position.SetX(GetXsco());
-      position.SetY(GetYsco());
-      position.SetZ(GetZsco());
-      position.SetT(TRACKR.atrack);
-  }
-  else if (caller == kMGDRAW) {
-      Int_t i = -1;
-      if ((i = fPrimaryElectronIndex) > -1) {
-         // Primary Electron Ionisation
-         Double_t x, y, z, t;
-         GetPrimaryElectronPosition(i, x, y, z, t);
-         position.SetX(x);
-         position.SetY(y);
-         position.SetZ(z);
-         position.SetT(t);
-      } else {
-         position.SetX(TRACKR.xtrack[TRACKR.ntrack]);
-         position.SetY(TRACKR.ytrack[TRACKR.ntrack]);
-         position.SetZ(TRACKR.ztrack[TRACKR.ntrack]);
-         position.SetT(TRACKR.atrack);
-      }
-  }
-  else if (caller == kSODRAW) { 
-      Int_t ist = FLKSTK.npflka;
-      position.SetX(FLKSTK.xflk[ist]);
-      position.SetY(FLKSTK.yflk[ist]);
-      position.SetZ(FLKSTK.zflk[ist]);
-      position.SetT(FLKSTK.agestk[ist]);
-  } else if (caller == kMGResumedTrack) { 
-      position.SetX(TRACKR.spausr[0]);
-      position.SetY(TRACKR.spausr[1]);
-      position.SetZ(TRACKR.spausr[2]);
-      position.SetT(TRACKR.spausr[3]);
-  }
-  else
-      Warning("TrackPosition","position not available");
-}
-
-//______________________________________________________________________________ 
-void TFluka::TrackPosition(Double_t& x, Double_t& y, Double_t& z) const
-{
-// Return the current position in the master reference frame of the
-// track being transported
-// TRACKR.atrack = age of the particle
-// TRACKR.xtrack = x-position of the last point
-// TRACKR.ytrack = y-position of the last point
-// TRACKR.ztrack = z-position of the last point
-  FlukaCallerCode_t caller = GetCaller();
-  if (caller == kENDRAW    || caller == kUSDRAW || 
-      caller == kBXExiting || caller == kBXEntering || 
-      caller == kUSTCKV) { 
-      x = GetXsco();
-      y = GetYsco();
-      z = GetZsco();
-  }
-  else if (caller == kMGDRAW) { 
-      Int_t i = -1;
-      if ((i = fPrimaryElectronIndex) > -1) {
-         Double_t t;
-         GetPrimaryElectronPosition(i, x, y, z, t);
-      } else {
-         x = TRACKR.xtrack[TRACKR.ntrack];
-         y = TRACKR.ytrack[TRACKR.ntrack];
-         z = TRACKR.ztrack[TRACKR.ntrack];
-      }
-  }
-  else if (caller == kSODRAW) { 
-      Int_t ist = FLKSTK.npflka;
-      x = FLKSTK.xflk[ist];
-      y = FLKSTK.yflk[ist];
-      z = FLKSTK.zflk[ist];
-  }
-  else if (caller == kMGResumedTrack) {
-      x = TRACKR.spausr[0];
-      y = TRACKR.spausr[1];
-      z = TRACKR.spausr[2];
-  }
-  else
-      Warning("TrackPosition","position not available");
-}
-
-//______________________________________________________________________________ 
-void TFluka::TrackMomentum(TLorentzVector& momentum) const
-{
-// Return the direction and the momentum (GeV/c) of the track
-// currently being transported
-// TRACKR.ptrack = momentum of the particle (not always defined, if
-//               < 0 must be obtained from etrack) 
-// TRACKR.cx,y,ztrck = direction cosines of the current particle
-// TRACKR.etrack = total energy of the particle
-// TRACKR.jtrack = identity number of the particle
-// PAPROP.am[TRACKR.jtrack] = particle mass in gev
-  FlukaCallerCode_t  caller = GetCaller();
-  FlukaProcessCode_t icode  = GetIcode();
-  
-  if (caller  != kEEDRAW         && 
-      caller  != kMGResumedTrack && 
-      caller  != kSODRAW         &&
-      caller  != kUSDRAW         &&
-      (caller != kENDRAW || (icode != kEMFSCOstopping1 && icode != kEMFSCOstopping2))) {
-      if (TRACKR.ptrack >= 0) {
-         momentum.SetPx(TRACKR.ptrack*TRACKR.cxtrck);
-         momentum.SetPy(TRACKR.ptrack*TRACKR.cytrck);
-         momentum.SetPz(TRACKR.ptrack*TRACKR.cztrck);
-         momentum.SetE(TRACKR.etrack);
-         return;
-      }
-      else {
-         Double_t p = sqrt(TRACKR.etrack * TRACKR.etrack - ParticleMassFPC(TRACKR.jtrack) * ParticleMassFPC(TRACKR.jtrack));
-         momentum.SetPx(p*TRACKR.cxtrck);
-         momentum.SetPy(p*TRACKR.cytrck);
-         momentum.SetPz(p*TRACKR.cztrck);
-         momentum.SetE(TRACKR.etrack);
-         return;
-      }
-  } else if  (caller == kMGResumedTrack) {
-      momentum.SetPx(TRACKR.spausr[4]);
-      momentum.SetPy(TRACKR.spausr[5]);
-      momentum.SetPz(TRACKR.spausr[6]);
-      momentum.SetE (TRACKR.spausr[7]);
-      return;
-  } else if (caller == kENDRAW && (icode == kEMFSCOstopping1 || icode == kEMFSCOstopping2)) {
-      momentum.SetPx(0.);
-      momentum.SetPy(0.);
-      momentum.SetPz(0.);
-      momentum.SetE(TrackMass());
-      
-  } else if (caller == kSODRAW) {
-      Int_t ist  = FLKSTK.npflka;
-      Double_t p = FLKSTK.pmoflk[ist];
-      Int_t ifl  = FLKSTK.iloflk[ist];
-      Double_t m = PAPROP.am[ifl + 6];
-      Double_t e = TMath::Sqrt(p * p + m * m);
-      momentum.SetPx(p * FLKSTK.txflk[ist]);
-      momentum.SetPy(p * FLKSTK.tyflk[ist]);
-      momentum.SetPz(p * FLKSTK.tzflk[ist]);
-      momentum.SetE(e);
-  } else if (caller == kUSDRAW) {
-      if (icode == kEMFSCObrems  || 
-         icode == kEMFSCOmoller || 
-         icode == kEMFSCObhabha || 
-         icode == kEMFSCOcompton ) 
-      {
-         momentum.SetPx(fPint[0]);
-         momentum.SetPy(fPint[1]);
-         momentum.SetPz(fPint[2]);
-         momentum.SetE(fPint[3]);
-      } else if (icode == kKASKADdray  || 
-                icode == kKASKADbrems || 
-                icode == kKASKADpair) {
-         momentum.SetPx(GENSTK.plr[0] * GENSTK.cxr[0]);
-         momentum.SetPy(GENSTK.plr[0] * GENSTK.cyr[0]);
-         momentum.SetPz(GENSTK.plr[0] * GENSTK.czr[0]);
-         momentum.SetE (GENSTK.tki[0] + PAPROP.am[GENSTK.kpart[0]+6]);
-      } else {
-         Double_t p = sqrt(TRACKR.etrack * TRACKR.etrack 
-                           - ParticleMassFPC(TRACKR.jtrack) 
-                           * ParticleMassFPC(TRACKR.jtrack));
-         momentum.SetPx(p*TRACKR.cxtrck);
-         momentum.SetPy(p*TRACKR.cytrck);
-         momentum.SetPz(p*TRACKR.cztrck);
-         momentum.SetE(TRACKR.etrack);
-      }
-  }
-  else
-    Warning("TrackMomentum","momentum not available");
-}
-
-//______________________________________________________________________________ 
-void TFluka::TrackMomentum(Double_t& px, Double_t& py, Double_t& pz, Double_t& e) const
-{
-// Return the direction and the momentum (GeV/c) of the track
-// currently being transported
-// TRACKR.ptrack = momentum of the particle (not always defined, if
-//               < 0 must be obtained from etrack) 
-// TRACKR.cx,y,ztrck = direction cosines of the current particle
-// TRACKR.etrack = total energy of the particle
-// TRACKR.jtrack = identity number of the particle
-// PAPROP.am[TRACKR.jtrack] = particle mass in gev
-  FlukaCallerCode_t   caller = GetCaller();
-  FlukaProcessCode_t  icode  = GetIcode();
-  if (caller != kEEDRAW         && 
-      caller != kMGResumedTrack && 
-      caller != kSODRAW         &&
-      caller != kUSDRAW         &&
-      (caller != kENDRAW || (icode != kEMFSCOstopping1 && icode != kEMFSCOstopping2))) {
-    if (TRACKR.ptrack >= 0) {
-      px = TRACKR.ptrack*TRACKR.cxtrck;
-      py = TRACKR.ptrack*TRACKR.cytrck;
-      pz = TRACKR.ptrack*TRACKR.cztrck;
-      e  = TRACKR.etrack;
-      return;
-    }
-    else {
-      Double_t p = sqrt(TRACKR.etrack * TRACKR.etrack - ParticleMassFPC(TRACKR.jtrack) *  ParticleMassFPC(TRACKR.jtrack));
-      px = p*TRACKR.cxtrck;
-      py = p*TRACKR.cytrck;
-      pz = p*TRACKR.cztrck;
-      e  = TRACKR.etrack;
-      return;
-    }
-  } else if (caller == kMGResumedTrack) {
-      px = TRACKR.spausr[4];
-      py = TRACKR.spausr[5];
-      pz = TRACKR.spausr[6];
-      e  = TRACKR.spausr[7];
-      return;
-  } else if (caller == kENDRAW && (icode == kEMFSCOstopping1 || icode == kEMFSCOstopping2)) {
-      px = 0.;
-      py = 0.;
-      pz = 0.;
-      e  = TrackMass();
-  } else if (caller == kSODRAW) {
-      Int_t ist  = FLKSTK.npflka;
-      Double_t p = FLKSTK.pmoflk[ist];
-      Int_t ifl  = FLKSTK.iloflk[ist];
-      Double_t m = PAPROP.am[ifl + 6];
-               e = TMath::Sqrt(p * p + m * m);
-      px = p * FLKSTK.txflk[ist];
-      py = p * FLKSTK.tyflk[ist];
-      pz = p * FLKSTK.tzflk[ist];
-  } else if (caller == kUSDRAW) {
-      if (icode == kEMFSCObrems  || 
-         icode == kEMFSCOmoller || 
-         icode == kEMFSCObhabha || 
-         icode == kEMFSCOcompton ) 
-      {
-         px = fPint[0];
-         py = fPint[1];
-         pz = fPint[2];
-         e  = fPint[3];
-      } else if (icode == kKASKADdray  || 
-                icode == kKASKADbrems || 
-                icode == kKASKADpair) {
-         px = GENSTK.plr[0] * GENSTK.cxr[0];
-         py = GENSTK.plr[0] * GENSTK.cyr[0];
-         pz = GENSTK.plr[0] * GENSTK.czr[0];
-         e  = GENSTK.tki[0] + PAPROP.am[GENSTK.kpart[0]+6];
-      } else {
-         Double_t p = sqrt(TRACKR.etrack * TRACKR.etrack - ParticleMassFPC(TRACKR.jtrack) *  ParticleMassFPC(TRACKR.jtrack));
-         px = p*TRACKR.cxtrck;
-         py = p*TRACKR.cytrck;
-         pz = p*TRACKR.cztrck;
-         e  = TRACKR.etrack;
-      }
-  }
-  else
-      Warning("TrackMomentum","momentum not available");
-}
-
-//______________________________________________________________________________ 
-Double_t TFluka::TrackStep() const
-{
-// Return the length in centimeters of the current step
-// TRACKR.ctrack = total curved path
-    FlukaCallerCode_t caller = GetCaller();
-    if (caller == kMGDRAW) {
-       Int_t i;
-       if ((i = fPrimaryElectronIndex) > -1) {
-           if (i > 0) {
-               return (fPIlength[i] - fPIlength[i-1]); 
-           } else {
-               Double_t s (TRACKR.ctrack - (fPIlength[fNPI - 1] - fPIlength[0]));
-               return s;
-           }
-       } else {
-           return TRACKR.ctrack;
-       }
-    } else if (caller == kBXEntering || caller == kBXExiting || 
-              caller == kENDRAW     || caller == kUSDRAW || 
-              caller == kUSTCKV     || caller == kMGResumedTrack ||
-              caller == kSODRAW)
-    {
-       return 0.0;
-    } else {
-       Warning("TrackStep", "track step not available");
-       return 0.0;
-    }  
-}
-
-//______________________________________________________________________________ 
-Double_t TFluka::TrackLength() const
-{
-// TRACKR.cmtrck = cumulative curved path since particle birth
-  FlukaCallerCode_t caller = GetCaller();
-  if (caller == kMGDRAW) {
-      Int_t i;
-      if ((i = fPrimaryElectronIndex) > -1) {
-         return fPIlength[i];
-      } else {
-         return TRACKR.cmtrck;
-      }
-      
-  } else if (caller == kBXEntering || caller == kBXExiting || 
-            caller == kENDRAW || caller == kUSDRAW || caller == kUSTCKV) 
-      return TRACKR.cmtrck;
-  else if (caller == kMGResumedTrack) 
-      return TRACKR.spausr[8];
-  else if (caller == kSODRAW)
-      return 0.0;
-  else {
-      Warning("TrackLength", "track length not available for caller %5d \n", caller);
-      return 0.0;
-  }
-}
-
-
-//______________________________________________________________________________ 
-Double_t TFluka::TrackTime() const
-{
-// Return the current time of flight of the track being transported
-// TRACKR.atrack = age of the particle
-  FlukaCallerCode_t caller = GetCaller();
-  if (caller == kMGDRAW) {
-      Int_t i;
-      if ((i = fPrimaryElectronIndex) > -1) {
-         Double_t t = fPItime[i];
-         return t;
-      } else {
-         return TRACKR.atrack;
-      }
-  } else if (caller == kBXEntering || caller == kBXExiting || 
-            caller == kENDRAW     || caller == kUSDRAW    || 
-            caller == kUSTCKV)
-    return TRACKR.atrack;
-  else if (caller == kMGResumedTrack)
-    return TRACKR.spausr[3];
-  else if (caller == kSODRAW) {
-      return (FLKSTK.agestk[FLKSTK.npflka]);
-  }
-  else {
-    Warning("TrackTime", "track time not available");
-    return 0.0;
-  }   
-}
-
-//______________________________________________________________________________ 
-Double_t TFluka::Edep() const
-{
-// Energy deposition
-// if TRACKR.ntrack = 0, TRACKR.mtrack = 0:
-// -->local energy deposition (the value and the point are not recorded in TRACKR)
-//    but in the variable "rull" of the procedure "endraw.cxx"
-// if TRACKR.ntrack > 0, TRACKR.mtrack = 0:
-// -->no energy loss along the track
-// if TRACKR.ntrack > 0, TRACKR.mtrack > 0:
-// -->energy loss distributed along the track
-// TRACKR.dtrack = energy deposition of the jth deposition event
-
-  // If coming from bxdraw we have 2 steps of 0 length and 0 edep
-  // If coming from usdraw we just signal particle production - no edep
-  // If just first time after resuming, no edep for the primary
-  FlukaCallerCode_t caller = GetCaller();
-    
-  if (caller == kBXExiting || caller == kBXEntering || 
-      caller == kUSDRAW    || caller == kMGResumedTrack ||
-      caller == kSODRAW) 
-      return 0.0;
-  Double_t sum = 0;
-  Int_t i = -1;
-  
-  // Material with primary ionisation activated but number of primary electrons nprim = 0
-  if (fPrimaryElectronIndex == -2) return 0.0;
-  // nprim > 0
-  if ((i = fPrimaryElectronIndex) > -1) {
-      // Primary ionisation
-      sum = GetPrimaryElectronKineticEnergy(i);
-      if (sum > 100.) {
-         printf("edep > 100. %d %d %f \n", i, ALLDLT.nalldl, sum);
-      }
-      return sum;
-  } else {
-      // Normal ionisation
-      if (TRACKR.mtrack > 1) printf("Edep: %6d\n", TRACKR.mtrack);
-      
-      for ( Int_t j=0;j<TRACKR.mtrack;j++) {
-         sum +=TRACKR.dtrack[j];  
-      }
-      if (TRACKR.ntrack == 0 && TRACKR.mtrack == 0)
-         return fRull + sum;
-      else {
-         return sum;
-      }
-  }
-}
-
-//______________________________________________________________________________ 
-Int_t TFluka::CorrectFlukaId() const
-{
-   // since we don't put photons and e- created bellow transport cut on the vmc stack
-   // and there is a call to endraw for energy deposition for each of them
-   // and they have the track number of their parent, but different identity (pdg)
-   // so we want to assign also their parent identity.
-
-   if( (IsTrackStop())
-        && TRACKR.ispusr[mkbmx2 - 4] == TRACKR.ispusr[mkbmx2 - 1]
-        && TRACKR.jtrack != TRACKR.ispusr[mkbmx2 - 3] ) {
-      if (fVerbosityLevel >=3)
-         cout << "CorrectFlukaId() for icode=" << GetIcode()
-               << " track=" << TRACKR.ispusr[mkbmx2 - 1]
-               << " current PDG=" << PDGFromId(TRACKR.jtrack)
-               << " assign parent PDG=" << PDGFromId(TRACKR.ispusr[mkbmx2 - 3]) << endl;
-      return TRACKR.ispusr[mkbmx2 - 3]; // assign parent identity
-   }
-   if (TRACKR.jtrack <= 64){
-       return TRACKR.jtrack;
-   } else {
-       return TRACKR.j0trck;
-   }
-}
-
-
-//______________________________________________________________________________ 
-Int_t TFluka::TrackPid() const
-{
-// Return the id of the particle transported
-// TRACKR.jtrack = identity number of the particle
-  FlukaCallerCode_t caller = GetCaller();
-  if (caller != kEEDRAW && caller != kSODRAW) {
-     return PDGFromId( CorrectFlukaId() );
-  }
-  else if (caller == kSODRAW) {
-      return PDGFromId(FLKSTK.iloflk[FLKSTK.npflka]);
-  }
-  else
-    return -1000;
-}
-
-//______________________________________________________________________________ 
-Double_t TFluka::TrackCharge() const
-{
-// Return charge of the track currently transported
-// PAPROP.ichrge = electric charge of the particle
-// TRACKR.jtrack = identity number of the particle
-    
-  FlukaCallerCode_t caller = GetCaller();
-  if (caller != kEEDRAW && caller != kSODRAW) 
-     return PAPROP.ichrge[CorrectFlukaId() + 6];
-  else if (caller == kSODRAW) {
-      Int_t ifl =  PDGFromId(FLKSTK.iloflk[FLKSTK.npflka]);
-      return PAPROP.ichrge[ifl + 6];
-  }
-  else
-    return -1000.0;
-}
-
-//______________________________________________________________________________ 
-Double_t TFluka::TrackMass() const
-{
-// PAPROP.am = particle mass in GeV
-// TRACKR.jtrack = identity number of the particle
-  FlukaCallerCode_t caller = GetCaller();
-  if (caller != kEEDRAW && caller != kSODRAW)
-     return PAPROP.am[CorrectFlukaId()+6];
-  else if (caller == kSODRAW) {
-      Int_t ifl =  FLKSTK.iloflk[FLKSTK.npflka];
-      return PAPROP.am[ifl + 6];
-  }
-  else
-    return -1000.0;
-}
-
-//______________________________________________________________________________ 
-Double_t TFluka::Etot() const
-{
-// TRACKR.etrack = total energy of the particle
-  FlukaCallerCode_t  caller = GetCaller();
-  FlukaProcessCode_t icode  = GetIcode();
-  if (caller != kEEDRAW && caller != kSODRAW && caller != kUSDRAW)
-  {
-      return TRACKR.etrack;
-  } else if (caller == kUSDRAW) {
-      if (icode == kEMFSCObrems  || 
-         icode == kEMFSCOmoller || 
-         icode == kEMFSCObhabha || 
-         icode == kEMFSCOcompton ) {
-         return  fPint[3];
-      }
-      else if (icode == kKASKADdray  || 
-              icode == kKASKADbrems || 
-              icode == kKASKADpair) {
-         return (GENSTK.tki[0] + PAPROP.am[GENSTK.kpart[0]+6]);      
-      } else {
-         return TRACKR.etrack;
-      }
-      
-  }
-  else if (caller == kSODRAW) {
-      Int_t ist  = FLKSTK.npflka;
-      Double_t p = FLKSTK.pmoflk[ist];
-      Int_t ifl  = FLKSTK.iloflk[ist];
-      Double_t m = PAPROP.am[ifl + 6];
-      Double_t e = TMath::Sqrt(p * p + m * m);
-      return e;
-  }
-  printf("Etot %5d %5d \n", caller, icode);
-  
-  return -1000.0;
-}
-
-//
-// track status
-//
-//______________________________________________________________________________ 
-Bool_t   TFluka::IsNewTrack() const
-{
-// Return true for the first call of Stepping()
-   return fTrackIsNew;
-}
-
-void     TFluka::SetTrackIsNew(Bool_t flag)
-{
-// Return true for the first call of Stepping()
-   fTrackIsNew = flag;
-
-}
-
-
-//______________________________________________________________________________ 
-Bool_t   TFluka::IsTrackInside() const
-{
-// True if the track is not at the boundary of the current volume
-// In Fluka a step is always inside one kind of material
-// If the step would go behind the region of one material,
-// it will be shortened to reach only the boundary.
-// Therefore IsTrackInside() is always true.
-  FlukaCallerCode_t caller = GetCaller();
-  if (caller == kBXEntering || caller == kBXExiting)
-    return 0;
-  else
-    return 1;
-}
-
-//______________________________________________________________________________ 
-Bool_t   TFluka::IsTrackEntering() const
-{
-// True if this is the first step of the track in the current volume
-
-  FlukaCallerCode_t caller = GetCaller();
-  if (caller == kBXEntering)
-    return 1;
-  else return 0;
-}
-
-//______________________________________________________________________________ 
-Bool_t   TFluka::IsTrackExiting() const
-{
-// True if track is exiting volume
-//
-  FlukaCallerCode_t caller = GetCaller();
-  if (caller == kBXExiting)
-    return 1;
-  else return 0;
-}
-
-//______________________________________________________________________________ 
-Bool_t   TFluka::IsTrackOut() const
-{
-// True if the track is out of the setup
-// means escape
-  FlukaProcessCode_t icode = GetIcode();
-    
-  if (icode == kKASKADescape ||
-      icode == kEMFSCOescape ||
-      icode == kKASNEUescape ||
-      icode == kKASHEAescape ||
-      icode == kKASOPHescape) 
-       return 1;
-  else return 0;
-}
-
-//______________________________________________________________________________ 
-Bool_t   TFluka::IsTrackDisappeared() const
-{
-// All inelastic interactions and decays
-// fIcode from usdraw
-  FlukaProcessCode_t icode = GetIcode();
-  if (icode == kKASKADinelint    || // inelastic interaction
-      icode == kKASKADdecay      || // particle decay
-      icode == kKASKADdray       || // delta ray generation by hadron
-      icode == kKASKADpair       || // direct pair production
-      icode == kKASKADbrems      || // bremsstrahlung (muon)
-      icode == kEMFSCObrems      || // bremsstrahlung (electron)
-      icode == kEMFSCOmoller     || // Moller scattering
-      icode == kEMFSCObhabha     || // Bhaba scattering
-      icode == kEMFSCOanniflight || // in-flight annihilation
-      icode == kEMFSCOannirest   || // annihilation at rest
-      icode == kEMFSCOpair       || // pair production
-      icode == kEMFSCOcompton    || // Compton scattering
-      icode == kEMFSCOphotoel    || // Photoelectric effect
-      icode == kKASNEUhadronic   || // hadronic interaction
-      icode == kKASHEAdray          // delta-ray
-      ) return 1;
-  else return 0;
-}
-
-//______________________________________________________________________________ 
-Bool_t   TFluka::IsTrackStop() const
-{
-// True if the track energy has fallen below the threshold
-// means stopped by signal or below energy threshold
-  FlukaProcessCode_t icode = GetIcode();
-  if (icode == kKASKADstopping  || // stopping particle
-      icode == kKASKADtimekill  || // time kill 
-      icode == kEMFSCOstopping1 || // below user-defined cut-off
-      icode == kEMFSCOstopping2 || // below user cut-off
-      icode == kEMFSCOtimekill  || // time kill
-      icode == kKASNEUstopping  || // neutron below threshold
-      icode == kKASNEUtimekill  || // time kill
-      icode == kKASHEAtimekill  || // time kill
-      icode == kKASOPHtimekill) return 1; // time kill
-  else return 0;
-}
-
-//______________________________________________________________________________ 
-Bool_t   TFluka::IsTrackAlive() const
-{
-// Means not disappeared or not out
-    FlukaProcessCode_t icode = GetIcode();
-    
-    if (IsTrackOut()               || 
-       IsTrackStop()              ||
-       icode == kKASKADinelint    || // inelastic interaction
-       icode == kKASKADdecay      || // particle decay
-       icode == kEMFSCOanniflight || // in-flight annihilation
-       icode == kEMFSCOannirest   || // annihilation at rest
-       icode == kEMFSCOpair       || // pair production
-       icode == kEMFSCOphotoel    || // Photoelectric effect
-       icode == kKASNEUhadronic      // hadronic interaction
-       ) 
-    {
-       // Exclude the cases for which the particle has disappeared (paused) but will reappear later (= alive).
-       return 0;
-    } else {
-       return 1;
-    }
-}
-
-//
-// secondaries
-//
-
-//______________________________________________________________________________ 
-Int_t TFluka::NSecondaries() const
-
-{
-// Number of secondary particles generated in the current step
-// GENSTK.np = number of secondaries except light and heavy ions
-// FHEAVY.npheav = number of secondaries for light and heavy secondary ions
-    FlukaCallerCode_t caller = GetCaller();
-    if (caller == kUSDRAW)  // valid only after usdraw
-        return GENSTK.np + FHEAVY.npheav;
-    else if (caller == kUSTCKV) {
-        // Cerenkov Photon production
-        return fNCerenkov;
-    }
-    return 0;
-} // end of NSecondaries
-
-//______________________________________________________________________________ 
-void TFluka::GetSecondary(Int_t isec, Int_t& particleId,
-                TLorentzVector& position, TLorentzVector& momentum)
-{
-// Copy particles from secondary stack to vmc stack
-//
-
-    FlukaCallerCode_t caller = GetCaller();
-    if (caller == kUSDRAW) {  // valid only after usdraw
-        if (GENSTK.np > 0) {
-            // Hadronic interaction
-            if (isec >= 0 && isec < GENSTK.np) {
-                particleId = PDGFromId(GENSTK.kpart[isec]);
-                position.SetX(fXsco);
-                position.SetY(fYsco);
-                position.SetZ(fZsco);
-                position.SetT(TRACKR.atrack);
-                momentum.SetPx(GENSTK.plr[isec]*GENSTK.cxr[isec]);
-                momentum.SetPy(GENSTK.plr[isec]*GENSTK.cyr[isec]);
-                momentum.SetPz(GENSTK.plr[isec]*GENSTK.czr[isec]);
-                momentum.SetE(GENSTK.tki[isec] + PAPROP.am[GENSTK.kpart[isec]+6]);
-            }
-            else if (isec >= GENSTK.np && isec < GENSTK.np + FHEAVY.npheav) {
-                Int_t jsec = isec - GENSTK.np;
-                particleId = FHEAVY.kheavy[jsec]; // this is Fluka id !!!
-                position.SetX(fXsco);
-                position.SetY(fYsco);
-                position.SetZ(fZsco);
-                position.SetT(TRACKR.atrack);
-                momentum.SetPx(FHEAVY.pheavy[jsec]*FHEAVY.cxheav[jsec]);
-                momentum.SetPy(FHEAVY.pheavy[jsec]*FHEAVY.cyheav[jsec]);
-                momentum.SetPz(FHEAVY.pheavy[jsec]*FHEAVY.czheav[jsec]);
-                if (FHEAVY.tkheav[jsec] >= 3 && FHEAVY.tkheav[jsec] <= 6)
-                    momentum.SetE(FHEAVY.tkheav[jsec] + PAPROP.am[jsec+6]);
-                else if (FHEAVY.tkheav[jsec] > 6)
-                    momentum.SetE(FHEAVY.tkheav[jsec] + FHEAVY.amnhea[jsec]); // to be checked !!!
-            }
-            else
-                Warning("GetSecondary","isec out of range");
-        }
-    } else if (caller == kUSTCKV) {
-        Int_t index = OPPHST.lstopp - isec;
-        position.SetX(OPPHST.xoptph[index]);
-        position.SetY(OPPHST.yoptph[index]);
-        position.SetZ(OPPHST.zoptph[index]);
-        position.SetT(OPPHST.agopph[index]);
-        Double_t p = OPPHST.poptph[index];
-        
-        momentum.SetPx(p * OPPHST.txopph[index]);
-        momentum.SetPy(p * OPPHST.tyopph[index]);
-        momentum.SetPz(p * OPPHST.tzopph[index]);
-        momentum.SetE(p);
-    }
-    else
-        Warning("GetSecondary","no secondaries available");
-    
-} // end of GetSecondary
-
-
-//______________________________________________________________________________ 
-TMCProcess TFluka::ProdProcess(Int_t) const
-
-{
-// Name of the process that has produced the secondary particles
-// in the current step
-
-    Int_t mugamma = (TRACKR.jtrack == kFLUKAphoton || 
-                     TRACKR.jtrack == kFLUKAmuplus ||
-                     TRACKR.jtrack == kFLUKAmuminus);
-    FlukaProcessCode_t icode = GetIcode();
-
-    if      (icode == kKASKADdecay)                                   return kPDecay;
-    else if (icode == kKASKADpair || icode == kEMFSCOpair)            return kPPair;
-    else if (icode == kEMFSCOcompton)                                 return kPCompton;
-    else if (icode == kEMFSCOphotoel)                                 return kPPhotoelectric;
-    else if (icode == kKASKADbrems      || icode == kEMFSCObrems)     return kPBrem;
-    else if (icode == kKASKADdray       || icode == kKASHEAdray)      return kPDeltaRay;
-    else if (icode == kEMFSCOmoller     || icode == kEMFSCObhabha)    return kPDeltaRay;
-    else if (icode == kEMFSCOanniflight || icode == kEMFSCOannirest)  return kPAnnihilation;
-    else if (icode == kKASKADinelint) {
-        if (!mugamma)                                                 return kPHadronic;
-        else if (TRACKR.jtrack == kFLUKAphoton)                       return kPPhotoFission;
-        else                                                          return kPMuonNuclear;
-    }
-    else if (icode == kEMFSCOrayleigh)                                return kPRayleigh;
-// Fluka codes 100, 300 and 400 still to be investigasted
-    else                                                              return kPNoProcess;
-}
-
-
-Int_t TFluka::StepProcesses(TArrayI &proc) const
-{
-  //
-  // Return processes active in the current step
-  //
-    FlukaProcessCode_t icode   = GetIcode();
-    FlukaCallerCode_t  caller  = GetCaller();
-    proc.Set(1);
-    TMCProcess iproc;
-    if (caller == kBXEntering || caller == kBXExiting || caller == kEEDRAW || caller == kSODRAW) {
-       iproc = kPTransportation;
-    }
-    else if (caller == kUSTCKV) {
-       iproc = kPCerenkov;
-    } else {
-       switch (icode) {
-       case kEMFSCO:
-           if (Edep() > 0.) {
-               iproc = kPEnergyLoss;
-           } else {
-               iproc = kPTransportation;
-           }
-           break;
-       case kKASKAD:
-           if (Edep() > 0.) {
-               iproc = kPEnergyLoss;
-           } else {
-               iproc = kPTransportation;
-           }
-           break;
-       case kKASHEA:
-       case kKASNEU:
-       case kKASOPH:
-       case kKASKADescape:
-       case kEMFSCOescape:
-       case kKASNEUescape:
-       case kKASHEAescape:
-       case kKASOPHescape:
-           iproc = kPTransportation;
-           break;
-       case kKASKADtimekill:
-       case kEMFSCOtimekill:
-       case kKASNEUtimekill:
-       case kKASHEAtimekill:
-       case kKASOPHtimekill:
-           iproc =  kPTOFlimit;
-           break;
-       case kKASKADstopping:
-       case kEMFSCOstopping1:
-       case kEMFSCOstopping2:
-       case kKASNEUstopping:
-           iproc = kPStop;
-           break; 
-       case kKASKADinelint:
-       case kKASNEUhadronic:
-           iproc = kPHadronic;
-           break;
-       case kKASKADinelarecoil:
-           iproc = kPHadronic;
-           break;
-       case kKASKADnelint:
-           iproc = kPHElastic;
-           break;
-       case kKASOPHabsorption:
-           iproc = kPLightAbsorption;
-           break;
-       case kKASOPHrefraction:
-           iproc = kPLightRefraction;
-           break;
-       case kEMFSCOlocaldep : 
-           iproc = kPPhotoelectric;
-           break;
-       default:
-           iproc = ProdProcess(0);
-       }
-    }
-    
-    proc[0] = iproc;
-    return 1;
-}
-//______________________________________________________________________________ 
-Int_t TFluka::VolId2Mate(Int_t id) const
-{
-//
-// Returns the material number for a given volume ID
-//
-   return fMCGeo->VolId2Mate(id);
-}
-
-//______________________________________________________________________________ 
-const char* TFluka::VolName(Int_t id) const
-{
-//
-// Returns the volume name for a given volume ID
-//
-   return fMCGeo->VolName(id);
-}
-
-Int_t TFluka::MediumId(const Text_t* mediumName) const
-{
-    //
-    // Return the unique medium id for medium with name mediumName
-    TList *medlist = gGeoManager->GetListOfMedia();
-    TGeoMedium* med = (TGeoMedium*) medlist->FindObject(mediumName);
-    if (med) {
-       return (med->GetId());
-    } else {
-       return (-1);
-    }
-}
-
-//______________________________________________________________________________ 
-Int_t TFluka::VolId(const Text_t* volName) const
-{
-//
-// Converts from volume name to volume ID.
-// Time consuming. (Only used during set-up)
-// Could be replaced by hash-table
-//
-    char sname[20];
-    Int_t len;
-    strncpy(sname, volName, len = strlen(volName));
-    sname[len] = 0;
-    while (sname[len - 1] == ' ') sname[--len] = 0;
-    return fMCGeo->VolId(sname);
-}
-
-//______________________________________________________________________________ 
-Int_t TFluka::CurrentVolID(Int_t& copyNo) const
-{
-//
-// Return the logical id and copy number corresponding to the current fluka region
-//
-  if (gGeoManager->IsOutside()) return 0;
-  TGeoNode *node = gGeoManager->GetCurrentNode();
-  copyNo = node->GetNumber();
-  Int_t id = node->GetVolume()->GetNumber();
-  return id;
-} 
-
-//______________________________________________________________________________ 
-Int_t TFluka::CurrentVolOffID(Int_t off, Int_t& copyNo) const
-{
-//
-// Return the logical id and copy number of off'th mother 
-// corresponding to the current fluka region
-//
-  if (off<0 || off>gGeoManager->GetLevel()) return 0;
-  if (off==0) return CurrentVolID(copyNo);
-  TGeoNode *node = gGeoManager->GetMother(off);
-  if (!node) return 0;
-  copyNo = node->GetNumber();
-  return node->GetVolume()->GetNumber();
-}
-
-//______________________________________________________________________________ 
-const char* TFluka::CurrentVolName() const
-{
-//
-// Return the current volume name
-//
-  if (gGeoManager->IsOutside()) return "OutOfWorld";
-  return gGeoManager->GetCurrentVolume()->GetName();
-}
-
-//______________________________________________________________________________ 
-const char* TFluka::CurrentVolOffName(Int_t off) const
-{
-//
-// Return the volume name of the off'th mother of the current volume
-//
-  if (off<0 || off>gGeoManager->GetLevel()) return 0;
-  if (off==0) return CurrentVolName();
-  TGeoNode *node = gGeoManager->GetMother(off);
-  if (!node) return 0;
-  return node->GetVolume()->GetName();
-}
-
-const char* TFluka::CurrentVolPath() {
-  // Return the current volume path
-  return gGeoManager->GetPath(); 
-}
-//______________________________________________________________________________ 
-Int_t TFluka::CurrentMaterial(Float_t & a, Float_t & z, 
-                      Float_t & dens, Float_t & radl, Float_t & absl) const
-{
-//
-//  Return the current medium number and material properties
-//
-  Int_t copy;
-  Int_t id  =  TFluka::CurrentVolID(copy);
-  Int_t med =  TFluka::VolId2Mate(id);
-  TGeoVolume*     vol = gGeoManager->GetCurrentVolume();
-  TGeoMaterial*   mat = vol->GetMaterial();
-  a    = mat->GetA();
-  z    = mat->GetZ();
-  dens = mat->GetDensity();
-  radl = mat->GetRadLen();
-  absl = mat->GetIntLen();
-  
-  return med;
-}
-
-//______________________________________________________________________________ 
-void TFluka::Gmtod(Float_t* xm, Float_t* xd, Int_t iflag)
-{
-// Transforms a position from the world reference frame
-// to the current volume reference frame.
-//
-//  Geant3 desription:
-//  ==================
-//       Computes coordinates XD (in DRS) 
-//       from known coordinates XM in MRS 
-//       The local reference system can be initialized by
-//         - the tracking routines and GMTOD used in GUSTEP
-//         - a call to GMEDIA(XM,NUMED)
-//         - a call to GLVOLU(NLEVEL,NAMES,NUMBER,IER) 
-//             (inverse routine is GDTOM) 
-//
-//        If IFLAG=1  convert coordinates 
-//           IFLAG=2  convert direction cosinus
-//
-// ---
-   Double_t xmL[3], xdL[3];
-   Int_t i;
-   for (i=0;i<3;i++) xmL[i]=xm[i];
-   if (iflag == 1) gGeoManager->MasterToLocal(xmL,xdL);
-   else            gGeoManager->MasterToLocalVect(xmL,xdL);
-   for (i=0;i<3;i++) xd[i] = xdL[i];
-}
-  
-//______________________________________________________________________________ 
-void TFluka::Gmtod(Double_t* xm, Double_t* xd, Int_t iflag)
-{
-//
-// See Gmtod(Float_t*, Float_t*, Int_t)
-//
-   if (iflag == 1) gGeoManager->MasterToLocal(xm,xd);
-   else            gGeoManager->MasterToLocalVect(xm,xd);
-}
-
-//______________________________________________________________________________ 
-void TFluka::Gdtom(Float_t* xd, Float_t* xm, Int_t iflag)
-{
-// Transforms a position from the current volume reference frame
-// to the world reference frame.
-//
-//  Geant3 desription:
-//  ==================
-//  Computes coordinates XM (Master Reference System
-//  knowing the coordinates XD (Detector Ref System)
-//  The local reference system can be initialized by
-//    - the tracking routines and GDTOM used in GUSTEP
-//    - a call to GSCMED(NLEVEL,NAMES,NUMBER)
-//        (inverse routine is GMTOD)
-// 
-//   If IFLAG=1  convert coordinates
-//      IFLAG=2  convert direction cosinus
-//
-// ---
-   Double_t xmL[3], xdL[3];
-   Int_t i;
-   for (i=0;i<3;i++) xdL[i] = xd[i];
-   if (iflag == 1) gGeoManager->LocalToMaster(xdL,xmL);
-   else            gGeoManager->LocalToMasterVect(xdL,xmL);
-   for (i=0;i<3;i++) xm[i]=xmL[i];
-}
-
-//______________________________________________________________________________ 
-void TFluka::Gdtom(Double_t* xd, Double_t* xm, Int_t iflag)
-{
-//
-// See Gdtom(Float_t*, Float_t*, Int_t)
-//
-   if (iflag == 1) gGeoManager->LocalToMaster(xd,xm);
-   else            gGeoManager->LocalToMasterVect(xd,xm);
-}
-
-//______________________________________________________________________________
-TObjArray *TFluka::GetFlukaMaterials()
-{
-//
-// Get array of Fluka materials
-   return fGeom->GetMatList();
-}   
-
-//______________________________________________________________________________
-void TFluka::SetMreg(Int_t l, Int_t lttc) 
-{
-// Set current fluka region
-   fCurrentFlukaRegion = l;
-   fGeom->SetMreg(l,lttc);
-}
-
-
-
-
-//______________________________________________________________________________
-TString TFluka::ParticleName(Int_t pdg) const
-{
-    // Return particle name for particle with pdg code pdg.
-    Int_t ifluka = IdFromPDG(pdg);
-    return TString((CHPPRP.btype[ifluka - kFLUKAcodemin]), 8);
-}
-
-//______________________________________________________________________________
-Double_t TFluka::ParticleMass(Int_t pdg) const
-{
-    // Return particle mass for particle with pdg code pdg.
-    Int_t ifluka = IdFromPDG(pdg);
-    return (PAPROP.am[ifluka - kFLUKAcodemin]);
-}
-
-//______________________________________________________________________________
-Double_t TFluka::ParticleMassFPC(Int_t fpc) const
-{
-    // Return particle mass for particle with Fluka particle code fpc
-    return (PAPROP.am[fpc - kFLUKAcodemin]);
-}
-
-//______________________________________________________________________________
-Double_t TFluka::ParticleCharge(Int_t pdg) const
-{
-    // Return particle charge for particle with pdg code pdg.
-    Int_t ifluka = IdFromPDG(pdg);
-    return Double_t(PAPROP.ichrge[ifluka - kFLUKAcodemin]);
-}
-
-//______________________________________________________________________________
-Double_t TFluka::ParticleLifeTime(Int_t pdg) const
-{
-    // Return particle lifetime for particle with pdg code pdg.
-    Int_t ifluka = IdFromPDG(pdg);
-    return (PAPROP.tmnlf[ifluka - kFLUKAcodemin]);
-}
-
-//______________________________________________________________________________
-void TFluka::Gfpart(Int_t pdg, char* name, Int_t& type, Float_t& mass, Float_t& charge, Float_t& tlife)
-{
-    // Retrieve particle properties for particle with pdg code pdg.
-    
-    strcpy(name, ParticleName(pdg).Data());
-    type   = ParticleMCType(pdg);
-    mass   = ParticleMass(pdg);
-    charge = ParticleCharge(pdg);
-    tlife  = ParticleLifeTime(pdg);
-}
-
-//______________________________________________________________________________
-void TFluka::PrintHeader()
-{
-    //
-    // Print a header
-    printf("\n");
-    printf("\n");    
-    printf("------------------------------------------------------------------------------\n");
-    printf("- You are using the TFluka Virtual Monte Carlo Interface to FLUKA.           -\n");    
-    printf("- Please see the file fluka.out for FLUKA output and licensing information.  -\n");    
-    printf("------------------------------------------------------------------------------\n");
-    printf("\n");
-    printf("\n");    
-}
-
-
-#define pshckp pshckp_
-#define ustckv ustckv_
-
-
-extern "C" {
-  void pshckp(Double_t & px, Double_t & py, Double_t & pz, Double_t & e,
-              Double_t & vx, Double_t & vy, Double_t & vz, Double_t & tof,
-              Double_t & polx, Double_t & poly, Double_t & polz, Double_t & wgt, Int_t& ntr)
-  {
-    //
-    // Pushes one cerenkov photon to the stack
-    //
-    
-    TFluka* fluka =  (TFluka*) gMC;
-    TVirtualMCStack* cppstack = fluka->GetStack();
-    Int_t parent =  TRACKR.ispusr[mkbmx2-1];
-    cppstack->PushTrack(0, parent, 50000050,
-                        px, py, pz, e,
-                        vx, vy, vz, tof,
-                        polx, poly, polz,
-                        kPCerenkov, ntr, wgt, 0);
-    if (fluka->GetVerbosityLevel() >= 3)
-            printf("pshckp: track=%d parent=%d lattc=%d %s\n", ntr, parent, TRACKR.lt1trk, fluka->CurrentVolName());
-  }
-    
-    void ustckv(Int_t & nphot, Int_t & mreg, Double_t & x, Double_t & y, Double_t & z)
-    {
-        //
-        // Calls stepping in order to signal cerenkov production
-        //
-        TFluka *fluka = (TFluka*)gMC;
-        fluka->SetMreg(mreg, TRACKR.lt1trk); //LTCLCM.mlatm1);
-        fluka->SetXsco(x);
-        fluka->SetYsco(y);
-        fluka->SetZsco(z);
-        fluka->SetNCerenkov(nphot);
-        fluka->SetCaller(kUSTCKV);
-        if (fluka->GetVerbosityLevel() >= 3)
-            printf("ustckv: %10d mreg=%d lattc=%d  newlat=%d (%f, %f, %f) edep=%f vol=%s\n",
-                    nphot, mreg, TRACKR.lt1trk, LTCLCM.newlat, x, y, z, fluka->Edep(), fluka->CurrentVolName());
-   
-    // check region lattice consistency (debug Ernesto)
-    // *****************************************************
-   Int_t nodeId;
-   Int_t volId = fluka->CurrentVolID(nodeId);
-   Int_t crtlttc = gGeoManager->GetCurrentNodeId()+1;
-
-   if( mreg != volId  && !gGeoManager->IsOutside() ) {
-       cout << "  ustckv:   track=" << TRACKR.ispusr[mkbmx2-1] << " pdg=" << fluka->PDGFromId(TRACKR.jtrack)
-            << " icode=" << fluka->GetIcode() << " gNstep=" << fluka->GetNstep() << endl
-            << "               fluka   mreg=" << mreg << " mlttc=" << TRACKR.lt1trk << endl
-            << "               TGeo   volId=" << volId << " crtlttc=" << crtlttc << endl
-            << "     common TRACKR   lt1trk=" << TRACKR.lt1trk << " lt2trk=" << TRACKR.lt2trk << endl
-            << "     common LTCLCM   newlat=" << LTCLCM.newlat << " mlatld=" <<  LTCLCM.mlatld << endl
-            << "                     mlatm1=" << LTCLCM.mlatm1 << " mltsen=" <<  LTCLCM.mltsen << endl
-            << "                     mltsm1=" << LTCLCM.mltsm1 << " mlattc=" << LTCLCM.mlattc << endl;
-        if( TRACKR.lt1trk == crtlttc ) cout << "   *************************************************************" << endl;
-    }
-    // *****************************************************
-
-
-
-        (TVirtualMCApplication::Instance())->Stepping();
-    }
-}
-
-//______________________________________________________________________________
-void TFluka::AddParticlesToPdgDataBase() const
-{
-
-//
-// Add particles to the PDG data base
-
-    TDatabasePDG *pdgDB = TDatabasePDG::Instance();
-
-    const Double_t kAu2Gev   = 0.9314943228;
-    const Double_t khSlash   = 1.0545726663e-27;
-    const Double_t kErg2Gev  = 1/1.6021773349e-3;
-    const Double_t khShGev   = khSlash*kErg2Gev;
-    const Double_t kYear2Sec = 3600*24*365.25;
-//
-// Ions
-//
-  pdgDB->AddParticle("Deuteron","Deuteron",2*kAu2Gev+8.071e-3,kTRUE,
-                     0,3,"Ion",TFlukaIon::GetIonPdg(1,2));
-  pdgDB->AddParticle("Triton","Triton",3*kAu2Gev+14.931e-3,kFALSE,
-                     khShGev/(12.33*kYear2Sec),3,"Ion",TFlukaIon::GetIonPdg(1,3));
-  pdgDB->AddParticle("Alpha","Alpha",4*kAu2Gev+2.424e-3,kTRUE,
-                     khShGev/(12.33*kYear2Sec),6,"Ion",TFlukaIon::GetIonPdg(2,4));
-  pdgDB->AddParticle("HE3","HE3",3*kAu2Gev+14.931e-3,kFALSE,
-                     0,6,"Ion",TFlukaIon::GetIonPdg(2,3));
-  
-//
-//
-//
-// Special particles
-//
-  pdgDB->AddParticle("Cherenkov","Cherenkov",0,kFALSE,
-                     0,0,"Special",GetSpecialPdg(50));
-  pdgDB->AddParticle("FeedbackPhoton","FeedbackPhoton",0,kFALSE,
-                     0,0,"Special",GetSpecialPdg(51));
-}
-
-
-//
-// Info about primary ionization electrons
-//
-
-//______________________________________________________________________________
-Int_t TFluka::GetNPrimaryElectrons()
-{
-    // Get number of primary electrons
-    return ALLDLT.nalldl;
-}
-
-//______________________________________________________________________________
-Double_t TFluka::GetPrimaryElectronKineticEnergy(Int_t i) const
-{
-    // Returns kinetic energy of primary electron i
-
-    Double_t ekin = -1.;
-    
-    if (i >= 0 && i < ALLDLT.nalldl) {
-        ekin =  ALLDLT.talldl[i];
-    } else {
-        Warning("GetPrimaryElectronKineticEnergy",
-                "Primary electron index out of range %d %d \n",
-                i, ALLDLT.nalldl);
-    }
-    return ekin;
-}
-
-void TFluka::GetPrimaryElectronPosition(Int_t i, Double_t& x, Double_t& y, Double_t& z, Double_t& t) const
-{
-    // Returns position  of primary electron i
-        if (i >= 0 && i < ALLDLT.nalldl) {
-           x = ALLDLT.xalldl[i];
-           y = ALLDLT.yalldl[i];
-           z = ALLDLT.zalldl[i];
-           t = ALLDLT.talldl[i];
-           return;
-       } else {
-           Warning("GetPrimaryElectronPosition",
-                   "Primary electron index out of range %d %d \n",
-                   i, ALLDLT.nalldl);
-           return;
-       }
-       return;
-}
-
-
-//__________________________________________________________________
-Int_t TFluka::GetSpecialPdg(Int_t number) const
-{
-// Numbering for special particles
-
-  return 50000000 + number;
-}                
-
-     
-void  TFluka::PrimaryIonisationStepping(Int_t nprim)
-{
-// Call Stepping for primary ionisation electrons
-// Protection against nprim > mxalld
-// Multiple steps for nprim > 0
-    Int_t i;
-    fNPI = nprim;
-    if (nprim > 0) {
-       CalcPrimaryIonisationTime();
-       for (i = 0; i < nprim; i++) {
-           SetCurrentPrimaryElectronIndex(i);
-           (TVirtualMCApplication::Instance())->Stepping();
-           if (i == 0) SetTrackIsNew(kFALSE);
-       }       
-    } else {
-       // No primary electron ionisation
-       // Call Stepping anyway but flag nprim = 0 as index = -2
-       SetCurrentPrimaryElectronIndex(-2);
-       (TVirtualMCApplication::Instance())->Stepping();
-    }
-    // Reset the index
-    SetCurrentPrimaryElectronIndex(-1);
-}
-
-//______________________________________________________________________
-Float_t* TFluka::CreateFloatArray(Double_t* array, Int_t size) const
-{
-// Converts Double_t* array to Float_t*,
-// !! The new array has to be deleted by user.
-// ---
-    
-  Float_t* floatArray;
-  if (size>0) {
-    floatArray = new Float_t[size];
-    for (Int_t i=0; i<size; i++)
-      if (array[i] >= FLT_MAX ) 
-        floatArray[i] = FLT_MAX/100.;
-      else     
-        floatArray[i] = array[i];
-  }
-  else {
-    //floatArray = 0;
-    floatArray = new Float_t[1];
-  }
-  return floatArray;
-}
-
-void TFluka::CalcPrimaryIonisationTime()
-{
-    // Calculates the primary ionisation time
-    if (fPItime) delete [] fPItime; 
-    fPItime = new Double_t[fNPI];
-    if (fPIlength) delete [] fPIlength;
-    fPIlength = new Double_t[fNPI];
-    //
-    Double_t px, py, pz, e, t;
-    TrackMomentum(px, py, pz, e);
-    Double_t p    = TMath::Sqrt(px * px + py * py + pz * pz);
-    Double_t beta = p / e;
-    Double_t x0, y0, z0;
-    fPItime[fNPI -1]   = TRACKR.atrack;
-    fPIlength[fNPI -1] = TRACKR.cmtrck;
-    GetPrimaryElectronPosition(fNPI - 1, x0, y0, z0, t);       
-    if (fNPI > 1) {
-       for (Int_t i = fNPI - 2; i > -1; i--) {
-           Double_t x, y, z, time;
-           GetPrimaryElectronPosition(i, x, y, z, time);       
-           Double_t ds = TMath::Sqrt((x-x0) * (x-x0) + (y-y0) * (y-y0) + (z-z0) * (z-z0));
-           fPItime[i]   = fPItime[i+1]   - ds / (beta * 2.99792458e10);
-           fPIlength[i] = fPIlength[i+1] - ds;
-           x0 = x; y0 = y; z0 = z;
-       }
-    }
-    
-}
-
-Bool_t TFluka::DefineIon(const char* name , Int_t z, Int_t a, Int_t q, Double_t exE, Double_t mass)
-{
-    // User defined ion that can be used as a primary
-    fUserIons = kTRUE;
-    TFlukaIon::AddIon(name, z, a, q,exE, mass);
-    return kTRUE;
-}
diff --git a/TFluka/TFluka.h b/TFluka/TFluka.h
deleted file mode 100644 (file)
index 6a659cc..0000000
+++ /dev/null
@@ -1,534 +0,0 @@
-#ifndef TFLUKA_H
-#define TFLUKA_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-
-///////////////////////////////////////////////////////////////////////////////
-//                                                                           //
-//                                                                           //
-// FLUKA implementation of the VirtualMC Interface                           //
-//                                                                           //
-//                                                                           //
-///////////////////////////////////////////////////////////////////////////////
-
-
-#include "TVirtualMC.h"
-#include "TMCOptical.h"
-#include "TFlukaCodes.h"
-#include "TFlukaMCGeometry.h"
-
-//Forward declaration
-class TGeoMCGeometry;
-//class TFlukaMCGeometry;
-class TGeoMaterial;
-
-class TFluka : public TVirtualMC {
-  
- public:
-  TFluka(const char *title, Int_t verbosity = 0,  Bool_t isRootGeometrySupported = 0);
-  TFluka();
-  virtual ~TFluka();
-  virtual Bool_t IsRootGeometrySupported() const { return kTRUE;}
-  
-  Int_t         GetNstep() { return fGeom->GetNstep(); } // to be removed
-  
-  //
-  // Methods for building/management of geometry
-  // ------------------------------------------------
-  //
-  
-  // Functions from GCONS 
-  virtual void   Gfmate(Int_t imat, char *name, Float_t &a, Float_t &z,  
-                       Float_t &dens, Float_t &radl, Float_t &absl,
-                       Float_t* ubuf, Int_t& nbuf);
-  virtual void   Gfmate(Int_t imat, char *name, Double_t &a, Double_t &z,
-                       Double_t &dens, Double_t &radl, Double_t &absl,
-                       Double_t* ubuf, Int_t& nbuf);
-  
-  // Detector composition
-  virtual void   Material(Int_t& kmat, const char* name, Double_t a, 
-                         Double_t z, Double_t dens, Double_t radl, Double_t absl,
-                         Float_t* buf, Int_t nwbuf);
-  virtual void   Material(Int_t& kmat, const char* name, Double_t a, 
-                         Double_t z, Double_t dens, Double_t radl, Double_t absl,
-                         Double_t* buf, Int_t nwbuf);
-  virtual void   Mixture(Int_t& kmat, const char *name, Float_t *a, 
-                        Float_t *z, Double_t dens, Int_t nlmat, Float_t *wmat);
-  virtual void   Mixture(Int_t& kmat, const char *name, Double_t *a, 
-                        Double_t *z, Double_t dens, Int_t nlmat, Double_t *wmat);
-  virtual void   Medium(Int_t& kmed, const char *name, Int_t nmat, 
-                       Int_t isvol, Int_t ifield, Double_t fieldm, Double_t tmaxfd, 
-                       Double_t stemax, Double_t deemax, Double_t epsil, 
-                       Double_t stmin, Float_t* ubuf, Int_t nbuf);
-  virtual void   Medium(Int_t& kmed, const char *name, Int_t nmat, 
-                       Int_t isvol, Int_t ifield, Double_t fieldm, Double_t tmaxfd, 
-                       Double_t stemax, Double_t deemax, Double_t epsil, 
-                       Double_t stmin, Double_t* ubuf, Int_t nbuf);
-  virtual void   Matrix(Int_t& krot, Double_t thetaX, Double_t phiX, 
-                       Double_t thetaY, Double_t phiY, Double_t thetaZ, 
-                       Double_t phiZ);
-  virtual void   Gstpar(Int_t itmed, const char *param, Double_t parval);
-  
-  // Functions from GGEOM 
-  virtual Int_t  Gsvolu(const char *name, const char *shape, Int_t nmed,  
-                       Float_t *upar, Int_t np);
-  virtual Int_t  Gsvolu(const char *name, const char *shape, Int_t nmed,  
-                       Double_t *upar, Int_t np);
-  virtual void   Gsdvn(const char *name, const char *mother, Int_t ndiv, 
-                      Int_t iaxis);
-  virtual void   Gsdvn2(const char *name, const char *mother, Int_t ndiv, 
-                       Int_t iaxis, Double_t c0i, Int_t numed);
-  virtual void   Gsdvt(const char *name, const char *mother, Double_t step, 
-                      Int_t iaxis, Int_t numed, Int_t ndvmx);
-  virtual void   Gsdvt2(const char *name, const char *mother, Double_t step, 
-                      Int_t iaxis, Double_t c0, Int_t numed, Int_t ndvmx);
-  virtual void   Gsord(const char *name, Int_t iax);
-  virtual void   Gspos(const char *name, Int_t nr, const char *mother,  
-                      Double_t x, Double_t y, Double_t z, Int_t irot, 
-                     const char *konly="ONLY");
-  virtual void   Gsposp(const char *name, Int_t nr, const char *mother,  
-                       Double_t x, Double_t y, Double_t z, Int_t irot,
-                       const char *konly, Float_t *upar, Int_t np);
-  virtual void   Gsposp(const char *name, Int_t nr, const char *mother,  
-                       Double_t x, Double_t y, Double_t z, Int_t irot,
-                       const char *konly, Double_t *upar, Int_t np);
-  virtual void   Gsbool(const char* onlyVolName, const char* manyVolName);
-  
-   // functions for access to geometry
-   //
-   // Return the Transformation matrix between the volume specified by
-   // the path volumePath and the top or master volume.
-   virtual Bool_t GetTransformation(const TString& volumePath, 
-                        TGeoHMatrix& matrix);
-   
-   // Return the name of the shape and its parameters for the volume
-   // specified by the volume name.
-   virtual Bool_t GetShape(const TString& volumePath, 
-                        TString& shapeType, TArrayD& par);
-
-   // Returns the material parameters for the volume specified by
-   // the volume name.
-   virtual Bool_t GetMaterial(const TString& volumeName,
-                TString& name, Int_t& imat,
-                Double_t& a, Double_t& z, Double_t& density,
-                Double_t& radl, Double_t& inter, TArrayD& par);
-                    
-   // Returns the medium parameters for the volume specified by the
-   // volume name.
-   virtual Bool_t GetMedium(const TString& volumeName,
-                        TString& name, Int_t& imed,
-                Int_t& nmat, Int_t& isvol, Int_t& ifield,
-                Double_t& fieldm, Double_t& tmaxfd, Double_t& stemax,
-                Double_t& deemax, Double_t& epsil, Double_t& stmin,
-                TArrayD& par);
-    
-  virtual void   SetCerenkov(Int_t itmed, Int_t npckov, Float_t *ppckov,
-                            Float_t *absco, Float_t *effic, Float_t *rindex);
-  virtual void   SetCerenkov(Int_t itmed, Int_t npckov, Double_t *ppckov,
-                            Double_t *absco, Double_t *effic, Double_t *rindex);
-  virtual void   SetCerenkov(Int_t itmed, Int_t npckov, Float_t *ppckov,
-                            Float_t *absco, Float_t *effic, Float_t *rindex, Float_t *rfl);
-  virtual void   SetCerenkov(Int_t itmed, Int_t npckov, Double_t *ppckov,
-                            Double_t *absco, Double_t *effic, Double_t *rindex, Double_t *rfl);
-  
-//
-  virtual void   DefineOpSurface(const char* name, EMCOpSurfaceModel model, EMCOpSurfaceType surface,
-                                EMCOpSurfaceFinish surfaceFinish, Double_t sigmaAlpha);
-  
-  virtual void  SetBorderSurface(const char* name, const char* vol1Name, int vol1CopyNo, const char* vol2Name, int vol2CopyNo,
-                                const char* opSurfaceName);
-  
-  
-  virtual void  SetSkinSurface(const char* name, const char* volName, const char* opSurfaceName);
-  
-  virtual void  SetMaterialProperty(Int_t itmed, const char* propertyName, Int_t np, Double_t* pp, Double_t* values);
-
-  virtual void  SetMaterialProperty(Int_t itmed, const char* propertyName, Double_t value);
-
-  virtual void  SetMaterialProperty(const char* surfaceName, const char* propertyName, Int_t np, Double_t* pp, Double_t* values);
-
-  // Functions for drawing
-  virtual void   DrawOneSpec(const char* /*name*/)
-      {Warning("DrawOneSpec",  "Not yet implemented !\n");}
-  virtual void   Gsatt(const char* name, const char* att, Int_t val);
-  virtual void   Gdraw(const char*,Double_t /*theta = 30*/, Double_t /*phi = 30*/,
-                      Double_t /*psi = 0*/, Double_t /*u0 = 10*/, Double_t /*v0 = 10*/,
-                      Double_t /*ul = 0.01*/, Double_t /*vl = 0.01*/)
-      {Warning("Gdraw", "Not yet implemented !\n");}
-  
-  // Euclid
-  virtual void   WriteEuclid(const char*, const char*, Int_t, Int_t);
-  
-  // Getters
-  Int_t          GetDummyRegion() const;
-  Int_t          GetDummyLattice() const;
-  virtual Int_t  VolId(const Text_t* volName) const;
-  virtual const  char* VolName(Int_t id) const;
-  virtual Int_t  NofVolumes() const {return fNVolumes;}
-  virtual Int_t  VolId2Mate(Int_t id) const;
-  // Return the unique numeric identifier for medium name mediumName
-  virtual Int_t MediumId(const Text_t* mediumName) const;
-
-  //
-  // Methods for physics management
-  // ------------------------------------------------
-  //
-  
-  // User configuration
-  virtual Bool_t     SetProcess(const char* flagName, Int_t flagValue);
-  virtual void       SetProcess(const char* flagName, Int_t flagValue, Int_t imed);
-  virtual Bool_t     SetCut(const char* cutName, Double_t cutValue);
-  virtual void       SetCut(const char* cutName, Double_t cutValue, Int_t imed);
-  virtual void       SetModelParameter(const char* parName, Double_t parValue, Int_t imed);
-  virtual TObjArray* GetListOfUserConfigs() {return fUserConfig;}
-  virtual Double_t   Xsec(char*, Double_t, Int_t, Int_t);
-  virtual void       SetLowEnergyNeutronTransport(Bool_t flag) {fLowEnergyNeutronTransport = flag;}
-  virtual Bool_t     LowEnergyNeutronTransport() {return fLowEnergyNeutronTransport;}
-  // Particle table usage         
-  virtual Int_t    IdFromPDG(Int_t id) const;
-  virtual Int_t    PDGFromId(Int_t pdg) const;
-  virtual void     DefineParticles()
-  {Warning("DefineParticles", "Not yet implemented !\n");}     
-  virtual Bool_t   SetDecayMode(Int_t /*pdg*/,
-                                Float_t /*bratio*/[6], Int_t /*mode*/[6][3])
-      {return kFALSE;}
-  
-
-  //
-  // methods for step management
-  // ------------------------------------------------
-  //
-  
-  // Action methods
-  virtual void   StopTrack();
-  virtual void   ResetStoppingCondition() {fStopped = kFALSE;}
-  virtual Bool_t GetStoppingCondition() const   {return fStopped;}
-
-  virtual void   StopEvent() {fStopEvent = kTRUE;}   
-  virtual void   StopRun()   {fStopEvent = kTRUE; fStopRun   = kTRUE;}
-  virtual Bool_t EventIsStopped() const {return fStopEvent;}
-  virtual void   SetStopEvent(Bool_t flag) {fStopEvent = flag;}
-  
-  // Set methods
-  virtual void SetMaxStep (Double_t step);
-  virtual void SetMaxNStep(Int_t);
-  virtual void SetUserDecay(Int_t);
-  
-  // Get methods
-  // Tracking volume(s) 
-  virtual Int_t    CurrentVolID(Int_t& copyNo) const;
-  virtual Int_t    CurrentVolOffID(Int_t off, Int_t& copyNo) const;
-  virtual const char* CurrentVolName() const;
-  virtual const char* CurrentVolOffName(Int_t off) const;
-  virtual Int_t    CurrentMaterial(Float_t &a, Float_t &z, 
-                                  Float_t &dens, Float_t &radl, Float_t &absl) const;
-  virtual Int_t    CurrentEvent() const {return fNEvent;}
-
-  virtual void     Gmtod(Float_t* xm, Float_t* xd, Int_t iflag);
-  
-  virtual void     Gmtod(Double_t* xm, Double_t* xd, Int_t iflag);
-  
-  virtual void     Gdtom(Float_t* xd, Float_t* xm, Int_t iflag);
-  
-  virtual void     Gdtom(Double_t* xd, Double_t* xm, Int_t iflag);
-  
-  virtual Double_t MaxStep() const;
-  virtual Int_t    GetMaxNStep() const
-      {Warning("GetMaxNStep",  "Not yet implemented !\n"); return -1;}
-  virtual Int_t    GetMedium() const;
-  virtual Int_t    CurrentMedium() const {return GetMedium();}
-  
-  // Tracking particle 
-  // dynamic properties
-  virtual void     TrackPosition(TLorentzVector& position) const;
-  virtual void     TrackPosition(Double_t& x, Double_t& y, Double_t& z) const;
-  virtual void     TrackMomentum(TLorentzVector& momentum) const;
-  virtual void     TrackMomentum(Double_t& px, Double_t& py, Double_t& pz, Double_t& e) const;
-  virtual Double_t TrackStep() const;
-  virtual Double_t TrackLength() const;
-  virtual Double_t TrackTime() const;
-  virtual Double_t Edep() const;
-  // Static properties
-  virtual Int_t    CorrectFlukaId() const;
-  virtual Int_t    TrackPid() const;
-  virtual Double_t TrackCharge() const;
-  virtual Double_t TrackMass() const;
-  virtual Double_t Etot() const;
-  // Track status
-  virtual Bool_t   IsNewTrack() const;
-  virtual Bool_t   IsTrackInside() const;
-  virtual Bool_t   IsTrackEntering() const;
-  virtual Bool_t   IsTrackExiting() const;
-  virtual Bool_t   IsTrackOut() const;
-  virtual Bool_t   IsTrackDisappeared() const;
-  virtual Bool_t   IsTrackStop() const;
-  virtual Bool_t   IsTrackAlive() const;
-  // Secondaries
-  virtual Int_t    NSecondaries() const;
-  virtual void     SetNCerenkov(Int_t nc) {fNCerenkov = nc;}
-         
-  virtual void     GetSecondary(Int_t isec, Int_t& particleId, 
-                       TLorentzVector& position, TLorentzVector& momentum);
-  virtual Bool_t   SecondariesAreOrdered() const {return kFALSE;}
-  virtual TMCProcess ProdProcess(Int_t iproc) const ;
-  virtual Int_t    StepProcesses(TArrayI & proc) const;
-  //
-  // Geant3 specific methods
-  // !!! need to be transformed to common interface
-  //
-  virtual void Gdopt(const char*,const char*)
-    {Warning("Gdopt", "Not yet implemented !\n");}
-  virtual void SetClipBox(const char*,Double_t=-9999,Double_t=0, Double_t=-9999,
-                         Double_t=0,Double_t=-9999,Double_t=0)
-    {Warning("SetClipBox", "Not yet implemented !\n");}
-  virtual void DefaultRange()
-    {Warning("DefaultRange", "Not yet implemented !\n");}
-  virtual void Gdhead(Int_t, const char*, Double_t=0)
-    {Warning("Gdhead", "Not yet implemented !\n");}  
-  virtual void Gdman(Double_t, Double_t, const char*)
-    {Warning("Gdman", "Not yet implemented !\n");}
-  virtual void SetColors()
-    {Warning("SetColors", "Not yet implemented !\n");}
-  virtual void Gtreve()
-    {Warning("Gtreve", "Not yet implemented !\n");}
-  virtual void GtreveRoot()
-    {Warning("GtreveRoot", "Not yet implemented !\n");}
-  virtual void Gckmat(Int_t, char*)
-    {Warning("Gckmat", "Not yet implemented !\n");}
-  virtual void InitLego()
-    {Warning("InitLego", "Not yet implemented !\n");}
-//
-  virtual void Gfpart(Int_t pdg, char* name, Int_t& type, Float_t& mass, Float_t& charge, Float_t& tlife);
-  virtual void Gspart(Int_t, const char*, Int_t, Double_t, Double_t, Double_t)
-      {Warning("Gspart", "Not yet implemented !\n");}
-
-  //
-  // Particle Properties
-  // -------------------
-  //
-  virtual Bool_t DefineParticle(Int_t, const char*, TMCParticleType, Double_t, Double_t, Double_t) {return kFALSE;}
-  virtual Bool_t DefineParticle(Int_t, const char*, TMCParticleType, Double_t, Double_t, Double_t,
-                               const TString&, Double_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t,
-                               Bool_t, Bool_t = kFALSE, const TString& = "", Int_t = 0, Double_t = 0.0, Double_t = 0.0) {return kFALSE;}
-  virtual Bool_t DefineIon(const char* name , Int_t z, Int_t a, Int_t q, Double_t exE, Double_t mass);
-  
-  virtual TString  ParticleName(int pdg)      const;
-  virtual Double_t ParticleMass(int pdg)      const;
-  virtual Double_t ParticleMassFPC(int fpc)   const;
-  virtual Double_t ParticleCharge(int pdg)    const;
-  virtual Double_t ParticleLifeTime(int pdg)  const;
-  virtual TMCParticleType ParticleMCType(int) const {return (TMCParticleType) 9;}
-  //
-  // Control methods
-  // ------------------------------------------------
-  //
-  
-  virtual void Init();
-  virtual void InitPhysics();
-  virtual void FinishGeometry();
-  virtual void BuildPhysics();
-  virtual void ProcessEvent();
-  virtual Bool_t ProcessRun(Int_t nevent);
-
-
-  //
-  // FLUKA Scoring specific methods
-  // ------------------------------
-  //
-  virtual void SetUserScoring(const char* option, const char* sdum, Int_t npr,char* outfile, Float_t* what);
-  virtual void SetUserScoring(const char* option, const char* sdum, Int_t npr,char* outfile, Float_t* what,
-                             const char* det1, const char* det2, const char* det3);
-  //
-  // New Getter and Setters
-  // ------------------------------------------------
-  //
-  // - Core input file name
-  TString GetCoreInputFileName() const {return fCoreInputFileName;}
-  void SetCoreInputFileName(const char* file = "coreFlukaVmc.inp") {fCoreInputFileName = file;}
-
-  // - Input file name
-  TString GetInputFileName() const {return fInputFileName;}
-  void SetInputFileName(const char* file = "FlukaVmc.inp") {fInputFileName = file;}
-
-  // - Verbosity level
-  Int_t GetVerbosityLevel() const {return fVerbosityLevel;}
-  void SetVerbosityLevel(Int_t l) {fVerbosityLevel = l;}
-
-  //
-  // - Fluka Draw procedures identifiers, see TFlukaCodes.h
-  //
-  FlukaCallerCode_t GetCaller() const {return fCaller;}
-  FlukaProcessCode_t GetIcode() const {return fIcode;}
-  Int_t GetMreg() const {return fCurrentFlukaRegion;}
-  Int_t GetNewreg() const {return fNewReg;}
-  Double_t GetRull() const {return fRull;}
-  Double_t GetXsco() const {return fXsco;}
-  Double_t GetYsco() const {return fYsco;}
-  Double_t GetZsco() const {return fZsco;}
-  Int_t              GetCurrentFlukaRegion() const {return fCurrentFlukaRegion;}
-  // - Fluka Draw Setters
-  void  SetCurrentFlukaRegion(Int_t reg) {fCurrentFlukaRegion=reg;}
-  void  SetCaller(FlukaCallerCode_t l) {fCaller = l;}
-  void  SetIcode(FlukaProcessCode_t l) {fIcode = l;}
-  void  SetMreg(Int_t l, Int_t lttc);
-  void  SetNewreg(Int_t l, Int_t /*lttc*/) {fNewReg = l;}
-  void  SetRull(Double_t r) {fRull = r;}
-  void  SetXsco(Double_t x) {fXsco = x;}
-  void  SetYsco(Double_t y) {fYsco = y;}
-  void  SetZsco(Double_t z) {fZsco = z;}
-  void  SetPint(Double_t px, Double_t py, Double_t pz, Double_t e) {fPint[0] = px; fPint[1] = py; fPint[2] = pz; fPint[3] = e;}
-  void  SetTrackIsEntering(){fTrackIsEntering = kTRUE; fTrackIsExiting = kFALSE;}
-  void  SetTrackIsExiting() {fTrackIsExiting  = kTRUE; fTrackIsEntering = kFALSE;}
-  void  SetTrackIsInside()  {fTrackIsExiting  = kFALSE; fTrackIsEntering = kFALSE;}
-  void  SetTrackIsNew(Bool_t flag = kTRUE);
-
-  void   SetDummyBoundary(Int_t mode) {fDummyBoundary = mode;}
-  Int_t  GetDummyBoundary() const {return fDummyBoundary;}
-  Bool_t IsDummyBoundary() const {return (fDummyBoundary==0)?kFALSE:kTRUE;}
-  
-  void   EnableField(Bool_t flag=kTRUE) {fFieldFlag = flag;}
-  Bool_t IsFieldEnabled() const {return fFieldFlag;}
-  
-  Int_t  GetMaterialIndex(Int_t idmat) const {return fMaterials[idmat];}
-
-  TObjArray *          GetFlukaMaterials();
-  virtual void         SetRootGeometry() {;} // Dummy
-  virtual Int_t        NofVolDaughters(const char* volName) const;
-  virtual const char*  VolDaughterName(const char* volName, Int_t i) const;
-  virtual Int_t        VolDaughterCopyNo(const char* volName, Int_t i) const;
-  virtual const char*  CurrentVolPath();
-  virtual void         ForceDecayTime(Float_t){;}
-  //
-  // Info about primary ionization electrons
-  Int_t    GetNPrimaryElectrons();
-  Double_t GetPrimaryElectronKineticEnergy(Int_t i) const;
-  void     GetPrimaryElectronPosition(Int_t i, Double_t& x, Double_t& y, Double_t& z, Double_t& t) const;
-  void     SetCurrentPrimaryElectronIndex(Int_t i)  {fPrimaryElectronIndex = i;}
-  void     PrimaryIonisationStepping(Int_t nprim);
-  void     CalcPrimaryIonisationTime();
- private:
-   
-  // Copy constructor and operator= declared but not implemented (-Weff++ flag)
-  TFluka(const TFluka &mc); //: TVirtualMC(mc) {;}
-  TFluka & operator=(const TFluka &); // {return (*this);}
-  void  PrintHeader();
-  void  AddParticlesToPdgDataBase() const;
-
-  Int_t GetSpecialPdg(Int_t number) const;
-  
-  Float_t* CreateFloatArray(Double_t* array, Int_t size) const;
-  
-  //
-  Int_t   fVerbosityLevel; //Verbosity level (0 lowest - 3 highest)
-  Int_t   fNEvent;         //Current event number
-  TString fInputFileName;     //Name of the real input file 
-  TString fCoreInputFileName; //Name of the input file 
-
-  FlukaCallerCode_t     fCaller;           // Parameter to indicate who is the caller of the Fluka Draw
-  FlukaProcessCode_t    fIcode;            // Fluka Draw procedures formal parameter 
-  Int_t                 fNewReg;           // Fluka Draw procedures formal parameter
-  Double_t              fRull;             // Fluka Draw procedures formal parameter
-  Double_t              fXsco;             // Fluka Draw procedures formal parameter
-  Double_t              fYsco;             // Fluka Draw procedures formal parameter
-  Double_t              fZsco;             // Fluka Draw procedures formal parameter
-  Double_t              fPint[4];          // 4-vector of particle after interaction
-  Double_t*             fPItime;           // Time distribution of primary ionisations
-  Double_t*             fPIlength;         // Track length distribution of primary ionisations
-  Int_t                 fNPI;              // Number of primary ionisation steps
-  Bool_t   fTrackIsEntering;      // Flag for track entering
-  Bool_t   fTrackIsExiting;       // Flag for track exiting  
-  Bool_t   fTrackIsNew;           // Flag for new track
-  Bool_t   fFieldFlag;            // Flag for magnetic field
-  Int_t    fDummyBoundary;        // Flag for crossing dummy boundaries
-  Bool_t   fStopped;              // Flag for stopping 
-  Bool_t   fStopEvent;            // Flag for stopped event
-  Bool_t   fStopRun;              // Flag for stopped run 
-  Int_t    fPrimaryElectronIndex; // Primary electron Index
-  Bool_t   fLowEnergyNeutronTransport; // Flag to force low energy neutron transport
-  
-  //
-  //Geometry through TGeo
-  //
-  Int_t*               fMaterials;          //!Array of indices
-  Int_t                fNVolumes;           //!Current number of volumes
-  Int_t                fCurrentFlukaRegion; // Index of fluka region at each step
-  Int_t                fNCerenkov;          // Number of cerekov photons 
-  TFlukaMCGeometry    *fGeom;               // TGeo-FLUKA interface
-  TGeoMCGeometry      *fMCGeo;              // Interface to TGeo builder
-
-  // SetProcess, SetCut and user Scoring dynamic storage
-  TObjArray* fUserConfig;            // List of user physics configuration 
-  TObjArray* fUserScore;             // List of user scoring options
-  // User defined Ion
-  Bool_t               fUserIons;    // User requests ion transport
-  
-  //
-
-  ClassDef(TFluka,1)                 // C++ interface to Fluka montecarlo
-
-
-  // Temporary implementation of new functions
-  // To be removed with the next release
-};
-  inline Int_t TFluka::NofVolDaughters(const char* /*volName*/) const {
-    Warning("NofVolDaughters", "New function - not yet implemented.");
-    return 0;
-  }
-
-  inline const char*  TFluka::VolDaughterName(const char* /*volName*/, Int_t /*i*/) const {
-    Warning("VolDaughterName", "New function - not yet implemented.");
-    return "";
-  }
-
-  inline Int_t  TFluka::VolDaughterCopyNo(const char* /*volName*/, Int_t /*i*/) const {
-    Warning("VolDaughterCopyNo", "New function - not yet implemented.");
-    return 0;
-  }
-
-
-inline void TFluka::DefineOpSurface(const char* /*name*/, EMCOpSurfaceModel /*model*/, EMCOpSurfaceType /*surface*/,
-                                   EMCOpSurfaceFinish /*surfaceFinish*/, Double_t /*sigmaAlpha*/)
-{
-    Warning("DefineOpSurface", "New function - not yet implemented.");
-}
-
-
-inline void TFluka::SetBorderSurface(const char* /*name*/, const char* /*vol1Name*/, int /*vol1CopyNo*/, const char* /*vol2Name*/,
-                                    int /*vol2CopyNo*/, const char* /*opSurfaceName*/)
-{
-    Warning("SetBorderSurface", "New function - not yet implemented."); 
-}
-
-  
-inline void TFluka::SetSkinSurface(const char* /*name*/, const char* /*volName*/, const char* /*opSurfaceName*/)
-{
-    Warning("SetSkinSurface", "New function - not yet implemented.");
-}
-
-  
-inline void TFluka::SetMaterialProperty(Int_t /*itmed*/, const char* /*propertyName*/, Int_t /*np*/, Double_t* /*pp*/, Double_t* /*values*/)
-{
-    Warning("SetMaterialProperty", "New function - not yet implemented."); 
-}
-
-
-inline void TFluka::SetMaterialProperty(Int_t /*itmed*/, const char* /*propertyName*/, Double_t /*value*/)
-{
-    Warning("SetMaterialProperty", "New function - not yet implemented.");
-}
-
-
-inline void TFluka::SetMaterialProperty(const char* /*surfaceName*/, const char* /*propertyName*/, Int_t /*np*/,
-                                       Double_t* /*pp*/, Double_t* /*values*/)
-{
-    Warning("SetMaterialProperty", "New function - not yet implemented.");      
-}
-
-
-
-#endif //TFLUKA
-
diff --git a/TFluka/TFlukaCerenkov.cxx b/TFluka/TFlukaCerenkov.cxx
deleted file mode 100644 (file)
index 53d26b5..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/* $Id$*/
-
-//
-// Stores user defined cerenkov properties of media like 
-// absorption coefficient, refraction index and quantum efficiency. 
-// The properties are stored in arrays. The array index corresponds to discrete 
-// optical photon energies defined in fEnergy.
-// Access to the properties is provided by interpolation.
-// 
-// Author:
-// A. Morsch 
-// andreas.morsch@cern.ch
-//
-
-#include "TFlukaCerenkov.h"
-
-Double_t TFlukaCerenkov::fgGlobalMaximumEfficiency = 0.;
-   
-ClassImp(TFlukaCerenkov)
-
-
-TFlukaCerenkov::TFlukaCerenkov()
-    : fSamples(0), 
-      fIsMetal(kFALSE),
-      fIsSensitive(kFALSE),
-      fEnergy(0),
-      fWaveLength(0),
-      fAbsorptionCoefficient(0),
-      fQuantumEfficiency(0),
-      fRefractionIndex(0),
-      fReflectivity(0),
-      fMaximumEfficiency(0.)
-{
-// Default constructor
-}
-
-
-TFlukaCerenkov::TFlukaCerenkov(Int_t npckov, Float_t *ppckov, Float_t *absco, Float_t *effic, Float_t *rindex)
-    : fSamples(npckov),
-      fIsMetal(kFALSE),
-      fIsSensitive(kFALSE),
-      fEnergy(new Float_t[fSamples]),
-      fWaveLength(new Float_t[fSamples]),
-      fAbsorptionCoefficient(new Float_t[fSamples]),
-      fQuantumEfficiency(new Float_t[fSamples]),
-      fRefractionIndex(new Float_t[fSamples]),
-      fReflectivity(new Float_t[fSamples]),
-      fMaximumEfficiency(0.)
-{
-// Constructor
-
-//    fSamples = npckov;
-//    fEnergy                = new Float_t[fSamples];
-//    fWaveLength            = new Float_t[fSamples];
-//    fAbsorptionCoefficient = new Float_t[fSamples];
-//    fRefractionIndex       = new Float_t[fSamples];
-//    fQuantumEfficiency     = new Float_t[fSamples];
-//    fReflectivity          = new Float_t[fSamples];    
-
-    for (Int_t i = 0; i < fSamples; i++) {
-        fEnergy[i]             = ppckov[i];
-        fWaveLength[i]         = khc / ppckov[i];
-        if (absco[i] > 0.) {
-            fAbsorptionCoefficient[i]   = 1./ absco[i];
-        } else {
-            fAbsorptionCoefficient[i]   = 1.e15;
-        }
-        fRefractionIndex[i]    = rindex[i];
-        fQuantumEfficiency[i]  = effic[i];
-        //
-        // Find local maximum quantum efficiency
-        if (effic[i] > fMaximumEfficiency) fMaximumEfficiency = effic[i];
-        //
-        // Flag is sensitive if quantum efficiency 0 < eff < 1 for at least one value.
-        if (effic[i] < 1. && effic[i] > 0.) fIsSensitive = 1;
-        // G3 way to define metal
-        if (rindex[0] == 0.) {
-            fIsMetal = kTRUE;
-            fReflectivity[i] = absco[i];
-        }
-    }
-    // Find global  maximum quantum efficiency
-    if (fMaximumEfficiency > GetGlobalMaximumEfficiency()) {
-        SetGlobalMaximumEfficiency(fMaximumEfficiency);
-    }
-}
-
-TFlukaCerenkov::TFlukaCerenkov(Int_t npckov, Float_t *ppckov, Float_t *absco, Float_t *effic, Float_t *rindex, Float_t *refl)
-    : fSamples(npckov),
-      fIsMetal(kFALSE),
-      fIsSensitive(kFALSE),
-      fEnergy(new Float_t[fSamples]),
-      fWaveLength(new Float_t[fSamples]),
-      fAbsorptionCoefficient(new Float_t[fSamples]),
-      fQuantumEfficiency(new Float_t[fSamples]),
-      fRefractionIndex(new Float_t[fSamples]),
-      fReflectivity(new Float_t[fSamples]),
-      fMaximumEfficiency(0.)
-{
-    // Constructor including reflectivity
-//    fSamples = npckov;
-//    fEnergy                = new Float_t[fSamples];
-//    fWaveLength            = new Float_t[fSamples];
-//    fAbsorptionCoefficient = new Float_t[fSamples];
-//    fRefractionIndex       = new Float_t[fSamples];
-//    fQuantumEfficiency     = new Float_t[fSamples];
-    
-    
-    for (Int_t i = 0; i < fSamples; i++) {
-        fEnergy[i]             = ppckov[i];
-        fWaveLength[i]         = khc / ppckov[i];
-        if (absco[i] > 0.) {
-            fAbsorptionCoefficient[i]   = 1./ absco[i];
-        } else {
-            fAbsorptionCoefficient[i]   = 1.e15;
-        }
-        fRefractionIndex[i]    = rindex[i];
-        fQuantumEfficiency[i]  = effic[i];
-        //
-        // Find local maximum quantum efficiency
-        if (effic[i] > fMaximumEfficiency) fMaximumEfficiency = effic[i];
-        //
-        // Flag is sensitive if quantum efficiency 0 < eff < 1 for at least one value.
-        if (effic[i] < 1. && effic[i] > 0.) fIsSensitive = 1;
-        //
-
-    }
-    // Find global  maximum quantum efficiency
-    if (fMaximumEfficiency > GetGlobalMaximumEfficiency()) {
-        SetGlobalMaximumEfficiency(fMaximumEfficiency);
-    }
-//    fReflectivity     = new Float_t[fSamples];
-    for (Int_t i = 0; i < fSamples; i++) fReflectivity[i] = refl[i];
-    fIsMetal = kTRUE;
-}
-
-Float_t TFlukaCerenkov::GetAbsorptionCoefficient(Float_t energy)
-{
-//
-// Get AbsorptionCoefficient for given energy 
-//
-    return Interpolate(energy, fEnergy, fAbsorptionCoefficient);
-    
-}
-
-Float_t TFlukaCerenkov::GetRefractionIndex(Float_t energy)
-{
-//
-// Get RefractionIndex for given energy 
-//
-    return Interpolate(energy, fEnergy, fRefractionIndex);
-    
-}
-
-Float_t TFlukaCerenkov::GetReflectivity(Float_t energy)
-{
-//
-// Get RefractionIndex for given energy 
-//
-    return Interpolate(energy, fEnergy, fReflectivity);
-    
-}
-
-Float_t TFlukaCerenkov::GetQuantumEfficiency(Float_t energy)
-{
-//
-// Get QuantumEfficiency for given energy 
-//
-    return Interpolate(energy, fEnergy, fQuantumEfficiency);
-    
-}
-
-
-Float_t TFlukaCerenkov::GetAbsorptionCoefficientByWaveLength(Float_t wavelength)
-{
-//
-// Get AbsorptionCoefficient for given wavelength 
-//
-    Float_t energy = khc / wavelength;    
-    return Interpolate(energy, fEnergy, fAbsorptionCoefficient);
-    
-}
-
-Float_t TFlukaCerenkov::GetRefractionIndexByWaveLength(Float_t wavelength)
-{
-//
-// Get RefractionIndex for given wavelenth 
-//
-    Float_t energy = khc / wavelength;    
-    return Interpolate(energy, fEnergy, fRefractionIndex);
-}
-
-Float_t TFlukaCerenkov::GetReflectivityByWaveLength(Float_t wavelength)
-{
-//
-// Get RefractionIndex for given wavelenth 
-//
-    Float_t energy = khc / wavelength;    
-    return Interpolate(energy, fEnergy, fReflectivity);
-}
-
-Float_t TFlukaCerenkov::GetQuantumEfficiencyByWaveLength(Float_t wavelength)
-{
-//
-// Get QuantumEfficiency for given wavelength 
-//
-    Float_t energy = khc / wavelength;    
-    return Interpolate(energy, fEnergy, fQuantumEfficiency);
-}
-
-Float_t TFlukaCerenkov::Interpolate(Float_t value, Float_t* array1, Float_t* array2)
-{
-//
-// Interpolate array values 
-//
-    if (value < array1[0] && value >= array1[fSamples - 1]) {
-        Warning("Interpolate()", "Photon energy out of range. Returning 0.");
-        return (0.);
-    }
-    
-    Int_t i = TMath::BinarySearch(fSamples, array1, value);
-    if (i == (fSamples-1)) {
-        return (array2[i]);
-    } else {
-        return (array2[i] + (array2[i+1] - array2[i]) / (array1[i+1] - array1[i]) * (value - array1[i]));
-    }
-}
-
diff --git a/TFluka/TFlukaCerenkov.h b/TFluka/TFlukaCerenkov.h
deleted file mode 100644 (file)
index c1cb4e7..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef TFLUKACERENKOV
-#define TFLUKACERENKOV
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-
-///////////////////////////////////////////////////////////////////////////////
-//                                                                           //
-//                                                                           //
-// Class that gives access to optical properties for Cerenkov photon         //
-// production and transport                                                  //
-//                                                                           //
-//                                                                           //
-///////////////////////////////////////////////////////////////////////////////
-
-
-#include <TObject.h>
-#include <TMath.h>
-
-const Double_t khc = 2. * TMath::Pi() * 0.1973269602e-13; // GeV cm 
-
-
-class TFlukaCerenkov : public TObject
-{
-
-public:
-   // constructors
-    TFlukaCerenkov();
-    TFlukaCerenkov(Int_t npckov, Float_t *ppckov, Float_t *absco, Float_t *effic, Float_t *rindex);
-    TFlukaCerenkov(Int_t npckov, Float_t *ppckov, Float_t *absco, Float_t *effic, Float_t *rindex, Float_t* rfl);
-    virtual Float_t   GetAbsorptionCoefficient(Float_t energy);
-    virtual Float_t   GetQuantumEfficiency(Float_t energy);
-    virtual Float_t   GetRefractionIndex(Float_t energy);
-    virtual Float_t   GetReflectivity(Float_t energy);    
-    virtual Float_t   GetAbsorptionCoefficientByWaveLength(Float_t energy);
-    virtual Float_t   GetQuantumEfficiencyByWaveLength(Float_t energy);
-    virtual Float_t   GetRefractionIndexByWaveLength(Float_t energy);
-    virtual Float_t   GetReflectivityByWaveLength(Float_t energy);
-    virtual Float_t   GetMinimumEnergy()     {return fEnergy[0];}
-    virtual Float_t   GetMaximumEnergy()     {return fEnergy[fSamples-1];}
-    virtual Float_t   GetMinimumWavelength() {return khc / fEnergy[fSamples-1];}
-    virtual Float_t   GetMaximumWavelength() {return khc / fEnergy[0];}
-    virtual Int_t     GetNSamples()          {return fSamples;}
-    virtual Bool_t    IsMetal()              {return fIsMetal;}
-    virtual Bool_t    IsSensitive()          {return fIsSensitive;}
-    virtual Double_t  GetMaximumEfficiency() const             {return fMaximumEfficiency;}
-    static  Double_t  GetGlobalMaximumEfficiency()             {return fgGlobalMaximumEfficiency;}
-    static  void      SetGlobalMaximumEfficiency(Double_t eff) {fgGlobalMaximumEfficiency = eff;}
-
- protected:
-
-    virtual Float_t  Interpolate(Float_t energy, Float_t* array1, Float_t* array2);
-
- protected:
-    Int_t        fSamples;                  // Number of sampling points
-    Bool_t       fIsMetal;                  // Flag for metals
-    Bool_t       fIsSensitive;              // Flag for metals  
-    Float_t*     fEnergy;                   // [fSamples] Energy                 (GeV) 
-    Float_t*     fWaveLength;               // [fSamples] Wafelength             (cm)
-    Float_t*     fAbsorptionCoefficient;    // [fSamples] Absorption Coefficient (1/cm)
-    Float_t*     fQuantumEfficiency;        // [fSamples] Quantum efficiency
-    Float_t*     fRefractionIndex;          // [fSamples] Refraction Index
-    Float_t*     fReflectivity;             // [fSamples] Reflectivity
-    Double_t     fMaximumEfficiency;        // Local maximum quantum efficiency
-    // static 
-    static Double_t fgGlobalMaximumEfficiency; // Global maximum quantum efficiency
-
- private:
-    // Copy constructor and operator= declared but not implemented (-Weff++ flag)
-    TFlukaCerenkov(const TFlukaCerenkov&);
-    TFlukaCerenkov& operator=(const TFlukaCerenkov&);
-
-    ClassDef(TFlukaCerenkov, 1)          // CerenkovProperties
-};
-       
-#endif
-       
diff --git a/TFluka/TFlukaCodes.h b/TFluka/TFlukaCodes.h
deleted file mode 100644 (file)
index eec68ff..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#ifndef TFLUKACODES
-#define TFLUKACODES 
-typedef enum {
-    kNoProcess         =   0,
-    kKASKAD            =   1,  // KASKAD code first digit
-    kKASKADelarecoil   =  10,  // elastic interaction recoil
-    kKASKADinelarecoil =  11,  // inelastic interaction recoil   
-    kKASKADstopping    =  12,  // stopping particle
-    kKASKADpseudon     =  13,  // pseudo-neutron deposition
-    kKASKADescape      =  14,  // escape
-    kKASKADtimekill    =  15,  // time kill 
-    kKASKADboundary    =  19,  // boundary crossing
-    kKASKADnelint      = 100,  // elastic   interaction 
-    kKASKADinelint     = 101,  // inelastic interaction 
-    kKASKADdecay       = 102,  // particle decay  
-    kKASKADdray        = 103,  // delta ray  generation 
-    kKASKADpair        = 104,  // pair production
-    kKASKADbrems       = 105,  // bremsstrahlung
-    kEMFSCO            =   2,  // EMFSCO code first digit
-    kEMFSCOlocaldep    =  20,  // local energy deposition (i.e. photoelectric)
-    kEMFSCOstopping1   =  21,  // below user-defined cut-off
-    kEMFSCOstopping2   =  22,  // below user cut-off
-    kEMFSCOescape      =  23,  // escape  
-    kEMFSCOtimekill    =  24,  // time kill
-    kEMFSCOboundary    =  29,  // boundary crossing
-    kEMFSCObrems       = 208,  // bremsstrahlung
-    kEMFSCOmoller      = 210,  // Moller
-    kEMFSCObhabha      = 212,  // Bhabha
-    kEMFSCOanniflight  = 214,  // in-flight annihilation
-    kEMFSCOannirest    = 215,  // annihilation at rest
-    kEMFSCOpair        = 217,  // pair production
-    kEMFSCOcompton     = 219,  // Compton scattering
-    kEMFSCOphotoel     = 221,  // photoelectric effect 
-    kEMFSCOrayleigh    = 225,  // Rayleigh scattering  
-    kKASNEU            =   3,  // KASNEU code first digit
-    kKASNEUtargrecoil  =  30,  // target recoil
-    kKASNEUstopping    =  31,  // neutron below threshold
-    kKASNEUescape      =  32,  // escape 
-    kKASNEUtimekill    =  33,  // time kill
-    kKASNEUboundary    =  39,  // boundary crossing
-    kKASNEUhadronic    = 300,  // neutron interaction
-    kKASHEA            =   4,  // KASHEA code first digit
-    kKASHEAescape      =  40,  // escape
-    kKASHEAtimekill    =  41,  // time kill 
-    kKASHEAboundary    =  49,  // boundary crossing
-    kKASHEAdray        = 400,  // delta ray generation
-    kKASOPH            =   5,  // KASOPH code first digit
-    kKASOPHabsorption  =  50,  // optical photon absorption 
-    kKASOPHescape      =  51,  // escape 
-    kKASOPHtimekill    =  52,  // time kill
-    kKASOPHrefraction  =  59   // boundary crossing (i.e. refraction)
-}
-FlukaProcessCode_t;      
-
-typedef enum {
-    kNoCaller       =  0,
-    kEEDRAW         =  2,      // Stepping called from eedraw 
-    kENDRAW         =  3,      // Stepping called from endraw      
-    kMGDRAW         =  4,      // Stepping called from mgdraw 
-    kSODRAW         =  5,      // Stepping called from sodraw 
-    kUSDRAW         =  6,      // Stepping called from usdraw 
-    kBXEntering     = 11,      // Stepping called from bxdraw (entering track) 
-    kBXExiting      = 12,      // Stepping called from bxdraw (exiting  track) 
-    kMGResumedTrack = 40,      // Stepping called from mgdraw (resumed  track) 
-    kUSTCKV         = 50       // Stepping called from ustckv 
-}
-FlukaCallerCode_t;       
-
-typedef enum {
-    kFLUKAcodemin  = -  6,     // minimum particle code used by FLUKA
-    kFLUKAcodemax  =  250,     // maximum particle code used by FLUKA
-    kFLUKAoptical  = -  1,     // code for optical photon
-    kFLUKAelectron =    3,     // electron
-    kFLUKApositron =    4,     // positron
-    kFLUKAphoton   =    7,     // photon
-    kFLUKAmuplus   =   10,     // mu+
-    kFLUKAmuminus  =   11      // mu-
-}
-FlukaParticleCode_t;     
-
-#endif //TFLUKACODE
diff --git a/TFluka/TFlukaConfigOption.cxx b/TFluka/TFlukaConfigOption.cxx
deleted file mode 100644 (file)
index 2162961..0000000
+++ /dev/null
@@ -1,831 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/* $Id$*/
-
-#include "TFlukaConfigOption.h"
-#include "TFlukaMCGeometry.h"
-#include "TFluka.h"
-#include "TFlukaCerenkov.h"
-
-#include <TString.h>
-#include <TList.h>
-#include <TObjArray.h>
-#include <TVirtualMC.h>
-#include <TGeoMaterial.h>
-#include <TGeoMedium.h>
-#include <TGeoManager.h>
-#include <TGeoMedium.h>
-
-Float_t            TFlukaConfigOption::fgMatMin(-1.);
-Float_t            TFlukaConfigOption::fgMatMax(-1.);
-FILE*              TFlukaConfigOption::fgFile(0x0);
-TFlukaMCGeometry*  TFlukaConfigOption::fgGeom(0x0);
-
-Double_t TFlukaConfigOption::fgDCutValue[11];
-Int_t    TFlukaConfigOption::fgDProcessFlag[15];
-
-
-ClassImp(TFlukaConfigOption)
-
-
-TFlukaConfigOption::TFlukaConfigOption()
-  :fMedium(-1),
-   fCMatMin(-1),
-   fCMatMax(-1),
-   fCMaterial(0)
-{
-    // Default constructor
-    Int_t i;
-    for (i = 0; i < 11; i++) fCutValue[i]    = -1.;
-    for (i = 0; i < 15; i++) fProcessFlag[i] = -1;
-}
-
-
-TFlukaConfigOption::TFlukaConfigOption(Int_t medium)
-  :fMedium(medium),
-   fCMatMin(-1),
-   fCMatMax(-1),
-   fCMaterial(0)
-{
-    // Constructor
-    Int_t i;
-    for (i = 0; i < 11; i++) fCutValue[i]    = -1.;
-    for (i = 0; i < 15; i++) fProcessFlag[i] = -1;
-}
-
-void TFlukaConfigOption::SetCut(const char* flagname, Double_t val)
-{
-    // Set a cut value
-    const TString cuts[11] = 
-       {"CUTGAM", "CUTELE", "CUTNEU", "CUTHAD", "CUTMUO", "BCUTE", "BCUTM", "DCUTE", "DCUTM", "PPCUTM", "TOFMAX"};
-    Int_t i;
-    for (i = 0; i < 11; i++) {
-       if (cuts[i].CompareTo(flagname) == 0) {
-           fCutValue[i] = val;
-           if (fMedium == -1) fgDCutValue[i] = val;
-           break;
-       }
-    }
-}
-
-void TFlukaConfigOption::SetModelParameter(const char* flagname, Double_t val)
-{
-    // Set a model parameter value
-    const TString parms[2] = {"PRIMIO_N", "PRIMIO_E"};
-    Int_t i;
-    for (i = 0; i < 2; i++) {
-       if (parms[i].CompareTo(flagname) == 0) {
-           fModelParameter[i] = val;
-           break;
-       }
-    }
-}
-
-
-void TFlukaConfigOption::SetProcess(const char* flagname, Int_t flag)
-{
-    // Set a process flag
-    const TString process[15] = 
-       {"DCAY", "PAIR", "COMP", "PHOT", "PFIS", "DRAY", "ANNI", "BREM", "MUNU", "CKOV",
-        "HADR", "LOSS", "MULS", "RAYL", "STRA"};
-    
-    Int_t i;
-    for (i = 0; i < 15; i++) {
-       if (process[i].CompareTo(flagname) == 0) {
-           fProcessFlag[i] = flag;
-           if (fMedium == -1) fgDProcessFlag[i] = flag;
-           break;
-       }
-    }
-}
-
-void TFlukaConfigOption::WriteFlukaInputCards()
-{
-    // Write the FLUKA input cards for the set of process flags and cuts
-    //
-    //
-    //
-    // Check if global option or medium specific
-
-    Bool_t mediumIsSensitive = kFALSE;
-    TGeoMedium*   med    = 0x0;
-    TGeoMedium*   medium = 0x0;    
-    TGeoMaterial* mat    = 0x0;
-
-    if (fMedium != -1) {
-       TFluka* fluka = (TFluka*) gMC;
-       fMedium = fgGeom->GetFlukaMaterial(fMedium);
-       //
-       // Check if material is actually used
-       Int_t* reglist;
-       Int_t nreg;
-       reglist = fgGeom->GetMaterialList(fMedium, nreg);
-       if (nreg == 0) {
-           // Material not used -- return
-           return;
-       }
-       //
-       // Find material
-       TObjArray *matList = fluka->GetFlukaMaterials();
-       Int_t nmaterial =  matList->GetEntriesFast();
-       fCMaterial = 0;
-       for (Int_t im = 0; im < nmaterial; im++)
-       {
-           fCMaterial = dynamic_cast<TGeoMaterial*> (matList->At(im));
-           Int_t idmat = fCMaterial->GetIndex();
-           if (idmat == fMedium) break;
-       } // materials
-        //
-       // Find medium
-       TList *medlist = gGeoManager->GetListOfMedia();
-       TIter next(medlist);
-       while((med = (TGeoMedium*)next()))
-       {
-           mat = med->GetMaterial();
-           if (mat->GetIndex() == fMedium) {
-              medium = med;
-              break;
-           }
-       } // media
-       //
-       // Check if sensitive
-       if (medium->GetParam(0) != 0.) mediumIsSensitive = kTRUE;
-
-       fprintf(fgFile,"*\n*Material specific process and cut settings for #%8d %s\n", fMedium, fCMaterial->GetName());
-       fCMatMin = fMedium;
-       fCMatMax = fMedium;
-    } else {
-       fprintf(fgFile,"*\n*Global process and cut settings \n");
-       fCMatMin = fgMatMin;
-       fCMatMax = fgMatMax;
-    }