Common blocks to access material properties and
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 23 Oct 2006 10:06:34 +0000 (10:06 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 23 Oct 2006 10:06:34 +0000 (10:06 +0000)
ionisation model parameters added.

TFluka/Fdpdxcm.h [new file with mode: 0644]
TFluka/Fflkmat.h [new file with mode: 0644]

diff --git a/TFluka/Fdpdxcm.h b/TFluka/Fdpdxcm.h
new file mode 100644 (file)
index 0000000..2a3cedb
--- /dev/null
@@ -0,0 +1,161 @@
+#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/Fflkmat.h b/TFluka/Fflkmat.h
new file mode 100644 (file)
index 0000000..33d2141
--- /dev/null
@@ -0,0 +1,113 @@
+#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);
+}