CASToR  1.1
Tomographic Reconstruction (PET/SPECT)
 All Classes Files Functions Variables Typedefs Macros Groups Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
iDataFileSPECT Class Reference

Inherit from vDataFile. Class that manages the reading of a SPECT input file (header + data). More...

#include <iDataFileSPECT.hh>

Inheritance diagram for iDataFileSPECT:
Inheritance graph
Collaboration diagram for iDataFileSPECT:
Collaboration graph

Public Member Functions

 iDataFileSPECT ()
 iDataFileSPECT constructor. Initialize the member variables to their default values. More...
 
 ~iDataFileSPECT ()
 iDataFileSPECT destructor. More...
 
int ReadSpecificInfoInHeader (bool a_affectQuantificationFlag)
 Read through the header file and recover specific SPECT information. More...
 
int ComputeSizeEvent ()
 Computation of the size of each event according to the mandatory/optional correction fields. More...
 
int PrepareDataFile ()
 Store different kind of information inside arrays (data relative to specific correction as well as basic raw data for the case data is loaded in RAM)
Use the flag provided by the user to determine how the data has to be sorted (preloaded or read on the fly) More...
 
vEventGetEventFromBuffer (char *ap_buffer, int a_th)
 Read an event from the position pointed by 'ap_buffer', parse the generic or modality-specific information, and store them in the (multithreaded) 'm2p_BufferEvent' object. More...
 
int InitAngles (FLTNB *ap_angles)
 allocate memory for the mp_angles variable using m_nbProjections and initialize the projection angles with the provided list of values More...
 
int InitCorToDetectorDistance (FLTNB *ap_CORtoDetectorDistance)
 allocate memory for the ap_CORtoDetectorDistance variable using m_nbProjections, and initialize the projection angles with the provided list of values More...
 
int PROJ_InitFile ()
 Initialize the fstream objets for output writing as well as some other variables specific to the Projection script (Event-based correction flags, Estimated size of data file) More...
 
int PROJ_WriteEvent (vEvent *ap_Event, int a_th)
 Write event according to the chosen type of data. More...
 
int PROJ_WriteHeader ()
 Generate a header file according to the projection and data output informations.
Used by Projection algorithm. More...
 
int PROJ_GetScannerSpecificParameters ()
 Get SPECT specific parameters for projections from the scanner object, through the scannerManager. More...
 
uint16_t GetNbProjections ()
 
uint16_t GetNbBins (int axis)
 
void SetEventKindFlagOn ()
 set to true the flag indicating the presence of the kind of a list-mode event in the datafile More...
 
void SetIsotope (string a_value)
 initialize the isotope string value More...
 
string GetIsotope ()
 
void SetNbBins (uint16_t a_binTrs, uint16_t a_binAxl)
 initialize the bin values More...
 
void SetNbProjections (uint16_t a_nbProjections)
 initialize the number of projections More...
 
void SetHeadRotDirection (int a_direction)
 initialize the rotation direction of the gamma camera(s) More...
 
bool GetEventKindFlag ()
 Simply return m_eventKindFlag. More...
 
bool GetScatCorrectionFlag ()
 Simply return m_scatCorrectionFlag. More...
 
bool GetNormCorrectionFlag ()
 Simply return m_normCorrectionFlag. More...
 
- Public Member Functions inherited from vDataFile
 vDataFile ()
 vDataFile constructor. More...
 
virtual ~vDataFile ()
 vDataFile destructor. More...
 
int ReadInfoInHeader (bool a_affectQuantificationFlag=true)
 Read and check general information from the header datafile
Call the ReadSpecificInformationInHeader() function implemented in child classes. More...
 
int CheckParameters ()
 Check the initialization of member variables
Call the CheckSpecificParameters() function implemented in child classes. More...
 
int InitializeFile ()
 Instantiate the fstream objets for input reading and check if the related datafile's existence and consistency.
Also init the char* buffers for event read directly from files. More...
 
void ResetBufferRange ()
 Simply set the m_1stIdxArrayEvents and m_lastIdxArrayEvents to -1 only if the percentage load is strictly between 0 and 100. More...
 
int FillBuffer (int64_t a_eventIndex)
 Fill 'mp_arrayEvents' from the 'a_eventIndex' position in the data file.
The filling process stops after 'm_sizeArrayEvents' new events have been added, or if we reach the last event of the datafile. More...
 
