gammasimtools 0.21.0__py3-none-any.whl → 0.22.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gammasimtools-0.21.0.dist-info → gammasimtools-0.22.0.dist-info}/METADATA +2 -3
- {gammasimtools-0.21.0.dist-info → gammasimtools-0.22.0.dist-info}/RECORD +311 -295
- {gammasimtools-0.21.0.dist-info → gammasimtools-0.22.0.dist-info}/entry_points.txt +2 -1
- simtools/_version.py +2 -2
- simtools/applications/calculate_incident_angles.py +1 -4
- simtools/applications/convert_all_model_parameters_from_simtel.py +1 -2
- simtools/applications/convert_model_parameter_from_simtel.py +0 -1
- simtools/applications/db_generate_compound_indexes.py +3 -16
- simtools/applications/db_upload_model_repository.py +122 -0
- simtools/applications/derive_psf_parameters.py +13 -3
- simtools/applications/docs_produce_array_element_report.py +1 -1
- simtools/applications/docs_produce_calibration_reports.py +1 -1
- simtools/applications/docs_produce_model_parameter_reports.py +1 -1
- simtools/applications/docs_produce_simulation_configuration_report.py +1 -1
- simtools/applications/generate_corsika_histograms.py +1 -1
- simtools/applications/maintain_simulation_model_add_production.py +7 -31
- simtools/applications/merge_tables.py +1 -1
- simtools/applications/plot_array_layout.py +1 -2
- simtools/applications/print_version.py +1 -1
- simtools/applications/production_derive_statistics.py +1 -2
- simtools/applications/production_generate_grid.py +1 -1
- simtools/applications/simulate_flasher.py +74 -72
- simtools/applications/simulate_illuminator.py +52 -186
- simtools/applications/{simulate_calibration_events.py → simulate_pedestals.py} +9 -55
- simtools/applications/submit_model_parameter_from_external.py +0 -1
- simtools/applications/validate_camera_efficiency.py +0 -1
- simtools/applications/validate_camera_fov.py +1 -2
- simtools/applications/validate_cumulative_psf.py +2 -3
- simtools/applications/validate_file_using_schema.py +20 -12
- simtools/applications/validate_optics.py +2 -2
- simtools/camera/camera_efficiency.py +8 -11
- simtools/configuration/commandline_parser.py +1 -7
- simtools/configuration/configurator.py +0 -2
- simtools/corsika/corsika_config.py +9 -11
- simtools/corsika/corsika_histograms.py +1 -1
- simtools/data_model/model_data_writer.py +87 -25
- simtools/data_model/schema.py +61 -2
- simtools/data_model/validate_data.py +1 -1
- simtools/db/db_handler.py +58 -37
- simtools/db/db_model_upload.py +210 -5
- simtools/io/io_handler.py +31 -83
- simtools/job_execution/job_manager.py +45 -0
- simtools/layout/array_layout_utils.py +1 -5
- simtools/model/array_model.py +93 -42
- simtools/model/model_parameter.py +20 -9
- simtools/model/model_repository.py +139 -106
- simtools/model/model_utils.py +21 -6
- simtools/model/telescope_model.py +20 -0
- simtools/production_configuration/derive_corsika_limits.py +1 -1
- simtools/ray_tracing/incident_angles.py +7 -7
- simtools/ray_tracing/mirror_panel_psf.py +1 -1
- simtools/ray_tracing/psf_parameter_optimisation.py +180 -73
- simtools/ray_tracing/ray_tracing.py +1 -3
- simtools/reporting/docs_read_parameters.py +171 -101
- simtools/resources/array_elements.yml +26 -0
- simtools/runners/corsika_simtel_runner.py +11 -17
- simtools/runners/runner_services.py +5 -6
- simtools/runners/simtools_runner.py +0 -2
- simtools/schemas/application_workflow.metaschema.yml +1 -1
- simtools/schemas/common_definitions.schema.yml +39 -0
- simtools/schemas/model_parameter.metaschema.yml +19 -13
- simtools/schemas/model_parameter_and_data_schema.metaschema.yml +6 -12
- simtools/schemas/model_parameters/adjust_gain.schema.yml +0 -5
- simtools/schemas/model_parameters/altitude.schema.yml +0 -5
- simtools/schemas/model_parameters/array_coordinates.schema.yml +0 -5
- simtools/schemas/model_parameters/array_coordinates_UTM.schema.yml +0 -5
- simtools/schemas/model_parameters/array_element_position_ground.schema.yml +0 -7
- simtools/schemas/model_parameters/array_element_position_utm.schema.yml +0 -7
- simtools/schemas/model_parameters/array_layouts.schema.yml +0 -5
- simtools/schemas/model_parameters/array_triggers.schema.yml +0 -5
- simtools/schemas/model_parameters/array_window.schema.yml +0 -7
- simtools/schemas/model_parameters/asum_clipping.schema.yml +0 -3
- simtools/schemas/model_parameters/asum_offset.schema.yml +0 -7
- simtools/schemas/model_parameters/asum_shaping.schema.yml +0 -7
- simtools/schemas/model_parameters/asum_threshold.schema.yml +0 -7
- simtools/schemas/model_parameters/atmospheric_profile.schema.yml +0 -5
- simtools/schemas/model_parameters/atmospheric_transmission.schema.yml +0 -5
- simtools/schemas/model_parameters/axes_offsets.schema.yml +0 -7
- simtools/schemas/model_parameters/calibration_devices.schema.yml +30 -0
- simtools/schemas/model_parameters/camera_body_diameter.schema.yml +0 -7
- simtools/schemas/model_parameters/camera_body_shape.schema.yml +0 -7
- simtools/schemas/model_parameters/camera_config_file.schema.yml +0 -7
- simtools/schemas/model_parameters/camera_config_rotate.schema.yml +0 -7
- simtools/schemas/model_parameters/camera_degraded_efficiency.schema.yml +0 -7
- simtools/schemas/model_parameters/camera_degraded_map.schema.yml +0 -7
- simtools/schemas/model_parameters/camera_depth.schema.yml +0 -7
- simtools/schemas/model_parameters/camera_filter.schema.yml +0 -7
- simtools/schemas/model_parameters/camera_filter_incidence_angle.schema.yml +0 -3
- simtools/schemas/model_parameters/camera_pixels.schema.yml +0 -7
- simtools/schemas/model_parameters/camera_transmission.schema.yml +0 -7
- simtools/schemas/model_parameters/channels_per_chip.schema.yml +0 -7
- simtools/schemas/model_parameters/correct_nsb_spectrum_to_telescope_altitude.schema.yml +0 -7
- simtools/schemas/model_parameters/corsika_observation_level.schema.yml +0 -5
- simtools/schemas/model_parameters/dark_events.schema.yml +4 -3
- simtools/schemas/model_parameters/default_trigger.schema.yml +0 -7
- simtools/schemas/model_parameters/design_model.schema.yml +0 -7
- simtools/schemas/model_parameters/disc_ac_coupled.schema.yml +0 -7
- simtools/schemas/model_parameters/disc_bins.schema.yml +0 -7
- simtools/schemas/model_parameters/disc_start.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_amplitude.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_fall_time.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_gate_length.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_hysteresis.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_output_amplitude.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_output_var_percent.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_pulse_shape.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_rise_time.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_scale_threshold.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_sigsum_over_threshold.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_threshold.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_time_over_threshold.schema.yml +1 -9
- simtools/schemas/model_parameters/discriminator_var_gate_length.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_var_sigsum_over_threshold.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_var_threshold.schema.yml +0 -7
- simtools/schemas/model_parameters/discriminator_var_time_over_threshold.schema.yml +0 -7
- simtools/schemas/model_parameters/dish_shape_length.schema.yml +0 -5
- simtools/schemas/model_parameters/dsum_clipping.schema.yml +1 -5
- simtools/schemas/model_parameters/dsum_ignore_below.schema.yml +0 -3
- simtools/schemas/model_parameters/dsum_offset.schema.yml +0 -3
- simtools/schemas/model_parameters/dsum_pedsub.schema.yml +0 -3
- simtools/schemas/model_parameters/dsum_pre_clipping.schema.yml +0 -3
- simtools/schemas/model_parameters/dsum_prescale.schema.yml +0 -3
- simtools/schemas/model_parameters/dsum_presum_max.schema.yml +0 -3
- simtools/schemas/model_parameters/dsum_presum_shift.schema.yml +0 -3
- simtools/schemas/model_parameters/dsum_shaping.schema.yml +0 -3
- simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml +0 -3
- simtools/schemas/model_parameters/dsum_threshold.schema.yml +2 -12
- simtools/schemas/model_parameters/dsum_zero_clip.schema.yml +0 -3
- simtools/schemas/model_parameters/effective_focal_length.schema.yml +0 -7
- simtools/schemas/model_parameters/epsg_code.schema.yml +0 -5
- simtools/schemas/model_parameters/fadc_ac_coupled.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_amplitude.schema.yml +2 -9
- simtools/schemas/model_parameters/fadc_bins.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_compensate_pedestal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_dev_pedestal.schema.yml +0 -2
- simtools/schemas/model_parameters/fadc_err_compensate_pedestal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_err_pedestal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_lg_amplitude.schema.yml +2 -9
- simtools/schemas/model_parameters/fadc_lg_compensate_pedestal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_lg_dev_pedestal.schema.yml +0 -2
- simtools/schemas/model_parameters/fadc_lg_err_compensate_pedestal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_lg_err_pedestal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_lg_max_signal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_lg_max_sum.schema.yml +0 -2
- simtools/schemas/model_parameters/fadc_lg_noise.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_lg_pedestal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_lg_sensitivity.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_lg_sysvar_pedestal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_lg_var_pedestal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_lg_var_sensitivity.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_long_event_threshold.schema.yml +0 -3
- simtools/schemas/model_parameters/fadc_long_sum_bins.schema.yml +0 -3
- simtools/schemas/model_parameters/fadc_long_sum_offset.schema.yml +0 -3
- simtools/schemas/model_parameters/fadc_max_signal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_max_sum.schema.yml +0 -2
- simtools/schemas/model_parameters/fadc_mhz.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_noise.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_pedestal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_pulse_shape.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_sensitivity.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_sum_bins.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_sum_offset.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_sysvar_pedestal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_var_pedestal.schema.yml +0 -7
- simtools/schemas/model_parameters/fadc_var_sensitivity.schema.yml +0 -7
- simtools/schemas/model_parameters/fake_mirror_list.schema.yml +0 -3
- simtools/schemas/model_parameters/flasher_angular_distribution.schema.yml +32 -0
- simtools/schemas/model_parameters/flasher_angular_distribution_width.schema.yml +32 -0
- simtools/schemas/model_parameters/flasher_bunch_size.schema.yml +28 -0
- simtools/schemas/model_parameters/flasher_external_trigger.schema.yml +32 -0
- simtools/schemas/model_parameters/flasher_photons.schema.yml +34 -0
- simtools/schemas/model_parameters/flasher_position.schema.yml +43 -0
- simtools/schemas/model_parameters/flasher_pulse_exp_decay.schema.yml +29 -0
- simtools/schemas/model_parameters/flasher_pulse_offset.schema.yml +35 -0
- simtools/schemas/model_parameters/flasher_pulse_shape.schema.yml +30 -0
- simtools/schemas/model_parameters/flasher_pulse_width.schema.yml +32 -0
- simtools/schemas/model_parameters/flasher_type.schema.yml +28 -0
- simtools/schemas/model_parameters/flasher_var_photons.schema.yml +31 -0
- simtools/schemas/model_parameters/flasher_wavelength.schema.yml +33 -0
- simtools/schemas/model_parameters/flatfielding.schema.yml +0 -7
- simtools/schemas/model_parameters/focal_length.schema.yml +0 -7
- simtools/schemas/model_parameters/focal_surface_parameters.schema.yml +0 -3
- simtools/schemas/model_parameters/focal_surface_ref_radius.schema.yml +0 -3
- simtools/schemas/model_parameters/focus_offset.schema.yml +0 -7
- simtools/schemas/model_parameters/gain_variation.schema.yml +0 -7
- simtools/schemas/model_parameters/geomag_horizontal.schema.yml +2 -7
- simtools/schemas/model_parameters/geomag_rotation.schema.yml +2 -7
- simtools/schemas/model_parameters/geomag_vertical.schema.yml +2 -7
- simtools/schemas/model_parameters/hg_lg_variation.schema.yml +0 -5
- simtools/schemas/model_parameters/iobuf_maximum.schema.yml +0 -7
- simtools/schemas/model_parameters/iobuf_output_maximum.schema.yml +0 -7
- simtools/schemas/model_parameters/laser_events.schema.yml +4 -3
- simtools/schemas/model_parameters/laser_external_trigger.schema.yml +4 -3
- simtools/schemas/model_parameters/laser_photons.schema.yml +4 -3
- simtools/schemas/model_parameters/laser_pulse_exptime.schema.yml +4 -3
- simtools/schemas/model_parameters/laser_pulse_offset.schema.yml +4 -3
- simtools/schemas/model_parameters/laser_pulse_sigtime.schema.yml +4 -3
- simtools/schemas/model_parameters/laser_pulse_twidth.schema.yml +4 -3
- simtools/schemas/model_parameters/laser_var_photons.schema.yml +4 -3
- simtools/schemas/model_parameters/laser_wavelength.schema.yml +4 -3
- simtools/schemas/model_parameters/led_events.schema.yml +4 -3
- simtools/schemas/model_parameters/led_photons.schema.yml +4 -3
- simtools/schemas/model_parameters/led_pulse_offset.schema.yml +4 -3
- simtools/schemas/model_parameters/led_pulse_sigtime.schema.yml +4 -3
- simtools/schemas/model_parameters/led_var_photons.schema.yml +4 -3
- simtools/schemas/model_parameters/lightguide_efficiency_vs_incidence_angle.schema.yml +0 -7
- simtools/schemas/model_parameters/lightguide_efficiency_vs_wavelength.schema.yml +0 -7
- simtools/schemas/model_parameters/min_photoelectrons.schema.yml +0 -7
- simtools/schemas/model_parameters/min_photons.schema.yml +0 -7
- simtools/schemas/model_parameters/mirror_align_random_distance.schema.yml +0 -5
- simtools/schemas/model_parameters/mirror_align_random_horizontal.schema.yml +0 -7
- simtools/schemas/model_parameters/mirror_align_random_vertical.schema.yml +0 -7
- simtools/schemas/model_parameters/mirror_class.schema.yml +2 -9
- simtools/schemas/model_parameters/mirror_degraded_reflection.schema.yml +0 -7
- simtools/schemas/model_parameters/mirror_focal_length.schema.yml +0 -5
- simtools/schemas/model_parameters/mirror_list.schema.yml +0 -7
- simtools/schemas/model_parameters/mirror_offset.schema.yml +0 -7
- simtools/schemas/model_parameters/mirror_reflection_random_angle.schema.yml +0 -7
- simtools/schemas/model_parameters/mirror_reflectivity.schema.yml +0 -7
- simtools/schemas/model_parameters/multiplicity_offset.schema.yml +0 -7
- simtools/schemas/model_parameters/muon_mono_threshold.schema.yml +0 -7
- simtools/schemas/model_parameters/nsb_autoscale_airmass.schema.yml +0 -7
- simtools/schemas/model_parameters/nsb_gain_drop_scale.schema.yml +0 -3
- simtools/schemas/model_parameters/nsb_offaxis.schema.yml +0 -7
- simtools/schemas/model_parameters/nsb_pixel_rate.schema.yml +0 -7
- simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml +0 -5
- simtools/schemas/model_parameters/nsb_reference_value.schema.yml +0 -5
- simtools/schemas/model_parameters/nsb_scaling_factor.schema.yml +0 -5
- simtools/schemas/model_parameters/nsb_sky_map.schema.yml +0 -5
- simtools/schemas/model_parameters/nsb_spectrum.schema.yml +0 -5
- simtools/schemas/model_parameters/num_gains.schema.yml +0 -7
- simtools/schemas/model_parameters/only_triggered_telescopes.schema.yml +0 -7
- simtools/schemas/model_parameters/optics_properties.schema.yml +0 -7
- simtools/schemas/model_parameters/parabolic_dish.schema.yml +0 -3
- simtools/schemas/model_parameters/pedestal_events.schema.yml +4 -7
- simtools/schemas/model_parameters/photon_delay.schema.yml +0 -7
- simtools/schemas/model_parameters/photons_per_run.schema.yml +4 -4
- simtools/schemas/model_parameters/pixel_cells.schema.yml +0 -3
- simtools/schemas/model_parameters/pixels_parallel.schema.yml +0 -3
- simtools/schemas/model_parameters/pixeltrg_time_step.schema.yml +0 -7
- simtools/schemas/model_parameters/pm_average_gain.schema.yml +0 -5
- simtools/schemas/model_parameters/pm_collection_efficiency.schema.yml +0 -5
- simtools/schemas/model_parameters/pm_gain_index.schema.yml +0 -5
- simtools/schemas/model_parameters/pm_photoelectron_spectrum.schema.yml +0 -7
- simtools/schemas/model_parameters/pm_transit_time.schema.yml +4 -9
- simtools/schemas/model_parameters/pm_voltage_variation.schema.yml +0 -5
- simtools/schemas/model_parameters/primary_mirror_degraded_map.schema.yml +0 -7
- simtools/schemas/model_parameters/primary_mirror_diameter.schema.yml +0 -3
- simtools/schemas/model_parameters/primary_mirror_hole_diameter.schema.yml +0 -3
- simtools/schemas/model_parameters/primary_mirror_incidence_angle.schema.yml +0 -3
- simtools/schemas/model_parameters/primary_mirror_parameters.schema.yml +0 -3
- simtools/schemas/model_parameters/primary_mirror_ref_radius.schema.yml +0 -3
- simtools/schemas/model_parameters/primary_mirror_segmentation.schema.yml +0 -3
- simtools/schemas/model_parameters/qe_variation.schema.yml +0 -7
- simtools/schemas/model_parameters/quantum_efficiency.schema.yml +0 -7
- simtools/schemas/model_parameters/random_focal_length.schema.yml +2 -7
- simtools/schemas/model_parameters/random_generator.schema.yml +0 -7
- simtools/schemas/model_parameters/random_mono_probability.schema.yml +0 -7
- simtools/schemas/model_parameters/reference_point_altitude.schema.yml +0 -5
- simtools/schemas/model_parameters/reference_point_latitude.schema.yml +0 -5
- simtools/schemas/model_parameters/reference_point_longitude.schema.yml +0 -5
- simtools/schemas/model_parameters/reference_point_utm_east.schema.yml +0 -5
- simtools/schemas/model_parameters/reference_point_utm_north.schema.yml +0 -5
- simtools/schemas/model_parameters/sampled_output.schema.yml +0 -7
- simtools/schemas/model_parameters/save_pe_with_amplitude.schema.yml +0 -7
- simtools/schemas/model_parameters/secondary_mirror_baffle.schema.yml +0 -3
- simtools/schemas/model_parameters/secondary_mirror_degraded_map.schema.yml +0 -3
- simtools/schemas/model_parameters/secondary_mirror_degraded_reflection.schema.yml +0 -3
- simtools/schemas/model_parameters/secondary_mirror_diameter.schema.yml +0 -3
- simtools/schemas/model_parameters/secondary_mirror_hole_diameter.schema.yml +0 -3
- simtools/schemas/model_parameters/secondary_mirror_incidence_angle.schema.yml +0 -3
- simtools/schemas/model_parameters/secondary_mirror_parameters.schema.yml +0 -3
- simtools/schemas/model_parameters/secondary_mirror_ref_radius.schema.yml +0 -3
- simtools/schemas/model_parameters/secondary_mirror_reflectivity.schema.yml +0 -3
- simtools/schemas/model_parameters/secondary_mirror_segmentation.schema.yml +0 -3
- simtools/schemas/model_parameters/secondary_mirror_shadow_diameter.schema.yml +0 -3
- simtools/schemas/model_parameters/secondary_mirror_shadow_offset.schema.yml +0 -3
- simtools/schemas/model_parameters/stars.schema.yml +0 -5
- simtools/schemas/model_parameters/store_photoelectrons.schema.yml +0 -7
- simtools/schemas/model_parameters/tailcut_scale.schema.yml +0 -7
- simtools/schemas/model_parameters/telescope_axis_height.schema.yml +0 -7
- simtools/schemas/model_parameters/telescope_random_angle.schema.yml +0 -7
- simtools/schemas/model_parameters/telescope_random_error.schema.yml +0 -7
- simtools/schemas/model_parameters/telescope_sphere_radius.schema.yml +0 -7
- simtools/schemas/model_parameters/telescope_transmission.schema.yml +0 -7
- simtools/schemas/model_parameters/teltrig_min_sigsum.schema.yml +0 -7
- simtools/schemas/model_parameters/teltrig_min_time.schema.yml +0 -7
- simtools/schemas/model_parameters/transit_time_calib_error.schema.yml +0 -7
- simtools/schemas/model_parameters/transit_time_compensate_error.schema.yml +0 -7
- simtools/schemas/model_parameters/transit_time_compensate_step.schema.yml +0 -7
- simtools/schemas/model_parameters/transit_time_error.schema.yml +0 -7
- simtools/schemas/model_parameters/transit_time_jitter.schema.yml +0 -7
- simtools/schemas/model_parameters/trigger_current_limit.schema.yml +0 -7
- simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml +0 -7
- simtools/schemas/model_parameters/trigger_pixels.schema.yml +0 -7
- simtools/schemas/production_tables.schema.yml +8 -8
- simtools/schemas/simulation_models_info.schema.yml +78 -0
- simtools/simtel/simtel_config_writer.py +87 -13
- simtools/simtel/simulator_array.py +44 -74
- simtools/simtel/simulator_light_emission.py +336 -629
- simtools/simtel/simulator_ray_tracing.py +2 -2
- simtools/simulator.py +45 -14
- simtools/testing/configuration.py +4 -2
- simtools/testing/sim_telarray_metadata.py +4 -4
- simtools/utils/geometry.py +34 -0
- simtools/version.py +22 -0
- simtools/visualization/plot_psf.py +163 -61
- simtools/visualization/plot_simtel_events.py +1 -1
- simtools/model/flasher_model.py +0 -106
- {gammasimtools-0.21.0.dist-info → gammasimtools-0.22.0.dist-info}/WHEEL +0 -0
- {gammasimtools-0.21.0.dist-info → gammasimtools-0.22.0.dist-info}/licenses/LICENSE +0 -0
- {gammasimtools-0.21.0.dist-info → gammasimtools-0.22.0.dist-info}/top_level.txt +0 -0
|
@@ -96,6 +96,8 @@ class SimtelConfigWriter:
|
|
|
96
96
|
"""
|
|
97
97
|
self._logger.debug(f"Writing telescope config file {config_file_path}")
|
|
98
98
|
|
|
99
|
+
simtel_par = self._get_parameters_for_sim_telarray(parameters, config_file_path)
|
|
100
|
+
|
|
99
101
|
with open(config_file_path, "w", encoding="utf-8") as file:
|
|
100
102
|
self._write_header(file, "TELESCOPE CONFIGURATION FILE")
|
|
101
103
|
|
|
@@ -104,22 +106,94 @@ class SimtelConfigWriter:
|
|
|
104
106
|
file.write(f" echo Configuration for {telescope_name} - TELESCOPE $(TELESCOPE)\n")
|
|
105
107
|
file.write("#endif\n\n")
|
|
106
108
|
|
|
107
|
-
for
|
|
108
|
-
simtel_name
|
|
109
|
-
names.get_simulation_software_name_from_parameter_name(
|
|
110
|
-
par, software_name="sim_telarray"
|
|
111
|
-
),
|
|
112
|
-
value["value"],
|
|
113
|
-
config_file_path,
|
|
114
|
-
None,
|
|
115
|
-
)
|
|
116
|
-
if simtel_name:
|
|
117
|
-
file.write(f"{simtel_name} = {self._get_value_string_for_simtel(value)}\n")
|
|
118
|
-
if "stars" not in parameters: # sim_telarray requires 'stars' to be set
|
|
119
|
-
file.write("stars = none\n")
|
|
109
|
+
for simtel_name, simtel_value in simtel_par.items():
|
|
110
|
+
file.write(f"{simtel_name} = {self._get_value_string_for_simtel(simtel_value)}\n")
|
|
120
111
|
for meta in self._get_sim_telarray_metadata("telescope", parameters, telescope_name):
|
|
121
112
|
file.write(f"{meta}\n")
|
|
122
113
|
|
|
114
|
+
def _get_parameters_for_sim_telarray(self, parameters, config_file_path):
|
|
115
|
+
"""
|
|
116
|
+
Convert parameter dictionary to sim_telarray configuration file format.
|
|
117
|
+
|
|
118
|
+
Accounts for differences between the data models for sim_telarray configuration
|
|
119
|
+
and the simulation models.
|
|
120
|
+
|
|
121
|
+
Parameters
|
|
122
|
+
----------
|
|
123
|
+
parameters: dict
|
|
124
|
+
Model parameters.
|
|
125
|
+
config_file_path: str or Path
|
|
126
|
+
Path of the file to write on.
|
|
127
|
+
|
|
128
|
+
Returns
|
|
129
|
+
-------
|
|
130
|
+
dict
|
|
131
|
+
Model parameters in sim_telarray format.
|
|
132
|
+
"""
|
|
133
|
+
simtel_par = {}
|
|
134
|
+
for par, value in parameters.items():
|
|
135
|
+
simtel_name, simtel_value = self._convert_model_parameters_to_simtel_format(
|
|
136
|
+
names.get_simulation_software_name_from_parameter_name(
|
|
137
|
+
par, software_name="sim_telarray"
|
|
138
|
+
),
|
|
139
|
+
value["value"],
|
|
140
|
+
config_file_path,
|
|
141
|
+
None,
|
|
142
|
+
)
|
|
143
|
+
if simtel_name:
|
|
144
|
+
simtel_par[simtel_name] = simtel_value
|
|
145
|
+
if "stars" not in parameters: # sim_telarray requires 'stars' to be set
|
|
146
|
+
simtel_par["stars"] = None
|
|
147
|
+
|
|
148
|
+
return self._get_flasher_parameters_for_sim_telarray(parameters, simtel_par)
|
|
149
|
+
|
|
150
|
+
def _get_flasher_parameters_for_sim_telarray(self, parameters, simtel_par):
|
|
151
|
+
"""
|
|
152
|
+
Combine flasher pulse time parameters into a single parameter.
|
|
153
|
+
|
|
154
|
+
Takes into account that sim_telarray expects a single parameter with a specific name.
|
|
155
|
+
|
|
156
|
+
Parameters
|
|
157
|
+
----------
|
|
158
|
+
parameters: dict
|
|
159
|
+
Model parameters.
|
|
160
|
+
simtel_par: dict
|
|
161
|
+
Model parameters in sim_telarray format.
|
|
162
|
+
|
|
163
|
+
Returns
|
|
164
|
+
-------
|
|
165
|
+
dict
|
|
166
|
+
Model parameters in sim_telarray format including flasher parameters.
|
|
167
|
+
|
|
168
|
+
"""
|
|
169
|
+
if "flasher_pulse_shape" not in parameters and "flasher_pulse_width" not in parameters:
|
|
170
|
+
return simtel_par
|
|
171
|
+
|
|
172
|
+
mapping = {
|
|
173
|
+
"gauss": "laser_pulse_sigtime",
|
|
174
|
+
"tophat": "laser_pulse_twidth",
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
shape = parameters.get("flasher_pulse_shape", {}).get("value", "").lower()
|
|
178
|
+
if "exponential" in shape:
|
|
179
|
+
simtel_par["laser_pulse_exptime"] = parameters.get("flasher_pulse_exp_decay", {}).get(
|
|
180
|
+
"value", 0.0
|
|
181
|
+
)
|
|
182
|
+
else:
|
|
183
|
+
simtel_par["laser_pulse_exptime"] = 0.0
|
|
184
|
+
|
|
185
|
+
width = parameters.get("flasher_pulse_width", {}).get("value", 0.0)
|
|
186
|
+
|
|
187
|
+
simtel_par.update(dict.fromkeys(mapping.values(), 0.0))
|
|
188
|
+
if shape == "gauss-exponential":
|
|
189
|
+
simtel_par["laser_pulse_sigtime"] = width
|
|
190
|
+
elif shape in mapping:
|
|
191
|
+
simtel_par[mapping[shape]] = width
|
|
192
|
+
else:
|
|
193
|
+
self._logger.warning(f"Flasher pulse shape '{shape}' without width definition")
|
|
194
|
+
|
|
195
|
+
return simtel_par
|
|
196
|
+
|
|
123
197
|
def _get_value_string_for_simtel(self, value):
|
|
124
198
|
"""
|
|
125
199
|
Return a value string for simtel.
|
|
@@ -34,6 +34,7 @@ class SimulatorArray(SimtelRunner):
|
|
|
34
34
|
label=None,
|
|
35
35
|
use_multipipe=False,
|
|
36
36
|
sim_telarray_seeds=None,
|
|
37
|
+
calibration_config=None,
|
|
37
38
|
):
|
|
38
39
|
"""Initialize SimulatorArray."""
|
|
39
40
|
self._logger = logging.getLogger(__name__)
|
|
@@ -47,6 +48,7 @@ class SimulatorArray(SimtelRunner):
|
|
|
47
48
|
|
|
48
49
|
self.sim_telarray_seeds = sim_telarray_seeds
|
|
49
50
|
self.corsika_config = corsika_config
|
|
51
|
+
self.calibration_config = calibration_config
|
|
50
52
|
self.io_handler = io_handler.IOHandler()
|
|
51
53
|
self._log_file = None
|
|
52
54
|
|
|
@@ -70,68 +72,69 @@ class SimulatorArray(SimtelRunner):
|
|
|
70
72
|
"""
|
|
71
73
|
command = self._common_run_command(run_number, weak_pointing)
|
|
72
74
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
SimulatorArray.get_power_law_for_sim_telarray_histograms(
|
|
78
|
-
self.corsika_config.primary_particle
|
|
79
|
-
),
|
|
80
|
-
)
|
|
75
|
+
if self.calibration_config:
|
|
76
|
+
command += self._make_run_command_for_calibration_simulations(input_file)
|
|
77
|
+
else:
|
|
78
|
+
command += self._make_run_command_for_shower_simulations(input_file)
|
|
81
79
|
|
|
82
80
|
return clear_default_sim_telarray_cfg_directories(command)
|
|
83
81
|
|
|
84
|
-
def
|
|
85
|
-
self, run_number=None, input_file=None, calibration_runner_args=None
|
|
86
|
-
):
|
|
82
|
+
def _make_run_command_for_shower_simulations(self, input_file=None):
|
|
87
83
|
"""
|
|
88
|
-
Build and return the command to run sim_telarray
|
|
84
|
+
Build and return the command to run sim_telarray shower simulations.
|
|
89
85
|
|
|
90
86
|
Parameters
|
|
91
87
|
----------
|
|
92
|
-
calibration_runner_args: dict
|
|
93
|
-
Dictionary with calibration runner arguments.
|
|
94
88
|
input_file: str
|
|
95
89
|
Full path of the input CORSIKA file
|
|
96
90
|
run_number: int (optional)
|
|
97
91
|
run number
|
|
92
|
+
weak_pointing: bool (optional)
|
|
93
|
+
Specify weak pointing option for sim_telarray.
|
|
98
94
|
|
|
99
95
|
Returns
|
|
100
96
|
-------
|
|
101
97
|
str
|
|
102
|
-
Command to run sim_telarray
|
|
98
|
+
Command to run sim_telarray.
|
|
103
99
|
"""
|
|
104
|
-
command =
|
|
105
|
-
|
|
106
|
-
command += super().get_config_option(
|
|
107
|
-
"Altitude",
|
|
108
|
-
self.corsika_config.array_model.site_model.get_parameter_value_with_unit(
|
|
109
|
-
"reference_point_altitude"
|
|
110
|
-
).to_value("m"),
|
|
111
|
-
)
|
|
100
|
+
command = f" {input_file}"
|
|
101
|
+
command += f" | gzip > {self._log_file} 2>&1 || exit"
|
|
112
102
|
command += super().get_config_option(
|
|
113
|
-
"
|
|
103
|
+
"power_law",
|
|
104
|
+
SimulatorArray.get_power_law_for_sim_telarray_histograms(
|
|
105
|
+
self.corsika_config.primary_particle
|
|
106
|
+
),
|
|
114
107
|
)
|
|
115
|
-
|
|
116
|
-
command += super().get_config_option("stars", calibration_runner_args["stars"])
|
|
108
|
+
return command
|
|
117
109
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if calibration_runner_args.get("run_mode") == "dark_pedestals":
|
|
125
|
-
command += super().get_config_option(
|
|
126
|
-
"dark_events", calibration_runner_args["number_of_events"]
|
|
127
|
-
)
|
|
128
|
-
if calibration_runner_args.get("run_mode") == "flasher":
|
|
129
|
-
command += self._flasher_command(calibration_runner_args)
|
|
110
|
+
def _make_run_command_for_calibration_simulations(self, input_file=None):
|
|
111
|
+
"""Build sim_telarray command for calibration simulations."""
|
|
112
|
+
cfg = self.calibration_config
|
|
113
|
+
altitude = self.corsika_config.array_model.site_model.get_parameter_value_with_unit(
|
|
114
|
+
"reference_point_altitude"
|
|
115
|
+
).to_value("m")
|
|
130
116
|
|
|
131
|
-
command
|
|
132
|
-
command += f" | gzip > {self._log_file} 2>&1 || exit"
|
|
117
|
+
command = super().get_config_option("Altitude", altitude)
|
|
133
118
|
|
|
134
|
-
|
|
119
|
+
for key in ("nsb_scaling_factor", "stars"):
|
|
120
|
+
if cfg.get(key):
|
|
121
|
+
command += super().get_config_option(key, cfg[key])
|
|
122
|
+
|
|
123
|
+
run_mode = cfg.get("run_mode")
|
|
124
|
+
if run_mode in ("pedestals", "nsb_only_pedestals"):
|
|
125
|
+
n_events = cfg.get("number_of_pedestal_events", cfg["number_of_events"])
|
|
126
|
+
command += super().get_config_option("pedestal_events", n_events)
|
|
127
|
+
if run_mode == "nsb_only_pedestals":
|
|
128
|
+
command += self._nsb_only_pedestals_command()
|
|
129
|
+
if run_mode == "dark_pedestals":
|
|
130
|
+
n_events = cfg.get("number_of_dark_events", cfg["number_of_events"])
|
|
131
|
+
command += super().get_config_option("dark_events", n_events)
|
|
132
|
+
if run_mode == "direct_injection":
|
|
133
|
+
n_events = cfg.get("number_of_flasher_events", cfg["number_of_events"])
|
|
134
|
+
command += super().get_config_option("laser_events", n_events)
|
|
135
|
+
|
|
136
|
+
command += f" {input_file} | gzip > {self._log_file} 2>&1 || exit"
|
|
137
|
+
return command
|
|
135
138
|
|
|
136
139
|
def _common_run_command(self, run_number, weak_pointing=None):
|
|
137
140
|
"""Build generic run command for sim_telarray."""
|
|
@@ -164,39 +167,6 @@ class SimulatorArray(SimtelRunner):
|
|
|
164
167
|
|
|
165
168
|
return command
|
|
166
169
|
|
|
167
|
-
def _flasher_command(self, calibration_runner_args):
|
|
168
|
-
"""
|
|
169
|
-
Generate the command to run sim_telarray for flasher simulations.
|
|
170
|
-
|
|
171
|
-
Parameters
|
|
172
|
-
----------
|
|
173
|
-
calibration_runner_args: dict
|
|
174
|
-
Dictionary with calibration runner arguments.
|
|
175
|
-
|
|
176
|
-
Returns
|
|
177
|
-
-------
|
|
178
|
-
str
|
|
179
|
-
Command to run sim_telarray for flasher simulations.
|
|
180
|
-
"""
|
|
181
|
-
command = super().get_config_option(
|
|
182
|
-
"laser_events", calibration_runner_args["number_of_events"]
|
|
183
|
-
)
|
|
184
|
-
command += super().get_config_option(
|
|
185
|
-
"laser_photons", calibration_runner_args["flasher_photons"]
|
|
186
|
-
)
|
|
187
|
-
command += super().get_config_option(
|
|
188
|
-
"laser_var_photons", calibration_runner_args["flasher_var_photons"]
|
|
189
|
-
)
|
|
190
|
-
command += super().get_config_option(
|
|
191
|
-
"laser_pulse_exptime", calibration_runner_args["flasher_exp_time"]
|
|
192
|
-
)
|
|
193
|
-
command += super().get_config_option(
|
|
194
|
-
"laser_pulse_sigtime", calibration_runner_args["flasher_sig_time"]
|
|
195
|
-
)
|
|
196
|
-
command += super().get_config_option("laser_external_trigger", 1)
|
|
197
|
-
|
|
198
|
-
return command
|
|
199
|
-
|
|
200
170
|
def _nsb_only_pedestals_command(self):
|
|
201
171
|
"""
|
|
202
172
|
Generate the command to run sim_telarray for nsb-only pedestal simulations.
|