STIR 6.5.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:
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 const int tof_mash_factor = 0);
95
96 self_type* clone() const override;
97
98 bool operator==(const self_type&) const;
99
101
105 inline float get_s(const Bin&) const override;
106
107 inline float get_tantheta(const Bin&) const override;
108
109 inline float get_phi(const Bin&) const override;
110
111 inline float get_t(const Bin&) const override;
112
114
117 inline float get_m(const Bin&) const override;
118
119 void get_LOR(LORInAxialAndNoArcCorrSinogramCoordinates<float>& lor, const Bin& bin) const override;
120
122 void set_azimuthal_angle_offset(const float angle) override;
124 void set_azimuthal_angle_sampling(const float angle) override;
125
127 void set_num_views(const int new_num_views) override;
129 void set_ring_spacing(float ring_spacing_v) override;
131 void set_ring_radii_for_all_views(const VectorWithOffset<float>& new_ring_radius) override;
132
134 // TODOBLOCK what does this mean in a generic case?
135 inline float get_ring_spacing() const override;
136
137 inline float get_sampling_in_t(const Bin&) const override;
138 inline float get_sampling_in_m(const Bin&) const override;
139
140 inline float get_axial_sampling(int segment_num) const override;
141 inline bool axial_sampling_is_uniform() const override;
142
143 std::string parameter_info() const override;
144
145 Bin get_bin(const LOR<float>&, const double delta_time = 0.0) const override;
146
147protected:
148 // give access to protected member find_cartesian_coordinates_given_scanner_coordinates
149 template <typename ProjDataInfoT>
150 friend class CListEventScannerWithDiscreteDetectors;
152
153
161 // This version uses the coordinate map
164 const int Ring_A,
165 const int Ring_B,
166 const int det1,
167 const int det2,
168 const int timing_pos_num = 0) const override;
169
171protected:
173
174protected:
175 bool blindly_equals(const root_type* const) const override;
176};
177
180
181END_NAMESPACE_STIR
182
184
185#endif
defines the stir::CartesianCoordinate3D<coordT> class
Declaration of class stir::DetectionPositionPair.
Implementation of inline functions of class stir::ProjDataInfoGenericNoArcCorr.
Declaration of class stir::ProjDataInfoPETScannerWithDiscreteDetectors.
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
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:100
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:71
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:188
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 ProjDataInfoGenericNoArcCorr.cxx:112
bool blindly_equals(const root_type *const) const override
Definition ProjDataInfoGenericNoArcCorr.cxx:86
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:119
std::string parameter_info() const override
Return a string describing the object.
Definition ProjDataInfoGenericNoArcCorr.cxx:166
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:38
void get_LOR(LORInAxialAndNoArcCorrSinogramCoordinates< float > &lor, const Bin &bin) const override
Find lor from cartesian coordinates of detector pair.
Definition ProjDataInfoGenericNoArcCorr.cxx:127
void set_azimuthal_angle_offset(const float angle) override
currently calls error() unless nothing changes
Definition ProjDataInfoGenericNoArcCorr.cxx:93
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:106
Bin get_bin(const LOR< float > &, const double delta_time=0.0) const override
Definition ProjDataInfoGenericNoArcCorr.cxx:226
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
ProjDataInfoCylindricalNoArcCorr ProjDataInfoPETScannerWithDiscreteDetectors
PET Projection data info for data that correspond directly to discrete detectors (which are not arc-c...
Definition ProjDataInfoPETScannerWithDiscreteDetectors.h:35
ProjDataInfoGenericNoArcCorr ProjDataInfoGeneric
For backwards compatibility.
Definition ProjDataInfoGenericNoArcCorr.h:179