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

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

#include <iDataFileCT.hh>

Inheritance diagram for iDataFileCT:
Inheritance graph
Collaboration diagram for iDataFileCT:
Collaboration graph

Public Member Functions

 iDataFileCT ()
 iDataFileCT constructor. Initialize the member variables to their default values. More...
 
 ~iDataFileCT ()
 iDataFileCT destructor. More...
 
int ReadSpecificInfoInHeader (bool a_affectQuantificationFlag)
 Read through the header file and recover specific CT information. More...
 
int WriteHeader ()
 Generate a header file according to the data output 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...
 
int WriteEvent (vEvent *ap_Event, int a_th=0)
 Write event according to the chosen type of data. More...
 
vEventGetEventSpecific (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...
 
void DescribeSpecific ()
 Implementation of the pure virtual eponym function that simply prints info about the datafile. 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_GetScannerSpecificParameters ()
 Get SPECT specific parameters for projections from the scanner object, through the scannerManager. More...
 
uint16_t GetNbProjections ()
 
FLTNBGetAngles ()
 
void SetEventKindFlagOn ()
 set to true the flag indicating the presence of the kind of a list-mode event in the datafile More...
 
void SetNbProjections (uint16_t a_nbProjections)
 initialize the number of projections More...
 
int GetDetectorRotDirection ()
 Simply return m_detectorRotDirection. More...
 
void SetDetectorRotDirection (int a_direction)
 initialize the rotation direction of the CT detector More...
 
bool GetEventKindFlag ()
 Simply return m_eventKindFlag. More...
 
bool GetScatCorrectionFlag ()
 Simply return m_scatCorrectionFlag. More...
 
bool GetBlankCorrectionFlag ()
 Simply return m_blankCorrectionFlag. 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 SetParametersFrom (vDataFile *ap_DataFile)
 Initialize all parameters from the provided datafile. More...
 
int CheckParameters ()
 Check the initialization of member variables
Call the CheckSpecificParameters() function implemented in child classes. More...
 
int InitializeMappedFile ()
 Check the datafile existency, map it to memory and get the raw char* pointer.
. More...
 
int OpenFileForWriting (string a_suffix="")
 Open a binary file stream for writing, with eventually the suffix appended to the file name. More...
 
int CloseFile ()
 Close as many binary file stream for writing. More...
 
vEventGetEvent (int64_t a_eventIndex, int a_th=0)
 
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...
 
void Describe ()
 A function used to describe the generic parts of the datafile. 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 ()
 
string GetDataModeToString ()
 
int GetDataType ()
 
string GetDataTypeToString ()
 
int GetDataSpec ()
 
string GetDataSpecToString ()
 
int64_t GetSize ()
 
int64_t GetEventSize ()
 
string GetHeaderDataFileName ()
 
string GetDataFileName ()
 
int64_t GetStartTime ()
 
int64_t GetDuration ()
 
FLTNB GetCalibrationFactor ()
 
FLTNBGetPOIResolution ()
 
bool * GetPOIDirectionFlag ()
 
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...
 
bool GetBedPositionFlag ()
 
FLTNB GetRelativeBedPosition ()
 
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 SetBinaryDataFileName (const string &a_dataFileName)
 set the data binary 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 ()
 
virtual int Shuffle (int64_t)
 !!!\ This function has been modified to be used specifically with a More...
 

Private Member Functions

int SetSpecificParametersFrom (vDataFile *ap_DataFile)
 Initialize all parameters specific to CT from the provided datafile. More...
 
int CheckSpecificParameters ()
 Check parameters specific to CT data. More...
 
int CheckFileSizeConsistency ()
 This function is implemented in child classes
Check if file size is consistent. More...
 
int WriteHistoEvent (iEventHistoCT *ap_Event, int a_th)
 Write a CT histogram event. More...
 
int WriteListEvent (iEventListCT *ap_Event, int a_th)
 Write a CT list-mode event. More...
 
int CheckSpecificConsistencyWithAnotherDataFile (vDataFile *ap_DataFile)
 Check consistency between 'this' and the provided datafile, for specific characteristics. More...
 

Private Attributes

bool m_eventKindFlag
 
bool m_blankCorrectionFlag
 
bool m_ignoreBlankCorrectionFlag
 
bool m_scatCorrectionFlag
 
bool m_ignoreScatCorrectionFlag
 
uint16_t m_nbOfProjections
 
FLTNBmp_angles
 
int m_detectorRotDirection
 

Additional Inherited Members

- Protected Attributes inherited from vDataFile
oImageDimensionsAndQuantificationmp_ID
 
int m_verbose
 
string m_headerFileName
 
string m_dataFileName
 
int64_t m_nbEvents
 
int m_dataMode
 
int m_dataType
 
int m_dataSpec
 
FLTNB m_startTimeInSec
 
FLTNB m_durationInSec
 
FLTNB m_calibrationFactor
 
int m_bedIndex
 
FLTNB m_relativeBedPosition
 
bool m_bedPositionFlag
 
string m_scannerName
 
bool m_POIInfoFlag
 
bool m_ignorePOIFlag
 
bool mp_POIDirectionFlag [3]
 
FLTNB mp_POIResolution [3]
 
int64_t m_sizeEvent
 
fstream ** m2p_dataFile
 
vEvent ** m2p_BufferEvent
 
int64_t m_mpi1stEvent
 
int64_t m_mpiLastEvent
 
int64_t m_mpiNbEvents
 
oMemoryMappedmp_MappedFile
 
char * mp_mappedMemory
 

Detailed Description

Inherit from vDataFile. Class that manages the reading of a CT 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 48 of file iDataFileCT.hh.

Constructor & Destructor Documentation

iDataFileCT::iDataFileCT ( )

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

Definition at line 39 of file iDataFileCT.cc.

iDataFileCT::~iDataFileCT ( )

iDataFileCT destructor.

Definition at line 59 of file iDataFileCT.cc.

Member Function Documentation

int iDataFileCT::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 403 of file iDataFileCT.cc.

int iDataFileCT::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 449 of file iDataFileCT.cc.

Here is the call graph for this function:

int iDataFileCT::CheckSpecificParameters ( )
privatevirtual

Check parameters specific to CT data.

Returns
0 if success, and positive value otherwise.

Implements vDataFile.

Definition at line 373 of file iDataFileCT.cc.

int iDataFileCT::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 141 of file iDataFileCT.cc.

void iDataFileCT::DescribeSpecific ( )
virtual

Implementation of the pure virtual eponym function that simply prints info about the datafile.

Implements vDataFile.

Definition at line 352 of file iDataFileCT.cc.

iDataFileCT::GetAngles ( )
inline
Returns
Angles for each projection of the acquisition

Definition at line 153 of file iDataFileCT.hh.

Here is the caller graph for this function:

iDataFileCT::GetBlankCorrectionFlag ( )
inline

Simply return m_blankCorrectionFlag.

Returns
m_blankCorrectionFlag

Definition at line 202 of file iDataFileCT.hh.

Here is the caller graph for this function:

iDataFileCT::GetDetectorRotDirection ( )
inline

Simply return m_detectorRotDirection.

Returns
m_detectorRotDirection

Definition at line 174 of file iDataFileCT.hh.

Here is the caller graph for this function:

iDataFileCT::GetEventKindFlag ( )
inline

Simply return m_eventKindFlag.

Returns
m_eventKindFlag

Definition at line 188 of file iDataFileCT.hh.

Here is the caller graph for this function:

vEvent * iDataFileCT::GetEventSpecific ( 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 271 of file iDataFileCT.cc.

Here is the call graph for this function:

iDataFileCT::GetNbProjections ( )
inline
Returns
total number of projections in the CT acquisition

Definition at line 147 of file iDataFileCT.hh.

Here is the caller graph for this function:

iDataFileCT::GetScatCorrectionFlag ( )
inline

Simply return m_scatCorrectionFlag.

Returns
m_scatCorrectionFlag

Definition at line 195 of file iDataFileCT.hh.

Here is the caller graph for this function:

int iDataFileCT::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 487 of file iDataFileCT.cc.

int iDataFileCT::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 192 of file iDataFileCT.cc.

Here is the call graph for this function:

int iDataFileCT::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 724 of file iDataFileCT.cc.

Here is the call graph for this function:

int iDataFileCT::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 509 of file iDataFileCT.cc.

Here is the call graph for this function:

int iDataFileCT::ReadSpecificInfoInHeader ( bool  a_affectQuantificationFlag)
virtual

Read through the header file and recover specific CT 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 69 of file iDataFileCT.cc.

Here is the call graph for this function:

iDataFileCT::SetDetectorRotDirection ( int  a_direction)
inline

initialize the rotation direction of the CT detector

Parameters
a_direction

Definition at line 181 of file iDataFileCT.hh.

iDataFileCT::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 160 of file iDataFileCT.hh.

iDataFileCT::SetNbProjections ( uint16_t  a_nbProjections)
inline

initialize the number of projections

Parameters
a_nbProjections

Definition at line 167 of file iDataFileCT.hh.

int iDataFileCT::SetSpecificParametersFrom ( vDataFile ap_DataFile)
privatevirtual

Initialize all parameters specific to CT from the provided datafile.

Returns
0 if success, and positive value otherwise

Implements vDataFile.

Definition at line 123 of file iDataFileCT.cc.

Here is the call graph for this function:

int iDataFileCT::WriteEvent ( vEvent ap_Event,
int  a_th = 0 
)
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
Returns
0 if success, and positive value otherwise.

Implements vDataFile.

Definition at line 561 of file iDataFileCT.cc.

Here is the call graph for this function:

int iDataFileCT::WriteHeader ( )
virtual

Generate a header file according to the data output information.

Returns
0 if success, and positive value otherwise.

Implements vDataFile.

Definition at line 671 of file iDataFileCT.cc.

Here is the call graph for this function:

int iDataFileCT::WriteHistoEvent ( iEventHistoCT ap_Event,
int  a_th 
)
private

Write a CT 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 592 of file iDataFileCT.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int iDataFileCT::WriteListEvent ( iEventListCT ap_Event,
int  a_th 
)
private

Write a CT 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 630 of file iDataFileCT.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

bool iDataFileCT::m_blankCorrectionFlag
private

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

Definition at line 256 of file iDataFileCT.hh.

int iDataFileCT::m_detectorRotDirection
private

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

Definition at line 262 of file iDataFileCT.hh.

bool iDataFileCT::m_eventKindFlag
private

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

Definition at line 255 of file iDataFileCT.hh.

bool iDataFileCT::m_ignoreBlankCorrectionFlag
private

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

Definition at line 257 of file iDataFileCT.hh.

bool iDataFileCT::m_ignoreScatCorrectionFlag
private

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

Definition at line 259 of file iDataFileCT.hh.

uint16_t iDataFileCT::m_nbOfProjections
private

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

Definition at line 260 of file iDataFileCT.hh.

bool iDataFileCT::m_scatCorrectionFlag
private

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

Definition at line 258 of file iDataFileCT.hh.

FLTNB* iDataFileCT::mp_angles
private

Angle [for each projection] in degrees. No Default

Definition at line 261 of file iDataFileCT.hh.


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