20 #ifndef __RelatedViewgrams_h__ 21 #define __RelatedViewgrams_h__ 39 template <
typename elemT>
40 class RelatedViewgrams
42 #ifdef STIR_COMPILING_SWIG_WRAPPER 45 typedef RelatedViewgrams<elemT> self_type;
50 typedef std::random_access_iterator_tag iterator_category;
51 typedef Viewgram<elemT> value_type;
52 typedef value_type& reference;
53 typedef const value_type& const_reference;
54 typedef std::ptrdiff_t difference_type;
55 typedef std::size_t size_type;
57 typedef typename std::vector<Viewgram<elemT>>::iterator iterator;
58 typedef typename std::vector<Viewgram<elemT>>::const_iterator const_iterator;
64 inline RelatedViewgrams();
71 inline RelatedViewgrams(
const std::vector<Viewgram<elemT>>& viewgrams,
72 const shared_ptr<DataSymmetriesForViewSegmentNumbers>& symmetries_used);
78 inline int get_basic_view_num()
const;
81 inline int get_basic_segment_num()
const;
84 inline int get_basic_timing_pos_num()
const;
87 inline ViewgramIndices get_basic_view_segment_num()
const;
90 inline ViewgramIndices get_basic_viewgram_indices()
const;
93 inline int get_num_viewgrams()
const;
94 inline int get_num_axial_poss()
const;
95 inline int get_num_tangential_poss()
const;
96 inline int get_min_axial_pos_num()
const;
97 inline int get_max_axial_pos_num()
const;
98 inline int get_min_tangential_pos_num()
const;
99 inline int get_max_tangential_pos_num()
const;
102 inline shared_ptr<const ProjDataInfo> get_proj_data_info_sptr()
const;
104 inline const DataSymmetriesForViewSegmentNumbers* get_symmetries_ptr()
const;
107 inline shared_ptr<DataSymmetriesForViewSegmentNumbers> get_symmetries_sptr()
const;
111 void grow(
const IndexRange<2>& range);
119 inline iterator begin();
121 inline iterator end();
123 inline const_iterator begin()
const;
125 inline const_iterator end()
const;
130 RelatedViewgrams& operator*=(
const elemT);
132 RelatedViewgrams& operator/=(
const elemT);
134 RelatedViewgrams& operator+=(
const elemT);
136 RelatedViewgrams& operator-=(
const elemT);
139 RelatedViewgrams& operator*=(
const RelatedViewgrams<elemT>&);
141 RelatedViewgrams& operator/=(
const RelatedViewgrams<elemT>&);
143 RelatedViewgrams& operator+=(
const RelatedViewgrams<elemT>&);
145 RelatedViewgrams& operator-=(
const RelatedViewgrams<elemT>&);
150 elemT find_max()
const;
152 elemT find_min()
const;
154 void fill(
const elemT& n);
159 RelatedViewgrams get_empty_copy()
const;
167 bool has_same_characteristics(self_type
const&, std::string& explanation)
const;
172 bool has_same_characteristics(self_type
const&)
const;
179 bool operator==(
const self_type&)
const;
182 bool operator!=(
const self_type&)
const;
186 friend class ProjData;
187 friend class ProjDataInfo;
190 std::vector<Viewgram<elemT>> viewgrams;
191 shared_ptr<DataSymmetriesForViewSegmentNumbers> symmetries_used;
195 inline void check_state()
const;
198 void debug_check_state()
const;
205 #endif // __RelatedViewgrams_h__ Declaration of class stir::DataSymmetriesForViewSegmentNumbers.
Declaration of class stir::Viewgram.