25 #ifndef __stir_ProjDataInfoCylindrical_H__ 26 #define __stir_ProjDataInfoCylindrical_H__ 73 const int num_tangential_poss);
75 inline float get_tantheta(
const Bin&)
const override;
77 inline float get_phi(
const Bin&)
const override;
79 inline float get_t(
const Bin&)
const override;
88 inline float get_m(
const Bin&)
const override;
100 const Bin& bin)
const;
111 const int timing_pos)
const;
113 void set_azimuthal_angle_offset(
const float angle);
116 void set_azimuthal_angle_sampling(
const float angle);
129 void set_num_views(
const int new_num_views)
override;
131 void set_tof_mash_factor(
const int new_num)
override;
134 inline float get_azimuthal_angle_offset()
const;
136 inline float get_azimuthal_angle_sampling()
const;
137 inline float get_sampling_in_t(
const Bin&)
const override;
138 inline float get_sampling_in_m(
const Bin&)
const override;
147 virtual inline float get_axial_sampling(
int segment_num)
const;
156 inline float get_average_ring_difference(
int segment_num)
const;
158 inline int get_min_ring_difference(
int segment_num)
const;
160 inline int get_max_ring_difference(
int segment_num)
const;
163 void set_min_ring_difference(
int min_ring_diff_v,
int segment_num);
165 void set_max_ring_difference(
int max_ring_diff_v,
int segment_num);
167 void set_num_axial_poss_per_segment(
const VectorWithOffset<int>& num_axial_poss_per_segment)
override;
168 void set_min_axial_pos_num(
const int min_ax_pos_num,
const int segment_num)
override;
169 void set_max_axial_pos_num(
const int max_ax_pos_num,
const int segment_num)
override;
170 void reduce_segment_range(
const int min_segment_num,
const int max_segment_num)
override;
179 inline float get_ring_radius()
const;
181 inline float get_ring_radius(
const int view_num)
const;
183 inline float get_ring_spacing()
const;
186 void set_ring_spacing(
float ring_spacing_v);
196 inline int get_view_mashing_factor()
const;
202 inline Succeeded get_segment_num_for_ring_difference(
int& segment_num,
const int ring_diff)
const;
221 get_segment_axial_pos_num_for_ring_pair(
int& segment_num,
int& axial_pos_num,
const int ring1,
const int ring2)
const;
232 inline const RingNumPairs& get_all_ring_pairs_for_segment_axial_pos_num(
const int segment_num,
const int axial_pos_num)
const;
240 inline unsigned get_num_ring_pairs_for_segment_axial_pos_num(
const int segment_num,
const int axial_pos_num)
const;
254 void get_ring_pair_for_segment_axial_pos_num(
int& ring1,
int& ring2,
const int segment_num,
const int axial_pos_num)
const;
256 std::string parameter_info()
const override;
278 bool blindly_equals(
const root_type*
const)
const override = 0;
281 float azimuthal_angle_offset;
282 float azimuthal_angle_sampling;
299 mutable bool ring_diff_arrays_computed;
311 void initialise_ring_diff_arrays()
const;
315 inline void initialise_ring_diff_arrays_if_not_done_yet()
const;
317 inline int get_num_axial_poss_per_ring_inc(
const int segment_num)
const;
323 void allocate_segment_axial_pos_to_ring_pair()
const;
327 void compute_segment_axial_pos_to_ring_pair(
const int segment_num,
const int axial_pos_num)
const;
virtual bool axial_sampling_is_uniform() const
Return if axial sampling makes sense.
Definition: ProjDataInfoCylindrical.h:150
Declaration of class stir::ProjDataInfo.
double angle(const BasicCoordinate< num_dimensions, coordT > &p1, const BasicCoordinate< num_dimensions, coordT > &p2)
compute angle between 2 directions
Definition: BasicCoordinate.inl:440
std::vector< std::pair< int, int > > RingNumPairs
Type used by get_all_ring_pairs_for_segment_axial_pos_num()
Definition: ProjDataInfoCylindrical.h:56
A class for storing coordinates and value of a single projection bin.
Definition: Bin.h:48
A class for LORs.
Definition: LORCoordinates.h:40
Implementation of inline functions of class stir::ProjDataInfoCylindrical.
projection data info for data corresponding to a 'cylindrical' sampling.
Definition: ProjDataInfoCylindrical.h:48
An (abstract base) class that contains information on the projection data.
Definition: ProjDataInfo.h:69
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition: Succeeded.h:43
defines the stir::CartesianCoordinate3D<coordT> class
bool sampling_corresponds_to_physical_rings
a variable that is set if the data corresponds to physical rings in the scanner
Definition: ProjDataInfoCylindrical.h:275