|
GGEMS
1.1
GPU GEant4-based Monte Carlo Simulations
|
Go to the documentation of this file.
41 source_isocenter_distance_(0.0f),
42 source_detector_distance_(0.0f)
44 GGcout(
"GGEMSCTSystem",
"GGEMSCTSystem", 3) <<
"GGEMSCTSystem creating..." <<
GGendl;
46 GGcout(
"GGEMSCTSystem",
"GGEMSCTSystem", 3) <<
"GGEMSCTSystem created!!!" <<
GGendl;
55 GGcout(
"GGEMSCTSystem",
"~GGEMSCTSystem", 3) <<
"GGEMSCTSystem erasing..." <<
GGendl;
57 GGcout(
"GGEMSCTSystem",
"~GGEMSCTSystem", 3) <<
"GGEMSCTSystem erased!!!" <<
GGendl;
73 std::ostringstream oss(std::ostringstream::out);
74 oss <<
"Available CT system types: 'curved' or 'flat'";
103 GGcout(
"GGEMSCTSystem",
"CheckParameters", 3) <<
"Checking the mandatory parameters..." <<
GGendl;
106 std::ostringstream oss(std::ostringstream::out);
107 oss <<
"Available CT system types: 'curved' or 'flat'";
112 std::ostringstream oss(std::ostringstream::out);
113 oss <<
"For CT system, source isocenter distance (SID) has to be > 0.0 mm!!!";
118 std::ostringstream oss(std::ostringstream::out);
119 oss <<
"For CT system, source detector distance (SDD) has to be > 0.0 mm!!!";
140 GGfloat alpha = 2.0f*std::asin(c/rho);
155 GGfloat global_position_x = (px-ox)*std::cos(step_angle) - (py-oy)*std::sin(step_angle) + ox;
156 GGfloat global_position_y = (px-ox)*std::sin(step_angle) + (py-oy)*std::cos(step_angle) + oy;
165 rotation.x = 0.0f; rotation.y = 0.0f; rotation.z = step_angle;
169 position.x = global_position_x; position.y = global_position_y; position.z = global_position_z;
183 GGfloat global_position_y = 0.0f;
184 GGfloat global_position_z = 0.0f;
196 rotation.x = 0.0f; rotation.y = 0.0f; rotation.z = 0.0f;
200 position.x = global_position_x; position.y = global_position_y; position.z = global_position_z;
212 GGcout(
"GGEMSCTSystem",
"Initialize", 3) <<
"Initializing a GGEMS CT system..." <<
GGendl;
319 ct_system->
SetSizeOfDetectionElements(size_of_detection_element_x, size_of_detection_element_y, size_of_detection_element_z, unit);
GGsize GetNumberOfRegisteredSolids(void) const
get the number of current registered solid
virtual void Initialize(void)
Child GGEMS class managing CT/CBCT detector in GGEMS.
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.
void SetCTSystemType(std::string const &ct_system_type)
type of CT system: flat or curved
void SetNumberOfModules(GGsize const &n_module_x, GGsize const &n_module_y)
set the number of module in X, Y of local axis of detector
void CheckParameters(void) const override
virtual void EnableScatter(void)=0
Activate scatter registration.
void set_threshold_ggems_ct_system(GGEMSCTSystem *ct_system, GGfloat const threshold, char const *unit)
Set the threshold applyied to navigator.
void StoreScatter(bool const &is_scatter)
set to true to activate scatter registration
void set_source_isocenter_distance_ggems_ct_system(GGEMSCTSystem *ct_system, GGfloat const source_isocenter_distance, char const *unit)
set source isocenter distance (SID)
void store_scatter_ggems_ct_system(GGEMSCTSystem *ct_system, bool const is_scatter)
Set scatter registration flag.
Child GGEMS class managing detector system in GGEMS.
GGEMS class for solid informations.
GGsize3 number_of_detection_elements_inside_module_xyz_
void InitializeCurvedGeometry(void)
Initialize the curved CT geometry.
GGEMS class for solid box.
std::string ct_system_type_
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
void SetNumberOfDetectionElementsInsideModule(GGsize const &n_detection_element_x, GGsize const &n_detection_element_y, GGsize const &n_detection_element_z)
set the number of detection elements in X and Y and Z
void SetThreshold(GGfloat const &threshold, std::string const &unit="keV")
Set the energy threshold to navigator.
static GGEMSNavigatorManager & GetInstance(void)
Create at first time the Singleton.
virtual void CheckParameters(void) const
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
void EnableTracking(void)
Enabling tracking infos during simulation.
Structure storing the stack of data for solid box.
GGEMS class handling the navigators (detector + phantom) in GGEMS.
GGsize number_activated_devices_
void set_save_ggems_ct_system(GGEMSCTSystem *ct_system, char const *basename)
Set the output file and format.
void SetSolidID(GGsize const &solid_id, GGsize const &thread_index)
set the global solid index
void SetSourceDetectorDistance(GGfloat const &source_detector_distance, std::string const &unit="mm")
set the source detector distance
void Initialize(void) override
Initialize CT system.
GGEMS class for solid box.
void SetPosition(GGfloat3 const &position_xyz)
set a position for solid
virtual void UpdateTransformationMatrix(GGsize const &thread_index)=0
Update transformation matrix for solid object.
GGEMSCTSystem * create_ggems_ct_system(char const *ct_system_name)
Get the GGEMSCTSystem pointer for python user.
void SetMaterialName(std::string const &material_name)
set the name of the material
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")
set the detection elements in each direction
void SetSourceIsocenterDistance(GGfloat const &source_isocenter_distance, std::string const &unit="mm")
set the source isocenter distance
virtual void Initialize(GGEMSMaterials *materials)=0
Initialize solid for geometric navigation.
void SetRotation(GGfloat const &rx, GGfloat const &ry, GGfloat const &rz, std::string const &unit="deg")
Set the rotation of the global navigator around global axis.
GGEMSCTSystem(std::string const &ct_system_name)
GGEMSCTSystem constructor.
~GGEMSCTSystem(void)
GGEMSCTSystem destructor.
#define GGendl
overload C++ std::endl
Structure storing the data for solid box.
GGfloat3 size_of_detection_elements_xyz_
void set_ct_system_type_ggems_ct_system(GGEMSCTSystem *ct_system, char const *ct_system_type)
set the type of CT system
void InitializeFlatGeometry(void)
Initialize the flat CT geometry.
Child GGEMS class managing CT/CBCT detector in GGEMS.
GGfloat source_detector_distance_
void set_source_detector_distance_ggems_ct_system(GGEMSCTSystem *ct_system, GGfloat const source_detector_distance, char const *unit)
set source detector distance (SDD)
void SetRotation(GGfloat3 const &rotation_xyz)
set a rotation for solid
void set_material_name_ggems_ct_system(GGEMSCTSystem *ct_system, char const *material_name)
set the material name for detection element
void StoreOutput(std::string basename)
Storing the basename and format of the output file.
void ThrowException(std::string const &class_name, std::string const &method_name, std::string const &message)
Throw a C++ exception.
GGsize2 number_of_modules_xy_
T DistanceUnit(T const &value, std::string const &unit)
Choose best distance unit.
GGfloat source_isocenter_distance_
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