vEventGetEventWithAscendingOrderAssumption (int64_t a_eventIndex, int64_t a_eventIndexLimit, int a_th)
 According to the current part of the datafile loaded in memory, either read from this buffer or directly from datafile. More...
 
vEventGetEventWithoutOrderAssumption (int64_t a_eventIndex, int a_th)
 According to the current part of the datafile loaded in memory, either read from this buffer or directly from datafile. More...
 
vEventGetEventFromFile (int64_t a_eventIndex, int a_th)
 Return the a_eventIndex event from the datafile. More...
 
void GetEventIndexStartAndStop (int64_t *ap_indexStart, int64_t *ap_indexStop, int a_subsetNum=0, int a_NbSubsets=1)
 Compute the index start and stop of the events loop with respect to the current subset and MPI size and rank. More...
 
int CheckConsistencyWithAnotherBedDatafile (vDataFile *ap_Datafile)
 Check consistency between 'this' and the provided datafile as two bed positions. More...
 
int PROJ_WriteData ()
 Write/Merge chunk of data in a general data file. More...
 
int PROJ_DeleteTmpDatafile ()
 Delete temporary datafile used for multithreaded output writing if needed. More...
 
vEventPROJ_GenerateEvent (int idx_elt1, int idx_elt2, int a_th)
 Generate a standard event and set up its ID
Used by the projection, list-mode sensitivity generation, and datafile converter scripts. More...
 
int GetBedIndex ()
 
int GetDataMode ()
 
int GetDataType ()
 
int64_t GetSize ()
 
int64_t GetEventSize ()
 
string GetHeaderDataFileName ()
 
string GetDataFileName ()
 
int64_t GetStartTime ()
 
int64_t GetDuration ()
 
FLTNB GetCalibrationFactor ()
 
FLTNBGetPOIResolution ()
 
bool GetPOIInfoFlag ()
 
bool GetIgnorePOIFlag ()
 
virtual int GetMaxRingDiff ()
 Return an error by default.
This function is surcharged by the PET (and CT) scanner daughter class. More...
 
void SetDataMode (int a_dataMode)
 set the data mode More...
 
void SetDataType (int a_dataType)
 set the data type More...
 
void SetBedIndex (int a_bedIndex)
 set the bed index corresponding to this data file More...
 
void SetPercentageLoad (int a_percentageLoad)
 Set the percentage of the data file that will be loaded in memory. More...
 
int GetPercentageLoad ()
 Get the percentage of the data file that will be loaded in memory. More...
 
void SetVerbose (int a_verboseLevel)
 set verbosity More...
 
int GetVerbose ()
 Get the verbose level. More...
 
void SetImageDimensionsAndQuantification (oImageDimensionsAndQuantification *ap_ImageDimensionsAndQuantification)
 set the pointer to the oImageDimensionsAndQuantification object More...
 
void SetPOIResolution (FLTNB ap_value[3])
 initialize the POI resolution (for list-mode) More...
 
void SetIgnorePOIFlag (bool a_ignorePOIFlag)
 Set a boolean that that if we ignore POI information or not. More...
 
void SetHeaderDataFileName (const string &a_headerFileName)
 set the data header file name More...
 
void SetCalibrationFactor (FLTNB a_value)
 initialize the global calibration factor with a FLTNB value More...
 
void SetNbEvents (int64_t a_value)
 initialize the number of events with a int64_t value More...
 
void SetStartTime (FLTNB a_value)
 
void SetDuration (FLTNB a_value)
 
string GetScannerName ()
 

Private Member Functions

int CheckSpecificParameters ()
 Check parameters specific to SPECT data. More...
 
int CheckFileSizeConsistency ()
 This function is implemented in child classes
Check if file size is consistent. More...
 
int PROJ_WriteHistoEvent (iEventHistoSPECT *ap_Event, int a_th)
 Write a SPECT histogram event. More...
 
int PROJ_WriteListEvent (iEventListSPECT *ap_Event, int a_th)
 Write a SPECT list-mode event. More...
 
int CheckSpecificConsistencyWithAnotherDatafile (vDataFile *ap_Datafile)
 Check consistency between 'this' and the provided datafile, for specific characteristics. More...
 

Private Attributes

string m_isotope
 
bool m_eventKindFlag
 
bool m_normCorrectionFlag
 
bool m_ignoreNormCorrectionFlag
 
bool m_scatCorrectionFlag
 
bool m_ignoreScatCorrectionFlag
 
uint16_t mp_nbOfBins [2]
 
