diff --git a/HEN_HOUSE/doc/src/pirs898-egs++/Doxyfile b/HEN_HOUSE/doc/src/pirs898-egs++/Doxyfile index 0775afb85..362433333 100644 --- a/HEN_HOUSE/doc/src/pirs898-egs++/Doxyfile +++ b/HEN_HOUSE/doc/src/pirs898-egs++/Doxyfile @@ -748,6 +748,7 @@ INPUT = main.doxy \ egs_cbct.doxy \ egs_chamber.doxy \ egs_fac.doxy \ + egs_kerma.doxy \ ../../../egs++ \ ../../../interface/egs_interface2.h diff --git a/HEN_HOUSE/doc/src/pirs898-egs++/egs_kerma.doxy b/HEN_HOUSE/doc/src/pirs898-egs++/egs_kerma.doxy new file mode 100644 index 000000000..9ed239ff3 --- /dev/null +++ b/HEN_HOUSE/doc/src/pirs898-egs++/egs_kerma.doxy @@ -0,0 +1,574 @@ +/* +############################################################################### +# +# EGSnrc egs++ egs_kerma application documentation +# Copyright (C) 2019 National Research Council Canada +# +# This file is part of EGSnrc. +# +# EGSnrc is free software: you can redistribute it and/or modify it under +# the terms of the GNU Affero General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# EGSnrc is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for +# more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with EGSnrc. If not, see . +# +############################################################################### +# +# Author: Ernesto Mainegra-Hing, 2019 +# +# Contributors: +# +############################################################################### +*/ + +/*! \file egs_kerma.doxy + * \brief Documents the egs_kerma application + * \EM + */ + +/*! \page egs_kerma egs_kerma: Kerma calculations in a volume + + + +\section egs_kerma_intro Introduction + +The C++ application \c egs_kerma is an advanced EGSnrc application whose +main goal is the estimation of kerma in a volume defined by one or +more geometrical regions by means of a track-length estimator. +The efficiency of the calculation can be increased by several orders +of magnitude by using the variance reduction technique (VRT) known as +\ref egs_kerma_FD "forced detection" (FD). It can also be used for estimating the total and +differential photon fluence in the scoring volume. + +This code is by no means in its final stage. It is still very experimental +and it has been cleaned up for release in the hope it will be useful +to EGSnrc users. A number of collaborators have been using it for some time and +have helped with their comments and bug reporting. + +\section egs_kerma_geometry Geometries + +Geometries are specified in an input file as explained in +the \ref Geometry "geometry module". Besides the simulation geometry, a geometry +should be defined that encompasses all scoring regions to be able to take advantage +of the \ref egs_kerma_FD "FD" VRT. + +\section egs_kerma_sources Particle source definition + +Any source from the \c egs++ \link Sources particle sources module\endlink can be used. Here is an example for +an isotropic point source of 40 keV photons placed at 100 cm on the negative z-axis: + +\verbatim +:start source: + name = isotropic + library = egs_isotropic_source + charge = 0 + + ### source shape + :start shape: + type = point + position = 0, 0, -100 + :stop shape: + + ### source spectrum + :start spectrum: + type = monoenergetic + energy = 0.04 # MeV + :stop spectrum: + +:stop source: +\endverbatim + +BEWARE: No check is made for the charge of the initial particles. +Although kerma is only defined for neutral particles such as photons and neutrons, +one could potentially want to calculate kerma for secondary neutral particles +generated by charged particles. + +\section egs_kerma_options Scoring options input block + +Kerma in the scoring volume can be calculated +for several geometries at once. Hence a correlated scoring +of kerma ratios can be requested by linking any combination of +two calculation geometries. In cases of small differences between +these geometries, the kerma ratios will be strongly correlated, +resulting in a significant reduction of the variance. +Correlated scoring is requested by assigning two geometry names to +the correlated geometries key. +A pseudo input block of such an input is shown below: + +\verbatim +:start scoring options: + + :start calculation geometry: + geometry name = name_1 + cavity regions = list_of_cavity_region_indices + cavity mass = total cavity mass in grams + excluded regions = list_of_regions # exclude particles touching these regions + :stop calculation geometry: + :start calculation geometry: + geometry name = name_1 + cavity regions = list_of_cavity_region_indices + cavity mass = total cavity mass in grams + excluded regions = list_of_regions + :stop calculation geometry: + :start calculation geometry: + geometry name = name_2 + ... + :stop calculation geometry: + ... + :start calculation geometry: + geometry name = name_n + ... + :stop calculation geometry: + + correlated geometries = name_i name_j + ... + correlated geometries = name_k name_l + + ### fluence scoring requested (common to all calculation geometries) + :start fluence scoring: + minimum energy = Emin + maximum energy = Emax + number of bins = N + scale = linear # linear or logarithmic + :stop fluence scoring: + + ### E*muen file (could also be E*mutr): absolute or relative file path + emuen file = absolute_file_name + + ### geometry for forced-detection (if omitted, an analog scoring is used) + cavity geometry = cavity # For forced detection + +:stop scoring options: +\endverbatim + +The meaning of the various keys defining a calculation geometry should +be self explanatory. The reason one must specify the cavity mass is that +due to the generality of the geometry package it is not possible to +automatically compute the cavity volume and therefore the user must supply +this information for proper normalization. Geometrical regions spanning the +scoring volume (cavity) are provided via the +cavity regions key. If no valid region is entered or +this input is ignored, no kerma to the cavity of the calculation geometry +is calculated. + +\section egs_kerma_calculation Kerma scoring + +Kerma calculations require a file containing pairs of energy \f$ E \f$ and +\f$ E \times \frac{\mu_{en}}{\rho} \f$ values for the medium of interest. +This allows a faster evaluation of the +summation over all contributing particles by saving the multiplication operation. +The full name (absolute path) of this file must be provided using the +emuen file key as shown in the above example. + +Kerma for medium \f$m\f$, \f$K_m\f$ is computed by summing up the individual contributions +of N photons crossing the scoring volume \f$V\f$ using the expression + +\f[ +K_m=\sum_{i=1}^{N} w_i \cdot \frac{l_i}{V} \cdot E_i \cdot +\left(\frac{\mu_\mathrm{en}}{\rho}\right)_i^m +\f] + +The example file emuen_icru90_1.5MeV.data contains \f$ E \times \frac{\mu_{en}}{\rho} \f$ +values for air on a logarithmic energy scale from 1 keV up to 1.5 MeV. These values +were calculated with the g application using the following (non-default) +transport parameters: + +\verbatim +############################## +:start mc transport parameter: + + Global ECUT = 0.512 + Global PCUT = 0.001 + + Photon cross sections = mcdf-xcom # XCOM with renormalized PE xsections + Pair cross sections = nrc + Triplet production = On + Radiative Compton corrections = On + + Brems cross sections = nrc + Electron Impact Ionization = penelope # Could be also ik + +:stop mc transport parameter: +############################## + \endverbatim + +This file is distributed with egs_kerma in the same folder. + +\section egs_kerma_FD Variance reduction: Forced Detection + +If the user provides the name of a defined geometry encompassing all scoring regions, +then a variance reduction technique known as forced detection can be used +which increases the calculation efficiency by about 3 orders of magnitude compared +to an analog calculation. The name of such a geometry should be provided to the +application via the key cavity geometry in the +scoring options input block. +If no such geometry is provided, kerma is calculated in an analog manner, +\em i.e. by scoring every time a photon crosses the scoring volume. + +The usual approach to compute kerma \f$K_m\f$ for medium \f$m\f$ is to score the individual +contributions from photons crossing the scoring region. This approach is already several +times more efficient than using the kerma approximation where a full simulation of +all photon interactions is performed assuming electrons deposit their energy on the spot. +One can go one step further and estimate the contribution to kerma from any photon +that could potentially cross the scoring region due to its direction. An algorithm +to determine whether the direction of the photon intercepts with the scoring region + needs to be implemented, as well as a ray-tracing algorithm to account for the attenuation +through the geometry. This way, one does not have to wait until the photon reaches +the scoring region to estimate its contribution to the kerma and a more efficient +sampling of all possible contributions is achieved. This approach is equivalent to +running N separate MC simulations where in the \f$ k^{th} \f$ simulation, only the contribution +to the kerma from particles interacting \f$k-1\f$ times is scored. After running all these +simulations, they can be added together to obtain the total kerma. + +Kerma to medium \f$m\f$ is computed by adding up the contribution +from all photons aimed at the cavity geometry using the expression + +\f[ +K_m=\sum_{i=1}^{N} w_i \cdot \frac{l_i}{V} \cdot E_i \cdot +\left(\frac{\mu_\mathrm{en}}{\rho}\right)_i^m \cdot +e^{- \sum_{j=1}^{N_j} \mu_{ij} \cdot l_{ij}} +\f] + +with \f$N_j\f$ the number of regions crossed by the \f$ i^\mathrm{th}\f$ photon, +\f$\mu_{ij}\f$ the attenuation coefficient in region \f$j\f$ and \f$l_{ij}\f$ +the path across region \f$j\f$. + +\section egs_kerma_fluence Fluence scoring + +A photon fluence calculation can be requested using the following input block: + +\verbatim +:start scoring options: + ... + :start fluence scoring: + minimum energy = Emin + maximum energy = Emax + number of bins = N + scale = linear, logarithmic + :stop fluence scoring: +:stop scoring options: +\endverbatim + +Differential fluence \f$ \phi_j \f$ is calculated by scoring the volume-averaged +track length for particles with energies E between \f$E_j\f$ and \f$E_{j+1}\f$ +using Chilton's fluence concept for any sampling volume V: + +\f[ +\phi_j=\frac{\sum_{i=1}^{N_j} w_i \cdot l_i}{V} +\f] + +where \f$\displaystyle l_i\f$ is the length of the \f$\displaystyle i^{th} \f$ +particle track. The width of the energy bins is defined by \f$ E_{min} \f$, +\f$ E_{max} \f$ and the number of bins N. Total fluence \f$ \Phi \f$ +is calculated as the sum over all contributions to the fluence + +\f[ +\Phi=\sum_{j=0}^{N-1} \phi_j +\f] + +The fluence scoring input block can be used +to request the photon fluence spectrum in a volume \f$V\f$ +defined by the cavity regions. + +\section egs_kerma_output Output + +Kerma to medium in the volume of interest for each geometry as well as kerma +ratios requested by the user are output +to an *.egslog file (batch execution) or to the screen (interactive execution). +If a fluence calculation is requested, total and differential photon fluences +are also output for each calculation geometry. Additionally, +a Grace plot of +the differential fluence for all geometries is generated in a file (*.agr). + +\section egs_kerma_usage Usage + +As any other EGSnrc application, \c egs_kerma can be started from the command line +using +\verbatim +egs_kerma -i input_file [-p pegs_file] [-o output_file] [-b] [-s] [-P N -j i] +\endverbatim +where the arguments in square brackets are optional. With the \c -o option +one can change the name of the output files (by default \c input_file.xxx +is used, where \c xxx is \c .egslog for the log file, \c .egsdat for the +data file, etc.). With \c -b one specifies a "batch" run, \em i.e. the +output is redirected to \c output_file.egslog. With \c -s one can force +\c egs_kerma to use a simple RCO instead of a JCF-RCO in parallel runs +specified with -P N -j i, where \c N is the number of parallel +jobs and \c i the job index. Note that one Unix-type systems it is easier +to use the \c exb command to submit parallel jobs +\verbatim +exb egs_kerma input_file pegs_file [p=N] [batch=pbs] +\endverbatim +where the \c batch option specifies the queuing system to be used. +If using a \em pegsless input file, then pegs_file must be substituted with +the keyword pegsless. +The EGSnrc GUI can be also used, see +see PIRS-877 for more details on running EGSnrc applications. + + +\section egs_kerma_example An input example: Kerma in 5 cm air sphere for 40 keV +photons + +\verbatim +############################################################################### +# +# EGSnrc egs++ egs_kerma application sample input file +# Copyright (C) 2016 National Research Council Canada +# +# This file is part of EGSnrc. +# +# EGSnrc is free software: you can redistribute it and/or modify it under +# the terms of the GNU Affero General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# EGSnrc is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for +# more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with EGSnrc. If not, see . +# +############################################################################### +# +# Author: Ernesto Mainegra-Hing, 2016 +# +# Contributors: +# +############################################################################### +# +# A simple example input file for the egs_kerma C++ application. +# +# Simulates a 40 keV isotropic photon source in a room with concrete walls. +# Kerma and fluence inside a 5 cm radius air sphere are calculated using a +# forced-detection (FD) technique and a track-length estimator. The air sphere +# is in the centre of the room and the source is 1 m from the sphere. +# +# NOTE 1: Material data is generated in pegsless mode. If source energy +# changed, make sure to adjust energy cut-offs (ae, ue, ap, up) below. +# +# NOTE 2: Two geometries are used here for illustration purposes. Most likely +# only one geometry is needed for kerma and fluence calculations. +# +############################################################################### + + +############################################################################### +### Geometry +############################################################################### +:start geometry definition: + + ### air cavity, spherical, 5 cm radius + :start geometry: + name = cavity + library = egs_spheres + midpoint = 0 0 0 + radii = 5.0 + :start media input: + media = air + :stop media input: + :stop geometry: + + ### air box (8 m x 8 m x 8 m) + :start geometry: + name = air + library = egs_box + box size = 800 + :start media input: + media = air + :stop media input: + :stop geometry: + + ### room with 1 m thick concrete walls + :start geometry: + name = walls + library = egs_box + box size = 900 + :start media input: + media = concrete + :stop media input: + :stop geometry: + + ### room with concrete walls + :start geometry: + name = room + library = egs_genvelope + base geometry = walls + inscribed geometries = air + :stop geometry: + + ########################################################################### + # + # The two geometries below are identical + # + # The purpose is to account for wall contributions to the air sphere. The + # first geometry does NOT include contributions from the wall during the + # calculation, while the second one does. See the 'scoring options' block + # for more detail. + # + # There are several ways of accomplishing this. One could just have used + # the same geometry for both calculations, with and without the sensitive + # regions, or have one geometry with and another without the walls. + # + ########################################################################### + + ### air sphere in room with concrete walls (wall contribution NOT included) + :start geometry: + name = cavity_in_room_no_wall + library = egs_genvelope + base geometry = room + inscribed geometries = cavity + :stop geometry: + + ### air sphere in room with concrete walls (wall contribution included) + :start geometry: + name = cavity_in_room_all + library = egs_genvelope + base geometry = room + inscribed geometries = cavity + :stop geometry: + + ### simulation geometry + simulation geometry = cavity_in_room_no_wall + +:stop geometry definition: + + +############################################################################### +### Media +############################################################################### +:start media definition: + + ### energy cutoffs + ae = 0.512 + ue = 0.555 + ap = 0.001 + up = 0.045 + + ### air + :start air: + density correction file = air_dry_nearsealevel + :stop air: + + ### concrete + :start concrete: + density correction file = concrete_ordinary + :stop concrete: + +:stop media definition: + + +############################################################################### +### Source +############################################################################### +:start source definition: + + ### isotropic + :start source: + name = isotropic + library = egs_isotropic_source + charge = 0 + + ### source shape + :start shape: + type = point + position = 0, 0, -100 + :stop shape: + + ### source spectrum + :start spectrum: + type = monoenergetic + energy = 0.04 # MeV + :stop spectrum: + + :stop source: + + ### simulation source + simulation source = isotropic + +:stop source definition: + + +############################################################################### +### Scoring options +############################################################################### +:start scoring options: + + ### use the same geometry under two different names, for easier bookeeping + :start calculation geometry: + geometry name = cavity_in_room_no_wall + cavity regions = 2 + excluded regions = 0 # exclude particles passing through these regions + cavity mass = 0.630831804841 # 5 cm radius air sphere + :stop calculation geometry: + + :start calculation geometry: + geometry name = cavity_in_room_all + cavity regions = 2 + #excluded regions = 0 # exclude particles passing through these regions + cavity mass = 0.630831804841 # 5 cm radius air sphere + :stop calculation geometry: + + ### ratio estimates wall contribution to air sphere + correlated geometries = cavity_in_room_all cavity_in_room_no_wall + + ### fluence scoring requested (common to all calculation geometries) + :start fluence scoring: + minimum energy = 0.0 + maximum energy = 0.040 + number of bins = 400 + scale = linear + :stop fluence scoring: + + ### E*muen file (could also be E*mutr): absolute or relative file path + emuen file = emuen_icru90_1.5MeV.data + + ### geometry for forced-detection (if omitted, an analog scoring is used) + cavity geometry = cavity + +:stop scoring options: + + +############################################################################### +### Transport parameters +############################################################################### +:start MC transport parameter: + + ### you can include here any of the EGSnrc transport parameters + + Global ECUT = 2000. # Turn-off electron transport + Photon cross sections = mcdf-xcom # XCOM with renormalized PE xsections + +:stop MC transport parameter: + + +############################################################################### +### Run control +############################################################################### +:start run control: + ncase = 1000000 +:stop run control: +\endverbatim +*/ diff --git a/HEN_HOUSE/doc/src/pirs898-egs++/main.doxy b/HEN_HOUSE/doc/src/pirs898-egs++/main.doxy index 1301f70db..8a13adb1b 100644 --- a/HEN_HOUSE/doc/src/pirs898-egs++/main.doxy +++ b/HEN_HOUSE/doc/src/pirs898-egs++/main.doxy @@ -104,6 +104,9 @@ \ref egs_cbct "egs_cbct" An application for CBCT/CT scanner simulations + + \ref egs_kerma "egs_kerma" An application for volumetric kerma calculations +

How to write an egs++ application

diff --git a/HEN_HOUSE/scripts/finalize_egs_foruser b/HEN_HOUSE/scripts/finalize_egs_foruser index 7035ac37f..6f00c3e82 100755 --- a/HEN_HOUSE/scripts/finalize_egs_foruser +++ b/HEN_HOUSE/scripts/finalize_egs_foruser @@ -75,7 +75,7 @@ else test_egs_home=$(cd $my_dir/../..; pwd)/egs_home fi -cpp_user_codes="egs_app cavity egs_cbct egs_chamber egs_fac tutor2pp tutor7pp" +cpp_user_codes="cavity egs_app egs_cbct egs_chamber egs_fac egs_kerma tutor2pp tutor7pp" # Now explain to the user what this script is going to do. # cat >&2 <<_ACEOF diff --git a/HEN_HOUSE/user_codes/egs_kerma/Makefile b/HEN_HOUSE/user_codes/egs_kerma/Makefile new file mode 100644 index 000000000..c984500cb --- /dev/null +++ b/HEN_HOUSE/user_codes/egs_kerma/Makefile @@ -0,0 +1,78 @@ + +############################################################################### +# +# EGSnrc makefile to build egs++ egs_kerma application +# Copyright (C) 2016 National Research Council Canada +# +# This file is part of EGSnrc. +# +# EGSnrc is free software: you can redistribute it and/or modify it under +# the terms of the GNU Affero General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# EGSnrc is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for +# more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with EGSnrc. If not, see . +# +############################################################################### +# +# Author: Ernesto Mainegra-Hing, 2016 +# +# Contributors: +# +############################################################################### + + +include $(EGS_CONFIG) +include $(SPEC_DIR)egspp1.spec +include $(SPEC_DIR)egspp_$(my_machine).conf + +# Specify the name of the user code. +# The name of the executable is determined from this variable. +# +USER_CODE = egs_kerma + +# The following can be used to add user macros and mortran subroutines. +# The file(s) specified here are added after egsnrc.macros, machine.macros +# and egs_c_interface2.macros but before any files that have +# executable code. +# +EGSPP_USER_MACROS = egs_kerma.macros +#EGSPP_USER_MACROS = egs_kerma.macros \ +# $(EGS_SOURCEDIR)emf_macros.mortran + +# Specify from which base class this application is being derived. +# This has the effect of automatically compiling the base application +# class and including it into the list of object files. +# +EGS_BASE_APPLICATION = egs_advanced_application + +# Specify the set of mortran sources used. +# Here we simply use the standard set defined in $HEN_HOUSE/specs/egspp1.spec +# +CPP_SOURCES = $(C_ADVANCED_SOURCES) + +# Specify here other header files that your user code depends upon. +# +other_dep_user_code = $(ABS_EGSPP)egs_scoring.h + +# User code defines +# +#DEF_USER = -DCAVITY_DEBUG + +include $(HEN_HOUSE)makefiles$(DSEP)cpp_makefile + +test_sources: + @echo $(C_SOURCES) +# +#test_objects: +# @echo "egs_objects: $(egs_objects)" +# @echo "user_objects: $(user_objects)" +# +c_sources: + @echo "C_SOURCES: $(CPP_SOURCES)" diff --git a/HEN_HOUSE/user_codes/egs_kerma/array_sizes.h b/HEN_HOUSE/user_codes/egs_kerma/array_sizes.h new file mode 100644 index 000000000..6579eef1d --- /dev/null +++ b/HEN_HOUSE/user_codes/egs_kerma/array_sizes.h @@ -0,0 +1,47 @@ +/* +############################################################################### +# +# EGSnrc egs++ egs_kerma application array sizes headers +# Copyright (C) 2016 National Research Council Canada +# +# This file is part of EGSnrc. +# +# EGSnrc is free software: you can redistribute it and/or modify it under +# the terms of the GNU Affero General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# EGSnrc is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for +# more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with EGSnrc. If not, see . +# +############################################################################### +# +# Author: Ernesto Mainegra-Hing, 2016 +# +# Contributors: +# +############################################################################### +# +# Defines he maximum number of media (MXMED) and the maximum number of +# particles on the stack (MXSTACK). This file gets included by the egsnrc +# fortran subroutines (egsnrc_$my_machine.F), the base application +# (egs_simple_application.cpp or egs_advanced_application.cpp in +# $HEN_HOUSE/egs++), and possibly the user code, if it uses the particle +# stack or one of the structures that depends on the maximum number of media. +# +############################################################################### +*/ + + +#ifndef ARRAY_SIZES_ +#define ARRAY_SIZES_ + +#define MXMED 20 +#define MXSTACK 2000000 + +#endif diff --git a/HEN_HOUSE/user_codes/egs_kerma/egs_kerma.cpp b/HEN_HOUSE/user_codes/egs_kerma/egs_kerma.cpp new file mode 100644 index 000000000..e0f293e97 --- /dev/null +++ b/HEN_HOUSE/user_codes/egs_kerma/egs_kerma.cpp @@ -0,0 +1,1131 @@ +/* +############################################################################### +# +# EGSnrc egs++ egs_kerma application +# Copyright (C) 2016 National Research Council Canada +# +# This file is part of EGSnrc. +# +# EGSnrc is free software: you can redistribute it and/or modify it under +# the terms of the GNU Affero General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# EGSnrc is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for +# more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with EGSnrc. If not, see . +# +############################################################################### +# +# Author: Ernesto Mainegra-Hing, 2016 +# +# Contributors: +# +############################################################################### +# +# C++ user code for estimating the quantity kerma in a volume. +# +# Additionally, the fluence in the volume can be also calculated if +# requested in the scoring options input block. Two calculation options +# are available: +# +# - If a cavity geometry provided, a forced detection scoring technique +# can be used to score kerma and fluence for photons reaching the geometry +# that haven't been in any of the exclusion regions. Photons interacting +# inside the cavity are NOT included. +# +# - If no geometry provided, an analog TL scoring 'a la FLURZnrc' is used +# for kerma and fluence. +# +# Required: E*muen or E*mutr file for scoring either collision or total kerma +# -------- for the cavity medium +# +# Calculations for multiple geometries. +# +# Kerma ratios can be calculated using a correlated scoring technique. +# +# Exclusion of user specified regions. +# +# Scoring volume regions must be provided (consider using labels). +# +# Fluence scoring must be specifically requested. +# +# Dose calculation in the cavity can be done using a dose scoring ausgab +# object.This is useful to check the validity of the kerma-approximation. +# +# NOTE 1 : Dose calculation with very high ECUT produces an estimate of +# total kerma, not collision kerma. +# +# NOTE 2 : dose scoring ONLY makes sense for ONE calculation geometry. +# If more than one geometry defined, dose scoring should NOT +# be used as it would score dose for all geometries in one +# scoring array. +# +############################################################################### +*/ + + +#include +// We derive from EGS_AdvancedApplication => need the header file. +#include "egs_advanced_application.h" +// We use scoring objects provided by egspp => need the header file. +#include "egs_scoring.h" +// Every C++ EGSnrc application needs this header file +#include "egs_interface2.h" +// We use egsInformation() => need the egs_functions.h header file. +#include "egs_functions.h" +// We use the EGS_Input class +#include "egs_input.h" +// To get the maximum source energy +#include "egs_base_source.h" +// The random number generator +#include "egs_rndm.h" +// Transformations +#include "egs_transformations.h" +// Interpolators +#include "egs_interpolator.h" + +#include +#include + +#define calculatePhotonMFP F77_OBJ_(calculate_photon_mfp,CALCULATE_PHOTON_MFP) +extern __extc__ void calculatePhotonMFP(EGS_Float *,EGS_Float *); +#define doRayleigh F77_OBJ_(do_rayleigh,DO_RAYLEIGH) +extern __extc__ void doRayleigh(); +#define calculatePhotonBranching F77_OBJ_(calculate_photon_branching,CALCULATE_PHOTON_BRANCHING) +extern __extc__ void calculatePhotonBranching(EGS_Float *gbr1,EGS_Float *gbr2); +extern __extc__ void F77_OBJ(pair,PAIR)(); +extern __extc__ void F77_OBJ(compt,COMPT)(); +extern __extc__ void F77_OBJ(photo,PHOTO)(); + +EGS_Float Eave; + +class APP_EXPORT EGS_KermaApplication : public EGS_AdvancedApplication { + +public: + + /*! Constructor */ + EGS_KermaApplication(int argc, char **argv) : + EGS_AdvancedApplication(argc,argv), ngeom(0), + kerma(0), scg(0), cgeom(0), + ncg(0), flug(0),flugT(0) { + Eave=0.0; + }; + + /*! Destructor. */ + ~EGS_KermaApplication() { + if (kerma) { + delete kerma; + } + if (ngeom > 0) { + if (flug) { + for (int j=0; j 0) { + delete [] gind1; + delete [] gind2; + delete [] scg; + } + }; + + /*! Describe the application. */ + void describeUserCode() const { + egsInformation( + "\n *************************************************" + "\n * *" + "\n * egs_kerma *" + "\n * *" + "\n *************************************************" + "\n\n"); + egsInformation("This is EGS_KermaApplication %s based on\n" + " EGS_AdvancedApplication %s\n\n", + egsSimplifyCVSKey(revision).c_str(), + egsSimplifyCVSKey(base_revision).c_str()); + + }; + + /*! Describe the simulation */ + void describeSimulation(); + + /*! Initialize scoring. */ + int initScoring(); + + /*! Accumulate quantities of interest at run time */ + int ausgab(int iarg) { + int np = the_stack->np-1, ir = the_stack->ir[np]-2, iq = the_stack->iq[np]; + /* Photon about to be transported in geometry */ + if (iarg == BeforeTransport && !iq && ir >= 0) { + int latch = the_stack->latch[np]; + /* Analog Kerma scoring */ + if (is_cavity[ig][ir]) { + if (!cgeom && latch >= 0) { + EGS_Float E = the_stack->E[np], gle = log(E), + emuen_rho = E_Muen_Rho->interpolateFast(gle), + wtstep = the_stack->wt[np]*the_epcont->tvstep; + + kerma->score(ig,wtstep*emuen_rho*rho_cav); + //-------------------------------------------- + // score photon fluence + //-------------------------------------------- + if (flug) { + EGS_Float e = E; + if (flu_s) { + e = log(e); + } + EGS_Float ae; + int je; + if (e > flu_xmin && e <= flu_xmax) { + ae = flu_a*e + flu_b; + je = min((int)ae,flu_nbin-1);//je = (int) ae; + EGS_ScoringArray *aux = flug[ig]; + aux->score(je,wtstep); + flugT->score(ig,wtstep); + } + } + } + /* Mark photon inside cavity */ + latch = 1; + } + /* Mark photons in exclusion regions */ + else if (is_excluded[ig][ir]) { + latch = -1; + } + /* photon outside cavity and has not been in any exclusion zone */ + else if (latch >= 0) { + latch = 0; + } + + the_stack->latch[np] = latch; + + } + return 0; + } + + /*! Simulate a single shower. + We need to do special things and therefore reimplement this method. + */ + int simulateSingleShower() { + last_case = current_case; + EGS_Vector x,u; + current_case = source->getNextParticle(rndm,p.q,p.latch,p.E,p.wt,x,u); + Eave += p.q ? p.E - the_useful->rm: p.E; + + int err = startNewShower(); + if (err) { + return err; + } + EGS_BaseGeometry *save_geometry = geometry; + for (ig=0; igtransform(p.x); + transforms[ig]->rotate(p.u); + } + int ireg = geometry->isWhere(p.x); + if (ireg < 0) { + EGS_Float t = 1e30; + ireg = geometry->howfar(ireg,p.x,p.u,t); + if (ireg >= 0) { + p.x += p.u*t; + } + } + if (ireg >= 0) { + p.ir = ireg; + err = shower(); + if (err) { + return err; + } + } + } + err = finishShower(); + geometry = save_geometry; + return err; + }; + + /*! Score Air-Kerma in Collecting Volume (CV) + + Photons touching excludedd region are immediately discarded. + + TODO: Use region labels to define cavity regions + + */ + int scoreInCavity() { + + int np = the_stack->np-1; + EGS_Float E = the_stack->E[np]; + + if (E < the_bounds->pcut) { + return 0; + } + + EGS_Vector x(the_stack->x[np],the_stack->y[np],the_stack->z[np]); + EGS_Vector u(the_stack->u[np],the_stack->v[np],the_stack->w[np]); + + int ireg = the_stack->ir[np]-2, newmed = geometry->medium(ireg); + + EGS_Float tstep; + int inew; + int imed = -1; + EGS_Float gmfp, sigma = 0, cohfac = 1; + EGS_Float cohfac_int, gle = log(E), //rho_cav, -> global var now + exp_Lambda = 0, Lambda_to_CV = 0; + double Lambda = 0, ttot = 0, t_cav = 0; + bool enters_cavity = false; + /* Ray-trace from current position to CV and keep track of path to + * CV and path in the CV + */ + while (1) { + if (is_excluded[ig][ireg]) { + break; + } + if (imed != newmed) { + imed = newmed; + if (imed >= 0) { + gmfp = i_gmfp[imed].interpolateFast(gle); + if (the_xoptions->iraylr) { + cohfac = i_cohe[imed].interpolateFast(gle); + gmfp *= cohfac; + } + sigma = 1/gmfp; + } + else { + sigma = 0; + cohfac = 1; + } + } + tstep = 1e35; + inew = geometry->howfar(ireg,x,u,tstep,&newmed); + + Lambda += tstep*sigma;// keep track of path + + if (is_cavity[ig][ireg]) { //in cavity, get path through it + t_cav += tstep; + //rho_cav = the_media->rho[imed]; + if (!enters_cavity) { + Lambda_to_CV = Lambda - tstep*sigma; + enters_cavity = true; + } + } + + if (inew < 0) { + break; // outside geometry, stop and score + } + // track-length estimation of kerma + + if (enters_cavity && !is_cavity[ig][inew]) { + break; // leaves cavity + } + + ireg = inew; + x += u*tstep; + ttot += tstep; + } + if (enters_cavity) { + EGS_Float wt = the_stack->wt[np]; + exp_Lambda = exp(-Lambda_to_CV); + //exp_Lambda = exp(-Lambda); + //-------------------------------------------- + // score Kerma + //-------------------------------------------- + EGS_Float emuen_rho = E_Muen_Rho->interpolateFast(gle); + kerma->score(ig,wt*exp_Lambda*emuen_rho*rho_cav*t_cav); + //-------------------------------------------- + // score photon fluence + //-------------------------------------------- + if (flug) { + EGS_Float e = the_stack->E[np]; + if (flu_s) { + e = log(e); + } + EGS_Float ae; + int je; + if (e > flu_xmin && e <= flu_xmax) { + ae = flu_a*e + flu_b; + je = min((int)ae,flu_nbin-1); + EGS_ScoringArray *aux = flug[ig]; + aux->score(je,wt*exp_Lambda*t_cav); + flugT->score(ig,wt*exp_Lambda*t_cav); + } + } + } + //============================================================== + return 0; + } + + /*! Output intermediate results to the .egsdat file. */ + int outputData() { + int err = EGS_AdvancedApplication::outputData(); + if (err) { + return err; + } + if (!kerma->storeState(*data_out)) { + return 101; + } + if (ncg > 0) { + for (int j=0; jthisHistoryScore(gind1[j])* + kerma->thisHistoryScore(gind2[j]); + (*data_out) << scg[j]+aux << " "; + } + (*data_out) << endl; + if (!data_out->good()) { + return 104; + } + } + if (flug) { + for (int j=0; jstoreState(*data_out)) { + return 108+2*j; + } + } + if (!flugT->storeState(*data_out)) { + return 109+2*ngeom; + } + } + + (*data_out) << Eave << endl; + if (!data_out->good()) { + return 1031; + } + + data_out->flush(); + delete data_out; + data_out = 0; + return 0; + }; + + /*! Read results from a .egsdat file. */ + int readData() { + int err = EGS_AdvancedApplication::readData(); + if (err) { + return err; + } + if (!kerma->setState(*data_in)) { + return 101; + } + if (ncg > 0) { + for (int j=0; j> scg[j]; + } + if (!data_in->good()) { + return 104; + } + } + if (flug) { + for (int j=0; jsetState(*data_in)) { + return 108+2*j; + } + } + if (!flugT->setState(*data_in)) { + return 109+2*ngeom; + } + } + + (*data_in) >> Eave; + if (!data_in->good()) { + return 1031; + } + + return 0; + }; + + /*! Reset the variables used for accumulating results */ + void resetCounter() { + EGS_AdvancedApplication::resetCounter(); + kerma->reset(); + if (ncg > 0) { + for (int j=0; jreset(); + } + flugT->reset(); + } + Eave = 0; + }; + + /*! Add simulation results */ + int addState(istream &data) { + int err = EGS_AdvancedApplication::addState(data); + if (err) { + return err; + } + EGS_ScoringArray tmp(ngeom); + if (!tmp.setState(data)) { + return 101; + } + (*kerma) += tmp; + if (ncg > 0) { + for (int j=0; j> tmp; + if (!data.good()) { + return 104; + } + scg[j] += tmp; + } + } + if (flug) { + EGS_ScoringArray tg(flu_nbin); + for (int j=0; j> aux_Eave; + if (!data.good()) { + return 1036; + } + Eave += aux_Eave; + + return 0; + }; + + /*! Output the results of a simulation. */ + void outputResults() { + egsInformation("\n\n last case = %lld fluence = %g\n\n", + current_case,source->getFluence()); + egsInformation(" Average sampled energy Eave = %g \n\n",Eave/EGS_Float(current_case)); + + egsInformation("%-25s Cavity kerma[Gy] ","Geometry"); + egsInformation("\n-----------------------------------------------\n"); + char c = '%'; + for (int j=0; jcurrentResult(j,r,dr); + if (r > 0) { + dr = 100*dr/r; + } + else { + dr = 100; + } + EGS_Float norm = 1.602e-10*current_case/source->getFluence(); + norm /= mass[j]; + egsInformation("%-25s %14.8le +/- %-10.6lf%c \n", + geoms[j]->getName().c_str(), + r*norm,dr,c); + } + egsInformation("\n\n"); + if (ncg > 0) { + egsInformation("%-20s %-20s KERMA ratio\n","Geometry 1", "Geometry 2"); + + vector ratio, dratio; + + for (int j=0; jcurrentResult(gind1[j],r1,dr1); + kerma->currentResult(gind2[j],r2,dr2); + if (r1 > 0 && r2 > 0) { + double rc=(scg[j]/(r1*r2*current_case)-1)/(current_case-1); + dr1 /= r1; + dr2 /= r2; + double dr = dr1*dr1 + dr2*dr2 - 2*rc; + if (dr > 0) { + dr = sqrt(dr); + } + double r = r1*mass[gind2[j]]/(r2*mass[gind1[j]]); + egsInformation("%-20s %-20s %-11.8lg +/- %-10.8lg [%-10.6lf%c]\n", + geoms[gind1[j]]->getName().c_str(), + geoms[gind2[j]]->getName().c_str(),r,r*dr,100.*dr,c); + ratio.push_back(r); + dratio.push_back(r*dr); + } + else { + egsInformation("zero dose\n"); + } + } + + } + if (flug) { + string spe_name = constructIOFileName(".agr",true); + //string spe_name = output_file + ".agr"; + ofstream spe_output(spe_name.c_str()); + spe_output << "# Photon fluence \n"; + spe_output << "# \n"; + spe_output << "@ legend 0.2, 0.8\n"; + spe_output << "@ legend box linestyle 0\n"; + spe_output << "@ legend font 4\n"; + spe_output << "@ xaxis label \"energy / MeV\"\n"; + spe_output << "@ xaxis label char size 1.560000\n"; + spe_output << "@ xaxis label font 4\n"; + spe_output << "@ xaxis ticklabel font 4\n"; + spe_output << "@ yaxis label \"fluence / MeV\\S-1\\Ncm\\S-2\"\n"; + spe_output << "@ yaxis label char size 1.560000\n"; + spe_output << "@ yaxis label font 4\n"; + spe_output << "@ yaxis ticklabel font 4\n"; + spe_output << "@ title \""<< output_file <<"\"\n"; + spe_output << "@ title font 4\n"; + spe_output << "@ title size 1.500000\n"; + spe_output << "@ subtitle \"pegs4 data: "<< pegs_file <<"\"\n"; + spe_output << "@ subtitle font 4\n"; + spe_output << "@ subtitle size 1.000000\n"; + + egsInformation("\n\nPhoton fluence\n" + "=============================\n"); + for (int j=0; jgetFluence();//per particle + norm /= (mass[j]/rho_cav); //per unit volume + norm *= flu_a; //per unit bin width + + egsInformation("\nGeometry %s :",geoms[j]->getName().c_str()); + spe_output<<"@ s"<getName().c_str()<<"\"\n"; + spe_output<<"@target G0.S"<currentResult(j,fe,dfe); + if (fe > 0) { + dfe = 100*dfe/fe; + } + else { + dfe = 100; + } + egsInformation(" total fluence [cm-2] = %10.4le +/- %-7.3lf\%\n\n", + fe*norm/flu_a,dfe); + egsInformation(" Emid/MeV Flu/(MeV*cm2) DFlu/(MeV*cm2)\n" + "---------------------------------------------\n"); + for (int i=0; icurrentResult(i,fe,dfe); + EGS_Float e = (i+0.5-flu_b)/flu_a; + if (flu_s) { + e = exp(e); + } + spe_output<getFluence(); + norm = flu > 0 ? 1.602e-10*count/(flu*mass[0]) : 0; + kerma->currentScore(0,sum,sum2); + }; + + /* Select photon mean-free-path */ + void selectPhotonMFP(EGS_Float &dpmfp) { + int np = the_stack->np-1; + EGS_Vector x(the_stack->x[np],the_stack->y[np],the_stack->z[np]); + EGS_Vector u(the_stack->u[np],the_stack->v[np],the_stack->w[np]); + int ireg = the_stack->ir[np]-2, newmed = geometry->medium(ireg); + EGS_Float tstep = 1e35; + //****************************************************************** + // FD Track-length kerma estimation for photons entering or aimed + // at the cavity. It requires a cavity geometry and that the photon + // has not touched an exclusion region and is not inside the geometry + // (latch = 0) + //****************************************************************** + if (cgeom && !the_stack->latch[np] && + (is_cavity[ig][ireg] || cgeom->howfar(-1,x,u,tstep,&newmed)>= 0)) { + /* Photon at or aimed at cavity */ + int errK = scoreInCavity(); + } + dpmfp = -log(1 - rndm->getUniform()); + return; + + }; + +protected: + + /*! Start a new shower. */ + int startNewShower() { + int res = EGS_Application::startNewShower(); + if (res) { + return res; + } + if (current_case != last_case) { + if (ncg > 0) { + for (int j=0; jthisHistoryScore(gind1[j])* + kerma->thisHistoryScore(gind2[j]); + } + kerma->setHistory(current_case); + if (flug) { + for (int j=0; jsetHistory(current_case); + } + flugT->setHistory(current_case); + } + last_case = current_case; + } + return 0; + }; + +private: + + int ngeom; // number of geometries to calculate quantities of interest + int ig; // current geometry index + + int ncg; // number of correlated geometry pairs. + int *gind1, + *gind2; // indices of correlated geometries + + double *scg; // sum(kerma(gind1[j])*kerma(gind2[j]); + + EGS_BaseGeometry **geoms; // geometries for which to calculate the quantites of interest. + EGS_AffineTransform **transforms; // transformations to apply before transporting for each geometry + bool **is_cavity; // array of flags for each region in each geometry, which is true if the region belongs to the cavity and false otherwise + + bool **is_excluded; // array of flags for each region in each geometry, which is true if the region is excludedd, false otherwise + + EGS_ScoringArray *kerma; // kerma scoring array + + EGS_Interpolator *E_Muen_Rho; + + + /****************************************************************/ + + EGS_ScoringArray **flug; // photon fluence + EGS_ScoringArray *flugT; // total photon fluence + EGS_Float flu_a, + flu_b, + flu_xmin, + flu_xmax, + rho_cav; // cavity mass density + int flu_s, + flu_nbin; + EGS_Float *mass; // mass of the material in the cavity. + + /*! Cavity bounding geometry. + If no cavity bounding geometry is defined, range-rejection of RR + is used only on a region-by-region basis. If a cavity bounding geometry + is defined, then tperp to that geometry is also checked and if greater + than the electron range, range-rejection or RR is done. + */ + EGS_BaseGeometry *cgeom; + + static string revision; +}; + +string EGS_KermaApplication::revision = "$Revision: 1.0 $"; + +extern __extc__ void +F77_OBJ_(select_photon_mfp,SELECT_PHOTON_MFP)(EGS_Float *dpmfp) { + EGS_Application *a = EGS_Application::activeApplication(); + EGS_KermaApplication *app = dynamic_cast(a); + if (!app) egsFatal("select_photon_mfp called with active application " + " not being of type EGS_KermaApplication!\n"); + app->selectPhotonMFP(*dpmfp); +} + +int EGS_KermaApplication::initScoring() { + + EGS_Input *options = input->takeInputItem("scoring options"); + if (options) { + + // + // *********** calculation geometries + // + vector geometries; + vector cavity_regions; + vector n_cavity_regions; + vector excluded_regions; + vector n_excluded_regions; + vector cavity_masses; + vector transformations; + EGS_Input *aux; + EGS_BaseGeometry::setActiveGeometryList(app_index); + while ((aux = options->takeInputItem("calculation geometry"))) { + string gname; + int err = aux->getInput("geometry name",gname); + vector cav; + int err1 = aux->getInput("cavity regions",cav); + vector apert; + int err4 = aux->getInput("excluded regions",apert); + EGS_Float cmass; + int err2 = aux->getInput("cavity mass",cmass); + if (err) egsWarning("initScoring: missing/wrong 'geometry name' " + "input\n"); + if (err1) egsWarning("initScoring: missing/wrong 'cavity regions' " + "input\n"); + if (err2) { + egsWarning("initScoring: missing/wrong 'cavity mass' " + "input\n"); + cmass = -1; + } + + if (err4) { + egsWarning("\n\n*** Geometry %s : Error reading excluded regions or not found.\n" + " No region excluded from scoring\n\n",gname.c_str()); + } + if (err || err1) { + egsWarning(" --> input ignored\n"); + } + else { + EGS_BaseGeometry::setActiveGeometryList(app_index); + EGS_BaseGeometry *g = EGS_BaseGeometry::getGeometry(gname); + if (!g) egsWarning("initScoring: no geometry named %s -->" + " input ignored\n",gname.c_str()); + else { + int nreg = g->regions(); + int *regs = new int [cav.size()]; + int ncav = 0; + for (int j=0; j= nreg) + egsWarning("initScoring: region %d is not within" + " the allowed range of 0...%d -> input" + " ignored\n",cav[j],nreg-1); + else { + regs[ncav++] = cav[j]; + } + } + if (!ncav) { + egsWarning("initScoring: no cavity regions " + "specified for geometry %s --> input ignored\n", + gname.c_str()); + delete [] regs; + } + else { + geometries.push_back(g); + n_cavity_regions.push_back(ncav); + cavity_regions.push_back(regs); + cavity_masses.push_back(cmass); + transformations.push_back( + EGS_AffineTransform::getTransformation(aux)); + /* excluded regions */ + if (!err4 && apert.size() > 0) { + int *ap = new int [apert.size()]; + int nap=0; + for (int j=0; j= 0 && apert[j] < nreg) { + ap[nap++] = apert[j]; + } + else { + egsFatal("\n\n*** Excluded region %d is\n" + " outside the allowed range of \n" + " 0...%d \n" + " This is a fatal error\n\n", + apert[j],nreg-1); + } + } + n_excluded_regions.push_back(nap); + excluded_regions.push_back(ap); + } + else { + excluded_regions.push_back(0); + n_excluded_regions.push_back(0); + } + } + } + } + delete aux; + } + ngeom = geometries.size(); + if (!ngeom) { + egsWarning("initScoring: no calculation geometries defined\n"); + return 1; + } + geoms = new EGS_BaseGeometry* [ngeom]; + is_cavity = new bool* [ngeom]; + is_excluded = new bool* [ngeom]; + mass = new EGS_Float [ngeom]; + kerma = new EGS_ScoringArray(ngeom); + transforms = new EGS_AffineTransform* [ngeom]; + + rho_cav = -1; + for (int j=0; jref(); + mass[j] = cavity_masses[j]; + transforms[j] = transformations[j]; + int nreg = geoms[j]->regions(); + is_cavity[j] = new bool [nreg]; + is_excluded[j] = new bool [nreg]; + int i; + for (i=0; imedium(ireg); + } + else { + int imed1 = geoms[j]->medium(ireg); + if (imed1 != imed) egsWarning("initScoring: different " + "medium %d in region %d compared to medium %d in " + "region %d. Hope you know what you are doing\n", + imed1,ireg,imed,cavity_regions[j][0]); + } + } + delete [] cavity_regions[j]; + + /* Get cavity mass density */ + if (rho_cav < 0) { + rho_cav = the_media->rho[imed]; + } + else { + EGS_Float rho_cav_new = the_media->rho[imed]; + if (rho_cav != rho_cav_new) egsWarning("initScoring:\n" + "density of cavity medium in geometry %s is %g g/cm3\n" + "which differs from initial cavity medium density %g g/cm3", + geoms[j]->getName().c_str(), rho_cav_new, rho_cav); + + } + + //if (n_excluded_regions.size()>0){ + if (!n_excluded_regions.empty()) { + for (i=0; i cor1, cor2; + while ((aux = options->takeInputItem("correlated geometries"))) { + vector gnames; + int err = aux->getInput("correlated geometries",gnames); + if (!err && gnames.size() == 2) { + int j1, j2; + for (j1=0; j1getName()) { + break; + } + for (j2=0; j2getName()) { + break; + } + if (j1 < ngeom && j2 < ngeom) { + cor1.push_back(j1); + cor2.push_back(j2); + } + } + } + if (cor1.size() > 0) { + ncg = cor1.size(); + gind1 = new int [ncg]; + gind2 = new int [ncg]; + scg = new double [ncg]; + for (int j=0; jtakeInputItem("fluence scoring"); + if (aux) { + EGS_Float flu_Emin, flu_Emax; + int er1 = aux->getInput("minimum energy",flu_Emin); + int er2 = aux->getInput("maximum energy",flu_Emax); + int er3 = aux->getInput("number of bins",flu_nbin); + vector scale; + scale.push_back("linear"); + scale.push_back("logarithmic"); + flu_s = aux->getInput("scale",scale,0); + /* Checks to ensure no scoring outside array bounds */ + /* EGS_Float Emax = source ? source->getEmax() : 0; + //egsInformation("\n=> Emax = %g MeV\n\n",Emax); + if ( flu_Emax <= Emax ) { + flu_Emax = Emax + 2*(flu_Emax - flu_Emin)/flu_nbin; + flu_nbin += 2; + }*/ + if (!er1 && !er2 && !er3) { + flug = new EGS_ScoringArray * [ngeom]; + flugT = new EGS_ScoringArray(ngeom); + for (int j=0; j no fluence scoring\n\n"); + } + delete aux; + } + + string muen_file; + int errKmuen = options->getInput("emuen file",muen_file); + if (errKmuen) { + errKmuen = options->getInput("muen file",muen_file); + if (errKmuen) + egsFatal( + "\n\n*** Wrong/missing 'emuen file' input for a " + "Kerma calculation\n This is a fatal error\n\n"); + } + ifstream muen_data(muen_file.c_str()); + if (!muen_data) { + egsFatal( + "\n\n*** Failed to open emuen file %s\n" + " This is a fatal error\n",muen_file.c_str()); + } + int ndat; + muen_data >> ndat; + if (ndat < 2 || muen_data.fail()) egsFatal( + "\n\n*** Failed to read emuen data file\n"); + EGS_Float *xmuen = new EGS_Float [ndat]; + EGS_Float *fmuen = new EGS_Float [ndat]; + for (int j=0; j> xmuen[j] >> fmuen[j]; + } + if (muen_data.fail()) egsFatal( + "\n\n*** Failed to read emuen data file\n"); + E_Muen_Rho = new EGS_Interpolator(ndat,log(xmuen[0]), + log(xmuen[ndat-1]),fmuen); + delete [] xmuen; + delete [] fmuen; + string cavity_geometry; + int errCavGeom = options->getInput("cavity geometry",cavity_geometry); + if (!errCavGeom) { + EGS_BaseGeometry::setActiveGeometryList(app_index); + cgeom = EGS_BaseGeometry::getGeometry(cavity_geometry); + if (!cgeom) { + egsWarning("\n\n********** No geometry named" + " %s exists! \nThis is required for forced detection track-length Kerma estimation!\n", + cavity_geometry.c_str()); + } + } + else { + egsWarning("\n\n********** No cavity geometry entry found!\n" + " This is required for track-length Kerma estimation using forced detection!\n"); + } + /* No ausgab call if using forced detection */ +// for(int call=BeforeTransport; call<=UnknownCall; ++call) +// setAusgabCall((AusgabCall)call,false); +// if (!cgeom) + /* Ausgab call before trasnporting particle for analog kerma scoring */ +// setAusgabCall(BeforeTransport,true); + /* ****************************************************** + * Enable all ausgab calls for energy deposition scoring + * + * Only possible for one calculation geometry. Implement + * dose scoring in the ausgab routine if needed for all + * geometries. + * + *********************************************************/ +// if (ngeom == 1){ +// vector allow_dose; +// allow_dose.push_back("no"); allow_dose.push_back("yes"); +// int score_dose = options->getInput("allow dose scoring",allow_dose,0); +// if( score_dose ) +// for(int call=BeforeTransport; call<=ExtraEnergy; ++call) +// setAusgabCall((AusgabCall)call,true); +// } + + delete options; + } + else { + egsWarning("\n\n*********** no 'scoring options' input *********\n\n"); + return 2; + } + + return 0; +} + +void EGS_KermaApplication::describeSimulation() { + EGS_AdvancedApplication::describeSimulation(); + egsInformation("**********************************************\n" + " Volumetric Track-length Kerma estimation \n" + "**********************************************\n\n"); + if (cgeom) + egsInformation("---> Scoring using forced detection (FD)\n" + " for photons aimed at geometry %s\n\n", + cgeom->getName().c_str()); + else + egsInformation("---> Scoring only when photon enters volume\n" + " including those scattered inside the geometry.\n" + " Fluence is equivalent to FLURZ total fluence!\n\n"); + egsInformation("\n\n"); + for (int j=0; jgetName().c_str()); + geoms[j]->printInfo(); + for (int i=0; iregions(); i++) { + if (is_cavity[j][i]) { + egsInformation(" cavity region %d, medium = %d\n\n", + i,geoms[j]->medium(i)); + } + } + } + for (int i=0; igetName().c_str()); + int nexcl = 0; + for (int j=0; jregions(); j++) { + if (is_excluded[i][j]) { + egsInformation(" %d",j); + nexcl++; + } + } + if (!nexcl) { + egsInformation(" NONE"); + } + egsInformation("\n"); + } +} + +#ifdef BUILD_APP_LIB +APP_LIB(EGS_KermaApplication); +#else +APP_MAIN(EGS_KermaApplication); +#endif + diff --git a/HEN_HOUSE/user_codes/egs_kerma/egs_kerma.macros b/HEN_HOUSE/user_codes/egs_kerma/egs_kerma.macros new file mode 100644 index 000000000..53fa099ad --- /dev/null +++ b/HEN_HOUSE/user_codes/egs_kerma/egs_kerma.macros @@ -0,0 +1,86 @@ +%C80 +"#############################################################################" +" " +" EGSnrc egs++ egs_kerma application mortran macros " +" Copyright (C) 2016 National Research Council Canada " +" " +" This file is part of EGSnrc. " +" " +" EGSnrc is free software: you can redistribute it and/or modify it under " +" the terms of the GNU Affero General Public License as published by the " +" Free Software Foundation, either version 3 of the License, or (at your " +" option) any later version. " +" " +" EGSnrc is distributed in the hope that it will be useful, but WITHOUT ANY " +" WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS " +" FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for " +" more details. " +" " +" You should have received a copy of the GNU Affero General Public License " +" along with EGSnrc. If not, see . " +" " +"#############################################################################" +" " +" Author: Ernesto Mainegra-Hing, 2016 " +" " +" Contributors: " +" " +"#############################################################################" + + +REPLACE {$MXGE} WITH {2000}; +REPLACE {$MXEKE} WITH {500}; + +/* + We want to use the photon forced detection technique + introduced by Mainegra-Hing & Kawrakow [Ref needed] + implemented via the $SELECT-PHOTON-MFP macro. + */ +REPLACE {$SELECT-PHOTON-MFP;} WITH {; + call select_photon_mfp(dpmfp); + IF( dpmfp < 0 ) return; +}; + +subroutine calculate_photon_mfp(gmfp,cohfac); +implicit none; +$REAL gmfp,cohfac; +$declare_max_medium; +; +COMIN/PHOTIN,USEFUL,EPCONT,X-OPTIONS/; +$INTEGER lgle; +$REAL GMFPR0; + +$SET INTERVAL GLE,GE; +$EVALUATE GMFPR0 USING GMFP(GLE); +$SET-RHOF; +GMFP=GMFPR0/RHOF; +$RAYLEIGH-CORRECTION; +return; end; +; + +subroutine calculate_photon_branching(gbr1,gbr2); +implicit none; +$REAL gbr1,gbr2; +$declare_max_medium; +;COMIN/PHOTIN,USEFUL,EPCONT/; +$INTEGER lgle; + +$SET INTERVAL GLE,GE; +$EVALUATE GBR1 USING GBR1(GLE); +$EVALUATE GBR2 USING GBR2(GLE); +return; end; +; + +subroutine do_rayleigh; +"subroutine do_new_rayleigh;" +implicit none; +$declare_max_medium; +; +;COMIN/PHOTIN,USEFUL,EPCONT,STACK,RANDOM,UPHIOT,THRESH/; +$INTEGER lgle; +$REAL log_e; +LGLE=GE1(MEDIUM)*GLE+GE0(MEDIUM); +call egs_rayleigh_sampling(medium,e(np),gle,lgle,costhe,sinthe); +CALL UPHI(2,1); +return; end; +; diff --git a/HEN_HOUSE/user_codes/egs_kerma/emuen_icru90_1.5MeV.data b/HEN_HOUSE/user_codes/egs_kerma/emuen_icru90_1.5MeV.data new file mode 100644 index 000000000..756e43657 --- /dev/null +++ b/HEN_HOUSE/user_codes/egs_kerma/emuen_icru90_1.5MeV.data @@ -0,0 +1,2001 @@ +2000 +0.00100001 3.4877754595352117 +0.00100367 3.4665273232204363 +0.00100735 3.4453747056004884 +0.00101104 3.4243696230289187 +0.00101474 3.4035147003587718 +0.00101846 3.3827462027397526 +0.00102220 3.3620730696118319 +0.00102594 3.3416001937730586 +0.00102970 3.3212198473001822 +0.00103348 3.3009274990775346 +0.00103727 3.2807526872651587 +0.00104107 3.2607508705227275 +0.00104488 3.2409173140581529 +0.00104871 3.2211460370887837 +0.00105256 3.2013392478876188 +0.00105642 3.1816953920808797 +0.00106029 3.1622195591966857 +0.00106418 3.1428067830112969 +0.00106808 3.1234836797303740 +0.00107199 3.1043798705297037 +0.00107592 3.0853607446187281 +0.00107986 3.0664598444865638 +0.00108382 3.0476440799381721 +0.00108780 3.0289182728104129 +0.00109178 3.0103515454594296 +0.00109578 2.9918474988167807 +0.00109980 2.9735101709652030 +0.00110383 2.9549124234911344 +0.00110788 2.9363868690684702 +0.00111194 2.9179569516017390 +0.00111601 2.8997056397432925 +0.00112011 2.8815751913453225 +0.00112421 2.8635789574877433 +0.00112833 2.8456284658294995 +0.00113247 2.8277407990308290 +0.00113662 2.8100352741699339 +0.00114079 2.7924464950777494 +0.00114497 2.7749641496176700 +0.00114916 2.7576603932482016 +0.00115338 2.7403354475927113 +0.00115760 2.7232060622029080 +0.00116185 2.7061466668976295 +0.00116611 2.6891938224615823 +0.00117038 2.6723708394912551 +0.00117467 2.6555518866377144 +0.00117898 2.6387530233024283 +0.00118330 2.6221075971109409 +0.00118763 2.6055899075611104 +0.00119199 2.5891214559375348 +0.00119636 2.5727782638923427 +0.00120074 2.5565605987433808 +0.00120514 2.5404544515240519 +0.00120956 2.5244128157816852 +0.00121399 2.5084940435492467 +0.00121844 2.4926660195617383 +0.00122291 2.4769234738346815 +0.00122739 2.4613000736553561 +0.00123189 2.4457648671802272 +0.00123641 2.4303169720411191 +0.00124094 2.4149854802969810 +0.00124549 2.3997620428360427 +0.00125005 2.3846342483353538 +0.00125464 2.3693287490391883 +0.00125923 2.3541948594401760 +0.00126385 2.3391168959648203 +0.00126848 2.3241396965074972 +0.00127313 2.3093037457809706 +0.00127780 2.2945150552761437 +0.00128248 2.2798259151909464 +0.00128718 2.2652413640328195 +0.00129190 2.2507395823859526 +0.00129664 2.2363406102887722 +0.00130139 2.2220219738572893 +0.00130616 2.2078055056255885 +0.00131095 2.1936871490325696 +0.00131575 2.1796653767813976 +0.00132058 2.1656803199256611 +0.00132542 2.1518255962997825 +0.00133027 2.1380973040654538 +0.00133515 2.1243701642808701 +0.00134004 2.1108049993246731 +0.00134496 2.0972922858486389 +0.00134989 2.0838557117867964 +0.00135483 2.0705099690090543 +0.00135980 2.0572683980855935 +0.00136478 2.0441313802823151 +0.00136979 2.0310507584436639 +0.00137481 2.0180410844395511 +0.00137985 2.0050963089552369 +0.00138491 1.9922899407630212 +0.00138998 1.9795428264331729 +0.00139508 1.9668318605018604 +0.00140019 1.9542806537637694 +0.00140532 1.9415711344015665 +0.00141047 1.9288606329106435 +0.00141564 1.9164014583596922 +0.00142083 1.9039421906230758 +0.00142604 1.8915965284501559 +0.00143127 1.8792653838769329 +0.00143651 1.8670951591648357 +0.00144178 1.8549367098340943 +0.00144706 1.8429083627195737 +0.00145237 1.8308718462500444 +0.00145769 1.8190257870477964 +0.00146304 1.8071880300329091 +0.00146840 1.7954501140521706 +0.00147378 1.7838170171806371 +0.00147918 1.7722129647669238 +0.00148460 1.7606859936546462 +0.00149005 1.7492409347016424 +0.00149551 1.7378740670372721 +0.00150099 1.7265482032472887 +0.00150649 1.7151094682570318 +0.00151201 1.7037782371238019 +0.00151756 1.6924935605786235 +0.00152312 1.6812774339054890 +0.00152870 1.6701684027680306 +0.00153430 1.6591524658397010 +0.00153993 1.6481429790711462 +0.00154557 1.6372507661680011 +0.00155124 1.6264137770469806 +0.00155692 1.6156674472260260 +0.00156263 1.6050128067003879 +0.00156836 1.5943925853731677 +0.00157411 1.5838457409865929 +0.00157988 1.5733569287654932 +0.00158567 1.5629134541907876 +0.00159148 1.5525823660403888 +0.00159731 1.5423454725460541 +0.00160317 1.5321422536436049 +0.00160905 1.5220339499859115 +0.00161494 1.5119681273240861 +0.00162086 1.5019310392836351 +0.00162680 1.4920485092146110 +0.00163277 1.4821576201478952 +0.00163875 1.4723504853188245 +0.00164476 1.4625960059696985 +0.00165079 1.4529210429725172 +0.00165684 1.4432783015508175 +0.00166291 1.4337848669004354 +0.00166901 1.4242956804039433 +0.00167513 1.4148501350261502 +0.00168127 1.4055043553140234 +0.00168743 1.3962008883803156 +0.00169361 1.3869759828123551 +0.00169982 1.3777821217236066 +0.00170605 1.3686261166258555 +0.00171231 1.3596282280420251 +0.00171858 1.3506471386614560 +0.00172488 1.3416892792169532 +0.00173120 1.3328655287734965 +0.00173755 1.3240322098487012 +0.00174392 1.3152995848291238 +0.00175031 1.3065894816810804 +0.00175673 1.2977861913810733 +0.00176317 1.2890322388770181 +0.00176963 1.2803783728007361 +0.00177611 1.2717436669132565 +0.00178263 1.2631091712579232 +0.00178916 1.2546386968430496 +0.00179572 1.2461290715629592 +0.00180230 1.2378207797088367 +0.00180891 1.2294704396015401 +0.00181554 1.2211701895711484 +0.00182219 1.2129474006546901 +0.00182887 1.2047799957705931 +0.00183557 1.1966475488995683 +0.00184230 1.1886439618821227 +0.00184906 1.1806000028998338 +0.00185583 1.1726979641497230 +0.00186264 1.1647946179911657 +0.00186946 1.1569602287657641 +0.00187632 1.1490671103205137 +0.00188319 1.1413145739660642 +0.00189010 1.1335852746263315 +0.00189702 1.1259921336275063 +0.00190398 1.1183805204921622 +0.00191096 1.1108611491137170 +0.00191796 1.1033296020450574 +0.00192499 1.0959125800078218 +0.00193205 1.0884643202742019 +0.00193913 1.0810722704789755 +0.00194624 1.0737259093675262 +0.00195337 1.0665037693452586 +0.00196053 1.0592658128940056 +0.00196772 1.0521087612479390 +0.00197493 1.0450403219829316 +0.00198217 1.0380164894462054 +0.00198943 1.0309441451820349 +0.00199673 1.0239747197558851 +0.00200405 1.0169703609057328 +0.00201139 1.0100787792083030 +0.00201876 1.0031370933558281 +0.00202616 0.99628392589861414 +0.00203359 0.98943133194658794 +0.00204104 0.98269553407349808 +0.00204853 0.97601718426956807 +0.00205603 0.96936869178811857 +0.00206357 0.96270895141291934 +0.00207113 0.95611947944478326 +0.00207873 0.94953621105633523 +0.00208635 0.94306318700209135 +0.00209399 0.93657108420679935 +0.00210167 0.93023912867056902 +0.00210937 0.92383153631432602 +0.00211710 0.91747825799584903 +0.00212486 0.91120732834109086 +0.00213265 0.90498969243885063 +0.00214047 0.89878319510922811 +0.00214832 0.89260161306037655 +0.00215619 0.88639628493340072 +0.00216409 0.88039797005144260 +0.00217203 0.87440707667520190 +0.00217999 0.86839287313124902 +0.00218798 0.86249237717761074 +0.00219600 0.85658663362828791 +0.00220405 0.85071444542576813 +0.00221213 0.84478077292665754 +0.00222024 0.83892418632982013 +0.00222837 0.83310483353129228 +0.00223654 0.82727179520754768 +0.00224474 0.82154460213060121 +0.00225297 0.81582457061705782 +0.00226123 0.81018761157021646 +0.00226951 0.80458637626520724 +0.00227783 0.79897115969599719 +0.00228618 0.79344040489306633 +0.00229456 0.78798048591690806 +0.00230297 0.78250448646638116 +0.00231141 0.77700760481888775 +0.00231989 0.77166993249930060 +0.00232839 0.76631647747571097 +0.00233693 0.76099979694295328 +0.00234549 0.75567541370802938 +0.00235409 0.75043957643817716 +0.00236272 0.74527505106022340 +0.00237138 0.74009144686516981 +0.00238007 0.73491938482174568 +0.00238879 0.72982233484555514 +0.00239755 0.72474627486291610 +0.00240634 0.71979868106502909 +0.00241516 0.71479468744783259 +0.00242401 0.70981503766424958 +0.00243290 0.70484296446495653 +0.00244181 0.69997536504362290 +0.00245076 0.69512965319409914 +0.00245975 0.69028987862253832 +0.00246876 0.68553816695801473 +0.00247781 0.68075588601383263 +0.00248690 0.67603972233388165 +0.00249601 0.67143247900584357 +0.00250516 0.66663002114709424 +0.00251434 0.66197990167058507 +0.00252356 0.65723747510543973 +0.00253281 0.65259987189743662 +0.00254209 0.64799972391699068 +0.00255141 0.64339230440264361 +0.00256076 0.63879197994760217 +0.00257015 0.63440055804788720 +0.00257957 0.62985855540026048 +0.00258903 0.62539142670418635 +0.00259852 0.62103111855608983 +0.00260804 0.61661466405506926 +0.00261760 0.61226797823247625 +0.00262720 0.60795719892185129 +0.00263683 0.60366991267135606 +0.00264649 0.59938924666361248 +0.00265619 0.59513956872177165 +0.00266593 0.59092986897961830 +0.00267570 0.58677679954269746 +0.00268551 0.58261348876565588 +0.00269535 0.57850396649109370 +0.00270523 0.57435638684398738 +0.00271515 0.57035033744972807 +0.00272510 0.56629790164457250 +0.00273509 0.56231671939093708 +0.00274511 0.55837773687540326 +0.00275517 0.55440943280874344 +0.00276527 0.55045410364683711 +0.00277541 0.54655930845375378 +0.00278558 0.54269612392232036 +0.00279579 0.53888283951287719 +0.00280604 0.53501806257381745 +0.00281633 0.53125600298297204 +0.00282665 0.52755076177871041 +0.00283701 0.52381119275268584 +0.00284741 0.52010787063285524 +0.00285785 0.51639003988209364 +0.00286832 0.51280712569746456 +0.00287884 0.50921250494519088 +0.00288939 0.50558142071969570 +0.00289998 0.50204113869443090 +0.00291061 0.49852545519441599 +0.00292128 0.49499416017659509 +0.00293199 0.49147129285698504 +0.00294273 0.48798571824431347 +0.00295352 0.48447427265767029 +0.00296435 0.48103774670227861 +0.00297521 0.47766013757554460 +0.00298612 0.47423790973438285 +0.00299706 0.47091376570091070 +0.00300805 0.46750040497007095 +0.00301907 0.46420590689908570 +0.00303014 0.46088460410419918 +0.00304125 0.45755339291242619 +0.00305240 0.45425981740009619 +0.00306358 0.45102287746005593 +0.00307481 0.44775163170202442 +0.00308608 0.44453492719435000 +0.00309740 0.44131071635862296 +0.00310875 0.43813626083454543 +0.00312014 0.43500560255415294 +0.00313158 0.43191705050808177 +0.00314306 0.42883995426429850 +0.00315458 0.42573312288537185 +0.00316614 0.42266680583834931 +0.00317775 0.41963432071057738 +0.00318940 0.41661889030829707 +0.00320109 0.41362998694152497 +0.00321282 0.44971812583032084 +0.00322460 0.44927724573368083 +0.00323642 0.44758400916051999 +0.00324828 0.44500956536789360 +0.00326019 0.44190090702104479 +0.00327214 0.43863133358269613 +0.00328413 0.43537836561892496 +0.00329617 0.43228353647419465 +0.00330825 0.42925512655269976 +0.00332038 0.42637723591385135 +0.00333255 0.42347663139033270 +0.00334476 0.42064251940594383 +0.00335702 0.41779506819608525 +0.00336933 0.41493949628760463 +0.00338168 0.41206652172702085 +0.00339407 0.40918042562950346 +0.00340651 0.40631765900495159 +0.00341900 0.40344648312115888 +0.00343153 0.40062535408166217 +0.00344411 0.39781074495845337 +0.00345674 0.39502570625916067 +0.00346941 0.39227597220783533 +0.00348212 0.38954611900651825 +0.00349489 0.38683775914573393 +0.00350770 0.38413939445544892 +0.00352056 0.38141920172303223 +0.00353346 0.37874987159244089 +0.00354641 0.37608111411932760 +0.00355941 0.37342465769120436 +0.00357246 0.37079191895943381 +0.00358555 0.36816798621496227 +0.00359870 0.36553867022326103 +0.00361189 0.36294794738529967 +0.00362513 0.36038172537631041 +0.00363841 0.35781043784130201 +0.00365175 0.35528883502371156 +0.00366513 0.35274501478569942 +0.00367857 0.35024470472161018 +0.00369205 0.34775367099959065 +0.00370559 0.34529184932812740 +0.00371917 0.34284105257686442 +0.00373280 0.34038841204965781 +0.00374648 0.33795860396786237 +0.00376022 0.33557746529829197 +0.00377400 0.33318237899775821 +0.00378783 0.33082112436070910 +0.00380172 0.32846664882736293 +0.00381565 0.32612420863339059 +0.00382964 0.32379075029632687 +0.00384368 0.32147069048763804 +0.00385776 0.31919977309508146 +0.00387191 0.31692080585877286 +0.00388610 0.31469186622964285 +0.00390034 0.31246058093868168 +0.00391464 0.31024130182154552 +0.00392899 0.30805359180859393 +0.00394339 0.30586492256194658 +0.00395784 0.30369784353983836 +0.00397235 0.30155381807768139 +0.00398691 0.29942940025952469 +0.00400153 0.29727571559794475 +0.00401619 0.29515535516605645 +0.00403091 0.29304688651261124 +0.00404569 0.29094249398516875 +0.00406052 0.28886202325660298 +0.00407540 0.28681598889939475 +0.00409034 0.28475307899141422 +0.00410533 0.28272302738849836 +0.00412038 0.28068967271515083 +0.00413549 0.27867991277623344 +0.00415064 0.27667317955351833 +0.00416586 0.27468350920130874 +0.00418113 0.27272220280810772 +0.00419645 0.27078448149542478 +0.00421184 0.26882279447181356 +0.00422727 0.26690249469308247 +0.00424277 0.26498566256970724 +0.00425832 0.26308406912556132 +0.00427393 0.26119911464379580 +0.00428960 0.25932630992935912 +0.00430532 0.25748211695105416 +0.00432110 0.25563486895429249 +0.00433694 0.25379868063269340 +0.00435284 0.25197420470631543 +0.00436879 0.25016221058460814 +0.00438480 0.24837140736125229 +0.00440088 0.24660689191482038 +0.00441701 0.24482884713099629 +0.00443320 0.24308784165844222 +0.00444945 0.24132803264271860 +0.00446576 0.23961429453403033 +0.00448213 0.23788781999626490 +0.00449856 0.23618362899218601 +0.00451505 0.23446995104314450 +0.00453159 0.23277167122116427 +0.00454821 0.23106561611355980 +0.00456488 0.22940957938123940 +0.00458161 0.22775851014792042 +0.00459840 0.22611781641791237 +0.00461526 0.22447040442679822 +0.00463218 0.22285518454416689 +0.00464915 0.22125342477041202 +0.00466620 0.21964927387649322 +0.00468330 0.21807321242181044 +0.00470047 0.21650073624786753 +0.00471770 0.21493444095578251 +0.00473499 0.21338766392432779 +0.00475234 0.21184796738262943 +0.00476976 0.21031720503530302 +0.00478725 0.20879150949485442 +0.00480479 0.20728913430531240 +0.00482241 0.20578616767392804 +0.00484008 0.20430144910173725 +0.00485782 0.20282387047088671 +0.00487563 0.20135842817110453 +0.00489350 0.19988334034956248 +0.00491144 0.19845076578785908 +0.00492944 0.19702023152715120 +0.00494751 0.19558754049067673 +0.00496565 0.19418451540013273 +0.00498385 0.19277694558180369 +0.00500211 0.19136988508146610 +0.00502045 0.18999120474802791 +0.00503885 0.18860113440089207 +0.00505732 0.18722258888201546 +0.00507586 0.18585582833280823 +0.00509447 0.18449900072437544 +0.00511314 0.18314779158879024 +0.00513188 0.18180930419173461 +0.00515069 0.18047281250561231 +0.00516957 0.17915987553320720 +0.00518852 0.17785813600320535 +0.00520754 0.17656441079296242 +0.00522663 0.17527361584993911 +0.00524578 0.17399509396610841 +0.00526501 0.17272744219776742 +0.00528431 0.17147268048800451 +0.00530368 0.17021277246301569 +0.00532312 0.16897323178735993 +0.00534263 0.16774359692899102 +0.00536222 0.16651012193339884 +0.00538187 0.16529806523550875 +0.00540160 0.16409549828683848 +0.00542140 0.16289691100603526 +0.00544127 0.16170505453590675 +0.00546122 0.16053177197697047 +0.00548123 0.15935044178592009 +0.00550132 0.15818968755010521 +0.00552149 0.15702865572228458 +0.00554173 0.15588078954769544 +0.00556204 0.15473024418655970 +0.00558243 0.15358983448439792 +0.00560289 0.15245241852519603 +0.00562343 0.15134160675016373 +0.00564404 0.15022427052431023 +0.00566473 0.14912732620632721 +0.00568549 0.14801877406818695 +0.00570633 0.14694143506131019 +0.00572725 0.14586614928467967 +0.00574824 0.14478571726197678 +0.00576931 0.14372917105774990 +0.00579046 0.14266460710529758 +0.00581168 0.14161208465230232 +0.00583299 0.14056829894171277 +0.00585437 0.13954020010665094 +0.00587583 0.13851877809881030 +0.00589736 0.13749504645515109 +0.00591898 0.13648313675576149 +0.00594068 0.13547090765998460 +0.00596245 0.13447781356142477 +0.00598431 0.13349497346857664 +0.00600624 0.13250270741228173 +0.00602826 0.13151988671129877 +0.00605036 0.13054807692905823 +0.00607253 0.12957073178530254 +0.00609479 0.12861955324176447 +0.00611713 0.12766209390591368 +0.00613955 0.12670567210945330 +0.00616206 0.12577062465581401 +0.00618464 0.12483850805357879 +0.00620731 0.12391040567569768 +0.00623007 0.12298943695054255 +0.00625290 0.12206824283004430 +0.00627582 0.12116449507357378 +0.00629883 0.12026404538450704 +0.00632192 0.11936402242813045 +0.00634509 0.11848118476608317 +0.00636835 0.11760241811594144 +0.00639169 0.11672854466101434 +0.00641512 0.11586891210412836 +0.00643863 0.11500968467677697 +0.00646223 0.11415698436539856 +0.00648592 0.11331162012205594 +0.00650969 0.11246338250255647 +0.00653355 0.11162763470971557 +0.00655750 0.11080187840229813 +0.00658154 0.10997723609749062 +0.00660566 0.10915858968954645 +0.00662988 0.10835854958332555 +0.00665418 0.10754893503326220 +0.00667857 0.10674520484263798 +0.00670305 0.10595758211145084 +0.00672762 0.10515851743175647 +0.00675228 0.10438365892136520 +0.00677703 0.10361430151480690 +0.00680187 0.10284485279808027 +0.00682680 0.10207742190337447 +0.00685183 0.10132214560255921 +0.00687694 0.10056559248356461 +0.00690215 9.98201955350183079E-002 +0.00692745 9.90780107335829385E-002 +0.00695284 9.83425747490255797E-002 +0.00697833 9.76157500015487622E-002 +0.00700391 9.68902347732716329E-002 +0.00702958 9.61632559163398959E-002 +0.00705534 9.54407895342463258E-002 +0.00708121 9.47192041030182064E-002 +0.00710716 9.40037250596604257E-002 +0.00713321 9.33073675939262021E-002 +0.00715936 9.26058409124611848E-002 +0.00718560 9.19078749842962978E-002 +0.00721194 9.12146905817397546E-002 +0.00723838 9.05361326949870315E-002 +0.00726491 8.98582427445317050E-002 +0.00729154 8.91768831523981481E-002 +0.00731826 8.85163119487959310E-002 +0.00734509 8.78513424401575205E-002 +0.00737201 8.71932631089545607E-002 +0.00739903 8.65372365471554633E-002 +0.00742615 8.58861839373956104E-002 +0.00745338 8.52442668613220267E-002 +0.00748070 8.46048862828092385E-002 +0.00750812 8.39661829758891476E-002 +0.00753564 8.33407190685790944E-002 +0.00756326 8.27148460557747822E-002 +0.00759098 8.20877948695265258E-002 +0.00761881 8.14744721036688435E-002 +0.00764673 8.08646198839025609E-002 +0.00767476 8.02498204230602391E-002 +0.00770289 7.96486081150538788E-002 +0.00773113 7.90526207017089033E-002 +0.00775947 7.84612032539092064E-002 +0.00778791 7.78725398819316156E-002 +0.00781645 7.72880121963385458E-002 +0.00784511 7.67076862656819458E-002 +0.00787386 7.61304449625620633E-002 +0.00790272 7.55591626964114971E-002 +0.00793169 7.49905185080284725E-002 +0.00796076 7.44257876694277704E-002 +0.00798994 7.38687718433487100E-002 +0.00801923 7.33089688550043611E-002 +0.00804862 7.27490652153076622E-002 +0.00807813 7.21965551420314378E-002 +0.00810774 7.16501870904214244E-002 +0.00813746 7.11045096974515234E-002 +0.00816728 7.05654546900747609E-002 +0.00819722 7.00289468845212565E-002 +0.00822727 6.94956238992427422E-002 +0.00825742 6.89727891577427837E-002 +0.00828769 6.84422901139232487E-002 +0.00831807 6.79299838815077967E-002 +0.00834856 6.74118448809300080E-002 +0.00837916 6.69025059089424917E-002 +0.00840987 6.63968892790268300E-002 +0.00844070 6.58934606332890055E-002 +0.00847164 6.53956344405316192E-002 +0.00850269 6.48988554449903832E-002 +0.00853386 6.44014440859311810E-002 +0.00856514 6.39178332732676935E-002 +0.00859653 6.34359516573824445E-002 +0.00862804 6.29547090743019788E-002 +0.00865967 6.24782986617832894E-002 +0.00869141 6.20022211344264523E-002 +0.00872327 6.15354171107356934E-002 +0.00875525 6.10700313713901238E-002 +0.00878734 6.06082776359911993E-002 +0.00881955 6.01526648836495995E-002 +0.00885187 5.96932825060151259E-002 +0.00888432 5.92409999092552986E-002 +0.00891689 5.87991946604228821E-002 +0.00894957 5.83500280224460641E-002 +0.00898238 5.79134202820493771E-002 +0.00901530 5.74699119152149232E-002 +0.00904835 5.70340490968160724E-002 +0.00908151 5.65975926998635651E-002 +0.00911480 5.61599186152336796E-002 +0.00914821 5.57284644582355937E-002 +0.00918174 5.53100466500612564E-002 +0.00921540 5.48854214203091731E-002 +0.00924918 5.44676612436804236E-002 +0.00928308 5.40519795910893927E-002 +0.00931711 5.36421152186369044E-002 +0.00935126 5.32298864723836154E-002 +0.00938553 5.28260300240962627E-002 +0.00941994 5.24218126942264870E-002 +0.00945447 5.20225693875449660E-002 +0.00948912 5.16211620372356225E-002 +0.00952390 5.12322125361394792E-002 +0.00955881 5.08368917596973349E-002 +0.00959385 5.04499566311160316E-002 +0.00962902 5.00642261014550213E-002 +0.00966431 4.96805199764229766E-002 +0.00969974 4.93004225931100923E-002 +0.00973529 4.89263771171788917E-002 +0.00977097 4.85466541718595976E-002 +0.00980679 4.81786330846188035E-002 +0.00984274 4.78087947233585275E-002 +0.00987881 4.74435017320448266E-002 +0.00991502 4.70806828576253444E-002 +0.00995137 4.67203730410006776E-002 +0.00998784 4.63676941410026411E-002 +0.01002445 4.60131406005032800E-002 +0.01006120 4.56541338518291900E-002 +0.01009808 4.53057932718815629E-002 +0.01013509 4.49587239792489796E-002 +0.01017224 4.46119847984663975E-002 +0.01020953 4.42692295943967612E-002 +0.01024695 4.39288469249509567E-002 +0.01028451 4.35878374917161859E-002 +0.01032221 4.32564489809284525E-002 +0.01036004 4.29220359951005895E-002 +0.01039802 4.25946943102513756E-002 +0.01043613 4.22674799337189114E-002 +0.01047439 4.19366850471249095E-002 +0.01051278 4.16185435860969982E-002 +0.01055131 4.12960785809532230E-002 +0.01058999 4.09808941793824641E-002 +0.01062881 4.06628115092740119E-002 +0.01066777 4.03527142183873755E-002 +0.01070687 4.00431806490299594E-002 +0.01074611 3.97332760276904867E-002 +0.01078550 3.94265646940764672E-002 +0.01082504 3.91237774564424101E-002 +0.01086472 3.88219353700294950E-002 +0.01090454 3.85249521690293126E-002 +0.01094451 3.82269019615259428E-002 +0.01098463 3.79374529403994701E-002 +0.01102489 3.76388715462962417E-002 +0.01106530 3.73533820331804281E-002 +0.01110586 3.70627235769778116E-002 +0.01114657 3.67781289981929174E-002 +0.01118743 3.64915626798742940E-002 +0.01122844 3.62112903697666549E-002 +0.01126959 3.59290409837116215E-002 +0.01131090 3.56525817007428483E-002 +0.01135236 3.53757154250838451E-002 +0.01139397 3.51020037710014637E-002 +0.01143574 3.48283950811273529E-002 +0.01147766 3.45579372734643106E-002 +0.01151973 3.42925937948137874E-002 +0.01156195 3.40237937279394623E-002 +0.01160433 3.37639419417321285E-002 +0.01164687 3.35010720269243722E-002 +0.01168956 3.32437069159788115E-002 +0.01173241 3.29865944590384333E-002 +0.01177541 3.27298004668533093E-002 +0.01181857 3.24762200798571835E-002 +0.01186189 3.22260361268580861E-002 +0.01190537 3.19789094073720873E-002 +0.01194901 3.17308324441818446E-002 +0.01199281 3.14852736326810476E-002 +0.01203677 3.12447235000086164E-002 +0.01208089 3.10005138200744358E-002 +0.01212517 3.07612557834545594E-002 +0.01216962 3.05211662696003132E-002 +0.01221422 3.02870608124973899E-002 +0.01225900 3.00521504545616935E-002 +0.01230393 2.98207773526531737E-002 +0.01234903 2.95942338558628261E-002 +0.01239430 2.93611536240402198E-002 +0.01243973 2.91335421958192724E-002 +0.01248532 2.89104999125028989E-002 +0.01253109 2.86888203711480709E-002 +0.01257702 2.84660501787379235E-002 +0.01262312 2.82420688138942666E-002 +0.01266939 2.80240798451629573E-002 +0.01271583 2.78045981280305478E-002 +0.01276244 2.75890154175590652E-002 +0.01280922 2.73695294562387795E-002 +0.01285617 2.71597604908462228E-002 +0.01290330 2.69478422784723351E-002 +0.01295059 2.67363342910372746E-002 +0.01299806 2.65281712349696996E-002 +0.01304571 2.63218463724059354E-002 +0.01309353 2.61149351180846936E-002 +0.01314152 2.59147318367052432E-002 +0.01318969 2.57133083218769286E-002 +0.01323804 2.55124767994223227E-002 +0.01328656 2.53123727212594928E-002 +0.01333526 2.51147783537562092E-002 +0.01338414 2.49195489080430918E-002 +0.01343320 2.47275855545344217E-002 +0.01348244 2.45324893649645250E-002 +0.01353186 2.43417098882957525E-002 +0.01358146 2.41527022238869488E-002 +0.01363124 2.39643365754800726E-002 +0.01368121 2.37792528547313038E-002 +0.01373136 2.35933700289258953E-002 +0.01378169 2.34108737640268474E-002 +0.01383220 2.32286567870555356E-002 +0.01388291 2.30491462652090140E-002 +0.01393379 2.28691990982293758E-002 +0.01398487 2.26927891201899566E-002 +0.01403613 2.25140411888782761E-002 +0.01408758 2.23379752134868527E-002 +0.01413922 2.21645926656537963E-002 +0.01419104 2.19918303127015213E-002 +0.01424306 2.18194987735976266E-002 +0.01429527 2.16504809739959739E-002 +0.01434767 2.14803869503668275E-002 +0.01440026 2.13104725948987245E-002 +0.01445304 2.11446014549300405E-002 +0.01450602 2.09803738402443776E-002 +0.01455919 2.08164794499313723E-002 +0.01461256 2.06538296903104948E-002 +0.01466612 2.04927000861381478E-002 +0.01471988 2.03320878772209092E-002 +0.01477383 2.01729516644684331E-002 +0.01482798 2.00178022742018742E-002 +0.01488234 1.98604628758729390E-002 +0.01493689 1.97043620762037200E-002 +0.01499164 1.95506840315464690E-002 +0.01504659 1.93986897536097130E-002 +0.01510174 1.92454383570898509E-002 +0.01515710 1.90910733275857190E-002 +0.01521265 1.89427701633699819E-002 +0.01526842 1.87928198124444785E-002 +0.01532438 1.86460406335389808E-002 +0.01538055 1.84977461185346533E-002 +0.01543693 1.83518246140004920E-002 +0.01549351 1.82080918902467054E-002 +0.01555030 1.80634212476792760E-002 +0.01560730 1.79228942001055623E-002 +0.01566451 1.77816436562949903E-002 +0.01572193 1.76418514281192866E-002 +0.01577956 1.75035491356287584E-002 +0.01583740 1.73638670450317507E-002 +0.01589545 1.72262847361586598E-002 +0.01595371 1.70933015083067977E-002 +0.01601219 1.69581091608178927E-002 +0.01607088 1.68257806467324890E-002 +0.01612979 1.66923073554649283E-002 +0.01618891 1.65603996421736822E-002 +0.01624825 1.64332204706521129E-002 +0.01630781 1.63034379665294091E-002 +0.01636759 1.61777307399069113E-002 +0.01642758 1.60526562218504497E-002 +0.01648780 1.59271867165577848E-002 +0.01654823 1.58011531981768170E-002 +0.01660889 1.56777180633179587E-002 +0.01666977 1.55556678556359532E-002 +0.01673087 1.54352842948867683E-002 +0.01679220 1.53148377204361582E-002 +0.01685375 1.51971259066960226E-002 +0.01691553 1.50766722130221565E-002 +0.01697753 1.49616524189469507E-002 +0.01703976 1.48445501481300340E-002 +0.01710222 1.47293964324342001E-002 +0.01716491 1.46140266334859360E-002 +0.01722783 1.45005709171281017E-002 +0.01729097 1.43873577440908531E-002 +0.01735435 1.42770910595149906E-002 +0.01741797 1.41658696211012583E-002 +0.01748181 1.40548986256785156E-002 +0.01754589 1.39451197648541702E-002 +0.01761020 1.38343077997810510E-002 +0.01767475 1.37272566580418226E-002 +0.01773954 1.36168638637506074E-002 +0.01780456 1.35101015645829915E-002 +0.01786983 1.34047306658750913E-002 +0.01793533 1.33003089689803268E-002 +0.01800107 1.31966364855662238E-002 +0.01806705 1.30912762595965688E-002 +0.01813328 1.29903257970719593E-002 +0.01819974 1.28880949680808543E-002 +0.01826645 1.27865706219643365E-002 +0.01833341 1.26874121698065338E-002 +0.01840061 1.25871784399110183E-002 +0.01846806 1.24889133898216376E-002 +0.01853575 1.23899992961034201E-002 +0.01860369 1.22941438610191418E-002 +0.01867188 1.21979244738481957E-002 +0.01874032 1.21024123021626212E-002 +0.01880902 1.20065363495032180E-002 +0.01887796 1.19124005678306905E-002 +0.01894716 1.18212954075343282E-002 +0.01901661 1.17286064461046818E-002 +0.01908631 1.16359480449867384E-002 +0.01915627 1.15449000058365451E-002 +0.01922649 1.14537805696605585E-002 +0.01929696 1.13646651706465485E-002 +0.01936770 1.12767326814578270E-002 +0.01943869 1.11888985653575135E-002 +0.01950994 1.11005782078551600E-002 +0.01958145 1.10145769938682064E-002 +0.01965323 1.09293084197736728E-002 +0.01972527 1.08433776192876329E-002 +0.01979757 1.07594131836169764E-002 +0.01987014 1.06749308549227082E-002 +0.01994297 1.05919282455423317E-002 +0.02001607 1.05093340813684436E-002 +0.02008944 1.04266754068496146E-002 +0.02016308 1.03470555373704007E-002 +0.02023698 1.02644356462489993E-002 +0.02031116 1.01855585381750696E-002 +0.02038561 1.01053465591621344E-002 +0.02046034 1.00258007435034061E-002 +0.02053533 9.94720874527963567E-003 +0.02061060 9.86995678832911991E-003 +0.02068615 9.79305131599937304E-003 +0.02076198 9.71589506030589613E-003 +0.02083808 9.63967658773517630E-003 +0.02091446 9.56559403944991400E-003 +0.02099112 9.49113817081115134E-003 +0.02106806 9.41658852449755134E-003 +0.02114529 9.34438890733372933E-003 +0.02122280 9.27097722932982739E-003 +0.02130059 9.19865630091011924E-003 +0.02137866 9.12676064984231476E-003 +0.02145703 9.05637490042956843E-003 +0.02153568 8.98678784492059485E-003 +0.02161462 8.91609338329384452E-003 +0.02169384 8.84742854716324793E-003 +0.02177336 8.77807518828323946E-003 +0.02185317 8.70971270910479364E-003 +0.02193327 8.64199688682344182E-003 +0.02201367 8.57591464438287564E-003 +0.02209436 8.50922049913409480E-003 +0.02217535 8.44305681306937485E-003 +0.02225663 8.37700763387625759E-003 +0.02233821 8.31225235901327832E-003 +0.02242009 8.24811570540386410E-003 +0.02250227 8.18280621807297541E-003 +0.02258475 8.11966990971350194E-003 +0.02266754 8.05721604059357784E-003 +0.02275062 7.99418536831365649E-003 +0.02283402 7.93245002499068895E-003 +0.02291771 7.87117918108326195E-003 +0.02300172 7.81029211456481069E-003 +0.02308603 7.75061366947908496E-003 +0.02317065 7.69037956368404715E-003 +0.02325558 7.63017757233556797E-003 +0.02334082 7.57110579592796054E-003 +0.02342638 7.51324059264008460E-003 +0.02351225 7.45548773997657763E-003 +0.02359843 7.39742899149546142E-003 +0.02368493 7.34130350464691928E-003 +0.02377175 7.28464808629281091E-003 +0.02385888 7.22939260412840904E-003 +0.02394634 7.17324237423936587E-003 +0.02403411 7.11821717362402708E-003 +0.02412221 7.06301137599733495E-003 +0.02421063 7.00999131195664555E-003 +0.02429937 6.95599147289620474E-003 +0.02438844 6.90221848081585231E-003 +0.02447783 6.84992669575248524E-003 +0.02456756 6.79698217735725911E-003 +0.02465761 6.74506236977271984E-003 +0.02474799 6.69423870610778935E-003 +0.02483870 6.64290399845678461E-003 +0.02492975 6.59137807706079888E-003 +0.02502113 6.54105895058767085E-003 +0.02511284 6.49125633535059098E-003 +0.02520489 6.44039876562441539E-003 +0.02529728 6.39104908035692185E-003 +0.02539001 6.34229748880052284E-003 +0.02548307 6.29298029654996004E-003 +0.02557648 6.24626374409755370E-003 +0.02567023 6.19866687899601858E-003 +0.02576433 6.15191151689322389E-003 +0.02585876 6.10361222982861839E-003 +0.02595355 6.05687254549052388E-003 +0.02604868 6.01137022324587170E-003 +0.02614416 5.96472742187741795E-003 +0.02623999 5.91959828924200609E-003 +0.02633617 5.87540996743941748E-003 +0.02643271 5.83074804091761930E-003 +0.02652960 5.78562431970043416E-003 +0.02662684 5.74192531494660281E-003 +0.02672444 5.69800489525243512E-003 +0.02682240 5.65505611017136887E-003 +0.02692072 5.61180601145374637E-003 +0.02701939 5.56953062646893191E-003 +0.02711843 5.52752529584177310E-003 +0.02721783 5.48681798690119332E-003 +0.02731760 5.44468997088249675E-003 +0.02741773 5.40376700097326950E-003 +0.02751823 5.36415955820811197E-003 +0.02761910 5.32410743544662387E-003 +0.02772033 5.28521150012730128E-003 +0.02782194 5.24595605886274668E-003 +0.02792392 5.20706508894551966E-003 +0.02802628 5.16844575779000157E-003 +0.02812901 5.13126027923777733E-003 +0.02823211 5.09280812100238161E-003 +0.02833560 5.05554399594222541E-003 +0.02843946 5.01878689954597581E-003 +0.02854371 4.98202536433923517E-003 +0.02864833 4.94567250041654926E-003 +0.02875334 4.90949102684305142E-003 +0.02885874 4.87379095417739012E-003 +0.02896452 4.83856569012054444E-003 +0.02907069 4.80301201802607255E-003 +0.02917724 4.76873105192012099E-003 +0.02928419 4.73434278537704801E-003 +0.02939153 4.70015892985042091E-003 +0.02949927 4.66585828457478664E-003 +0.02960739 4.63226412837903188E-003 +0.02971592 4.59914404931438623E-003 +0.02982484 4.56663411852093609E-003 +0.02993416 4.53388628291463355E-003 +0.03004389 4.50132726700156176E-003 +0.03015401 4.46843686758158221E-003 +0.03026454 4.43587685124262332E-003 +0.03037548 4.40375089635797103E-003 +0.03048682 4.37196277089727230E-003 +0.03059856 4.34069110138482657E-003 +0.03071072 4.30968200603079003E-003 +0.03082329 4.27868754567111830E-003 +0.03093627 4.24785291426956271E-003 +0.03104967 4.21760730060596108E-003 +0.03116348 4.18705309573731786E-003 +0.03127771 4.15734576605709949E-003 +0.03139236 4.12780167034787135E-003 +0.03150743 4.09796369136975619E-003 +0.03162292 4.06937136122380912E-003 +0.03173883 4.04075811169785429E-003 +0.03185517 4.01248685520913181E-003 +0.03197193 3.98387965793004731E-003 +0.03208912 3.95587806842651480E-003 +0.03220675 3.92819820299655786E-003 +0.03232480 3.90167370907051544E-003 +0.03244328 3.87381379972156744E-003 +0.03256220 3.84732680164350188E-003 +0.03268156 3.82064772454454755E-003 +0.03280135 3.79404718688677867E-003 +0.03292159 3.76793801774123445E-003 +0.03304226 3.74201266065188548E-003 +0.03316337 3.71649099562890769E-003 +0.03328493 3.69049277558793987E-003 +0.03340694 3.66564797026834935E-003 +0.03352939 3.64096827617745120E-003 +0.03365229 3.61620752472438089E-003 +0.03377564 3.59170190780339505E-003 +0.03389945 3.56771263373165375E-003 +0.03402371 3.54357161910729941E-003 +0.03414842 3.51980869851370188E-003 +0.03427359 3.49685243496918735E-003 +0.03439922 3.47293226321078365E-003 +0.03452531 3.44931420026375456E-003 +0.03465186 3.42652548554795659E-003 +0.03477887 3.40450776595704841E-003 +0.03490636 3.38172126882970488E-003 +0.03503430 3.35927034791888438E-003 +0.03516272 3.33715003446927562E-003 +0.03529161 3.31588791085966287E-003 +0.03542097 3.29392179925424959E-003 +0.03555080 3.27234222565340235E-003 +0.03568111 3.25061421615388405E-003 +0.03581190 3.22945632640788197E-003 +0.03594317 3.20838144357421789E-003 +0.03607492 3.18777892685057638E-003 +0.03620715 3.16766220082267567E-003 +0.03633987 3.14727980811456767E-003 +0.03647307 3.12736809565597549E-003 +0.03660676 3.10741458853698062E-003 +0.03674094 3.08741272606093478E-003 +0.03687561 3.06883503417041325E-003 +0.03701078 3.04874885790465833E-003 +0.03714644 3.02983472854249014E-003 +0.03728260 3.01147260484850403E-003 +0.03741926 2.99243774923847955E-003 +0.03755642 2.97365653192672346E-003 +0.03769408 2.95552992055701748E-003 +0.03783225 2.93795997936897564E-003 +0.03797092 2.91930970975755669E-003 +0.03811010 2.90159888851259469E-003 +0.03824980 2.88366672445694019E-003 +0.03839000 2.86644844445027623E-003 +0.03853072 2.84923379998042918E-003 +0.03867195 2.83286963976528069E-003 +0.03881370 2.81548154783498473E-003 +0.03895597 2.79887929261441772E-003 +0.03909876 2.78257217729570121E-003 +0.03924208 2.76630096264438149E-003 +0.03938592 2.74970073655786320E-003 +0.03953029 2.73404550577683583E-003 +0.03967519 2.71839452231167639E-003 +0.03982061 2.70276528918803743E-003 +0.03996658 2.68716816813063027E-003 +0.04011307 2.67201211486422672E-003 +0.04026010 2.65673928110586469E-003 +0.04040768 2.64174701903595452E-003 +0.04055579 2.62714355733919451E-003 +0.04070445 2.61217996739939546E-003 +0.04085365 2.59746530092631444E-003 +0.04100340 2.58331160530762046E-003 +0.04115369 2.56929162451313567E-003 +0.04130454 2.55511971264671183E-003 +0.04145594 2.54108936434026354E-003 +0.04160790 2.52761746904259709E-003 +0.04176041 2.51394081730318833E-003 +0.04191348 2.50062122753629381E-003 +0.04206711 2.48750917504913247E-003 +0.04222131 2.47470676164495166E-003 +0.04237607 2.46196593481836853E-003 +0.04253140 2.44857933074176925E-003 +0.04268730 2.43574051870480007E-003 +0.04284377 2.42312742860916440E-003 +0.04300081 2.41148203978225296E-003 +0.04315843 2.39894362220024809E-003 +0.04331662 2.38683268164931010E-003 +0.04347540 2.37535640733705158E-003 +0.04363476 2.36367389597336467E-003 +0.04379470 2.35203509821855236E-003 +0.04395523 2.34023194278080039E-003 +0.04411634 2.32891283595428869E-003 +0.04427805 2.31755662132850917E-003 +0.04444035 2.30670075606173456E-003 +0.04460325 2.29620533691631381E-003 +0.04476674 2.28482986292394578E-003 +0.04493083 2.27435950918331150E-003 +0.04509552 2.26358268919632554E-003 +0.04526082 2.25343234384576489E-003 +0.04542672 2.24312120235441517E-003 +0.04559323 2.23274302922071800E-003 +0.04576035 2.22286550217780116E-003 +0.04592809 2.21297358110513582E-003 +0.04609643 2.20352276311751522E-003 +0.04626540 2.19420167164945199E-003 +0.04643498 2.18443315278033781E-003 +0.04660519 2.17495906690037431E-003 +0.04677602 2.16602927201744100E-003 +0.04694748 2.15686068127451686E-003 +0.04711956 2.14754656959983579E-003 +0.04729228 2.13915846696831335E-003 +0.04746563 2.12999551580564080E-003 +0.04763961 2.12138110270036241E-003 +0.04781423 2.11313539797851075E-003 +0.04798949 2.10463370975697136E-003 +0.04816540 2.09637202298373210E-003 +0.04834195 2.08834191344414027E-003 +0.04851914 2.08053715940646582E-003 +0.04869699 2.07266478390750672E-003 +0.04887549 2.06487923907699121E-003 +0.04905464 2.05715739321036357E-003 +0.04923445 2.04973667582774438E-003 +0.04941491 2.04279523287836983E-003 +0.04959604 2.03520435469325706E-003 +0.04977784 2.02812220829893392E-003 +0.04996030 2.02086450151650002E-003 +0.05014342 2.01444665078344409E-003 +0.05032722 2.00798230135228921E-003 +0.05051170 2.00095209164268548E-003 +0.05069685 1.99470292342877279E-003 +0.05088267 1.98805540673329577E-003 +0.05106918 1.98158569169398606E-003 +0.05125637 1.97582431546381668E-003 +0.05144425 1.96931672705604952E-003 +0.05163282 1.96322363174722143E-003 +0.05182208 1.95781872514104623E-003 +0.05201203 1.95140797088008450E-003 +0.05220268 1.94592723694128936E-003 +0.05239403 1.94024024873419294E-003 +0.05258608 1.93521175454108830E-003 +0.05277883 1.92942430649643295E-003 +0.05297229 1.92429885618303187E-003 +0.05316646 1.91926018745507024E-003 +0.05336134 1.91411166934013217E-003 +0.05355693 1.90923759274182138E-003 +0.05375324 1.90439568754025663E-003 +0.05395028 1.89986278418529417E-003 +0.05414803 1.89497114929739027E-003 +0.05434651 1.89052248179154541E-003 +0.05454571 1.88616058535443637E-003 +0.05474565 1.88191180337588752E-003 +0.05494632 1.87749045071094393E-003 +0.05514772 1.87375475874517698E-003 +0.05534986 1.86940073953670727E-003 +0.05555275 1.86559902067808111E-003 +0.05575638 1.86180026864967633E-003 +0.05596075 1.85797767274848021E-003 +0.05616587 1.85454498421164650E-003 +0.05637175 1.85063328563260412E-003 +0.05657838 1.84726744904422963E-003 +0.05678576 1.84392323670582781E-003 +0.05699391 1.84068880249321906E-003 +0.05720282 1.83761460242184461E-003 +0.05741249 1.83461799609554196E-003 +0.05762294 1.83160735649879930E-003 +0.05783415 1.82892464551222267E-003 +0.05804614 1.82618481738314078E-003 +0.05825891 1.82317554118304847E-003 +0.05847246 1.82066193335414799E-003 +0.05868678 1.81864815442624541E-003 +0.05890190 1.81606120471879541E-003 +0.05911780 1.81377848482688767E-003 +0.05933450 1.81157510643982348E-003 +0.05955199 1.80943813112798501E-003 +0.05977027 1.80738174420878276E-003 +0.05998936 1.80556481536802847E-003 +0.06020925 1.80371158730378389E-003 +0.06042994 1.80201513886215367E-003 +0.06065145 1.80051574688253231E-003 +0.06087377 1.79885843468407646E-003 +0.06109690 1.79710416289444457E-003 +0.06132085 1.79589420576297017E-003 +0.06154562 1.79430578802467909E-003 +0.06177121 1.79328662425930663E-003 +0.06199763 1.79173865555758887E-003 +0.06222488 1.79087074907840452E-003 +0.06245296 1.79004685536766450E-003 +0.06268188 1.78891865759665098E-003 +0.06291164 1.78803796408710000E-003 +0.06314224 1.78721161404857319E-003 +0.06337369 1.78680400612422820E-003 +0.06360598 1.78603373861392569E-003 +0.06383913 1.78577769536909185E-003 +0.06407313 1.78575698711817832E-003 +0.06430799 1.78523478424291509E-003 +0.06454371 1.78496889229992650E-003 +0.06478029 1.78513588057718558E-003 +0.06501774 1.78479910687371138E-003 +0.06525606 1.78528592172110564E-003 +0.06549526 1.78527829487090607E-003 +0.06573533 1.78546032515313228E-003 +0.06597628 1.78593524647965092E-003 +0.06621811 1.78617835640577970E-003 +0.06646084 1.78705864984239128E-003 +0.06670445 1.78737100032873688E-003 +0.06694895 1.78848339662999534E-003 +0.06719435 1.78906414686083311E-003 +0.06744065 1.78981927754485732E-003 +0.06768785 1.79082424552207283E-003 +0.06793596 1.79170369032106589E-003 +0.06818498 1.79282379844616295E-003 +0.06843491 1.79426645749559206E-003 +0.06868575 1.79548649469655846E-003 +0.06893752 1.79662890757921012E-003 +0.06919021 1.79807892550843209E-003 +0.06944382 1.79957896392175191E-003 +0.06969837 1.80112754739401100E-003 +0.06995384 1.80281717122658842E-003 +0.07021026 1.80477188690656419E-003 +0.07046761 1.80623199189653446E-003 +0.07072591 1.80849445533253069E-003 +0.07098515 1.81029958986112004E-003 +0.07124535 1.81218423440811455E-003 +0.07150649 1.81423363215577646E-003 +0.07176860 1.81629378721884726E-003 +0.07203167 1.81889109099698512E-003 +0.07229570 1.82107105086134341E-003 +0.07256069 1.82347107570493289E-003 +0.07282666 1.82626135904889091E-003 +0.07309361 1.82866125245345645E-003 +0.07336153 1.83145711667843328E-003 +0.07363043 1.83398174047305304E-003 +0.07390033 1.83666441108639388E-003 +0.07417120 1.83977837944784449E-003 +0.07444308 1.84264523747683850E-003 +0.07471595 1.84553337211214655E-003 +0.07498982 1.84886239334755087E-003 +0.07526469 1.85202445466518513E-003 +0.07554057 1.85520526162093690E-003 +0.07581746 1.85872386465653827E-003 +0.07609537 1.86185345460267463E-003 +0.07637429 1.86513286978737605E-003 +0.07665424 1.86858021284647732E-003 +0.07693522 1.87257230772964697E-003 +0.07721722 1.87606697759540547E-003 +0.07750026 1.87992499040575897E-003 +0.07778433 1.88353704671774037E-003 +0.07806945 1.88736498601674947E-003 +0.07835561 1.89166597814261904E-003 +0.07864282 1.89519848654948848E-003 +0.07893108 1.89981257926503488E-003 +0.07922040 1.90352703941034469E-003 +0.07951079 1.90795965912256759E-003 +0.07980223 1.91244438923013392E-003 +0.08009474 1.91677719409744140E-003 +0.08038833 1.92130501331646761E-003 +0.08068299 1.92599435004824765E-003 +0.08097873 1.93062667166539535E-003 +0.08127556 1.93539436728819248E-003 +0.08157347 1.94046546287379544E-003 +0.08187247 1.94511396679945456E-003 +0.08217258 1.95002261398830403E-003 +0.08247378 1.95510416796003611E-003 +0.08277608 1.96013504523406389E-003 +0.08307950 1.96518461224651306E-003 +0.08338402 1.97089341280234486E-003 +0.08368966 1.97607360791623695E-003 +0.08399643 1.98154811200245036E-003 +0.08430431 1.98672711730470564E-003 +0.08461333 1.99217839012098179E-003 +0.08492348 1.99780302994067346E-003 +0.08523476 2.00331602539714944E-003 +0.08554719 2.00901766397611464E-003 +0.08586076 2.01493083963286785E-003 +0.08617548 2.02107701999429271E-003 +0.08649135 2.02702530015883616E-003 +0.08680838 2.03303344828771777E-003 +0.08712658 2.03891715749149934E-003 +0.08744594 2.04501813562339013E-003 +0.08776647 2.05123999930601365E-003 +0.08808817 2.05778320065804496E-003 +0.08841106 2.06440297073178305E-003 +0.08873513 2.07057467910672782E-003 +0.08906038 2.07705669902399958E-003 +0.08938683 2.08324354757160289E-003 +0.08971448 2.09035656980337530E-003 +0.09004332 2.09674216816608519E-003 +0.09037338 2.10364542657415351E-003 +0.09070464 2.11068227243590935E-003 +0.09103711 2.11717379475248298E-003 +0.09137081 2.12446261744742406E-003 +0.09170572 2.13156484285640865E-003 +0.09204187 2.13867398999247884E-003 +0.09237925 2.14586794892153866E-003 +0.09271786 2.15325093900221301E-003 +0.09305771 2.16048924158241838E-003 +0.09339881 2.16817183178445120E-003 +0.09374117 2.17571348205257116E-003 +0.09408477 2.18295638992120015E-003 +0.09442964 2.19072111251980908E-003 +0.09477577 2.19878717971526243E-003 +0.09512316 2.20637745690691880E-003 +0.09547184 2.21438792217797066E-003 +0.09582179 2.22191053845193160E-003 +0.09617302 2.23000257125948289E-003 +0.09652554 2.23824980718523520E-003 +0.09687935 2.24633958907749422E-003 +0.09723446 2.25448672167329533E-003 +0.09759087 2.26287142472308446E-003 +0.09794858 2.27138596116472323E-003 +0.09830761 2.27972586187349035E-003 +0.09866796 2.28838936574782530E-003 +0.09902962 2.29694444378693166E-003 +0.09939261 2.30557581548284990E-003 +0.09975693 2.31429595466654814E-003 +0.10012259 2.32302055055391568E-003 +0.10048959 2.33177571675773944E-003 +0.10085793 2.34100055726072821E-003 +0.10122762 2.34977018317743301E-003 +0.10159867 2.35877480728189422E-003 +0.10197107 2.36805969442908980E-003 +0.10234485 2.37750448387469195E-003 +0.10271999 2.38656408328676885E-003 +0.10309651 2.39611911411209385E-003 +0.10347440 2.40541798845966262E-003 +0.10385369 2.41478901202064368E-003 +0.10423436 2.42470016239893990E-003 +0.10461643 2.43386763089017445E-003 +0.10499990 2.44381317475493749E-003 +0.10538477 2.45322620419189449E-003 +0.10577106 2.46315797255315487E-003 +0.10615876 2.47340922794142808E-003 +0.10654788 2.48324138015012987E-003 +0.10693843 2.49319507122681017E-003 +0.10733041 2.50384616631930306E-003 +0.10772382 2.51351916395933404E-003 +0.10811868 2.52371864570126664E-003 +0.10851499 2.53457373744106354E-003 +0.10891275 2.54466679857835503E-003 +0.10931197 2.55526246718472969E-003 +0.10971265 2.56575763717176988E-003 +0.11011479 2.57607238783672280E-003 +0.11051842 2.58710127560113660E-003 +0.11092352 2.59759603157709053E-003 +0.11133011 2.60860745024604377E-003 +0.11173818 2.61963578360167220E-003 +0.11214776 2.63044966881879330E-003 +0.11255883 2.64157601631043052E-003 +0.11297141 2.65258139138338945E-003 +0.11338551 2.66388402750128948E-003 +0.11380112 2.67560170701184371E-003 +0.11421825 2.68687610649415414E-003 +0.11463692 2.69868951471654824E-003 +0.11505712 2.70966295532578576E-003 +0.11547886 2.72142699203783891E-003 +0.11590214 2.73315431019013032E-003 +0.11632698 2.74425811093390861E-003 +0.11675337 2.75671846062512486E-003 +0.11718133 2.76817581346630332E-003 +0.11761085 2.78029500253373311E-003 +0.11804195 2.79204829302620930E-003 +0.11847463 2.80461162189657312E-003 +0.11890890 2.81611852600145924E-003 +0.11934475 2.82876499494094831E-003 +0.11978221 2.84113507778625471E-003 +0.12022127 2.85335658598161266E-003 +0.12066194 2.86584845041350407E-003 +0.12110422 2.87806915749305118E-003 +0.12154812 2.89147084889222012E-003 +0.12199365 2.90411631050617328E-003 +0.12244082 2.91618350442814089E-003 +0.12288962 2.92918112435024570E-003 +0.12334007 2.94217539435258140E-003 +0.12379217 2.95495266325327115E-003 +0.12424593 2.96777009900588183E-003 +0.12470135 2.98122550263655575E-003 +0.12515844 2.99415498196578880E-003 +0.12561720 3.00808630686318600E-003 +0.12607765 3.02105597576413174E-003 +0.12653978 3.03457013632387048E-003 +0.12700361 3.04811149660945239E-003 +0.12746914 3.06144786702699850E-003 +0.12793638 3.07543201592574023E-003 +0.12840532 3.08904161026570673E-003 +0.12887599 3.10267170323899784E-003 +0.12934838 3.11668864745097895E-003 +0.12982250 3.13087267331868839E-003 +0.13029836 3.14461226370414421E-003 +0.13077597 3.15883721781602981E-003 +0.13125533 3.17269694076964537E-003 +0.13173644 3.18732947877950956E-003 +0.13221932 3.20188384950034939E-003 +0.13270396 3.21564155910166339E-003 +0.13319038 3.23026504371856562E-003 +0.13367859 3.24476691697903573E-003 +0.13416859 3.25972737266229384E-003 +0.13466038 3.27453641400075749E-003 +0.13515397 3.28942266818908627E-003 +0.13564937 3.30417320725799775E-003 +0.13614659 3.31911103423264972E-003 +0.13664564 3.33416858434946485E-003 +0.13714651 3.34931323975665423E-003 +0.13764921 3.36432950089411709E-003 +0.13815376 3.37922028664724419E-003 +0.13866016 3.39499564945155638E-003 +0.13916842 3.41099244659628714E-003 +0.13967854 3.42593290085503642E-003 +0.14019052 3.44113962052595545E-003 +0.14070439 3.45719057061640109E-003 +0.14122014 3.47268001990997700E-003 +0.14173778 3.48877031343770459E-003 +0.14225731 3.50441678952578004E-003 +0.14277875 3.52062190046551707E-003 +0.14330210 3.53681951450039462E-003 +0.14382737 3.55255612897280261E-003 +0.14435457 3.56852379209536769E-003 +0.14488370 3.58523190734824377E-003 +0.14541476 3.60163474878470160E-003 +0.14594778 3.61813296625479322E-003 +0.14648275 3.63435675411973936E-003 +0.14701967 3.65117073424116529E-003 +0.14755857 3.66772048311075167E-003 +0.14809944 3.68452160775996438E-003 +0.14864230 3.70121380616811237E-003 +0.14918714 3.71850812978238203E-003 +0.14973398 3.73546229331523641E-003 +0.15028283 3.75279438795845166E-003 +0.15083369 3.76967835655636456E-003 +0.15138656 3.78773314161126714E-003 +0.15194147 3.80467031251922189E-003 +0.15249841 3.82191756354842383E-003 +0.15305738 3.83930459683421788E-003 +0.15361841 3.85755378190842267E-003 +0.15418150 3.87475310974603202E-003 +0.15474665 3.89204086803660162E-003 +0.15531386 3.91035868666874103E-003 +0.15588316 3.92814935758613228E-003 +0.15645455 3.94648711486064556E-003 +0.15702803 3.96385354746946021E-003 +0.15760361 3.98234637974339764E-003 +0.15818130 4.00060474834676612E-003 +0.15876111 4.01889631541507523E-003 +0.15934305 4.03695865223354343E-003 +0.15992712 4.05528893267722169E-003 +0.16051332 4.07390152638168607E-003 +0.16110168 4.09229336738173820E-003 +0.16169220 4.11110265932240673E-003 +0.16228487 4.13006408668007904E-003 +0.16287972 4.14897711261474553E-003 +0.16347676 4.16802626293411374E-003 +0.16407598 4.18679687808706531E-003 +0.16467739 4.20611975221729054E-003 +0.16528101 4.22523659205414903E-003 +0.16588685 4.24440727301272566E-003 +0.16649490 4.26399604139345544E-003 +0.16710518 4.28320093687088298E-003 +0.16771770 4.30291207331097089E-003 +0.16833247 4.32341201158427477E-003 +0.16894949 4.34215309887099610E-003 +0.16956877 4.36198307684947714E-003 +0.17019032 4.38169145937247501E-003 +0.17081414 4.40139361810811501E-003 +0.17144026 4.42216401776682200E-003 +0.17206867 4.44182163615969468E-003 +0.17269938 4.46212673362853581E-003 +0.17333241 4.48260531623159274E-003 +0.17396775 4.50327298753891003E-003 +0.17460543 4.52380246860586543E-003 +0.17524544 4.54446356071479870E-003 +0.17588779 4.56538364326333160E-003 +0.17653251 4.58593826685276852E-003 +0.17717958 4.60705937727753315E-003 +0.17782903 4.62804078613596268E-003 +0.17848086 4.64852538318162156E-003 +0.17913507 4.66993454145066093E-003 +0.17979169 4.69099742494589328E-003 +0.18045071 4.71243795013357846E-003 +0.18111215 4.73354131743955291E-003 +0.18177601 4.75507435357773022E-003 +0.18244230 4.77667159349857203E-003 +0.18311104 4.79814659803346963E-003 +0.18378223 4.82053513922997470E-003 +0.18445588 4.84243362927916192E-003 +0.18513200 4.86439140942695070E-003 +0.18581059 4.88637846121485562E-003 +0.18649168 4.90827777844963110E-003 +0.18717526 4.93025779430194926E-003 +0.18786134 4.95266424950157290E-003 +0.18854995 4.97494971230830890E-003 +0.18924107 4.99815759997848576E-003 +0.18993473 5.02004547467126919E-003 +0.19063093 5.04272650482663013E-003 +0.19132968 5.06577325175117110E-003 +0.19203100 5.08959254210631425E-003 +0.19273488 5.11136008545475060E-003 +0.19344135 5.13457847652767745E-003 +0.19415040 5.15735748221634715E-003 +0.19486205 5.18011096017495596E-003 +0.19557631 5.20370006478561818E-003 +0.19629319 5.22765957021769419E-003 +0.19701270 5.25081067816611340E-003 +0.19773485 5.27494488890210746E-003 +0.19845964 5.29813969958791309E-003 +0.19918709 5.32210675661369970E-003 +0.19991720 5.34571358975664390E-003 +0.20064999 5.37005738684167688E-003 +0.20138547 5.39431034852987188E-003 +0.20212364 5.41765078731433133E-003 +0.20286452 5.44299932552423649E-003 +0.20360812 5.46685389399079961E-003 +0.20435444 5.49088227349112373E-003 +0.20510349 5.51581241371066049E-003 +0.20585530 5.54058058550156458E-003 +0.20660985 5.56547746886456619E-003 +0.20736718 5.58949608199544971E-003 +0.20812727 5.61462948676239894E-003 +0.20889016 5.63986280431396682E-003 +0.20965584 5.66469472101650742E-003 +0.21042433 5.68970612342621033E-003 +0.21119563 5.71566106116533617E-003 +0.21196977 5.74094111855042409E-003 +0.21274674 5.76629337275782420E-003 +0.21352655 5.79188383712257379E-003 +0.21430923 5.81797627280948148E-003 +0.21509477 5.84311671226716341E-003 +0.21588320 5.86893652276036445E-003 +0.21667451 5.89545063457520922E-003 +0.21746873 5.92133659751585117E-003 +0.21826585 5.94764521067487045E-003 +0.21906590 5.97361170123343610E-003 +0.21986888 5.99989209270444541E-003 +0.22067480 6.02615324113447547E-003 +0.22148368 6.05359276974014923E-003 +0.22229552 6.08050738110574567E-003 +0.22311034 6.10672274892386756E-003 +0.22392815 6.13364133551146974E-003 +0.22474895 6.16050647846435716E-003 +0.22557276 6.18777899641066460E-003 +0.22639959 6.21496715718257171E-003 +0.22722946 6.24293443473469996E-003 +0.22806236 6.26944982519273691E-003 +0.22889832 6.29640689658936010E-003 +0.22973734 6.32472573439090118E-003 +0.23057943 6.35232000517946174E-003 +0.23142462 6.37989136657447775E-003 +0.23227290 6.40850641756951240E-003 +0.23312429 6.43592555431928524E-003 +0.23397880 6.46387716088358405E-003 +0.23483644 6.49264346963798668E-003 +0.23569723 6.52032567871667183E-003 +0.23656117 6.54889067804760670E-003 +0.23742828 6.57745749176810897E-003 +0.23829857 6.60636975003884089E-003 +0.23917204 6.63475510626775414E-003 +0.24004872 6.66351288729841000E-003 +0.24092861 6.69312587125748919E-003 +0.24181173 6.72176686716543462E-003 +0.24269809 6.75044373617210685E-003 +0.24358769 6.77937831025710990E-003 +0.24448055 6.80924101169134034E-003 +0.24537669 6.83875136900641886E-003 +0.24627611 6.86785283959153239E-003 +0.24717883 6.89797477614119935E-003 +0.24808486 6.92772477582958516E-003 +0.24899421 6.95787160078056074E-003 +0.24990689 6.98750452959289239E-003 +0.25082292 7.01800948257945336E-003 +0.25174230 7.04762189171022780E-003 +0.25266506 7.07841066648775066E-003 +0.25359119 7.10831910539557951E-003 +0.25452072 7.13926216710267323E-003 +0.25545366 7.16933550142067992E-003 +0.25639002 7.20014872029814748E-003 +0.25732981 7.23145493753281701E-003 +0.25827305 7.26164337169274855E-003 +0.25921974 7.29294415662408956E-003 +0.26016991 7.32372188033806118E-003 +0.26112355 7.35562613137846072E-003 +0.26208069 7.38684746439171105E-003 +0.26304134 7.41850673735205534E-003 +0.26400551 7.45021436963863755E-003 +0.26497322 7.48121050087319391E-003 +0.26594447 7.51385803283619123E-003 +0.26691928 7.54507983147935900E-003 +0.26789767 7.57794261344045886E-003 +0.26887964 7.61026649854730508E-003 +0.26986521 7.64228329311514732E-003 +0.27085440 7.67415075624800110E-003 +0.27184721 7.70685306404823856E-003 +0.27284366 7.73938824727619760E-003 +0.27384376 7.77251248948467120E-003 +0.27484752 7.80621639287929544E-003 +0.27585497 7.83860599709089619E-003 +0.27686611 7.87128739665210117E-003 +0.27788095 7.90438367626080697E-003 +0.27889952 7.93754568343494997E-003 +0.27992182 7.97098557800794347E-003 +0.28094786 8.00404977266440214E-003 +0.28197767 8.03752514248958806E-003 +0.28301125 8.07165593724113936E-003 +0.28404862 8.10528557576869688E-003 +0.28508980 8.13961219553987342E-003 +0.28613479 8.17247981323614148E-003 +0.28718361 8.20772917722103340E-003 +0.28823627 8.24193655206312444E-003 +0.28929279 8.27608188452743851E-003 +0.29035319 8.31050276057917169E-003 +0.29141747 8.34570823187336455E-003 +0.29248565 8.38017523615978109E-003 +0.29355775 8.41447101971280580E-003 +0.29463378 8.45075223300076166E-003 +0.29571375 8.48537276453482751E-003 +0.29679768 8.52033586479078453E-003 +0.29788559 8.55651296464488703E-003 +0.29897748 8.59118560136018679E-003 +0.30007337 8.62708784695415641E-003 +0.30117328 8.66344924970223647E-003 +0.30227723 8.69906605600046651E-003 +0.30338522 8.73521309294073706E-003 +0.30449727 8.77141109001629109E-003 +0.30561339 8.80751779757295815E-003 +0.30673361 8.84429295473314857E-003 +0.30785793 8.88050249941704957E-003 +0.30898638 8.91618361869668009E-003 +0.31011896 8.95380695877508355E-003 +0.31125569 8.99076835219840380E-003 +0.31239659 9.02839939071065425E-003 +0.31354168 9.06558807303429678E-003 +0.31469095 9.10266286134012691E-003 +0.31584445 9.13892065032292575E-003 +0.31700216 9.17680878553944236E-003 +0.31816413 9.21453335909355568E-003 +0.31933035 9.25263306198772888E-003 +0.32050085 9.29045124173777728E-003 +0.32167563 9.32750833620779249E-003 +0.32285473 9.36545090657966463E-003 +0.32403814 9.40300217442423605E-003 +0.32522590 9.44137002898275124E-003 +0.32641800 9.48024755474924895E-003 +0.32761448 9.51869482024491308E-003 +0.32881534 9.55746484125851933E-003 +0.33002061 9.59648653516267588E-003 +0.33123029 9.63614795285368426E-003 +0.33244441 9.67401788185332824E-003 +0.33366297 9.71350610005306155E-003 +0.33488600 9.75266373771606181E-003 +0.33611352 9.79137932221727479E-003 +0.33734554 9.83175095895626704E-003 +0.33858207 9.87103799096198352E-003 +0.33982313 9.91179649857432642E-003 +0.34106874 9.95131928490432943E-003 +0.34231892 9.99067010626428741E-003 +0.34357368 1.00312671400401236E-002 +0.34483304 1.00706786028815498E-002 +0.34609702 1.01111015312432394E-002 +0.34736563 1.01520900800426105E-002 +0.34863889 1.01915089510222941E-002 +0.34991682 1.02324164562879738E-002 +0.35119943 1.02722079890193562E-002 +0.35248674 1.03146464101092593E-002 +0.35377877 1.03556996359494315E-002 +0.35507554 1.03964774664219994E-002 +0.35637706 1.04373124623011043E-002 +0.35768335 1.04800202041548818E-002 +0.35899443 1.05218484036650652E-002 +0.36031031 1.05634054804638559E-002 +0.36163102 1.06043964665148635E-002 +0.36295657 1.06467025607290509E-002 +0.36428698 1.06906966374054006E-002 +0.36562226 1.07311306612813441E-002 +0.36696244 1.07732686564308896E-002 +0.36830753 1.08160062993512603E-002 +0.36965755 1.08583690181012060E-002 +0.37101252 1.09016697037554334E-002 +0.37237246 1.09445808392932935E-002 +0.37373738 1.09871048793264009E-002 +0.37510730 1.10302157903720520E-002 +0.37648225 1.10734900999642331E-002 +0.37786224 1.11171057927232295E-002 +0.37924728 1.11608305361280951E-002 +0.38063740 1.12050795010337784E-002 +0.38203262 1.12487164101758835E-002 +0.38343295 1.12928440615338924E-002 +0.38483841 1.13372086884440688E-002 +0.38624903 1.13807187500415945E-002 +0.38766481 1.14256593943350762E-002 +0.38908579 1.14702862360739396E-002 +0.39051197 1.15149687389975806E-002 +0.39194338 1.15582617722980070E-002 +0.39338004 1.16031749896873780E-002 +0.39482196 1.16490515340317274E-002 +0.39626917 1.16945002911189554E-002 +0.39772169 1.17388084672278136E-002 +0.39917953 1.17854013698066324E-002 +0.40064271 1.18299129961620293E-002 +0.40211125 1.18767372217166763E-002 +0.40358518 1.19210224556077788E-002 +0.40506451 1.19671072369976986E-002 +0.40654927 1.20129709271454433E-002 +0.40803946 1.20601268670340756E-002 +0.40953512 1.21061292469018533E-002 +0.41103626 1.21536073716184290E-002 +0.41254290 1.21990059420308550E-002 +0.41405507 1.22460329926470622E-002 +0.41557278 1.22939690423790049E-002 +0.41709605 1.23416121076546769E-002 +0.41862490 1.23890210238798912E-002 +0.42015936 1.24353225443531896E-002 +0.42169944 1.24833045852069460E-002 +0.42324517 1.25305998151452117E-002 +0.42479657 1.25780955507094529E-002 +0.42635365 1.26261059931836190E-002 +0.42791644 1.26755070190956373E-002 +0.42948495 1.27225530936505918E-002 +0.43105922 1.27702373406547338E-002 +0.43263925 1.28182224536623427E-002 +0.43422508 1.28662929734606763E-002 +0.43581672 1.29160342952496527E-002 +0.43741420 1.29647855956844544E-002 +0.43901753 1.30175880248846118E-002 +0.44062673 1.30637204853155785E-002 +0.44224184 1.31125067842794724E-002 +0.44386287 1.31609560043282284E-002 +0.44548983 1.32104712877972909E-002 +0.44712277 1.32601801008350451E-002 +0.44876168 1.33102596798335207E-002 +0.45040661 1.33589662162813087E-002 +0.45205756 1.34104563946916035E-002 +0.45371457 1.34596660766800186E-002 +0.45537764 1.35109794865027055E-002 +0.45704682 1.35610683438877871E-002 +0.45872211 1.36116283157474219E-002 +0.46040355 1.36623758467729704E-002 +0.46209114 1.37130715596222273E-002 +0.46378493 1.37631477188533240E-002 +0.46548492 1.38158783365121222E-002 +0.46719114 1.38660282226176559E-002 +0.46890362 1.39176485150020804E-002 +0.47062237 1.39698603100291315E-002 +0.47234742 1.40210855831498053E-002 +0.47407880 1.40736237231823529E-002 +0.47581653 1.41259619867163573E-002 +0.47756062 1.41772667799735155E-002 +0.47931110 1.42307038087082730E-002 +0.48106801 1.42843475356255415E-002 +0.48283135 1.43365608068681972E-002 +0.48460115 1.43884258483696088E-002 +0.48637745 1.44419074737119710E-002 +0.48816025 1.44957410934779506E-002 +0.48994959 1.45496096900131211E-002 +0.49174549 1.46022376973342447E-002 +0.49354797 1.46556421567912935E-002 +0.49535705 1.47093948861937891E-002 +0.49717277 1.47627078608993760E-002 +0.49899515 1.48169291243104764E-002 +0.50082420 1.48715444722510026E-002 +0.50265996 1.49266460894259319E-002 +0.50450244 1.49800591331056086E-002 +0.50635169 1.50359724415012781E-002 +0.50820770 1.50896771806665157E-002 +0.51007053 1.51449708093484917E-002 +0.51194018 1.52005189602642202E-002 +0.51381668 1.52538513619541165E-002 +0.51570006 1.53095441736835307E-002 +0.51759035 1.53671661488085868E-002 +0.51948756 1.54221059374154042E-002 +0.52139173 1.54782117205921263E-002 +0.52330288 1.55347434908580731E-002 +0.52522103 1.55894240668661352E-002 +0.52714621 1.56460368643371664E-002 +0.52907845 1.57029219681265805E-002 +0.53101778 1.57603464447493742E-002 +0.53296421 1.58178122103493773E-002 +0.53491777 1.58732604640527651E-002 +0.53687850 1.59317623369410535E-002 +0.53884642 1.59882407019686021E-002 +0.54082154 1.60459028026615387E-002 +0.54280391 1.61041233156833455E-002 +0.54479354 1.61635257618186895E-002 +0.54679047 1.62178248358446561E-002 +0.54879472 1.62777404409208612E-002 +0.55080631 1.63356967433657026E-002 +0.55282528 1.63939481971875425E-002 +0.55485164 1.64514100652391644E-002 +0.55688544 1.65105703121139445E-002 +0.55892668 1.65687652003926045E-002 +0.56097542 1.66260701529952065E-002 +0.56303166 1.66862331216503824E-002 +0.56509543 1.67463881037693517E-002 +0.56716678 1.68033323522855417E-002 +0.56924571 1.68628689646867225E-002 +0.57133227 1.69225963342326639E-002 +0.57342647 1.69834354523126681E-002 +0.57552835 1.70427356561517890E-002 +0.57763793 1.71010657557179417E-002 +0.57975525 1.71621121376437473E-002 +0.58188033 1.72234068603430504E-002 +0.58401320 1.72825801999077003E-002 +0.58615388 1.73435083169330186E-002 +0.58830241 1.74059761806209384E-002 +0.59045882 1.74649553956809193E-002 +0.59262313 1.75276894761036799E-002 +0.59479538 1.75893862338560372E-002 +0.59697558 1.76491616505429182E-002 +0.59916378 1.77108928174685987E-002 +0.60136000 1.77722281087125192E-002 +0.60356427 1.78353841915138908E-002 +0.60577662 1.78976641884697162E-002 +0.60799708 1.79609278081126374E-002 +0.61022567 1.80235293758175506E-002 +0.61246244 1.80855907253986287E-002 +0.61470740 1.81469472684937620E-002 +0.61696060 1.82107160705927140E-002 +0.61922205 1.82729739439245267E-002 +0.62149179 1.83360218339701092E-002 +0.62376986 1.83978260022736526E-002 +0.62605627 1.84624918999822737E-002 +0.62835106 1.85270858995036265E-002 +0.63065426 1.85908315850783490E-002 +0.63296591 1.86539316335947968E-002 +0.63528603 1.87172623679760751E-002 +0.63761466 1.87824766001208621E-002 +0.63995182 1.88459158562959868E-002 +0.64229754 1.89109910237998183E-002 +0.64465187 1.89760463037219503E-002 +0.64701482 1.90408146068029721E-002 +0.64938644 1.91080238796464651E-002 +0.65176675 1.91731871661289140E-002 +0.65415578 1.92385844213104791E-002 +0.65655357 1.93038018538064585E-002 +0.65896015 1.93688742965655060E-002 +0.66137555 1.94349659120635586E-002 +0.66379981 1.95017889038273766E-002 +0.66623295 1.95670695843439893E-002 +0.66867501 1.96332925688196581E-002 +0.67112602 1.97005575430958396E-002 +0.67358601 1.97670925056836165E-002 +0.67605502 1.98331490742489867E-002 +0.67853309 1.98991178530840834E-002 +0.68102023 1.99660519194798797E-002 +0.68351649 2.00335906579017821E-002 +0.68602191 2.00996124805914618E-002 +0.68853650 2.01667371415688718E-002 +0.69106031 2.02354215230055347E-002 +0.69359338 2.03035501023636107E-002 +0.69613572 2.03717781731208893E-002 +0.69868739 2.04379147144278552E-002 +0.70124841 2.05048584494631377E-002 +0.70381882 2.05735616008339041E-002 +0.70639865 2.06439707796933700E-002 +0.70898794 2.07139274906397615E-002 +0.71158671 2.07818748925699577E-002 +0.71419501 2.08514698551814058E-002 +0.71681288 2.09200423902653268E-002 +0.71944034 2.09888257916553168E-002 +0.72207743 2.10592930906267663E-002 +0.72472418 2.11286233460712715E-002 +0.72738064 2.12000486561613397E-002 +0.73004683 2.12670531607837866E-002 +0.73272280 2.13389715674716374E-002 +0.73540858 2.14095567920928910E-002 +0.73810420 2.14792763584717890E-002 +0.74080970 2.15516913162918378E-002 +0.74352512 2.16219514772690857E-002 +0.74625049 2.16910600162378911E-002 +0.74898585 2.17645712599397606E-002 +0.75173124 2.18364000614281462E-002 +0.75448669 2.19067564341155450E-002 +0.75725224 2.19787800236950388E-002 +0.76002793 2.20522538432966382E-002 +0.76281379 2.21220460402514404E-002 +0.76560987 2.21959842867165760E-002 +0.76841619 2.22655348874776851E-002 +0.77123280 2.23383510601211886E-002 +0.77405973 2.24104444099577256E-002 +0.77689703 2.24860222124305884E-002 +0.77974472 2.25593592716187112E-002 +0.78260286 2.26327945341413053E-002 +0.78547147 2.27033364542337385E-002 +0.78835059 2.27768699432917519E-002 +0.79124027 2.28552679292776603E-002 +0.79414054 2.29251442471923930E-002 +0.79705144 2.29988164395051251E-002 +0.79997301 2.30726465319125371E-002 +0.80290529 2.31477405271049187E-002 +0.80584832 2.32222750100716351E-002 +0.80880214 2.32974864066705679E-002 +0.81176678 2.33712265749409578E-002 +0.81474229 2.34471049609500000E-002 +0.81772871 2.35207583171798545E-002 +0.82072607 2.35969765314662551E-002 +0.82373442 2.36716231628921123E-002 +0.82675380 2.37462711467055707E-002 +0.82978424 2.38227458450059361E-002 +0.83282580 2.38987191074090284E-002 +0.83587850 2.39725120431612121E-002 +0.83894239 2.40531993148870409E-002 +0.84201751 2.41295761539649829E-002 +0.84510390 2.42045841914439383E-002 +0.84820161 2.42802783578555566E-002 +0.85131067 2.43600415681515803E-002 +0.85443113 2.44364798847383005E-002 +0.85756302 2.45147548160221940E-002 +0.86070640 2.45904813916684485E-002 +0.86386129 2.46691773263088138E-002 +0.86702775 2.47470945252092622E-002 +0.87020582 2.48258886778977526E-002 +0.87339554 2.49012626825099205E-002 +0.87659695 2.49789359718090090E-002 +0.87981009 2.50581581536380923E-002 +0.88303501 2.51382616729395846E-002 +0.88627175 2.52143713211487493E-002 +0.88952036 2.52936191045429123E-002 +0.89278087 2.53724077889776641E-002 +0.89605334 2.54518096461607314E-002 +0.89933780 2.55302166485655430E-002 +0.90263429 2.56087943699926414E-002 +0.90594288 2.56881400978762504E-002 +0.90926359 2.57672687040909031E-002 +0.91259647 2.58481511129961539E-002 +0.91594157 2.59258624995462421E-002 +0.91929893 2.60074578562742055E-002 +0.92266859 2.60852899164120272E-002 +0.92605061 2.61671448226382906E-002 +0.92944502 2.62468090687178260E-002 +0.93285188 2.63282868452288030E-002 +0.93627122 2.64088614851681787E-002 +0.93970310 2.64922589451395234E-002 +0.94314756 2.65697900207781147E-002 +0.94660464 2.66526661824889564E-002 +0.95007440 2.67358632623886303E-002 +0.95355687 2.68188292859996048E-002 +0.95705211 2.68999857576114471E-002 +0.96056016 2.69795311317155527E-002 +0.96408106 2.70644754427166005E-002 +0.96761488 2.71448496390630060E-002 +0.97116165 2.72263700613183043E-002 +0.97472141 2.73120746984572976E-002 +0.97829423 2.73921754010575599E-002 +0.98188014 2.74745554286733584E-002 +0.98547920 2.75590326695750003E-002 +0.98909144 2.76425724515212828E-002 +0.99271693 2.77225659275873067E-002 +0.99635571 2.78082541006505618E-002 +1.00000783 2.78905944859611857E-002 +1.00367333 2.79773539008226248E-002 +1.00735227 2.80612143881267817E-002 +1.01104469 2.81436605903274371E-002 +1.01475065 2.82285922707183369E-002 +1.01847019 2.83110698016482698E-002 +1.02220337 2.84002445176457959E-002 +1.02595023 2.84847097731433033E-002 +1.02971082 2.85712868060949282E-002 +1.03348520 2.86544014401901789E-002 +1.03727341 2.87388177043159873E-002 +1.04107551 2.88226094710394010E-002 +1.04489154 2.89104066614369257E-002 +1.04872157 2.89965858166447502E-002 +1.05256563 2.90819303606429762E-002 +1.05642378 2.91664443626576328E-002 +1.06029607 2.92543203612424287E-002 +1.06418256 2.93427964063952967E-002 +1.06808329 2.94283907250153104E-002 +1.07199833 2.95141904435767509E-002 +1.07592771 2.95994817975062247E-002 +1.07987149 2.96851014741045700E-002 +1.08382973 2.97748884597487107E-002 +1.08780248 2.98653857359745256E-002 +1.09178979 2.99507395405675739E-002 +1.09579172 3.00371534132770242E-002 +1.09980832 3.01273180986855113E-002 +1.10383964 3.02149268708330164E-002 +1.10788573 3.03005102204377159E-002 +1.11194666 3.03907383460903825E-002 +1.11602247 3.04760412804266426E-002 +1.12011322 3.05676724180797728E-002 +1.12421896 3.06557816508292238E-002 +1.12833976 3.07419390986109348E-002 +1.13247566 3.08339067121043801E-002 +1.13662672 3.09219092049606500E-002 +1.14079299 3.10140556381843305E-002 +1.14497454 3.11032007338690707E-002 +1.14917142 3.11918697090468496E-002 +1.15338367 3.12850298940807806E-002 +1.15761137 3.13729192136123144E-002 +1.16185457 3.14608828133771876E-002 +1.16611331 3.15546338191936976E-002 +1.17038767 3.16446781218934353E-002 +1.17467770 3.17353816666130356E-002 +1.17898345 3.18263527002794477E-002 +1.18330498 3.19144528281379777E-002 +1.18764235 3.20064637589574513E-002 +1.19199562 3.20978234922399755E-002 +1.19636485 3.21925337307593512E-002 +1.20075010 3.22829885311280637E-002 +1.20515141 3.23769930443095627E-002 +1.20956887 3.24643735629415731E-002 +1.21400251 3.25581490928288225E-002 +1.21845240 3.26517228817497854E-002 +1.22291861 3.27434485858809285E-002 +1.22740118 3.28359761155937596E-002 +1.23190019 3.29288509738893953E-002 +1.23641569 3.30214585086592988E-002 +1.24094774 3.31131629616919151E-002 +1.24549640 3.32057808509658228E-002 +1.25006173 3.33025814091161484E-002 +1.25464380 3.33920326289745689E-002 +1.25924267 3.34866337855454291E-002 +1.26385839 3.35863170293184340E-002 +1.26849103 3.36758152811250100E-002 +1.27314065 3.37732465058143208E-002 +1.27780731 3.38681176770406836E-002 +1.28249108 3.39571015090146394E-002 +1.28719202 3.40536335813159258E-002 +1.29191019 3.41509874495137047E-002 +1.29664565 3.42459528613393849E-002 +1.30139847 3.43407399905838115E-002 +1.30616871 3.44369203245194627E-002 +1.31095644 3.45339052427713761E-002 +1.31576172 3.46304284501049095E-002 +1.32058461 3.47239860030213662E-002 +1.32542517 3.48252506004715703E-002 +1.33028349 3.49159689921413191E-002 +1.33515960 3.50149867066818152E-002 +1.34005360 3.51088388728827278E-002 +1.34496553 3.52056656497731352E-002 +1.34989546 3.53029350776155534E-002 +1.35484347 3.54008997840470976E-002 +1.35980961 3.54960231452455255E-002 +1.36479396 3.55980044772859980E-002 +1.36979658 3.56952673478692084E-002 +1.37481753 3.57910059527944274E-002 +1.37985689 3.58900000879194964E-002 +1.38491472 3.59878434776500430E-002 +1.38999109 3.60861390433822732E-002 +1.39508606 3.61844554431478213E-002 +1.40019971 3.62820134877948133E-002 +1.40533211 3.63807111921034959E-002 +1.41048332 3.64791821090821658E-002 +1.41565341 3.65786760502448960E-002 +1.42084245 3.66800722793787989E-002 +1.42605051 3.67774782460374358E-002 +1.43127766 3.68745918192544472E-002 +1.43652397 3.69805179783451732E-002 +1.44178951 3.70761085832258253E-002 +1.44707435 3.71830734733595014E-002 +1.45237856 3.72788381559871762E-002 +1.45770222 3.73755653691591611E-002 +1.46304539 3.74820125353992895E-002 +1.46840814 3.75823580032965468E-002 +1.47379056 3.76820935507937924E-002 +1.47919270 3.77817994540627991E-002 +1.48461464 3.78862013802578890E-002 +1.49005645 3.79834154845796468E-002 +1.49551822 3.80837615970814961E-002 +1.50100000 3.81870392041739545E-002 diff --git a/HEN_HOUSE/user_codes/egs_kerma/example_40keV_SDD_1m_FD.egsinp b/HEN_HOUSE/user_codes/egs_kerma/example_40keV_SDD_1m_FD.egsinp new file mode 100644 index 000000000..1d98ec738 --- /dev/null +++ b/HEN_HOUSE/user_codes/egs_kerma/example_40keV_SDD_1m_FD.egsinp @@ -0,0 +1,240 @@ + +############################################################################### +# +# EGSnrc egs++ egs_kerma application sample input file +# Copyright (C) 2016 National Research Council Canada +# +# This file is part of EGSnrc. +# +# EGSnrc is free software: you can redistribute it and/or modify it under +# the terms of the GNU Affero General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# EGSnrc is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for +# more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with EGSnrc. If not, see . +# +############################################################################### +# +# Author: Ernesto Mainegra-Hing, 2016 +# +# Contributors: +# +############################################################################### +# +# A simple example input file for the egs_kerma C++ application. +# +# Simulates a 40 keV isotropic photon source in a room with concrete walls. +# Kerma and fluence inside a 5 cm radius air sphere are calculated using a +# forced-detection (FD) technique and a track-length estimator. The air sphere +# is in the centre of the room and the source is 1 m from the sphere. +# +# NOTE 1: Material data is generated in pegsless mode. If source energy +# changed, make sure to adjust energy cut-offs (ae, ue, ap, up) below. +# +# NOTE 2: Two geometries are used here for illustration purposes. Most likely +# only one geometry is needed for kerma and fluence calculations. +# +############################################################################### + + +############################################################################### +### Geometry +############################################################################### +:start geometry definition: + + ### air cavity, spherical, 5 cm radius + :start geometry: + name = cavity + library = egs_spheres + midpoint = 0 0 0 + radii = 5.0 + :start media input: + media = air + :stop media input: + :stop geometry: + + ### air box (8 m x 8 m x 8 m) + :start geometry: + name = air + library = egs_box + box size = 800 + :start media input: + media = air + :stop media input: + :stop geometry: + + ### room with 1 m thick concrete walls + :start geometry: + name = walls + library = egs_box + box size = 900 + :start media input: + media = concrete + :stop media input: + :stop geometry: + + ### room with concrete walls + :start geometry: + name = room + library = egs_genvelope + base geometry = walls + inscribed geometries = air + :stop geometry: + + ########################################################################### + # + # The two geometries below are identical + # + # The purpose is to account for wall contributions to the air sphere. The + # first geometry does NOT include contributions from the wall during the + # calculation, while the second one does. See the 'scoring options' block + # for more detail. + # + # There are several ways of accomplishing this. One could just have used + # the same geometry for both calculations, with and without the sensitive + # regions, or have one geometry with and another without the walls. + # + ########################################################################### + + ### air sphere in room with concrete walls (wall contribution NOT included) + :start geometry: + name = cavity_in_room_no_wall + library = egs_genvelope + base geometry = room + inscribed geometries = cavity + :stop geometry: + + ### air sphere in room with concrete walls (wall contribution included) + :start geometry: + name = cavity_in_room_all + library = egs_genvelope + base geometry = room + inscribed geometries = cavity + :stop geometry: + + ### simulation geometry + simulation geometry = cavity_in_room_no_wall + +:stop geometry definition: + + +############################################################################### +### Media +############################################################################### +:start media definition: + + ### energy cutoffs + ae = 0.512 + ue = 0.555 + ap = 0.001 + up = 0.045 + + ### air + :start air: + density correction file = air_dry_nearsealevel + :stop air: + + ### concrete + :start concrete: + density correction file = concrete_ordinary + :stop concrete: + +:stop media definition: + + +############################################################################### +### Source +############################################################################### +:start source definition: + + ### isotropic + :start source: + name = isotropic + library = egs_isotropic_source + charge = 0 + + ### source shape + :start shape: + type = point + position = 0, 0, -100 + :stop shape: + + ### source spectrum + :start spectrum: + type = monoenergetic + energy = 0.04 # MeV + :stop spectrum: + + :stop source: + + ### simulation source + simulation source = isotropic + +:stop source definition: + + +############################################################################### +### Scoring options +############################################################################### +:start scoring options: + + ### use the same geometry under two different names, for easier bookeeping + :start calculation geometry: + geometry name = cavity_in_room_no_wall + cavity regions = 2 + excluded regions = 0 # exclude particles passing through these regions + cavity mass = 0.630831804841 # 5 cm radius air sphere + :stop calculation geometry: + + :start calculation geometry: + geometry name = cavity_in_room_all + cavity regions = 2 + #excluded regions = 0 # exclude particles passing through these regions + cavity mass = 0.630831804841 # 5 cm radius air sphere + :stop calculation geometry: + + ### ratio estimates wall contribution to air sphere + correlated geometries = cavity_in_room_all cavity_in_room_no_wall + + ### fluence scoring requested (common to all calculation geometries) + :start fluence scoring: + minimum energy = 0.0 + maximum energy = 0.040 + number of bins = 400 + scale = linear + :stop fluence scoring: + + ### E*muen file (could also be E*mutr): absolute or relative file path + emuen file = emuen_icru90_1.5MeV.data + + ### geometry for forced-detection (if omitted, an analog scoring is used) + cavity geometry = cavity + +:stop scoring options: + + +############################################################################### +### Transport parameters +############################################################################### +:start MC transport parameter: + + ### you can include here any of the EGSnrc transport parameters + + Global ECUT = 2000. # Turn-off electron transport + Photon cross sections = mcdf-xcom # XCOM with renormalized PE xsections + +:stop MC transport parameter: + + +############################################################################### +### Run control +############################################################################### +:start run control: + ncase = 1000000 +:stop run control: