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
oDynamicDataManager Class Reference

This class gathers the information about the dynamic splitting of the data. More...

#include <oDynamicDataManager.hh>

Collaboration diagram for oDynamicDataManager:
Collaboration graph

Public Member Functions

 oDynamicDataManager ()
 oDynamicDataManager constructor. Initialize the member variables to their default values. More...
 
 ~oDynamicDataManager ()
 oDynamicDataManager destructor. More...
 
int InitDynamicData (int a_nbRespGates, int a_nbCardGates, const string &a_pathTo4DDataSplittingFile, int a_rmMCorrFlag, int a_cMmCorrFlag, int a_dmCorrFlag, int a_pMotionCorrFlag)
 Main function for instanciation and initialization of the member variables and arrays. Call the specific initialization function depending of the type of dataset. More...
 
int SetDynamicSpecificQuantificationFactors (FLTNB **a2p_quantificationFactors)
 Compute gate-specific quantificative factors using the number of events within each gate, and update the quantitative factors passed in argument. More...
 
int CheckParameters (int64_t a_nbEvents)
 Check all mandatory parameters. More...
 
void ResetCurrentDynamicIndices ()
 Reset to 0 the multithreaded dynamic arrays gathering the indices of current frame, gates and involuntary motion. More...
 
int DynamicSwitch (int64_t a_index, uint32_t a_time, int a_bed, int a_th)
 This function is called in the reconstruction event loop. It is used to check if the current event belongs to a new respiratory/cardiac/involuntary motion gate
Increment the index reporting the current relative gate in this case. More...
 
void SetVerbose (int a_verboseLevel)
 set verbosity More...
 
void SetImageDimensionsAndQuantification (oImageDimensionsAndQuantification *ap_ImageDimensionsAndQuantification)
 set the pointer to the oImageDimensionsAndQuantification object More...
 
void SetRespMotionFlagOn ()
 set the respiratory motion flag to 'true' More...
 
void SetCardMotionFlagOn ()
 set the cardiac motion flag to 'true' More...
 
void SetPMotionFlagOn ()
 set the involuntary patient motion flag to 'true' More...
 
bool IsRespMotionEnabled ()
 
bool IsCardMotionEnabled ()
 
bool IsPMotionEnabled ()
 
int GetCurrentPMotionIndex (int a_th)
 return the number of the current involuntary patient motion image to be used in the ImageSpace matrices, for this thread More...
 
int GetCurrentTimeFrame (int a_th)
 Return the index indicating the current time frame for this thread. More...
 
int GetCurrentRespGate (int a_th)
 Return the index indicating the current respiratory gate for this thread. More...
 
int GetCurrentRespImage (int a_th)
 return the number of the current respiratory gated image, to be used in the ImageSpace matrices for the reconstruction More...
 
int GetCurrentCardGate (int a_th)
 Return the index indicating the current cardiac gate for this thread. More...
 
int GetCurrentCardImage (int a_th)
 return the number of the current cardiac gated image, to be used in the ImageSpace matrices for the reconstruction More...
 
int GetNb2ndMotImgsForLMS ()
 return the number of secundary motion (typically cardiac) images to be used in the ImageSpace matrices for the list-mode sensitivity image generation More...
 
int GetPMotionFirstIndexForLMS (int a_fr)
 
int GetNb1stMotImgsForLMS (int a_fr)
 return the number of first motion (either respiratory or involuntary patient motion) images to be used in the ImageSpace matrices for the list-mode sensitivity image generation More...
 
int GetNbIPatMotionSubsets ()
 return the number of involuntary patient motion transformations More...
 

Private Member Functions

int InitDynamicDataGating (const string &a_pathToGateFile)
 Initialisation of arrays containing informations about the data splitting and respiratory/cardiac gated reconstruction. More...
 
int InitDynamicDataPatientMotion (const string &a_pathToFile)
 Initialisation of involuntary patient motion correction information, if any. More...
 

Private Attributes

oImageDimensionsAndQuantificationmp_ID
 
int m_verbose
 
int * mp_currentFrameIndex
 
int m_nbTimeFrames
 
bool m_respGatingFlag
 
bool m_rMotionCorrFlag
 
int m_nbRespGates
 
int64_t ** m2p_nbEventsPerRespGate
 
int64_t ** m2p_indexLastEventRespGate
 
int * mp_currentRespGateIndex
 
bool m_cardGatingFlag
 
bool m_cMotionCorrFlag
 
int m_nbCardGates
 
int64_t ** m2p_nbEventsPerCardGate
 
int64_t ** m2p_indexLastEventCardGate
 
int * mp_currentCardGateIndex
 
bool m_pMotionCorrFlag
 
int m_nbPMotionTriggers
 
uint16_t * mp_framePMotionFirstIndex
 
uint16_t * mp_frameNbPMotionTriggers
 
uint32_t * mp_listPMotionTriggers
 
int * mp_currentPMotionIndex
 

Detailed Description

This class gathers the information about the dynamic splitting of the data.

It contains the functions dedicated to the reading of user-provided informations about the dynamic dataset.
It is specific to each iDataFile object.
It holds several arrays related to the 4D splitting of the data, the current gates indices, as well as the related functions.

Definition at line 52 of file oDynamicDataManager.hh.

Constructor & Destructor Documentation

oDynamicDataManager::oDynamicDataManager ( )

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

Definition at line 40 of file oDynamicDataManager.cc.

oDynamicDataManager::~oDynamicDataManager ( )

oDynamicDataManager destructor.

Definition at line 71 of file oDynamicDataManager.cc.

Member Function Documentation

int oDynamicDataManager::CheckParameters ( int64_t  a_nbEvents)

Check all mandatory parameters.

Parameters
a_nbEvents: Number of events in the acquisition, used to check consistency with the gating metadata
Returns
0 if success, positive value otherwise.

Definition at line 422 of file oDynamicDataManager.cc.

Here is the caller graph for this function:

int oDynamicDataManager::DynamicSwitch ( int64_t  a_index,
uint32_t  a_time,
int  a_bed,
int  a_th 
)

This function is called in the reconstruction event loop. It is used to check if the current event belongs to a new respiratory/cardiac/involuntary motion gate
Increment the index reporting the current relative gate in this case.

Parameters
a_currentEventIndex: Index of the current event in the iterative reconstruction loop
a_currentTime: Timestamp of the current event in the iterative reconstruction loop
a_bed
a_th

Definition at line 528 of file oDynamicDataManager.cc.

Here is the caller graph for this function:

oDynamicDataManager::GetCurrentCardGate ( int  a_th)
inline

Return the index indicating the current cardiac gate for this thread.

Parameters
a_th
Returns
cardiac gate index.

Definition at line 212 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

oDynamicDataManager::GetCurrentCardImage ( int  a_th)
inline

return the number of the current cardiac gated image, to be used in the ImageSpace matrices for the reconstruction

Parameters
a_th

if cardiac motion correction is enabled in reconstruction, the function returns 0 as only one image is reconstructed for each gate

Returns
the index of the current gated image related to the reconstruction for the specific thread

Definition at line 221 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

oDynamicDataManager::GetCurrentPMotionIndex ( int  a_th)
inline

return the number of the current involuntary patient motion image to be used in the ImageSpace matrices, for this thread

Parameters
a_th
Returns
the index of the current involuntary patient motion gated image if this methodology is enabled, 0 otherwise

Definition at line 179 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

oDynamicDataManager::GetCurrentRespGate ( int  a_th)
inline

Return the index indicating the current respiratory gate for this thread.

Parameters
a_th
Returns
respiratory gate index.

Definition at line 195 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

oDynamicDataManager::GetCurrentRespImage ( int  a_th)
inline

return the number of the current respiratory gated image, to be used in the ImageSpace matrices for the reconstruction

Parameters
a_th

if respiratory motion correction is enabled in reconstruction, the function returns 0 as only one image is reconstructed for each gate

Returns
the index of the gated image related to the reconstruction for the specific thread

Definition at line 204 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

oDynamicDataManager::GetCurrentTimeFrame ( int  a_th)
inline

Return the index indicating the current time frame for this thread.

Parameters
a_th
Returns
time frame index.

Definition at line 187 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

oDynamicDataManager::GetNb1stMotImgsForLMS ( int  a_fr)
inline

return the number of first motion (either respiratory or involuntary patient motion) images to be used in the ImageSpace matrices for the list-mode sensitivity image generation

Parameters
a_fr= frame index
Returns
the total number of respiratory gates

Definition at line 246 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

oDynamicDataManager::GetNb2ndMotImgsForLMS ( )
inline

return the number of secundary motion (typically cardiac) images to be used in the ImageSpace matrices for the list-mode sensitivity image generation

Returns
the number of cardiac images required for the sensitivity image generation

Definition at line 228 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

oDynamicDataManager::GetNbIPatMotionSubsets ( )
inline

return the number of involuntary patient motion transformations

Returns
the total number of involuntary patient motion triggers

Definition at line 254 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

int oDynamicDataManager::GetPMotionFirstIndexForLMS ( int  a_fr)
inline

Definition at line 237 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

int oDynamicDataManager::InitDynamicData ( int  a_nbRespGates,
int  a_nbCardGates,
const string &  a_pathTo4DDataSplittingFile,
int  a_rmMCorrFlag,
int  a_cMmCorrFlag,
int  a_dmCorrFlag,
int  a_pMotionCorrFlag 
)

Main function for instanciation and initialization of the member variables and arrays. Call the specific initialization function depending of the type of dataset.

Parameters
a_nbRespGates
a_nbCardGates
a_pathTo4DDataFile: path to an ASCII file containing dynamic metadata regarding the acquisition
a_rmCorrFlag: indicate whether respiratory motion correction is enabled (1) or disabled (0)
a_cmCorrFlag: indicate whether cardiac motion correction is enabled (1) or disabled (0)
a_dmCorrFlag: indicate whether simultaneous respiratory and cardiac motion corrections are enabled (1) or disabled (0)
a_pmCorrFlag: indicate whether involuntary patient motion correction is enabled (1) or disabled (0)

Definition at line 103 of file oDynamicDataManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int oDynamicDataManager::InitDynamicDataGating ( const string &  a_pathToGateFile)
private

Initialisation of arrays containing informations about the data splitting and respiratory/cardiac gated reconstruction.

Parameters
a_pathToFile: path to an ASCII file containing dynamic metadata regarding the acquisition

Definition at line 231 of file oDynamicDataManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

int oDynamicDataManager::InitDynamicDataPatientMotion ( const string &  a_pathToFile)
private

Initialisation of involuntary patient motion correction information, if any.

Parameters
a_pathToFile: path to an ASCII file containing dynamic metadata regarding the acquisition

Definition at line 301 of file oDynamicDataManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

oDynamicDataManager::IsCardMotionEnabled ( )
inline
Returns
true if cardiac motion is enabled, false otherwise

Definition at line 165 of file oDynamicDataManager.hh.

oDynamicDataManager::IsPMotionEnabled ( )
inline
Returns
true if involuntary patient motion is enabled, false otherwise

Definition at line 171 of file oDynamicDataManager.hh.

oDynamicDataManager::IsRespMotionEnabled ( )
inline
Returns
true if respiratory motion is enabled, false otherwise

Definition at line 159 of file oDynamicDataManager.hh.

void oDynamicDataManager::ResetCurrentDynamicIndices ( )

Reset to 0 the multithreaded dynamic arrays gathering the indices of current frame, gates and involuntary motion.

Definition at line 508 of file oDynamicDataManager.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

oDynamicDataManager::SetCardMotionFlagOn ( )
inline

set the cardiac motion flag to 'true'

Definition at line 147 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

int oDynamicDataManager::SetDynamicSpecificQuantificationFactors ( FLTNB **  a2p_quantificationFactors)

Compute gate-specific quantificative factors using the number of events within each gate, and update the quantitative factors passed in argument.

Parameters
FLTNB**a2p_quantificationFactors : 2 dimensional [timeframe][gate] set of quantitative factors to update

Definition at line 372 of file oDynamicDataManager.cc.

Here is the caller graph for this function:

oDynamicDataManager::SetImageDimensionsAndQuantification ( oImageDimensionsAndQuantification ap_ImageDimensionsAndQuantification)
inline

set the pointer to the oImageDimensionsAndQuantification object

Parameters
ap_ImageDimensionsAndQuantification

Definition at line 135 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

oDynamicDataManager::SetPMotionFlagOn ( )
inline

set the involuntary patient motion flag to 'true'

Definition at line 153 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

oDynamicDataManager::SetRespMotionFlagOn ( )
inline

set the respiratory motion flag to 'true'

Definition at line 141 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

oDynamicDataManager::SetVerbose ( int  a_verboseLevel)
inline

set verbosity

Parameters
a_verboseLevel

Definition at line 128 of file oDynamicDataManager.hh.

Here is the caller graph for this function:

Member Data Documentation

int64_t** oDynamicDataManager::m2p_indexLastEventCardGate
private

2 dimensional array [nb frames][nb resp gates] containing the last event in the cardiac gates

Definition at line 300 of file oDynamicDataManager.hh.

int64_t** oDynamicDataManager::m2p_indexLastEventRespGate
private

2 dimensional array [nb frames][nb resp gates] containing the last event in the respiratory gates

Definition at line 292 of file oDynamicDataManager.hh.

int64_t** oDynamicDataManager::m2p_nbEventsPerCardGate
private

2 dimensional array [nb frames][nb resp gates] containing the number of events in each cardiac gates.

Definition at line 299 of file oDynamicDataManager.hh.

int64_t** oDynamicDataManager::m2p_nbEventsPerRespGate
private

2 dimensional array [nb frames][nb resp gates] containing the number of events in each respiratory gates

Definition at line 291 of file oDynamicDataManager.hh.

bool oDynamicDataManager::m_cardGatingFlag
private

Flag indicating if cardiac gating is enabled

Definition at line 296 of file oDynamicDataManager.hh.

bool oDynamicDataManager::m_cMotionCorrFlag
private

Flag indicating if patient involuntary motion correction is enabled

Definition at line 297 of file oDynamicDataManager.hh.

int oDynamicDataManager::m_nbCardGates
private

Number of gates for cardiac motion correction

Definition at line 298 of file oDynamicDataManager.hh.

int oDynamicDataManager::m_nbPMotionTriggers
private

Total number of triggers for patient involuntary motion correction

Definition at line 305 of file oDynamicDataManager.hh.

int oDynamicDataManager::m_nbRespGates
private

Number of gates for respiratory motion correction

Definition at line 290 of file oDynamicDataManager.hh.

int oDynamicDataManager::m_nbTimeFrames
private

Number of time frames

Definition at line 285 of file oDynamicDataManager.hh.

bool oDynamicDataManager::m_pMotionCorrFlag
private

Flag indicating if patient involuntary motion correction is enabled

Definition at line 304 of file oDynamicDataManager.hh.

bool oDynamicDataManager::m_respGatingFlag
private

Flag indicating if respiratory gating is enabled

Definition at line 288 of file oDynamicDataManager.hh.

bool oDynamicDataManager::m_rMotionCorrFlag
private

Flag indicating if respiratory motion correction is enabled

Definition at line 289 of file oDynamicDataManager.hh.

int oDynamicDataManager::m_verbose
private

Verbosity

Definition at line 281 of file oDynamicDataManager.hh.

int* oDynamicDataManager::mp_currentCardGateIndex
private

Multithreaded array [nb threads] containing the index of the current cardiac gate in use

Definition at line 301 of file oDynamicDataManager.hh.

int* oDynamicDataManager::mp_currentFrameIndex
private

Multithreaded array [nb threads] containing the index of the current frame in use

Definition at line 284 of file oDynamicDataManager.hh.

int* oDynamicDataManager::mp_currentPMotionIndex
private

Multithreaded array [nb threads] containing the index for patient involuntary motion correction

Definition at line 309 of file oDynamicDataManager.hh.

int* oDynamicDataManager::mp_currentRespGateIndex
private

Multithreaded array [nb threads] containing the index of the current respiratory gate in use

Definition at line 293 of file oDynamicDataManager.hh.

uint16_t* oDynamicDataManager::mp_frameNbPMotionTriggers
private

Number of patient involuntary motion triggers by frame

Definition at line 307 of file oDynamicDataManager.hh.

uint16_t* oDynamicDataManager::mp_framePMotionFirstIndex
private

First index of patient involuntary motion triggers by frame

Definition at line 306 of file oDynamicDataManager.hh.

oImageDimensionsAndQuantification* oDynamicDataManager::mp_ID
private

Pointer to the oImageDimensionsAndQuantification object

Definition at line 280 of file oDynamicDataManager.hh.

uint32_t* oDynamicDataManager::mp_listPMotionTriggers
private

Array containing the timestamp of each trigger of the patient involuntary motion correction

Definition at line 308 of file oDynamicDataManager.hh.


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