16#ifndef __stir_DiscretisedDensity_H__
17#define __stir_DiscretisedDensity_H__
43# define ArrayType Array
97template <
int num_dimensions,
typename elemT>
100#ifdef STIR_COMPILING_SWIG_WRAPPER
defines the stir::Array class for multi-dimensional (numeric) arrays
defines the stir::CartesianCoordinate3D<coordT> class
inline implementation for stir::DiscretisedDensity
declaration of stir::ExamData
class BasicCoordinate<int num_dimensions, typename coordT> defines num_dimensions -dimensional coordi...
Definition BasicCoordinate.h:57
a templated class for 3-dimensional coordinates.
Definition CartesianCoordinate3D.h:53
void set_origin(const CartesianCoordinate3D< float > &origin)
Set the origin.
Definition DiscretisedDensity.inl:57
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.
Definition DiscretisedDensity.inl:167
BasicCoordinate< num_dimensions, float > get_index_coordinates_for_LPS_coordinates(const CartesianCoordinate3D< float > &coords) const
Translation from LPS coordinates to continuous indices.
Definition DiscretisedDensity.inl:271
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.
Definition DiscretisedDensity.inl:151
DiscretisedDensity()
Construct an empty DiscretisedDensity.
Definition DiscretisedDensity.inl:36
DiscretisedDensity(const IndexRange< num_dimensions > &range, const CartesianCoordinate3D< float > &origin)
Construct DiscretisedDensity from a given range of indices & origin.
Definition DiscretisedDensity.inl:40
bool has_same_characteristics(self_type const &) const
Checks if the 2 objects have the same type, index range, origin etc.
CartesianCoordinate3D< float > get_LPS_coordinates_for_indices(const BasicCoordinate< num_dimensions, int > &indices) const
Translation from indices to LPS coordinates.
Definition DiscretisedDensity.inl:254
DiscretisedDensity< num_dimensions, float > hierarchy_base_type
Definition DiscretisedDensity.h:115
BasicCoordinate< num_dimensions, int > get_indices_closest_to_LPS_coordinates(const CartesianCoordinate3D< float > &coords) const
Translation from LPS coordinates to indices.
Definition DiscretisedDensity.inl:279
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.
Definition DiscretisedDensity.inl:135
bool operator!=(const self_type &) const
negation of operator==
Definition DiscretisedDensity.inl:128
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.
Definition DiscretisedDensity.inl:175
bool operator==(const self_type &) const
check equality (data has to be identical)
Definition DiscretisedDensity.inl:121
CartesianCoordinate3D< float > get_LPS_coordinates_for_indices(const BasicCoordinate< num_dimensions, float > &indices) const
Translation from continuous indices to LPS coordinates.
Definition DiscretisedDensity.inl:246
virtual bool actual_has_same_characteristics(DiscretisedDensity< num_dimensions, elemT > const &, std::string &explanation) const
Implementation used by has_same_characteristics.
Definition DiscretisedDensity.inl:71
CartesianCoordinate3D< float > get_LPS_coordinates_for_physical_coordinates(const CartesianCoordinate3D< float > &indices) const
Translation from physical to LPS coordinates.
Definition DiscretisedDensity.inl:238
DiscretisedDensity< num_dimensions, elemT > * get_empty_discretised_density() const
Allocate a new DiscretisedDensity object with same characteristics as the current one.
Definition DiscretisedDensity.h:253
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.
Definition DiscretisedDensity.inl:47
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.
Definition DiscretisedDensity.inl:159
virtual DiscretisedDensity< num_dimensions, elemT > * clone() const =0
Allocate a new DiscretisedDensity object which is a copy of the current one.
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 ...
Definition DiscretisedDensity.inl:143
CartesianCoordinate3D< float > get_physical_coordinates_for_LPS_coordinates(const CartesianCoordinate3D< float > &coords) const
Translation from LPS coordinates to physical coordinates.
Definition DiscretisedDensity.inl:262
const CartesianCoordinate3D< float > & get_origin() const
Return the origin.
Definition DiscretisedDensity.inl:64
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...
Definition DiscretisedDensity.inl:183
virtual DiscretisedDensity< num_dimensions, elemT > * get_empty_copy() const =0
Allocate a new DiscretisedDensity object with same characteristics as the current one.
bool has_same_characteristics(self_type const &, std::string &explanation) const
Checks if the 2 objects have the same type, index range, origin etc.
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.
Definition DiscretisedDensity.inl:191
virtual CartesianCoordinate3D< float > actual_get_relative_coordinates_for_indices(const BasicCoordinate< num_dimensions, float > &indices) const =0
Implementation used by get_relative_coordinates_for_indices.
static DiscretisedDensity * read_from_file(const std::string &filename)
A static member to read an image from file.
Definition DiscretisedDensity.cxx:62
ExamData()
ExamData.
Definition ExamData.cxx:21
This class defines ranges which can be 'irregular'.
Definition IndexRange.h:69
Definition PatientPosition.h:29
Array< num_dimensions, elemT > ArrayType
type alias for future-proofing for "large" rectangular arrays
Definition ArrayFwd.h:25
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast into the stir names...