STIR  6.2.0
Public Member Functions | List of all members
stir::VoxelsOnCartesianGrid< elemT > Class Template Reference

This class is used to represent voxelised densities on a cuboid grid (3D). More...

#include "stir/VoxelsOnCartesianGrid.h"

Inheritance diagram for stir::VoxelsOnCartesianGrid< elemT >:
Inheritance graph
[legend]

Public Member Functions

 VoxelsOnCartesianGrid ()
 Construct an empty VoxelsOnCartesianGrid (empty range, 0 origin, 0 grid_spacing)
 
 VoxelsOnCartesianGrid (const Array< 3, elemT > &v, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing)
 Construct a VoxelsOnCartesianGrid, initialising data from the Array<3,elemT> object.
 
 VoxelsOnCartesianGrid (const IndexRange< 3 > &range, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing)
 Construct a VoxelsOnCartesianGrid from an index range. More...
 
 VoxelsOnCartesianGrid (const shared_ptr< const ExamInfo > &exam_info_sptr, const Array< 3, elemT > &v, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing)
 Construct a VoxelsOnCartesianGrid, initialising data from the Array<3,elemT> object.
 
 VoxelsOnCartesianGrid (const shared_ptr< const ExamInfo > &exam_info_sptr, const IndexRange< 3 > &range, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing)
 Construct a VoxelsOnCartesianGrid from an index range. More...
 
 VoxelsOnCartesianGrid (const ProjDataInfo &proj_data_info_ptr, const float zoom=1.F, const CartesianCoordinate3D< float > &origin=CartesianCoordinate3D< float >(0.F, 0.F, 0.F), const CartesianCoordinate3D< int > &sizes=CartesianCoordinate3D< int >(-1, -1, -1))
 use ProjDataInfo to obtain the size information More...
 
 VoxelsOnCartesianGrid (const shared_ptr< const ExamInfo > &exam_info_sptr, const ProjDataInfo &proj_data_info, const float zoom=1.F, const CartesianCoordinate3D< float > &origin=CartesianCoordinate3D< float >(0.F, 0.F, 0.F), const CartesianCoordinate3D< int > &sizes=CartesianCoordinate3D< int >(-1, -1, -1))
 Constructor from exam_info and proj_data_info. More...
 
 VoxelsOnCartesianGrid (const shared_ptr< const ExamInfo > &exam_info_sptr_v, const ProjDataInfo &proj_data_info, const CartesianCoordinate3D< float > &zooms, const CartesianCoordinate3D< float > &origin=CartesianCoordinate3D< float >(0.F, 0.F, 0.F), const CartesianCoordinate3D< int > &sizes=CartesianCoordinate3D< int >(-1, -1, -1))
 Constructor from exam_info and proj_data_info. More...
 
VoxelsOnCartesianGrid< elemT > * get_empty_copy () const override
 Definition of the pure virtual defined in DiscretisedDensity.
 
VoxelsOnCartesianGrid< elemT > * get_empty_voxels_on_cartesian_grid () const
 Like get_empty_copy, but returning a pointer to a VoxelsOnCartesianGrid. More...
 
VoxelsOnCartesianGrid< elemT > * clone () const override
 Allocate a new DiscretisedDensity object which is a copy of the current one.
 
PixelsOnCartesianGrid< elemT > get_plane (const int z) const
 Extract a single plane.
 
void set_plane (const PixelsOnCartesianGrid< elemT > &plane, const int z)
 Set a single plane. More...
 
CartesianCoordinate3D< float > get_voxel_size () const
 is the same as get_grid_spacing(), but now returns CartesianCoordinate3D for convenience
 
void set_voxel_size (const BasicCoordinate< 3, float > &)
 is the same as set_grid_spacing()
 
void grow_z_range (const int min_z, const int max_z)
 Growing of outer dimension only.
 
Convenience functions for regular grids in 3D
int get_x_size () const
 
int get_y_size () const
 
int get_z_size () const
 
int get_min_x () const
 
int get_min_y () const
 
int get_min_z () const
 
int get_max_x () const
 
int get_max_y () const
 
int get_max_z () const
 
BasicCoordinate< 3, int > get_lengths () const
 
BasicCoordinate< 3, int > get_min_indices () const
 
BasicCoordinate< 3, int > get_max_indices () const
 
- Public Member Functions inherited from stir::DiscretisedDensityOnCartesianGrid< 3, elemT >
 DiscretisedDensityOnCartesianGrid ()
 Construct an empty DiscretisedDensityOnCartesianGrid.
 
 DiscretisedDensityOnCartesianGrid (const IndexRange< num_dimensions > &range, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< num_dimensions, float > &grid_spacing)
 Constructor given range, grid spacing and origin.
 
 DiscretisedDensityOnCartesianGrid (const shared_ptr< const ExamInfo > &exam_info_sptr, const IndexRange< num_dimensions > &range, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< num_dimensions, float > &grid_spacing)
 Constructor given exam_info, range, grid spacing and origin.
 
const BasicCoordinate< num_dimensions, float > & get_grid_spacing () const
 Return the grid_spacing.
 
void set_grid_spacing (const BasicCoordinate< num_dimensions, float > &grid_spacing_v)
 Set the grid_spacing.
 
- Public Member Functions inherited from stir::DiscretisedDensity< num_dimensions, elemT >
 DiscretisedDensity ()
 Construct an empty DiscretisedDensity.
 
 DiscretisedDensity (const IndexRange< num_dimensions > &range, const CartesianCoordinate3D< float > &origin)
 Construct DiscretisedDensity from a given range of indices & origin.
 
 DiscretisedDensity (const shared_ptr< const ExamInfo > &exam_info_sptr, const IndexRange< num_dimensions > &range, const CartesianCoordinate3D< float > &origin)
 Construct DiscretisedDensity from ExamInfo and a given range of indices & origin.
 
const CartesianCoordinate3D< float > & get_origin () const
 Return the origin.
 
void set_origin (const CartesianCoordinate3D< float > &origin)
 Set the origin.
 
DiscretisedDensity< num_dimensions, elemT > * get_empty_discretised_density () const
 Allocate a new DiscretisedDensity object with same characteristics as the current one.
 
CartesianCoordinate3D< float > get_physical_coordinates_for_indices (const BasicCoordinate< num_dimensions, int > &indices) const
 Return the coordinates of the centre of the basis-function corresponding to indices. More...
 
CartesianCoordinate3D< float > get_physical_coordinates_for_indices (const BasicCoordinate< num_dimensions, float > &indices) const
 Return the coordinates of the centre of the basis-function corresponding to non-integer coordinate in 'physical' coordinates. More...
 
CartesianCoordinate3D< float > get_relative_coordinates_for_indices (const BasicCoordinate< num_dimensions, int > &indices) const
 Return the relative coordinates of the centre of the basis-function corresponding to indices. More...
 
CartesianCoordinate3D< float > get_relative_coordinates_for_indices (const BasicCoordinate< num_dimensions, float > &indices) const
 Return the relative coordinates of the centre of the basis-function corresponding to the non-integer coordinates in 'index' coordinates. More...
 
BasicCoordinate< num_dimensions, int > get_indices_closest_to_physical_coordinates (const CartesianCoordinate3D< float > &coords) const
 Return the indices of the basis-function closest to the given point. More...
 
BasicCoordinate< num_dimensions, int > get_indices_closest_to_relative_coordinates (const CartesianCoordinate3D< float > &coords) const
 Return the indices of the basis-function closest to the given point. More...
 
BasicCoordinate< num_dimensions, float > get_index_coordinates_for_physical_coordinates (const CartesianCoordinate3D< float > &coords) const
 Return the indices of the basis-function closest to the given point. More...
 
BasicCoordinate< num_dimensions, float > get_index_coordinates_for_relative_coordinates (const CartesianCoordinate3D< float > &coords) const
 Return the index-coordinates of the basis-function closest to the given point. More...
 
BasicCoordinate< num_dimensions, float > get_index_coordinates_for_LPS_coordinates (const CartesianCoordinate3D< float > &coords) const
 Translation from LPS coordinates to continuous indices.
 
