CASToR
1.1
Tomographic Reconstruction (PET/SPECT)
|
This class is used to represent any cylindrical PET scanner. More...
#include <iScannerPET.hh>
Public Member Functions | |
iScannerPET () | |
iScannerPET constructor. Initialize the member variables to their default values. More... | |
~iScannerPET () | |
iScannerPET destructor. More... | |
int | Instantiate (bool a_scannerFileIsLUT) |
Get mandatory informations from the scanner file and allocate memory for the member variables. More... | |
int | CheckParameters () |
Check if all parameters have been correctly initialized. More... | |
int | Initialize () |
Check general initialization and set several parameters to their default value. More... | |
int | BuildLUT (bool a_scannerFileIsLUT) |
Call the functions to generate the LUT or read the user-made LUT depending on the user choice. More... | |
int | GetPositionsAndOrientations (int a_index1, int a_index2, FLTNB ap_Position1[3], FLTNB ap_Position2[3], FLTNB ap_Orientation1[3], FLTNB ap_Orientation2[3], FLTNB *ap_POI1=NULL, FLTNB *ap_POI2=NULL) |
Get the central positions and orientations of the scanner elements from their indices. More... | |
int | GetRdmPositionsAndOrientations (int a_index1, int a_index2, FLTNB ap_Position1[3], FLTNB ap_Position2[3], FLTNB ap_Orientation1[3], FLTNB ap_Orientation2[3]) |
Get random positions of the scanner elements and their orientations from their indices. More... | |
int | GetPositionWithRandomDepth (int a_index1, int a_index2, FLTNB ap_Position1[3], FLTNB ap_Position2[3]) |
Get the positions and orientations of scanner elements from their indices, with a random depth. More... | |
int | GetTwoCorners (int a_index1, int a_index2, FLTNB ap_CornerInf1[3], FLTNB ap_CornerSup1[3], FLTNB ap_CornerInf2[3], FLTNB ap_CornerSup2[3]) |
Get the cartesian coordinaters of the two opposite corners of a scanner element. More... | |
int | GetSystemNbElts () |
int | GetScannerLayerNbRings (int a_layer) |
Return the number of rings for a specific crystal layer. More... | |
int | IsAvailableLOR (int a_elt1, int a_elt2) |
Check if the LOR formed by the crystalf whose indices are passed in parameters is available according to the scanner restrictions. More... | |
int | GetGeometricInfoFromDatafile (string a_pathToDataFilename) |
Retrieve PET geometric informations from the datafile. More... | |
int | SetPETMaxRingDiff (int a_maxRingDiff) |
Set the maximal ring difference (if any) More... | |
void | ShowHelp () |
Display help. More... | |
int | PROJ_GetPETSpecificParameters (int *ap_maxRingDiff) |
Set pointers passed in argument with the related PET specific variables This function is used to recover these values in the datafile object. More... | |
Public Member Functions inherited from vScanner | |
vScanner () | |
vScanner constructor. Initialize the member variables to their default values. More... | |
virtual | ~vScanner () |
vScanner destructor. More... | |
int | GetScannerType () |
void | SetVerbose (int a_verboseLevel) |
Set verbosity. More... | |
FLTNB | GetMultiBedDisplacementInMm () |
virtual int | SetRotDirection (string a_rotDirection) |
Set rotation direction of the system. More... | |
virtual int | GetSPECTSpecificParameters (uint16_t *ap_nbOfProjections, uint16_t *ap_nbHeads, uint16_t *ap_nbOfBins, FLTNB *ap_pixSizeXY, FLTNB *&ap_angles, FLTNB *&ap_CORtoDetectorDistance, int *ap_headRotDirection) |
Recover geometric SPECT specific parameters from the scanner to initialize the datafile. More... | |
virtual int | PROJ_SetSPECTNbBins (uint16_t *ap_nbOfBins) |
Set SPECT number of Bins. More... | |
virtual int | PROJ_SetSPECTNbProjections (uint32_t a_nbOfProjections) |
Set SPECT number of views. More... | |
virtual int | PROJ_SetSPECTAngles (FLTNB *ap_projectionAngles) |
Set SPECT projection angles. More... | |
virtual int | PROJ_SetSPECTCORtoDetectorDistance (FLTNB a_CORtoDetectorDistance) |
Set distance between center of rotation and SPECT detectors. More... | |
virtual uint16_t | PROJ_GetSPECTNbProjections () |
return the total number of projections for a SPECT acquisition More... | |
virtual uint16_t | PROJ_GetSPECTNbPixels () |
return the total number of pixels for a SPECT reconstruction More... | |
Private Member Functions | |
int | LoadLUT () |
Load a precomputed scanner LUT. More... | |
int | ComputeLUT () |
Compute the LUT of the scanner from a generic (.geom) file. More... | |
int | GetLayer (int a_idx) |
Get the layer from which the 'a_index' crystal belongs to. More... | |
int | GetRingID (int a_idx) |
Get the ring which the #a_idx crystal belongs to. More... | |
Additional Inherited Members | |
Protected Attributes inherited from vScanner | |
int | m_scannerType |
int | m_verbose |
bool | m_allParametersChecked |
oMatrix * | mp_rotationMatrix |
oMatrix * | mp_positionMatrix_ref |
oMatrix * | mp_positionMatrix_out |
int | m_rotDirection |
FLTNB | m_multiBedDisplacementInMm |
This class is used to represent any cylindrical PET scanner.
Inherits from vScanner
Definition at line 21 of file iScannerPET.hh.
iScannerPET::iScannerPET | ( | ) |
iScannerPET constructor. Initialize the member variables to their default values.
Definition at line 28 of file iScannerPET.cc.
iScannerPET::~iScannerPET | ( | ) |
iScannerPET destructor.
Definition at line 60 of file iScannerPET.cc.
|
virtual |
Call the functions to generate the LUT or read the user-made LUT depending on the user choice.
a_scannerFileIsLUT | : boolean indicating if the file describing the SPECT camera is a generic file (0) or custom Look-up-table (1) |
Implements vScanner.
Definition at line 208 of file iScannerPET.cc.
|
virtual |
Check if all parameters have been correctly initialized.
Implements vScanner.
Definition at line 250 of file iScannerPET.cc.
|
privatevirtual |
Compute the LUT of the scanner from a generic (.geom) file.
Read mandatory data from the geom file. Then compute the LUT elements for each crystal from the geometry described in the file
Compute the look-up-tables of the system containing the locations of the scanner elements center in space and their orientations
Reimplemented from vScanner.
Definition at line 455 of file iScannerPET.cc.
|
virtual |
Retrieve PET geometric informations from the datafile.
Recover the (axial) max ring difference
Implements vScanner.
Definition at line 1379 of file iScannerPET.cc.
|
private |
Get the layer from which the 'a_index' crystal belongs to.
a_idx | : index of the crystal in the loaded LUT |
Definition at line 1261 of file iScannerPET.cc.
|
virtual |
Get the central positions and orientations of the scanner elements from their indices.
a_index1 | : index of the 1st crystal |
a_index2 | : index of the 2nd crystal |
ap_Position1[3] | : x,y,z cartesian position of center of the 1st crystal |
ap_Position2[3] | : x,y,z cartesian position of center of the 2nd crystal |
ap_Orientation1[3] | : x,y,z components of the orientation vector related to the 1st crystal |
ap_Orientation2[3] | : x,y,z components of the orientation vector related to the 2nd crystal |
ap_POI1 | : x,y,z components of the Point Of Interation related to the 1st crystal |
ap_POI2 | : x,y,z components of the Point Of Interation related to the 2nd crystal |
This method is very general and is used by the vProjector. From these positions and orientations, other methods can be used by specific projectors to get specific positions. Position calculations include POI and mean depth of interaction
Implements vScanner.
Definition at line 957 of file iScannerPET.cc.
|
virtual |
Get the positions and orientations of scanner elements from their indices, with a random depth.
a_index1 | : index of the 1st crystal |
a_index2 | : index of the 2nd crystal |
ap_Position1[3] | : x,y,z cartesian position of the point related to the 1st index (see child function for more details) |
ap_Position2[3] | : x,y,z cartesian position of the point related to the 2st index (see child function for more details) |
Method for testing purposes. Does not include POI and mean depth of interaction
Implements vScanner.
Definition at line 1183 of file iScannerPET.cc.
|
virtual |
Get random positions of the scanner elements and their orientations from their indices.
a_index1 | : index of the 1st crystal |
a_index2 | : index of the 2nd crystal |
ap_Position1[3] | : x,y,z cartesian position of center of the 1st crystal |
ap_Position2[3] | : x,y,z cartesian position of center of the 2nd crystal |
ap_Orientation1[3] | : x,y,z components of the orientation vector related to the 1st crystal |
ap_Orientation2[3] | : x,y,z components of the orientation vector related to the 2nd crystal |
Position calculations include POI and mean depth of interaction
Implements vScanner.
Definition at line 1074 of file iScannerPET.cc.
|
private |
Get the ring which the #a_idx crystal belongs to.
a_idx | : index of the crystal in the loaded LUT |
Definition at line 1290 of file iScannerPET.cc.
|
inlinevirtual |
Return the number of rings for a specific crystal layer.
a_layer |
Reimplemented from vScanner.
Definition at line 154 of file iScannerPET.hh.
|
inlinevirtual |
Implements vScanner.
Definition at line 145 of file iScannerPET.hh.
|
virtual |
Get the cartesian coordinaters of the two opposite corners of a scanner element.
a_index1 | : index of the 1st crystal |
a_index2 | : index of the 2nd crystal |
ap_CornerInf1[3] | |
ap_CornerSup1[3] | |
ap_CornerInf2[3] | |
ap_CornerSup2[3] |
Implements vScanner.
Definition at line 1228 of file iScannerPET.cc.
|
virtual |
Check general initialization and set several parameters to their default value.
Implements vScanner.
Definition at line 339 of file iScannerPET.cc.
|
virtual |
Get mandatory informations from the scanner file and allocate memory for the member variables.
a_scannerFileIsLUT | : boolean indicating if the file describing the system is a generic file (0) or custom Look-up-table (1) |
Implements vScanner.
Definition at line 83 of file iScannerPET.cc.
|
virtual |
Check if the LOR formed by the crystalf whose indices are passed in parameters is available according to the scanner restrictions.
a_elt1 | : index of the 1st crystal |
a_elt2 | : index of the 2nd crystal |
This function is dedicated to analytic projection and list-mode sensitivity image generation
The PET implementation checks the LOR availability according to the minimal (transaxial) angle difference and the maximal ring difference between two crystals
Reimplemented from vScanner.
Definition at line 1339 of file iScannerPET.cc.
|
privatevirtual |
Load a precomputed scanner LUT.
Read mandatory data from the header of the LUT.
Then load the LUT elements for each crystal
Reimplemented from vScanner.
Definition at line 374 of file iScannerPET.cc.
|
virtual |
Set pointers passed in argument with the related PET specific variables This function is used to recover these values in the datafile object.
ap_maxRingDiff |
Reimplemented from vScanner.
Definition at line 1415 of file iScannerPET.cc.
|
inlinevirtual |
Set the maximal ring difference (if any)
a_maxRingDiff |
Reimplemented from vScanner.
Definition at line 183 of file iScannerPET.hh.
|
virtual |
|
private |
Maximal ring difference for a specific acquisition
Definition at line 269 of file iScannerPET.hh.
|
private |
Minimal transaxial angle difference for the system
Definition at line 267 of file iScannerPET.hh.
|
private |
Total number of crystal in the scanner
Definition at line 250 of file iScannerPET.hh.
|
private |
Number of crystal layers in the scanner
Definition at line 249 of file iScannerPET.hh.
|
private |
Cartesian coordinate on X-axis of the center of each crystal
Definition at line 254 of file iScannerPET.hh.
|
private |
Cartesian coordinate on Y-axis of the center of each crystal
Definition at line 255 of file iScannerPET.hh.
|
private |
Cartesian coordinate on Z-axis of the center of each crystal
Definition at line 256 of file iScannerPET.hh.
|
private |
X-axis orientation of each crystal
Definition at line 258 of file iScannerPET.hh.
|
private |
Y-axis orientation of each crystal
Definition at line 259 of file iScannerPET.hh.
|
private |
Z-axis orientation of each crystal
Definition at line 260 of file iScannerPET.hh.
|
private |
Mean depth of interaction in a crystal (for each layer)
Definition at line 265 of file iScannerPET.hh.
|
private |
Number of crystals (for each layer)
Definition at line 252 of file iScannerPET.hh.
|
private |
Number of rings (for each layer)
Definition at line 251 of file iScannerPET.hh.
|
private |
Axial size of a crystal (for each layer)
Definition at line 263 of file iScannerPET.hh.
|
private |
Depth of a crystal (for each layer)
Definition at line 264 of file iScannerPET.hh.
|
private |
Transaxial size of a crystal (for each layer)
Definition at line 262 of file iScannerPET.hh.