STIR  6.2.0
Public Member Functions | List of all members
stir::ProjDataInterfile Class Reference

A class which reads/writes projection data from/to a (binary) stream, but creates the corresponding Interfile header. More...

#include "stir/ProjDataInterfile.h"

Inheritance diagram for stir::ProjDataInterfile:
Inheritance graph
[legend]

Public Member Functions

 ProjDataInterfile (shared_ptr< const ExamInfo > const &exam_info_sptr, shared_ptr< const ProjDataInfo > const &proj_data_info_ptr, const std::string &filename, const std::ios::openmode, const std::vector< int > &segment_sequence_in_stream, StorageOrder o=Segment_View_AxialPos_TangPos, NumericType data_type=NumericType::FLOAT, ByteOrder byte_order=ByteOrder::native, float scale_factor=1)
 constructor taking all necessary parameters More...
 
 ProjDataInterfile (shared_ptr< const ExamInfo > const &exam_info_sptr, shared_ptr< const ProjDataInfo > const &proj_data_info_ptr, const std::string &filename, const std::ios::openmode open_mode=std::ios::out, StorageOrder o=Segment_View_AxialPos_TangPos, NumericType data_type=NumericType::FLOAT, ByteOrder byte_order=ByteOrder::native, float scale_factor=1)
 as above, but with a default value for segment_sequence_in_stream More...
 
- Public Member Functions inherited from stir::ProjDataFromStream
 ProjDataFromStream (shared_ptr< const ExamInfo > const &exam_info_sptr, shared_ptr< const ProjDataInfo > const &proj_data_info_ptr, shared_ptr< std::iostream > const &s, const std::streamoff offs, const std::vector< int > &segment_sequence_in_stream, StorageOrder o=Segment_View_AxialPos_TangPos, NumericType data_type=NumericType::FLOAT, ByteOrder byte_order=ByteOrder::native, float scale_factor=1.f)
 constructor taking all necessary parameters More...
 
 ProjDataFromStream (shared_ptr< const ExamInfo > const &exam_info_sptr, shared_ptr< const ProjDataInfo > const &proj_data_info_ptr, shared_ptr< std::iostream > const &s, const std::streamoff offs=0, StorageOrder o=Segment_View_AxialPos_TangPos, NumericType data_type=NumericType::FLOAT, ByteOrder byte_order=ByteOrder::native, float scale_factor=1.f)
 as above, but with a default value for segment_sequence_in_stream More...
 
StorageOrder get_storage_order () const
 Obtain the storage order.
 
std::streamoff get_offset_in_stream () const
 Get the offset -Changed into streamoff from int.
 
NumericType get_data_type_in_stream () const
 Get the data_type in the stream.
 
ByteOrder get_byte_order_in_stream () const
 Get the byte order.
 
std::vector< int > get_segment_sequence_in_stream () const
 Get the segment sequence.
 
std::vector< int > get_timing_poss_sequence_in_stream () const
 Get the timing bins sequence.
 
void set_timing_poss_sequence_in_stream (const std::vector< int > &seq)
 set the timing bins sequence
 
