![]() |
CASToR
3.2
Tomographic Reconstruction (PET/SPECT/CT)
|
This class is used to represent any SPECT camera with parallel/convergent collimator. More...
#include <iScannerSPECTConv.hh>
Public Member Functions | |
iScannerSPECTConv () | |
iScannerSPECTConv constructor. Initialize the member variables to their default values. More... | |
~iScannerSPECTConv () | |
iScannerSPECTConv destructor. More... | |
void | DescribeSpecific () |
Implementation of the pure virtual eponym function that simply prints info about the scanner. More... | |
int | Instantiate (bool a_scannerFileIsLUT) |
int | CheckParameters () |
Check that 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) |
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) |
int | GetRdmPositionsAndOrientations (int a_index1, int a_index2, FLTNB ap_Position1[3], FLTNB ap_Position2[3], FLTNB ap_Orientation1[3], FLTNB ap_Orientation2[3]) |
int | GetPositionWithRandomDepth (int a_index1, int a_index2, FLTNB ap_Position1[3], FLTNB ap_Position2[3]) |
int | GetTwoCorners (int a_index1, int a_index2, FLTNB ap_CornerInf1[3], FLTNB ap_CornerSup1[3], FLTNB ap_CornerInf2[3], FLTNB ap_CornerSup2[3]) |
int | GetEdgesCenterPositions (int a_index1, int a_index2, FLTNB ap_pos_line_point1[3], FLTNB ap_pos_line_point2[3], FLTNB ap_pos_point1_x[4], FLTNB ap_pos_point1_y[4], FLTNB ap_pos_point1_z[4], FLTNB ap_pos_point2_x[4], FLTNB ap_pos_point2_y[4], FLTNB ap_pos_point2_z[4]) |
int | GetGeometricInfoFromDataFile (string a_pathToDF) |
int | GetSystemNbElts () |
Get the number of elements in the system. For a SPECT system, returns the number of crystal in one gamma camera head. More... | |
void | ShowHelp () |
Display help. More... | |
FLTNB | GetDetectionElementSizeTrans () |
FLTNB | GetDetectionElementSizeAxial () |
int | IsAvailableLOR (int a_elt1, int a_elt2) |
int | GetSPECTSpecificParameters (uint16_t *ap_nbOfProjections, uint16_t *ap_nbHeads, FLTNB *ap_acquisitionZoom, uint16_t *ap_nbOfBins, FLTNB *ap_pixSizeXY, FLTNB *&ap_angles, FLTNB *&ap_CORtoDetectorDistance, int *ap_headRotDirection) |
int | PROJ_SetSPECTAngles (FLTNB *ap_projectionAngles) |
int | PROJ_SetSPECTCORtoDetectorDistance (FLTNB a_distance) |
uint16_t | PROJ_GetSPECTNbProjections () |
uint16_t | PROJ_GetSPECTNbPixels () |
int | PROJ_GetSPECTNbBins (uint16_t *ap_nbOfBins) |
int | PROJ_SetSPECTNbBins (uint16_t *ap_nbOfBins) |
int | PROJ_SetSPECTNbProjections (uint32_t a_nbOfProjections) |
iScannerSPECTConv () | |
iScannerSPECTConv constructor. Initialize the member variables to their default values. More... | |
~iScannerSPECTConv () | |
iScannerSPECTConv destructor. More... | |
void | DescribeSpecific () |
A pure virtual function used to describe the specific parts of the scanner. More... | |
int | Instantiate (bool a_scannerFileIsLUT) |
int | CheckParameters () |
This function is implemented in child classes. Check that all parameters have been correctly initialized. More... | |
int | Initialize () |
This function is implemented in child classes. Check initialization and set several parameters to their default value. More... | |
int | BuildLUT (bool a_scannerFileIsLUT) |
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) |
int | GetRdmPositionsAndOrientations (int a_index1, int a_index2, FLTNB ap_Position1[3], FLTNB ap_Position2[3], FLTNB ap_Orientation1[3], FLTNB ap_Orientation2[3]) |
int | GetPositionWithRandomDepth (int a_index1, int a_index2, FLTNB ap_Position1[3], FLTNB ap_Position2[3]) |
int | GetTwoCorners (int a_index1, int a_index2, FLTNB ap_CornerInf1[3], FLTNB ap_CornerSup1[3], FLTNB ap_CornerInf2[3], FLTNB ap_CornerSup2[3]) |
int | GetEdgesCenterPositions (int a_index1, int a_index2, FLTNB ap_pos_line_point1[3], FLTNB ap_pos_line_point2[3], FLTNB ap_pos_point1_x[4], FLTNB ap_pos_point1_y[4], FLTNB ap_pos_point1_z[4], FLTNB ap_pos_point2_x[4], FLTNB ap_pos_point2_y[4], FLTNB ap_pos_point2_z[4]) |
int | GetGeometricInfoFromDataFile (string a_pathToDF) |
int | GetSystemNbElts () |
This is a pure virtual method that must be implemented by children. More... | |
void | ShowHelp () |
This function is implemented in child classes Display help specific to the scanner class. More... | |
FLTNB | GetDetectionElementSizeTrans () |
FLTNB | GetDetectionElementSizeAxial () |
int | IsAvailableLOR (int a_elt1, int a_elt2) |
int | GetSPECTSpecificParameters (uint16_t *ap_nbOfProjections, uint16_t *ap_nbHeads, FLTNB *ap_acquisitionZoom, uint16_t *ap_nbOfBins, FLTNB *ap_pixSizeXY, FLTNB *&ap_angles, FLTNB *&ap_CORtoDetectorDistance, int *ap_headRotDirection) |
int | PROJ_SetSPECTAngles (FLTNB *ap_projectionAngles) |
int | PROJ_SetSPECTCORtoDetectorDistance (FLTNB a_distance) |
uint16_t | PROJ_GetSPECTNbProjections () |
return the total number of projections for a SPECT acquisition More... | |
uint16_t | PROJ_GetSPECTNbPixels () |
return the total number of pixels for a SPECT reconstruction More... | |
int | PROJ_GetSPECTNbBins (uint16_t *ap_nbOfBins) |
int | PROJ_SetSPECTNbBins (uint16_t *ap_nbOfBins) |
int | PROJ_SetSPECTNbProjections (uint32_t a_nbOfProjections) |
![]() | |
vScanner () | |
vScanner constructor. Initialize the member variables to their default values. More... | |
virtual | ~vScanner () |
vScanner destructor. More... | |
void | Describe () |
A function used to describe the generic parts of the datafile. More... | |
int | GetScannerType () |
string | GetScannerTypeString () |
void | SetVerbose (int a_verboseLevel) |
void | SetImageDimensionsAndQuantification (oImageDimensionsAndQuantification *ap_ID) |
FLTNB | GetDefaultBedDisplacementInMm () |
virtual int | SetPETMaxAxialDiffmm (FLTNB a_maxAxialDiffmm) |
virtual int | SetRotDirection (string a_rotDirection) |
virtual int | PROJ_GetPETSpecificParameters (FLTNB *ap_maxRingDiff) |
virtual int | GetCTSpecificParameters (uint16_t *ap_nbOfProjections, FLTNB *&ap_angles, int *ap_detectorRotDirection) |
vScanner () | |
vScanner constructor. Initialize the member variables to their default values. More... | |
virtual | ~vScanner () |
vScanner destructor. More... | |
void | Describe () |
int | GetScannerType () |
string | GetScannerTypeString () |
void | SetVerbose (int a_verboseLevel) |
void | SetImageDimensionsAndQuantification (oImageDimensionsAndQuantification *ap_ID) |
FLTNB | GetDefaultBedDisplacementInMm () |
virtual int | SetPETMaxAxialDiffmm (FLTNB a_maxAxialDiffmm) |
virtual int | SetRotDirection (string a_rotDirection) |
virtual int | PROJ_GetPETSpecificParameters (FLTNB *ap_maxRingDiff) |
virtual int | GetCTSpecificParameters (uint16_t *ap_nbOfProjections, FLTNB *&ap_angles, int *ap_detectorRotDirection) |
Private Member Functions | |
int | LoadLUT () |
Load a precomputed scanner LUT. More... | |
int | ComputeLUT () |
Computes the LUT of the scanner from a generic (.geom) file. More... | |
int | ComputeFocalPositions (FLTNB a_posX, FLTNB a_posY, FLTNB a_posZ, int a_headID, int a_cryID) |
int | LoadLUT () |
Virtual function which should be implemented by the child classes. Load a precomputed scanner LUT. The vScanner implementation throws error by default as it should be implemented by the child class. More... | |
int | ComputeLUT () |
Virtual function which should be implemented by the child classes. It computes the LUT of the scanner from a generic (.geom) file. The vScanner implementation throws error by default as it should be implemented by the child class. More... | |
int | ComputeFocalPositions (FLTNB a_posX, FLTNB a_posY, FLTNB a_posZ, int a_headID, int a_cryID) |
Private Attributes | |
int | m_nbCrystals |
int | m_nbHeads |
uint16_t | mp_nbOfBins [2] |
uint16_t | m_nbOfProjections |
FLTNB * | mp_projectionAngles |
FLTNB * | mp_CORtoDetectorDistance |
FLTNB * | mp_radius |
uint32_t | m_nbPixelsTrans |
FLTNB | m_pixelsSizeTrans |
FLTNB | m_gapSizeTrans |
uint32_t | m_nbPixelsAxial |
FLTNB | m_pixelsSizeAxial |
FLTNB | m_gapSizeAxial |
FLTNB | m_acquisitionZoom |
uint32_t | m_vNbPixelsTrans |
uint32_t | m_vNbPixelsAxial |
FLTNB | m_vPixelsSizeTrans |
FLTNB | m_vPixelsSizeAxial |
FLTNB | m_crystalDepth |
string * | mp_focalModelTrans |
uint8_t * | mp_nbCoefModelTrans |
FLTNB ** | m2p_transFocalParameters |
string * | mp_focalModelAxial |
uint8_t * | mp_nbCoefModelAxial |
FLTNB ** | m2p_axialFocalParameters |
FLTNB * | mp_crystalCentralPositionX |
FLTNB * | mp_crystalCentralPositionY |
FLTNB * | mp_crystalCentralPositionZ |
FLTNB * | mp_crystalOrientationX |
FLTNB * | mp_crystalOrientationY |
FLTNB * | mp_crystalOrientationZ |
FLTNB * | mp_crystalFocalPositionX |
FLTNB * | mp_crystalFocalPositionY |
FLTNB * | mp_crystalFocalPositionZ |
Additional Inherited Members | |
![]() | |
int | m_scannerType |
int | m_verbose |
oImageDimensionsAndQuantification * | mp_ID |
bool | m_allParametersChecked |
oMatrix * | mp_rotationMatrix |
oMatrix * | mp_positionMatrix_ref |
oMatrix * | mp_positionMatrix_out |
int | m_rotDirection |
FLTNB | m_defaultBedDisplacementInMm |
This class is used to represent any SPECT camera with parallel/convergent collimator.
Inherits from vScanner
Definition at line 21 of file code/include/scanner/iScannerSPECTConv.hh.
iScannerSPECTConv::iScannerSPECTConv | ( | ) |
iScannerSPECTConv constructor. Initialize the member variables to their default values.
Definition at line 17 of file code/src/scanner/iScannerSPECTConv.cc.
iScannerSPECTConv::~iScannerSPECTConv | ( | ) |
iScannerSPECTConv destructor.
Definition at line 64 of file code/src/scanner/iScannerSPECTConv.cc.
iScannerSPECTConv::iScannerSPECTConv | ( | ) |
iScannerSPECTConv constructor. Initialize the member variables to their default values.
iScannerSPECTConv::~iScannerSPECTConv | ( | ) |
iScannerSPECTConv destructor.
|
virtual |
Implements vScanner.
Definition at line 397 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
Implements vScanner.
|
virtual |
Check that all parameters have been correctly initialized.
Implements vScanner.
Definition at line 461 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
This function is implemented in child classes.
Check that all parameters have been correctly initialized.
Implements vScanner.
|
private |
|
private |
Definition at line 877 of file code/src/scanner/iScannerSPECTConv.cc.
|
privatevirtual |
Computes 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
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 629 of file code/src/scanner/iScannerSPECTConv.cc.
|
privatevirtual |
Virtual function which should be implemented by the child classes.
It computes the LUT of the scanner from a generic (.geom) file.
The vScanner implementation throws error by default as it should be implemented by the child class.
Reimplemented from vScanner.
|
virtual |
Implementation of the pure virtual eponym function that simply prints info about the scanner.
Implements vScanner.
Definition at line 114 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
A pure virtual function used to describe the specific parts of the scanner.
Implements vScanner.
|
inlinevirtual |
Implements vScanner.
Definition at line 200 of file include/scanner/iScannerSPECTConv.hh.
|
inlinevirtual |
Implements vScanner.
Definition at line 200 of file code/include/scanner/iScannerSPECTConv.hh.
|
inlinevirtual |
Implements vScanner.
Definition at line 193 of file include/scanner/iScannerSPECTConv.hh.
|
inlinevirtual |
Implements vScanner.
Definition at line 193 of file code/include/scanner/iScannerSPECTConv.hh.
|
virtual |
Implements vScanner.
|
virtual |
Implements vScanner.
Definition at line 1210 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
Implements vScanner.
|
virtual |
Implements vScanner.
Definition at line 1236 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
Implements vScanner.
|
virtual |
Implements vScanner.
Definition at line 1043 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
Implements vScanner.
Definition at line 1183 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
Implements vScanner.
|
virtual |
Implements vScanner.
|
virtual |
Implements vScanner.
Definition at line 1124 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
Reimplemented from vScanner.
Definition at line 1397 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
Reimplemented from vScanner.
|
inlinevirtual |
This is a pure virtual method that must be implemented by children.
Implements vScanner.
Definition at line 180 of file include/scanner/iScannerSPECTConv.hh.
|
inlinevirtual |
Get the number of elements in the system. For a SPECT system, returns the number of crystal in one gamma camera head.
Implements vScanner.
Definition at line 180 of file code/include/scanner/iScannerSPECTConv.hh.
|
virtual |
Implements vScanner.
|
virtual |
Implements vScanner.
Definition at line 1196 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
Check general initialization and set several parameters to their default value.
Implements vScanner.
Definition at line 579 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
This function is implemented in child classes.
Check initialization and set several parameters to their default value.
Implements vScanner.
|
virtual |
Implements vScanner.
Definition at line 259 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
Implements vScanner.
|
inlinevirtual |
Reimplemented from vScanner.
Definition at line 215 of file code/include/scanner/iScannerSPECTConv.hh.
|
inlinevirtual |
Reimplemented from vScanner.
Definition at line 215 of file include/scanner/iScannerSPECTConv.hh.
|
privatevirtual |
Virtual function which should be implemented by the child classes.
Load a precomputed scanner LUT.
The vScanner implementation throws error by default as it should be implemented by the child class.
Reimplemented from vScanner.
|
privatevirtual |
Load a precomputed scanner LUT.
Read mandatory data from the header of the LUT. Then load the LUT elements for each crystal
Read mandatory data from the header of the LUT. Then load the LUT elements for each crystal
Reimplemented from vScanner.
Definition at line 609 of file code/src/scanner/iScannerSPECTConv.cc.
int iScannerSPECTConv::PROJ_GetSPECTNbBins | ( | uint16_t * | ap_nbOfBins | ) |
Definition at line 1516 of file code/src/scanner/iScannerSPECTConv.cc.
int iScannerSPECTConv::PROJ_GetSPECTNbBins | ( | uint16_t * | ap_nbOfBins | ) |
|
inlinevirtual |
return the total number of pixels for a SPECT reconstruction
This function is surcharged by the SPECT scanner daughter classes
Returns an error by default.
Reimplemented from vScanner.
Definition at line 264 of file include/scanner/iScannerSPECTConv.hh.
|
inlinevirtual |
Reimplemented from vScanner.
Definition at line 264 of file code/include/scanner/iScannerSPECTConv.hh.
|
inlinevirtual |
return the total number of projections for a SPECT acquisition
This function is surcharged by the SPECT scanner daughter classes
Returns an error by default.
Reimplemented from vScanner.
Definition at line 258 of file include/scanner/iScannerSPECTConv.hh.
|
inlinevirtual |
Reimplemented from vScanner.
Definition at line 258 of file code/include/scanner/iScannerSPECTConv.hh.
|
virtual |
Reimplemented from vScanner.
|
virtual |
Reimplemented from vScanner.
Definition at line 1440 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
Reimplemented from vScanner.
Definition at line 1474 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
Reimplemented from vScanner.
|
virtual |
Reimplemented from vScanner.
|
virtual |
Reimplemented from vScanner.
Definition at line 1533 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
Reimplemented from vScanner.
|
virtual |
Reimplemented from vScanner.
Definition at line 1551 of file code/src/scanner/iScannerSPECTConv.cc.
|
virtual |
This function is implemented in child classes
Display help specific to the scanner class.
Implements vScanner.
|
virtual |
Display help.
Implements vScanner.
Definition at line 1568 of file code/src/scanner/iScannerSPECTConv.cc.
|
private |
Parameters of the axial focal model. Specific to each head
Definition at line 363 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Parameters of the transaxial focal model. Specific to each head
Definition at line 359 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
The zoom used during the acquisition to limit the area of detection with monolithic crystals
Definition at line 347 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Depth of crystals
Definition at line 355 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Gap size between each axial pixel as defined in the system file
Definition at line 345 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Gap size between each transaxial pixe as defined in the system filel
Definition at line 341 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Total number of crystal in the scanner
Definition at line 329 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Total number of SPECT heads
Definition at line 330 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Total number of projection angles
Definition at line 333 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Total number of axial pixels as defined in the system file
Definition at line 343 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Total number of transaxial pixels as defined in the system file
Definition at line 339 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Size of axial pixels as defined in the system file
Definition at line 344 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Size of transaxial pixels as defined in the system file
Definition at line 340 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Number of axial virtual pixels (pixels actually used in reconstruction)
Definition at line 350 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Number of trans virtual pixels (pixels actually used in reconstruction)
Definition at line 349 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Axial size of virtual pixels (pixels actually used in reconstruction)
Definition at line 353 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Trans size of virtual pixels (pixels actually used in reconstruction)
Definition at line 352 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Distance between the center of rotation and the detector surface of each head. One value for each projection angle.
Definition at line 336 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Cartesian coordinate on X-axis of the center of each crystal, at each projection
Definition at line 365 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Cartesian coordinate on Y-axis of the center of each crystal, at each projection
Definition at line 366 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Cartesian coordinate on Z-axis of the center of each crystal, at each projection
Definition at line 367 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
X-axis position of the focal point for each crystal, at each projection
Definition at line 373 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Y-axis position of the focal point for each crystal, at each projection
Definition at line 374 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Z-axis position of the focal point for each crystal, at each projection
Definition at line 375 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
X-axis orientation of each crystal, at each projection
Definition at line 369 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Y-axis orientation of each crystal, at each projection
Definition at line 370 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Z-axis orientation of each crystal, at each projection
Definition at line 371 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Axial focal model (should be 'constant', 'polynomial', 'slanthole', or 'custom'). Specific to each head
Definition at line 361 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Transaxial focal model (should be 'constant', 'polynomial', 'slanthole', or 'custom'). Specific to each head
Definition at line 357 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Number of coefficients of the axial focal model. Specific to each head
Definition at line 362 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Number of coefficients of the transaxial focal model. Specific to each head
Definition at line 358 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
2 dimensionnal array containing the number of transaxial bins (X,Y). Default values : 2,2
Definition at line 332 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Array containing all the projection angles ('m_nbOfProjections' elements)
Definition at line 335 of file code/include/scanner/iScannerSPECTConv.hh.
|
private |
Default radius (distance between the center of rotation and detector surface) for each head for the system
Definition at line 337 of file code/include/scanner/iScannerSPECTConv.hh.