diff --git a/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_angular_spread_source_s0.png b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_angular_spread_source_s0.png new file mode 100644 index 000000000..27c376b58 Binary files /dev/null and b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_angular_spread_source_s0.png differ diff --git a/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_angular_spread_source_s10.png b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_angular_spread_source_s10.png new file mode 100644 index 000000000..b89be7ec3 Binary files /dev/null and b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_angular_spread_source_s10.png differ diff --git a/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_beam_source.png b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_beam_source.png new file mode 100644 index 000000000..0814dfaf6 Binary files /dev/null and b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_beam_source.png differ diff --git a/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_collimated_source.png b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_collimated_source.png new file mode 100644 index 000000000..bfb1dc29c Binary files /dev/null and b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_collimated_source.png differ diff --git a/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_isotropic_source.png b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_isotropic_source.png new file mode 100644 index 000000000..72a62e022 Binary files /dev/null and b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_isotropic_source.png differ diff --git a/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_parallel_beam.png b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_parallel_beam.png new file mode 100644 index 000000000..7e556599f Binary files /dev/null and b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_parallel_beam.png differ diff --git a/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_phsp_source.png b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_phsp_source.png new file mode 100644 index 000000000..85d9462bf Binary files /dev/null and b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_phsp_source.png differ diff --git a/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_point_source.png b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_point_source.png new file mode 100644 index 000000000..b7c3ad98b Binary files /dev/null and b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_point_source.png differ diff --git a/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_source_collection.png b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_source_collection.png new file mode 100644 index 000000000..574fe18df Binary files /dev/null and b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_source_collection.png differ diff --git a/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_transformed_source.png b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_transformed_source.png new file mode 100644 index 000000000..eb16e28a0 Binary files /dev/null and b/HEN_HOUSE/doc/src/pirs898-egs++/figures/egs_transformed_source.png differ diff --git a/HEN_HOUSE/egs++/sources/egs_angular_spread/egs_angular_spread_source.h b/HEN_HOUSE/egs++/sources/egs_angular_spread/egs_angular_spread_source.h index 195033dfe..259691d90 100644 --- a/HEN_HOUSE/egs++/sources/egs_angular_spread/egs_angular_spread_source.h +++ b/HEN_HOUSE/egs++/sources/egs_angular_spread/egs_angular_spread_source.h @@ -23,7 +23,7 @@ # # Author: Iwan Kawrakow, 2009 # -# Contributors: +# Contributors: Reid Townson # ############################################################################### */ @@ -84,6 +84,37 @@ The \c sigma input can be positive or negative. If it is positive, it is considered to be the sigma of the Gaussian distribution in degrees, if negative, the FWHM of the distribution. +A simple example: +\verbatim +:start source definition: + :start source: + library = egs_parallel_beam + name = my_parallel_source + :start shape: + library = egs_rectangle + rectangle = -.1 -.1 .1 .1 + :stop shape: + direction = 0 -1 0 + charge = 0 + :start spectrum: + type = monoenergetic + energy = 1.0 + :stop spectrum: + :stop source: + + :start source: + library = egs_angular_spread_source + name = my_source + sigma = 10 + source name = my_parallel_source + :stop source: + + simulation source = my_source + +:stop source definition: +\endverbatim +\image html egs_angular_spread_source_s0.png "A simple example with sigma=0" +\image html egs_angular_spread_source_s10.png "A simple example with sigma=10" */ class EGS_ANGULAR_SPREAD_SOURCE_EXPORT EGS_AngularSpreadSource : public EGS_BaseSource { diff --git a/HEN_HOUSE/egs++/sources/egs_beam_source/egs_beam_source.h b/HEN_HOUSE/egs++/sources/egs_beam_source/egs_beam_source.h index 2ab3515f3..508da0594 100644 --- a/HEN_HOUSE/egs++/sources/egs_beam_source/egs_beam_source.h +++ b/HEN_HOUSE/egs++/sources/egs_beam_source/egs_beam_source.h @@ -25,6 +25,7 @@ # # Contributors: Ernesto Mainegra-Hing # Frederic Tessier +# Reid Townson # ############################################################################### */ @@ -110,6 +111,25 @@ reject "phat" particles from a simulation using DBS. sure that the RESTART calculation option is defined in both, the source and the application input files. +A simple example. Note that you must build the required shared library for +the accelerator (i.e. use the command 'make library' in the BEAM_EX10MeVe +directory). +\verbatim +:start source definition: + :start source: + library = egs_beam_source + name = my_source + beam code = BEAM_EX10MeVe + pegs file = 521icru + input file = EX10MeVe + particle type = all + :stop source: + + simulation source = my_source + +:stop source definition: +\endverbatim +\image html egs_beam_source.png "A simple example" */ class EGS_BEAM_SOURCE_EXPORT EGS_BeamSource : public EGS_BaseSource { diff --git a/HEN_HOUSE/egs++/sources/egs_collimated_source/egs_collimated_source.cpp b/HEN_HOUSE/egs++/sources/egs_collimated_source/egs_collimated_source.cpp index 9f49ff8b8..db7df8a4b 100644 --- a/HEN_HOUSE/egs++/sources/egs_collimated_source/egs_collimated_source.cpp +++ b/HEN_HOUSE/egs++/sources/egs_collimated_source/egs_collimated_source.cpp @@ -50,7 +50,7 @@ EGS_CollimatedSource::EGS_CollimatedSource(EGS_Input *input, int err = input->getInput("source shape name",sname); if (err) egsWarning("EGS_CollimatedSource: missing/wrong inline source " - "shape definition and missing wrong 'source shape name' input\n"); + "shape definition and missing/wrong 'source shape name' input\n"); else { source_shape = EGS_BaseShape::getShape(sname); if (!source_shape) @@ -68,10 +68,10 @@ EGS_CollimatedSource::EGS_CollimatedSource(EGS_Input *input, int err = input->getInput("target shape name",sname); if (err) egsWarning("EGS_CollimatedSource: missing/wrong inline target" - "shape definition and missing wrong 'target shape name' input\n"); + "shape definition and missing/wrong 'target shape name' input\n"); else { target_shape = EGS_BaseShape::getShape(sname); - if (!source_shape) + if (!target_shape) egsWarning("EGS_CollimatedSource: a shape named %s" " does not exist\n",sname.c_str()); } diff --git a/HEN_HOUSE/egs++/sources/egs_collimated_source/egs_collimated_source.h b/HEN_HOUSE/egs++/sources/egs_collimated_source/egs_collimated_source.h index 799285216..8ee0c6a8f 100644 --- a/HEN_HOUSE/egs++/sources/egs_collimated_source/egs_collimated_source.h +++ b/HEN_HOUSE/egs++/sources/egs_collimated_source/egs_collimated_source.h @@ -24,6 +24,7 @@ # Author: Iwan Kawrakow, 2005 # # Contributors: Ernesto Mainegra-Hing +# Reid Townson # ############################################################################### */ @@ -97,6 +98,13 @@ as a target shape in a collimated source are \link EGS_PolygonShape polygons \endlink and \link EGS_TriangleShape triangles \endlink. +The fluence calculated by getFluence() is determined as \f$N/d^2\f$, +where \c N is the number of source particles and \c d is provided by +the user as \c distance, the minimum distance between the source and target +shapes. This accounts for the solid angle within which particles are generated. +If \c distance is not provided, it defaults to 1, which will likely be +an incorrect normalization. + A collimated source is defined as follows: \verbatim :start source: @@ -111,6 +119,7 @@ A collimated source is defined as follows: :start spectrum: definition of the spectrum :stop spectrum: + distance = source-target shape min. distance charge = -1 or 0 or 1 for electrons or photons or positrons :stop source: \endverbatim @@ -118,6 +127,33 @@ It is worth noting that the functionality of sources 1, 11, 12, 14, 15 and 16 from the RZ series of user codes and source 3 in DOSXYZnrc can be reproduced with the collimated source from the EGSnrc C++ class library. +A simple example: +\verbatim +:start source definition: + :start source: + library = egs_collimated_source + name = my_source + :start source shape: + type = point + position = 0 0 5 + :stop source shape: + :start target shape: + library = egs_rectangle + rectangle = -1 -1 1 1 + :stop target shape: + distance = 5 + charge = -1 + :start spectrum: + type = monoenergetic + energy = 20 + :stop spectrum: + :stop source: + + simulation source = my_source + +:stop source definition: +\endverbatim +\image html egs_collimated_source.png "A simple example" */ class EGS_COLLIMATED_SOURCE_EXPORT EGS_CollimatedSource : public EGS_BaseSimpleSource { diff --git a/HEN_HOUSE/egs++/sources/egs_isotropic_source/egs_isotropic_source.h b/HEN_HOUSE/egs++/sources/egs_isotropic_source/egs_isotropic_source.h index 3345f20df..12fa1be05 100644 --- a/HEN_HOUSE/egs++/sources/egs_isotropic_source/egs_isotropic_source.h +++ b/HEN_HOUSE/egs++/sources/egs_isotropic_source/egs_isotropic_source.h @@ -24,6 +24,7 @@ # Author: Iwan Kawrakow, 2005 # # Contributors: Frederic Tessier +# Reid Townson # ############################################################################### */ @@ -70,10 +71,11 @@ \ingroup Sources -An isotropic source is a source that delivers particles with -directions uniformly distributed in \f$4 \pi\f$ emitted from -\link EGS_BaseShape any shape. \endlink -It is defined using the following input +An isotropic source is a source that delivers particles of a given +\c charge with directions uniformly distributed in \f$4 \pi\f$ emitted from +\link EGS_BaseShape any shape \endlink with \link EGS_BaseSpectrum any spectrum. +\endlink +It is defined most simply using the following input: \verbatim :start source: library = egs_isotropic_source @@ -85,13 +87,122 @@ It is defined using the following input definition of the spectrum :stop spectrum: charge = -1 or 0 or 1 for electrons or photons or positrons - min theta = 80 (degree) - max theta = 100 (degree) + min theta = 80 [degree] (optional) + max theta = 100 [degree] (optional) + min phi = 80 [degree] (optional) + max phi = 100 [degree] (optional) :stop source: \endverbatim + +It is also possible to generate source particles from a more complex shape +by including or excluding geometry regions. This is done by providing +the \c geometry name to operate on, a region selection mode, and +selected regions for the region selection operation. The selected +regions tag is necessary and used only for \c IncludeSelected and +\c ExcludeSelected modes. + +The available region selection modes are described below. A particle is +generated within the defined shape uniformly, and kept only if it meets the +corresponding condition: + +\li IncludeAll - particle is inside \c geometry +\li ExcludeAll - particle is NOT inside \c geometry +\li IncludeSelected - particle is inside \c geometry AND in one of +selected regions +\li ExcludeSelected - particle is not inside \c geometry OR not in +one of selected regions + +\verbatim +:start source: + library = egs_isotropic_source + name = some_name + geometry = a geometry to modify particle generation (optional) + region selection = IncludeAll or ExcludeAll or IncludeSelected or ExcludeSelected (optional) + selected regions = regions to use (only for IncludeSelected or ExcludeSelected) + :start shape: + definition of the shape to generate particles within + :stop shape: + :start spectrum: + definition of the spectrum + :stop spectrum: + charge = -1 or 0 or 1 for electrons or photons or positrons + min theta = 80 [degree] (optional) + max theta = 100 [degree] (optional) + min phi = 80 [degree] (optional) + max phi = 100 [degree] (optional) +:stop source: +\endverbatim + It is worth noting that the functionality of source 3 in the RZ series of user codes or source 6 in DOSXYZnrc can be reproduced with the isotropic source from the EGSnrc C++ class library. + +Here is an example of two spheres in a box emitting isotropic photons. Only +the geometry and source blocks are provided: +\verbatim +:start geometry definition: + :start geometry: + name = my_box + library = egs_box + box size = 1 2 3 + :start media input: + media = H2O521ICRU + :stop media input: + :stop geometry: + :start geometry: + name = sphere1 + library = egs_spheres + midpoint = 0 0 1 + radii = 0.3 + :start media input: + media = AIR521ICRU + :stop media input: + :stop geometry: + :start geometry: + name = sphere2 + library = egs_spheres + midpoint = 0 0 -1 + radii = 0.3 + :start media input: + media = AIR521ICRU + :stop media input: + :stop geometry: + :start geometry: + name = my_envelope + library = egs_genvelope + base geometry = my_box + inscribed geometries = sphere1 sphere2 + :stop geometry: + + simulation geometry = my_envelope + +:stop geometry definition: +:start source definition: + :start source: + name = my_source + library = egs_isotropic_source + charge = 0 + geometry = my_envelope + region selection = IncludeSelected + selected regions = 1 2 + :start shape: + type = box + box size = 1 2 3 + :start media input: + media = H2O521ICRU + :stop media input: + :stop shape: + :start spectrum: + type = monoenergetic + energy = 1 + :stop spectrum: + :stop source: + + simulation source = my_source + +:stop source definition: +\endverbatim +\image html egs_isotropic_source.png "An example of two spheres emitting isotropic photons" */ class EGS_ISOTROPIC_SOURCE_EXPORT EGS_IsotropicSource : diff --git a/HEN_HOUSE/egs++/sources/egs_parallel_beam/egs_parallel_beam.h b/HEN_HOUSE/egs++/sources/egs_parallel_beam/egs_parallel_beam.h index 4b6a03965..6c31c8d5f 100644 --- a/HEN_HOUSE/egs++/sources/egs_parallel_beam/egs_parallel_beam.h +++ b/HEN_HOUSE/egs++/sources/egs_parallel_beam/egs_parallel_beam.h @@ -23,7 +23,7 @@ # # Author: Iwan Kawrakow, 2005 # -# Contributors: +# Contributors: Reid Townson # ############################################################################### */ @@ -95,6 +95,32 @@ from the RZ series of user codes and sources 0 and 1 in DOSXYZnrc can be reproduced with the parallel beam source from the EGSnrc C++ class library. +A simple example: +\verbatim +:start source definition: + :start source: + library = egs_parallel_beam + name = my_source + :start shape: + type = cylinder + radius = 1 + height = 2 + axis = 0 0 1 + midpoint = 0 + :stop shape: + direction = 0 0 1 + charge = 0 + :start spectrum: + type = monoenergetic + energy = 6 + :stop spectrum: + :stop source: + + simulation source = my_source + +:stop source definition: +\endverbatim +\image html egs_parallel_beam.png "A simple example" */ class EGS_PARALLEL_BEAM_EXPORT EGS_ParallelBeam : public EGS_BaseSimpleSource { diff --git a/HEN_HOUSE/egs++/sources/egs_phsp_source/egs_phsp_source.h b/HEN_HOUSE/egs++/sources/egs_phsp_source/egs_phsp_source.h index 5aea0dd3e..62746ab23 100644 --- a/HEN_HOUSE/egs++/sources/egs_phsp_source/egs_phsp_source.h +++ b/HEN_HOUSE/egs++/sources/egs_phsp_source/egs_phsp_source.h @@ -24,6 +24,7 @@ # Author: Iwan Kawrakow, 2005 # # Contributors: Frederic Tessier +# Reid Townson # ############################################################################### */ @@ -81,6 +82,9 @@ A phase-space file source is defined as follows: phase space file = name of the phase space file particle type = one of photons, electrons, positrons, all, or charged cutout = x1 x2 y1 y2 (optional) + weight window = wmin wmax, the min and max particle weights to use. If the particle weight is not in this range, it is rejected. (optional) + reuse photons = number of times to reuse each photon (optional) + reuse electrons = number of times to reuse each electron (optional) :stop source: \endverbatim The optional \c cutout key permits to set a rectangular cutout @@ -99,9 +103,26 @@ together with a transformation, the phase-space source can reproduce the functionality of any phase-space file based source in the RZ series of user codes and in DOSXYZnrc. +A simple example: +\verbatim +:start source definition: + :start source: + name = my_source + library = egs_phsp_source + phase space file = ../BEAM_EX16MVp/EX16MVp.egsphsp1 + particle type = all + cutout = -1 1 -2 2 + reuse photons = 10 + reuse electrons = 10 + :stop source: + + simulation source = my_source + +:stop source definition: +\endverbatim +\image html egs_phsp_source.png "A simple example" + \todo Fully implement latch filters -\todo Add weight window filter -\todo Add particle recycling (\em i.e. same particle returned Nrecycle times) */ class EGS_PHSP_SOURCE_EXPORT EGS_PhspSource : public EGS_BaseSource { diff --git a/HEN_HOUSE/egs++/sources/egs_point_source/egs_point_source.h b/HEN_HOUSE/egs++/sources/egs_point_source/egs_point_source.h index 06b9e3d48..b3b02e45d 100644 --- a/HEN_HOUSE/egs++/sources/egs_point_source/egs_point_source.h +++ b/HEN_HOUSE/egs++/sources/egs_point_source/egs_point_source.h @@ -24,6 +24,7 @@ # Author: Iwan Kawrakow, 2005 # # Contributors: Frederic Tessier +# Reid Townson # ############################################################################### */ @@ -86,6 +87,25 @@ of an isotropic source: :stop source: \endverbatim +A simple example: +\verbatim +:start source definition: + :start source: + library = egs_point_source + name = my_source + position = 0 0 0 + :start spectrum: + type = monoenergetic + energy = 1 + :stop spectrum: + charge = 0 + :stop source: + + simulation source = my_source + +:stop source definition: +\endverbatim +\image html egs_point_source.png "A simple example" */ class EGS_POINT_SOURCE_EXPORT EGS_PointSource : public EGS_BaseSimpleSource { diff --git a/HEN_HOUSE/egs++/sources/egs_source_collection/egs_source_collection.h b/HEN_HOUSE/egs++/sources/egs_source_collection/egs_source_collection.h index dcce1a029..e081fdc59 100644 --- a/HEN_HOUSE/egs++/sources/egs_source_collection/egs_source_collection.h +++ b/HEN_HOUSE/egs++/sources/egs_source_collection/egs_source_collection.h @@ -23,7 +23,7 @@ # # Author: Iwan Kawrakow, 2005 # -# Contributors: +# Contributors: Reid Townson # ############################################################################### */ @@ -79,6 +79,42 @@ A source collection is defined using weights = list of weights for the sources :stop source: \endverbatim + +A simple example: +\verbatim +:start source definition: + :start source: + library = egs_point_source + name = p1 + position = -2 0 0 + :start spectrum: + type = monoenergetic + energy = 1 + :stop spectrum: + charge = 0 + :stop source: + :start source: + library = egs_point_source + name = p2 + position = 2 0 0 + :start spectrum: + type = monoenergetic + energy = 1 + :stop spectrum: + charge = 0 + :stop source: + :start source: + library = egs_source_collection + name = my_source + source names = p1 p2 + weights = 0.1 0.9 + :stop source: + + simulation source = my_source + +:stop source definition: +\endverbatim +\image html egs_source_collection.png "A simple example" */ class EGS_SOURCE_COLLECTION_EXPORT EGS_SourceCollection : public EGS_BaseSource { diff --git a/HEN_HOUSE/egs++/sources/egs_transformed_source/egs_transformed_source.h b/HEN_HOUSE/egs++/sources/egs_transformed_source/egs_transformed_source.h index 1e1acae22..0b5bc9aa6 100644 --- a/HEN_HOUSE/egs++/sources/egs_transformed_source/egs_transformed_source.h +++ b/HEN_HOUSE/egs++/sources/egs_transformed_source/egs_transformed_source.h @@ -23,7 +23,7 @@ # # Author: Iwan Kawrakow, 2005 # -# Contributors: +# Contributors: Reid Townson # ############################################################################### */ @@ -75,7 +75,7 @@ and the rotation \f$R\f$ of \f$T\f$ to the direction. A transformed source is defined as follows: \verbatim :start source: - library = egs_transformed source + library = egs_transformed_source name = some_name source name = the name of a previously defined source :start transformation: @@ -86,6 +86,37 @@ A transformed source is defined as follows: See EGS_AffineTransform::getTransformation() for details on the definition of an affine transformation. +A simple example: +\verbatim +:start source definition: + :start source: + library = egs_parallel_beam + name = my_parallel_source + :start shape: + library = egs_rectangle + rectangle = -.1 -.1 .1 .1 + :stop shape: + direction = 0 -1 0 + charge = 0 + :start spectrum: + type = monoenergetic + energy = 1.0 + :stop spectrum: + :stop source: + :start source: + library = egs_transformed_source + name = my_source + source name = my_parallel_source + :start transformation: + rotation vector = 0 -1 1 + :stop transformation: + :stop source: + + simulation source = my_source + +:stop source definition: +\endverbatim +\image html egs_transformed_source.png "A simple example" */ class EGS_TRANSFORMED_SOURCE_EXPORT EGS_TransformedSource : public EGS_BaseSource { diff --git a/HEN_HOUSE/egs++/sources/iaea_phsp_source/iaea_phsp_source.h b/HEN_HOUSE/egs++/sources/iaea_phsp_source/iaea_phsp_source.h index 6bafdcd82..de139737d 100644 --- a/HEN_HOUSE/egs++/sources/iaea_phsp_source/iaea_phsp_source.h +++ b/HEN_HOUSE/egs++/sources/iaea_phsp_source/iaea_phsp_source.h @@ -23,7 +23,7 @@ # # Author: Blake Walters, 2013 # -# Contributors: +# Contributors: Reid Townson # ############################################################################### */ @@ -86,6 +86,9 @@ An IAEA phase-space file source is defined as follows: iaea phase space file = base name of the phase space file (no extension) particle type = one of photons, electrons, positrons, all, or charged cutout = x1 x2 y1 y2 (optional) + weight window = wmin wmax, the min and max particle weights to use. If the particle weight is not in this range, it is rejected. (optional) + reuse photons = number of times to reuse each photon (optional) + reuse electrons = number of times to reuse each electron (optional) :stop source: \endverbatim The optional \c cutout key permits to set a rectangular cutout @@ -104,9 +107,26 @@ together with a transformation, the iaea phase-space source can reproduce the functionality of any iaea phase-space file based source in the RZ series of user codes and in DOSXYZnrc. +A simple example: +\verbatim +:start source definition: + :start source: + name = my_source + library = iaea_phsp_source + iaea phase space file = your phase space file (no extension) + particle type = all + cutout = -1 1 -2 2 + reuse photons = 10 + reuse electrons = 10 + :stop source: + + simulation source = my_source + +:stop source definition: +\endverbatim +\image html egs_phsp_source.png "A simple example" + \todo Fully implement latch filters -\todo Add weight window filter -\todo Add particle recycling (\em i.e. same particle returned Nrecycle times) */ class IAEA_PHSP_SOURCE_EXPORT IAEA_PhspSource : public EGS_BaseSource {