1 #ifndef __stir_recon_buildblock_ProjMatrixByBin_H__ 2 #define __stir_recon_buildblock_ProjMatrixByBin_H__ 40 #include <unordered_map> 90 virtual void set_up(
const shared_ptr<const ProjDataInfo>& proj_data_info_ptr,
100 inline const shared_ptr<DataSymmetriesForBins> get_symmetries_sptr()
const;
119 virtual void write_to_file_by_bin(
120 const char *
const file_name_without_extension)
const;
132 void enable_cache(
const bool v =
true);
133 void store_only_basic_bins_in_cache(
const bool v =
true);
135 bool is_cache_enabled()
const;
136 bool does_cache_store_only_basic_bins()
const;
140 void clear_cache()
const;
143 shared_ptr<DataSymmetriesForBins> symmetries_sptr;
164 void set_defaults()
override;
167 void initialise_keymap()
override;
170 bool post_processing()
override;
175 bool cache_stores_only_basic_bins;
198 typedef std::uint64_t CacheKey;
202 const CacheKey tang_pos_bits = 12;
203 const CacheKey axial_pos_bits = 28;
204 const CacheKey timing_pos_bits = 20;
207 typedef std::unordered_map<CacheKey, ProjMatrixElemsForOneBin> MapProjMatrixElemsForOneBin;
208 typedef MapProjMatrixElemsForOneBin::iterator MapProjMatrixElemsForOneBinIterator;
209 typedef MapProjMatrixElemsForOneBin::const_iterator const_MapProjMatrixElemsForOneBinIterator;
219 CacheKey cache_key(
const Bin& bin)
const;
224 void enable_tof(
const shared_ptr<const ProjDataInfo>& proj_data_info_sptr,
const bool v =
true);
227 float gauss_sigma_in_mm;
229 float r_sqrt2_gauss_sigma;
235 inline float get_tof_value(
const float d1,
const float d2)
const;
238 FastErf erf_interpolation;
245 #endif // __ProjMatrixByBin_H__ Declaration of class stir::DataSymmetriesForBins.
A class for encoding/finding symmetries common to the geometry of the projection data and the discret...
Definition: DataSymmetriesForBins.h:67
A templated class for vectors, but with indices starting not from 0.
Definition: ArrayFilter1DUsingConvolution.h:31
Implementation of an erf interpolation.
Declaration of class stir::ParsingObject.
bool tof_enabled
If activated TOF reconstruction will be performed.
Definition: ProjMatrixByBin.h:177
This is the (abstract) base class for all projection matrices which are organised by 'bin'...
Definition: ProjMatrixByBin.h:78
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast (or corresponding b...
Implementations of inline functions for class stir::ProjMatrixByBin.
base class for all objects which need timers. At the moment, there's only a CPU timer.
Definition: TimedObject.h:35
shared_ptr< const ProjDataInfo > proj_data_info_sptr
We need a local copy of the proj_data_info to get the integration boundaries and RayTracing.
Definition: ProjMatrixByBin.h:192
Declaration of class stiir::RegisteredObject.
A class for storing coordinates and value of a single projection bin.
Definition: Bin.h:48
declares the stir::TimedObject class
Helper class to provide registry mechanisms to a Base classSuppose you have a hierarchy of classes wi...
Definition: RegisteredObject.h:95
defines the stir::VectorWithOffset class
Declaration of class stir::ProjMatrixElemsForOneBin.
This stores the non-zero projection matrix elements for every 'densel' that contributes to a given bi...
Definition: ProjMatrixElemsForOneBin.h:68
defines the stir::VoxelsOnCartesianGrid class
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition: Succeeded.h:43
shared_ptr< const VoxelsOnCartesianGrid< float > > image_info_sptr
We need a local copy of the discretised density in order to find the cartesian coordinates of each vo...
Definition: ProjMatrixByBin.h:189