GGEMS  1.1
GPU GEant4-based Monte Carlo Simulations
GGEMSCTSystem.hh
Go to the documentation of this file.
1 #ifndef GUARD_GGEMS_NAVIGATORS_GGEMSCTSYSTEM_HH
2 #define GUARD_GGEMS_NAVIGATORS_GGEMSCTSYSTEM_HH
3 
4 // ************************************************************************
5 // * This file is part of GGEMS. *
6 // * *
7 // * GGEMS is free software: you can redistribute it and/or modify *
8 // * it under the terms of the GNU General Public License as published by *
9 // * the Free Software Foundation, either version 3 of the License, or *
10 // * (at your option) any later version. *
11 // * *
12 // * GGEMS is distributed in the hope that it will be useful, *
13 // * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 // * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 // * GNU General Public License for more details. *
16 // * *
17 // * You should have received a copy of the GNU General Public License *
18 // * along with GGEMS. If not, see <https://www.gnu.org/licenses/>. *
19 // * *
20 // ************************************************************************
21 
34 
39 class GGEMS_EXPORT GGEMSCTSystem : public GGEMSSystem
40 {
41  public:
46  explicit GGEMSCTSystem(std::string const& ct_system_name);
47 
51  ~GGEMSCTSystem(void);
52 
58  GGEMSCTSystem(GGEMSCTSystem const& ct_system_name) = delete;
59 
65  GGEMSCTSystem& operator=(GGEMSCTSystem const& ct_system_name) = delete;
66 
72  GGEMSCTSystem(GGEMSCTSystem const&& ct_system_name) = delete;
73 
79  GGEMSCTSystem& operator=(GGEMSCTSystem const&& ct_system_name) = delete;
80 
85  void Initialize(void) override;
86 
92  void SetCTSystemType(std::string const& ct_system_type);
93 
100  void SetSourceIsocenterDistance(GGfloat const& source_isocenter_distance, std::string const& unit = "mm");
101 
108  void SetSourceDetectorDistance(GGfloat const& source_detector_distance, std::string const& unit = "mm");
109 
110  private:
115  void CheckParameters(void) const override;
116 
121  void InitializeCurvedGeometry(void);
122 
127  void InitializeFlatGeometry(void);
128 
129  private:
130  std::string ct_system_type_;
133 };
134 
141 extern "C" GGEMS_EXPORT GGEMSCTSystem* create_ggems_ct_system(char const* ct_system_name);
142 
150 extern "C" GGEMS_EXPORT void set_number_of_modules_ggems_ct_system(GGEMSCTSystem* ct_system, GGsize const module_x, GGsize const module_y);
151 
158 extern "C" GGEMS_EXPORT void set_ct_system_type_ggems_ct_system(GGEMSCTSystem* ct_system, char const* ct_system_type);
159 
168 extern "C" GGEMS_EXPORT void set_number_of_detection_elements_ggems_ct_system(GGEMSCTSystem* ct_system, GGsize const n_detection_element_x, GGsize const n_detection_element_y, GGsize const n_detection_element_z);
169 
179 extern "C" GGEMS_EXPORT void set_size_of_detection_elements_ggems_ct_system(GGEMSCTSystem* ct_system, GGfloat const size_of_detection_element_x, GGfloat const size_of_detection_element_y, GGfloat const size_of_detection_element_z, char const* unit);
180 
187 extern "C" GGEMS_EXPORT void set_material_name_ggems_ct_system(GGEMSCTSystem* ct_system, char const* material_name);
188 
196 extern "C" GGEMS_EXPORT void set_source_isocenter_distance_ggems_ct_system(GGEMSCTSystem* ct_system, GGfloat const source_isocenter_distance, char const* unit);
197 
205 extern "C" GGEMS_EXPORT void set_source_detector_distance_ggems_ct_system(GGEMSCTSystem* ct_system, GGfloat const source_detector_distance, char const* unit);
206 
216 extern "C" GGEMS_EXPORT void set_rotation_ggems_ct_system(GGEMSCTSystem* ct_system, GGfloat const rx, GGfloat const ry, GGfloat const rz, char const* unit);
217 
225 extern "C" GGEMS_EXPORT void set_threshold_ggems_ct_system(GGEMSCTSystem* ct_system, GGfloat const threshold, char const* unit);
226 
233 extern "C" GGEMS_EXPORT void set_save_ggems_ct_system(GGEMSCTSystem* ct_system, char const* basename);
234 
241 extern "C" GGEMS_EXPORT void store_scatter_ggems_ct_system(GGEMSCTSystem* ct_system, bool const is_scatter);
242 
243 #endif // End of GUARD_GGEMS_NAVIGATORS_GGEMSSYSTEM_HH
GGEMSNavigator::Initialize
virtual void Initialize(void)
Definition: GGEMSNavigator.cc:198
set_size_of_detection_elements_ggems_ct_system
void set_size_of_detection_elements_ggems_ct_system(GGEMSCTSystem *ct_system, GGfloat const size_of_detection_element_x, GGfloat const size_of_detection_element_y, GGfloat const size_of_detection_element_z, char const *unit)
set the size of detection element in X, Y, Z
Definition: GGEMSCTSystem.cc:317
set_number_of_modules_ggems_ct_system
void set_number_of_modules_ggems_ct_system(GGEMSCTSystem *ct_system, GGsize const module_x, GGsize const module_y)
set the number of module in X, Y of local axis of detector
Definition: GGEMSCTSystem.cc:290
set_source_detector_distance_ggems_ct_system
void set_source_detector_distance_ggems_ct_system(GGEMSCTSystem *ct_system, GGfloat const source_detector_distance, char const *unit)
set source detector distance (SDD)
Definition: GGEMSCTSystem.cc:344
set_save_ggems_ct_system
void set_save_ggems_ct_system(GGEMSCTSystem *ct_system, char const *basename)
Set the output file and format.
Definition: GGEMSCTSystem.cc:362
GGEMSSystem
Child GGEMS class managing detector system in GGEMS.
Definition: GGEMSSystem.hh:44
set_rotation_ggems_ct_system
void set_rotation_ggems_ct_system(GGEMSCTSystem *ct_system, GGfloat const rx, GGfloat const ry, GGfloat const rz, char const *unit)
Set the rotation of the voxelized phantom around local axis.
Definition: GGEMSCTSystem.cc:353
GGEMSCTSystem::ct_system_type_
std::string ct_system_type_
Definition: GGEMSCTSystem.hh:130
GGsize
#define GGsize
Definition: GGEMSTypes.hh:252
GGEMSSystem::CheckParameters
virtual void CheckParameters(void) const
Definition: GGEMSSystem.cc:124
GGEMSCTSystem::GGEMSCTSystem
GGEMSCTSystem(GGEMSCTSystem const &&ct_system_name)=delete
Avoid copy by rvalue reference.
store_scatter_ggems_ct_system
void store_scatter_ggems_ct_system(GGEMSCTSystem *ct_system, bool const is_scatter)
Set scatter registration flag.
Definition: GGEMSCTSystem.cc:380
set_material_name_ggems_ct_system
void set_material_name_ggems_ct_system(GGEMSCTSystem *ct_system, char const *material_name)
set the material name for detection element
Definition: GGEMSCTSystem.cc:326
set_threshold_ggems_ct_system
void set_threshold_ggems_ct_system(GGEMSCTSystem *ct_system, GGfloat const threshold, char const *unit)
Set the threshold applyied to navigator.
Definition: GGEMSCTSystem.cc:371
set_number_of_detection_elements_ggems_ct_system
void set_number_of_detection_elements_ggems_ct_system(GGEMSCTSystem *ct_system, GGsize const n_detection_element_x, GGsize const n_detection_element_y, GGsize const n_detection_element_z)
set the number of detection element inside a module
Definition: GGEMSCTSystem.cc:308
GGEMSCTSystem::operator=
GGEMSCTSystem & operator=(GGEMSCTSystem const &&ct_system_name)=delete
Avoid copy by rvalue reference.
GGEMSCTSystem
Child GGEMS class managing CT/CBCT detector in GGEMS.
Definition: GGEMSCTSystem.hh:40
GGEMSCTSystem::source_detector_distance_
GGfloat source_detector_distance_
Definition: GGEMSCTSystem.hh:132
GGEMSSystem.hh
Child GGEMS class managing detector system in GGEMS.
set_source_isocenter_distance_ggems_ct_system
void set_source_isocenter_distance_ggems_ct_system(GGEMSCTSystem *ct_system, GGfloat const source_isocenter_distance, char const *unit)
set source isocenter distance (SID)
Definition: GGEMSCTSystem.cc:335
GGEMSCTSystem::GGEMSCTSystem
GGEMSCTSystem(GGEMSCTSystem const &ct_system_name)=delete
Avoid copy by reference.
set_ct_system_type_ggems_ct_system
void set_ct_system_type_ggems_ct_system(GGEMSCTSystem *ct_system, char const *ct_system_type)
set the type of CT system
Definition: GGEMSCTSystem.cc:299
create_ggems_ct_system
GGEMSCTSystem * create_ggems_ct_system(char const *ct_system_name)
Get the GGEMSCTSystem pointer for python user.
Definition: GGEMSCTSystem.cc:281
GGEMSCTSystem::operator=
GGEMSCTSystem & operator=(GGEMSCTSystem const &ct_system_name)=delete
Avoid assignement by reference.
GGfloat
#define GGfloat
Definition: GGEMSTypes.hh:273
GGEMSCTSystem::source_isocenter_distance_
GGfloat source_isocenter_distance_
Definition: GGEMSCTSystem.hh:131