20#ifndef __stir_recon_buildblock_ProjMatrixByBinUsingInterpolation__
21#define __stir_recon_buildblock_ProjMatrixByBinUsingInterpolation__
31template <
int num_dimensions,
typename elemT>
32class DiscretisedDensity;
63 void set_up(
const shared_ptr<const ProjDataInfo>& proj_data_info_ptr,
70 bool do_symmetry_90degrees_min_phi;
71 bool do_symmetry_180degrees_min_phi;
72 bool do_symmetry_swap_segment;
73 bool do_symmetry_swap_s;
74 bool do_symmetry_shift_z;
81 shared_ptr<const ProjDataInfo> proj_data_info_ptr;
116 float backprojection_normalisation;
118 bool use_exact_Jacobian_now;
123 explicit JacobianForIntBP(
const ProjDataInfoCylindrical* proj_data_info_ptr,
bool exact);
125 float operator()(
const float delta,
const float s)
const
128 if (use_exact_Jacobian_now)
129 tmp = 4 * (R2 - s * s);
134 return (arccor ? tmp : pow(tmp, 1.5F)) / pow(tmp + ring_spacing2 * delta * delta, 1.5F) * backprojection_normalisation;
138 JacobianForIntBP jacobian;
139 bool use_piecewise_linear_interpolation_now;
140 bool use_exact_Jacobian_now;
142 void calculate_proj_matrix_elems_for_one_bin(ProjMatrixElemsForOneBin&)
const override;
144 void set_defaults()
override;
145 void initialise_keymap()
override;
146 bool post_processing()
override;
148 float get_element(
const Bin& bin,
const CartesianCoordinate3D<float>& densel_ctr)
const;
151 void find_tang_ax_pos_diff(
float& tang_pos_diff,
154 const CartesianCoordinate3D<float>& point)
const;
defines the stir::CartesianCoordinate3D<coordT> class
Declaration of class stir::ProjDataInfoCylindrical.
declaration of stir::ProjMatrixByBin and its helpers classes
Declaration of class stir::RegisteredParsingObject.
a templated class for 3-dimensional coordinates.
Definition CartesianCoordinate3D.h:53
This abstract class is the basis for all image representations.
Definition DiscretisedDensity.h:99
This class defines ranges which can be 'irregular'.
Definition IndexRange.h:69
The next class is used in BackProjectorByBinUsingInterpolation to take geometric things into account....
Definition BackProjectorByBinUsingInterpolation.h:58
projection data info for data corresponding to a 'cylindrical' sampling.
Definition ProjDataInfoCylindrical.h:49
static const char *const registered_name
Name which will be used when parsing a ProjMatrixByBin object.
Definition ProjMatrixByBinUsingInterpolation.h:55
void set_up(const shared_ptr< const ProjDataInfo > &proj_data_info_ptr, const shared_ptr< const DiscretisedDensity< 3, float > > &density_info_ptr) override
Stores all necessary geometric info.
Definition ProjMatrixByBinUsingInterpolation.cxx:95
ProjMatrixByBinUsingInterpolation()
Default constructor (calls set_defaults())
Definition ProjMatrixByBinUsingInterpolation.cxx:52
Parent class for all leaves in a RegisteredObject hierarchy that do parsing of parameter files.
Definition RegisteredParsingObject.h:78
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast into the stir names...