40 bool operator()(
const petsird::ExpandedDetectionBin& a,
const petsird::ExpandedDetectionBin& b)
const
43 if (a.module_index < b.module_index)
45 if (a.module_index > b.module_index)
48 if (a.element_index < b.element_index)
50 if (a.element_index > b.element_index)
52 return a.energy_index < b.energy_index;
70 explicit PETSIRDInfo(shared_ptr<const petsird::Header> header_sptr, std::string scanner_geometry =
"");
74 inline std::shared_ptr<Scanner> get_scanner_sptr()
const {
return stir_scanner_sptr; }
76 inline const petsird::ScannerInformation& get_petsird_scanner_info()
const {
return petsird_header_sptr->scanner; }
78 inline shared_ptr<PETSIRDToSTIRDetectorIndexMap> get_petsird_to_stir_map()
const {
return petsird_to_stir; }
80 inline shared_ptr<STIRToPETSIRDDetectorIndexMap> get_stir_to_petsird_map()
const {
return stir_to_petsird; }
82 inline shared_ptr<DetectorCoordinateMap::det_pos_to_coord_type> get_petsird_map_sptr()
const {
return petsird_map_sptr; }
84 inline bool is_generic_geometry_used()
const {
return is_generic_geometry; }
86 inline bool is_block_configuration_used()
const {
return is_block_configuration; }
88 inline bool is_cylindrical_configuration_used()
const {
return is_cylindrical; };
92 float get_lower_energy_threshold()
const;
94 float get_upper_energy_threshold()
const;
105 int figure_out_scanner_blocks_and_rotation_axis(std::set<float>& unique_dim1_values,
106 std::set<float>& unique_dim2_values,
107 std::set<float>& unique_dim3_values);
113 void figure_out_block_angles(std::set<float>& unique_angle_modules,
const int rot_axis);
124 void figure_out_block_element_transformations(std::set<float>& unique_dim1_values,
125 std::set<float>& unique_dim2_values,
126 std::set<float>& unique_dim3_values,
129 const int rotation_axis);
136 shared_ptr<const petsird::Header> petsird_header_sptr;
138 shared_ptr<Scanner> stir_scanner_sptr;
140 uint32_t numberOfModules;
142 uint32_t numberOfElementsIndices;
144 uint32_t blocks_per_bucket_transaxial;
146 uint32_t blocks_per_bucket_axial;
148 uint32_t num_axial_crystals_per_block;
150 uint32_t num_trans_crystals_per_block;
152 bool is_cylindrical =
true;
154 bool is_generic_geometry =
false;
156 bool is_block_configuration =
false;
158 petsird::TypeOfModule type_of_module;
160 petsird::TypeOfModulePair module_pair;
162 std::string forced_geometry =
"";
164 shared_ptr<PETSIRDToSTIRDetectorIndexMap> petsird_to_stir;
166 shared_ptr<STIRToPETSIRDDetectorIndexMap> stir_to_petsird;
168 shared_ptr<DetectorCoordinateMap::det_pos_to_coord_type> petsird_map_sptr;
std::map< petsird::ExpandedDetectionBin, stir::DetectionPosition<>, ExpandedDetectionBinLess > PETSIRDToSTIRDetectorIndexMap
Mapping type from petsird::ExpandedDetectionBin to stir::DetectionPosition.
Definition PETSIRDInfo.h:59