CartesianCoordinate3D< float > get_LPS_coordinates_for_physical_coordinates (const CartesianCoordinate3D< float > &indices) const
 Translation from physical to LPS coordinates.
 
CartesianCoordinate3D< float > get_LPS_coordinates_for_indices (const BasicCoordinate< num_dimensions, int > &indices) const
 Translation from indices to LPS coordinates.
 
CartesianCoordinate3D< float > get_LPS_coordinates_for_indices (const BasicCoordinate< num_dimensions, float > &indices) const
 Translation from continuous indices to LPS coordinates.
 
CartesianCoordinate3D< float > get_physical_coordinates_for_LPS_coordinates (const CartesianCoordinate3D< float > &coords) const
 Translation from LPS coordinates to physical coordinates.
 
BasicCoordinate< num_dimensions, int > get_indices_closest_to_LPS_coordinates (const CartesianCoordinate3D< float > &coords) const
 Translation from LPS coordinates to indices.
 
bool has_same_characteristics (self_type const &, std::string &explanation) const
 Checks if the 2 objects have the same type, index range, origin etc. More...
 
bool has_same_characteristics (self_type const &) const
 Checks if the 2 objects have the same type, index range, origin etc. More...
 
bool operator== (const self_type &) const
 check equality (data has to be identical) More...
 
bool operator!= (const self_type &) const
 negation of operator==
 
- 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)
 
- Public Member Functions inherited from stir::Array< num_dimensions, elemT >
 Array ()
 Construct an empty Array.
 
 Array (const IndexRange< num_dimensions > &)
 Construct an Array of given range of indices, elements are initialised to 0.
 
 Array (const IndexRange< num_dimensions > &range, shared_ptr< elemT[]> data_sptr)
 Construct an Array pointing to existing contiguous data. More...
 
 Array (const base_type &t)
 Construct an Array from an object of its base_type.
 
 Array (const self &t)
 Copy constructor.
 
 ~Array () override
 virtual destructor, frees up any allocated memory
 
 Array (Array &&other) noexcept
 move constructor More...
 
Arrayoperator= (Array other)
 assignment operator More...
 
IndexRange< num_dimensions > get_index_range () const
 
size_t size_all () const
 return the total number of elements in this array
 
virtual void resize (const IndexRange< num_dimensions > &range)
 change the array to a new range of indices, new elements are set to 0 More...
 
virtual void grow (const IndexRange< num_dimensions > &range)
 alias for resize()
 
elemT sum () const
 return sum of all elements
 
elemT sum_positive () const
 return sum of all positive elements
 
elemT find_max () const
 return maximum of all the elements
 
elemT find_min () const
 return minimum of all the elements
 
void fill (const elemT &n)
 Fill elements with value n. More...
 
void apply_lower_threshold (const elemT &l)
 Sets elements below value to the value.
 
void apply_upper_threshold (const elemT &u)
 Sets elements above value to the value.
 
bool is_regular () const
 checks if the index range is 'regular' More...
 
bool get_regular_range (BasicCoordinate< num_dimensions, int > &min, BasicCoordinate< num_dimensions, int > &max) const
 find regular range, returns false if the range is not regular More...
 
Array< num_dimensions - 1, elemT > & operator[] (int i)
 allow array-style access, read/write
 
const Array< num_dimensions - 1, elemT > & operator[] (int i) const
 array access, read-only
 
elemT & operator[] (const BasicCoordinate< num_dimensions, int > &c)
 allow array-style access given a BasicCoordinate to specify the indices, read/write
 
const elemT & operator[] (const BasicCoordinate< num_dimensions, int > &c) const
 array access given a BasicCoordinate to specify the indices, read-only
 
template<typename elemT2 >
STIR_DEPRECATED void axpby (const elemT2 a, const Array &x, const elemT2 b, const Array &y)
 
void xapyb (const Array &x, const elemT a, const Array &y, const elemT b)
 set values of the array to x*a+y*b, where a and b are scalar
 
void xapyb (const Array &x, const Array &a, const Array &y, const Array &b)
 set values of the array to x*a+y*b, where a and b are arrays
 
template<class T >
void sapyb (const T &a, const Array &y, const T &b)
 set values of the array to self*a+y*b where a and b are scalar or arrays
 
template<int num_dimensions, typename elemT>
 Array (Array< num_dimensions, elemT > &&other) noexcept
 
template<typename elemT2 >
void axpby (const elemT2 a, const Array &x, const elemT2 b, const Array &y)
 
full_iterator begin_all ()
 start value for iterating through all elements in the array, see full_iterator
 
const_full_iterator begin_all () const
 start value for iterating through all elements in the (const) array, see full_iterator
 
const_full_iterator begin_all_const () const
 start value for iterating through all elements in the array, see full_iterator
 
full_iterator end_all ()
 end value for iterating through all elements in the array, see full_iterator
 
const_full_iterator end_all () const
 end value for iterating through all elements in the (const) array, see full_iterator
 
const_full_iterator end_all_const () const
 end value for iterating through all elements in the array, see full_iterator
 
Array< num_dimensions - 1, elemT > & at (int i)
 
const Array< num_dimensions - 1, elemT > & at (int i) const
 
elemT & at (const BasicCoordinate< num_dimensions, int > &c)
 
const elemT & at (const BasicCoordinate< num_dimensions, int > &c) const
 
bool is_contiguous () const
 return if the array is contiguous in memory
 
elemT * get_full_data_ptr ()
 member function for access to the data via a elemT* More...
 
const elemT * get_const_full_data_ptr () const
 member function for access to the data via a const elemT* More...
 
void release_full_data_ptr ()
 signal end of access to elemT* More...
 
void release_const_full_data_ptr () const
 signal end of access to const elemT* More...
 
- Public Member Functions inherited from stir::NumericVectorWithOffset< Array< num_dimensions - 1, elemT >, elemT >
 NumericVectorWithOffset (const VectorWithOffset< Array< num_dimensions - 1, elemT > > &t)
 Constructor from an object of this class' base_type.
 
 NumericVectorWithOffset (const NumericVectorWithOffset &t)
 Constructor from an object of this class' base_type.
 
 NumericVectorWithOffset (NumericVectorWithOffset &&other) noexcept
 move constructor More...
 
NumericVectorWithOffsetoperator= (const NumericVectorWithOffset &other)
 assignment
 
NumericVectorWithOffset operator+ (const NumericVectorWithOffset &v) const
 adding vectors, element by element
 
NumericVectorWithOffset operator+ (const elemT &v) const
 return a new vector with elements equal to the sum of the elements in the original and the elemT
 
NumericVectorWithOffset operator- (const NumericVectorWithOffset &v) const
 subtracting vectors, element by element
 
NumericVectorWithOffset operator- (const elemT &v) const
 return a new vector with elements equal to the difference of the elements in the original and the elemT
 
NumericVectorWithOffset operator* (const NumericVectorWithOffset &v) const
 multiplying vectors, element by element
 
NumericVectorWithOffset operator* (const elemT &v) const
 return a new vector with elements equal to the multiplication of the elements in the original and the elemT
 
NumericVectorWithOffset operator/ (const NumericVectorWithOffset &v) const
 dividing vectors, element by element
 
NumericVectorWithOffset operator/ (const elemT &v) const
 return a new vector with elements equal to the division of the elements in the original and the elemT
 
NumericVectorWithOffsetoperator+= (const NumericVectorWithOffset &v)
 adding elements of v to the current vector More...
 
NumericVectorWithOffsetoperator+= (const elemT &v)
 adding an elemT to the elements of the current vector
 
NumericVectorWithOffsetoperator-= (const NumericVectorWithOffset &v)
 subtracting elements of v from the current vector More...
 
NumericVectorWithOffsetoperator-= (const elemT &v)
 subtracting an elemT from the elements of the current vector
 
NumericVectorWithOffsetoperator*= (const NumericVectorWithOffset &v)
 multiplying elements of the current vector with elements of v More...
 
NumericVectorWithOffsetoperator*= (const elemT &v)
 multiplying the elements of the current vector with an elemT
 
NumericVectorWithOffsetoperator/= (const NumericVectorWithOffset &v)
 dividing all elements of the current vector by elements of v More...
 
NumericVectorWithOffsetoperator/= (const elemT &v)
 dividing the elements of the current vector by an elemT
 
STIR_DEPRECATED void axpby (const elemT2 a, const NumericVectorWithOffset &x, const elemT2 b, const NumericVectorWithOffset &y)
 
void axpby (const NUMBER2 a, const NumericVectorWithOffset &x, const NUMBER2 b, const NumericVectorWithOffset &y)
 
void xapyb (const NumericVectorWithOffset &x, const elemT a, const NumericVectorWithOffset &y, const elemT b)
 set values of the array to x*a+y*b, where a and b are scalar
 
void xapyb (const NumericVectorWithOffset &x, const NumericVectorWithOffset &a, const NumericVectorWithOffset &y, const NumericVectorWithOffset &b)
 set the values of the array to x*a+y*b, where a and b are vectors
 
void sapyb (const T2 &a, const NumericVectorWithOffset &y, const T2 &b)
 set the values of the array to self*a+y*b, where a and b are scalar or vectors
 
- Public Member Functions inherited from stir::VectorWithOffset< Array< num_dimensions - 1, elemT > >
 VectorWithOffset ()
 Default constructor: creates a vector of length 0.
 
 VectorWithOffset (const int hsz)
 Construct a VectorWithOffset of given length (initialised with T())
 
 VectorWithOffset (const int min_index, const int max_index)
 Construct a VectorWithOffset with offset min_index (initialised with T())
 
STIR_DEPRECATED VectorWithOffset (const int hsz, Array< num_dimensions - 1, elemT > *const data_ptr, Array< num_dimensions - 1, elemT > *const end_of_data_ptr)
 Construct a VectorWithOffset of given length pointing to existing data. More...
 
STIR_DEPRECATED VectorWithOffset (const int min_index, const int max_index, Array< num_dimensions - 1, elemT > *const data_ptr, Array< num_dimensions - 1, elemT > *const end_of_data_ptr)
 Construct a VectorWithOffset with offset min_index pointing to existing data. More...
 
 VectorWithOffset (const int hsz, const Array< num_dimensions - 1, elemT > *const data_ptr)
 Construct a VectorWithOffset of given length from a bare pointer (copying data)
 
 VectorWithOffset (const int min_index, const int max_index, const Array< num_dimensions - 1, elemT > *const data_ptr)
 Construct a VectorWithOffset with offset min_index from a bare pointer (copying data)
 
 VectorWithOffset (const int min_index, const int max_index, shared_ptr< Array< num_dimensions - 1, elemT > []> data_sptr)
 Construct a VectorWithOffset sharing existing data. More...
 
 VectorWithOffset (const int sz, shared_ptr< Array< num_dimensions - 1, elemT > []> data_sptr)
 Construct a VectorWithOffset sharing existing data. More...
 
 VectorWithOffset (const VectorWithOffset &il)
 copy constructor
 
 VectorWithOffset (VectorWithOffset &&other) noexcept
 move constructor More...
 
virtual ~VectorWithOffset ()
 Destructor.
 
void recycle ()
 Free all memory and make object as if default-constructed. More...
 
VectorWithOffsetoperator= (const VectorWithOffset &il)
 assignment operator with another vector More...
 
Array< num_dimensions - 1, elemT > & operator[] (int i)
 allow array-style access, read/write More...
 
const Array< num_dimensions - 1, elemT > & operator[] (int i) const
 array access, read-only More...
 
Array< num_dimensions - 1, elemT > & at (int i)
 allow array-style access, read/write, but with range checking (throws std::out_of_range)
 
const Array< num_dimensions - 1, elemT > & at (int i) const
 array access, read-only, but with range checking (throws std::out_of_range)
 
bool empty () const
 checks if the vector is empty
 
void fill (const Array< num_dimensions - 1, elemT > &n)
 fill elements with value n
 
void apply_lower_threshold (const Array< num_dimensions - 1, elemT > &lower)
 Sets elements below value to the value.
 
void apply_upper_threshold (const Array< num_dimensions - 1, elemT > &upper)
 Sets elements above value to the value.
 
int get_length () const
 return number of elements in this vector More...
 
size_t size () const
 return number of elements in this vector
 
int get_min_index () const
 get value of first valid index
 
int get_max_index () const
 get value of last valid index
 
void set_offset (const int min_index)
 change value of starting index
 
void set_min_index (const int min_index)
 identical to set_offset()
 
virtual void grow (const int min_index, const int max_index)
 grow the range of the vector, new elements are set to T() More...
 
void grow (const unsigned int new_size)
 grow the range of the vector from 0 to new_size-1, new elements are set to T()
 
virtual void resize (const int min_index, const int max_index)
 change the range of the vector, new elements are set to T() More...
 
void resize (const unsigned int new_size)
 change the range of the vector from 0 to new_size-1, new elements are set to T()
 
void reserve (const int min_index, const int max_index)
 make the allocated range at least from min_index to max_index
 
void reserve (const unsigned int new_size)
 make the allocated range at least from 0 to new_size-1
 
size_t capacity () const
 get allocated size
 
bool owns_memory_for_data () const
 check if this object owns the memory for the data More...
 
int get_capacity_min_index () const
 get min_index within allocated range More...
 
int get_capacity_max_index () const
 get max_index within allocated range More...
 
bool operator== (const VectorWithOffset &iv) const
 
bool operator!= (const VectorWithOffset &iv) const
 
Array< num_dimensions - 1, elemT > * get_data_ptr ()
 member function for access to the data via a T* More...
 
const Array< num_dimensions - 1, elemT > * get_const_data_ptr () const
 member function for access to the data via a const T* More...
 
void release_data_ptr ()
 signal end of access to T* More...
 
void release_const_data_ptr () const
 signal end of access to const T* More...
 
iterator begin ()
 use to initialise an iterator to the first element of the vector
 
const_iterator begin () const
 use to initialise an iterator to the first element of the (const) vector
 
iterator end ()
 iterator 'past' the last element of the vector
 
const_iterator end () const
 iterator 'past' the last element of the (const) vector
 
reverse_iterator rbegin ()
 
const_reverse_iterator rbegin () const
 
reverse_iterator rend ()
 
const_reverse_iterator rend () const
 
VectorWithOffsetoperator+= (const VectorWithOffset &v)
 adding elements of v to the current vector
 
VectorWithOffsetoperator-= (const VectorWithOffset &v)
 subtracting elements of v from the current vector
 
VectorWithOffsetoperator*= (const VectorWithOffset &v)
 multiplying elements of the current vector with elements of v
 
VectorWithOffsetoperator/= (const VectorWithOffset &v)
 dividing all elements of the current vector by elements of v
 
VectorWithOffset operator+ (const VectorWithOffset &v) const
 adding vectors, element by element
 
VectorWithOffset operator- (const VectorWithOffset &v) const
 subtracting vectors, element by element
 
VectorWithOffset operator* (const VectorWithOffset &v) const
 multiplying vectors, element by element
 
VectorWithOffset operator/ (const VectorWithOffset &v) const
 dividing vectors, element by element
 

Additional Inherited Members

- Public Types inherited from stir::DiscretisedDensity< num_dimensions, elemT >
typedef DiscretisedDensity< num_dimensions, elemT > hierarchy_base_type
 A typedef that can be used what the base of the hierarchy is. More...
 
- Public Types inherited from stir::Array< num_dimensions, elemT >
typedef base_type::value_type value_type
 typedefs such that we do not need to have typename wherever we use these types defined in the base class
 
typedef base_type::reference reference
 
typedef base_type::const_reference const_reference
 
typedef base_type::difference_type difference_type
 
typedef base_type::size_type size_type
 
typedef base_type::iterator iterator
 
typedef base_type::const_iterator const_iterator
 
typedef elemT full_value_type
 
typedef full_value_type * full_pointer
 
typedef const full_value_type * const_full_pointer
 
