32ProjDataInfoCylindricalNoArcCorr::initialise_uncompressed_view_tangpos_to_det1det2_if_not_done_yet()
const
38#if defined(STIR_OPENMP) && _OPENMP >= 201012
40# pragma omp atomic read
41 initialised = uncompressed_view_tangpos_to_det1det2_initialised;
46#if defined(STIR_OPENMP)
47# pragma omp critical(PROJDATAINFOCYLINDRICALNOARCCORR_VIEWTANGPOS_TO_DETS)
50 if (!uncompressed_view_tangpos_to_det1det2_initialised)
51 initialise_uncompressed_view_tangpos_to_det1det2();
57ProjDataInfoCylindricalNoArcCorr::initialise_det1det2_to_uncompressed_view_tangpos_if_not_done_yet()
const
60#if defined(STIR_OPENMP) && _OPENMP >= 201012
62# pragma omp atomic read
63 initialised = det1det2_to_uncompressed_view_tangpos_initialised;
68#if defined(STIR_OPENMP)
69# pragma omp critical(PROJDATAINFOCYLINDRICALNOARCCORR_DETS_TO_VIEWTANGPOS)
72 if (!det1det2_to_uncompressed_view_tangpos_initialised)
73 initialise_det1det2_to_uncompressed_view_tangpos();
87 return angular_increment;
94 const int tang_pos_num)
const
97 this->initialise_uncompressed_view_tangpos_to_det1det2_if_not_done_yet();
99 det1_num = uncompressed_view_tangpos_to_det1det2[view_num][tang_pos_num].det1_num;
100 det2_num = uncompressed_view_tangpos_to_det1det2[view_num][tang_pos_num].det2_num;
107 const int det2_num)
const
109 assert(det1_num != det2_num);
110 this->initialise_det1det2_to_uncompressed_view_tangpos_if_not_done_yet();
113 tang_pos_num = det1det2_to_uncompressed_view_tangpos[det1_num][det2_num].tang_pos_num;
114 return det1det2_to_uncompressed_view_tangpos[det1_num][det2_num].swap_detectors;
118ProjDataInfoCylindricalNoArcCorr::get_bin_for_det_pair(
119 Bin& bin,
const int det_num1,
const int ring_num1,
const int det_num2,
const int ring_num2,
const int timing_pos_num)
const
128 bin.
timing_pos_num() = -timing_pos_num - (get_num_tof_poss() % 2 == 0);
136 return get_bin_for_det_pair(bin,
137 dp.pos1().tangential_coord(),
138 dp.pos1().axial_coord(),
139 dp.pos2().tangential_coord(),
140 dp.pos2().axial_coord(),
141 this->get_tof_mash_factor() == 0
143 :
stir::round((
float)dp.timing_pos() / this->get_tof_mash_factor()));
147 int& det_num1,
int& ring_num1,
int& det_num2,
int& ring_num2,
const Bin& bin)
const
172 dp.pos1().tangential_coord() = t1;
173 dp.pos1().axial_coord() = a1;
174 dp.pos2().tangential_coord() = t2;
175 dp.pos2().axial_coord() = a2;
179 dp.pos1().tangential_coord() = t2;
180 dp.pos1().axial_coord() = a2;
181 dp.pos2().tangential_coord() = t1;
182 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:91
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:146
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:104
void get_det_pos_pair_for_bin(DetectionPositionPair<> &, const Bin &) const
This routine gets the detector pair corresponding to a bin.
Definition ProjDataInfoCylindricalNoArcCorr.inl:162
Succeeded get_bin_for_det_pos_pair(Bin &, const DetectionPositionPair<> &) const
This gets Bin coordinates for a particular detector pair.
Definition ProjDataInfoCylindricalNoArcCorr.inl:134
float get_angular_increment() const
Gets angular increment (in radians).
Definition ProjDataInfoCylindricalNoArcCorr.inl:85
float get_s(const Bin &) const override
Gets s coordinate in mm.
Definition ProjDataInfoCylindricalNoArcCorr.inl:79
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.