An open source method of characteristics neutron transport code.
TrackGenerator3D Class Reference

The TrackGenerator3D is dedicated to generating and storing Tracks which cyclically wrap across the Geometry in three dimensions. More...

#include "src/TrackGenerator3D.h"

Public Member Functions

 TrackGenerator3D (Geometry *geometry, int num_azim, int num_polar, double azim_spacing, double z_spacing)
 Constructor for the TrackGenerator3D assigns default values. More...
 
virtual ~TrackGenerator3D ()
 Destructor frees memory for all Tracks.
 
int getNumPolar ()
 Return the number of polar angles in $ [0, \pi] $. More...
 
double getDesiredZSpacing ()
 Return the track polar spacing (cm). More...
 
long getNumTracks ()
 Return the total number of 3D Tracks across the Geometry. More...
 
long getNumSegments ()
 Return the total number of Track segments across the Geometry. More...
 
long getNum3DTracks ()
 Return the total number of 3D Tracks across the Geometry. More...
 
long getNum3DSegments ()
 Return the total number of 3D Track segments across the Geometry. More...
 
Track3D **** get3DTracks ()
 Get the array of 3D Tracks, only used in EXPLICT-3D ray tracing. More...
 
double getZSpacing (int azim, int polar)
 Returns the spacing between tracks in the axial direction for the requested azimuthal angle index and polar angle index. More...
 
int getNumRows ()
 Returns the number of rows in the temporary segment storage matrix. More...
 
int getNumColumns ()
 Returns the number of columns in the temporary segment storage matrix. More...
 
segmentgetTemporarySegments (int thread_id)
 Returns an array of temporary segments for use in on-the-fly computations. More...
 
Track3DgetTemporary3DTracks (int thread_id)
 Returns an array of temporary 3D Tracks for use in on-the-fly computations. More...
 
Track ** getTemporaryTracksArray (int thread_id)
 Returns an array of pointers to temporary Tracks for use in on-the-fly computations. More...
 
int getNumZ (int azim, int polar)
 Returns the number of 3D Tracks in the z-direction for a given azimuthal angle index and polar angle index. More...
 
int getNumL (int azim, int polar)
 Returns the number of 3D Tracks in the radial direction for a given azimuthal angle index and polar angle index. More...
 
int *** getTracksPerStack ()
 Returns a 3D array of the number of 3D Tracks in each z-stack. More...
 
int getMaxNumTracksPerStack ()
 Returns the maximum number of tracks in a single stack. More...
 
bool containsTracks ()
 Returns whether or not the TrackGenerator contains Tracks for its current number of azimuthal angles, track spacing and geometry. More...
 
bool containsSegments ()
 Returns whether or not the TrackGenerator contains 3D segments for its current number of azimuthal angles, track spacing and geometry. More...
 
bool containsTemporaryTracks ()
 Returns whether or not the TrackGenerator contains an allocation for temporary Tracks to be filled on-the-fly.
 
long get3DTrackID (TrackStackIndexes *tsi)
 Returns the 3D Track ID based on its indexes. More...
 
void convertTCItoTSI (TrackChainIndexes *tci, TrackStackIndexes *tsi)
 Converts TrackChainIndexes to TrackStackIndexes. More...
 
void convertTSItoTCI (TrackStackIndexes *tsi, TrackChainIndexes *tci)
 Converts TrackStackIndexes to TrackChainIndexes. More...
 
int getLinkIndex (TrackChainIndexes *tci)
 Returns the index into the chain based on chain indexes. More...
 
int getNum3DTrackChainLinks (TrackChainIndexes *tci)
 Calculates the number of Tracks in the l-z traversal. More...
 
void getTSIByIndex (long id, TrackStackIndexes *tsi)
 Updates stack indexes to reflect those from the given Track ID. More...
 
void getTrackOTF (Track3D *track, TrackStackIndexes *tsi)
 Updates the provided Track with the correct information based on the Track indexes. More...
 
void setNumPolar (int num_polar)
 Set the number of polar angles in $ [0, \pi] $. More...
 
void setDesiredZSpacing (double spacing)
 Set the suggested track polar spacing (cm). More...
 
void setSegmentFormation (segmentationType segmentation_type)
 Set the type of segmentation used for segment formation. More...
 
void setSegmentationZones (std::vector< double > z_mesh)
 Sets the z-planes over which 2D segmentation is performed for on-the-fly calculations. More...
 
void setLinkingTracks (TrackStackIndexes *tsi, TrackChainIndexes *tci, bool outgoing, Track3D *track)
 Fills the provided 3D Track with its linking information. More...
 
void setLinkIndex (TrackChainIndexes *tci, TrackStackIndexes *tsi)
 Updates the index into the 3D chain based on chain and stack indexes. More...
 
void useGlobalZMesh ()
 Sets a global z-mesh to use during axial on-the-fly ray tracing. More...
 
void retrieveTrackCoords (double *coords, long num_tracks)
 Fills an array with the x,y,z coordinates for each Track. More...
 
void retrieve3DTrackCoords (double *coords, long num_tracks)
 Fills an array with the x,y,z coordinates for each Track. More...
 
void retrieveGlobalZMesh (double *&z_mesh, int &num_fsrs)
 Provides the global z-mesh and size if available. More...
 
void retrieveSingle3DTrackCoords (double coords[6], long track_id)
 Fills an array with the x,y,z coordinates for a given track. More...
 
void retrieveSegmentCoords (double *coords, long num_segments)
 Fills an array with the x,y,z coordinates for each Track segment. More...
 
void retrieve3DSegmentCoords (double *coords, long num_segments)
 Fills an array with the x,y coordinates for each Track segment. More...
 
void create3DTracksArrays ()
 Allocates memory for 3D Tracks. More...
 
void checkBoundaryConditions ()
 Checks the boundary conditions for all 3D surfaces for inconsistent periodic boundary conditions.
 
- Public Member Functions inherited from TrackGenerator
 TrackGenerator (Geometry *geometry, int num_azim, double azim_spacing)
 Constructor for the TrackGenerator assigns default values. More...
 
virtual ~TrackGenerator ()
 Destructor frees memory for all Tracks.
 
int getNumAzim ()
 Return the number of azimuthal angles in $ [0, 2\pi] $. More...
 
double getDesiredAzimSpacing ()
 Return the track azimuthal spacing (cm). More...
 
GeometrygetGeometry ()
 Return the Geometry for this TrackGenerator if one has been set. More...
 
long getNum2DTracks ()
 Return the total number of 2D Tracks across the Geometry. More...
 
long getNum2DSegments ()
 Return the total number of 2D Track segments across the Geometry. More...
 
void countSegments ()
 Counts the number of segments for each Track in the Geometry. More...
 
bool getPeriodic ()
 Returns whether periodic boundaries are present in Track generation. More...
 
Track ** get2DTracksArray ()
 Returns an array of the Track pointers by increasing UID. More...
 
Track ** getTracksArray ()
 Returns an array of the Track pointers by increasing UID. More...
 
Track ** get2DTracks ()
 Returns a 2D jagged array of the 2D Tracks. More...
 
FP_PRECISION getMaxOpticalLength ()
 Calculates and returns the maximum optical length for any segment in the Geometry. More...
 
int getMaxNumSegments ()
 Returns the maximum number of segments along a single track. More...
 
int getNumThreads ()
 Returns the number of shared memory OpenMP threads in use. More...
 
int getNumX (int azim)
 Returns the number of 2D Tracks in the x-direction for a given azimuthal angle index. More...
 
int getNumY (int azim)
 Returns the number of 2D Tracks in the y-direction for a given azimuthal angle index. More...
 
void exportFSRVolumes (double *out_volumes, int num_fsrs)
 FSR volumes are copied to an array input by the user. More...
 
void initializeVolumes ()
 Computes the volumes/areas of each Cell and Material in the Geometry. More...
 
void initializeFSRVolumesBuffer ()
 Initialize an array to contain the FSR volumes.
 
FP_PRECISION * getFSRVolumesBuffer ()
 Return the array used to store the FSR volumes. More...
 
FP_PRECISION * getFSRVolumes ()
 Computes and returns an array of volumes indexed by FSR. More...
 
FP_PRECISION getFSRVolume (long fsr_id)
 Returns the volume of an FSR. More...
 
double getZCoord ()
 Returns the z-coord of the radial plane used in 2D calculations. More...
 
QuadraturegetQuadrature ()
 Returns the Quadrature object. More...
 
FP_PRECISION retrieveMaxOpticalLength ()
 Retrieves the max optical path length of 3D segments for use in on-the-fly computation. More...
 
omp_lock_t * getFSRLocks ()
 Return the array of FSR locks for atomic FSR operations. More...
 
segmentationType getSegmentFormation ()
 Returns the type of ray tracing used for segment formation. More...
 
int get2DTrackID (int a, int x)
 Get the id of a 2D Track based on its azimuthal angle and index in the azimuthal stack. More...
 
long * getTracksPerAzim ()
 Return the number of tracks for each azimuthal angle. More...
 
void setNumThreads (int num_threads)
 Sets the number of shared memory OpenMP threads to use (>0). More...
 
void setNumAzim (int num_azim)
 Set the number of azimuthal angles in $ [0, 2\pi] $. More...
 
void setDesiredAzimSpacing (double spacing)
 Set the suggested azimuthal track spacing (cm). More...
 
void setGeometry (Geometry *geometry)
 Set a pointer to the Geometry to use for track generation. More...
 
void setZCoord (double z_coord)
 Sets the z-coord of the radial plane used in 2D calculations. More...
 
void setQuadrature (Quadrature *quadrature)
 Sets the Quadrature used for integrating the MOC equations. More...
 
void setMaxOpticalLength (FP_PRECISION tau)
 Sets the max optical path length of 3D segments for use in on-the-fly computation. More...
 
void setMaxNumSegments (int max_num_segments)
 Sets the maximum number of segments per Track. More...
 
void setDumpSegments (bool dump_segments)
 Sets a flag to record all segment information in the tracking file. More...
 
void retrieve2DTrackCoords (double *coords, long num_tracks)
 Fills an array with the x,y,z coordinates for each Track. More...
 
void retrieve2DSegmentCoords (double *coords, long num_segments)
 Fills an array with the x,y,z coordinates for each Track segment. More...
 
void generateFSRCentroids (FP_PRECISION *FSR_volumes)
 Generates the numerical centroids of the FSRs. More...
 
void generateTracks ()
 Generates tracks for some number of azimuthal angles and track spacing. More...
 
void splitSegments (FP_PRECISION max_optical_length)
 Splits Track segments into sub-segments for a user-defined maximum optical length for the problem. More...
 
double leastCommonMultiple (double a, double b)
 Calculates the least common multiple of two numbers a and b. More...
 
void dumpSegmentsToFile ()
 Writes all Track and segment data to a "*.tracks" binary file. More...
 
bool readSegmentsFromFile ()
 Reads Tracks in from a "*.tracks" binary file. More...
 
void initializeTrackFileDirectory ()
 This method creates a directory to store Track files, and reads in ray tracing data for Tracks and segments from a Track file if one exists. More...
 
void initializeTracksArray ()
 Creates a Track array by increasing uid. More...
 
void printTimerReport (bool mpi_reduce)
 Print the track generation timer report. More...
 
void printMemoryReport ()
 Print the track generation memory report.
 

Additional Inherited Members

- Protected Member Functions inherited from TrackGenerator
void initializeTrackReflections ()
 Initializes 2D Track reflections. More...
 
- Protected Attributes inherited from TrackGenerator
int _num_threads
 
int _num_azim
 
double _azim_spacing
 
