Skip to content

Fix #512: pegsless error reading media consisting of a single element. #1182

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 42 commits into
base: develop
Choose a base branch
from

Conversation

blakewalters
Copy link
Contributor

Addresses #512

ftessier and others added 30 commits August 2, 2023 17:32
Authors of the EGSnrc files are unequivocally identified in the git
commit log. However, we also want to preserve the names of authors and
contributors inside text files headers, as much as possible, in case the
files are extracted from the repository (or the repository eventually
moves to another version control system).

This script compares, for each modified file in a commit range (passed
as the first argument, master..HEAD by default), the commit authors of
the file against the authors and contributors listed in the file header.
It reports the missing names, and returns 1 (error) if some authors are
missing, or 0 (success) otherwise. Binary files are excluded from the
comparison, as well as files that do not contain authorship information.
The latter are reported at the end of the output, skipping over files
that do not contain author information (e.g., image files).

This script is intended to run automatically as a github action. It
implies that all commit authors should be listed under "Contributors",
regardless of the significance of the contribution, so that the script
runs cleanly. The output of the github action should always be inspected
before merging to check the files that don't contain authorship
information.
Clarify that multiple-scattering transport is triggered only if the
intended electron step is longer than a skin depth, even in bulk media
away from any region boundaries. This improves efficiency, because a
multiple-scattering step costs about the same as 3 single-scattering
steps (the default skin depth is 3 mean free paths). Below a skin depth,
it is more efficient (and more accurate) to use single-scattering.
Fix the output message in the egslst file for BEAMnrc simulations about
the number of brems events the took place. When DBS was turned on, it
would always read zero.
Fix a bug in egs_phsp_scoring where the electron energy for IAEA
phase-spaces was written as the total energy instead of the kinetic
energy. This was a critical bug.
Fix a bug where the source collection fluence was not calculated
properly when multiple transformations were performed on a single base
source.
The documentation in the source code for core EGSnrc parameters options
is updated match HEN_HOUSE/src/get_inputs.mortran
This fix divides phase space sources used in parallel runs into
npar*nchunk equal segments, where npar is the number of parallel runs
and nchunk is the number of chunks (defaults to 10). Each chunk of the
parallel run is then assigned its own segment of the phase space source
outside of which it will not sample. This scheme, identical to that used
in the EGSnrc mortran codes, should ensure relatively even sampling of
the phase space source over the entire parallel run.
Any remaining histories after completion of npar*nchunk simulations
chunks reuse particles from the last segment of the phase space file.
Fix typo in hownear when particle in bounding box determining which
of the repeated geometries to check:

Using nz rather than nxy when computing index of repeated geometry array
results in addressing array index out of bounds with subsequent
segfault error.

Showed when electron transport turned ON up during dose calculations
around a CivaDot source using egs_dose_scoring and egs_app and 2 microns
regions.

It did not affect photon-only nor egs_kerma calculations since there is
no call to hownear. ;-)
Fix a bug in egs_circle_perpendicular that made the geometry invalid for
any cases where the circle was expected to face away from the z-axis.
 Changes to be committed:
	modified:   egs++/ausgab_objects/egs_fluence_scoring/egs_fluence_scoring.h
- Added virtual methods setRussianRoulette and splitTopParticleIsotropically
  needed by the radiative splitting object.

 Changes to be committed:
	modified:   egs++/egs_application.h
- Added two new methods needed by the radiative splitting object and
  provided more information in comments.

- Turn ON/OFF EGSnrc internal radiative splitting (UBS)
  void setRadiativeSplitting( const EGS_Float &nsplit );

- Turn ON/OFF EGSnrc internal Russian Roultette + UBS
  void setRussianRoulette( const EGS_Float &iSwitchRR );

- Split particle uniformly in 4Pi
  void splitTopParticleIsotropically( const EGS_Float &fsplit );

 Changes to be committed:
	modified:   egs++/egs_advanced_application.h
- Added two new methods needed by the radiative splitting object and
  provided more information in comments.

- Turn ON/OFF EGSnrc internal radiative splitting (UBS)
  void setRadiativeSplitting( const EGS_Float &nsplit );

- Turn ON/OFF EGSnrc internal Russian Roultette + UBS
  void setRussianRoulette( const EGS_Float &iSwitchRR );

- Split particle uniformly in 4Pi
  void splitTopParticleIsotropically( const EGS_Float &fsplit );

 Changes to be committed:
	modified:   egs++/egs_advanced_application.cpp
mainegra and others added 12 commits September 4, 2024 14:47
Initial radiative splitting naively just turned ON EGSnrc internal
flag nbr_split to split brems and annihilation events uniformly.
However no charged particle RR was played after pair production (i_play_RR)
nor were secondary photons, produced by charged particles surviving RR after
bremsstrahlung, split.
--------------------
Radiative splitting:
--------------------
now turned ON before a bremsstrahlung event for a primary or a fat charged
particle. It is turned OFF after the brems event to avoid higher order
splitting. Fluorescent fat photons, generated by fat charged particles
(survived RR) are also split.

NOTE: Not done for annihilation yet! Coming up!

This time RR is turned ON using EGSnrc internal flag i_play_RR so that RR is
played after pair events. RR can be turned OFF by entering a negative splitting number.

NOTE2: Brems events play RR intrinsically hence it can't be turned OFF.
       Setting i_plpay_RR affects pair production ONLY.

 Changes to be committed:
	modified:   egs++/ausgab_objects/egs_radiative_splitting/egs_radiative_splitting.cpp
	modified:   egs++/ausgab_objects/egs_radiative_splitting/egs_radiative_splitting.h
- Split annihilation in flight and at rest events for primary and fat positrons.
This gets rid of compilation warnings that LITTLE_ENDIAN, BIG_ENDIAN,
and PDP_ENDIAN were already defined on macOS.
Add a new case for aarch64 in the config guess script. The
-mcmodel=medium option is not available on ARM architecture, so this is
handled. Some of the programs fail to build on aarch64 without setting
-Wno-narrowing compiler option, so this is added.
* setup.sh is called when container is created. It installs required
  packages and performs the EGSnrc configuration

* build-gui-apps.sh is called after the container is created and builds
  the GUI apps. It relies upon the configuration being created and
  the .bashrc having been setup

* .gitignore is updated to ignore the files created when building the
  devcontainer configuration. Also added additional QT conf files that
  are generated during build

* README.md provides some basic documentation about using devcontainer
Fix a bug in the field definition pop-up window for dynamic and sync
jaws in beamnrc_gui. The GUI would display an error about a bad window
parent.

Rebase on develop
@blakewalters blakewalters requested a review from a team as a code owner September 6, 2024 22:02
@blakewalters
Copy link
Contributor Author

blakewalters commented Sep 6, 2024

This issue was caused by erroneously throwing an error when any input between the :start/stop media definition: delimiters or in the material data file was 1 character long. It can be traced back to the fact that the subroutine GET_INPUT_PLUS, used to read media inputs, is heavily based on (i.e. some blocks directly copied from) GET_INPUT, the routine used to read general .egsinp parameters. GET_INPUT allows for the input of a "TITLE" string for which the check on single character input is relevant (I think). But the "TITLE" input is not relevant for media inputs, so I've also stripped all references to this input parameter.

@rtownson rtownson changed the title Fix pegsless error reading media consisting of a single element. Fix #512: pegsless error reading media consisting of a single element. Sep 9, 2024
@rtownson rtownson added the bug label Sep 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants