EGSnrc C++ class library
Report PIRS-898 (2021)
Iwan Kawrakow, Ernesto Mainegra-Hing, Frederic Tessier, Reid Townson and Blake Walters
|
A set of parallel planes. More...
#include <egs_planes.h>
Public Member Functions | |
~EGS_PlanesT () | |
EGS_PlanesT (int np, const EGS_Float *pos, const string &Name, const T &A) | |
Construct a parallel plane set with np planes at positions pos. | |
EGS_PlanesT (const vector< EGS_Float > &pos, const string &Name, const T &A) | |
Construct a parallel plane set from the positions given by pos. | |
EGS_PlanesT (EGS_Float xo, EGS_Float dx, int np, const string &Name, const T &A) | |
Construct a parallel plane set starting at xo with uniform distance between the np+1 planes given by dx. | |
EGS_Float * | getPositions () |
bool | isInside (const EGS_Vector &x) |
int | isWhere (const EGS_Vector &x) |
int | inside (const EGS_Vector &x) |
EGS_Float | howfarToOutside (int ireg, const EGS_Vector &x, const EGS_Vector &u) |
int | howfar (int ireg, const EGS_Vector &x, const EGS_Vector &u, EGS_Float &t, int *newmed=0, EGS_Vector *normal=0) |
EGS_Float | hownear (int ireg, const EGS_Vector &x) |
const string & | getType () const |
void | printInfo () const |
EGS_Float | position (int j) const |
EGS_Vector | normal () const |
Public Member Functions inherited from EGS_BaseGeometry | |
EGS_BaseGeometry (const string &Name) | |
Construct a geometry named Name. More... | |
virtual | ~EGS_BaseGeometry () |
Destructor. More... | |
bool | isConvex () const |
Is the geometry convex? More... | |
virtual EGS_Float | getVolume (int ireg) |
Calculates the volume of region ireg. More... | |
virtual EGS_Float | getBound (int idir, int ind) |
Returns region boundaries in direction determined by idir. More... | |
virtual int | getNRegDir (int idir) |
int | regions () const |
Returns the number of local regions in this geometry. More... | |
virtual bool | isRealRegion (int ireg) const |
Returnes true if ireg is a real region, false otherwise. More... | |
virtual int | medium (int ireg) const |
Returns the medium index in region ireg. More... | |
virtual int | getMaxStep () const |
Returns the maximum number of steps through the geometry. More... | |
virtual int | computeIntersections (int ireg, int n, const EGS_Vector &x, const EGS_Vector &u, EGS_GeometryIntersections *isections) |
Calculates intersection distances to region boundaries. More... | |
void | setMedium (const string &Name) |
Set all regions to a medium with name Name. More... | |
void | setMedium (int start, int end, const string &Name, int delta=1) |
Set every delta'th region between start and end to the medium named Name. More... | |
void | setMedium (int imed) |
Set all regions to a medium with index imed. More... | |
void | setMedium (int istart, int iend, int imed, int delta=1) |
Set every delta'th region between start and end (inclusive) to imed. More... | |
void | setMedia (EGS_Input *inp) |
Set the media in the geometry from the input pointed to by inp. More... | |
bool | hasRhoScaling () const |
Does this geometry object have a mass density scaling feature? More... | |
virtual EGS_Float | getRelativeRho (int ireg) const |
Get the relative mass density in region ireg. More... | |
virtual void | setRelativeRho (int start, int end, EGS_Float rho) |
Set the relative mass density in regions. More... | |
virtual void | setRelativeRho (EGS_Input *) |
Set the relative mass density from an user input. More... | |
EGS_Float | getMediumRho (int ind) const |
virtual void | setApplication (EGS_Application *app) |
bool | hasBScaling () const |
Does this geometry object have a B field scaling feature? | |
virtual EGS_Float | getBScaling (int ireg) const |
Get the B field scaling factor in region ireg. | |
virtual void | setBScaling (int start, int end, EGS_Float bf) |
Set the B field scaling factor in regions. More... | |
virtual void | setBScaling (EGS_Input *) |
Set the B field scaling factor from an user input. More... | |
const string & | getName () const |
Get the name of this geometry. More... | |
void | setDebug (bool deb) |
Turn debugging on. More... | |
void | setName (EGS_Input *inp) |
Set the name of the geometry from the input inp. More... | |
void | setBoundaryTolerance (EGS_Input *inp) |
Set the value of the boundary tolerance from the input inp. More... | |
void | setBoundaryTolerance (EGS_Float tol) |
Set the value of the boundary tolerance from argument. | |
virtual bool | hasBooleanProperty (int ireg, EGS_BPType prop) const |
Is the boolean property prop set for region ireg ? | |
virtual void | setBooleanProperty (EGS_BPType prop) |
Set the boolean properties of the entire geometry to prop. More... | |
virtual void | addBooleanProperty (int bit) |
Add a boolean property for the entire geometry by setting the bit'th bit. More... | |
virtual void | setBooleanProperty (EGS_BPType prop, int start, int end, int step=1) |
Set the boolean properties of every step'th region between start and end (inclusive) to prop. More... | |
virtual void | addBooleanProperty (int bit, int start, int end, int step=1) |
Add a boolean property to every step'th region between start and end (inclusive) by setting the bit'th bit. More... | |
int | ref () |
Increase the reference count to this geometry. More... | |
int | deref () |
Decrease the reference count to this geometry. More... | |
EGS_Float | getBoundaryTolerance () |
Get the value of the boundary tolerance. | |
virtual void | getNumberRegions (const string &str, vector< int > ®s) |
Get a list of all the regions labeled with a number. | |
virtual void | getLabelRegions (const string &str, vector< int > ®s) |
Get the list of all regions labeled with str. | |
virtual const string & | getLabelName (const int i) |
Get the name of the i-th explicit label in the geometry. | |
virtual int | getLabelCount () |
Get the number of explicit labels in the geometry. | |
int | setLabels (EGS_Input *input) |
Set the labels from an input block. | |
int | setLabels (const string &inp) |
Set the labels from an input string. | |
Protected Member Functions | |
void | checkIfUniform () |
Protected Member Functions inherited from EGS_BaseGeometry | |
virtual void | setMedia (EGS_Input *inp, int nmed, const int *med_ind) |
Set media. More... | |
Protected Attributes | |
EGS_Float * | p |
Plane positions. | |
EGS_Float | p_last |
The last plane. | |
EGS_Float | dp |
int | n_plane |
Number of planes - 1. | |
bool | is_uniform |
T | a |
The projection operator. | |
Protected Attributes inherited from EGS_BaseGeometry | |
int | nreg |
Number of local regions in this geometry. More... | |
string | name |
Name of this geometry. More... | |
short * | region_media |
Array of media indeces. More... | |
int | med |
Medium index. More... | |
bool | has_rho_scaling |
Does this geometry have relative mass density scvaling? More... | |
EGS_Float * | rhor |
Array with relative mass densities. More... | |
bool | has_B_scaling |
Does this geometry has B field scaling factor? More... | |
bool | has_Ref_rho |
EGS_Float * | bfactor |
Array with B field scaling factors. More... | |
EGS_Float | rhoRef |
Reference density for B field scaling. More... | |
int | nref |
Number of references to this geometry. More... | |
bool | debug |
Debugging flag. More... | |
bool | is_convex |
Is this geometry convex? More... | |
EGS_BPType | bproperty |
A bit mask of boolean properties for the entire geometry. More... | |
EGS_BPType * | bp_array |
An array of boolean properties on a region by region basis. More... | |
EGS_Float | boundaryTolerance |
Boundary tolerance for geometries that need it. | |
EGS_Float | halfBoundaryTolerance |
vector< label > | labels |
Labels. More... | |
EGS_Application * | app |
The application this object belongs to. | |
Additional Inherited Members | |
Static Public Member Functions inherited from EGS_BaseGeometry | |
static int | findRegion (EGS_Float xp, int np, const EGS_Float *p) |
Find the bin to which xp belongs, given np bin edges p. More... | |
static int | nMedia () |
Get the number of media registered so far by all geometries. More... | |
static const char * | getMediumName (int ind) |
Get the name of medium with index ind. More... | |
static int | addMedium (const string &medname) |
Add a medium or get the index of an existing medium. More... | |
static int | getMediumIndex (const string &medname) |
Get the index of a medium named medname. More... | |
static EGS_BaseGeometry * | createGeometry (EGS_Input *) |
Create a geometry (or geometries) from a given input. More... | |
static EGS_BaseGeometry * | createSingleGeometry (EGS_Input *inp) |
Create a single geometry from the input inp. More... | |
static void | clearGeometries () |
Clears (deletes) all geometries in the currently active geometry list. More... | |
static EGS_BaseGeometry * | getGeometry (const string &Name) |
Get a pointer to the geometry named Name. More... | |
static EGS_BaseGeometry ** | getGeometries () |
static int | getNGeometries () |
static string | getUniqueName () |
Get a unique geometry name. More... | |
static void | describeGeometries () |
Describes all existing geometries. More... | |
static void | setActiveGeometryList (int list) |
Set the currently active geometry list. More... | |
static int | getLastError () |
static void | resetErrorFlag () |
Static Protected Attributes inherited from EGS_BaseGeometry | |
static int | error_flag = 0 |
Set to non-zero status if a geometry problem is encountered. | |
A set of parallel planes.
This template class implements the geometry methods for a set of one or more parallel planes, which divide space into 1 or more regions. The reason for using a template to generate separate classes for x-, y- and z-planes and planes in any direction is efficiency: to calculate the distance or the minimum perpendicular distance to a plane one requires the scalar products and where is the plane normal and and are particle position and direction. In the general case (plane normal in any direction) each of these products require 5 floating point operations. In the special case of x-, y- and z-planes they are calculated with a single assignment. The calculation of the scalar products is done by a projector object in the template class. In the case of a projector onto the x-, y- or z-planes this is a single assignement.
The additional key-value pairs needed to construct a set of planes are
library = egs_planes type = EGS_Xplanes or EGS_Yplanes or EGS_Zplanes or EGS_Planes positions = list of plane co-ordinates normal = ax, ay, az (only needed for type = EGS_Planes)
The plane positions are defined from , where is a position on the 'th plane. An alternative definition of the plane position is to use
library = egs_planes first plane = position of the first plane slab thickness = dx1, dx2, ..., dxn number of slabs = n1, n2, ..., nn
which defines the set of planes to start at the position specified by the first plane
key, followed by n1
planes that are dx1
apart, n2 planes that are dx2
apart, etc. This is more convenient for defininig a regular grid with a large number of planes.
It is worth noting that a set of planes defines regions, except for , where a single region is defined (the side of the plane that the plane normal points to).
Parallel planes are used in almost all of the example geometries provided with the distribution.
A simple example:
:start geometry definition: # The base geometry, this will be the Chopping Device (CD) # The base geometry can be any geometry, even a composite one :start geometry: name = my_cd_planes library = egs_planes type = EGS_Zplanes positions = -3 3 # No media required :stop geometry: :start geometry: name = my_cd_cylinder library = egs_cylinders type = EGS_ZCylinders radii = 1.6 2 :start media input: media = air water set medium = 1 1 :stop media input: :stop geometry: # The composite geometry :start geometry: name = my_cd library = egs_cdgeometry base geometry = my_cd_planes # set geometry = 1 geom means: # "in region 1 of the basegeometry, use geometry "geom" set geometry = 0 my_cd_cylinder # The final region numbers are attributed by the cd geometry object; # Use the viewer to determine region numbers :stop geometry: simulation geometry = my_cd :stop geometry definition:
Definition at line 166 of file egs_planes.h.
EGS_PlanesT< T >::~EGS_PlanesT | ( | ) |
Destructor.
Definition at line 199 of file egs_planes.h.
|
virtual |
Implements the isInside
() method for a set of parallel planes
Implements EGS_BaseGeometry.
Definition at line 292 of file egs_planes.h.