int _num_2D_tracks
 
int * _num_x
 
int * _num_y
 
long * _tracks_per_azim
 
Track ** _tracks_2D
 
Track ** _tracks_2D_array
 
Geometry_geometry
 
bool _use_input_file
 
std::string _tracks_filename
 
omp_lock_t * _FSR_locks
 
bool _contains_2D_tracks
 
bool _contains_2D_segments
 
Quadrature_quadrature
 
double _z_coord
 
bool _periodic
 
segmentationType _segment_formation
 
FP_PRECISION _max_optical_length
 
int _max_num_segments
 
bool _dump_segments
 
bool _segments_centered
 
FP_PRECISION * _FSR_volumes
 
Timer_timer
 
double _x_min
 
double _y_min
 
double _z_min
 
double _x_max
 
double _y_max
 
double _z_max
 

Detailed Description

The TrackGenerator3D is dedicated to generating and storing Tracks which cyclically wrap across the Geometry in three dimensions.

The TrackGenerator creates Track and initializes boundary conditions (vacuum, reflective, or periodic) for each Track in three dimensions.

Constructor & Destructor Documentation

◆ TrackGenerator3D()

TrackGenerator3D::TrackGenerator3D ( Geometry geometry,
int  num_azim,
int  num_polar,
double  azim_spacing,
double  z_spacing 
)

Constructor for the TrackGenerator3D assigns default values.

Parameters
geometrya pointer to a Geometry object
num_azimnumber of azimuthal angles in $ [0, 2\pi] $
num_polarnumber of polar angles in $ [0, \pi] $
azim_spacingtrack azimuthal spacing (cm)
z_spacingtrack axial spacing (cm)

Member Function Documentation

◆ containsSegments()

bool TrackGenerator3D::containsSegments ( )
virtual

Returns whether or not the TrackGenerator contains 3D segments for its current number of azimuthal angles, track spacing and geometry.

Returns
true if the TrackGenerator conatains 3D segments; false otherwise

Reimplemented from TrackGenerator.

◆ containsTracks()

bool TrackGenerator3D::containsTracks ( )
virtual

Returns whether or not the TrackGenerator contains Tracks for its current number of azimuthal angles, track spacing and geometry.

Returns
true if the TrackGenerator conatains Tracks; false otherwise

Reimplemented from TrackGenerator.

◆ convertTCItoTSI()

void TrackGenerator3D::convertTCItoTSI ( TrackChainIndexes tci,
TrackStackIndexes tsi 
)

Converts TrackChainIndexes to TrackStackIndexes.

Parameters
tciThe TrackChainIndexes of the 3D Track
tsiThe TrackStackIndexes of the 3D Track to be updated

◆ convertTSItoTCI()

void TrackGenerator3D::convertTSItoTCI ( TrackStackIndexes tsi,
TrackChainIndexes tci 
)

Converts TrackStackIndexes to TrackChainIndexes.

Parameters
tsiThe TrackStackIndexes of the 3D Track
tciThe TrackChainIndexes of the 3D Track to be updated

◆ create3DTracksArrays()

void TrackGenerator3D::create3DTracksArrays ( )

Allocates memory for 3D Tracks.

Before calling this function, the number of tracks per z-stack should be known and initialized in the _tracks_per_stack 3D array

◆ get3DTrackID()

long TrackGenerator3D::get3DTrackID ( TrackStackIndexes tsi)

Returns the 3D Track ID based on its indexes.

Parameters
tsiThe indexes of the Track of interest (azimuthal, xy track, polar, and z stack)

◆ get3DTracks()

Track3D **** TrackGenerator3D::get3DTracks ( )

Get the array of 3D Tracks, only used in EXPLICT-3D ray tracing.

Returns
a pointer to the array of 3D Tracks

◆ getDesiredZSpacing()

double TrackGenerator3D::getDesiredZSpacing ( )

Return the track polar spacing (cm).