uint16_t m_nbOfProjections
 
FLTNBmp_angles
 
uint16_t m_nbHeads
 
FLTNBmp_CORtoDetectorDistance
 
int m_headRotDirection
 

Additional Inherited Members

- Protected Attributes inherited from vDataFile
oImageDimensionsAndQuantificationmp_ID
 
int m_verbose
 
fstream ** m2p_dataFile
 
string m_headerFileName
 
string m_dataFileName
 
int64_t m_totalNbEvents
 
int m_dataMode
 
int m_dataType
 
FLTNB m_startTimeInSec
 
FLTNB m_durationInSec
 
FLTNB m_calibrationFactor
 
int m_bedIndex
 
int64_t m_sizeEvent
 
string m_scannerName
 
bool m_POIInfoFlag
 
bool m_ignorePOIFlag
 
bool mp_POIDirectionFlag [3]
 
FLTNB mp_POIResolution [3]
 
vEvent ** m2p_BufferEvent
 
char * mp_arrayEvents
 
char ** m2p_bufferEventFromFile
 
int64_t m_mpi1stEvent
 
int64_t m_mpiLastEvent
 
int64_t m_mpiNbEvents
 
int64_t m_1stIdxArrayEvents
 
int64_t m_lastIdxArrayEvents
 
int64_t m_sizeArrayEvents
 
int m_percentageLoad
 
bool m_requestBufferFilling
 
bool m_currentlyFillingBuffer
 
bool * mp_currentlyReadingBuffer
 
bool * mp_overBufferRange
 
int64_t * mp_nbEventsReadFromFile
 

Detailed Description

Inherit from vDataFile. Class that manages the reading of a SPECT input file (header + data).

It contains several arrays corresponding to the different kind of informations the data file could contain.
As many booleans as arrays say if the data are here or not. The data file can be either completely loaded, or read event by event during reconstruction.
MPI is coming here to cut the data file into peaces (also either can be loaded or read on-the-fly).

Definition at line 28 of file iDataFileSPECT.hh.

Constructor & Destructor Documentation

iDataFileSPECT::iDataFileSPECT ( )

iDataFileSPECT constructor. Initialize the member variables to their default values.

Definition at line 16 of file iDataFileSPECT.cc.

iDataFileSPECT::~iDataFileSPECT ( )

iDataFileSPECT destructor.

Definition at line 40 of file iDataFileSPECT.cc.

Member Function Documentation

int iDataFileSPECT::CheckFileSizeConsistency ( )
privatevirtual

This function is implemented in child classes
Check if file size is consistent.

Returns
0 if success, and positive value otherwise.

Implements vDataFile.

Definition at line 377 of file iDataFileSPECT.cc.

int iDataFileSPECT::CheckSpecificConsistencyWithAnotherDatafile ( vDataFile ap_Datafile)
privatevirtual

Check consistency between 'this' and the provided datafile, for specific characteristics.

Parameters
vDataFile*ap_Datafile

Implementation of the pure virtual function from vDataFile. It checks correction flags, etc.

Returns
0 if the provided datafile is consistent with 'this', another value otherwise

Implements vDataFile.

Definition at line 439 of file iDataFileSPECT.cc.

Here is the call graph for this function:

int iDataFileSPECT::CheckSpecificParameters ( )
privatevirtual

Check parameters specific to SPECT data.

Returns
0 if success, and positive value otherwise.

Implements vDataFile.

Definition at line 347 of file iDataFileSPECT.cc.

int iDataFileSPECT::ComputeSizeEvent ( )
virtual

Computation of the size of each event according to the mandatory/optional correction fields.

Returns
0 is success, positive value otherwise

Implements vDataFile.

Definition at line 124 of file iDataFileSPECT.cc.

vEvent * iDataFileSPECT::GetEventFromBuffer ( char *  ap_buffer,
int  a_th 
)
virtual

Read an event from the position pointed by 'ap_buffer', parse the generic or modality-specific information, and store them in the (multithreaded) 'm2p_BufferEvent' object.

Parameters
ap_buffer: address pointing to the event to recover
a_th: index of the thread from which the function was called
Returns
the thread-specific 'm2p_BufferEvent' object containing the modality-specific information for the event

Implements vDataFile.

Definition at line 257 of file iDataFileSPECT.cc.

Here is the call graph for this function:

iDataFileSPECT::GetEventKindFlag ( )
inline

