![]() |
CASToR
1.0
Tomographic Reconstruction (PET/SPECT)
|
00001 00008 #ifndef IPROJECTORIRIS_HH 00009 #define IPROJECTORIRIS_HH 1 00010 00011 #include "gVariables.hh" 00012 #include "sAddonManager.hh" 00013 #include "vProjector.hh" 00014 #include "sRNG.hh" 00015 00016 00023 class iProjectorIRIS : public vProjector 00024 { 00025 // ------------------------------------------------------------------- 00026 // Constructor & Destructor 00027 public: 00034 iProjectorIRIS(); 00041 ~iProjectorIRIS(); 00042 00043 00044 // ------------------------------------------------------------------- 00045 // Public member functions 00046 public: 00047 // Function for automatic insertion (put the class name as the parameter and do not add semi-column at the end of the line) 00048 FUNCTION_PROJECTOR(iProjectorIRIS) 00059 int ReadConfigurationFile(const string& a_configurationFile); 00070 int ReadOptionsList(const string& a_optionsList); 00079 INTNB EstimateMaxNumberOfVoxelsPerLine(); 00080 00081 00082 // ------------------------------------------------------------------- 00083 // Private member functions 00084 private: 00093 void ShowHelpSpecific(); 00103 int CheckSpecificParameters(); 00110 int InitializeSpecific(); 00120 int ProjectWithoutTOF( int a_direction, oProjectionLine* ap_ProjectionLine ); 00131 int ProjectWithTOFPos( int a_direction, oProjectionLine* ap_ProjectionLine ); 00142 int ProjectWithTOFBin( int a_direction, oProjectionLine* ap_ProjectionLine ); 00149 int ComputeIDRF_CDF(int a_angleId); 00158 int GenerateIRISRdmPos(float ap_generatedPos[3], float a_alpha, float a_beta); 00169 int FindGreaterValue(float *ap_val, float a_key, int a_maxValue, int a_minStart=0, int a_maxStart=0); 00170 00171 00172 // ------------------------------------------------------------------- 00173 // Data members 00174 private: 00175 // IDRFs parameters 00176 string* mp_pathToIDRFFiles; 00177 float* mp_IDRF; 00178 float** m2p_IDRF_CDFs; 00179 int m_nbLinesPerLOR; 00180 int m_nVoxDepthIDRF; 00181 int m_nVoxTransaxialIDRF; 00182 int m_nVoxAxialIDRF; 00183 int m_nVoxXYZIDRF; 00184 int m_nBetaAnglesIDRF; 00185 int m_nAlphaAnglesIDRF; 00186 FLTNB m_sizeVoxDepthIDRF; 00187 FLTNB m_sizeVoxTransaxialIDRF; 00188 FLTNB m_sizeVoxAxialIDRF; 00189 FLTNB m_stepBetaAnglesIDRF; 00190 FLTNB m_stepAlphaAnglesIDRF; 00191 }; 00192 00193 00194 // Class for automatic insertion (set here the visible projector's name as the first parameter, 00195 // put the class name as the second parameter and do NOT add semi-colon at the end of the line) 00196 CLASS_PROJECTOR(IRIS,iProjectorIRIS) 00197 00198 #endif 00199