This will return the user-specified track spacing and NOT the effective track spacing which is computed and used to generate cyclic tracks.

Returns
the track polar spacing (cm)

◆ getLinkIndex()

int TrackGenerator3D::getLinkIndex ( TrackChainIndexes tci)

Returns the index into the chain based on chain indexes.

Parameters
tciThe chain indexes
Returns
the index into the 3D z-stack

◆ getMaxNumTracksPerStack()

int TrackGenerator3D::getMaxNumTracksPerStack ( )

Returns the maximum number of tracks in a single stack.

Returns
the maximum number of tracks

◆ getNum3DSegments()

long TrackGenerator3D::getNum3DSegments ( )

Return the total number of 3D Track segments across the Geometry.

Returns
the total number of 3D Track segments

◆ getNum3DTrackChainLinks()

int TrackGenerator3D::getNum3DTrackChainLinks ( TrackChainIndexes tci)

Calculates the number of Tracks in the l-z traversal.

Parameters
tciThe chain indexes
Returns
the number of Tracks in the l-z traversal

◆ getNum3DTracks()

long TrackGenerator3D::getNum3DTracks ( )

Return the total number of 3D Tracks across the Geometry.

Returns
the total number of 3D Tracks

◆ getNumColumns()

int TrackGenerator3D::getNumColumns ( )

Returns the number of columns in the temporary segment storage matrix.

For on-the-fly computation, a matrix of temporary segments is allocated for each thread. This matrix is indexed by the z-stack index (row) and the segment number (column). The number of columns is equal to the maximum number of segments per Track at the time of allocation.

Returns
the number of columns in the temporary segment storage matrix

◆ getNumL()

int TrackGenerator3D::getNumL ( int  azim,
int  polar 
)

Returns the number of 3D Tracks in the radial direction for a given azimuthal angle index and polar angle index.

Parameters
azimthe azimuthal angle index
polarthe polar angle index
Returns
the number of 3D Tracks in the radial direction of the Geometry

◆ getNumPolar()

int TrackGenerator3D::getNumPolar ( )

Return the number of polar angles in $ [0, \pi] $.

Returns
the number of polar angles in $ [0, \pi] $

◆ getNumRows()

int TrackGenerator3D::getNumRows ( )

Returns the number of rows in the temporary segment storage matrix.

For on-the-fly computation, a matrix of temporary segments is allocated for each thread. This matrix is indexed by the z-stack index (row) and the segment number (column). For ray tracing by individual Tracks the number of rows is always one since temporary segments only need to be stored for one Track at a time.

Returns
the number of rows in the temporary segment storage matrix

◆ getNumSegments()

long TrackGenerator3D::getNumSegments ( )
virtual

Return the total number of Track segments across the Geometry.

Returns
the total number of Track segments

Reimplemented from TrackGenerator.

◆ getNumTracks()

long TrackGenerator3D::getNumTracks ( )
virtual

Return the total number of 3D Tracks across the Geometry.

Returns
the total number of 3D Tracks

Reimplemented from TrackGenerator.

◆ getNumZ()

int TrackGenerator3D::getNumZ ( int  azim,
int  polar 
)

Returns the number of 3D Tracks in the z-direction for a given azimuthal angle index and polar angle index.

Parameters
azimthe azimuthal angle index
polarthe polar angle index
Returns
the number of 3D Tracks in the z-direction of the Geometry

◆ getTemporary3DTracks()

Track3D * TrackGenerator3D::getTemporary3DTracks ( int  thread_id)

Returns an array of temporary 3D Tracks for use in on-the-fly computations.

Parameters
thread_idThe thread ID, as assigned by OpenMP

◆ getTemporarySegments()

segment * TrackGenerator3D::getTemporarySegments ( int  thread_id)

Returns an array of temporary segments for use in on-the-fly computations.

For on-the-fly computation, a matrix of temporary segments is allocated for each thread. This matrix is indexed by the z-stack index (row) and the segment number (column). The row index should be one if temporary segments are only required for one Track at a given time. If the segmentation method is not an on-the-fly method, NULL is returned.

Parameters
thread_idThe thread ID, as assigned by OpenMP
Returns
a pointer to the array of temporary segments

◆ getTemporaryTracksArray()

Track ** TrackGenerator3D::getTemporaryTracksArray ( int  thread_id)

Returns an array of pointers to temporary Tracks for use in on-the-fly computations.

Parameters
thread_idThe thread ID, as assigned by OpenMP

◆ getTrackOTF()

void TrackGenerator3D::getTrackOTF ( Track3D track,
TrackStackIndexes tsi 
)

Updates the provided Track with the correct information based on the Track indexes.

Parameters
trackThe 3D Track whose information is updated
tsiThe indexes of the 3D Track

◆ getTracksPerStack()

int *** TrackGenerator3D::getTracksPerStack ( )

Returns a 3D array of the number of 3D Tracks in each z-stack.

A 3D array is returned indexed first by azimuthal angle, second by 2D track number, and third by polar angle. This array describes the number of tracks in each z-stack.

Returns
A 3D array of the number of tracks in each z-stack

◆ getTSIByIndex()

void TrackGenerator3D::getTSIByIndex ( long  id,
TrackStackIndexes tsi 
)

Updates stack indexes to reflect those from the given Track ID.

Parameters
idThe 3D Track ID
tsiThe stack indexes to be updated

◆ getZSpacing()

double TrackGenerator3D::getZSpacing ( int  azim,
int  polar 
)

Returns the spacing between tracks in the axial direction for the requested azimuthal angle index and polar angle index.

Parameters
azimthe requested azimuthal angle index
polarthe requested polar angle index
Returns
the effective axial spacing

◆ retrieve3DSegmentCoords()

void TrackGenerator3D::retrieve3DSegmentCoords ( double *  coords,
long  num_segments 
)

Fills an array with the x,y coordinates for each Track segment.

This class method is intended to be called by the OpenMOC Python "plotter" module as a utility to assist in plotting segments. Although this method appears to require two arguments, in reality it only requires one due to SWIG and would be called from within Python as follows:

num_segments = track_generator.getNum3DSegments()
coords = track_generator.retrieve3DSegmentCoords(num_segments*7)
Parameters
coordsan array of coords of length 7 times the number of segments
num_segmentsthe total number of Track segments

◆ retrieve3DTrackCoords()

void TrackGenerator3D::retrieve3DTrackCoords ( double *  coords,
long  num_tracks 
)

Fills an array with the x,y,z coordinates for each Track.

This class method is intended to be called by the OpenMOC Python "plotter" module as a utility to assist in plotting tracks. Although this method appears to require two arguments, in reality it only requires one due to SWIG and would be called from within Python as follows:

num_tracks = track_generator.getNum3DTracks()
coords = track_generator.retrieve3DTrackCoords(num_tracks*6)
Parameters
coordsan array of coords of length 6 times the number of Tracks
num_tracksthe total number of Tracks

◆ retrieveGlobalZMesh()

void TrackGenerator3D::retrieveGlobalZMesh ( double *&  z_mesh,
int &  num_fsrs 
)

Provides the global z-mesh and size if available.

For some cases, a global z-mesh is generated for the Geometry. If so, a pointer to the associated mesh (array) is updated as well as the number of FSRs in the mesh. If no global z-mesh has been generated, a null pointer is given to z_mesh and the number of FSRs is assigned to be zero.

Parameters
z_meshThe global z-mesh to be updated
num_fsrsThe number of FSRs in the z-mesh

◆ retrieveSegmentCoords()

void TrackGenerator3D::retrieveSegmentCoords ( double *  coords,
long  num_segments 
)
virtual

Fills an array with the x,y,z coordinates for each Track segment.

This class method is intended to be called by the OpenMOC Python "plotter" module as a utility to assist in plotting segments. Although this method appears to require two arguments, in reality it only requires one due to SWIG and would be called from within Python as follows:

num_segments = track_generator.getNumSegments()
coords = track_generator.retrieveSegmentCoords(num_segments*7)
Parameters
coordsan array of coords of length 7 times the number of segments
num_segmentsthe total number of Track segments

Reimplemented from TrackGenerator.

◆ retrieveSingle3DTrackCoords()

void TrackGenerator3D::retrieveSingle3DTrackCoords ( double  coords[6],
long  track_id 
)

Fills an array with the x,y,z coordinates for a given track.

This class method is intended to be called by the OpenMOC Python "plotter" module as a utility to assist in plotting tracks. Although this method appears to require two arguments, in reality it only requires one due to SWIG and would be called from within Python as follows:

coords = track_generator.retrieveTrackCoords(track_id)
Parameters
coordsan array of coords of length 6
track_idthe ID of the requested track

◆ retrieveTrackCoords()

void TrackGenerator3D::retrieveTrackCoords ( double *  coords,
long  num_tracks 
)
virtual

Fills an array with the x,y,z coordinates for each Track.

This class method is intended to be called by the OpenMOC Python "plotter" module as a utility to assist in plotting tracks. Although this method appears to require two arguments, in reality it only requires one due to SWIG and would be called from within Python as follows:

num_tracks = track_generator.getNumTracks()
coords = track_generator.retrieveTrackCoords(num_tracks*6)
Parameters
coordsan array of coords of length 6 times the number of Tracks
num_tracksthe total number of Tracks

Reimplemented from TrackGenerator.

◆ setDesiredZSpacing()

void TrackGenerator3D::setDesiredZSpacing ( double  spacing)

Set the suggested track polar spacing (cm).

Parameters
spacingthe suggested track polar spacing

◆ setLinkIndex()

void TrackGenerator3D::setLinkIndex ( TrackChainIndexes tci,
TrackStackIndexes tsi 
)

Updates the index into the 3D chain based on chain and stack indexes.

Parameters
tciThe chain indexes to be updated
tsiThe stack indexes

◆ setLinkingTracks()

void TrackGenerator3D::setLinkingTracks ( TrackStackIndexes tsi,
TrackChainIndexes tci,
bool  outgoing,
Track3D track 
)

Fills the provided 3D Track with its linking information.

Parameters
tsiThe stack indexes
tciThe chain indexes
outgoingA boolean indicating the direction of the Track (True = forward, False = Backward)
trackThe 3D Track whose information is updated

◆ setNumPolar()

void TrackGenerator3D::setNumPolar ( int  num_polar)

Set the number of polar angles in $ [0, \pi] $.

Parameters
num_polarthe number of polar angles in $ \pi $

◆ setSegmentationZones()

void TrackGenerator3D::setSegmentationZones ( std::vector< double >  zones)

Sets the z-planes over which 2D segmentation is performed for on-the-fly calculations.

Parameters
zonesthe z-coordinates defining the height of the radial segmentation planes

◆ setSegmentFormation()

void TrackGenerator3D::setSegmentFormation ( segmentationType  segmentation_type)

Set the type of segmentation used for segment formation.

Parameters
segmentation_typea segmentationType defining the type of segmentation to be used in segment formation. Options are:
  • EXPLICIT_3D: explicit 2D/3D segment formation
  • OTF_TRACKS: axial on-the-fly ray tracing by individual tracks
  • OTF_STACKS: axial on-the-fly ray tracing by entire z-stacks

◆ useGlobalZMesh()

void TrackGenerator3D::useGlobalZMesh ( )

Sets a global z-mesh to use during axial on-the-fly ray tracing.

In axial on-the-fly ray tracing, normally each extruded FSR contains a z-mesh. During on-the-fly segmentation when a new extruded FSR is entered, a binary search must be conducted to determine the axial cell. Alternatively, this function can be called which creates a global z-mesh from the geometry so that binary searches must only be conducted at the beginning of the track.


The documentation for this class was generated from the following files: