opengate.contrib.spect.genm670 ============================== .. py:module:: opengate.contrib.spect.genm670 Functions --------- .. autoapisummary:: opengate.contrib.spect.genm670.get_collimator opengate.contrib.spect.genm670.add_ge_nm67_fake_spect_head opengate.contrib.spect.genm670.get_orientation_for_CT opengate.contrib.spect.genm670.add_ge_nm67_spect_head opengate.contrib.spect.genm670.distance_to_center_of_crystal opengate.contrib.spect.genm670.add_ge_nm670_spect_box opengate.contrib.spect.genm670.add_ge_nm670_spect_crystal opengate.contrib.spect.genm670.add_ge_nm670_spect_collimator opengate.contrib.spect.genm670.hegp_collimator_repeater opengate.contrib.spect.genm670.megp_collimator_repeater opengate.contrib.spect.genm670.lehr_collimator_repeater opengate.contrib.spect.genm670.UNUSED_megp_collimator_repeater_parametrised opengate.contrib.spect.genm670.add_simplified_digitizer_Tc99m opengate.contrib.spect.genm670.add_digitizer opengate.contrib.spect.genm670.add_digitizer_energy_windows opengate.contrib.spect.genm670.get_volume_position_in_head opengate.contrib.spect.genm670.compute_plane_position_and_distance_to_crystal opengate.contrib.spect.genm670.get_plane_position_and_distance_to_crystal opengate.contrib.spect.genm670.add_fake_table opengate.contrib.spect.genm670.set_head_orientation opengate.contrib.spect.genm670.add_detection_plane_for_arf Module Contents --------------- .. py:function:: get_collimator(rad) .. py:function:: add_ge_nm67_fake_spect_head(sim, name='spect') .. py:function:: get_orientation_for_CT(colli_type, table_shift, radius) .. py:function:: add_ge_nm67_spect_head(sim, name='spect', collimator_type='lehr', debug=False) Collimators: - False : no collimator - lehr : holes length 35 mm, diam 1.5 mm, septal thickness : 0.2 mm - megp : holes length 58 mm, diam 3 mm, septal thickness : 1.05 mm - hegp : holes length 66 mm, diam 4 mm, septal thickness : 1.8 mm Collimator LEHR: Low Energy High Resolution (for Tc99m) Collimator MEGP: Medium Energy General Purpose (for In111, Lu177) Collimator HEGP: High Energy General Purpose (for I131) .. py:function:: distance_to_center_of_crystal(sim, name='spect') .. py:function:: add_ge_nm670_spect_box(sim, name, collimator_type) .. py:function:: add_ge_nm670_spect_crystal(sim, name, lead_cover) .. py:function:: add_ge_nm670_spect_collimator(sim, name, head, collimator_type, debug) Start with default lehr collimator description, then change some parameters for the other types .. py:function:: hegp_collimator_repeater(sim, name, core, debug) .. py:function:: megp_collimator_repeater(sim, name, core, debug) .. py:function:: lehr_collimator_repeater(sim, name, core, debug) .. py:function:: UNUSED_megp_collimator_repeater_parametrised(sim, name, core, debug) # because this volume will be parameterised, we need to prevent # the creation of the physical volume hole.build_physical_volume = False # parameterised holes holep = sim.add_volume('RepeatParametrised', f'{name}_collimator_hole_param') holep.mother = core.name holep.translation = None holep.rotation = None holep.repeated_volume_name = hole.name # number of repetition holep.linear_repeat = [183, 235, 1] if debug: holep.linear_repeat = [10, 10, 1] # translation for each repetition holep.translation = [2.94449 * mm, 1.7 * mm, 0] # starting position holep.start = [-(holep.linear_repeat[0] * holep.translation[0]) / 2.0, -(holep.linear_repeat[1] * holep.translation[1]) / 2.0, 0] .. py:function:: add_simplified_digitizer_Tc99m(sim, crystal_volume_name, output_name, scatter_flag=False) .. py:function:: add_digitizer(sim, crystal_volume_name, channels) .. py:function:: add_digitizer_energy_windows(sim, crystal_volume_name, channels) .. py:function:: get_volume_position_in_head(sim, spect_name, vol_name, pos='max', axis=2) .. py:function:: compute_plane_position_and_distance_to_crystal(collimator_type) .. py:function:: get_plane_position_and_distance_to_crystal(collimator_type) This has been computed with t043_distances or compute_plane_position_and_distance_to_crystal - first : distance from head center to the PSD (translation for the plane) - second: distance from PSD to center of the crystal - third : distance from the head boundary to the PSD (for spect_radius info) .. py:function:: add_fake_table(sim, name='table') Add a patient table (fake) .. py:function:: set_head_orientation(head, collimator_type, radius, gantry_angle=0) .. py:function:: add_detection_plane_for_arf(sim, plane_size, colli_type, radius, gantry_angle=0, det_name=None)