STIR 6.4.0
ProjDataInfoGenericNoArcCorr.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2011-07-01 - 2011, Kris Thielemans
3 Copyright (C) 2017, ETH Zurich, Institute of Particle Physics and Astrophysics
4 Copyright (C) 2026, UCL
5 This file is part of STIR.
6
7 SPDX-License-Identifier: Apache-2.0
8
9 See STIR/LICENSE.txt for details
10*/
11
22#ifndef __stir_ProjDataInfoGenericNoArcCorr_H__
23#define __stir_ProjDataInfoGenericNoArcCorr_H__
24
29
30START_NAMESPACE_STIR
31
32class Succeeded;
33
70{
71private:
72 typedef ProjDataInfoCylindricalNoArcCorr base_type;
73#ifdef STIR_COMPILING_SWIG_WRAPPER
74 // SWIG needs this typedef to be public
75public:
76#endif
77 typedef ProjDataInfoGenericNoArcCorr self_type;
78
79public:
81 typedef std::vector<std::pair<int, int>> RingNumPairs;
82
85
88 const shared_ptr<Scanner> scanner_ptr,
89 const VectorWithOffset<int>& num_axial_pos_per_segment, // index ranges from min_segment_num to max_segment_num
90 const VectorWithOffset<int>& min_ring_diff_v,
91 const VectorWithOffset<int>& max_ring_diff_v,
92 const int num_views,
93 const int num_tangential_poss);
94
95 self_type* clone() const override;
96
97 bool operator==(const self_type&) const;
98
100
104 inline float get_s(const Bin&) const override;
105
106 inline float get_tantheta(const Bin&) const override;
107
108 inline float get_phi(const Bin&) const override;
109
110 inline float get_t(const Bin&) const override;
111
113
116 inline float get_m(const Bin&) const override;
117
118 void get_LOR(LORInAxialAndNoArcCorrSinogramCoordinates<float>& lor, const Bin& bin) const override;
119
121 void set_azimuthal_angle_offset(const float angle) override;
123 void set_azimuthal_angle_sampling(const float angle) override;
124
126 void set_num_views(const int new_num_views) override;
128 void set_ring_spacing(float ring_spacing_v) override;
130 void set_ring_radii_for_all_views(const VectorWithOffset<float>& new_ring_radius) override;
131
133 // TODOBLOCK what does this mean in a generic case?
134 inline float get_ring_spacing() const override;
135
136 inline float get_sampling_in_t(const Bin&) const override;
137 inline float get_sampling_in_m(const Bin&) const override;
138
139 inline float get_axial_sampling(int segment_num) const override;
140 inline bool axial_sampling_is_uniform() const override;
141
142 std::string parameter_info() const override;
143
144 Bin get_bin(const LOR<float>&, const double delta_time = 0.0) const override;
145
147
148
156
157 // This version uses the coordinate map
160 const int Ring_A,
161 const int Ring_B,
162 const int det1,
163 const int det2,
164 const int timing_pos_num = 0) const override;
165
167protected:
169
170protected:
171 bool blindly_equals(const root_type* const) const override;
172};
173
176
177END_NAMESPACE_STIR
178
180
181#endif
defines the stir::CartesianCoordinate3D<coordT> class
Declaration of class stir::DetectionPositionPair.
Declaration of class stir::ProjDataInfoCylindricalNoArcCorr.
Implementation of inline functions of class stir::ProjDataInfoGenericNoArcCorr.
defines the stir::VectorWithOffset class
A class for storing coordinates and value of a single projection bin.
Definition Bin.h:49
a templated class for 3-dimensional coordinates.
Definition CartesianCoordinate3D.h:53
A class for LORs.
Definition LORCoordinates.h:511
A base class for specifying an LOR with geometric coordinates.
Definition LORCoordinates.h:59
ProjDataInfoCylindricalNoArcCorr()
Default constructor (leaves object in ill-defined state)
Definition ProjDataInfoCylindricalNoArcCorr.cxx:44
Projection data info for data for a scanner with discrete detectors.
Definition ProjDataInfoGenericNoArcCorr.h:70
float get_sampling_in_m(const Bin &) const override
Get sampling distance in the m coordinate.
Definition ProjDataInfoGenericNoArcCorr.inl:81
void set_azimuthal_angle_sampling(const float angle) override
calls error()
Definition ProjDataInfoGenericNoArcCorr.cxx:92
float get_axial_sampling(int segment_num) const override
Get the axial sampling (e.g in z_direction)
Definition ProjDataInfoGenericNoArcCorr.inl:99
float get_t(const Bin &) const override
Get value of the (roughly) axial coordinate in the projection plane (in mm)
Definition ProjDataInfoGenericNoArcCorr.inl:58
self_type * clone() const override
Standard trick for a 'virtual copy-constructor'.
Definition ProjDataInfoGenericNoArcCorr.cxx:63
float get_s(const Bin &) const override
Gets s coordinate in mm.
Definition ProjDataInfoGenericNoArcCorr.inl:122
virtual void find_cartesian_coordinates_given_scanner_coordinates(CartesianCoordinate3D< float > &coord_1, CartesianCoordinate3D< float > &coord_2, const int Ring_A, const int Ring_B, const int det1, const int det2, const int timing_pos_num=0) const override
Definition ProjDataInfoGenericNoArcCorr.cxx:157
bool axial_sampling_is_uniform() const override
Return if axial sampling makes sense.
Definition ProjDataInfoGenericNoArcCorr.inl:106
void set_num_views(const int new_num_views) override
currently calls error() unless nothing changes
Definition ProjDataInfoGeneric.cxx:77
bool blindly_equals(const root_type *const) const override
Definition ProjDataInfoGenericNoArcCorr.cxx:78
float get_sampling_in_t(const Bin &) const override
Get sampling distance in the t coordinate.
Definition ProjDataInfoGenericNoArcCorr.inl:90
float get_ring_spacing() const override
return an average ring-spacing (from Scanner)
Definition ProjDataInfoGenericNoArcCorr.inl:113
float get_tantheta(const Bin &) const override
Get tangent of the co-polar angle of the normal to the projection plane.
Definition ProjDataInfoGenericNoArcCorr.inl:72
void set_ring_spacing(float ring_spacing_v) override
currently calls error() unless nothing changes
Definition ProjDataInfoGenericNoArcCorr.cxx:111
std::string parameter_info() const override
Return a string describing the object.
Definition ProjDataInfoGeneric.cxx:110
float get_m(const Bin &) const override
Return z-coordinate of the middle of the LOR.
Definition ProjDataInfoGenericNoArcCorr.inl:50
ProjDataInfoGenericNoArcCorr()
Default constructor (leaves object in ill-defined state)
Definition ProjDataInfoGenericNoArcCorr.cxx:36
void get_LOR(LORInAxialAndNoArcCorrSinogramCoordinates< float > &lor, const Bin &bin) const override
warning Find lor from cartesian coordinates of detector pair
Definition ProjDataInfoGeneric.cxx:94
void set_azimuthal_angle_offset(const float angle) override
currently calls error() unless nothing changes
Definition ProjDataInfoGenericNoArcCorr.cxx:85
std::vector< std::pair< int, int > > RingNumPairs
Type used by get_all_ring_pairs_for_segment_axial_pos_num()
Definition ProjDataInfoGenericNoArcCorr.h:81
float get_phi(const Bin &) const override
find phi from correspoding lor
Definition ProjDataInfoGenericNoArcCorr.inl:39
void set_ring_radii_for_all_views(const VectorWithOffset< float > &new_ring_radius) override
calls error()
Definition ProjDataInfoGenericNoArcCorr.cxx:98
Bin get_bin(const LOR< float > &, const double delta_time=0.0) const override
Definition ProjDataInfoGenericNoArcCorr.cxx:197
A templated class for vectors, but with indices starting not from 0.
Definition VectorWithOffset.h:65
double angle(const BasicCoordinate< num_dimensions, coordT > &p1, const BasicCoordinate< num_dimensions, coordT > &p2)
compute angle between 2 directions
Definition BasicCoordinate.inl:440
ProjDataInfoGenericNoArcCorr ProjDataInfoGeneric
For backwards compatibility.
Definition ProjDataInfoGenericNoArcCorr.h:175