![]() |
CASToR
1.0
Tomographic Reconstruction (PET/SPECT)
|
00001 00008 #ifndef OPROJECTORMANAGER_HH 00009 #define OPROJECTORMANAGER_HH 1 00010 00011 #include "gVariables.hh" 00012 #include "vScanner.hh" 00013 #include "vProjector.hh" 00014 #include "oSystemMatrix.hh" 00015 #include "oProjectionLine.hh" 00016 #include "vDataFile.hh" 00017 #include "vEvent.hh" 00018 00019 00032 class oProjectorManager 00033 { 00034 // ------------------------------------------------------------------- 00035 // Constructor & Destructor 00036 public: 00043 oProjectorManager(); 00050 ~oProjectorManager(); 00051 00052 00053 // ------------------------------------------------------------------- 00054 // Public member functions 00055 public: 00063 int CheckParameters(); 00073 int Initialize(); 00084 oProjectionLine* ComputeProjectionLine(vEvent* ap_Event, int a_th); 00085 00086 00087 // ------------------------------------------------------------------- 00088 // Public Get & Set functions 00089 public: 00095 inline void SetVerbose(int a_verboseLevel) 00096 {m_verbose = a_verboseLevel;} 00102 inline void SetScanner(vScanner* ap_Scanner) 00103 {mp_Scanner = ap_Scanner;} 00109 inline void SetImageDimensionsAndQuantification(oImageDimensionsAndQuantification* ap_ImageDimensionsAndQuantification) 00110 {mp_ImageDimensionsAndQuantification = ap_ImageDimensionsAndQuantification;} 00116 inline void SetDataFile(vDataFile* ap_DataFile) 00117 {mp_DataFile = ap_DataFile;} 00123 inline void SetComputationStrategy(int a_computationStrategy) 00124 {m_computationStrategy = a_computationStrategy;} 00130 inline void SetOptionsForward(const string& a_optionsForward) 00131 {m_optionsForward = a_optionsForward;} 00137 inline void SetOptionsBackward(const string& a_optionsBackward) 00138 {m_optionsBackward = a_optionsBackward;} 00144 inline void SetOptionsCommon(const string& a_optionsCommon) 00145 {m_optionsCommon = a_optionsCommon;} 00151 inline int GetNbTOFBins() 00152 {return m_nbTOFBins;} 00158 inline int GetComputationStrategy() 00159 {return m_computationStrategy;} 00164 bool IsForwardOperatorCompatibleWithSPECTAttenuationCorrection(); 00169 bool IsBackwardOperatorCompatibleWithSPECTAttenuationCorrection(); 00170 00171 00172 // ------------------------------------------------------------------- 00173 // Private member functions 00174 private: 00187 int ParseOptionsAndInitializeProjectors(); 00188 00189 00190 // ------------------------------------------------------------------- 00191 // Data members 00192 private: 00193 // Scanner and image dimensions 00194 vScanner* mp_Scanner; 00195 oImageDimensionsAndQuantification* 00196 mp_ImageDimensionsAndQuantification; 00197 // Datafile 00198 vDataFile* mp_DataFile; 00199 // TOF and POI options 00200 bool m_applyTOF; 00201 bool m_applyPOI; 00202 int m_nbTOFBins; 00203 // Computation strategy for projection lines 00204 int m_computationStrategy; 00205 // Forward and backward options for projectors 00206 string m_optionsForward; 00207 string m_optionsBackward; 00208 // Common options for projectors 00209 string m_optionsCommon; 00210 // Forward and backward projectors 00211 oSystemMatrix* mp_SystemMatrixForward; 00212 oSystemMatrix* mp_SystemMatrixBackward; 00213 vProjector* mp_ProjectorForward; 00214 vProjector* mp_ProjectorBackward; 00215 bool m_UseSystemMatrixForward; 00216 bool m_UseSystemMatrixBackward; 00217 bool m_UseProjectorForward; 00218 bool m_UseProjectorBackward; 00219 bool m_UseMatchedProjectors; 00220 // Forward and backward projection lines (as many as threads) 00221 oProjectionLine** m2p_ProjectionLines; 00222 // Verbose level 00223 int m_verbose; 00224 // Has been checked ? 00225 bool m_checked; 00226 // Has been initialized ? 00227 bool m_initialized; 00228 }; 00229 00230 #endif