GGEMS  1.1
GPU GEant4-based Monte Carlo Simulations
GGEMSVolume.hh
Go to the documentation of this file.
1 #ifndef GUARD_GGEMS_GEOMETRIES_GGEMSVOLUME_HH
2 #define GUARD_GGEMS_GEOMETRIES_GGEMSVOLUME_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 
35 
40 class GGEMS_EXPORT GGEMSVolume
41 {
42  public:
46  GGEMSVolume(void);
47 
51  virtual ~GGEMSVolume(void);
52 
58  GGEMSVolume(GGEMSVolume const& volume) = delete;
59 
65  GGEMSVolume& operator=(GGEMSVolume const& volume) = delete;
66 
72  GGEMSVolume(GGEMSVolume const&& volume) = delete;
73 
79  GGEMSVolume& operator=(GGEMSVolume const&& volume) = delete;
80 
86  void SetLabelValue(GGfloat const& label_value);
87 
96  void SetPosition(GGfloat const& pos_x, GGfloat const& pos_y, GGfloat const& pos_z, std::string const& unit = "mm");
97 
103  void SetMaterial(std::string const& material);
104 
109  virtual void Initialize(void) = 0;
110 
115  virtual void Draw(void) = 0;
116 
117  protected:
120  cl::Kernel** kernel_draw_volume_;
121 };
122 
123 #endif // End of GUARD_GGEMS_GEOMETRIES_GGEMSVOLUME_HH
GGEMSVolume::kernel_draw_volume_
cl::Kernel ** kernel_draw_volume_
Definition: GGEMSVolume.hh:120
GGEMSVolume
Mother class handle volume.
Definition: GGEMSVolume.hh:41
GGEMSVolume::GGEMSVolume
GGEMSVolume(GGEMSVolume const &volume)=delete
Avoid copy of the class by reference.
GGEMSVolume::label_value_
GGfloat label_value_
Definition: GGEMSVolume.hh:118
GGEMSVolumeCreatorManager.hh
Singleton class generating voxelized volume from analytical volume.
GGfloat3
#define GGfloat3
Definition: GGEMSTypes.hh:275
GGEMSVolume::operator=
GGEMSVolume & operator=(GGEMSVolume const &&volume)=delete
Avoid copy of the class by rvalue reference.
GGEMSVolume::positions_
GGfloat3 positions_
Definition: GGEMSVolume.hh:119
GGEMSVolume::operator=
GGEMSVolume & operator=(GGEMSVolume const &volume)=delete
Avoid assignement of the class by reference.
GGEMSVolume::Draw
virtual void Draw(void)=0
Draw analytical volume in voxelized phantom.
GGEMSVolume::Initialize
virtual void Initialize(void)=0
Initialize the solid and store it in Phantom creator manager.
GGfloat
#define GGfloat
Definition: GGEMSTypes.hh:273
GGEMSVolume::GGEMSVolume
GGEMSVolume(GGEMSVolume const &&volume)=delete
Avoid copy of the class by rvalue reference.