52template <
class Derived>
59 static_cast<const Derived*
>(
this)->get_data().get_detection_position_pair(det_pos_pair);
61 lor.p1() = map_to_use().get_coordinate_for_index(det_pos_pair.pos1());
62 lor.p2() = map_to_use().get_coordinate_for_index(det_pos_pair.pos2());
73 if (
auto proj_data_info_ptr =
dynamic_cast<const PDIT*
>(&proj_data_info))
75 if (proj_data_info_ptr->get_bin_for_det_pos_pair(bin, det_pos_pair) == Succeeded::yes)
86template <
class Derived>
91 static_cast<const Derived*
>(
this)->get_data().get_detection_position_pair(det_pos_pair);
96 det_pos_pair.pos1() = map_to_use().get_det_pos_for_index(det_pos_pair.pos1());
97 det_pos_pair.pos2() = map_to_use().get_det_pos_for_index(det_pos_pair.pos2());
99 if (det_pos_pair.pos1().tangential_coord() == det_pos_pair.pos2().tangential_coord())
105 if (!detail::get_bin_for_det_pos_pair<ProjDataInfoGenericNoArcCorr>(bin, det_pos_pair, proj_data_info))
107 if (!detail::get_bin_for_det_pos_pair<ProjDataInfoCylindricalNoArcCorr>(bin, det_pos_pair, proj_data_info))
108 error(
"Wrong type of proj-data-info for SAFIR");
116 bin = proj_data_info.
get_bin(lor);
123 det_pos_pair.pos1().radial_coord() = layerA;
124 det_pos_pair.pos2().radial_coord() = layerB;
126 det_pos_pair.pos1().axial_coord() = ringA;
127 det_pos_pair.pos2().axial_coord() = ringB;
129 det_pos_pair.pos1().tangential_coord() = detA;
130 det_pos_pair.pos2().tangential_coord() = detB;
136 det_pos_pair.pos1().radial_coord() = layerA;
137 det_pos_pair.pos2().radial_coord() = layerB;
139 det_pos_pair.pos1().axial_coord() = ringA;
140 det_pos_pair.pos2().axial_coord() = ringB;
142 det_pos_pair.pos1().tangential_coord() = detA;
143 det_pos_pair.pos2().tangential_coord() = detB;
Declaration of class stir::Bin.
Declarations of classes stir::CListRecord, and stir::CListEvent which are used for list mode data.
defines the stir::CartesianCoordinate3D<coordT> class
defines various classes for specifying a line in 3 dimensions
Declaration of class stir::ProjDataInfoBlocksOnCylindricalNoArcCorr.
Declaration of class stir::ProjDataInfoCylindricalNoArcCorr.
Declaration of class stir::ProjDataInfoGenericNoArcCorr.
Declaration of class stir::ProjDataInfo.
Declaration of class stir::Succeeded.
A class for storing coordinates and value of a single projection bin.
Definition Bin.h:49
void set_bin_value(float v)
set the value to be back projected
Definition Bin.inl:129
void get_detection_position_pair(DetectionPositionPair<> &det_pos_pair)
Writes detection position pair to reference given as argument.
Definition CListRecordSAFIR.inl:134
void get_detection_position_pair(DetectionPositionPair<> &det_pos_pair)
Writes detection position pair to reference given as argument.
Definition CListRecordSAFIR.inl:121
LORAs2Points< float > get_LOR() const override
Returns LOR corresponding to the given event.
Definition CListRecordSAFIR.inl:54
void get_bin(Bin &bin, const ProjDataInfo &proj_data_info) const override
Override the default implementation.
Definition CListRecordSAFIR.inl:88
a templated class for 3-dimensional coordinates.
Definition CartesianCoordinate3D.h:53
A class for storing 2 coordinates-sets of a detection, together with a timing-position index (for TOF...
Definition DetectionPositionPair.h:41
A class for LORs.
Definition LORCoordinates.h:296
An (abstract base) class that contains information on the projection data.
Definition ProjDataInfo.h:70
virtual Bin get_bin(const LOR< float > &, const double delta_time=0.0) const =0
Find the bin in the projection data that 'contains' an LOR.
Declaration of stir::error()
void error(const char *const s,...)
Print error with format string a la printf and throw exception.
Definition error.cxx:42
Namespace for the implementation details of the STIR library.
Definition KeyParser.cxx:1158