Simply return m_eventKindFlag.

Returns
m_eventKindFlag

Definition at line 193 of file iDataFileSPECT.hh.

Here is the caller graph for this function:

iDataFileSPECT::GetIsotope ( )
inline
Returns
the isotope string value

Definition at line 164 of file iDataFileSPECT.hh.

Here is the caller graph for this function:

iDataFileSPECT::GetNbBins ( int  axis)
inline
Parameters
axis: axis corresponding to transaxial (0) or axial (1) bins
Returns
number of bins corresponding to the axis passed in parameter

Definition at line 142 of file iDataFileSPECT.hh.

iDataFileSPECT::GetNbProjections ( )
inline
Returns
total number of projections in the SPECT acquisition

Definition at line 135 of file iDataFileSPECT.hh.

iDataFileSPECT::GetNormCorrectionFlag ( )
inline

Simply return m_normCorrectionFlag.

Returns
m_normCorrectionFlag

Definition at line 207 of file iDataFileSPECT.hh.

Here is the caller graph for this function:

iDataFileSPECT::GetScatCorrectionFlag ( )
inline

Simply return m_scatCorrectionFlag.

Returns
m_scatCorrectionFlag

Definition at line 200 of file iDataFileSPECT.hh.

Here is the caller graph for this function:

int iDataFileSPECT::InitAngles ( FLTNB ap_angles)

allocate memory for the mp_angles variable using m_nbProjections and initialize the projection angles with the provided list of values

Parameters
ap_angles
Returns
0 if success, positive value otherwise

Definition at line 477 of file iDataFileSPECT.cc.

int iDataFileSPECT::InitCorToDetectorDistance ( FLTNB ap_CORtoDetectorDistance)

allocate memory for the ap_CORtoDetectorDistance variable using m_nbProjections, and initialize the projection angles with the provided list of values

Parameters
ap_CORtoDetectorDistance
Returns
0 if success, positive value otherwise

Definition at line 499 of file iDataFileSPECT.cc.

int iDataFileSPECT::PrepareDataFile ( )
virtual

Store different kind of information inside arrays (data relative to specific correction as well as basic raw data for the case data is loaded in RAM)
Use the flag provided by the user to determine how the data has to be sorted (preloaded or read on the fly)

Returns
0 is success, positive value otherwise

Implements vDataFile.

Definition at line 179 of file iDataFileSPECT.cc.

Here is the call graph for this function:

int iDataFileSPECT::PROJ_GetScannerSpecificParameters ( )
virtual

Get SPECT specific parameters for projections from the scanner object, through the scannerManager.

Returns
0 if success, positive value otherwise

Implements vDataFile.

Definition at line 841 of file iDataFileSPECT.cc.

Here is the call graph for this function:

int iDataFileSPECT::PROJ_InitFile ( )
virtual

Initialize the fstream objets for output writing as well as some other variables specific to the Projection script (Event-based correction flags, Estimated size of data file)

Returns
0 if success, and positive value otherwise.

Implements vDataFile.

Definition at line 540 of file iDataFileSPECT.cc.

Here is the call graph for this function:

int iDataFileSPECT::PROJ_WriteEvent ( vEvent ap_Event,
int  a_th 
)
virtual

Write event according to the chosen type of data.

Parameters
ap_Event: event containing the data to write
a_th: index of the thread from which the function was called

Implements vDataFile.

Definition at line 606 of file iDataFileSPECT.cc.

Here is the call graph for this function:

int iDataFileSPECT::PROJ_WriteHeader ( )
virtual

Generate a header file according to the projection and data output informations.
Used by Projection algorithm.

Returns
0 if success, and positive value otherwise.

Implements vDataFile.

Definition at line 766 of file iDataFileSPECT.cc.

Here is the call graph for this function:

int iDataFileSPECT::PROJ_WriteHistoEvent ( iEventHistoSPECT ap_Event,
int  a_th 
)
private

Write a SPECT histogram event.

Parameters
ap_Event: event containing the data to write
a_th: index of the thread from which the function was called
Returns
0 if success, and positive value otherwise.

Definition at line 647 of file iDataFileSPECT.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int iDataFileSPECT::PROJ_WriteListEvent ( iEventListSPECT ap_Event,
int  a_th 
)
private

Write a SPECT list-mode event.

Parameters
ap_Event: event containing the data to write
a_th: index of the thread from which the function was called
Returns
0 if success, and positive value otherwise.

