24 #ifndef __stir_IO_stir_ecat6_H__ 25 #define __stir_IO_stir_ecat6_H__ 40 template <
int num_dimensions,
typename elemT>
41 class DiscretisedDensity;
42 template <
typename elemT>
43 class VoxelsOnCartesianGrid;
44 template <
typename elemT>
90 VoxelsOnCartesianGrid<float>* ECAT6_to_VoxelsOnCartesianGrid(
const int frame_num,
95 const ECAT6_Main_header& mhead);
109 void ECAT6_to_PDFS(
const int frame_num,
115 const std::string& output_file_name,
117 const ECAT6_Main_header& mhead);
128 std::string
const& cti_name,
129 std::string
const& orig_name,
130 const Scanner& scanner,
131 const int frame_num = 1,
132 const int gate_num = 1,
133 const int data_num = 0,
134 const int bed_num = 0);
143 DiscretisedDensity<3, float>
const& density,
144 const ECAT6_Main_header& mhead,
145 const int frame_num = 1,
146 const int gate_num = 1,
147 const int data_num = 0,
148 const int bed_num = 0);
158 std::string
const& cti_name,
159 std::string
const& orig_name,
160 const int frame_num = 1,
161 const int gate_num = 1,
162 const int data_num = 0,
163 const int bed_num = 0,
164 const bool write_2D_sinograms =
false);
176 ProjData
const& proj_data,
177 const ECAT6_Main_header& mhead,
178 const int frame_num = 1,
179 const int gate_num = 1,
180 const int data_num = 0,
181 const int bed_num = 0,
182 const bool write_2D_sinograms =
false);
188 void make_ECAT6_Main_header(ECAT6_Main_header&,
const Scanner&,
const std::string& orig_name, ExamInfo
const& exam_info);
195 Scanner
const& scanner,
196 const std::string& orig_name,
197 DiscretisedDensity<3, float>
const& density);
204 void make_ECAT6_Main_header(ECAT6_Main_header& mhead,
const std::string& orig_name, ProjDataInfo
const& proj_data_info);
Succeeded DiscretisedDensity_to_ECAT6(FILE *fptr, DiscretisedDensity< 3, float > const &density, const ECAT6_Main_header &mhead, const int frame_num=1, const int gate_num=1, const int data_num=0, const int bed_num=0)
Write an (extra) image to an existing ECAT6 file.
Definition: stir_ecat6.cxx:614
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast (or corresponding b...
ECAT 6 CTI matrix parameters.
Scanner * find_scanner_from_ECAT6_Main_header(const ECAT6_Main_header &mhead)
determine scanner type from the ECAT6_Main_header
Definition: stir_ecat6.cxx:161
bool is_ECAT6_image_file(const std::string &filename)
checks if the file is in ECAT6 format and if the file contains images
Definition: stir_ecat6.cxx:140
bool is_ECAT6_file(const std::string &filename)
checks if the file is in ECAT6 formatAs ECAT6 doesn't have a 'magic number' this check is somewhat he...
Definition: stir_ecat6.cxx:133
Succeeded ProjData_to_ECAT6(FILE *fptr, ProjData const &proj_data, const ECAT6_Main_header &mhead, const int frame_num=1, const int gate_num=1, const int data_num=0, const int bed_num=0, const bool write_2D_sinograms=false)
Write an (extra) set of sinograms to an existing ECAT6 file.
Definition: stir_ecat6.cxx:792
bool is_ECAT6_emission_file(const std::string &filename)
checks if the file is in ECAT6 format and if the file contains emission sinograms (or blank/transmisi...
Definition: stir_ecat6.cxx:147
bool is_ECAT6_attenuation_file(const std::string &filename)
checks if the file is in ECAT6 format and if the file contains attenuation correction factors ...
Definition: stir_ecat6.cxx:154
void make_ECAT6_Main_header(ECAT6_Main_header &mhead, const std::string &orig_name, ProjDataInfo const &proj_data_info)
Fill in most of the main header given an orig_name and a proj_data_info.
Definition: stir_ecat6.cxx:216
Declaration of routines which convert ECAT things into our building blocks and vice versa...