31 #ifndef OPROJECTIONLINE_HH
32 #define OPROJECTIONLINE_HH 1
53 #define IMAGE_COMPUTATION_STRATEGY 1
60 #define FIXED_LIST_COMPUTATION_STRATEGY 2
65 #define ADAPTATIVE_LIST_COMPUTATION_STRATEGY 3
This header file is mainly used to declare some macro definitions and all includes needed from the st...
void SetMultiplicativeCorrection(FLTNB a_multiplicativeCorrection)
This function is used to set the multiplicative correction to be applied during forward and backward ...
~oProjectionLine()
The destructor of oProjectionLine.
Declaration of class oImageDimensionsAndQuantification.
FLTNB * GetOrientation1()
This function is used to get the pointer to the mp_orientation1 (3-values tab).
FLTNB * GetPOI1()
This function is used to get the pointer to POI of point 1 (3-values tab).
FLTNB ForwardProjectWithSPECTAttenuation(FLTNB *ap_attenuation, FLTNB *ap_image=NULL)
Forward projects the provided image for the current TOF bin with an inner loop on the attenuation (fo...
void SetThreadNumber(int a_threadNumber)
This function is used to set the thread number of this particular line.
void SetImageDimensionsAndQuantification(oImageDimensionsAndQuantification *ap_ImageDimensionsAndQuantification)
This function is used to set the pointer to the oImageDimensionsAndQuantification in use...
void SetMatchedProjectors(bool a_UseMatchedProjectors)
This function is used to set the boolean that says if we use matched projectors.
void AddVoxelAllTOFBins(int a_direction, INTNB a_voxelIndex, FLTNB a_voxelWeight, HPFLTNB *a_tofWeights, INTNB a_tofBinFirst, INTNB a_tofBinLast)
Add a voxel contribution to the line for all relevant TOF bins.
This class is designed to generically described any on-the-fly projector.
FLTNB * GetBufferPosition2()
This function is used to get the pointer to the mp_bufferPosition2 (3-values tab).
FLTNB * mp_bufferOrientation1
vProjector * mp_ForwardProjector
FLTNB GetTOFMeasurement()
This function is used to get the TOF measurement.
void SetCurrentTOFBin(int a_TOFBin)
This function is used to set the current TOF bin that is used.
void SetLength(FLTNB a_length)
This function is used to set the length of the line.
FLTNB * GetBufferPosition1()
This function is used to get the pointer to the mp_bufferPosition1 (3-values tab).
FLTNB GetLength()
This function is used to get the length of the line.
FLTNB * GetOrientation2()
This function is used to get the pointer to the mp_orientation2 (3-values tab).
int GetThreadNumber()
This function is used to get the thread number associated to this line.
int GetComputationStrategy()
This function is used to get the computation strategy.
void SetIndex2(int a_index2)
This function is used to set the index m_index1 of point 2.
FLTNB GetBedOffset()
This function is used to get the axial bed offset associated to this line.
oProjectionLine()
The constructor of oProjectionLine.
void ComputeLineLength()
Simply compute and update the m_length using the associated mp_position1 and mp_position2.
FLTNB GetTOFResolution()
This function is used to get the TOF resolution.
INTNB GetVoxelIndex(int a_direction, int a_TOFBin, INTNB a_voxelInLine)
This function is used to get the contributing voxel index of the provided direction, TOF bin and voxel rank.
INTNB *** m3p_voxelIndices
void BackwardProject(FLTNB *ap_image, FLTNB a_value)
Simply backward projects the provided value inside the provided image, for the current TOF bin...
int GetIndex2()
This function is used to get the index associated to point 2.
void ApplyOffset()
Apply the offset of oImageDimensionsAndQuantification to the mp_position1 and mp_position2.
FLTNB * GetPosition1()
This function is used to get the pointer to the mp_position1 (3-values tab).
void SetComputationStrategy(int a_computationStrategy)
This function is used to set the computation strategy in use.
FLTNB *** m3p_voxelWeights
FLTNB * GetBufferOrientation1()
This function is used to get the pointer to the mp_bufferOrientation1 (3-values tab).
void BackwardProjectWithSPECTAttenuation(FLTNB *ap_attenuation, FLTNB *ap_image, FLTNB a_value)
Backward project the provided value inside the provided image with an inner loop on the attenuation (...
void AddVoxel(int a_direction, INTNB a_voxelIndice, FLTNB a_voxelWeight)
This function is used to add a voxel contribution to the line, assuming TOF bin 0 (i...
void SetBedOffset(FLTNB a_bedOffset)
This function is used to set the bed offset.
void SetNbTOFBins(int a_nbTOFBins)
This function is used to set the number of TOF bins in use.
INTNB GetCurrentNbVoxels(int a_direction, int a_TOFBin)
This function is used to get the current number of contributing voxels to the line.
void SetPOI2(FLTNB *ap_POI2)
This function is used to set the POI of point 2.
void Reset()
Reset length and all the voxel indices and weights tabs.
FLTNB * GetBufferOrientation2()
This function is used to get the pointer to the mp_bufferOrientation2 (3-values tab).
void SetTOFBinSize(FLTNB a_TOFBinSize)
This function is used to set the size of a TOF bin in ps.
void SetVerbose(int a_verbose)
This function is used to set the verbose level.
bool NotEmptyLine()
This function is used to know if the line contains any voxel contribution.
FLTNB m_multiplicativeCorrection
void SetIndex1(int a_index1)
This function is used to set the index m_index1 of point 1.
void SetBackwardProjector(vProjector *ap_Projector)
This function is used to set the pointer to the backward projector.
void SetPOI1(FLTNB *ap_POI1)
This function is used to set the POI of point 1.
This class is designed to manage and store system matrix elements associated to a vEvent...
void SetPOIResolution(FLTNB *ap_POIResolution)
This function is used to set the POI resolution along the 3 axes.
void SetForwardProjector(vProjector *ap_Projector)
This function is used to set the pointer to the forward projector.
int m_computationStrategy
FLTNB ForwardProject(FLTNB *ap_image=NULL)
Simply forward projects the provided image if not null, or else 1, for the current TOF bin...
FLTNB * mp_bufferPosition1
void SetTOFResolution(FLTNB a_TOFResolution)
This function is used to set the TOF resolution in use.
int GetNbTOFBins()
This function is used to get the number of TOF bins in use.
This class is designed to manage all dimensions and quantification related stuff. ...
FLTNB GetVoxelWeights(int a_direction, int a_TOFBin, INTNB a_voxelInLine)
This function is used to get the contributing voxel weight of the provided direction, TOF bin and voxel rank.
FLTNB * mp_bufferOrientation2
FLTNB * GetPosition2()
This function is used to get the pointer to the mp_position2 (3-values tab).
void SetTOFMeasurement(FLTNB a_TOFMeasurement)
This function is used to set the TOF measurement associated to the line.
FLTNB GetTOFBinSize()
This function is used to get the size in ps of a TOF bin.
oImageDimensionsAndQuantification * mp_ImageDimensionsAndQuantification
INTNB ** m2p_allocatedNbVoxels
FLTNB * GetPOI2()
This function is used to get the pointer to POI of point 2 (3-values tab).
void AddVoxelInTOFBin(int a_direction, int a_TOFBin, INTNB a_voxelIndice, FLTNB a_voxelWeight)
This function is used to add a voxel contribution to the line and provided TOF bin.
int CheckParameters()
A function used to check the parameters settings.
bool m_useMatchedProjectors
int Initialize()
A function used to initialize a bunch of stuff after parameters have been checked.
FLTNB * mp_bufferPosition2
int GetIndex1()
This function is used to get the index associated to point 1.
void ApplyBedOffset()
Apply the bed offset of m_bedOffset to the mp_position1 and mp_position2.
INTNB ** m2p_currentNbVoxels
vProjector * mp_BackwardProjector
FLTNB ComputeLineIntegral(int a_direction)
It simply computes the sum of all voxels contributions following the provided direction.