Definition at line 695 of file iDataFileSPECT.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int iDataFileSPECT::ReadSpecificInfoInHeader ( bool  a_affectQuantificationFlag)
virtual

Read through the header file and recover specific SPECT information.

Parameters
boola_affectQuantificationFlag

If the parameter flag is on, then affect the quantification factors from the oImageDimensionsAndQuantification after reading relevant information

Returns
0 is success, positive value otherwise

Implements vDataFile.

Definition at line 51 of file iDataFileSPECT.cc.

Here is the call graph for this function:

iDataFileSPECT::SetEventKindFlagOn ( )
inline

set to true the flag indicating the presence of the kind of a list-mode event in the datafile

This function is dedicated to datafile conversion scripts

Definition at line 149 of file iDataFileSPECT.hh.

iDataFileSPECT::SetHeadRotDirection ( int  a_direction)
inline

initialize the rotation direction of the gamma camera(s)

Parameters
a_direction

Definition at line 186 of file iDataFileSPECT.hh.

iDataFileSPECT::SetIsotope ( string  a_value)
inline

initialize the isotope string value

Parameters
a_value

The name should corresponds to one corresponding tag in the isotope configuration file in config/. This function is dedicated to datafile conversion scripts

Definition at line 158 of file iDataFileSPECT.hh.

Here is the caller graph for this function:

iDataFileSPECT::SetNbBins ( uint16_t  a_binTrs,
uint16_t  a_binAxl 
)
inline

initialize the bin values

Parameters
a_binTrs
a_binAxl

Definition at line 172 of file iDataFileSPECT.hh.

iDataFileSPECT::SetNbProjections ( uint16_t  a_nbProjections)
inline

initialize the number of projections

Parameters
a_nbProjections

Definition at line 179 of file iDataFileSPECT.hh.

Member Data Documentation

bool iDataFileSPECT::m_eventKindFlag
private

Flag for informations about the event nature (true, scatter) in the data. Default value = false

Definition at line 256 of file iDataFileSPECT.hh.

int iDataFileSPECT::m_headRotDirection
private

Head rotation direction (0=clockwise, 1=counterclockwise)

Definition at line 271 of file iDataFileSPECT.hh.

bool iDataFileSPECT::m_ignoreNormCorrectionFlag
private

Flag to say if we ignore the normalization correction even if present. Default = false

Definition at line 258 of file iDataFileSPECT.hh.

bool iDataFileSPECT::m_ignoreScatCorrectionFlag
private

Flag to say if we ignore the scatter correction even if present. Default = false

Definition at line 260 of file iDataFileSPECT.hh.

string iDataFileSPECT::m_isotope
private

Isotope. Default value =unknown

Definition at line 255 of file iDataFileSPECT.hh.

uint16_t iDataFileSPECT::m_nbHeads
private

Number of heads in the SPECT systems. Default =1

Definition at line 265 of file iDataFileSPECT.hh.

uint16_t iDataFileSPECT::m_nbOfProjections
private

Total number of projections during the acquisition(for all the heads). No Default

Definition at line 262 of file iDataFileSPECT.hh.

bool iDataFileSPECT::m_normCorrectionFlag
private

Flag that says if normalization correction terms are included in the data. Default = false

Definition at line 257 of file iDataFileSPECT.hh.

bool iDataFileSPECT::m_scatCorrectionFlag
private

Flag that says if scatter correction terms are included in the data. Default = false

Definition at line 259 of file iDataFileSPECT.hh.

FLTNB* iDataFileSPECT::mp_angles
private

Angle [for each projection] in degrees. If SPECT system contains several heads, first head angles should be entered first, followed by 2nd head angles, etc.. No Default

Definition at line 263 of file iDataFileSPECT.hh.

FLTNB* iDataFileSPECT::mp_CORtoDetectorDistance
private

Distance camera surface to COR (mm) [for each projection].
if not provided, the distance given for each heads in the camera description file is taken and considered constant for each projections related to each head
if provided then: if positive value (either a constant value, or a value specific to each projection) then it overwrites the one given in the camera file
if negative, the distance given for each heads in the camera description file is taken and considered constant for each projections related to each head
Default value = Recovered from the camera description file

Definition at line 266 of file iDataFileSPECT.hh.

uint16_t iDataFileSPECT::mp_nbOfBins[2]
private

Transaxial/Axial number of bins. Default value =1,1

Definition at line 261 of file iDataFileSPECT.hh.


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