User functions for optical properties.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 23 Jul 2003 11:35:16 +0000 (11:35 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 23 Jul 2003 11:35:16 +0000 (11:35 +0000)
TFluka/Fopphcm.h [new file with mode: 0644]
TFluka/abscff.cxx [new file with mode: 0644]
TFluka/dffcff.cxx [new file with mode: 0644]
TFluka/queffc.cxx [new file with mode: 0644]
TFluka/rflctv.cxx [new file with mode: 0644]
TFluka/rfrndx.cxx [new file with mode: 0644]

diff --git a/TFluka/Fopphcm.h b/TFluka/Fopphcm.h
new file mode 100644 (file)
index 0000000..1cefe37
--- /dev/null
@@ -0,0 +1,205 @@
+#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/abscff.cxx b/TFluka/abscff.cxx
new file mode 100644 (file)
index 0000000..e023c78
--- /dev/null
@@ -0,0 +1,17 @@
+#include "Fdimpar.h"  //(DIMPAR) fluka include
+#include "Ftrackr.h"  //(TRACKR) fluka common
+#include "Fiounit.h"  //(IOUNIT) fluka common
+#ifndef WIN32
+# define abscff abscff_
+#else
+# define abscff ABSCFF
+#endif
+extern "C" {
+Double_t abscff(Double_t& wvlngt, Double_t& omgpho, Int_t& mmat)
+{
+    printf("abscff called  %e %e %d \n", wvlngt, omgpho, mmat);
+    return (0.);
+}
+}
+
+
diff --git a/TFluka/dffcff.cxx b/TFluka/dffcff.cxx
new file mode 100644 (file)
index 0000000..ca9df24
--- /dev/null
@@ -0,0 +1,17 @@
+#include "Fdimpar.h"  //(DIMPAR) fluka include
+#include "Ftrackr.h"  //(TRACKR) fluka common
+#include "Fiounit.h"  //(IOUNIT) fluka common
+#ifndef WIN32
+# define dffcff dffcff_
+#else
+# define dffcff DFFCFF
+#endif
+extern "C" {
+Double_t dffcff(Double_t& wvlngt, Double_t& omgpho, Int_t& mmat)
+{
+    printf("dffcff called  %e %e %d \n", wvlngt, omgpho, mmat);
+    return (0.);
+}
+}
+
+    
diff --git a/TFluka/queffc.cxx b/TFluka/queffc.cxx
new file mode 100644 (file)
index 0000000..d5ec165
--- /dev/null
@@ -0,0 +1,20 @@
+#include "Fdimpar.h"  //(DIMPAR) fluka include
+#include "Ftrackr.h"  //(TRACKR) fluka common
+#include "Fiounit.h"  //(IOUNIT) fluka common
+#include "Fopphcm.h"  //(OPPHCM) fluka common
+#ifndef WIN32
+# define queffc queffc_
+#else
+# define queffc QUEFFC
+#endif
+extern "C" {
+Double_t queffc(Double_t& wvlngt, Double_t& omgpho, Int_t& mmat)
+{
+    printf("queffc called  %e %e %d \n", wvlngt, omgpho, mmat);
+    if (wvlngt  > OPPHCM.wvmxsn || wvlngt < OPPHCM.wvmnsn) {
+       return (0.);
+    } else {
+       return (OPPHCM.opsnmx);
+    }
+}
+}
diff --git a/TFluka/rflctv.cxx b/TFluka/rflctv.cxx
new file mode 100644 (file)
index 0000000..d312b0e
--- /dev/null
@@ -0,0 +1,15 @@
+#include "Fdimpar.h"  //(DIMPAR) fluka include
+#include "Ftrackr.h"  //(TRACKR) fluka common
+#include "Fiounit.h"  //(IOUNIT) fluka common
+#ifndef WIN32
+# define rflctv rflctv_
+#else
+# define rflctv RFLCTV
+#endif
+extern "C" {
+Double_t rflctv(Double_t& wvlngt, Double_t& omgpho, Int_t& mmat)
+{
+    printf("rflctv called  %e %e %d \n", wvlngt, omgpho, mmat);
+    return (0.);
+}
+}
diff --git a/TFluka/rfrndx.cxx b/TFluka/rfrndx.cxx
new file mode 100644 (file)
index 0000000..134c86b
--- /dev/null
@@ -0,0 +1,16 @@
+#include "Fdimpar.h"  //(DIMPAR) fluka include
+#include "Ftrackr.h"  //(TRACKR) fluka common
+#include "Fiounit.h"  //(IOUNIT) fluka common
+#ifndef WIN32
+# define rfrndx rfrndx_
+#else
+# define rfrndx RFRNDX
+#endif
+extern "C" {
+Double_t rfrndx(Double_t& wvlngt, Double_t& omgpho, Int_t& mmat)
+{
+    printf("rfrndx called  %e %e %d \n", wvlngt, omgpho, mmat);
+    return (0.);
+}
+}
+