EGSnrc C++ class library
Report PIRS-898 (2021)
Iwan Kawrakow, Ernesto Mainegra-Hing, Frederic Tessier, Reid Townson and Blake Walters
|
A source that adds additional Gaussian angular spread to another source. More...
#include <egs_angular_spread_source.h>
Public Member Functions | |
EGS_AngularSpreadSource (EGS_Input *, EGS_ObjectFactory *f=0) | |
EGS_I64 | getNextParticle (EGS_RandomGenerator *rndm, int &q, int &latch, EGS_Float &E, EGS_Float &wt, EGS_Vector &x, EGS_Vector &u) |
EGS_Float | getEmax () const |
EGS_Float | getFluence () const |
bool | storeState (ostream &data) const |
bool | setState (istream &data) |
bool | addState (istream &data_in) |
void | resetCounter () |
bool | isValid () const |
Public Member Functions inherited from EGS_BaseSource | |
EGS_BaseSource (const string &Name="", EGS_ObjectFactory *f=0) | |
Construct a source named Name. More... | |
EGS_BaseSource (EGS_Input *input, EGS_ObjectFactory *f=0) | |
Construct a source from the input pointed to by inp. More... | |
const char * | getSourceDescription () const |
Get a short description of this source. More... | |
virtual void | setSimulationChunk (EGS_I64 nstart, EGS_I64 nrun) |
Set the next simulation chunk to start at nstart and to consist of nrun particles. More... | |
virtual int | getCharge () const |
Get the charge of the source. More... | |
virtual EGS_Float | getMu () |
Public Member Functions inherited from EGS_Object | |
EGS_Object (const string &Name="", EGS_ObjectFactory *f=0) | |
Create an EGS_Object named Name belonging to the object factory f. More... | |
EGS_Object (EGS_Input *inp, EGS_ObjectFactory *f=0) | |
Create an EGS_Object from the information pointed to by inp that belongs to object factory f. More... | |
const string & | getObjectName () const |
Get the object name. | |
void | setObjectName (const string &Name) |
Set the object name to Name. | |
const string & | getObjectType () const |
Get the object type. | |
virtual EGS_Object * | createObject (EGS_Input *inp) |
Create an object from the infromation pointed to by inp. More... | |
void | setName (EGS_Input *inp) |
Set the name of the object from the information provided by inp. More... | |
int | ref () |
Increase the reference count to this object. | |
int | deref () |
Decrease the reference count to this object. | |
void | setFactory (EGS_ObjectFactory *f) |
Set the factory to which the object belongs. More... | |
Protected Member Functions | |
void | setUp () |
Protected Attributes | |
EGS_BaseSource * | source |
The source being transformed. | |
EGS_Float | sigma |
Protected Attributes inherited from EGS_BaseSource | |
string | description |
A short source description. More... | |
Protected Attributes inherited from EGS_Object | |
string | name |
The object name. | |
string | otype |
The object type. | |
int | nref |
Number of references to the object. | |
EGS_ObjectFactory * | factory |
The factory this object belongs to. | |
Additional Inherited Members | |
Static Public Member Functions inherited from EGS_BaseSource | |
static EGS_BaseSource * | createSource (EGS_Input *) |
Create sources from the information pointed to by input. More... | |
static EGS_BaseSource * | getSource (const string &Name) |
Get a pointer to the source named Name. More... | |
static void | addKnownSource (EGS_BaseSource *o) |
Add a known source object to the source factory. More... | |
static void | addKnownTypeId (const char *name) |
Add a known source object typeid to the source factory. More... | |
Static Public Member Functions inherited from EGS_Object | |
static string | getUniqueName (const EGS_Object *o=0) |
Create and return a unique object name. More... | |
static void | deleteObject (EGS_Object *o) |
Delete an object. More... | |
A source that adds additional Gaussian angular spread to another source.
An angular spread source is a source that takes a particle from any other source and then applies a rotation to the particle direction by an angle sampled from a Gaussian distribution with user defined width. This source is defined as follows:
:start source: library = egs_angular_spread_source name = some_name source name = the name of a previously defined source sigma = angular_spread_in_degrees :stop source:
The 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:
: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:
Definition at line 119 of file egs_angular_spread_source.h.