31ProjDataInfoCylindricalNoArcCorr::initialise_uncompressed_view_tangpos_to_det1det2_if_not_done_yet()
const
37#if defined(STIR_OPENMP) && _OPENMP >= 201012
39# pragma omp atomic read
40 initialised = uncompressed_view_tangpos_to_det1det2_initialised;
45#if defined(STIR_OPENMP)
46# pragma omp critical(PROJDATAINFOCYLINDRICALNOARCCORR_VIEWTANGPOS_TO_DETS)
49 if (!uncompressed_view_tangpos_to_det1det2_initialised)
50 initialise_uncompressed_view_tangpos_to_det1det2();
56ProjDataInfoCylindricalNoArcCorr::initialise_det1det2_to_uncompressed_view_tangpos_if_not_done_yet()
const
59#if defined(STIR_OPENMP) && _OPENMP >= 201012
61# pragma omp atomic read
62 initialised = det1det2_to_uncompressed_view_tangpos_initialised;
67#if defined(STIR_OPENMP)
68# pragma omp critical(PROJDATAINFOCYLINDRICALNOARCCORR_DETS_TO_VIEWTANGPOS)
71 if (!det1det2_to_uncompressed_view_tangpos_initialised)
72 initialise_det1det2_to_uncompressed_view_tangpos();
86 return angular_increment;
93 const int tang_pos_num)
const
96 this->initialise_uncompressed_view_tangpos_to_det1det2_if_not_done_yet();
98 det1_num = uncompressed_view_tangpos_to_det1det2[view_num][tang_pos_num].det1_num;
99 det2_num = uncompressed_view_tangpos_to_det1det2[view_num][tang_pos_num].det2_num;
106 const int det2_num)
const
108 assert(det1_num != det2_num);
109 this->initialise_det1det2_to_uncompressed_view_tangpos_if_not_done_yet();
112 tang_pos_num = det1det2_to_uncompressed_view_tangpos[det1_num][det2_num].tang_pos_num;
113 return det1det2_to_uncompressed_view_tangpos[det1_num][det2_num].swap_detectors;
117ProjDataInfoCylindricalNoArcCorr::get_bin_for_det_pair(
118 Bin& bin,
const int det_num1,
const int ring_num1,
const int det_num2,
const int ring_num2,
const int timing_pos_num)
const
135 return get_bin_for_det_pair(bin,
136 dp.pos1().tangential_coord(),
137 dp.pos1().axial_coord(),
138 dp.pos2().tangential_coord(),
139 dp.pos2().axial_coord(),
140 this->get_tof_mash_factor() == 0
142 :
stir::round((
float)dp.timing_pos() / this->get_tof_mash_factor()));
146 int& det_num1,
int& ring_num1,
int& det_num2,
int& ring_num2,
const Bin& bin)
const
171 dp.pos1().tangential_coord() = t1;
172 dp.pos1().axial_coord() = a1;
173 dp.pos2().tangential_coord() = t2;
174 dp.pos2().axial_coord() = a2;
178 dp.pos1().tangential_coord() = t2;
179 dp.pos1().axial_coord() = a2;
180 dp.pos2().tangential_coord() = t1;
181 dp.pos2().axial_coord() = a1;
Declaration of class stir::Bin.
Declaration of class stir::Succeeded.
A class for storing coordinates and value of a single projection bin.
Definition Bin.h:49
int tangential_pos_num() const
get tangential position number
Definition Bin.inl:76
int axial_pos_num() const
get axial position number
Definition Bin.inl:70
A class for storing 2 coordinates-sets of a detection, together with a timing-position index (for TOF...
Definition DetectionPositionPair.h:41
void get_det_num_pair_for_view_tangential_pos_num(int &det1_num, int &det2_num, const int view_num, const int tang_pos_num) const
This routine gets det_num1 and det_num2.
Definition ProjDataInfoCylindricalNoArcCorr.inl:90
void get_det_pair_for_bin(int &det_num1, int &ring_num1, int &det_num2, int &ring_num2, const Bin &bin) const
This routine gets the detector pair corresponding to a bin.
Definition ProjDataInfoCylindricalNoArcCorr.inl:145
bool get_view_tangential_pos_num_for_det_num_pair(int &view_num, int &tang_pos_num, const int det1_num, const int det2_num) const
This gets view_num and tang_pos_num for a particular detector pair.
Definition ProjDataInfoCylindricalNoArcCorr.inl:103
void get_det_pos_pair_for_bin(DetectionPositionPair<> &, const Bin &) const
This routine gets the detector pair corresponding to a bin.
Definition ProjDataInfoCylindricalNoArcCorr.inl:161
Succeeded get_bin_for_det_pos_pair(Bin &, const DetectionPositionPair<> &) const
This gets Bin coordinates for a particular detector pair.
Definition ProjDataInfoCylindricalNoArcCorr.inl:133
float get_angular_increment() const
Gets angular increment (in radians)
Definition ProjDataInfoCylindricalNoArcCorr.inl:84
float get_s(const Bin &) const override
Gets s coordinate in mm.
Definition ProjDataInfoCylindricalNoArcCorr.inl:78
virtual int get_view_mashing_factor() const
Get the mashing factor, i.e. how many 'original' views are combined.
Definition ProjDataInfoCylindrical.inl:207
void get_ring_pair_for_segment_axial_pos_num(int &ring1, int &ring2, const int segment_num, const int axial_pos_num) const
Find a ring pair that contributes to a segment and axial position.
Definition ProjDataInfoCylindrical.cxx:336
int get_tof_mash_factor() const
Get TOF mash factor.
Definition ProjDataInfo.inl:114
int segment_num() const
get segment number for const objects
Definition SegmentIndices.inl:32
int timing_pos_num() const
get TOF index for const objects
Definition SegmentIndices.inl:44
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition Succeeded.h:44
int view_num() const
get view number for const objects
Definition ViewgramIndices.inl:36
int round(const float x)
Implements rounding of floating point numbers.
Definition round.inl:59
Declaration of the stir::round functions.