Viewgram< float > get_viewgram (const int view_num, const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const override
 Get & set viewgram.
 
Succeeded set_viewgram (const Viewgram< float > &v) override
 Set viewgram.
 
Sinogram< float > get_sinogram (const int ax_pos_num, const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const override
 Get & set sinogram.
 
Succeeded set_sinogram (const Sinogram< float > &s) override
 Set sinogram.
 
SegmentBySinogram< float > get_segment_by_sinogram (const int segment_num, const int timing_num=0) const override
 Get all sinograms for the given segment.
 
SegmentByView< float > get_segment_by_view (const int segment_num, const int timing_pos=0) const override
 Get all viewgrams for the given segment.
 
Succeeded set_segment (const SegmentBySinogram< float > &) override
 Set all sinograms for the given segment.
 
Succeeded set_segment (const SegmentByView< float > &) override
 Set all viewgrams for the given segment.
 
float get_scale_factor () const
 Get scale factor.
 
virtual float get_bin_value (const Bin &this_bin) const
 Get the value of bin.
 
virtual void set_bin_value (const Bin &bin)
 Set the value of the bin.
 
- Public Member Functions inherited from stir::ProjData
 ProjData ()
 Empty constructor.
 
 ProjData (const shared_ptr< const ExamInfo > &exam_info_sptr, const shared_ptr< const ProjDataInfo > &proj_data_info_ptr)
 construct by specifying info. Data will be undefined.
 
 ~ProjData () override
 Destructor.
 
shared_ptr< const ProjDataInfoget_proj_data_info_sptr () const
 Get shared pointer to proj data info.
 
Viewgram< float > get_viewgram (const ViewgramIndices &) const
 Get viewgram.
 
Sinogram< float > get_sinogram (const SinogramIndices &) const
 Get sinogram.
 
unique_ptr< ProjDataInMemoryget_subset (const std::vector< int > &views) const
 construct projection data that stores a subset of the views
 
Viewgram< float > get_empty_viewgram (const ViewgramIndices &) const
 Get empty viewgram.
 
Viewgram< float > get_empty_viewgram (const int view, const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const
 Get empty viewgram. More...
 
Sinogram< float > get_empty_sinogram (const SinogramIndices &) const
 Get empty_sinogram.
 
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=0) const
 Get empty_sinogram. More...
 
SegmentByView< float > get_empty_segment_by_view (const SegmentIndices &) const
 Get empty segment by view.
 
SegmentBySinogram< float > get_empty_segment_by_sinogram (const SegmentIndices &) const
 Get empty segment by sino.
 
SegmentByView< float > get_empty_segment_by_view (const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const
 Get empty segment view. More...
 
SegmentBySinogram< float > get_empty_segment_by_sinogram (const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const
 Get empty segment sino. More...
 
SegmentBySinogram< float > get_segment_by_sinogram (const SegmentIndices &) const
 Get segment by sinogram.
 
SegmentByView< float > get_segment_by_view (const SegmentIndices &) const
 Get segment by view.
 
virtual RelatedViewgrams< float > get_related_viewgrams (const ViewgramIndices &, const shared_ptr< DataSymmetriesForViewSegmentNumbers > &, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const
 Get related viewgrams.
 
virtual Succeeded set_related_viewgrams (const RelatedViewgrams< float > &viewgrams)
 Set related viewgrams.
 
RelatedViewgrams< float > get_empty_related_viewgrams (const ViewgramIndices &viewgram_indices, const shared_ptr< DataSymmetriesForViewSegmentNumbers > &symmetries_ptr, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const
 Get empty related viewgrams, where the symmetries_ptr specifies the symmetries to use.
 
virtual void fill (const float value)
 set all bins to the same value More...
 
virtual void fill (const ProjData &)
 set all bins from another ProjData object More...
 
template<typename iterT >
iterT fill_from (iterT array_iter)
 set all bins from an array iterator More...
 
template<typename iterT >
iterT copy_to (iterT array_iter) const
 Copy all bins to a range specified by a (forward) iterator. More...
 
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 timgin 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.
 
int get_num_sinograms () const
 Get the total number of sinograms. More...
 
int get_num_non_tof_sinograms () const
 Get the number of non-tof sinograms. More...
 
std::size_t size_all () const
 Get the total size of the data.
 
std::vector< int > get_original_view_nums () const
 forward ProjDataInfo::get_original_view_nums()
 
Succeeded write_to_file (const std::string &filename) const
 writes data to a file in Interfile format
 
virtual float sum () const
 
virtual float find_max () const
 return maximum value of all elements
 
virtual float find_min () const
 return minimum value of all elements
 
virtual double norm () const
 return L2-norm (sqrt of sum of squares)
 
virtual double norm_squared () const
 return L2-norm squared (sum of squares)
 
virtual self_typeoperator+= (const self_type &v)
 adding elements of v to the current data
 
virtual self_typeoperator-= (const self_type &v)
 subtracting elements of v from the current data
 
virtual self_typeoperator*= (const self_type &v)
 multiplying elements of the current data with elements of v
 
virtual self_typeoperator/= (const self_type &v)
 dividing all elements of the current data by elements of v
 
virtual self_typeoperator+= (const float v)
 adding an float to the elements of the current data
 
virtual self_typeoperator-= (const float v)
 subtracting an float from the elements of the current data
 
virtual self_typeoperator*= (const float v)
 multiplying the elements of the current data with an float
 
virtual self_typeoperator/= (const float v)
 dividing the elements of the current data by an float
 
virtual STIR_DEPRECATED void axpby (const float a, const ProjData &x, const float b, const ProjData &y)
 
virtual void xapyb (const ProjData &x, const float a, const ProjData &y, const float b)
 set values of the array to x*a+y*b, where a and b are scalar, and x and y are ProjData
 
virtual void xapyb (const ProjData &x, const ProjData &a, const ProjData &y, const ProjData &b)
 set values of the array to x*a+y*b, where a, b, x and y are ProjData
 
virtual void sapyb (const float a, const ProjData &y, const float b)
 set values of the array to self*a+y*b where a and b are scalar, y is ProjData
 
virtual void sapyb (const ProjData &a, const ProjData &y, const ProjData &b)
 set values of the array to self*a+y*b where a, b and y are ProjData
 
- Public Member Functions inherited from stir::ExamData
 ExamData ()
 ExamData. More...
 
 ExamData (const shared_ptr< const ExamInfo > &_this_exam)
 
virtual const ExamInfoget_exam_info () const
 
virtual shared_ptr< const ExamInfoget_exam_info_sptr () const
 Get shared pointer to exam info.
 
virtual void set_exam_info (ExamInfo const &)
 change exam info More...
 
void set_exam_info_sptr (shared_ptr< const ExamInfo > new_exam_info_sptr)
 

Additional Inherited Members

- Public Types inherited from stir::ProjDataFromStream
enum  StorageOrder {
  Segment_AxialPos_View_TangPos, Timing_Segment_AxialPos_View_TangPos, Segment_View_AxialPos_TangPos, Timing_Segment_View_AxialPos_TangPos,
  Unsupported
}
 
- Static Public Member Functions inherited from stir::ProjData
static shared_ptr< ProjDataread_from_file (const std::string &filename, const std::ios::openmode open_mode=std::ios::in)
 A static member to get the projection data from a file. More...
 
static std::vector< int > standard_segment_sequence (const ProjDataInfo &pdi)
 Return a vector with segment numbers in a standard order. More...
 
- Protected Member Functions inherited from stir::ProjDataFromStream
std::streamoff get_offset (const Bin &) const
 Calculate the offset for a specific bin. More...
 
- Protected Attributes inherited from stir::ProjDataFromStream
shared_ptr< std::iostream > sino_stream
 the stream with the data
 
- Protected Attributes inherited from stir::ProjData
shared_ptr< const ProjDataInfoproj_data_info_sptr
 
- Protected Attributes inherited from stir::ExamData
shared_ptr< const ExamInfoexam_info_sptr
 

Detailed Description

A class which reads/writes projection data from/to a (binary) stream, but creates the corresponding Interfile header.

Warning
The class can ONLY be used to create a new file. Use ProjData::read_from_file() to read a projection data file.

Constructor & Destructor Documentation

◆ ProjDataInterfile() [1/2]

stir::ProjDataInterfile::ProjDataInterfile ( shared_ptr< const ExamInfo > const &  exam_info_sptr,
shared_ptr< const ProjDataInfo > const &  proj_data_info_ptr,
const std::string &  filename,
const std::ios::openmode  ,
const std::vector< int > &  segment_sequence_in_stream,
StorageOrder  o = Segment_View_AxialPos_TangPos,
NumericType  data_type = NumericType::FLOAT,
ByteOrder  byte_order = ByteOrder::native,
float  scale_factor = 1 
)

constructor taking all necessary parameters

Parameters
filenameThe name to use for the files. See below.
segment_sequence_in_streamhas to be set according to the order in which the segments will occur in the stream. segment_sequence_in_stream[i] is the segment number of the i-th segment in the stream.
file names that will be used
  • if filename has no extension or if filename has an extension .hs, the extensions .s and .hs will be used for binary file and header file.
  • otherwise, filename will be used for the binary data, and its extension will be replaced with .hs for the header file.
Warning
This call will create a new file for the binary data and the Interfile header. Any existing files with the same file names will be overwritten without warning.

◆ ProjDataInterfile() [2/2]

stir::ProjDataInterfile::ProjDataInterfile ( shared_ptr< const ExamInfo > const &  exam_info_sptr,
shared_ptr< const ProjDataInfo > const &  proj_data_info_ptr,
const std::string &  filename,
const std::ios::openmode  open_mode = std::ios::out,
StorageOrder  o = Segment_View_AxialPos_TangPos,
NumericType  data_type = NumericType::FLOAT,
ByteOrder  byte_order = ByteOrder::native,
float  scale_factor = 1 
)

as above, but with a default value for segment_sequence_in_stream

The default value for segment_sequence_in_stream is a vector with values min_segment_num, min_segment_num+1, ..., max_segment_num


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