GGEMS  1.1
GPU GEant4-based Monte Carlo Simulations
GGEMSSystem.hh
Go to the documentation of this file.
1 #ifndef GUARD_GGEMS_SYSTEMS_GGEMSSYSTEM_HH
2 #define GUARD_GGEMS_SYSTEMS_GGEMSSYSTEM_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 
33 #ifdef _MSC_VER
34 #pragma warning(disable: 4251) // Deleting warning exporting STL members!!!
35 #endif
36 
38 
43 class GGEMS_EXPORT GGEMSSystem : public GGEMSNavigator
44 {
45  public:
50  explicit GGEMSSystem(std::string const& system_name);
51 
55  virtual ~GGEMSSystem(void);
56 
62  GGEMSSystem(GGEMSSystem const& system) = delete;
63 
69  GGEMSSystem& operator=(GGEMSSystem const& system) = delete;
70 
76  GGEMSSystem(GGEMSSystem const&& system) = delete;
77 
83  GGEMSSystem& operator=(GGEMSSystem const&& system) = delete;
84 
91  void SetNumberOfModules(GGsize const& n_module_x, GGsize const& n_module_y);
92 
100  void SetNumberOfDetectionElementsInsideModule(GGsize const& n_detection_element_x, GGsize const& n_detection_element_y, GGsize const& n_detection_element_z);
101 
110  void SetSizeOfDetectionElements(GGfloat const& size_of_detection_element_x, GGfloat const& size_of_detection_element_y, GGfloat const& size_of_detection_element_z, std::string const& unit = "mm");
111 
120  void SetGlobalPosition(GGfloat const& global_position_x, GGfloat const& global_position_y, GGfloat const& global_position_z, std::string const& unit = "mm");
121 
127  void SetMaterialName(std::string const& material_name);
128 
134  void StoreScatter(bool const& is_scatter);
135 
140  void SaveResults(void);
141 
142  protected:
147  virtual void CheckParameters(void) const;
148 
149  protected:
153  bool is_scatter_;
154 };
155 
156 #endif // End of GUARD_GGEMS_SYSTEMS_GGEMSSYSTEM_HH
GGEMSSystem::GGEMSSystem
GGEMSSystem(GGEMSSystem const &system)=delete
Avoid copy by reference.
GGsize3_t
Structure storing 3 GGsize values.
Definition: GGEMSTypes.hh:267
GGEMSSystem::SetGlobalPosition
void SetGlobalPosition(GGfloat const &global_position_x, GGfloat const &global_position_y, GGfloat const &global_position_z, std::string const &unit="mm")
set the global position of the system
GGEMSSystem::is_scatter_
bool is_scatter_
Definition: GGEMSSystem.hh:153
GGEMSSystem
Child GGEMS class managing detector system in GGEMS.
Definition: GGEMSSystem.hh:44
GGEMSSystem::number_of_detection_elements_inside_module_xyz_
GGsize3 number_of_detection_elements_inside_module_xyz_
Definition: GGEMSSystem.hh:151
GGEMSSystem::operator=
GGEMSSystem & operator=(GGEMSSystem const &&system)=delete
Avoid copy by rvalue reference.
GGEMSNavigator::CheckParameters
virtual void CheckParameters(void) const
Definition: GGEMSNavigator.cc:175
GGsize
#define GGsize
Definition: GGEMSTypes.hh:252
GGEMSNavigator::SaveResults
virtual void SaveResults(void)=0
save all results from solid
GGfloat3
#define GGfloat3
Definition: GGEMSTypes.hh:275
GGsize2_t
Structure storing 2 GGsize values.
Definition: GGEMSTypes.hh:258
GGEMSNavigator
Parent GGEMS class for navigator.
Definition: GGEMSNavigator.hh:55
GGEMSSystem::GGEMSSystem
GGEMSSystem(GGEMSSystem const &&system)=delete
Avoid copy by rvalue reference.
GGEMSSystem::size_of_detection_elements_xyz_
GGfloat3 size_of_detection_elements_xyz_
Definition: GGEMSSystem.hh:152
GGEMSNavigator.hh
Parent GGEMS class for navigation.
GGEMSSystem::operator=
GGEMSSystem & operator=(GGEMSSystem const &system)=delete
Avoid assignement by reference.
GGEMSSystem::number_of_modules_xy_
GGsize2 number_of_modules_xy_
Definition: GGEMSSystem.hh:150
GGfloat
#define GGfloat
Definition: GGEMSTypes.hh:273