![]() |
CASToR
1.0
Tomographic Reconstruction (PET/SPECT)
|
00001 00008 #ifndef OOPTIMIZERMANAGER_HH 00009 #define OOPTIMIZERMANAGER_HH 1 00010 00011 #include "gVariables.hh" 00012 #include "vOptimizer.hh" 00013 #include "vPenalty.hh" 00014 #include "oImageSpace.hh" 00015 #include "vDataFile.hh" 00016 00017 00029 class oOptimizerManager 00030 { 00031 // ------------------------------------------------------------------- 00032 // Constructor & Destructor 00033 public: 00040 oOptimizerManager(); 00047 ~oOptimizerManager(); 00048 00049 00050 // ------------------------------------------------------------------- 00051 // Public member functions 00052 public: 00060 int CheckParameters(); 00070 int Initialize(); 00080 int PreDataUpdateStep(int a_iteration, int a_nbIterations, int a_subset, int a_nbSubsets); 00090 int PostDataUpdateStep(int a_iteration, int a_nbIterations, int a_subset, int a_nbSubsets); 00109 int DataUpdateStep( oProjectionLine* ap_Line, oImageSpace* ap_Image, vEvent* ap_Event, 00110 int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, 00111 int a_iteration, int a_thread ); 00122 int ImageUpdateStep( oImageSpace* ap_Image, int a_iteration, int a_nbSubsets ); 00123 00124 00125 // ------------------------------------------------------------------- 00126 // Private member functions 00127 private: 00140 int ParseOptionsAndInitializeOptimizerAndPenalty(); 00141 00142 00143 // ------------------------------------------------------------------- 00144 // Public Get & Set functions 00145 public: 00151 inline void SetVerbose(int a_verboseLevel) 00152 {m_verbose = a_verboseLevel;} 00158 inline void SetOptionsOptimizer(const string& a_optionsOptimizer) 00159 {m_optionsOptimizer = a_optionsOptimizer;} 00165 inline void SetOptionsPenalty(const string& a_optionsPenalty) 00166 {m_optionsPenalty = a_optionsPenalty;} 00172 inline void SetImageDimensionsAndQuantification(oImageDimensionsAndQuantification* ap_ImageDimensionsAndQuantification) 00173 {mp_ImageDimensionsAndQuantification = ap_ImageDimensionsAndQuantification;} 00179 inline void SetNbTOFBins(int a_nbTOFBins) 00180 {m_nbTOFBins = a_nbTOFBins;} 00186 inline void SetDataMode(int a_dataMode) 00187 {m_dataMode = a_dataMode;} 00193 inline void SetDataType(int a_dataType) 00194 {m_dataType = a_dataType;} 00200 inline void SetOptimizerFOMFlag(bool a_optimizerFOMFlag) 00201 {m_optimizerFOMFlag = a_optimizerFOMFlag;} 00207 inline void SetOptimizerImageStatFlag(bool a_optimizerImageStatFlag) 00208 {m_optimizerImageStatFlag = a_optimizerImageStatFlag;} 00213 inline int GetNbBackwardImages() 00214 {return mp_Optimizer->GetNbBackwardImages();} 00219 inline FLTNB GetInitialValue() 00220 {return mp_Optimizer->GetInitialValue();} 00221 00222 00223 // ------------------------------------------------------------------- 00224 // Data members 00225 private: 00226 oImageDimensionsAndQuantification* 00227 mp_ImageDimensionsAndQuantification; 00228 int m_dataMode; 00229 int m_dataType; 00230 int m_nbTOFBins; 00231 string m_optionsOptimizer; 00232 string m_optionsPenalty; 00233 bool m_optimizerFOMFlag; 00234 bool m_optimizerImageStatFlag; 00235 vOptimizer* mp_Optimizer; 00236 vPenalty* mp_Penalty; 00237 int m_verbose; 00238 }; 00239 00240 #endif