CASToR  1.0
Tomographic Reconstruction (PET/SPECT)
oSensitivityGenerator.hh
Go to the documentation of this file.
00001 
00009 #ifndef OSENSITIVITYGENERATOR_HH
00010 #define OSENSITIVITYGENERATOR_HH 1
00011 
00012 #include "gVariables.hh"
00013 #include "oImageDimensionsAndQuantification.hh"
00014 #include "oProjectorManager.hh"
00015 #include "oImageConvolverManager.hh"
00016 #include "oDeformationManager.hh"
00017 #include "oDynamicModelManager.hh"
00018 #include "oImageSpace.hh"
00019 #include "vDataFile.hh"
00020 #include "vDeformation.hh"
00021 #include "sOutputManager.hh"
00022 #include "vScanner.hh"
00023 
00024 
00025 
00034 class oSensitivityGenerator
00035 {
00036   // -------------------------------------------------------------------
00037   // Constructor & Destructor
00038   public:
00045     oSensitivityGenerator();
00052     ~oSensitivityGenerator();
00053 
00054 
00055   // -------------------------------------------------------------------
00056   // Public member functions
00057   public:
00065     int CheckParameters();
00073     int Initialize();
00082     int Launch();
00083 
00084 
00085   // -------------------------------------------------------------------
00086   // Private member functions
00087   private:
00095     int InitializeAttenuationFiles();
00103     int InitializeNormalizationFiles();
00112     int LaunchCPU();
00113     #ifdef CASTOR_GPU
00114 
00120     int LaunchGPU();
00121     #endif
00122 
00130     int ComputeSensitivityFromNormalizationFile(int a_bed);
00138     int ComputeSensitivityFromScanner(int a_bed);
00154     int ProcessThisLine(oProjectionLine* ap_Line, vEvent* ap_Event, int a_bed, int a_frame, int a_respGate, int a_cardGate, int a_thread);
00155 
00156 
00157   // -------------------------------------------------------------------
00158   // Public Get & Set functions
00159   public:
00165     string GetPathToSensitivityImage();
00171     inline void SetImageDimensionsAndQuantification(oImageDimensionsAndQuantification* ap_ImageDimensionsAndQuantification)
00172            {mp_ImageDimensionsAndQuantification = ap_ImageDimensionsAndQuantification;};
00178     inline void SetImageSpace(oImageSpace* ap_ImageSpace)
00179            {mp_ImageSpace = ap_ImageSpace;};
00185     inline void SetScanner(vScanner* ap_Scanner)
00186            {mp_Scanner = ap_Scanner;}
00192     inline void SetProjectorManager(oProjectorManager* ap_ProjectorManager)
00193            {mp_ProjectorManager = ap_ProjectorManager;};
00199     inline void SetImageConvolverManager(oImageConvolverManager* ap_ImageConvolverManager)
00200            {mp_ImageConvolverManager = ap_ImageConvolverManager;}
00206     inline void SetDeformationManager(oDeformationManager* ap_DeformationManager)
00207            {mp_DeformationManager = ap_DeformationManager;};
00213     inline void SetDataFile(vDataFile** a2p_DataFile)
00214            {m2p_DataFile = a2p_DataFile;};
00220     inline void SetPathToNormalizationFileName(vector<string> ap_pathToNormalizationFileName)
00221            {mp_pathToNormalizationFileName = ap_pathToNormalizationFileName;};
00227     inline void SetNormalizationDataFile(vDataFile*** a3p_NormalizationDataFile)
00228            {m3p_NormalizationDataFile = a3p_NormalizationDataFile;};
00234     inline void SetPathToAttenuationImage(string a_pathToAttenuationImage)
00235            {m_pathToAttenuationImage = a_pathToAttenuationImage;};
00242     inline void SetNumberOfAtnGateImages(int a_nbAtnRespGateImages, int a_nbAtnCardGateImages)
00243            {m_nbAtnRespGateImages = a_nbAtnRespGateImages; m_nbAtnCardGateImages = a_nbAtnCardGateImages;};
00249     inline void SetGPUflag(bool a_flagGPU)
00250            {m_flagGPU = a_flagGPU;};
00256     inline void SetVerbose(int a_verboseLevel)
00257            {m_verbose = a_verboseLevel;};
00258 
00259 
00260   // -------------------------------------------------------------------
00261   // Data members
00262   private:
00263     string m_pathToSensitivityImage;                  
00264     oImageDimensionsAndQuantification* 
00265                  mp_ImageDimensionsAndQuantification; 
00266     oImageSpace* mp_ImageSpace;                       
00267     vScanner* mp_Scanner;                             
00268     oProjectorManager* mp_ProjectorManager;           
00269     oImageConvolverManager* mp_ImageConvolverManager; 
00270     oDeformationManager* mp_DeformationManager;       
00271     vDataFile** m2p_DataFile;                         
00272     vector<string> mp_pathToNormalizationFileName;    
00273     vDataFile*** m3p_NormalizationDataFile;           
00274     bool m_OneNormalizationFileForAllBeds;            
00275     bool m_OneNormalizationFileForAllFrames;          
00276     string m_pathToAttenuationImage;                  
00277     bool m_attenuationFlag;                           
00278     bool m_forwardProjectAttenuation;                 
00279     int m_nbAtnRespGateImages;                        
00280     int m_nbAtnCardGateImages;                        
00281     uint64_t* mp_lineCounter;                         
00282     bool m_flagGPU;                                   
00283     int m_verbose;                                    
00284     bool m_checked;                                   
00285     bool m_initialized;                               
00286 };
00287 
00288 #endif
00289 
00290 
00291 
00292 
00293 
00294 
00295 
00296 
00297 
00298 
00299 
00300 
00301 
 All Classes Files Functions Variables Typedefs Defines