CASToR  1.1
Tomographic Reconstruction (PET/SPECT)
 All Classes Files Functions Variables Typedefs Macros Groups Pages
gDataConversionUtilities.hh
Go to the documentation of this file.
1 
9 #ifndef UTILS_HH
10 #define UTILS_HH 1
11 
12 #include "gVariables.hh"
13 #include "gOptions.hh"
14 #include "iDataFilePET.hh"
15 #include "sOutputManager.hh"
16 #include "sScannerManager.hh"
17 #include "oInterfileIO.hh"
18 
19 #ifdef CASTOR_ROOT
20  #include "TROOT.h"
21  #include "TApplication.h"
22  #include "TGClient.h"
23  #include "TCanvas.h"
24  #include "TSystem.h"
25  #include "TTree.h"
26  #include "TBranch.h"
27  #include "TFile.h"
28 #endif
29 
30 
31 
40 #define GATE_SYS_UNKNOWN -1
41 
42 #define GATE_SYS_CYLINDRICAL 0
43 
44 #define GATE_SYS_ECAT 1
45 
46 #define GATE_SYS_SPECT 2
47 
50 #define GATE_NB_MAX_LAYERS 4 // Max number of layer in GATE = 4
51 
52 
62 vector<string> CheckGATECommand(const string& a_key, const string& a_line);
63 
70 vector<string> Split(string a_line);
71 
72 
79 void ConvertValuesTomm(vector<string>& values);
80 
81 
88 template <class T>
89 string toString(T a_val)
90 {
91  stringstream ss;
92  ss << a_val;
93  return ss.str();
94 }
95 
96 
105 template <typename T>
106 int WriteVector(ofstream& file, const string& a_key, vector <T> a_vals);
107 
116 int WriteVector(ofstream& file, const string& a_key, vector <string> a_vals);
117 
126 int WriteVector(ofstream& file, const string& a_key, vector <vector<string> > a_vals);
127 
128 
129 
136 int GetGATESystemType(const string& a_pathMac);
137 
138 
139 
140 
148 int GetGATEMacFiles(const string& a_pathMac, vector<string> &ap_pathToMacFiles);
149 
150 
151 
152 
171 int GetGATEAliasesCylindrical(vector<string> path_mac_files,
172  string& rsector_name,
173  string& module_name,
174  string& submodule_name,
175  string& crystal_name,
176  vector<string>& layers_name ,
177  int vb );
178 
179 
180 
181 
195 int GetGATEAliasesEcat(vector<string> path_mac_files,
196  string& block_name,
197  string& crystal_name,
198  int vb );
199 
200 
201 
202 
218 int GetGATEAliasesSPECT(vector<string> path_mac_files,
219  string& base_name,
220  string& crystal_name,
221  string& pixel_name,
222  int vb );
223 
224 
225 
226 
243 uint32_t ConvertIDecat(int32_t nBlocksPerRing,
244  int32_t nBlocksLine,
245  int32_t nCrystalsTransaxial,
246  int32_t nCrystalsAxial,
247  int32_t crystalID,
248  int32_t blockID);
249 
250 
251 
252 
253 
266 uint32_t ConvertIDSPECTRoot1( int32_t a_headID,
267  float_t a_rotAngle,
268  float_t a_angStep,
269  uint32_t a_nProjectionsByHead);
270 
271 
272 
303 uint32_t ConvertIDSPECTRoot2( uint32_t a_nbSimulatedPixels,
304  uint32_t a_nPixTrs,
305  uint32_t a_nPixAxl,
306  int32_t a_headID,
307  int32_t a_crystalID,
308  int32_t a_pixelID,
309  float_t a_rotAngle,
310  float_t a_headAngPitch,
311  float_t a_crystalSizeAxl,
312  float_t a_crystalSizeTrs,
313  float_t a_gPosX,
314  float_t a_gPosY,
315  float_t a_gPosZ);
316 
317 
318 
319 
356 uint32_t ConvertIDcylindrical(uint32_t nRsectorsPerRing,
357  uint32_t nModulesTransaxial,
358  uint32_t nModulesAxial,
359  uint32_t nSubmodulesTransaxial,
360  uint32_t nSubmodulesAxial,
361  uint32_t nCrystalsTransaxial,
362  uint32_t nCrystalsAxial,
363  uint8_t nLayers,
364  uint32_t* nCrystalPerLayer,
365  vector<uint32_t> nLayersRptTransaxial,
366  vector<uint32_t> nLayersRptAxial,
367  int32_t layerID,
368  int32_t crystalID,
369  int32_t submoduleID,
370  int32_t moduleID,
371  int32_t rsectorID);
372 
386 int ComputeKindGATEEvent(uint32_t eventID1, uint32_t eventID2,
387  int comptonPhantom1, int comptonPhantom2,
388  int rayleighPhantom1, int rayleighPhantom2);
389 
390 
391 
413 int ReadMacECAT(string a_pathMac,
414  uint32_t &nCrystalsTot,
415  uint32_t &nCrystalsAxial,
416  uint32_t &nCrystalsTransaxial,
417  uint32_t &nBlocksLine,
418  uint32_t &nBlocksPerRing,
419  uint32_t &start_time_ms,
420  uint32_t &duration_ms,
421  int vb);
422 
423 
460 int ReadMacSPECT( string a_pathMac,
461  float_t &distToDetector,
462  uint32_t &nHeads,
463  uint32_t &nPixAxl,
464  uint32_t &nPixTrs,
465  float_t &crystalSizeAxl,
466  float_t &crystalSizeTrs,
467  uint32_t &nProjectionsTot,
468  uint32_t &nProjectionsByHead,
469  float_t &head1stAngle,
470  float_t &headAngPitch,
471  float_t &headAngStepDeg,
472  int &headRotDirection,
473  uint32_t &start_time_ms,
474  uint32_t &duration_ms,
475  int vb);
476 
477 
478 
479 
480 
516 int ReadIntfSPECT(string a_pathIntf,
517  float_t &ap_distToDetector,
518  uint32_t &ap_nHeads,
519  uint32_t &ap_nPixAxl,
520  uint32_t &ap_nPixTrs,
521  float_t &ap_crystalSizeAxl,
522  float_t &ap_crystalSizeTrs,
523  uint32_t &ap_nProjectionsTot,
524  uint32_t &ap_nProjectionsByHead,
525  float_t &ap_head1stAngle,
526  float_t &ap_headAngPitch,
527  float_t &headAngStepDeg,
528  int &ap_headRotDirection,
529  uint32_t &ap_start_time_ms,
530  uint32_t &ap_duration_ms,
531  int vb);
532 
533 
534 
535 
570 int ReadMacCylindrical( string a_pathMac,
571  uint8_t &nLayers,
572  uint32_t *nb_crystal_per_layer,
573  uint32_t &nCrystalsTot,
574  uint32_t &nCrystalsAxial,
575  uint32_t &nCrystalsTransaxial,
576  vector<uint32_t> &nLayersRptAxial,
577  vector<uint32_t> &nLayersRptTransaxial,
578  uint32_t &nSubmodulesAxial,
579  uint32_t &nSubmodulesTransaxial,
580  uint32_t &nModulesAxial,
581  uint32_t &nModulesTransaxial,
582  uint32_t &nRsectorsPerRing,
583  uint32_t &start_time_ms,
584  uint32_t &duration_ms,
585  int vb);
586 
587 
588 
596 int CreateGeomWithECAT(string a_pathMac, string a_pathGeom);
597 
598 
599 
600 
608 int CreateGeomWithCylindrical(string a_pathMac, string a_pathGeom);
609 
610 
611 
612 
620 int CreateGeomWithSPECT(string a_pathMac, string a_pathGeom);
621 
622 #endif
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.
void ConvertValuesTomm(vector< string > &values)
Check if the vector of strings passed in parameter contains the 'cm' unit In this case...
This header file is mainly used to declare some macro definitions and all includes needed from the st...
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 va...
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...
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 ...
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 &nRsectorsPerRing, uint32_t &start_time_ms, uint32_t &duration_ms, int vb)
Recover informations about the scanner element of a cylindricalPET system and acquisition duration...
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 ...
Declaration of class iDataFilePET.
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 ...
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.
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.
Declaration of class sScannerManager.
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...
int WriteVector(ofstream &file, const string &a_key, vector< T > a_vals)
Write the key and its values in the file provided in parameter.
string toString(T a_val)
Convert a value of any type into string.
Declaration of class sOutputManager.
uint32_t ConvertIDcylindrical(uint32_t nRsectorsPerRing, 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/submo...
int GetGATEMacFiles(const string &a_pathMac, vector< string > &ap_pathToMacFiles)
Extract the paths to each macro file contained in the main macro file.
This file is used for all kind of different functions designed for options parsing and ASCII file rea...
vector< string > Split(string a_line)
Split the line provided in parameter into a vector of strings (separator is blankspace) ...
This group of functions manages Interfile image file format.
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 ...
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...
int GetGATESystemType(const string &a_pathMac)
Read a GATE macro file and identify the system type from the 'gate/systems/' command lines...
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 geo...
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 fil...
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.