|
GGEMS
1.1
GPU GEant4-based Monte Carlo Simulations
|
Go to the documentation of this file.
44 is_processes_print_tables_(false)
46 GGcout(
"GGEMSProcessesManager",
"GGEMSProcessesManager", 3) <<
"GGEMSProcessesManager creating..." <<
GGendl;
48 GGcout(
"GGEMSProcessesManager",
"GGEMSProcessesManager", 3) <<
"GGEMSProcessesManager created!!!" <<
GGendl;
57 GGcout(
"GGEMSProcessesManager",
"~GGEMSProcessesManager", 3) <<
"GGEMSProcessesManager erasing..." <<
GGendl;
59 GGcout(
"GGEMSProcessesManager",
"~GGEMSProcessesManager", 3) <<
"GGEMSProcessesManager erased!!!" <<
GGendl;
68 GGcout(
"GGEMSProcessesManager",
"Clean", 3) <<
"GGEMSProcessesManager cleaning..." <<
GGendl;
70 GGcout(
"GGEMSProcessesManager",
"Clean", 3) <<
"GGEMSProcessesManager cleaned!!!" <<
GGendl;
83 GGwarn(
"GGEMSProcessesManager",
"SetCrossSectionTableNumberOfBins", 0) <<
"Warning!!! Number of bins in the cross section table > "
100 std::ostringstream oss(std::ostringstream::out);
116 std::ostringstream oss(std::ostringstream::out);
131 if (phantom_name ==
"all") {
134 ((navigator_manager.
GetNavigators())[i])->GetCrossSections()->AddProcess(process_name, particle_name);
151 GGcout(
"GGEMSProcessesManager",
"PrintInfos", 0) <<
"Cross section table parameters:" <<
GGendl;
152 GGcout(
"GGEMSProcessesManager",
"PrintInfos", 0) <<
"-------------------------------" <<
GGendl;
155 GGcout(
"GGEMSProcessesManager",
"PrintInfos", 0) <<
GGendl;
159 GGcout(
"GGEMSProcessesManager",
"PrintInfos", 0) <<
"Activated processes in phantom: " << ((navigator_manager.
GetNavigators())[i])->GetNavigatorName() <<
GGendl;
163 GGcout(
"GGEMSProcessesManager",
"PrintInfos", 0) <<
GGendl;
173 GGcout(
"GGEMSProcessesManager",
"PrintAvailableProcesses", 0) <<
"Available processes:" <<
GGendl;
174 GGcout(
"GGEMSProcessesManager",
"PrintAvailableProcesses", 0) <<
"--------------------" <<
GGendl;
175 GGcout(
"GGEMSProcessesManager",
"PrintAvailableProcesses", 0) <<
" * 'Compton' scattering (Klein-Nishina model without atomic shell effect)" <<
GGendl;
176 GGcout(
"GGEMSProcessesManager",
"PrintAvailableProcesses", 0) <<
" - 'gamma' incident particle" <<
GGendl;
177 GGcout(
"GGEMSProcessesManager",
"PrintAvailableProcesses", 0) <<
" - 'e-' secondary particle" <<
GGendl;
178 GGcout(
"GGEMSProcessesManager",
"PrintAvailableProcesses", 0) <<
GGendl;
179 GGcout(
"GGEMSProcessesManager",
"PrintAvailableProcesses", 0) <<
" * 'Photoelectric' effect (Sandia table)" <<
GGendl;
180 GGcout(
"GGEMSProcessesManager",
"PrintAvailableProcesses", 0) <<
" - 'gamma' incident particle" <<
GGendl;
181 GGcout(
"GGEMSProcessesManager",
"PrintAvailableProcesses", 0) <<
" - 'e-' secondary particle" <<
GGendl;
182 GGcout(
"GGEMSProcessesManager",
"PrintAvailableProcesses", 0) <<
GGendl;
183 GGcout(
"GGEMSProcessesManager",
"PrintAvailableProcesses", 0) <<
" * 'Rayleigh' scattering (Livermore model)" <<
GGendl;
184 GGcout(
"GGEMSProcessesManager",
"PrintAvailableProcesses", 0) <<
" - 'gamma' incident particle" <<
GGendl;
211 processes_manager->
AddProcess(process_name, particle_name, phantom_name);
GGEMS class handling the navigators (detector + phantom) in GGEMS.
#define MAX_CROSS_SECTION_TABLE_NUMBER_BINS
void PrintInfos(void) const
Print all infos about processes.
void set_cross_section_table_minimum_energy_processes_manager(GGEMSProcessesManager *processes_manager, GGfloat const energy, char const *unit)
set the minimum energy in the cross section table
GGEMS class handling the cross sections tables.
void add_process_processes_manager(GGEMSProcessesManager *processes_manager, char const *process_name, char const *particle_name, char const *phantom_name)
add a process for a specific phantom or all the phantom
GGsize GetNumberOfNavigators(void) const
Get the number of navigators.
__constant GGfloat CROSS_SECTION_TABLE_ENERGY_MAX
cl::Buffer * GetCrossSections(GGsize const &thread_index) const
return the pointer to OpenCL buffer storing cross sections
GGEMS class handling the cross sections tables.
GGEMS class managing the processes in GGEMS simulation.
std::string GetProcessName(void) const
get the name of the process
GGEMSCrossSections * GetCrossSections(void) const
get the pointer on cross sections
std::string BestEnergyUnit(T const &value)
Choose best energy unit, mega is the reference.
GGfloat cross_section_table_min_energy_
GGEMS mother class for electromagnectic process.
static GGEMSNavigatorManager & GetInstance(void)
Create at first time the Singleton.
__constant GGfloat CROSS_SECTION_TABLE_ENERGY_MIN
void AddProcess(std::string const &process_name, std::string const &particle_type, bool const &is_secondary=false)
add a process to the GGEMS simulation
GGEMSProcessesManager * get_instance_processes_manager(void)
Get the GGEMSProcessesManager pointer for python user.
void set_cross_section_table_maximum_energy_processes_manager(GGEMSProcessesManager *processes_manager, GGfloat const energy, char const *unit)
set the maximum energy in the cross section table
GGEMS class handling the navigators (detector + phantom) in GGEMS.
void PrintAvailableProcesses(void) const
Print all infos about available processes.
GGEMSProcessesManager(void)
Unable the constructor for the user.
void print_available_processes_manager(GGEMSProcessesManager *processes_manager)
print infos about available processes
~GGEMSProcessesManager(void)
Unable the destructor for the user.
GGEMSNavigator * GetNavigator(std::string const &navigator_name) const
get the navigator by the name
void PrintPhysicTables(bool const &is_processes_print_tables)
print physic tables to screen
GGEMS class managing the processes in GGEMS simulation.
void Clean(void)
clean OpenCL data if necessary
#define GGendl
overload C++ std::endl
__constant GGshort CROSS_SECTION_TABLE_NUMBER_BINS
void AddProcess(std::string const &process_name, std::string const &particle_name, std::string const &phantom_name)
add a process for a specific phantom or all the phantom
GGEMSNavigator ** GetNavigators(void) const
get the list of navigators
void SetCrossSectionTableMinimumEnergy(GGfloat const &energy, char const *unit="keV")
set the minimum energy in the cross section table
T EnergyUnit(T const &value, std::string const &unit)
Choose best energy unit.
void SetCrossSectionTableNumberOfBins(GGsize const &number_of_bins)
set the number of bins in the cross section table
void SetCrossSectionTableMaximumEnergy(GGfloat const &energy, char const *unit="keV")
set the maximum energy in the cross section table
GGsize cross_section_table_number_of_bins_
GGfloat cross_section_table_max_energy_
void print_tables_processes_manager(GGEMSProcessesManager *processes_manager, bool const is_processes_print_tables)
print infos about physic tables
GGsize GetNumberOfActivatedEMProcesses(void) const
get the number of activated processes
void set_cross_section_table_number_of_bins_processes_manager(GGEMSProcessesManager *processes_manager, GGsize const number_of_bins)
set the number of the bins in the cross section table
bool is_processes_print_tables_
GGEMSEMProcess ** GetEMProcessesList(void) const
get the pointer on activated process
static GGEMSProcessesManager & GetInstance(void)
Create at first time the Singleton.
void print_infos_processes_manager(GGEMSProcessesManager *processes_manager)
print infos about processes
void ThrowException(std::string const &class_name, std::string const &method_name, std::string const &message)
Throw a C++ exception.