typedef full_value_type & full_reference
 
typedef const full_value_type & const_full_reference
 
typedef FullArrayIterator< typename base_type::iterator, typename Array< num_dimensions - 1, elemT >::full_iterator, elemT, full_reference, full_pointer > full_iterator
 This defines an iterator type that iterates through all elements.
 
typedef FullArrayIterator< typename base_type::const_iterator, typename Array< num_dimensions - 1, elemT >::const_full_iterator, elemT, const_full_reference, const_full_pointer > const_full_iterator
 As full_iterator, but for const objects.
 
- Public Types inherited from stir::VectorWithOffset< Array< num_dimensions - 1, elemT > >
typedef size_t size_type
 
typedef Array< num_dimensions - 1, elemT > value_type
 
typedef value_typereference
 
typedef const value_typeconst_reference
 
typedef ptrdiff_t difference_type
 
typedef Array< num_dimensions - 1, elemT > * iterator
 
typedef Array< num_dimensions - 1, elemT > const * const_iterator
 
typedef std::reverse_iterator< iteratorreverse_iterator
 
typedef std::reverse_iterator< const_iteratorconst_reverse_iterator
 
- Static Public Member Functions inherited from stir::DiscretisedDensity< num_dimensions, elemT >
static DiscretisedDensityread_from_file (const std::string &filename)
 A static member to read an image from file. More...
 
- Protected Member Functions inherited from stir::DiscretisedDensityOnCartesianGrid< 3, elemT >
bool actual_has_same_characteristics (DiscretisedDensity< num_dimensions, elemT > const &, std::string &explanation) const override
 Implementation used by has_same_characteristics. More...
 
CartesianCoordinate3D< float > actual_get_relative_coordinates_for_indices (const BasicCoordinate< num_dimensions, float > &indices) const override
 Return the relative coordinates of the centre of the basis-function corresponding to indices. More...
 
BasicCoordinate< num_dimensions, float > actual_get_index_coordinates_for_relative_coordinates (const CartesianCoordinate3D< float > &coords) const override
 Return the indices of the basis-function closest to the given point. More...
 
- Protected Member Functions inherited from stir::VectorWithOffset< Array< num_dimensions - 1, elemT > >
void check_state () const
 Called internally to see if all variables are consistent. More...
 
void init (const int min_index, const int max_index, Array< num_dimensions - 1, elemT > *const data_ptr, bool copy_data)
 change vector with new index range and point to data_ptr More...
 
- Protected Attributes inherited from stir::ExamData
shared_ptr< const ExamInfoexam_info_sptr
 
- Protected Attributes inherited from stir::VectorWithOffset< Array< num_dimensions - 1, elemT > >
Array< num_dimensions - 1, elemT > * num
 pointer to (*this)[0] (taking get_min_index() into account that is).
 

Detailed Description

template<class elemT>
class stir::VoxelsOnCartesianGrid< elemT >

This class is used to represent voxelised densities on a cuboid grid (3D).

This class represents 'normal' data. Basisfunctions are just voxels.

Constructor & Destructor Documentation

◆ VoxelsOnCartesianGrid() [1/5]

template<class elemT >
stir::VoxelsOnCartesianGrid< elemT >::VoxelsOnCartesianGrid ( const IndexRange< 3 > &  range,
const CartesianCoordinate3D< float > &  origin,
const BasicCoordinate< 3, float > &  grid_spacing 
)

Construct a VoxelsOnCartesianGrid from an index range.

All elements are set 0.

◆ VoxelsOnCartesianGrid() [2/5]

template<class elemT >
stir::VoxelsOnCartesianGrid< elemT >::VoxelsOnCartesianGrid ( const shared_ptr< const ExamInfo > &  exam_info_sptr,
const IndexRange< 3 > &  range,
const CartesianCoordinate3D< float > &  origin,
const BasicCoordinate< 3, float > &  grid_spacing 
)

Construct a VoxelsOnCartesianGrid from an index range.

All elements are set 0.

◆ VoxelsOnCartesianGrid() [3/5]

template<class elemT >
stir::VoxelsOnCartesianGrid< elemT >::VoxelsOnCartesianGrid ( const ProjDataInfo proj_data_info_ptr,
const float  zoom = 1.F,
const CartesianCoordinate3D< float > &  origin = CartesianCoordinate3D<float>(0.F, 0.F, 0.F),
const CartesianCoordinate3D< int > &  sizes = CartesianCoordinate3D<int>(-1, -1, -1) 
)

use ProjDataInfo to obtain the size information

When sizes.x() is -1, a default size in x is found by taking the diameter of the FOV spanned by the projection data. Similar for sizes.y().

When sizes.z() is -1, a default size in z is found by taking the number of planes as

  • $N_0$ when segment 0 is axially compressed,
  • $2N_0-1$ when segment 0 is not axially compressed,

where $N_0$ is the number of sinograms in segment 0.

Actual index ranges start from 0 for z, but from -(x_size_used/2) for x (and similar for y).

x,y grid spacing are set to the proj_data_info_ptr->get_scanner_ptr()->get_default_bin_size()/zoom. This is to make sure that the voxel size is independent on if arc-correction is used or not. If the default bin size is 0, the sampling distance in s (for bin 0) is used.

z grid spacing is set to half the scanner ring distance.

All voxel values are set 0.

◆ VoxelsOnCartesianGrid() [4/5]

template<class elemT >
stir::VoxelsOnCartesianGrid< elemT >::VoxelsOnCartesianGrid ( const shared_ptr< const ExamInfo > &  exam_info_sptr,
const ProjDataInfo proj_data_info,
const float  zoom = 1.F,
const CartesianCoordinate3D< float > &  origin = CartesianCoordinate3D<float>(0.F, 0.F, 0.F),
const CartesianCoordinate3D< int > &  sizes = CartesianCoordinate3D<int>(-1, -1, -1) 
)

Constructor from exam_info and proj_data_info.

See also
VoxelsOnCartesianGrid(const ProjDataInfo&, const float zoom, const CartesianCoordinate3D<float>&, const CartesianCoordinate3D<int>& );

◆ VoxelsOnCartesianGrid() [5/5]

template<class elemT >
stir::VoxelsOnCartesianGrid< elemT >::VoxelsOnCartesianGrid ( const shared_ptr< const ExamInfo > &  exam_info_sptr_v,
const ProjDataInfo proj_data_info,
const CartesianCoordinate3D< float > &  zooms,
const CartesianCoordinate3D< float > &  origin = CartesianCoordinate3D<float>(0.F, 0.F, 0.F),
const CartesianCoordinate3D< int > &  sizes = CartesianCoordinate3D<int>(-1, -1, -1) 
)

Constructor from exam_info and proj_data_info.

See also
VoxelsOnCartesianGrid(const ProjDataInfo&, const float zoom, const CartesianCoordinate3D<float>&, const CartesianCoordinate3D<int>& );

Member Function Documentation

◆ get_empty_voxels_on_cartesian_grid()

template<class elemT >
VoxelsOnCartesianGrid< elemT > * stir::VoxelsOnCartesianGrid< elemT >::get_empty_voxels_on_cartesian_grid ( ) const

Like get_empty_copy, but returning a pointer to a VoxelsOnCartesianGrid.

This member function will be unnecessary when all compilers can handle 'covariant' return types. It is a non-virtual counterpart of get_empty_voxels_on_cartesian_grid.

References stir::DiscretisedDensityOnCartesianGrid< 3, elemT >::get_grid_spacing(), stir::DiscretisedDensity< num_dimensions, elemT >::get_origin(), and stir::VoxelsOnCartesianGrid< elemT >::VoxelsOnCartesianGrid().

Referenced by stir::VoxelsOnCartesianGrid< elemT >::get_empty_copy().

◆ set_plane()

template<class elemT >
void stir::VoxelsOnCartesianGrid< elemT >::set_plane ( const PixelsOnCartesianGrid< elemT > &  plane,
const int  z 
)

◆ get_x_size()

template<typename elemT >
int stir::VoxelsOnCartesianGrid< elemT >::get_x_size ( ) const
inline

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