![]() |
CASToR
3.0
Tomographic Reconstruction (PET/SPECT/CT)
|
This class gathers the information about the dynamic splitting of the data. More...
#include <oDynamicDataManager.hh>
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_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 | GetPMotionFirstIndexForFrame (int a_fr) |
if patient motion is enabled, return the first index of patient motion for the frame fr, 0 otherwise This is required in the ImageSpace matrices for the list-mode sensitivity image generation and for the initial deformation of the forward image More... | |
int | GetPMotionLastIndexForFrame (int a_fr) |
if patient motion is enabled, return the last index of patient motion for the frame fr, 0 otherwise This is required in the reconstruction process to perform the correct (backward) deformation for the bimage of each frame More... | |
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 | GetNbPMotionTriggers (int a_fr) |
return the number of involuntary patient motion triggers More... | |
FLTNB | GetListPMotionWeightInFrameForLMS (int a_fr, int a_pmsset) |
return the weight of a patient motion subset in terms of duration, for a specific frame More... | |
int | GetNbIPatMotionSubsets () |
return the number of involuntary patient motion transformations More... | |
bool | GateDurationProvided () |
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 | |
oImageDimensionsAndQuantification * | mp_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 |
HPFLTNB ** | m2p_durationPerGate |
bool | m_gateDurationProvidedFlag |
bool | m_pMotionCorrFlag |
int | m_nbPMotionTriggers |
uint16_t * | mp_framePMotionFirstIndex |
uint16_t * | mp_framePMotionLastIndex |
uint16_t * | mp_frameNbPMotionTriggers |
uint32_t * | mp_listPMotionTriggers |
HPFLTNB ** | m2p_listPMotionWeightInFrame |
int * | mp_currentPMotionIndex |
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.
oDynamicDataManager::oDynamicDataManager | ( | ) |
oDynamicDataManager constructor. Initialize the member variables to their default values.
Definition at line 39 of file oDynamicDataManager.cc.
oDynamicDataManager::~oDynamicDataManager | ( | ) |
oDynamicDataManager destructor.
Definition at line 74 of file oDynamicDataManager.cc.
int oDynamicDataManager::CheckParameters | ( | int64_t | a_nbEvents | ) |
Check all mandatory parameters.
a_nbEvents | : Number of events in the acquisition, used to check consistency with the gating metadata |
Definition at line 609 of file oDynamicDataManager.cc.
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.
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 715 of file oDynamicDataManager.cc.
|
inline |
Definition at line 293 of file oDynamicDataManager.hh.
|
inline |
Return the index indicating the current cardiac gate for this thread.
a_th |
Definition at line 212 of file oDynamicDataManager.hh.
|
inline |
return the number of the current cardiac gated image, to be used in the ImageSpace matrices for the reconstruction
a_th |
if cardiac motion correction is enabled in reconstruction, the function returns 0 as only one image is reconstructed for each gate
Definition at line 221 of file oDynamicDataManager.hh.
|
inline |
return the number of the current involuntary patient motion image to be used in the ImageSpace matrices, for this thread
a_th |
Definition at line 179 of file oDynamicDataManager.hh.
|
inline |
Return the index indicating the current respiratory gate for this thread.
a_th |
Definition at line 195 of file oDynamicDataManager.hh.
|
inline |
return the number of the current respiratory gated image, to be used in the ImageSpace matrices for the reconstruction
a_th |
if respiratory motion correction is enabled in reconstruction, the function returns 0 as only one image is reconstructed for each gate
Definition at line 204 of file oDynamicDataManager.hh.
|
inline |
Return the index indicating the current time frame for this thread.
a_th |
Definition at line 187 of file oDynamicDataManager.hh.
|
inline |
return the weight of a patient motion subset in terms of duration, for a specific frame
a_fr | = frame index |
a_pmsset | = patient motion subset index |
Definition at line 277 of file oDynamicDataManager.hh.
|
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
a_fr | = frame index |
Definition at line 257 of file oDynamicDataManager.hh.
|
inline |
return the number of secundary motion (typically cardiac) images to be used in the ImageSpace matrices for the list-mode sensitivity image generation
Definition at line 228 of file oDynamicDataManager.hh.
|
inline |
return the number of involuntary patient motion transformations
Definition at line 286 of file oDynamicDataManager.hh.
|
inline |
return the number of involuntary patient motion triggers
a_fr | = frame index |
Definition at line 267 of file oDynamicDataManager.hh.
|
inline |
if patient motion is enabled, return the first index of patient motion for the frame fr, 0 otherwise This is required in the ImageSpace matrices for the list-mode sensitivity image generation and for the initial deformation of the forward image
a_fr | = frame index |
Definition at line 238 of file oDynamicDataManager.hh.
|
inline |
if patient motion is enabled, return the last index of patient motion for the frame fr, 0 otherwise This is required in the reconstruction process to perform the correct (backward) deformation for the bimage of each frame
a_fr | = frame index |
Definition at line 248 of file oDynamicDataManager.hh.
int oDynamicDataManager::InitDynamicData | ( | int | a_nbRespGates, |
int | a_nbCardGates, | ||
const string & | a_pathTo4DDataSplittingFile, | ||
int | a_rmMCorrFlag, | ||
int | a_cMmCorrFlag, | ||
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.
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 113 of file oDynamicDataManager.cc.
|
private |
Initialisation of arrays containing informations about the data splitting and respiratory/cardiac gated reconstruction.
a_pathToFile | : path to an ASCII file containing dynamic metadata regarding the acquisition |
Definition at line 231 of file oDynamicDataManager.cc.
|
private |
Initialisation of involuntary patient motion correction information, if any.
a_pathToFile | : path to an ASCII file containing dynamic metadata regarding the acquisition |
Definition at line 324 of file oDynamicDataManager.cc.
|
inline |
Definition at line 165 of file oDynamicDataManager.hh.
|
inline |
Definition at line 171 of file oDynamicDataManager.hh.
|
inline |
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 695 of file oDynamicDataManager.cc.
|
inline |
set the cardiac motion flag to 'true'
Definition at line 147 of file oDynamicDataManager.hh.
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.
FLTNB** | a2p_quantificationFactors : 2 dimensional [timeframe][gate] set of quantitative factors to update |
Definition at line 532 of file oDynamicDataManager.cc.
|
inline |
set the pointer to the oImageDimensionsAndQuantification object
ap_ImageDimensionsAndQuantification |
Definition at line 135 of file oDynamicDataManager.hh.
|
inline |
set the involuntary patient motion flag to 'true'
Definition at line 153 of file oDynamicDataManager.hh.
|
inline |
set the respiratory motion flag to 'true'
Definition at line 141 of file oDynamicDataManager.hh.
|
inline |
set verbosity
a_verboseLevel |
Definition at line 128 of file oDynamicDataManager.hh.
|
private |
Table containing the duration in seconds of each gate. TODO: For future dynamic implementation, get this information from datafile header
Definition at line 342 of file oDynamicDataManager.hh.
|
private |
2 dimensional array [nb frames][nb resp gates] containing the last event in the cardiac gates
Definition at line 338 of file oDynamicDataManager.hh.
|
private |
2 dimensional array [nb frames][nb resp gates] containing the last event in the respiratory gates
Definition at line 330 of file oDynamicDataManager.hh.
|
private |
For each frame, this list contain the weight of each patient motion subset in terms of duration (for LMS)
Definition at line 352 of file oDynamicDataManager.hh.
|
private |
2 dimensional array [nb frames][nb resp gates] containing the number of events in each cardiac gates.
Definition at line 337 of file oDynamicDataManager.hh.
|
private |
2 dimensional array [nb frames][nb resp gates] containing the number of events in each respiratory gates
Definition at line 329 of file oDynamicDataManager.hh.
|
private |
Flag indicating if cardiac gating is enabled
Definition at line 334 of file oDynamicDataManager.hh.
|
private |
Flag indicating if patient involuntary motion correction is enabled
Definition at line 335 of file oDynamicDataManager.hh.
|
private |
Flag indicating that gate duration have been provided (default: false)
Definition at line 343 of file oDynamicDataManager.hh.
|
private |
Number of gates for cardiac motion correction
Definition at line 336 of file oDynamicDataManager.hh.
|
private |
Total number of triggers for patient involuntary motion correction
Definition at line 347 of file oDynamicDataManager.hh.
|
private |
Number of gates for respiratory motion correction
Definition at line 328 of file oDynamicDataManager.hh.
|
private |
Number of time frames
Definition at line 323 of file oDynamicDataManager.hh.
|
private |
Flag indicating if patient involuntary motion correction is enabled
Definition at line 346 of file oDynamicDataManager.hh.
|
private |
Flag indicating if respiratory gating is enabled
Definition at line 326 of file oDynamicDataManager.hh.
|
private |
Flag indicating if respiratory motion correction is enabled
Definition at line 327 of file oDynamicDataManager.hh.
|
private |
Verbosity
Definition at line 319 of file oDynamicDataManager.hh.
|
private |
Multithreaded array [nb threads] containing the index of the current cardiac gate in use
Definition at line 339 of file oDynamicDataManager.hh.
|
private |
Multithreaded array [nb threads] containing the index of the current frame in use
Definition at line 322 of file oDynamicDataManager.hh.
|
private |
Multithreaded array [nb threads] containing the index for patient involuntary motion correction
Definition at line 353 of file oDynamicDataManager.hh.
|
private |
Multithreaded array [nb threads] containing the index of the current respiratory gate in use
Definition at line 331 of file oDynamicDataManager.hh.
|
private |
Number of patient involuntary motion triggers by frame
Definition at line 350 of file oDynamicDataManager.hh.
|
private |
First index of patient involuntary motion triggers by frame (for LMS)
Definition at line 348 of file oDynamicDataManager.hh.
|
private |
First index of patient involuntary motion triggers by frame (for LMS)
Definition at line 349 of file oDynamicDataManager.hh.
|
private |
Pointer to the oImageDimensionsAndQuantification object
Definition at line 318 of file oDynamicDataManager.hh.
|
private |
Array containing the timestamp of each trigger of the patient involuntary motion correction
Definition at line 351 of file oDynamicDataManager.hh.