STIR 6.4.0
BackProjectorByBinParallelproj.h
Go to the documentation of this file.
1//
2//
13/*
14 Copyright (C) 2019, 2021 University College London
15 This file is part of STIR.
16
17 SPDX-License-Identifier: Apache-2.0
18
19 See STIR/LICENSE.txt for details
20*/
21#ifndef __stir_gpu_BackProjectorByBinParallelproj_h__
22#define __stir_gpu_BackProjectorByBinParallelproj_h__
23
26//#include "stir/recon_buildblock/Parallelproj_projector/ParallelprojHelper.h"
27
28START_NAMESPACE_STIR
29
30class DataSymmetriesForViewSegmentNumbers;
31class ProjDataInMemory;
32namespace detail
33{
34class ParallelprojHelper;
35}
36
41class BackProjectorByBinParallelproj : public RegisteredParsingObject<BackProjectorByBinParallelproj, BackProjectorByBin>
42{
43public:
45 static const char* const registered_name;
46
49
51
53 void initialise_keymap() override;
54
56
59 void set_up(const shared_ptr<const ProjDataInfo>& proj_data_info_ptr,
60 const shared_ptr<const DiscretisedDensity<3, float>>& density_info_sptr // TODO should be Info only
61 ) override;
62
65
66#if 0
68 void back_project(const ProjData&, int subset_num = 0, int num_subsets = 1);
69#endif
71 void get_output(DiscretisedDensity<3, float>&) const override;
72
76
78 void set_defaults() override;
79
81 void set_verbosity(const bool verbosity)
82 {
83 _cuda_verbosity = verbosity;
84 }
85
86 // set/get number of gpu chunks to use
87 void set_num_gpu_chunks(int num_gpu_chunks)
88 {
89 _num_gpu_chunks = num_gpu_chunks;
90 }
91 int get_num_gpu_chunks()
92 {
93 return _num_gpu_chunks;
94 }
95
96 BackProjectorByBinParallelproj* clone() const override;
97
98 bool get_restrict_to_cylindrical_FOV() const;
99 void set_restrict_to_cylindrical_FOV(bool val);
100
101protected:
102 void actual_back_project(const RelatedViewgrams<float>&,
103 const int min_axial_pos_num,
104 const int max_axial_pos_num,
105 const int min_tangential_pos_num,
106 const int max_tangential_pos_num) override;
107
108private:
109 shared_ptr<DataSymmetriesForViewSegmentNumbers> _symmetries_sptr;
110 shared_ptr<ProjDataInMemory> _proj_data_to_backproject_sptr;
111 shared_ptr<detail::ParallelprojHelper> _helper;
112 bool _do_not_setup_helper;
113 friend class ProjectorByBinPairUsingParallelproj;
114 void set_helper(shared_ptr<detail::ParallelprojHelper>);
115 bool _cuda_verbosity;
116 int _num_gpu_chunks;
117 bool _restrict_to_cylindrical_FOV;
118};
119
120END_NAMESPACE_STIR
121
122#endif // __stir_gpu_BackProjectorByBinParallelproj_h__
Declares class stir::BackProjectorByBin.
Declaration of class stir::RegisteredParsingObject.
static const char *const registered_name
Name which will be used when parsing a BackProjectorByBin object.
Definition BackProjectorByBinParallelproj.h:45
BackProjectorByBinParallelproj()
Default constructor calls reset_timers()
Definition BackProjectorByBinParallelproj.cxx:61
void get_output(DiscretisedDensity< 3, float > &) const override
Get output.
Definition BackProjectorByBinParallelproj.cxx:161
void set_up(const shared_ptr< const ProjDataInfo > &proj_data_info_ptr, const shared_ptr< const DiscretisedDensity< 3, float > > &density_info_sptr) override
Stores all necessary geometric info.
Definition BackProjectorByBinParallelproj.cxx:110
const DataSymmetriesForViewSegmentNumbers * get_symmetries_used() const override
Symmetries not used, so returns TrivialDataSymmetriesForBins.
Definition BackProjectorByBinParallelproj.cxx:125
void set_verbosity(const bool verbosity)
Set verbosity.
Definition BackProjectorByBinParallelproj.h:81
void start_accumulating_in_new_target() override
tell the back projector to start accumulating into a new target. This function has to be called befor...
Definition BackProjectorByBinParallelproj.cxx:304
void set_defaults() override
set defaults
Definition BackProjectorByBinParallelproj.cxx:83
void initialise_keymap() override
Keymap.
Definition BackProjectorByBinParallelproj.cxx:73
void back_project(DiscretisedDensity< 3, float > &, const ProjData &, int subset_num=0, int num_subsets=1)
project whole proj_data into the volume
Definition BackProjectorByBin.cxx:112
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
The (abstract) base class for the projection data.
Definition ProjData.h:105
Parent class for all leaves in a RegisteredObject hierarchy that do parsing of parameter files.
Definition RegisteredParsingObject.h:78