4#ifndef __stir_recon_buildblock_ForwardProjectorByBin_h__
5#define __stir_recon_buildblock_ForwardProjectorByBin_h__
39template <
typename elemT>
40class RelatedViewgrams;
41template <
int num_dimensions,
class elemT>
42class DiscretisedDensity;
45class DataSymmetriesForViewSegmentNumbers;
46template <
typename DataT>
70 virtual void set_up(
const shared_ptr<const ProjDataInfo>& proj_data_info_ptr,
89#ifdef STIR_PROJECTORS_AS_V3
96 const int min_axial_pos_num,
97 const int max_axial_pos_num);
101 const int min_axial_pos_num,
102 const int max_axial_pos_num,
103 const int min_tangential_pos_num,
104 const int max_tangential_pos_num);
117 const int min_axial_pos_num,
118 const int max_axial_pos_num,
119 const int min_tangential_pos_num,
120 const int max_tangential_pos_num);
140 const int min_axial_pos_num,
141 const int max_axial_pos_num,
142 const int min_tangential_pos_num,
143 const int max_tangential_pos_num);
146 const int min_axial_pos_num,
147 const int max_axial_pos_num,
148 const int min_tangential_pos_num,
149 const int max_tangential_pos_num);
153 virtual void actual_forward_project(Bin&,
173 bool _already_set_up;
177 shared_ptr<DataProcessor<DiscretisedDensity<3, float>>> _pre_data_processor_sptr;
Declaration of class stir::Bin.
Declaration of class stir::ProjMatrixElemsForOneBin.
Declaration of class stiir::RegisteredObject.
declares the stir::TimedObject class
defines the stir::VoxelsOnCartesianGrid class
A class for storing coordinates and value of a single projection bin.
Definition Bin.h:49
Base class that defines an interface for classes that do data processing.
Definition DataProcessor.h:47
A class for encoding/finding symmetries. Works only on ViewSegmentNumbers (instead of Bin).
Definition DataSymmetriesForViewSegmentNumbers.h:50
This abstract class is the basis for all image representations.
Definition DiscretisedDensity.h:99
void set_pre_data_processor(shared_ptr< DataProcessor< DiscretisedDensity< 3, float > > > pre_data_processor_sptr)
Set data processor to use before forward projection. MUST BE CALLED BEFORE SET_INPUT.
Definition ForwardProjectorByBin.cxx:321
ForwardProjectorByBin()
Default constructor calls reset_timers()
Definition ForwardProjectorByBin.cxx:45
virtual void actual_forward_project(RelatedViewgrams< float > &, const DiscretisedDensity< 3, float > &, const int min_axial_pos_num, const int max_axial_pos_num, const int min_tangential_pos_num, const int max_tangential_pos_num)
This virtual function has to be implemented by the derived class.
Definition ForwardProjectorByBin.cxx:289
void forward_project(ProjData &, const DiscretisedDensity< 3, float > &, int subset_num=0, int num_subsets=1, bool zero=true)
project the volume into the whole or a subset of proj_data, optionally zeroing the rest
Definition ForwardProjectorByBin.cxx:98
void set_defaults() override
Set defaults before parsing.
Definition ForwardProjectorByBin.cxx:55
virtual void check(const ProjDataInfo &proj_data_info) const
check if the argument is the same as what was used for set_up()
Definition ForwardProjectorByBin.cxx:78
void initialise_keymap() override
Initialise all keywords.
Definition ForwardProjectorByBin.cxx:61
virtual void set_up(const shared_ptr< const ProjDataInfo > &proj_data_info_ptr, const shared_ptr< const DiscretisedDensity< 3, float > > &density_info_sptr)=0
Stores all necessary geometric info.
Definition ForwardProjectorByBin.cxx:69
shared_ptr< DiscretisedDensity< 3, float > > _density_sptr
The density ptr set with set_up()
Definition ForwardProjectorByBin.h:176
shared_ptr< const ProjDataInfo > _proj_data_info_sptr
ProjDataInfo set by set_up()
Definition ForwardProjectorByBin.h:184
virtual void set_input(const DiscretisedDensity< 3, float > &)
Set input.
Definition ForwardProjectorByBin.cxx:307
virtual const DataSymmetriesForViewSegmentNumbers * get_symmetries_used() const =0
Informs on which symmetries the projector handles.
An (abstract base) class that contains information on the projection data.
Definition ProjDataInfo.h:70
The (abstract) base class for the projection data.
Definition ProjData.h:105
base class for all objects which need timers. At the moment, there's only a CPU timer.
Definition TimedObject.h:36
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast into the stir names...