STIR  6.2.0
ProjDataInfoSubsetByView.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2021-2022, Commonwealth Scientific and Industrial Research Organisation
3  Copyright (C) 2021-2022, University College London
4  This file is part of STIR.
5 
6  SPDX-License-Identifier: Apache-2.0
7 
8  See STIR/LICENSE.txt for details
9 */
19 #ifndef __stir_ProjDataInfoSubsetByView__H__
20 #define __stir_ProjDataInfoSubsetByView__H__
21 
22 #include "stir/ProjDataInfo.h"
23 #include <utility>
24 #include <vector>
25 
26 START_NAMESPACE_STIR
27 
28 class Succeeded;
29 
38 {
39 private:
40  typedef ProjDataInfo base_type;
42 
43 public:
45 
48  ProjDataInfoSubsetByView(const shared_ptr<const ProjDataInfo> org_proj_data_info_sptr, const std::vector<int>& views);
49 
51  ProjDataInfoSubsetByView* clone() const override;
52 
54  bool contains_full_data() const;
55 
57  std::vector<int> get_original_view_nums() const override;
58 
60  Bin get_original_bin(const Bin& bin) const;
61 
63  Bin get_bin_from_original(const Bin& org_bin) const;
64 
66 
67  void reduce_segment_range(const int min_segment_num, const int max_segment_num) override;
68 
70  void set_num_views(const int new_num_views) override;
71 
73 
75  void set_num_tangential_poss(const int num_tang_poss) override;
76 
78 
80  void set_num_axial_poss_per_segment(const VectorWithOffset<int>& num_axial_poss_per_segment) override;
81 
83 
85  void set_min_axial_pos_num(const int min_ax_pos_num, const int segment_num) override;
86 
88 
90  void set_max_axial_pos_num(const int max_ax_pos_num, const int segment_num) override;
91 
93 
95  void set_min_tangential_pos_num(const int min_tang_poss) override;
96 
98 
100  void set_max_tangential_pos_num(const int max_tang_poss) override;
101 
102  //| \name Functions that return geometrical info for a Bin
104 
106 
108  float get_tantheta(const Bin&) const override;
109 
111 
114  float get_phi(const Bin&) const override;
115 
117 
119  float get_t(const Bin&) const override;
120 
122 
124  float get_m(const Bin&) const override;
125 
127 
129  float get_s(const Bin&) const override;
130 
132 
135  void get_LOR(LORInAxialAndNoArcCorrSinogramCoordinates<float>&, const Bin&) const override;
136 
138 
140 
141 
143 
145  float get_sampling_in_t(const Bin&) const override;
146 
148 
150  float get_sampling_in_m(const Bin&) const override;
151 
153 
155  float get_sampling_in_s(const Bin&) const override;
156 
158 
160 
162  Bin get_bin(const LOR<float>&, const double delta_time = 0.0) const override;
163 
165 
170  bool operator>=(const ProjDataInfo& proj) const override;
171 
172  std::string parameter_info() const override;
173 
175  shared_ptr<const ProjDataInfo> get_original_proj_data_info_sptr() const;
176 
177 protected:
178  bool blindly_equals(const root_type* const) const override;
179 
180 private:
181  shared_ptr<ProjDataInfo> org_proj_data_info_sptr;
183  std::vector<int> view_to_org_view_num;
185  std::vector<int> org_view_to_view_num;
186 };
187 
188 END_NAMESPACE_STIR
189 
190 #endif
Declaration of class stir::ProjDataInfo.
A class for storing coordinates and value of a single projection bin.
Definition: Bin.h:48
Projection data info for data corresponding to a subset sampling by views.
Definition: ProjDataInfoSubsetByView.h:37
A class for LORs.
Definition: LORCoordinates.h:40
An (abstract base) class that contains information on the projection data.
Definition: ProjDataInfo.h:69