STIR 6.4.0
stir::ProjDataInfoGenericNoArcCorr Class Reference

Projection data info for data for a scanner with discrete detectors. More...

#include "stir/ProjDataInfoGenericNoArcCorr.h"

Inheritance diagram for stir::ProjDataInfoGenericNoArcCorr:

Public Types

typedef std::vector< std::pair< int, int > > RingNumPairs
 Type used by get_all_ring_pairs_for_segment_axial_pos_num()
 
- Public Types inherited from stir::ProjDataInfoCylindrical
typedef std::vector< std::pair< int, int > > RingNumPairs
 Type used by get_all_ring_pairs_for_segment_axial_pos_num()
 

Public Member Functions

 ProjDataInfoGenericNoArcCorr ()
 Default constructor (leaves object in ill-defined state)
 
 ProjDataInfoGenericNoArcCorr (const shared_ptr< Scanner > scanner_ptr, const VectorWithOffset< int > &num_axial_pos_per_segment, const VectorWithOffset< int > &min_ring_diff_v, const VectorWithOffset< int > &max_ring_diff_v, const int num_views, const int num_tangential_poss)
 Constructor which gets geometry from the scanner.
 
self_typeclone () const override
 Standard trick for a 'virtual copy-constructor'.
 
bool operator== (const self_type &) const
 
float get_s (const Bin &) const override
 Gets s coordinate in mm.
 
float get_tantheta (const Bin &) const override
 Get tangent of the co-polar angle of the normal to the projection plane.
 
float get_phi (const Bin &) const override
 find phi from correspoding lor
 
float get_t (const Bin &) const override
 Get value of the (roughly) axial coordinate in the projection plane (in mm)
 
float get_m (const Bin &) const override
 Return z-coordinate of the middle of the LOR.
 
void get_LOR (LORInAxialAndNoArcCorrSinogramCoordinates< float > &lor, const Bin &bin) const override
 warning Find lor from cartesian coordinates of detector pair
 
void set_azimuthal_angle_offset (const float angle) override
 currently calls error() unless nothing changes
 
void set_azimuthal_angle_sampling (const float angle) override
 calls error()
 
void set_num_views (const int new_num_views) override
 currently calls error() unless nothing changes
 
void set_ring_spacing (float ring_spacing_v) override
 currently calls error() unless nothing changes
 
void set_ring_radii_for_all_views (const VectorWithOffset< float > &new_ring_radius) override
 calls error()
 
float get_ring_spacing () const override
 return an average ring-spacing (from Scanner)
 
float get_sampling_in_t (const Bin &) const override
 Get sampling distance in the t coordinate.
 
float get_sampling_in_m (const Bin &) const override
 Get sampling distance in the m coordinate.
 
float get_axial_sampling (int segment_num) const override
 Get the axial sampling (e.g in z_direction)
 
bool axial_sampling_is_uniform () const override
 Return if axial sampling makes sense.
 
std::string parameter_info () const override
 Return a string describing the object.
 
Bin get_bin (const LOR< float > &, const double delta_time=0.0) const override
 
- Public Member Functions inherited from stir::ProjDataInfoCylindricalNoArcCorr
 ProjDataInfoCylindricalNoArcCorr ()
 Default constructor (leaves object in ill-defined state)
 
 ProjDataInfoCylindricalNoArcCorr (const shared_ptr< Scanner > scanner_ptr, const float ring_radius, const float angular_increment, const VectorWithOffset< int > &num_axial_pos_per_segment, const VectorWithOffset< int > &min_ring_diff_v, const VectorWithOffset< int > &max_ring_diff_v, const int num_views, const int num_tangential_poss, const int tof_mash_factor=0)
 Constructor completely specifying all parameters.
 
 ProjDataInfoCylindricalNoArcCorr (const shared_ptr< Scanner > scanner_ptr, const VectorWithOffset< int > &num_axial_pos_per_segment, const VectorWithOffset< int > &min_ring_diff_v, const VectorWithOffset< int > &max_ring_diff_v, const int num_views, const int num_tangential_poss, const int tof_mash_factor=0)
 Constructor which gets ring_radius and angular_increment from the scanner.
 
bool operator== (const self_type &) const
 
float get_angular_increment () const
 Gets angular increment (in radians)
 
