CASToR
2.0
Tomographic Reconstruction (PET/SPECT/CT)
|
This file gathers various function dedicated to data conversion in order to convert various type of GATE files (macro file, root datafile) to the CASToR file formats. More...
#include "gVariables.hh"
#include "gOptions.hh"
#include "iDataFilePET.hh"
#include "sOutputManager.hh"
#include "sScannerManager.hh"
#include "oInterfileIO.hh"
Go to the source code of this file.
Macros | |
#define | GATE_SYS_UNKNOWN -1 |
#define | GATE_SYS_CYLINDRICAL 0 |
#define | GATE_SYS_ECAT 1 |
#define | GATE_SYS_SPECT 2 |
#define | GATE_NB_MAX_LAYERS 4 |
Functions | |
vector< string > | CheckGATECommand (const string &a_key, const string &a_line) |
Check if the line contains the provided GATE command. In this case, parse the line and returns the values in a vector of strings. More... | |
vector< string > | Split (string a_line) |
Split the line provided in parameter into a vector of strings (separator is blankspace) More... | |
void | ConvertValuesTomm (vector< string > &values) |
Check if the vector of strings passed in parameter contains the 'cm' unit In this case, convert all its values in mm. More... | |
template<class T > | |
string | toString (T a_val) |
Convert a value of any type into string. More... | |
template<typename T > | |
int | WriteVector (ofstream &file, const string &a_key, vector< T > a_vals) |
Write the key and its values in the file provided in parameter. More... | |
int | WriteVector (ofstream &file, const string &a_key, vector< string > a_vals) |
Write the key and its values in the file provided in parameter. More... | |
int | WriteVector (ofstream &file, const string &a_key, vector< vector< string > > a_vals) |
Write the key and its values contained in a 2 level vector of strings in the file provided in parameter. More... | |
int | GetGATESystemType (const string &a_pathMac) |
Read a GATE macro file and identify the system type from the 'gate/systems/' command lines. More... | |
int | GetGATEMacFiles (const string &a_pathMac, vector< string > &ap_pathToMacFiles) |
Extract the paths to each macro file contained in the main macro file. More... | |
int | GetGATEAliasesCylindrical (vector< string > path_mac_files, string &rsector_name, string &module_name, string &submodule_name, string &crystal_name, vector< string > &layers_name, int vb) |
Loop over a list of path to GATE macro files passed in parameter to recover aliases of the different parts of a cylindricalPET. More... | |
int | GetGATEAliasesEcat (vector< string > path_mac_files, string &block_name, string &crystal_name, int vb) |
Loop over a list of path to GATE macro files passed in parameter to recover aliases of the different parts of an ecat system. More... | |
int | GetGATEAliasesSPECT (vector< string > path_mac_files, string &base_name, string &crystal_name, string &pixel_name, int vb) |
Loop over a list of path to GATE macro files passed in parameter to recover aliases of the different parts of an ecat system. More... | |
uint32_t | ConvertIDecat (int32_t nBlocksPerRing, int32_t nBlocksLine, int32_t nCrystalsTransaxial, int32_t nCrystalsAxial, int32_t crystalID, int32_t blockID) |
Compute a CASToR crystal index of a GATE ecat system from its indexes (block/crystal) and the system layout. More... | |
uint32_t | ConvertIDSPECTRoot1 (int32_t a_headID, float_t a_rotAngle, float_t a_angStep, uint32_t a_nProjectionsByHead) |
Compute a CASToR projection index of a GATE SPECThead system. More... | |
uint32_t | ConvertIDSPECTRoot2 (uint32_t a_nbSimulatedPixels, uint32_t a_nPixTrs, uint32_t a_nPixAxl, int32_t a_headID, int32_t a_crystalID, int32_t a_pixelID, float_t a_rotAngle, float_t a_headAngPitch, float_t a_crystalSizeAxl, float_t a_crystalSizeTrs, float_t a_gPosX, float_t a_gPosY, float_t a_gPosZ) |
Compute a CASToR crystal index of a GATE SPECThead system. More... | |
uint32_t | ConvertIDcylindrical (uint32_t nRsectorsAngPos, uint32_t nRsectorsAxial, int a_rsectorIdOrder, uint32_t nModulesTransaxial, uint32_t nModulesAxial, uint32_t nSubmodulesTransaxial, uint32_t nSubmodulesAxial, uint32_t nCrystalsTransaxial, uint32_t nCrystalsAxial, uint8_t nLayers, uint32_t *nCrystalPerLayer, vector< uint32_t > nLayersRptTransaxial, vector< uint32_t > nLayersRptAxial, int32_t layerID, int32_t crystalID, int32_t submoduleID, int32_t moduleID, int32_t rsectorID) |
Compute a CASToR crystal index of a GATE cylindricalPET system from its indexes (rsector/module/submodule/crystal) and the system layout. More... | |
int | ComputeKindGATEEvent (uint32_t eventID1, uint32_t eventID2, int comptonPhantom1, int comptonPhantom2, int rayleighPhantom1, int rayleighPhantom2) |
Determine kind of a given coincidence event, from its attributes. More... | |
int | ReadMacECAT (string a_pathMac, uint32_t &nCrystalsTot, uint32_t &nCrystalsAxial, uint32_t &nCrystalsTransaxial, uint32_t &nBlocksLine, uint32_t &nBlocksPerRing, uint32_t &start_time_ms, uint32_t &duration_ms, int vb) |
Recover informations about the scanner element of an ECAT system and acquisition duration, from a GATE macro file. More... | |
int | ReadMacSPECT (string a_pathMac, float_t &distToDetector, uint32_t &nHeads, uint32_t &nPixAxl, uint32_t &nPixTrs, float_t &crystalSizeAxl, float_t &crystalSizeTrs, uint32_t &nProjectionsTot, uint32_t &nProjectionsByHead, float_t &head1stAngle, float_t &headAngPitch, float_t &headAngStepDeg, int &headRotDirection, uint32_t &start_time_ms, uint32_t &duration_ms, int vb) |
Recover informations about the scanner element of an ECAT system, and acquisition duration, from a GATE macro file. More... | |
int | ReadIntfSPECT (string a_pathIntf, float_t &ap_distToDetector, uint32_t &ap_nHeads, uint32_t &ap_nPixAxl, uint32_t &ap_nPixTrs, float_t &ap_crystalSizeAxl, float_t &ap_crystalSizeTrs, uint32_t &ap_nProjectionsTot, uint32_t &ap_nProjectionsByHead, float_t &ap_head1stAngle, float_t &ap_headAngPitch, float_t &headAngStepDeg, int &ap_headRotDirection, uint32_t &ap_start_time_ms, uint32_t &ap_duration_ms, int vb) |
Recover informations about the scanner element of an ECAT system, and acquisition duration, from a GATE macro file. More... | |
int | ReadMacCylindrical (string a_pathMac, uint8_t &nLayers, uint32_t *nb_crystal_per_layer, uint32_t &nCrystalsTot, uint32_t &nCrystalsAxial, uint32_t &nCrystalsTransaxial, vector< uint32_t > &nLayersRptAxial, vector< uint32_t > &nLayersRptTransaxial, uint32_t &nSubmodulesAxial, uint32_t &nSubmodulesTransaxial, uint32_t &nModulesAxial, uint32_t &nModulesTransaxial, uint32_t &nRsectorsAxial, uint32_t &nRsectorsAngPos, int &rsector_id_order, uint32_t &start_time_ms, uint32_t &duration_ms, int vb) |
Recover informations about the scanner element of a cylindricalPET system and acquisition duration, from a GATE macro file. More... | |
int | CreateGeomWithECAT (string a_pathMac, string a_pathGeom) |
Read a GATE macro file containing the description of an ecat system, and convert it to a geom file. More... | |
int | CreateGeomWithCylindrical (string a_pathMac, string a_pathGeom) |
Read a GATE macro file containing the description of a cylindricalPET system, and convert it to a geom file. More... | |
int | CreateGeomWithSPECT (string a_pathMac, string a_pathGeom) |
Read a GATE macro file containing the description of a SPECThead system, and convert it to a geom file. More... | |
This file gathers various function dedicated to data conversion in order to convert various type of GATE files (macro file, root datafile) to the CASToR file formats.
Definition in file gDataConversionUtilities.hh.
#define GATE_NB_MAX_LAYERS 4 |
Definition at line 73 of file gDataConversionUtilities.hh.
CheckGATECommand | ( | const string & | a_key, |
const string & | a_line | ||
) |
Check if the line contains the provided GATE command. In this case, parse the line and returns the values in a vector of strings.
a_key | string containing a GATE command to recover |
a_line | : string containing the line to check |
Values are converted in mm if 'cm' is found in the line
Definition at line 53 of file gDataConversionUtilities.cc.
ComputeKindGATEEvent | ( | uint32_t | eventID1, |
uint32_t | eventID2, | ||
int | comptonPhantom1, | ||
int | comptonPhantom2, | ||
int | rayleighPhantom1, | ||
int | rayleighPhantom2 | ||
) |
Determine kind of a given coincidence event, from its attributes.
eventID1 | |
eventID2 | |
comptonPhantom1 | |
comptonPhantom2 | |
rayleighPhantom1 | |
rayleighPhantom2 |
Definition at line 995 of file gDataConversionUtilities.cc.
ConvertIDcylindrical | ( | uint32_t | nRsectorsAngPos, |
uint32_t | nRsectorsAxial, | ||
int | a_rsectorIdOrder, | ||
uint32_t | nModulesTransaxial, | ||
uint32_t | nModulesAxial, | ||
uint32_t | nSubmodulesTransaxial, | ||
uint32_t | nSubmodulesAxial, | ||
uint32_t | nCrystalsTransaxial, | ||
uint32_t | nCrystalsAxial, | ||
uint8_t | nLayers, | ||
uint32_t * | nCrystalPerLayer, | ||
vector< uint32_t > | nLayersRptTransaxial, | ||
vector< uint32_t > | nLayersRptAxial, | ||
int32_t | layerID, | ||
int32_t | crystalID, | ||
int32_t | submoduleID, | ||
int32_t | moduleID, | ||
int32_t | rsectorID | ||
) |
Compute a CASToR crystal index of a GATE cylindricalPET system from its indexes (rsector/module/submodule/crystal) and the system layout.
nRsectorsAngPos | |
nRsectorsAxial | |
a_rsectorIdOrder | |
nModulesTransaxial | |
nModulesAxial | |
nSubmodulesTransaxial | |
nSubmodulesAxial | |
nCrystalsTransaxial | |
nCrystalsAxial | |
nLayers | |
nb_crystal_per_layer | |
nLayersRptTransaxial | |
nLayersRptAxial | |
layerID | |
crystalID | |
submoduleID | |
moduleID | |
rsectorID |
Definition at line 845 of file gDataConversionUtilities.cc.
ConvertIDecat | ( | int32_t | nBlocksPerRing, |
int32_t | nBlocksLine, | ||
int32_t | nCrystalsTransaxial, | ||
int32_t | nCrystalsAxial, | ||
int32_t | crystalID, | ||
int32_t | blockID | ||
) |
Compute a CASToR crystal index of a GATE ecat system from its indexes (block/crystal) and the system layout.
nBlocksPerRing | |
nBlocksLine | |
nCrystalsTransaxial | |
nCrystalsAxial | |
crystalID | |
blockID |
Definition at line 684 of file gDataConversionUtilities.cc.
ConvertIDSPECTRoot1 | ( | int32_t | a_headID, |
float_t | a_rotAngle, | ||
float_t | a_angStep, | ||
uint32_t | a_nProjectionsByHead | ||
) |
Compute a CASToR projection index of a GATE SPECThead system.
a_headID | : head index as provided in the root file |
a_rotAngle | : rotation angle (deg) as provided in the root file |
a_angStep | : angular step (deg) computed from the macro file |
a_nProjectionsByHead | : total number of projections for each head |
Definition at line 718 of file gDataConversionUtilities.cc.
ConvertIDSPECTRoot2 | ( | uint32_t | a_nbSimulatedPixels, |
uint32_t | a_nPixTrs, | ||
uint32_t | a_nPixAxl, | ||
int32_t | a_headID, | ||
int32_t | a_crystalID, | ||
int32_t | a_pixelID, | ||
float_t | a_rotAngle, | ||
float_t | a_headAngPitch, | ||
float_t | a_crystalSizeAxl, | ||
float_t | a_crystalSizeTrs, | ||
float_t | a_gPosX, | ||
float_t | a_gPosY, | ||
float_t | a_gPosZ | ||
) |
Compute a CASToR crystal index of a GATE SPECThead system.
a_nbSimulatedPixels | |
a_nPixTrs | |
a_nPixAxl | |
a_headID | |
a_crystalID | |
a_pixelID | |
a_rotAngle | |
a_headAngPitch | |
a_crystalSizeAxl | |
a_crystalSizeTrs | |
a_gPosX | |
a_gPosY | |
a_gPosZ |
Definition at line 757 of file gDataConversionUtilities.cc.
ConvertValuesTomm | ( | vector< string > & | values | ) |
Check if the vector of strings passed in parameter contains the 'cm' unit In this case, convert all its values in mm.
ap_v | : vector of strings |
Definition at line 113 of file gDataConversionUtilities.cc.
CreateGeomWithCylindrical | ( | string | a_pathMac, |
string | a_pathGeom | ||
) |
Read a GATE macro file containing the description of a cylindricalPET system, and convert it to a geom file.
a_pathMac | : string containing the path to a GATE macro file |
a_pathGeom | : string containing the path to a CASToR output geom file |
Definition at line 2378 of file gDataConversionUtilities.cc.
CreateGeomWithECAT | ( | string | a_pathMac, |
string | a_pathGeom | ||
) |
Read a GATE macro file containing the description of an ecat system, and convert it to a geom file.
a_pathMac | : string containing the path to a GATE macro file |
a_pathGeom | : string containing the path to a CASToR output geom file |
Definition at line 3592 of file gDataConversionUtilities.cc.
CreateGeomWithSPECT | ( | string | a_pathMac, |
string | a_pathGeom | ||
) |
Read a GATE macro file containing the description of a SPECThead system, and convert it to a geom file.
a_pathMac | : string containing the path to a GATE macro file |
a_pathGeom | : string containing the path to a CASToR output geom file |
Definition at line 4078 of file gDataConversionUtilities.cc.
GetGATEAliasesCylindrical | ( | vector< string > | path_mac_files, |
string & | rsector_name, | ||
string & | module_name, | ||
string & | submodule_name, | ||
string & | crystal_name, | ||
vector< string > & | layers_name, | ||
int | vb | ||
) |
Loop over a list of path to GATE macro files passed in parameter to recover aliases of the different parts of a cylindricalPET.
path_mac_files | |
rsector_name | |
module_name | |
submodule_name | |
crystal_name | |
layers_name |
Definition at line 374 of file gDataConversionUtilities.cc.
GetGATEAliasesEcat | ( | vector< string > | path_mac_files, |
string & | block_name, | ||
string & | crystal_name, | ||
int | vb | ||
) |
Loop over a list of path to GATE macro files passed in parameter to recover aliases of the different parts of an ecat system.
path_mac_files | |
block_name | |
crystal_name | |
vb |
Definition at line 514 of file gDataConversionUtilities.cc.
GetGATEAliasesSPECT | ( | vector< string > | path_mac_files, |
string & | base_name, | ||
string & | crystal_name, | ||
string & | pixel_name, | ||
int | vb | ||
) |
Loop over a list of path to GATE macro files passed in parameter to recover aliases of the different parts of an ecat system.
path_mac_files | |
base_name | |
crystal_name | |
pixel_name | |
vb |
Definition at line 598 of file gDataConversionUtilities.cc.
GetGATEMacFiles | ( | const string & | a_pathMac, |
vector< string > & | ap_pathToMacFiles | ||
) |
Extract the paths to each macro file contained in the main macro file.
a_pathMac | : path to a GATE main macro file |
ap_pathToMacFiles | : array containing the paths of macro files |
Definition at line 244 of file gDataConversionUtilities.cc.
GetGATESystemType | ( | const string & | a_pathMac | ) |
Read a GATE macro file and identify the system type from the 'gate/systems/' command lines.
a_pathMac | : path to a GATE macro file |
Definition at line 285 of file gDataConversionUtilities.cc.
ReadIntfSPECT | ( | string | a_pathIntf, |
float_t & | ap_distToDetector, | ||
uint32_t & | ap_nHeads, | ||
uint32_t & | ap_nPixAxl, | ||
uint32_t & | ap_nPixTrs, | ||
float_t & | ap_crystalSizeAxl, | ||
float_t & | ap_crystalSizeTrs, | ||
uint32_t & | ap_nProjectionsTot, | ||
uint32_t & | ap_nProjectionsByHead, | ||
float_t & | ap_head1stAngle, | ||
float_t & | ap_headAngPitch, | ||
float_t & | headAngStepDeg, | ||
int & | ap_headRotDirection, | ||
uint32_t & | ap_start_time_ms, | ||
uint32_t & | ap_duration_ms, | ||
int | vb | ||
) |
Recover informations about the scanner element of an ECAT system, and acquisition duration, from a GATE macro file.
a_pathIntf | : path to the interfile header |
distToDetector | : distance between center of rotation and detector surface |
nHeads | : nb of cameras |
nPixAxl | : nb of transaxial pixels |
nPixTrs | : nb of axial pixels |
crystalSizeAxl | : crystal axial dimension |
crystalSizeTrs | : crystal transaxial dimension |
head1stAngle | : head first angle |
headAngPitch | : angular pitch between heads |
headRotSpeed | : angle between projection |
headRotDirection | : rotation direction of the head (CW or CCW) |
start_time_ms | : acquisition start time converted in ms |
duration_ms | : acquisition duration converted in ms |
Intf_fiels | : Interfile key structure to initialize with projection image parameters |
vb | : verbosity |
Definition at line 2148 of file gDataConversionUtilities.cc.
ReadMacCylindrical | ( | string | a_pathMac, |
uint8_t & | nLayers, | ||
uint32_t * | nb_crystal_per_layer, | ||
uint32_t & | nCrystalsTot, | ||
uint32_t & | nCrystalsAxial, | ||
uint32_t & | nCrystalsTransaxial, | ||
vector< uint32_t > & | nLayersRptAxial, | ||
vector< uint32_t > & | nLayersRptTransaxial, | ||
uint32_t & | nSubmodulesAxial, | ||
uint32_t & | nSubmodulesTransaxial, | ||
uint32_t & | nModulesAxial, | ||
uint32_t & | nModulesTransaxial, | ||
uint32_t & | nRsectorsAxial, | ||
uint32_t & | nRsectorsAngPos, | ||
int & | rsector_id_order, | ||
uint32_t & | start_time_ms, | ||
uint32_t & | duration_ms, | ||
int | vb | ||
) |
Recover informations about the scanner element of a cylindricalPET system and acquisition duration, from a GATE macro file.
a_pathMac | : path to a main macro file |
nLayers | : nb of crystal layers |
nCrystalsAxial | : nb of axial crystals (in a submodule) |
nCrystalsTransaxial | : nb of transaxial crystals (in a submodule) |
nCrystalLayersAxial | : Array containing the number of axial crystals in each layer |
nCrystalLayersTransaxial | : Array containing the number of transaxial crystals in each layer |
nSubmodulesAxial | : nb of axial submodules (in a module) |
nSubmodulesTransaxial | : nb of transaxial submodules (in a module) |
nModulesAxial | : nb of axial modules (in a rsector) |
nModulesTransaxial | : nb of transaxial modules (in a rsector) |
nRsectorsAxial | : nb of axial rsectors |
nRsectorsAngPos | : nb of rsectors per ring |
rsector_id_order | : ordering of rsector id |
start_time_ms | : acquisition start time converted in ms |
duration_ms | : acquisition duration converted in ms |
vb | : verbosity |
Definition at line 1051 of file gDataConversionUtilities.cc.
ReadMacECAT | ( | string | a_pathMac, |
uint32_t & | nCrystalsTot, | ||
uint32_t & | nCrystalsAxial, | ||
uint32_t & | nCrystalsTransaxial, | ||
uint32_t & | nBlocksLine, | ||
uint32_t & | nBlocksPerRing, | ||
uint32_t & | start_time_ms, | ||
uint32_t & | duration_ms, | ||
int | vb | ||
) |
Recover informations about the scanner element of an ECAT system and acquisition duration, from a GATE macro file.
a_pathMac | : path to a main macro file |
nCrystalsAxial | : nb of axial crystals |
nCrystalsTransaxial | : nb of transaxial crystals |
nBlocksLine | : nb of axial blocks |
nBlocksPerRing | : nb of blocks per ring |
start_time_ms | : acquisition start time converted in ms |
duration_ms | : acquisition duration converted in ms |
vb | : verbosity |
Definition at line 1512 of file gDataConversionUtilities.cc.
ReadMacSPECT | ( | string | a_pathMac, |
float_t & | distToDetector, | ||
uint32_t & | nHeads, | ||
uint32_t & | nPixAxl, | ||
uint32_t & | nPixTrs, | ||
float_t & | crystalSizeAxl, | ||
float_t & | crystalSizeTrs, | ||
uint32_t & | nProjectionsTot, | ||
uint32_t & | nProjectionsByHead, | ||
float_t & | head1stAngle, | ||
float_t & | headAngPitch, | ||
float_t & | headAngStepDeg, | ||
int & | headRotDirection, | ||
uint32_t & | start_time_ms, | ||
uint32_t & | duration_ms, | ||
int | vb | ||
) |
Recover informations about the scanner element of an ECAT system, and acquisition duration, from a GATE macro file.
a_pathMac | : path to a macro file |
distToDetector | : distance between center of rotation and detector surface |
nHeads | : nb of cameras |
nPixAxl | : nb of transaxial pixels |
nPixTrs | : nb of axial pixels |
crystalSizeAxl | : crystal axial dimension |
crystalSizeTrs | : crystal transaxial dimension |
nProjectionsTot | : total number of projections (cumulated over each head) |
nProjectionsByHead | : total number of projections for each head |
head1stAngle | : head first angle |
headAngPitch | : angular pitch between heads |
headAngStepDeg | : angular step between each projection |
headRotDirection | : rotation direction of the head (CW or CCW) |
start_time_ms | : acquisition start time converted in ms |
duration_ms | : acquisition duration converted in ms |
vb | : verbosity |
Definition at line 1749 of file gDataConversionUtilities.cc.
Split | ( | string | a_line | ) |
Split the line provided in parameter into a vector of strings (separator is blankspace)
a_line | : string to split |
Definition at line 88 of file gDataConversionUtilities.cc.
toString | ( | T | a_val | ) |
Convert a value of any type into string.
a_val | : value to convert |
Definition at line 112 of file gDataConversionUtilities.hh.
WriteVector | ( | ofstream & | file, |
const string & | a_key, | ||
vector< T > | a_vals | ||
) |
Write the key and its values in the file provided in parameter.
file | : the output file |
a_key | : key to write |
a_vals | : vector containing the key values |
Definition at line 142 of file gDataConversionUtilities.cc.
WriteVector | ( | ofstream & | file, |
const string & | a_key, | ||
vector< string > | a_vals | ||
) |
Write the key and its values in the file provided in parameter.
file | : the output file |
a_key | : key to write |
a_vals | : vector containing the key values |
Definition at line 181 of file gDataConversionUtilities.cc.
WriteVector | ( | ofstream & | file, |
const string & | a_key, | ||
vector< vector< string > > | a_vals | ||
) |
Write the key and its values contained in a 2 level vector of strings in the file provided in parameter.
file | : the output file |
a_key | : key to write |
a_vals | : vector containing the key values |
Definition at line 216 of file gDataConversionUtilities.cc.