CASToR  1.0
Tomographic Reconstruction (PET/SPECT)
iProjectorIRIS.hh
Go to the documentation of this file.
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 
 All Classes Files Functions Variables Typedefs Defines