CASToR  2.0
Tomographic Reconstruction (PET/SPECT/CT)
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
sScannerManager Class Reference

Singleton class that Instantiate and initialize the scanner object. More...

#include <sScannerManager.hh>

Collaboration diagram for sScannerManager:
Collaboration graph

Public Member Functions

void Describe ()
 Call the eponym function from the Scanner object (if initialized) More...
 
int CheckParameters ()
 Check if all parameters have been correctly initialized, and call the CheckParameters function of the scanner object. More...
 
int Initialize ()
 Initialization :
. More...
 
int ShowScannersDescription ()
 Get the description associated to the different scanners and print all on screen.
Walk through the scanner repository and look for the keyword "description" in .geom file and .hscan file. More...
 
int FindScannerSystem (string a_scannerName)
 Look for a file matching with the scanner name in parameter inside the scanner repository. More...
 
int InitScannerWithFile (string a_pathScanFile, string a_scannerName, int a_fileTypeFlag)
 Initialize member variables (file path, file type, and scanner name) with the provided arguments. More...
 
int BuildScannerObject ()
 Instantiate the specific scanner object related to the modality, and set verbosity of scanner object. More...
 
int GetGeometricInfoFromDataFile (string a_pathToDataFilename)
 Call the specialized function of the scanner object in order to get geometric informations from the datafile header. More...
 
int InstantiateScanner ()
 Instantiate scanner using the related function in the scanner classes. More...
 
int BuildLUT ()
 Call the eponym function of the scanner class. More...
 
int GetModalityFromString (string a_systemStr)
 A simple utility function which returns the integer
corresponding to the system string passed in parameter. More...
 
bool HasUserScannerFile ()
 
string GetPathToScannerFile ()
 
string GetScannerName ()
 
int GetScannerType ()
 
vScannerGetScannerObject ()
 
int GetSystemNbElts ()
 
void SetVerbose (int a_verboseLevel)
 set verbosity More...
 
void SetImageDimensionsAndQuantification (oImageDimensionsAndQuantification *ap_ID)
 Set the pointer to the image dimensions and quantification object. More...
 
void SetSaveLUTFlag (bool a_flag)
 Set to on the flag indicating a LUT generated by a geom file should be written on disk or not. More...
 
bool SaveLUTFlag ()
 Get flag indicating a LUT generated by a geom file should be written on disk or not. More...
 
int64_t PROJ_GetModalityStopValueMainLoop ()
 Get the stop value for the main loop of analytic projection depending on the modality. More...
 
int64_t PROJ_GetModalityStartValueInnerLoop (int64_t a_elt1)
 Get the start value for the inner loop of analytic projection depending on the modality. More...
 
int64_t PROJ_GetCurrentProgression (int64_t a_elt1, int64_t a_elt2, int64_t *ap_nbEltsArray, int a_nbRGates, int a_nbCGates, int a_fr, int a_rg, int a_cg)
 Get numerator value according to the modality to compute percent progression during the analytical projection process. More...
 
int64_t PROJ_GetProgressionFinalValue ()
 Get numerator value according to the modality to compute percent progression during the projection process. More...
 
int GetSPECTSpecificParameters (uint16_t *ap_nbOfProjections, uint16_t *ap_nbHeads, FLTNB *ap_acquisitionZoom, uint16_t *ap_nbOfBins, FLTNB *ap_pixSizeXY, FLTNB *&ap_angles, FLTNB *&ap_CORtoDetectorDistance, int *ap_headRotDirection)
 Transfer geometric information recovered from the datafile to the scanner object. More...
 
int GetCTSpecificParameters (uint16_t *ap_nbOfProjections, FLTNB *&ap_angles, int *ap_headRotDirection)
 Transfer geometric information recovered from the datafile to the scanner object. More...
 
int PROJ_GetPETSpecificParameters (FLTNB *ap_maxAxialDiffmm)
 Transfer addresses to each geometric parameter of the PET scanner objets to the corresponding pointer of the datafile passed as argument. More...
 
int PROJ_SetPETSpecificParameters (FLTNB a_maxAxialDiffmm)
 Deliver to the PET scanner object all informations provided from the datafile header. More...
 
int PROJ_SetSPECTSpecificParameters (uint16_t *ap_nbOfBins, uint32_t a_nbOfProjections, FLTNB a_firstAngle, FLTNB a_stepAngle, FLTNB *ap_projectionAngles, FLTNB a_CORtoDetectorDistance, string a_rotDirection)
 Deliver to the SPECT scanner object all informations provided from the acquisition parameters. More...
 

Static Public Member Functions

static sScannerManagerGetInstance ()
 Instanciate the singleton object and Initialize member variables if not already done, return a pointer to this object otherwise. More...
 