virtual Succeeded find_scanner_coordinates_given_cartesian_coordinates (int &det1, int &det2, int &ring1, int &ring2, const CartesianCoordinate3D< float > &c1, const CartesianCoordinate3D< float > &c2) const
 
void find_cartesian_coordinates_of_detection (CartesianCoordinate3D< float > &coord_1, CartesianCoordinate3D< float > &coord_2, const Bin &bin) const
 
void find_bin_given_cartesian_coordinates_of_detection (Bin &bin, const CartesianCoordinate3D< float > &coord_1, const CartesianCoordinate3D< float > &coord_2) const
 
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.
 
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.
 
Succeeded get_bin_for_det_pos_pair (Bin &, const DetectionPositionPair<> &) const
 This gets Bin coordinates for a particular detector pair.
 
void get_det_pos_pair_for_bin (DetectionPositionPair<> &, const Bin &) const
 This routine gets the detector pair corresponding to a bin.
 
unsigned int get_num_det_pos_pairs_for_bin (const Bin &, bool ignore_non_spatial_dimensions=true) const
 This routine returns the number of detector pairs that correspond to a bin.
 
void get_all_det_pos_pairs_for_bin (std::vector< DetectionPositionPair<> > &, const Bin &, bool ignore_non_spatial_dimensions=true) const
 This routine fills a vector with all the detector pairs that correspond to a bin.
 
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.
 
- Public Member Functions inherited from stir::ProjDataInfoCylindrical
 ProjDataInfoCylindrical ()
 Constructors.
 
 ProjDataInfoCylindrical (const shared_ptr< Scanner > &scanner_ptr, const VectorWithOffset< int > &num_axial_poss_per_segment, const VectorWithOffset< int > &min_ring_diff, const VectorWithOffset< int > &max_ring_diff, const int num_views, const int num_tangential_poss)
 Constructor given all the necessary information.
 
void set_tof_mash_factor (const int new_num) override
 The tof mashing factor (for TOF scanners).
 
virtual float get_azimuthal_angle_offset () const
 Get azimuthal angle offset (in radians)
 
virtual float get_azimuthal_angle_sampling () const
 Get the azimuthal sampling (in radians)
 
float get_average_ring_difference (int segment_num) const
 Get average ring difference for the given segment.
 
int get_min_ring_difference (int segment_num) const
 Get minimum ring difference for the given segment.
 
int get_max_ring_difference (int segment_num) const
 Get maximum ring difference for the given segment.
 
void set_min_ring_difference (int min_ring_diff_v, int segment_num)
 Set minimum ring difference.
 
void set_max_ring_difference (int max_ring_diff_v, int segment_num)
 Set maximum ring difference.
 
void set_num_axial_poss_per_segment (const VectorWithOffset< int > &num_axial_poss_per_segment) override
 Set number of axial positions per segment.
 
void set_min_axial_pos_num (const int min_ax_pos_num, const int segment_num) override
 Set minimum axial position number for 1 segment.
 
void set_max_axial_pos_num (const int max_ax_pos_num, const int segment_num) override
 Set maximum axial position number for 1 segment.
 
void reduce_segment_range (const int min_segment_num, const int max_segment_num) override
 Set a new range of segment numbers.
 
virtual VectorWithOffset< float > get_ring_radii_for_all_views () const
 Get detector ring radius for all views.
 
virtual float get_ring_radius () const
 Get detector ring radius.
 
virtual float get_ring_radius (const int view_num) const
 
virtual int get_view_mashing_factor () const
 Get the mashing factor, i.e. how many 'original' views are combined.
 
Succeeded get_segment_num_for_ring_difference (int &segment_num, const int ring_diff) const
 Find which segment a particular ring difference belongs to.
 
Succeeded get_segment_axial_pos_num_for_ring_pair (int &segment_num, int &axial_pos_num, const int ring1, const int ring2) const
 Find to which segment and axial position a ring pair contributes.
 
const RingNumPairsget_all_ring_pairs_for_segment_axial_pos_num (const int segment_num, const int axial_pos_num) const
 Find all ring pairs that contribute to a segment and axial position.
 
unsigned get_num_ring_pairs_for_segment_axial_pos_num (const int segment_num, const int axial_pos_num) const
 Find the number of ring pairs that contribute to a segment and axial position.
 
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.
 
- Public Member Functions inherited from stir::ProjDataInfo
 ProjDataInfo ()
 Construct an empty object.
 
 ProjDataInfo (const shared_ptr< Scanner > &scanner_ptr, const VectorWithOffset< int > &num_axial_pos_per_segment, const int num_views, const int num_tangential_poss)
 Constructor setting all relevant info for a ProjDataInfo.
 
 ProjDataInfo (const shared_ptr< Scanner > &scanner_ptr, const VectorWithOffset< int > &num_axial_pos_per_segment, const int num_views, const int num_tangential_poss, const int tof_mash_factor)
 Overloaded Contructor with TOF initialisation.
 
shared_ptr< ProjDataInfocreate_shared_clone () const
 Like clone() but return a shared_ptr.
 
shared_ptr< ProjDataInfocreate_non_tof_clone () const
 Similar to create_shared_clone() but returns a non-tof version of ProjDataInfo setting tof mashing factor = 0.
 
virtual ~ProjDataInfo ()
 Destructor.
 
virtual void set_num_tangential_poss (const int num_tang_poss)
 Set number of tangential positions.
 
virtual void set_min_tangential_pos_num (const int min_tang_poss)
 Set minimum tangential position number.
 
virtual void set_max_tangential_pos_num (const int max_tang_poss)
 Set maximum tangential position number.
 
int get_num_segments () const
 Get number of segments.
 
int get_num_axial_poss (const int segment_num) const
 Get number of axial positions per segment.
 
int get_num_views () const
 Get number of views.
 
int get_num_tangential_poss () const
 Get number of tangential positions.
 
int get_tof_bin (const double delta) const
 Get number of tof bin for a given time difference.
 
int get_num_tof_poss () const
 Get number of TOF bins.
 
int get_min_segment_num () const
 Get minimum segment number.
 
int get_max_segment_num () const
 Get maximum segment number.
 
int get_min_axial_pos_num (const int segment_num) const
 Get minimum axial position per segmnet.
 
int get_max_axial_pos_num (const int segment_num) const
 Get maximum axial position per segment.
 
int get_min_view_num () const
 Get minimum view number.
 
int get_max_view_num () const
 Get maximum view number.
 
int get_min_tangential_pos_num () const
 Get minimum tangential position number.
 
int get_max_tangential_pos_num () const
 Get maximum tangential position number.
 
int get_tof_mash_factor () const
 Get TOF mash factor.
 
int get_min_tof_pos_num () const
 Get the index of the first TOF position.
 
int get_max_tof_pos_num () const
 Get the index of the last timgin position.
 
int get_num_sinograms () const
 Get the total number of sinograms.
 
int get_num_non_tof_sinograms () const
 Get the number of non-tof sinograms.
 
std::size_t size_all () const
 Get the total size of the data.
 
bool is_tof_data () const
 Determine if TOF data from tof_mash_factor and num_tof_bins.
 
virtual std::vector< int > get_original_view_nums () const
 Return a list of view numbers in the "original" data if subsets are used.
 
float get_costheta (const Bin &) const
 Get cosine of the co-polar angle of the normal to the projection plane.
 
float get_k (const Bin &) const
 Get value of the TOF location along the LOR (in mm) k is a line segment connecting the centers of the two detectors.
 
double get_tof_delta_time (const Bin &) const
 Get the value of the TOF timing difference (in ps)
 
virtual float get_sampling_in_s (const Bin &) const
 Get sampling distance in the s coordinate.
 
float get_sampling_in_k (const Bin &) const
 Get sampling distance in the k coordinate.
 
bool operator== (const ProjDataInfo &proj) const
 check equality
 
bool operator!= (const ProjDataInfo &proj) const
 
virtual bool operator>= (const ProjDataInfo &proj) const
 Check if *this contains proj.
 
Viewgram< float > get_empty_viewgram (const ViewgramIndices &) const
 Get empty viewgram.
 
Sinogram< float > get_empty_sinogram (const SinogramIndices &) const
 Get empty_sinogram.
 
SegmentByView< float > get_empty_segment_by_view (const SegmentIndices &) const
 Get empty segment sino.
 
SegmentBySinogram< float > get_empty_segment_by_sinogram (const SegmentIndices &) const
 Get empty segment view.
 
Viewgram< float > get_empty_viewgram (const int view_num, const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos_num=0) const
 Get empty viewgram.
 
Sinogram< float > get_empty_sinogram (const int ax_pos_num, const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos_num=0) const
 Get empty_sinogram.
 
SegmentByView< float > get_empty_segment_by_view (const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos_num=0) const
 Get empty segment sino.
 
SegmentBySinogram< float > get_empty_segment_by_sinogram (const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos_num=0) const
 Get empty segment view.
 
RelatedViewgrams< float > get_empty_related_viewgrams (const ViewgramIndices &, const shared_ptr< DataSymmetriesForViewSegmentNumbers > &, const bool make_num_tangential_poss_odd=false, const int timing_pos_num=0) const
 Get empty related viewgrams, where the symmetries_ptr specifies the symmetries to use.
 
const Scannerget_scanner_ptr () const
 Get scanner pointer.
 
shared_ptr< Scannerget_scanner_sptr () const
 Get scanner shared pointer.
 
void set_bed_position_horizontal (const float bed_position_horizontal_arg)
 Vector which holds the lower and higher boundary for each TOF position, without the application of TOF mashing, in mm, for faster access.
 
float get_bed_position_horizontal () const
 Get horizontal bed position.
 
void set_bed_position_vertical (const float bed_position_vertical_arg)
 Set vertical bed position.
 
float get_bed_position_vertical () const
 Get vertical bed position.
 
bool has_energy_information () const
 

set of obsolete functions to go between bins<->LORs (will disappear!)

CartesianCoordinate3D< float > z_shift
 
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
 
bool blindly_equals (const root_type *const) const override
 

Additional Inherited Members

- Static Public Member Functions inherited from stir::ProjDataInfo
static ProjDataInfoask_parameters ()
 Ask for the details and return a ProjDataInfo pointer.
 
static ProjDataInfoProjDataInfoGE (const shared_ptr< Scanner > &scanner_ptr, const int max_delta, const int num_views, const int num_tangential_poss, const bool arc_corrected=true, const int tof_mash_factor=0)
 Construct a ProjDataInfo with span=3 for segment 0, but span=1 for others.
 
static ProjDataInfoProjDataInfoCTI (const shared_ptr< Scanner > &scanner_ptr, const int span, const int max_delta, const int num_views, const int num_tangential_poss, const bool arc_corrected=true, const int tof_mash_factor=0)
 Old name for construct_proj_data_info()
 
static unique_ptr< ProjDataInfoconstruct_proj_data_info (const shared_ptr< Scanner > &scanner_sptr, const int span, const int max_delta, const int num_views, const int num_tangential_poss, const bool arc_corrected=true, const int tof_mash_factor=0)
 Construct a ProjDataInfo suitable with a given span.
 
VectorWithOffset< Float1Float2tof_bin_boundaries_mm
 Vector which holds the lower and higher boundary for each TOF position in mm, for faster access.
 
VectorWithOffset< Float1Float2tof_bin_boundaries_ps
 Vector which holds the lower and higher boundary for each TOF position in ps`, for faster access.
 
- Protected Types inherited from stir::ProjDataInfo
typedef ProjDataInfo root_type
 
- Protected Attributes inherited from stir::ProjDataInfoCylindrical
bool sampling_corresponds_to_physical_rings
 a variable that is set if the data corresponds to physical rings in the scanner
 

Detailed Description

Projection data info for data for a scanner with discrete detectors.

This isn't completely generic as it assumes that there is "axial" (or "ring") coordinate and a "transaxial" (or "crystal"). However, their spacing can be arbitrary.

It is assumed that for 'raw' data (i.e. no mashing) sinogram space is 'interleaved': 2 adjacent LOR_angles are merged to 1 'view', while the corresponding bins are interleaved:

   before interleaving               after interleaving
   a00     a01     a02 ...      view 0: a00 a10 a01 a11  ...
       a10     a11     ...
   a20     a21     a22 ...      view 1: a20 a30 a21 a31 ...
       a30     a31     ...

This (standard) interleaving is done because for 'odd' LOR_angles there is no LOR which goes through the origin.

Design considerations

Currently this class is derived from ProjDataInfoCylindricalNoArcCorr. Arguably it should be the other way around. However, this would break backwards compatibility dramatically, and break other pull-requests in progress. We will leave this for later. At present, the member functions that do not make sense in the Generic case will call error(). There are a few ones which might be removed in future, but are currently still used.

Todo
change ProjDataInfoCylindrical hierarchy order.

Member Function Documentation

◆ clone()

ProjDataInfoGenericNoArcCorr * stir::ProjDataInfoGenericNoArcCorr::clone ( ) const
overridevirtual

Standard trick for a 'virtual copy-constructor'.

Reimplemented from stir::ProjDataInfoCylindricalNoArcCorr.

◆ get_s()

float stir::ProjDataInfoGenericNoArcCorr::get_s ( const Bin & bin) const
inlineoverridevirtual

Gets s coordinate in mm.

Warning
This does not take the 'interleaving' into account which is customarily applied to raw PET data.

warning In cylindrical s is found from bin: sin(beta) = sin(tang_pos*angular_increment) In block it is calculated directly from corresponding lor

Reimplemented from stir::ProjDataInfoCylindricalNoArcCorr.

References get_LOR(), and get_s().

Referenced by get_s().

◆ get_tantheta()

float stir::ProjDataInfoGenericNoArcCorr::get_tantheta ( const Bin & ) const
inlineoverridevirtual

Get tangent of the co-polar angle of the normal to the projection plane.

theta=0 for 'direct' planes (i.e. projection planes parallel to the scanner axis)

Reimplemented from stir::ProjDataInfoCylindrical.

References get_LOR(), and get_tantheta().

Referenced by get_tantheta().

◆ get_phi()

float stir::ProjDataInfoGenericNoArcCorr::get_phi ( const Bin & bin) const
inlineoverridevirtual

find phi from correspoding lor

Reimplemented from stir::ProjDataInfoCylindrical.

References get_LOR(), and get_phi().

Referenced by get_phi().

◆ get_t()

float stir::ProjDataInfoGenericNoArcCorr::get_t ( const Bin & ) const
inlineoverridevirtual

Get value of the (roughly) axial coordinate in the projection plane (in mm)

t-axis is defined to be orthogonal to the s-axis (and to the vector normal to the projection plane

Reimplemented from stir::ProjDataInfoCylindrical.

References stir::ProjDataInfo::get_costheta(), get_m(), and get_t().

Referenced by get_t().

◆ get_m()

float stir::ProjDataInfoGenericNoArcCorr::get_m ( const Bin & bin) const
inlineoverridevirtual

Return z-coordinate of the middle of the LOR.

The 0 of the z-axis is chosen in the middle of the scanner.

warning In generic geometry m is calculated directly from lor while in cylindrical geometry m is calculated using m_offset and axial_sampling

Reimplemented from stir::ProjDataInfoCylindrical.

References get_LOR(), and get_m().

Referenced by get_m(), and get_t().

◆ get_LOR()

void stir::ProjDataInfoGenericNoArcCorr::get_LOR ( LORInAxialAndNoArcCorrSinogramCoordinates< float > & lor,
const Bin & bin ) const
overridevirtual

warning Find lor from cartesian coordinates of detector pair

Find lor from cartesian coordinates of detector pair.

Reimplemented from stir::ProjDataInfoCylindrical.

References get_LOR(), and stir::square().

Referenced by get_LOR(), get_m(), get_phi(), get_s(), and get_tantheta().

◆ set_azimuthal_angle_offset()

void stir::ProjDataInfoGenericNoArcCorr::set_azimuthal_angle_offset ( const float angle)
overridevirtual

currently calls error() unless nothing changes

Reimplemented from stir::ProjDataInfoCylindrical.

References stir::angle(), stir::error(), and stir::ProjDataInfoCylindrical::get_azimuthal_angle_offset().

◆ set_azimuthal_angle_sampling()

void stir::ProjDataInfoGenericNoArcCorr::set_azimuthal_angle_sampling ( const float angle)
overridevirtual

calls error()

Reimplemented from stir::ProjDataInfoCylindrical.

References stir::error().

◆ set_num_views()

void stir::ProjDataInfoGenericNoArcCorr::set_num_views ( const int new_num_views)
overridevirtual

currently calls error() unless nothing changes

Reimplemented from stir::ProjDataInfoCylindrical.

References stir::error(), stir::ProjDataInfo::get_num_views(), and set_num_views().

Referenced by set_num_views().

◆ set_ring_spacing()

void stir::ProjDataInfoGenericNoArcCorr::set_ring_spacing ( float ring_spacing_v)
overridevirtual

currently calls error() unless nothing changes

Reimplemented from stir::ProjDataInfoCylindrical.

References stir::error(), and get_ring_spacing().

◆ set_ring_radii_for_all_views()

void stir::ProjDataInfoGenericNoArcCorr::set_ring_radii_for_all_views ( const VectorWithOffset< float > & new_ring_radius)
overridevirtual

calls error()

Reimplemented from stir::ProjDataInfoCylindrical.

References stir::error().

◆ get_ring_spacing()

float stir::ProjDataInfoGenericNoArcCorr::get_ring_spacing ( ) const
inlineoverridevirtual

return an average ring-spacing (from Scanner)

Reimplemented from stir::ProjDataInfoCylindrical.

References get_ring_spacing(), and stir::ProjDataInfo::get_scanner_ptr().

Referenced by get_axial_sampling(), get_ring_spacing(), and set_ring_spacing().

◆ get_sampling_in_t()

float stir::ProjDataInfoGenericNoArcCorr::get_sampling_in_t ( const Bin & bin) const
inlineoverridevirtual

Get sampling distance in the t coordinate.

For some coordinate systems, this might depend on the Bin. The default implementation computes it as

1/2(get_t(..., ax_pos+1,...)-get_t(..., ax_pos-1,...)))
float get_t(const Bin &) const override
Get value of the (roughly) axial coordinate in the projection plane (in mm)
Definition ProjDataInfoGenericNoArcCorr.inl:58

Reimplemented from stir::ProjDataInfoCylindrical.

References stir::ProjDataInfo::get_costheta(), get_sampling_in_t(), and stir::ProjDataInfo::get_scanner_ptr().

Referenced by get_sampling_in_t().

◆ get_sampling_in_m()

float stir::ProjDataInfoGenericNoArcCorr::get_sampling_in_m ( const Bin & bin) const
inlineoverridevirtual

Get sampling distance in the m coordinate.

For some coordinate systems, this might depend on the Bin. The default implementation computes it as

1/2(get_m(..., ax_pos+1,...)-get_m(..., ax_pos-1,...)))
float get_m(const Bin &) const override
Return z-coordinate of the middle of the LOR.
Definition ProjDataInfoGenericNoArcCorr.inl:50

Reimplemented from stir::ProjDataInfoCylindrical.

References get_sampling_in_m(), and stir::ProjDataInfo::get_scanner_ptr().

Referenced by get_sampling_in_m().

◆ get_axial_sampling()

float stir::ProjDataInfoGenericNoArcCorr::get_axial_sampling ( int segment_num) const
inlineoverridevirtual

Get the axial sampling (e.g in z_direction)

Warning
The implementation of this function currently assumes that the axial sampling is equal to the ring spacing for non-spanned data (i.e. no axial compression), while it is half the ring spacing for spanned data.

Reimplemented from stir::ProjDataInfoCylindrical.

References get_axial_sampling(), and get_ring_spacing().

Referenced by get_axial_sampling().

◆ axial_sampling_is_uniform()

bool stir::ProjDataInfoGenericNoArcCorr::axial_sampling_is_uniform ( ) const
inlineoverridevirtual

Return if axial sampling makes sense.

could be false for block/generic cases

Reimplemented from stir::ProjDataInfoCylindrical.

References axial_sampling_is_uniform().

Referenced by axial_sampling_is_uniform().

◆ parameter_info()

◆ get_bin()

Bin stir::ProjDataInfoGenericNoArcCorr::get_bin ( const LOR< float > & lor,
const double delta_time = 0.0 ) const
overridevirtual

◆ find_cartesian_coordinates_given_scanner_coordinates()

void stir::ProjDataInfoGenericNoArcCorr::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
overridevirtual
Warning
These function take a different convention for the axial coordinate compare to the get_m(), get_LOR() etc. In the current function, the axial coordinate (z) is zero in the first ring, while for get_m() etc it is zero in the centre of the scanner.
default timing_pos_num=0 is for backwards compatibility
Deprecated

Reimplemented from stir::ProjDataInfoCylindricalNoArcCorr.

References stir::error(), stir::Scanner::get_coordinate_for_det_pos(), and stir::ProjDataInfo::get_scanner_ptr().

◆ blindly_equals()

bool stir::ProjDataInfoGenericNoArcCorr::blindly_equals ( const root_type * const that) const
overrideprotectedvirtual

Default implementation checks common variables. Needs to be overloaded.

Reimplemented from stir::ProjDataInfoCylindricalNoArcCorr.


The documentation for this class was generated from the following files: