STIR 6.4.0
stir::Segment< elemT > Class Template Referenceabstract

An (abstract base) class for storing 3d projection data. More...

#include "stir/Segment.h"

Inheritance diagram for stir::Segment< elemT >:

Public Types

enum  StorageOrder { StorageByView , StorageBySino }
 

Public Member Functions

virtual StorageOrder get_storage_order () const =0
 
SegmentIndices get_segment_indices () const
 
int get_segment_num () const
 Get the segment number.
 
int get_timing_pos_num () const
 Get the timing position index.
 
int get_min_axial_pos_num () const
 
int get_max_axial_pos_num () const
 
int get_num_axial_poss () const
 
virtual Sinogram< elemT > get_sinogram (int axial_pos_num) const =0
 return a new sinogram, with data set as in the segment
 
virtual Viewgram< elemT > get_viewgram (int view_num) const =0
 return a new viewgram, with data set as in the segment
 
Sinogram< elemT > get_sinogram (const SinogramIndices &s) const
 return a new sinogram, with data set as in the segment
 
Viewgram< elemT > get_viewgram (const ViewgramIndices &) const
 return a new viewgram, with data set as in the segment
 
virtual void set_sinogram (const Sinogram< elemT > &s)=0
 set data in segment according to sinogram s
 
virtual void set_sinogram (const Sinogram< elemT > &s, int axial_pos_num)=0
 set sinogram at a different axial_pos_num
 
virtual void set_viewgram (const Viewgram< elemT > &v)=0
 set data in segment according to viewgram v
 
- Public Member Functions inherited from stir::DataWithProjDataInfo
 DataWithProjDataInfo ()
 Default constructor sets internal member to 0.
 
 DataWithProjDataInfo (const shared_ptr< const ProjDataInfo > &proj_data_info_sptr_v)
 
virtual const ProjDataInfoget_proj_data_info () const
 
virtual shared_ptr< const ProjDataInfoget_proj_data_info_sptr () const
 Get shared pointer to ProjData info.
 
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_num_tof_poss () const
 Get number of TOF positions.
 
int get_min_tof_pos_num () const
 Get the index of the first timing position.
 
int get_max_tof_pos_num () const
 Get the index of the last timing position.
 
int get_tof_mash_factor () const
 Get TOG mash factor.
 
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 mininum 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.
 

Equality

SegmentIndices _indices
 
bool has_same_characteristics (self_type const &, std::string &explanation) const
 Checks if the 2 objects have the proj_data_info, segment_num etc.
 
bool has_same_characteristics (self_type const &) const
 Checks if the 2 objects have the proj_data_info, segment_num etc.
 
virtual bool operator== (const self_type &) const =0
 check equality (data has to be identical)
 
bool operator!= (const self_type &) const
 negation of operator==
 
 Segment (const shared_ptr< const ProjDataInfo > &proj_data_info_sptr_v, const SegmentIndices &)
 

Additional Inherited Members

- Protected Attributes inherited from stir::DataWithProjDataInfo
shared_ptr< const ProjDataInfoproj_data_info_sptr
 

Detailed Description

template<typename elemT>
class stir::Segment< elemT >

An (abstract base) class for storing 3d projection data.

This stores a subset of the data accessible via a ProjData object, where the SegmentIndices are fixed.

At the moment, 2 'storage modes' are supported (and implemented as derived classes).

The template argument elemT is used to specify the data-type of the elements of the 3d object.

Member Function Documentation

◆ get_storage_order()

template<typename elemT>
virtual StorageOrder stir::Segment< elemT >::get_storage_order ( ) const
pure virtual

◆ get_sinogram()

template<typename elemT>
virtual Sinogram< elemT > stir::Segment< elemT >::get_sinogram ( int axial_pos_num) const
pure virtual

return a new sinogram, with data set as in the segment

Implemented in stir::SegmentBySinogram< elemT >, stir::SegmentByView< elemT >, stir::SegmentByView< elem_type >, and stir::SegmentByView< elem_type >.

Referenced by get_sinogram().

◆ get_viewgram()

template<typename elemT>
virtual Viewgram< elemT > stir::Segment< elemT >::get_viewgram ( int view_num) const
pure virtual

return a new viewgram, with data set as in the segment

Implemented in stir::SegmentBySinogram< elemT >, stir::SegmentByView< elemT >, stir::SegmentByView< elem_type >, and stir::SegmentByView< elem_type >.

Referenced by get_viewgram().

◆ set_sinogram() [1/2]

template<typename elemT>
virtual void stir::Segment< elemT >::set_sinogram ( const Sinogram< elemT > & s)
pure virtual

set data in segment according to sinogram s

Implemented in stir::SegmentBySinogram< elemT >, stir::SegmentByView< elemT >, and stir::SegmentByView< elem_type >.

◆ set_sinogram() [2/2]

template<typename elemT>
virtual void stir::Segment< elemT >::set_sinogram ( const Sinogram< elemT > & s,
int axial_pos_num )
pure virtual

set sinogram at a different axial_pos_num

Implemented in stir::SegmentBySinogram< elemT >, stir::SegmentByView< elemT >, and stir::SegmentByView< elem_type >.

◆ set_viewgram()

template<typename elemT>
virtual void stir::Segment< elemT >::set_viewgram ( const Viewgram< elemT > & v)
pure virtual

set data in segment according to viewgram v

Implemented in stir::SegmentBySinogram< elemT >, stir::SegmentByView< elemT >, and stir::SegmentByView< elem_type >.

◆ has_same_characteristics() [1/2]

template<typename elemT>
bool stir::Segment< elemT >::has_same_characteristics ( self_type const & other,
std::string & explanation ) const

Checks if the 2 objects have the proj_data_info, segment_num etc.

If they do not have the same characteristics, the string explanation explains why.

References stir::DataWithProjDataInfo::get_proj_data_info_sptr(), get_segment_num(), get_timing_pos_num(), and has_same_characteristics().

Referenced by stir::SegmentByView< elem_type >::get_sinogram(), has_same_characteristics(), and has_same_characteristics().

◆ has_same_characteristics() [2/2]

template<typename elemT>
bool stir::Segment< elemT >::has_same_characteristics ( self_type const & other) const

Checks if the 2 objects have the proj_data_info, segment_num etc.

Use this version if you do not need to know why they do not match.

References has_same_characteristics().

◆ operator==()

template<typename elemT>
virtual bool stir::Segment< elemT >::operator== ( const self_type & ) const
pure virtual

check equality (data has to be identical)

Uses has_same_characteristics() and Array::operator==.

Warning
This function uses ==, which might not be what you need to check when elemT has data with float or double numbers.

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