Private Member Functions

 sScannerManager ()
 sScannerManager constructor. More...
 
 ~sScannerManager ()
 sScannerManager destructor. More...
 
 sScannerManager (sScannerManager const &)
 
void operator= (sScannerManager const &)
 
int GetAvailableScanners (vector< string > *ap_scannerNames)
 Gather all the names of the header files (.geom & .hscan) in the repository folder in the vector<string> passed in parameter. More...
 

Private Attributes

vScannermp_Scanner
 
oImageDimensionsAndQuantificationmp_ID
 
int m_verbose
 
string m_pathToScannerFile
 
string m_scannerName
 
bool m_hasUserScannerFile
 
bool m_hasGenericScannerFile
 
bool m_allParametersChecked
 
bool m_saveLUTFlag
 

Static Private Attributes

static sScannerManagermp_Instance = NULL
 

Detailed Description

Singleton class that Instantiate and initialize the scanner object.

This class Instantiate and initialize the scanner object depending on its initilization file (generic .geom file or user LUT).
It holds several informations on the system and can be accessed from every class.

Definition at line 72 of file sScannerManager.hh.

Constructor & Destructor Documentation

sScannerManager::sScannerManager ( )
private

sScannerManager constructor.

It is private at this class is singleton.
It should be instanciated using the GetInstance() function
Initialize the member variables to their default values.

Definition at line 47 of file sScannerManager.cc.

Here is the caller graph for this function:

sScannerManager::~sScannerManager ( )
private

sScannerManager destructor.

Definition at line 67 of file sScannerManager.cc.

sScannerManager::sScannerManager ( sScannerManager const &  )
inlineprivate

Definition at line 390 of file sScannerManager.hh.

Member Function Documentation

int sScannerManager::BuildLUT ( )

Call the eponym function of the scanner class.

Returns
0 if success. Positive value otherwise

Definition at line 491 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int sScannerManager::BuildScannerObject ( )

Instantiate the specific scanner object related to the modality, and set verbosity of scanner object.

Definition at line 377 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int sScannerManager::CheckParameters ( )

Check if all parameters have been correctly initialized, and call the CheckParameters function of the scanner object.

Returns
0 if success. Positive value otherwise

Definition at line 81 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

void sScannerManager::Describe ( )

Call the eponym function from the Scanner object (if initialized)

Definition at line 132 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int sScannerManager::FindScannerSystem ( string  a_scannerName)

Look for a file matching with the scanner name in parameter inside the scanner repository.

Parameters
a_scannerName: string containing name of the required scanner
Returns
0 if success (scanner found). Positive value otherwise

Definition at line 249 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int sScannerManager::GetAvailableScanners ( vector< string > *  ap_scannerNames)
private

Gather all the names of the header files (.geom & .hscan) in the repository folder in the vector<string> passed in parameter.

Parameters
ap_scannerNames: vector list of string to recover the available scanner names
Returns
0 if sucess, positive value otherwise

Definition at line 391 of file sScannerManager.hh.

Here is the caller graph for this function:

int sScannerManager::GetCTSpecificParameters ( uint16_t *  ap_nbOfProjections,
FLTNB *&  ap_angles,
int *  ap_headRotDirection 
)

Transfer geometric information recovered from the datafile to the scanner object.

Parameters
ap_nbOfProjections: number of views/projections
ap_angles: an array containing angles for each view
ap_headRotDirection: head rotation direction
Returns
0 if success, positive value otherwise

Definition at line 685 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int sScannerManager::GetGeometricInfoFromDataFile ( string  a_pathToDataFilename)

Call the specialized function of the scanner object in order to get geometric informations from the datafile header.

Parameters
a_path: string containing the path to datafile header
Returns
0 if success. Positive value otherwise

Definition at line 429 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

static sScannerManager * sScannerManager::GetInstance ( )
inlinestatic

Instanciate the singleton object and Initialize member variables if not already done, return a pointer to this object otherwise.

Returns
instance of the sScannerManager singleton

Definition at line 83 of file sScannerManager.hh.

Here is the call graph for this function:

Here is the caller graph for this function:

int sScannerManager::GetModalityFromString ( string  a_systemStr)

A simple utility function which returns the integer
corresponding to the system string passed in parameter.

Parameters
a_systemStr: String corresponding to a system (PET, CT, etc..)
Returns
The integer corresponding to the scaner, as defined in the SCANNER_TYPE macro

Definition at line 575 of file sScannerManager.cc.

Here is the caller graph for this function:

string sScannerManager::GetPathToScannerFile ( )
inline
Returns
the path to the scanner file

Definition at line 196 of file sScannerManager.hh.

Here is the caller graph for this function:

string sScannerManager::GetScannerName ( )
inline
Returns
the scanner name

Definition at line 202 of file sScannerManager.hh.

Here is the caller graph for this function:

vScanner * sScannerManager::GetScannerObject ( )
inline
Returns
the vScanner object

Definition at line 215 of file sScannerManager.hh.

Here is the caller graph for this function:

int sScannerManager::GetScannerType ( )
inline
Returns
the scanner type as returned by the scanner object, or SCANNER_UNKNOWN if the scanner object has not been initialized

Definition at line 209 of file sScannerManager.hh.

Here is the call graph for this function:

Here is the caller graph for this function:

int sScannerManager::GetSPECTSpecificParameters ( uint16_t *  ap_nbOfProjections,
uint16_t *  ap_nbHeads,
FLTNB ap_acquisitionZoom,
uint16_t *  ap_nbOfBins,
FLTNB ap_pixSizeXY,
FLTNB *&  ap_angles,
FLTNB *&  ap_CORtoDetectorDistance,
int *  ap_headRotDirection 
)

Transfer geometric information recovered from the datafile to the scanner object.

Parameters
ap_nbOfProjections: number of views/projections
ap_nbHeads: number of heads in the SPECT system
ap_acquisitionZoom: zoom during acquisition for monolithic detectors
ap_nbOfBins: 2 elements array containing transaxial number of bins
ap_pixSizeXY: 2 elements array containing transaxial/axial pixel sizes
ap_angles: an array containing angles for each view
ap_CORtoDetectorDistance: a distance between the center of rotation and the detector
ap_headRotDirection: head rotation direction
Returns
0 if success, positive value otherwise

Definition at line 640 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int sScannerManager::GetSystemNbElts ( )
inline
Returns
the number of elements in the system

Definition at line 221 of file sScannerManager.hh.

Here is the call graph for this function:

Here is the caller graph for this function:

bool sScannerManager::HasUserScannerFile ( )
inline
Returns
true if the scanner file is an user LUT, false otherwise (generic file is used)

Definition at line 190 of file sScannerManager.hh.

int sScannerManager::Initialize ( )

Initialization :
.

  • check if all parameters of the manager have been checked
  • call the initialization function of the scanner object
    Returns
    0 if success. Positive value otherwise

Definition at line 164 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int sScannerManager::InitScannerWithFile ( string  a_pathScanFile,
string  a_scannerName,
int  a_fileTypeFlag 
)

Initialize member variables (file path, file type, and scanner name) with the provided arguments.

Parameters
a_pathScanFile: string containing the path to the scanner file
a_scannerName: string containing the name of the required scanner
a_fileTypeFlag: string containing the type of the scanner file (0=lut, 1=geom)
Returns
0 if success (scanner found). Positive value otherwise

Definition at line 343 of file sScannerManager.cc.

Here is the caller graph for this function:

int sScannerManager::InstantiateScanner ( )

Instantiate scanner using the related function in the scanner classes.

Definition at line 457 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

void sScannerManager::operator= ( sScannerManager const &  )
inlineprivate

Definition at line 391 of file sScannerManager.hh.

int64_t sScannerManager::PROJ_GetCurrentProgression ( int64_t  a_elt1,
int64_t  a_elt2,
int64_t *  ap_nbEltsArray,
int  a_nbRGates,
int  a_nbCGates,
int  a_fr,
int  a_rg,
int  a_cg 
)

Get numerator value according to the modality to compute percent progression during the analytical projection process.

Parameters
a_elt1: Current nb of processed #1 crystals (PET), projections (SPECT)
a_elt2: Current nb of processed #2 crystals (PET), crystals (SPECT)
ap_nbEltsArray: Total number of elements processed for each #1 crystals (PET/CT systems)
a_nbRGates
a_nbCGates
a_fr
a_rg
a_cg
Returns
the required progression value if success, negative value otherwise

Definition at line 826 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int64_t sScannerManager::PROJ_GetModalityStartValueInnerLoop ( int64_t  a_elt1)

Get the start value for the inner loop of analytic projection depending on the modality.

Parameters
a_elt1: Current nb of processed crystals (PET), projections (SPECT)
Returns
the required stop value if success, NEGATIVE value otherwise

Definition at line 771 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int64_t sScannerManager::PROJ_GetModalityStopValueMainLoop ( )

Get the stop value for the main loop of analytic projection depending on the modality.

Returns
the required stop value if success, NEGATIVE value otherwise

Definition at line 723 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int sScannerManager::PROJ_GetPETSpecificParameters ( FLTNB ap_maxAxialDiffmm)

Transfer addresses to each geometric parameter of the PET scanner objets to the corresponding pointer of the datafile passed as argument.

Parameters
ap_maxAxialDiffmm: max axial difference in mm between 2 crystals forming a lor
Returns
0 if success, positive value otherwise

Definition at line 952 of file sScannerManager.cc.

Here is the call graph for this function:

int64_t sScannerManager::PROJ_GetProgressionFinalValue ( )

Get numerator value according to the modality to compute percent progression during the projection process.

Returns
the required progression value if success, negative value otherwise

Definition at line 877 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int sScannerManager::PROJ_SetPETSpecificParameters ( FLTNB  a_maxAxialDiffmm)

Deliver to the PET scanner object all informations provided from the datafile header.

Parameters
a_maxAxialDiffmm: max axial difference in mm between 2 crystals forming a lor
Returns
0 if success, positive value otherwise

Definition at line 922 of file sScannerManager.cc.

Here is the call graph for this function:

int sScannerManager::PROJ_SetSPECTSpecificParameters ( uint16_t *  ap_nbOfBins,
uint32_t  a_nbOfProjections,
FLTNB  a_firstAngle,
FLTNB  a_stepAngle,
FLTNB ap_projectionAngles,
FLTNB  a_CORtoDetectorDistance,
string  a_rotDirection 
)

Deliver to the SPECT scanner object all informations provided from the acquisition parameters.

Parameters
ap_nbOfBins: 2 elements array containing transaxial number of bins
a_nbOfProjections: number of views/projections
a_firstAngle: angle of the first view
a_lastAngle: angle of the last view
ap_projectionAngles: an array containing angles for each view
a_CORtoDetectorDistance: a distance between the center of rotation and the detector
a_RotDirection: Rotation direction of the head (clockwise/counter-clockwise)

For analytical projection, this data is provided from the command-line options

Returns
0 if success, positive value otherwise

Definition at line 996 of file sScannerManager.cc.

Here is the call graph for this function:

bool sScannerManager::SaveLUTFlag ( )
inline

Get flag indicating a LUT generated by a geom file should be written on disk or not.

Returns
true if scanner LUT has to be saved, false otherwise

Definition at line 251 of file sScannerManager.hh.

Here is the caller graph for this function:

void sScannerManager::SetImageDimensionsAndQuantification ( oImageDimensionsAndQuantification ap_ID)
inline

Set the pointer to the image dimensions and quantification object.

Parameters
oImageDimensionsAndQuantification*ap_ID

Definition at line 235 of file sScannerManager.hh.

Here is the caller graph for this function:

void sScannerManager::SetSaveLUTFlag ( bool  a_flag)
inline

Set to on the flag indicating a LUT generated by a geom file should be written on disk or not.

Parameters
a_flag

Definition at line 243 of file sScannerManager.hh.

Here is the caller graph for this function:

void sScannerManager::SetVerbose ( int  a_verboseLevel)
inline

set verbosity

Parameters
a_verboseLevel

Definition at line 228 of file sScannerManager.hh.

Here is the caller graph for this function:

int sScannerManager::ShowScannersDescription ( )

Get the description associated to the different scanners and print all on screen.
Walk through the scanner repository and look for the keyword "description" in .geom file and .hscan file.

Returns
0 if success, positive value otherwise

Definition at line 196 of file sScannerManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

bool sScannerManager::m_allParametersChecked
private

Boolean indicating if all variables of the class have been checked

Definition at line 413 of file sScannerManager.hh.

bool sScannerManager::m_hasGenericScannerFile
private

Boolean indicating if the scanner geometry if defined by a generic file

Definition at line 412 of file sScannerManager.hh.

bool sScannerManager::m_hasUserScannerFile
private

Boolean indicating if the scanner geometry if defined by a user LUT

Definition at line 411 of file sScannerManager.hh.

string sScannerManager::m_pathToScannerFile
private

String containing the path to the scanner file

Definition at line 409 of file sScannerManager.hh.

bool sScannerManager::m_saveLUTFlag
private

Flag indicating a LUT generated by a geom file should be written on disk or not.

Definition at line 414 of file sScannerManager.hh.

string sScannerManager::m_scannerName
private

String containing the scanner name

Definition at line 410 of file sScannerManager.hh.

int sScannerManager::m_verbose
private

Verbosity

Definition at line 408 of file sScannerManager.hh.

oImageDimensionsAndQuantification* sScannerManager::mp_ID
private

Pointer to the image dimensions and quantification object

Definition at line 407 of file sScannerManager.hh.

sScannerManager * sScannerManager::mp_Instance = NULL
staticprivate

Pointer to the instance of this class

Definition at line 405 of file sScannerManager.hh.

vScanner* sScannerManager::mp_Scanner
private

Pointer to the Scanner object

Definition at line 406 of file sScannerManager.hh.


The documentation for this class was generated from the following files: