CASToR  3.2
Tomographic Reconstruction (PET/SPECT/CT)
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
vOptimizer Class Referenceabstract

This class is designed to generically described any iterative optimizer. More...

#include <vOptimizer.hh>

Inheritance diagram for vOptimizer:
Inheritance graph
Collaboration diagram for vOptimizer:
Collaboration graph

Public Member Functions

 vOptimizer ()
 The constructor of vOptimizer. More...
 
virtual ~vOptimizer ()
 The destructor of vOptimizer. More...
 
void ShowHelp ()
 A function used to show help about the optimizer. More...
 
int CheckParameters ()
 A public function used to check the parameters settings. More...
 
int Initialize ()
 A public function used to initialize the optimizer. More...
 
int UpdateVisitedVoxels ()
 A public function used to update the 'visited' voxels after each subset. More...
 
int PreDataUpdateStep ()
 A public function used to do stuff that need to be done at the beginning of a subset (before the data update step; i.e. the loop over all events) More...
 
int PreImageUpdateStep ()
 A public function used to do stuff that need to be done between the loop over events and the image update step. More...
 
virtual int DataStep1ForwardProjectModel (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep2Optional (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep3BackwardProjectSensitivity (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep4Optional (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep5ComputeCorrections (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep6Optional (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep7BackwardProjectCorrections (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep8ComputeFOM (oProjectionLine *ap_Line, vEvent *ap_Event, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int ImageUpdateStep ()
 A public function used to perform the image update step of the optimizer. More...
 
virtual int ReadConfigurationFile (const string &a_configurationFile)=0
 
virtual int ReadOptionsList (const string &a_optionsList)=0
 
void SetVerbose (int a_verbose)
 
void SetImageDimensionsAndQuantification (oImageDimensionsAndQuantification *ap_ImageDimensionsAndQuantification)
 
void SetImageSpace (oImageSpace *ap_ImageSpace)
 
void SetNbTOFBins (int a_nbTOFBins)
 
void SetDataMode (int a_dataMode)
 
void SetDataType (int a_dataType)
 
void SetDataSpec (int a_dataSpec)
 
void SetAttenuationImage (FLTNB *ap_attenuationImage, int a_thread)
 
void SetFOMFlag (bool a_optimizerFOMFlag)
 
void SetImageStatFlag (bool a_optimizerImageStatFlag)
 
void SetNumbersOfIterationsAndSubsets (int a_nbIterations, int *ap_nbSubsets)
 
void SetCurrentIteration (int a_currentIteration)
 
void SetCurrentSubset (int a_currentSubset)
 
int GetNbBackwardImages ()
 Get the number of backward images used by the specific optimizer. More...
 
FLTNB GetInitialValue ()
 Get the initial image value (for initialization) More...
 
void SetOptimizerID (const string &a_optimizerID)
 
const string & GetOptimizerID ()
 
int GetRequiredPenaltyDerivativesOrder ()
 Get the penalty derivative order needed for this algorithm. More...
 
bool GetAcceptPenalty ()
 Get the boolean saying if the optimizer accepts penalties. More...
 
void SetPenalty (vPenalty *ap_penalty)
 
bool GetNeedGlobalSensitivity ()
 Get the boolean saying if the sensitivity has to be computed globally for all data channels and not per subset. More...
 
 vOptimizer ()
 
virtual ~vOptimizer ()
 
void ShowHelp ()
 
int CheckParameters ()
 
int Initialize ()
 
int UpdateVisitedVoxels ()
 
int PreDataUpdateStep ()
 
int PreImageUpdateStep ()
 
virtual int DataStep1ForwardProjectModel (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep2Optional (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep3BackwardProjectSensitivity (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep4Optional (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep5ComputeCorrections (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep6Optional (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep7BackwardProjectCorrections (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep8ComputeFOM (oProjectionLine *ap_Line, vEvent *ap_Event, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int ImageUpdateStep ()
 
virtual int ReadConfigurationFile (const string &a_configurationFile)=0
 
virtual int ReadOptionsList (const string &a_optionsList)=0
 
void SetVerbose (int a_verbose)
 
void SetImageDimensionsAndQuantification (oImageDimensionsAndQuantification *ap_ImageDimensionsAndQuantification)
 
void SetImageSpace (oImageSpace *ap_ImageSpace)
 
void SetDataFile (vDataFile *ap_DataFile)
 Set the data file in use. More...
 
void SetNbTOFBins (int a_nbTOFBins)
 
void SetDataMode (int a_dataMode)
 
void SetDataType (int a_dataType)
 
void SetDataSpec (int a_dataSpec)
 
void SetAttenuationImage (FLTNB *ap_attenuationImage, int a_thread)
 
void SetFOMFlag (bool a_optimizerFOMFlag)
 
void SetImageStatFlag (bool a_optimizerImageStatFlag)
 
void SetNumbersOfIterationsAndSubsets (int a_nbSubIterationsTotal, int *ap_nbSubsets)
 
void SetOutputIterations (bool *ap_outputIterations)
 Set the selected output iterations. More...
 
void SetCurrentIteration (int a_currentTotalSubIteration)
 
int GetNbSubIterationsInOneIteration ()
 Get the number of sub iterations in one iteration. More...
 
void SetImageConvolverManager (oImageConvolverManager *ap_ImageConvolverManager)
 Set the Image Convolver Manager Object. More...
 
void SetCurrentSubset (int a_currentSubset)
 
int GetNbBackwardImages ()
 
FLTNB GetInitialValue ()
 
void SetOptimizerID (const string &a_optimizerID)
 
const string & GetOptimizerID ()
 
int GetRequiredPenaltyDerivativesOrder ()
 
bool GetAcceptPenalty ()
 
void SetPenalty (vPenalty *ap_penalty)
 
bool GetNeedGlobalSensitivity ()
 
void EnterPreIteration ()
 Set pre-process flag to true. More...
 
void ExitPreIteration ()
 Set pre-process flag to false. More...
 
bool NeedPreIteration ()
 Say if the optimizer needs a pre-process loop before iterations are done. More...
 
void EnterPostIteration ()
 Set post-process flag to true. More...
 
void ExitPostIteration ()
 Set post-process flag to false. More...
 
bool NeedPostIteration ()
 Say if the optimizer needs a post-process loop after iterations are done. More...
 

Protected Member Functions

FLTNB ComputeSensitivity (FLTNB ****a4p_sensitivityImage, int a_timeBasisFunction, int a_respBasisFunction, int a_cardBasisFunction, int a_voxel)
 
FLTNB ForwardProject (oProjectionLine *ap_Line, FLTNB *ap_image=NULL)
 
void BackwardProject (oProjectionLine *ap_Line, FLTNB *ap_image, FLTNB a_value)
 
FLTNB ComputeSensitivity (FLTNB ****a4p_sensitivityImage, int a_timeBasisFunction, int a_respBasisFunction, int a_cardBasisFunction, int a_voxel)
 
FLTNB ForwardProject (oProjectionLine *ap_Line, FLTNB *ap_image=NULL)
 
void BackwardProject (oProjectionLine *ap_Line, FLTNB *ap_image, FLTNB a_value)
 

Protected Attributes

string m_optimizerID
 
int m_verbose
 
int m_nbBackwardImages
 
int m_nbTOFBins
 
FLTNB ** m2p_forwardValues
 
FLTNB *** m3p_backwardValues
 
FLTNB m_initialValue
 
bool m_listmodeCompatibility
 
bool m_histogramCompatibility
 
bool m_emissionCompatibility
 
bool m_transmissionCompatibility
 
oImageDimensionsAndQuantificationmp_ImageDimensionsAndQuantification
 
oImageSpacemp_ImageSpace
 
int m_dataMode
 
int m_dataType
 
int m_dataSpec
 
FLTNB ** m2p_attenuationImage
 
int m_nbIterations
 
int * mp_nbSubsets
 
int m_currentIteration
 
int m_currentSubset
 
bool m_optimizerFOMFlag
 
HPFLTNB **** m4p_FOMLogLikelihood
 
HPFLTNB **** m4p_FOMRMSE
 
uint64_t **** m4p_FOMNbBins
 
HPFLTNB **** m4p_FOMNbData
 
HPFLTNB **** m4p_FOMPenalty
 
bool m_optimizerImageStatFlag
 
INTNBmp_imageStatNbVox
 
FLTNBmp_imageStatMin
 
FLTNBmp_imageStatMax
 
HPFLTNBmp_imageStatMean
 
HPFLTNBmp_imageStatVariance
 
HPFLTNBmp_correctionStatMean
 
HPFLTNBmp_correctionStatVariance
 
int m_requiredPenaltyDerivativesOrder
 
vPenaltymp_Penalty
 
bool m_needGlobalSensitivity
 
vDataFilemp_DataFile
 
oImageConvolverManagermp_ImageConvolverManager
 
int m_nbSubSteps
 
int * mp_nbSubIterationsInSubSteps
 
int m_nbSubIterationsInOneIteration
 
int m_nbSubIterationsTotal
 
bool * mp_outputIterations
 
int m_currentTotalSubIteration
 
int m_currentSubStep
 
int m_currentSubIterationInSubStep
 
bool m_needPreIteration
 
bool m_isInPreIteration
 
bool m_needPostIteration
 
bool m_isInPostIteration
 

Private Member Functions

virtual int PreDataUpdateSpecificStep ()
 A private function used to perform any step required by the child optimizer, before the loop on event inside the subset loop. More...
 
virtual int PreImageUpdateSpecificStep ()
 A private function used to perform any step required by the child optimizer, between the loop on event and the image update step. More...
 
virtual void ShowHelpSpecific ()=0
 A function used to show help about the child module. More...
 
virtual int CheckSpecificParameters ()=0
 A private function used to check the parameters settings specific to the child optimizer. More...
 
virtual int InitializeSpecific ()=0
 A private function used to initialize everything specific to the child optimizer. More...
 
virtual int SensitivitySpecificOperations (FLTNB a_data, FLTNB a_forwardModel, FLTNB *ap_weight, FLTNB a_multiplicativeCorrections, FLTNB a_additiveCorrections, FLTNB a_blankValue, FLTNB a_quantificationFactor, oProjectionLine *ap_Line)=0
 
virtual int DataSpaceSpecificOperations (FLTNB a_data, FLTNB a_forwardModel, FLTNB *ap_backwardValues, FLTNB a_multiplicativeCorrections, FLTNB a_additiveCorrections, FLTNB a_blankValue, FLTNB a_quantificationFactor, oProjectionLine *ap_Line)=0
 
virtual int ImageSpaceSpecificOperations (FLTNB a_currentImageValue, FLTNB *ap_newImageValue, FLTNB a_sensitivity, FLTNB *ap_correctionValues, INTNB a_voxel, int tbf=-1, int rbf=-1, int cbf=-1)=0
 
virtual int PreDataUpdateSpecificStep ()
 
virtual int PreImageUpdateSpecificStep ()
 
virtual void ShowHelpSpecific ()=0
 
virtual int CheckSpecificParameters ()=0
 
virtual int InitializeSpecific ()=0
 
virtual int SensitivitySpecificOperations (FLTNB a_data, FLTNB a_forwardModel, FLTNB *ap_weight, FLTNB a_multiplicativeCorrections, FLTNB a_additiveCorrections, FLTNB a_blankValue, FLTNB a_quantificationFactor, oProjectionLine *ap_Line)=0
 
virtual int DataSpaceSpecificOperations (FLTNB a_data, FLTNB a_forwardModel, FLTNB *ap_backwardValues, FLTNB a_multiplicativeCorrections, FLTNB a_additiveCorrections, FLTNB a_blankValue, FLTNB a_quantificationFactor, oProjectionLine *ap_Line)=0
 
virtual int ImageSpaceSpecificOperations (FLTNB a_currentImageValue, FLTNB *ap_newImageValue, FLTNB a_sensitivity, FLTNB *ap_correctionValues, INTNB a_voxel, int tbf=-1, int rbf=-1, int cbf=-1)=0
 

Detailed Description

This class is designed to generically described any iterative optimizer.

This class is an abstract one, in the sense that it cannot be used on its own because several pure virtual functions belong to it. Its children are implementations of actual optimizers. Everywhere in the code, this parent class should be used instead of any of its children. The optimizer is created by the oOptimizerManager is used during the iterative process of the algorithm through the call of multiple functions. All functions prefixed by DataStepX are called within the DataUpdateStep() function of the oOptimizerManager. The other main function is the ImageUpdateStep() function called by the eponym function from the manager. Anyway, all these aforementioned functions are virtual, but are designed to be flexible enaugh for any kind of optimizer. Finally, a particular optimizer (a child of this vOptimizer) will be characterized by the implementation of some pure virtual functions, some for options and initialization management, and three particular ones that really describe what this particular optimizer does: SensitivitySpecificOperations(), DataSpaceSpecificOperations() and ImageSpaceSpecificOperations(). Read the description of these functions below to get more details.

Definition at line 37 of file code/include/optimizer/vOptimizer.hh.

Constructor & Destructor Documentation

◆ vOptimizer() [1/2]

vOptimizer::vOptimizer ( )

The constructor of vOptimizer.

This is the default and unique constructor. It does not take any parameter and its role is only to affect default values to each member of the class.

Definition at line 15 of file code/src/optimizer/vOptimizer.cc.

◆ ~vOptimizer() [1/2]

vOptimizer::~vOptimizer ( )
virtual

The destructor of vOptimizer.

This is the default and unique destructor. It does not take any parameter and its role is only to free or delete all structures that were built by this class. It is virtual, so that it is automatically called when a child object is deleted.

Definition at line 61 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:

◆ vOptimizer() [2/2]

vOptimizer::vOptimizer ( )

◆ ~vOptimizer() [2/2]

virtual vOptimizer::~vOptimizer ( )
virtual

Member Function Documentation

◆ BackwardProject() [1/2]

void vOptimizer::BackwardProject ( oProjectionLine ap_Line,
FLTNB ap_image,
FLTNB  a_value 
)
protected

Definition at line 1116 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ BackwardProject() [2/2]

void vOptimizer::BackwardProject ( oProjectionLine ap_Line,
FLTNB ap_image,
FLTNB  a_value 
)
protected

◆ CheckParameters() [1/2]

int vOptimizer::CheckParameters ( )

A public function used to check the parameters settings.

This function does not take any parameter and is used to check that all mandatory members were correctly parameterized. At the end, it calls the pure virtual CheckSpecificParameters() function implemented by children.

Returns
An integer reflecting the check status; 0 if no problem, another value otherwise.

Definition at line 232 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CheckParameters() [2/2]

int vOptimizer::CheckParameters ( )

◆ CheckSpecificParameters() [1/2]

private virtual int vOptimizer::CheckSpecificParameters ( )
privatepure virtual

A private function used to check the parameters settings specific to the child optimizer.

This function is used to check that all parameters specific to the optimizer are correctly set within allowed values. It is called by the CheckParameters() function. It is pure virtual so is implemented by children.

Returns
An integer reflecting the check status; 0 if no problem, another value otherwise.

Implemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerOneStepLate, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerMLTR, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, iOptimizerMLEM, and iOptimizerSens.

Here is the caller graph for this function:

◆ CheckSpecificParameters() [2/2]

virtual int vOptimizer::CheckSpecificParameters ( )
privatepure virtual

◆ ComputeSensitivity() [1/2]

FLTNB vOptimizer::ComputeSensitivity ( FLTNB ****  a4p_sensitivityImage,
int  a_timeBasisFunction,
int  a_respBasisFunction,
int  a_cardBasisFunction,
int  a_voxel 
)
protected

Definition at line 1131 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ComputeSensitivity() [2/2]

FLTNB vOptimizer::ComputeSensitivity ( FLTNB ****  a4p_sensitivityImage,
int  a_timeBasisFunction,
int  a_respBasisFunction,
int  a_cardBasisFunction,
int  a_voxel 
)
protected

◆ DataSpaceSpecificOperations() [1/2]

virtual int vOptimizer::DataSpaceSpecificOperations ( FLTNB  a_data,
FLTNB  a_forwardModel,
FLTNB ap_backwardValues,
FLTNB  a_multiplicativeCorrections,
FLTNB  a_additiveCorrections,
FLTNB  a_blankValue,
FLTNB  a_quantificationFactor,
oProjectionLine ap_Line 
)
privatepure virtual

◆ DataSpaceSpecificOperations() [2/2]

virtual int vOptimizer::DataSpaceSpecificOperations ( FLTNB  a_data,
FLTNB  a_forwardModel,
FLTNB ap_backwardValues,
FLTNB  a_multiplicativeCorrections,
FLTNB  a_additiveCorrections,
FLTNB  a_blankValue,
FLTNB  a_quantificationFactor,
oProjectionLine ap_Line 
)
privatepure virtual

◆ DataStep1ForwardProjectModel() [1/2]

int vOptimizer::DataStep1ForwardProjectModel ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

Definition at line 620 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DataStep1ForwardProjectModel() [2/2]

virtual int vOptimizer::DataStep1ForwardProjectModel ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

◆ DataStep2Optional() [1/2]

int vOptimizer::DataStep2Optional ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

Definition at line 702 of file code/src/optimizer/vOptimizer.cc.

Here is the caller graph for this function:

◆ DataStep2Optional() [2/2]

virtual int vOptimizer::DataStep2Optional ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

◆ DataStep3BackwardProjectSensitivity() [1/2]

int vOptimizer::DataStep3BackwardProjectSensitivity ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

Definition at line 715 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DataStep3BackwardProjectSensitivity() [2/2]

virtual int vOptimizer::DataStep3BackwardProjectSensitivity ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

◆ DataStep4Optional() [1/2]

int vOptimizer::DataStep4Optional ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

Reimplemented in iOptimizerADMMLim.

Definition at line 755 of file code/src/optimizer/vOptimizer.cc.

Here is the caller graph for this function:

◆ DataStep4Optional() [2/2]

virtual int vOptimizer::DataStep4Optional ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

Reimplemented in iOptimizerADMMLim.

◆ DataStep5ComputeCorrections() [1/2]

int vOptimizer::DataStep5ComputeCorrections ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

Reimplemented in iOptimizerADMMLim, and iOptimizerMLMuMap.

Definition at line 768 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DataStep5ComputeCorrections() [2/2]

virtual int vOptimizer::DataStep5ComputeCorrections ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

Reimplemented in iOptimizerADMMLim, and iOptimizerMLMuMap.

◆ DataStep6Optional() [1/2]

int vOptimizer::DataStep6Optional ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

Reimplemented in iOptimizerADMMLim.

Definition at line 804 of file code/src/optimizer/vOptimizer.cc.

Here is the caller graph for this function:

◆ DataStep6Optional() [2/2]

virtual int vOptimizer::DataStep6Optional ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

Reimplemented in iOptimizerADMMLim.

◆ DataStep7BackwardProjectCorrections() [1/2]

int vOptimizer::DataStep7BackwardProjectCorrections ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

Definition at line 817 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DataStep7BackwardProjectCorrections() [2/2]

virtual int vOptimizer::DataStep7BackwardProjectCorrections ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

◆ DataStep8ComputeFOM() [1/2]

int vOptimizer::DataStep8ComputeFOM ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

Definition at line 872 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DataStep8ComputeFOM() [2/2]

virtual int vOptimizer::DataStep8ComputeFOM ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

◆ EnterPostIteration()

public inline void vOptimizer::EnterPostIteration ( )
inline

Set post-process flag to true.

Definition at line 638 of file include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ EnterPreIteration()

public inline void vOptimizer::EnterPreIteration ( )
inline

Set pre-process flag to true.

Definition at line 619 of file include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ ExitPostIteration()

public inline void vOptimizer::ExitPostIteration ( )
inline

Set post-process flag to false.

Definition at line 644 of file include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ ExitPreIteration()

public inline void vOptimizer::ExitPreIteration ( )
inline

Set pre-process flag to false.

Definition at line 625 of file include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ ForwardProject() [1/2]

FLTNB vOptimizer::ForwardProject ( oProjectionLine ap_Line,
FLTNB ap_image = NULL 
)
protected

Definition at line 1101 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ForwardProject() [2/2]

FLTNB vOptimizer::ForwardProject ( oProjectionLine ap_Line,
FLTNB ap_image = NULL 
)
protected

◆ GetAcceptPenalty() [1/2]

public inline bool vOptimizer::GetAcceptPenalty ( )
inline

Get the boolean saying if the optimizer accepts penalties.

Returns
true if m_requiredPenaltyDerivativesOrder is higher than the default -1 value, false otherwise

Definition at line 569 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ GetAcceptPenalty() [2/2]

bool vOptimizer::GetAcceptPenalty ( )
inline

Definition at line 598 of file include/optimizer/vOptimizer.hh.

◆ GetInitialValue() [1/2]

public inline FLTNB vOptimizer::GetInitialValue ( )
inline

Get the initial image value (for initialization)

Returns
m_initialValue

Definition at line 540 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ GetInitialValue() [2/2]

FLTNB vOptimizer::GetInitialValue ( )
inline

Definition at line 569 of file include/optimizer/vOptimizer.hh.

◆ GetNbBackwardImages() [1/2]

public inline int vOptimizer::GetNbBackwardImages ( )
inline

Get the number of backward images used by the specific optimizer.

Returns
m_nbBackwardImages

Definition at line 533 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ GetNbBackwardImages() [2/2]

int vOptimizer::GetNbBackwardImages ( )
inline

Definition at line 562 of file include/optimizer/vOptimizer.hh.

◆ GetNbSubIterationsInOneIteration()

public inline int vOptimizer::GetNbSubIterationsInOneIteration ( )
inline

Get the number of sub iterations in one iteration.

Returns
m_nbSubIterationsInOneIteration

Definition at line 541 of file include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ GetNeedGlobalSensitivity() [1/2]

public inline bool vOptimizer::GetNeedGlobalSensitivity ( )
inline

Get the boolean saying if the sensitivity has to be computed globally for all data channels and not per subset.

This is only relevant for histogram data

Returns
m_needGlobalSensitivity

Definition at line 584 of file code/include/optimizer/vOptimizer.hh.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetNeedGlobalSensitivity() [2/2]

bool vOptimizer::GetNeedGlobalSensitivity ( )
inline

Definition at line 613 of file include/optimizer/vOptimizer.hh.

◆ GetOptimizerID() [1/2]

const string& vOptimizer::GetOptimizerID ( )
inline

Definition at line 555 of file code/include/optimizer/vOptimizer.hh.

◆ GetOptimizerID() [2/2]

const string& vOptimizer::GetOptimizerID ( )
inline

Definition at line 584 of file include/optimizer/vOptimizer.hh.

◆ GetRequiredPenaltyDerivativesOrder() [1/2]

public inline int vOptimizer::GetRequiredPenaltyDerivativesOrder ( )
inline

Get the penalty derivative order needed for this algorithm.

Returns
m_requiredPenaltyDerivativesOrder

Definition at line 562 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ GetRequiredPenaltyDerivativesOrder() [2/2]

int vOptimizer::GetRequiredPenaltyDerivativesOrder ( )
inline

Definition at line 591 of file include/optimizer/vOptimizer.hh.

◆ ImageSpaceSpecificOperations() [1/2]

virtual int vOptimizer::ImageSpaceSpecificOperations ( FLTNB  a_currentImageValue,
FLTNB ap_newImageValue,
FLTNB  a_sensitivity,
FLTNB ap_correctionValues,
INTNB  a_voxel,
int  tbf = -1,
int  rbf = -1,
int  cbf = -1 
)
privatepure virtual

◆ ImageSpaceSpecificOperations() [2/2]

virtual int vOptimizer::ImageSpaceSpecificOperations ( FLTNB  a_currentImageValue,
FLTNB ap_newImageValue,
FLTNB  a_sensitivity,
FLTNB ap_correctionValues,
INTNB  a_voxel,
int  tbf = -1,
int  rbf = -1,
int  cbf = -1 
)
privatepure virtual

◆ ImageUpdateStep() [1/2]

int vOptimizer::ImageUpdateStep ( )
virtual

A public function used to perform the image update step of the optimizer.

Parameters
inta_iteration
inta_nbSubsets

This function is called by the eponym function from the oOptimizerManager. It will manage the dynamic loops, compute the sensitivity using the private ComputeSensitivity() function, and update each voxel according to the specific optimizer by calling the pure virtual ImageSpaceSpecificOperations() function.

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Reimplemented in iOptimizerADMMLim.

Definition at line 935 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ImageUpdateStep() [2/2]

virtual int vOptimizer::ImageUpdateStep ( )
virtual

Reimplemented in iOptimizerADMMLim.

◆ Initialize() [1/2]

int vOptimizer::Initialize ( )

A public function used to initialize the optimizer.

This function does not take any parameter and is used to initialize everything that should be initialized. At the end, it calls the pure virtual InitializeSpecific() function implemented by children.

Returns
An integer reflecting the initialization status; 0 if no problem, another value otherwise.

Definition at line 327 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Initialize() [2/2]

int vOptimizer::Initialize ( )

◆ InitializeSpecific() [1/2]

private virtual int vOptimizer::InitializeSpecific ( )
privatepure virtual

A private function used to initialize everything specific to the child optimizer.

This function is used to initialize everything specific to the optimizer that should be initialized. It is called by the Initialize() function. It is pure virtual so is implemented by children.

Returns
An integer reflecting the initialization status; 0 if no problem, another value otherwise.

Implemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerOneStepLate, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerMLTR, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, iOptimizerMLEM, and iOptimizerSens.

Here is the caller graph for this function:

◆ InitializeSpecific() [2/2]

virtual int vOptimizer::InitializeSpecific ( )
privatepure virtual

◆ NeedPostIteration()

public inline bool vOptimizer::NeedPostIteration ( )
inline

Say if the optimizer needs a post-process loop after iterations are done.

Returns
m_needPostIteration

Definition at line 651 of file include/optimizer/vOptimizer.hh.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ NeedPreIteration()

public inline bool vOptimizer::NeedPreIteration ( )
inline

Say if the optimizer needs a pre-process loop before iterations are done.

Returns
m_needPreIteration

Definition at line 632 of file include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ PreDataUpdateSpecificStep() [1/2]

int vOptimizer::PreDataUpdateSpecificStep ( )
privatevirtual

A private function used to perform any step required by the child optimizer, before the loop on event inside the subset loop.

The vOptimizer implementation just does nothing. It is called by the PreDataUpdateStep() function. It is virtual so it can be overloaded by the child optimizer if needed.

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Reimplemented in iOptimizerADMMLim, and iOptimizerAPPGML.

Definition at line 446 of file code/src/optimizer/vOptimizer.cc.

Here is the caller graph for this function:

◆ PreDataUpdateSpecificStep() [2/2]

virtual int vOptimizer::PreDataUpdateSpecificStep ( )
privatevirtual

Reimplemented in iOptimizerADMMLim, and iOptimizerAPPGML.

◆ PreDataUpdateStep() [1/2]

int vOptimizer::PreDataUpdateStep ( )

A public function used to do stuff that need to be done at the beginning of a subset (before the data update step; i.e. the loop over all events)

It does some reseting for the FOM computation. At the end, it calls the PreDataUpdateSpecificStep() function, which does nothing but being virtual, so it can be overloaded to perform specific stuff at this step by specific optimizers that would need to do so.

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Definition at line 409 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PreDataUpdateStep() [2/2]

int vOptimizer::PreDataUpdateStep ( )

◆ PreImageUpdateSpecificStep() [1/2]

int vOptimizer::PreImageUpdateSpecificStep ( )
privatevirtual

A private function used to perform any step required by the child optimizer, between the loop on event and the image update step.

The vOptimizer implementation just does nothing. It is called by the PreImageUpdateStep() function. It is virtual so it can be overloaded by the child optimizer if needed.

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Reimplemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerOneStepLate, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerMLTR, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, and iOptimizerTemplate.

Definition at line 609 of file code/src/optimizer/vOptimizer.cc.

Here is the caller graph for this function:

◆ PreImageUpdateSpecificStep() [2/2]

virtual int vOptimizer::PreImageUpdateSpecificStep ( )
privatevirtual

◆ PreImageUpdateStep() [1/2]

int vOptimizer::PreImageUpdateStep ( )

A public function used to do stuff that need to be done between the loop over events and the image update step.

It does some reseting for the FOM computation. At the end, it calls the PreImageUpdateSpecificStep() function, which does nothing but being virtual, so it can be overloaded to perform specific stuff at this step by specific optimizers that would need to do so.

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Definition at line 457 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PreImageUpdateStep() [2/2]

int vOptimizer::PreImageUpdateStep ( )

◆ ReadConfigurationFile() [1/2]

virtual int vOptimizer::ReadConfigurationFile ( const string &  a_configurationFile)
pure virtual

◆ ReadConfigurationFile() [2/2]

virtual int vOptimizer::ReadConfigurationFile ( const string &  a_configurationFile)
pure virtual

◆ ReadOptionsList() [1/2]

virtual int vOptimizer::ReadOptionsList ( const string &  a_optionsList)
pure virtual

◆ ReadOptionsList() [2/2]

virtual int vOptimizer::ReadOptionsList ( const string &  a_optionsList)
pure virtual

◆ SensitivitySpecificOperations() [1/2]

virtual int vOptimizer::SensitivitySpecificOperations ( FLTNB  a_data,
FLTNB  a_forwardModel,
FLTNB ap_weight,
FLTNB  a_multiplicativeCorrections,
FLTNB  a_additiveCorrections,
FLTNB  a_blankValue,
FLTNB  a_quantificationFactor,
oProjectionLine ap_Line 
)
privatepure virtual

◆ SensitivitySpecificOperations() [2/2]

virtual int vOptimizer::SensitivitySpecificOperations ( FLTNB  a_data,
FLTNB  a_forwardModel,
FLTNB ap_weight,
FLTNB  a_multiplicativeCorrections,
FLTNB  a_additiveCorrections,
FLTNB  a_blankValue,
FLTNB  a_quantificationFactor,
oProjectionLine ap_Line 
)
privatepure virtual

◆ SetAttenuationImage() [1/2]

void vOptimizer::SetAttenuationImage ( FLTNB ap_attenuationImage,
int  a_thread 
)
inline

Definition at line 490 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetAttenuationImage() [2/2]

void vOptimizer::SetAttenuationImage ( FLTNB ap_attenuationImage,
int  a_thread 
)
inline

Definition at line 498 of file include/optimizer/vOptimizer.hh.

◆ SetCurrentIteration() [1/2]

void vOptimizer::SetCurrentIteration ( int  a_currentIteration)
inline

Definition at line 519 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetCurrentIteration() [2/2]

void vOptimizer::SetCurrentIteration ( int  a_currentTotalSubIteration)

◆ SetCurrentSubset() [1/2]

void vOptimizer::SetCurrentSubset ( int  a_currentSubset)
inline

Definition at line 526 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetCurrentSubset() [2/2]

void vOptimizer::SetCurrentSubset ( int  a_currentSubset)
inline

Definition at line 555 of file include/optimizer/vOptimizer.hh.

◆ SetDataFile()

public inline void vOptimizer::SetDataFile ( vDataFile ap_DataFile)
inline

Set the data file in use.

Parameters
vDataFile*ap_DataFile

Definition at line 462 of file include/optimizer/vOptimizer.hh.

◆ SetDataMode() [1/2]

void vOptimizer::SetDataMode ( int  a_dataMode)
inline

Definition at line 468 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetDataMode() [2/2]

void vOptimizer::SetDataMode ( int  a_dataMode)
inline

Definition at line 476 of file include/optimizer/vOptimizer.hh.

◆ SetDataSpec() [1/2]

void vOptimizer::SetDataSpec ( int  a_dataSpec)
inline

Definition at line 482 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetDataSpec() [2/2]

void vOptimizer::SetDataSpec ( int  a_dataSpec)
inline

Definition at line 490 of file include/optimizer/vOptimizer.hh.

◆ SetDataType() [1/2]

void vOptimizer::SetDataType ( int  a_dataType)
inline

Definition at line 475 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetDataType() [2/2]

void vOptimizer::SetDataType ( int  a_dataType)
inline

Definition at line 483 of file include/optimizer/vOptimizer.hh.

◆ SetFOMFlag() [1/2]

void vOptimizer::SetFOMFlag ( bool  a_optimizerFOMFlag)
inline

Definition at line 497 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetFOMFlag() [2/2]

void vOptimizer::SetFOMFlag ( bool  a_optimizerFOMFlag)
inline

Definition at line 505 of file include/optimizer/vOptimizer.hh.

◆ SetImageConvolverManager()

public vOptimizer::SetImageConvolverManager ( oImageConvolverManager ap_ImageConvolverManager)
inline

Set the Image Convolver Manager Object.

Parameters
ap_ImageConvolverManager

Definition at line 548 of file include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetImageDimensionsAndQuantification() [1/2]

void vOptimizer::SetImageDimensionsAndQuantification ( oImageDimensionsAndQuantification ap_ImageDimensionsAndQuantification)
inline

Definition at line 447 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetImageDimensionsAndQuantification() [2/2]

void vOptimizer::SetImageDimensionsAndQuantification ( oImageDimensionsAndQuantification ap_ImageDimensionsAndQuantification)
inline

Definition at line 448 of file include/optimizer/vOptimizer.hh.

◆ SetImageSpace() [1/2]

void vOptimizer::SetImageSpace ( oImageSpace ap_ImageSpace)
inline

Definition at line 454 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetImageSpace() [2/2]

void vOptimizer::SetImageSpace ( oImageSpace ap_ImageSpace)
inline

Definition at line 455 of file include/optimizer/vOptimizer.hh.

◆ SetImageStatFlag() [1/2]

void vOptimizer::SetImageStatFlag ( bool  a_optimizerImageStatFlag)
inline

Definition at line 504 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetImageStatFlag() [2/2]

void vOptimizer::SetImageStatFlag ( bool  a_optimizerImageStatFlag)
inline

Definition at line 512 of file include/optimizer/vOptimizer.hh.

◆ SetNbTOFBins() [1/2]

void vOptimizer::SetNbTOFBins ( int  a_nbTOFBins)
inline

Definition at line 461 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetNbTOFBins() [2/2]

void vOptimizer::SetNbTOFBins ( int  a_nbTOFBins)
inline

Definition at line 469 of file include/optimizer/vOptimizer.hh.

◆ SetNumbersOfIterationsAndSubsets() [1/2]

void vOptimizer::SetNumbersOfIterationsAndSubsets ( int  a_nbIterations,
int *  ap_nbSubsets 
)
inline

Definition at line 512 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetNumbersOfIterationsAndSubsets() [2/2]

void vOptimizer::SetNumbersOfIterationsAndSubsets ( int  a_nbSubIterationsTotal,
int *  ap_nbSubsets 
)
inline

Definition at line 520 of file include/optimizer/vOptimizer.hh.

◆ SetOptimizerID() [1/2]

void vOptimizer::SetOptimizerID ( const string &  a_optimizerID)
inline

Definition at line 547 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetOptimizerID() [2/2]

void vOptimizer::SetOptimizerID ( const string &  a_optimizerID)
inline

Definition at line 576 of file include/optimizer/vOptimizer.hh.

◆ SetOutputIterations()

public inline void vOptimizer::SetOutputIterations ( bool *  ap_outputIterations)
inline

Set the selected output iterations.

Parameters
bool*ap_outputIterations

Definition at line 527 of file include/optimizer/vOptimizer.hh.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetPenalty() [1/2]

void vOptimizer::SetPenalty ( vPenalty ap_penalty)
inline

Definition at line 576 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetPenalty() [2/2]

void vOptimizer::SetPenalty ( vPenalty ap_penalty)
inline

Definition at line 605 of file include/optimizer/vOptimizer.hh.

◆ SetVerbose() [1/2]

void vOptimizer::SetVerbose ( int  a_verbose)
inline

Definition at line 440 of file code/include/optimizer/vOptimizer.hh.

Here is the caller graph for this function:

◆ SetVerbose() [2/2]

void vOptimizer::SetVerbose ( int  a_verbose)
inline

Definition at line 441 of file include/optimizer/vOptimizer.hh.

◆ ShowHelp() [1/2]

void vOptimizer::ShowHelp ( )

A function used to show help about the optimizer.

This function simply calls the ShowHelpSpecific() function implemented by children.

Definition at line 211 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ShowHelp() [2/2]

void vOptimizer::ShowHelp ( )

◆ ShowHelpSpecific() [1/2]

private virtual void vOptimizer::ShowHelpSpecific ( )
privatepure virtual

A function used to show help about the child module.

This function must describe what the optimizer does and how to use it. It describes in details the different parameters of the optimizer, and how to set them through the use of a configuration file or a list of options. It is pure virtual so is implemented by children. It is private because called by the public ShowHelp() function.

Implemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerOneStepLate, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerMLTR, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, iOptimizerMLEM, and iOptimizerSens.

Here is the caller graph for this function:

◆ ShowHelpSpecific() [2/2]

virtual void vOptimizer::ShowHelpSpecific ( )
privatepure virtual

◆ UpdateVisitedVoxels() [1/2]

int vOptimizer::UpdateVisitedVoxels ( )

A public function used to update the 'visited' voxels after each subset.

This function is called at the end of each subset. Based on the sensitivity image, it labels which voxel has been visited or not during each subset. At the end of the iteration, all voxels that have not been visited in any subset are set to 0. There is a dedicated matrix in the oImageSpace to keep track of visited voxels. Practically, this avoids having those never visited voxels trapped in their initial value if the latter is different from 0.

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Definition at line 900 of file code/src/optimizer/vOptimizer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateVisitedVoxels() [2/2]

int vOptimizer::UpdateVisitedVoxels ( )

Member Data Documentation

◆ m2p_attenuationImage

FLTNB ** vOptimizer::m2p_attenuationImage
protected

The attenuation image currently in use for the current event, one per thread (used for SPECT)

Definition at line 652 of file code/include/optimizer/vOptimizer.hh.

◆ m2p_forwardValues

FLTNB ** vOptimizer::m2p_forwardValues
protected

Buffer for forward projected values, as many as threads and as many as TOF bins

Definition at line 639 of file code/include/optimizer/vOptimizer.hh.

◆ m3p_backwardValues

FLTNB *** vOptimizer::m3p_backwardValues
protected

Buffer for values to be back-projected, as many as threads, as many as TOF bins and as many as backward images

Definition at line 640 of file code/include/optimizer/vOptimizer.hh.

◆ m4p_FOMLogLikelihood

HPFLTNB **** vOptimizer::m4p_FOMLogLikelihood
protected

The log-likelihood, as many as frames, respiratory gates, cardiac gates and threads

Definition at line 660 of file code/include/optimizer/vOptimizer.hh.

◆ m4p_FOMNbBins

uint64_t **** vOptimizer::m4p_FOMNbBins
protected

The number of bins contributing to the FOM computation, as many as frames, respiratory gates, cardiac gates and threads

Definition at line 662 of file code/include/optimizer/vOptimizer.hh.

◆ m4p_FOMNbData

HPFLTNB **** vOptimizer::m4p_FOMNbData
protected

The number of data (counts) contributing to the FOM computation, as many as frames, respiratory gates, cardiac gates and threads

Definition at line 663 of file code/include/optimizer/vOptimizer.hh.

◆ m4p_FOMPenalty

HPFLTNB **** vOptimizer::m4p_FOMPenalty
protected

The contribution of the penalty to the objective function

Definition at line 664 of file code/include/optimizer/vOptimizer.hh.

◆ m4p_FOMRMSE

HPFLTNB **** vOptimizer::m4p_FOMRMSE
protected

The RMSE, as many as frames, respiratory gates, cardiac gates and threads

Definition at line 661 of file code/include/optimizer/vOptimizer.hh.

◆ m_currentIteration

int vOptimizer::m_currentIteration
protected

Current iteration number

Definition at line 656 of file code/include/optimizer/vOptimizer.hh.

◆ m_currentSubIterationInSubStep

int vOptimizer::m_currentSubIterationInSubStep
protected

Current sub iteration within the current sub step

Definition at line 734 of file include/optimizer/vOptimizer.hh.

◆ m_currentSubset

int vOptimizer::m_currentSubset
protected

Current subset number

Definition at line 657 of file code/include/optimizer/vOptimizer.hh.

◆ m_currentSubStep

int vOptimizer::m_currentSubStep
protected

Current sub step number

Definition at line 733 of file include/optimizer/vOptimizer.hh.

◆ m_currentTotalSubIteration

int vOptimizer::m_currentTotalSubIteration
protected

Current total subiteration number (number of iterations x number of substeps + current_sub_iteration)

Definition at line 732 of file include/optimizer/vOptimizer.hh.

◆ m_dataMode

int vOptimizer::m_dataMode
protected

The mode of the data (list-mode or histogram)

Definition at line 649 of file code/include/optimizer/vOptimizer.hh.

◆ m_dataSpec

int vOptimizer::m_dataSpec
protected

The physical specificity of the data (EMISSION or TRANSMISSION)

Definition at line 651 of file code/include/optimizer/vOptimizer.hh.

◆ m_dataType

int vOptimizer::m_dataType
protected

The type of the data (PET, SPECT, ...)

Definition at line 650 of file code/include/optimizer/vOptimizer.hh.

◆ m_emissionCompatibility

bool vOptimizer::m_emissionCompatibility
protected

A flag saying if the optimizer is compatible with emission data

Definition at line 644 of file code/include/optimizer/vOptimizer.hh.

◆ m_histogramCompatibility

bool vOptimizer::m_histogramCompatibility
protected

A flag saying if the optimizer is compatible with histogram data

Definition at line 643 of file code/include/optimizer/vOptimizer.hh.

◆ m_initialValue

FLTNB vOptimizer::m_initialValue
protected

The initial value of the image for the specific optimizer

Definition at line 641 of file code/include/optimizer/vOptimizer.hh.

◆ m_isInPostIteration

bool vOptimizer::m_isInPostIteration
protected

Flag specifying if the optimizer is currently under post-processing loop (after iterations are done)

Definition at line 740 of file include/optimizer/vOptimizer.hh.

◆ m_isInPreIteration

bool vOptimizer::m_isInPreIteration
protected

Flag specifying if the optimizer is currently under pre-processing loop (before iterations are done)

Definition at line 738 of file include/optimizer/vOptimizer.hh.

◆ m_listmodeCompatibility

bool vOptimizer::m_listmodeCompatibility
protected

A flag saying if the optimizer is compatible with list-mode data

Definition at line 642 of file code/include/optimizer/vOptimizer.hh.

◆ m_nbBackwardImages

int vOptimizer::m_nbBackwardImages
protected

The number of backward images used by the specific optimizer

Definition at line 637 of file code/include/optimizer/vOptimizer.hh.

◆ m_nbIterations

int vOptimizer::m_nbIterations
protected

Number of iterations

Definition at line 654 of file code/include/optimizer/vOptimizer.hh.

◆ m_nbSubIterationsInOneIteration

int vOptimizer::m_nbSubIterationsInOneIteration
protected

Total number of subiterations of all sub steps in one iteration

Definition at line 727 of file include/optimizer/vOptimizer.hh.

◆ m_nbSubIterationsTotal

int vOptimizer::m_nbSubIterationsTotal
protected

Total number of subiterations of all sub steps for all iterations

Definition at line 728 of file include/optimizer/vOptimizer.hh.

◆ m_nbSubSteps

int vOptimizer::m_nbSubSteps
protected

Number of sub steps in each iteration

Definition at line 725 of file include/optimizer/vOptimizer.hh.

◆ m_nbTOFBins

int vOptimizer::m_nbTOFBins
protected

The number of TOF bins in use

Definition at line 638 of file code/include/optimizer/vOptimizer.hh.

◆ m_needGlobalSensitivity

bool vOptimizer::m_needGlobalSensitivity
protected

Say that the sensitivity has to be computed at the beginning of the reconstruction process from the whole set of data channels with histogram data, as opposed to the computation from data channels only belonging to the current subset

Definition at line 677 of file code/include/optimizer/vOptimizer.hh.

◆ m_needPostIteration

bool vOptimizer::m_needPostIteration
protected

Flag specifying if the optimizer needs to perform a post-processing loop (after iterations are done)

Definition at line 739 of file include/optimizer/vOptimizer.hh.

◆ m_needPreIteration

bool vOptimizer::m_needPreIteration
protected

Flag specifying if the optimizer needs to perform a pre-processing loop (before iterations are done)

Definition at line 737 of file include/optimizer/vOptimizer.hh.

◆ m_optimizerFOMFlag

bool vOptimizer::m_optimizerFOMFlag
protected

A flag saying if figures-of-merit are computed in the data space

Definition at line 659 of file code/include/optimizer/vOptimizer.hh.

◆ m_optimizerID

string vOptimizer::m_optimizerID
protected

String containing the name provided as the class identifer in the children classes

Definition at line 635 of file code/include/optimizer/vOptimizer.hh.

◆ m_optimizerImageStatFlag

bool vOptimizer::m_optimizerImageStatFlag
protected

A flag saying if some basic statistics about image update are computed

Definition at line 666 of file code/include/optimizer/vOptimizer.hh.

◆ m_requiredPenaltyDerivativesOrder

int vOptimizer::m_requiredPenaltyDerivativesOrder
protected

The penalty derivatives order required by the specific optimizer (-1 if none)

Definition at line 675 of file code/include/optimizer/vOptimizer.hh.

◆ m_transmissionCompatibility

bool vOptimizer::m_transmissionCompatibility
protected

A flag saying if the optimizer is compatible with transmission data

Definition at line 645 of file code/include/optimizer/vOptimizer.hh.

◆ m_verbose

int vOptimizer::m_verbose
protected

The verbose level

Definition at line 636 of file code/include/optimizer/vOptimizer.hh.

◆ mp_correctionStatMean

HPFLTNB * vOptimizer::mp_correctionStatMean
protected

The mean additive update correction value, one per thread to be thread safe

Definition at line 672 of file code/include/optimizer/vOptimizer.hh.

◆ mp_correctionStatVariance

HPFLTNB * vOptimizer::mp_correctionStatVariance
protected

The variance of additive update correction values, one per thread to be thread safe

Definition at line 673 of file code/include/optimizer/vOptimizer.hh.

◆ mp_DataFile

vDataFile* vOptimizer::mp_DataFile
protected

Pointer to the data file object in use

Definition at line 717 of file include/optimizer/vOptimizer.hh.

◆ mp_ImageConvolverManager

oImageConvolverManager* vOptimizer::mp_ImageConvolverManager
protected

Pointer to the oImageConvolverManager object in use

Definition at line 718 of file include/optimizer/vOptimizer.hh.

◆ mp_ImageDimensionsAndQuantification

oImageDimensionsAndQuantification * vOptimizer::mp_ImageDimensionsAndQuantification
protected

Pointer to the image dimensions and quantification object

Definition at line 647 of file code/include/optimizer/vOptimizer.hh.

◆ mp_ImageSpace

oImageSpace * vOptimizer::mp_ImageSpace
protected

Pointer to the image space object in use

Definition at line 648 of file code/include/optimizer/vOptimizer.hh.

◆ mp_imageStatMax

FLTNB * vOptimizer::mp_imageStatMax
protected

The maximum image value, one per thread to be thread safe

Definition at line 669 of file code/include/optimizer/vOptimizer.hh.

◆ mp_imageStatMean

HPFLTNB * vOptimizer::mp_imageStatMean
protected

The mean image value, one per thread to be thread safe

Definition at line 670 of file code/include/optimizer/vOptimizer.hh.

◆ mp_imageStatMin

FLTNB * vOptimizer::mp_imageStatMin
protected

The minimum image value, one per thread to be thread safe

Definition at line 668 of file code/include/optimizer/vOptimizer.hh.

◆ mp_imageStatNbVox

INTNB * vOptimizer::mp_imageStatNbVox
protected

The number of voxels contributing to the image statistics, one per thread to be thread safe

Definition at line 667 of file code/include/optimizer/vOptimizer.hh.

◆ mp_imageStatVariance

HPFLTNB * vOptimizer::mp_imageStatVariance
protected

The image variance value, one per thread to be thread safe

Definition at line 671 of file code/include/optimizer/vOptimizer.hh.

◆ mp_nbSubIterationsInSubSteps

int* vOptimizer::mp_nbSubIterationsInSubSteps
protected

Number of sub iterations for each sub step

Definition at line 726 of file include/optimizer/vOptimizer.hh.

◆ mp_nbSubsets

int * vOptimizer::mp_nbSubsets
protected

Numbers of subsets

Definition at line 655 of file code/include/optimizer/vOptimizer.hh.

◆ mp_outputIterations

bool* vOptimizer::mp_outputIterations
protected

Output iterations (to be stored)

Definition at line 730 of file include/optimizer/vOptimizer.hh.

◆ mp_Penalty

vPenalty * vOptimizer::mp_Penalty
protected

Penalty of the algorithm

Definition at line 676 of file code/include/optimizer/vOptimizer.hh.


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