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
|
@@ -61,7 +61,7 @@ class SimulatorRayTracing(SimtelRunner):
|
|
|
61
61
|
self.label = label if label is not None else self.telescope_model.label
|
|
62
62
|
|
|
63
63
|
self.io_handler = io_handler.IOHandler()
|
|
64
|
-
self._base_directory = self.io_handler.get_output_directory(
|
|
64
|
+
self._base_directory = self.io_handler.get_output_directory()
|
|
65
65
|
|
|
66
66
|
self.config = (
|
|
67
67
|
self._config_to_namedtuple(config_data)
|
|
@@ -146,7 +146,7 @@ class SimulatorRayTracing(SimtelRunner):
|
|
|
146
146
|
|
|
147
147
|
The run_number and input_file parameters are not relevant for the ray tracing simulation.
|
|
148
148
|
"""
|
|
149
|
-
self.telescope_model.write_sim_telarray_config_file(
|
|
149
|
+
self.telescope_model.write_sim_telarray_config_file(additional_models=self.site_model)
|
|
150
150
|
|
|
151
151
|
if self.config.single_mirror_mode:
|
|
152
152
|
# Note: no mirror length defined for dual-mirror telescopes
|
simtools/simulator.py
CHANGED
|
@@ -8,6 +8,7 @@ from collections import defaultdict
|
|
|
8
8
|
from pathlib import Path
|
|
9
9
|
|
|
10
10
|
import numpy as np
|
|
11
|
+
from astropy import units as u
|
|
11
12
|
|
|
12
13
|
import simtools.utils.general as gen
|
|
13
14
|
from simtools.corsika.corsika_config import CorsikaConfig
|
|
@@ -68,8 +69,8 @@ class Simulator:
|
|
|
68
69
|
self.db_config = db_config
|
|
69
70
|
|
|
70
71
|
self.simulation_software = self.args_dict.get("simulation_software", "corsika_sim_telarray")
|
|
71
|
-
self.run_mode = self.args_dict.get("run_mode")
|
|
72
72
|
self.logger.debug(f"Init Simulator {self.simulation_software}")
|
|
73
|
+
self.run_mode = args_dict.get("run_mode", None)
|
|
73
74
|
|
|
74
75
|
self.io_handler = io_handler.IOHandler()
|
|
75
76
|
|
|
@@ -141,6 +142,9 @@ class Simulator:
|
|
|
141
142
|
"seed_file_name": self.sim_telarray_seeds["seed_file_name"],
|
|
142
143
|
},
|
|
143
144
|
simtel_path=self.args_dict.get("simtel_path", None),
|
|
145
|
+
calibration_device_types=self._get_calibration_device_types(
|
|
146
|
+
self.args_dict.get("run_mode")
|
|
147
|
+
),
|
|
144
148
|
)
|
|
145
149
|
for version in versions
|
|
146
150
|
]
|
|
@@ -166,8 +170,8 @@ class Simulator:
|
|
|
166
170
|
|
|
167
171
|
seed = semver_to_int(model_version) * 10000000
|
|
168
172
|
seed = seed + 1000000 if self.args_dict.get("site") != "North" else seed + 2000000
|
|
169
|
-
seed = seed + (int)(self.args_dict
|
|
170
|
-
return seed + (int)(self.args_dict
|
|
173
|
+
seed = seed + (int)(self.args_dict.get("zenith_angle", 0.0 * u.deg).value) * 1000
|
|
174
|
+
return seed + (int)(self.args_dict.get("azimuth_angle", 0.0 * u.deg).value)
|
|
171
175
|
|
|
172
176
|
def _initialize_run_list(self):
|
|
173
177
|
"""
|
|
@@ -257,7 +261,7 @@ class Simulator:
|
|
|
257
261
|
label=self.label,
|
|
258
262
|
args_dict=self.args_dict,
|
|
259
263
|
db_config=self.db_config,
|
|
260
|
-
dummy_simulations=self._is_calibration_run(),
|
|
264
|
+
dummy_simulations=self._is_calibration_run(self.run_mode),
|
|
261
265
|
)
|
|
262
266
|
)
|
|
263
267
|
return (
|
|
@@ -296,8 +300,9 @@ class Simulator:
|
|
|
296
300
|
runner_args["sim_telarray_seeds"] = self.sim_telarray_seeds
|
|
297
301
|
if runner_class is CorsikaSimtelRunner:
|
|
298
302
|
runner_args["sequential"] = self.args_dict.get("sequential", False)
|
|
299
|
-
|
|
300
|
-
|
|
303
|
+
runner_args["calibration_config"] = (
|
|
304
|
+
self.args_dict if self._is_calibration_run(self.run_mode) else None
|
|
305
|
+
)
|
|
301
306
|
|
|
302
307
|
return runner_class(**runner_args)
|
|
303
308
|
|
|
@@ -583,9 +588,7 @@ class Simulator:
|
|
|
583
588
|
def save_file_lists(self):
|
|
584
589
|
"""Save files lists for output and log files."""
|
|
585
590
|
for file_type in ["simtel_output", "log", "corsika_log", "hist"]:
|
|
586
|
-
file_name = self.io_handler.get_output_directory(
|
|
587
|
-
f"{file_type}_files.txt"
|
|
588
|
-
)
|
|
591
|
+
file_name = self.io_handler.get_output_directory().joinpath(f"{file_type}_files.txt")
|
|
589
592
|
file_list = self.get_file_list(file_type=file_type)
|
|
590
593
|
if all(element is not None for element in file_list) and len(file_list) > 0:
|
|
591
594
|
self.logger.info(f"Saving list of {file_type} files to {file_name}")
|
|
@@ -646,9 +649,7 @@ class Simulator:
|
|
|
646
649
|
directory_for_grid_upload = (
|
|
647
650
|
Path(directory_for_grid_upload)
|
|
648
651
|
if directory_for_grid_upload
|
|
649
|
-
else self.io_handler.get_output_directory(
|
|
650
|
-
"directory_for_grid_upload"
|
|
651
|
-
)
|
|
652
|
+
else self.io_handler.get_output_directory().joinpath("directory_for_grid_upload")
|
|
652
653
|
)
|
|
653
654
|
directory_for_grid_upload.mkdir(parents=True, exist_ok=True)
|
|
654
655
|
|
|
@@ -749,13 +750,43 @@ class Simulator:
|
|
|
749
750
|
|
|
750
751
|
corsika_log_files.append(str(new_log))
|
|
751
752
|
|
|
752
|
-
|
|
753
|
+
@staticmethod
|
|
754
|
+
def _is_calibration_run(run_mode):
|
|
753
755
|
"""
|
|
754
756
|
Check if this simulation is a calibration run.
|
|
755
757
|
|
|
758
|
+
Parameters
|
|
759
|
+
----------
|
|
760
|
+
run_mode: str
|
|
761
|
+
Run mode of the simulation.
|
|
762
|
+
|
|
756
763
|
Returns
|
|
757
764
|
-------
|
|
758
765
|
bool
|
|
759
766
|
True if it is a calibration run, False otherwise.
|
|
760
767
|
"""
|
|
761
|
-
return
|
|
768
|
+
return run_mode in [
|
|
769
|
+
"pedestals",
|
|
770
|
+
"dark_pedestals",
|
|
771
|
+
"nsb_only_pedestals",
|
|
772
|
+
"direct_injection",
|
|
773
|
+
]
|
|
774
|
+
|
|
775
|
+
@staticmethod
|
|
776
|
+
def _get_calibration_device_types(run_mode):
|
|
777
|
+
"""
|
|
778
|
+
Get the list of calibration device types based on the run mode.
|
|
779
|
+
|
|
780
|
+
Parameters
|
|
781
|
+
----------
|
|
782
|
+
run_mode: str
|
|
783
|
+
Run mode of the simulation.
|
|
784
|
+
|
|
785
|
+
Returns
|
|
786
|
+
-------
|
|
787
|
+
list
|
|
788
|
+
List of calibration device types.
|
|
789
|
+
"""
|
|
790
|
+
if run_mode == "direct_injection":
|
|
791
|
+
return ["flat_fielding"]
|
|
792
|
+
return []
|
|
@@ -184,14 +184,16 @@ def _prepare_test_options(config, output_path, model_version=None):
|
|
|
184
184
|
|
|
185
185
|
tmp_config_file = output_path / "tmp_config.yml"
|
|
186
186
|
config_file_model_version = config.get("model_version")
|
|
187
|
+
if isinstance(config_file_model_version, list):
|
|
188
|
+
config_file_model_version = [str(item) for item in config_file_model_version]
|
|
189
|
+
elif config_file_model_version is not None:
|
|
190
|
+
config_file_model_version = str(config_file_model_version)
|
|
187
191
|
if model_version and "model_version" in config:
|
|
188
192
|
config.update({"model_version": model_version})
|
|
189
193
|
|
|
190
194
|
for key in ["output_path", "data_directory", "pack_for_grid_register"]:
|
|
191
195
|
if key in config:
|
|
192
196
|
config[key] = str(Path(output_path).joinpath(config[key]))
|
|
193
|
-
if key == "output_path":
|
|
194
|
-
config["use_plain_output_path"] = True
|
|
195
197
|
|
|
196
198
|
_logger.info(f"Writing config file: {tmp_config_file}")
|
|
197
199
|
ascii_handler.write_data_to_file(data=config, output_file=tmp_config_file, sort_keys=False)
|
|
@@ -35,19 +35,19 @@ def assert_sim_telarray_metadata(file, array_model):
|
|
|
35
35
|
if sim_telarray_seed_mismatch:
|
|
36
36
|
site_parameter_mismatch.append(sim_telarray_seed_mismatch)
|
|
37
37
|
|
|
38
|
-
if len(telescope_meta) != len(array_model.
|
|
38
|
+
if len(telescope_meta) != len(array_model.telescope_models):
|
|
39
39
|
raise ValueError(
|
|
40
40
|
f"Number of telescopes in sim_telarray file ({len(telescope_meta)}) does not match "
|
|
41
|
-
f"number of telescopes in array model ({len(array_model.
|
|
41
|
+
f"number of telescopes in array model ({len(array_model.telescope_models)})"
|
|
42
42
|
)
|
|
43
43
|
|
|
44
|
-
for telescope_name in array_model.
|
|
44
|
+
for telescope_name in array_model.telescope_models.keys():
|
|
45
45
|
if not get_sim_telarray_telescope_id(telescope_name, file):
|
|
46
46
|
raise ValueError(f"Telescope {telescope_name} not found in sim_telarray file metadata")
|
|
47
47
|
|
|
48
48
|
telescope_parameter_mismatch = [
|
|
49
49
|
_assert_model_parameters(telescope_meta[i], model)
|
|
50
|
-
for i, model in enumerate(array_model.
|
|
50
|
+
for i, model in enumerate(array_model.telescope_models.values(), start=1)
|
|
51
51
|
]
|
|
52
52
|
|
|
53
53
|
# ensure printout of all mismatches, not only those found first
|
simtools/utils/geometry.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""A collection of functions related to geometrical transformations."""
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
|
+
import math
|
|
4
5
|
|
|
5
6
|
import astropy.units as u
|
|
6
7
|
import numpy as np
|
|
@@ -236,3 +237,36 @@ def transform_ground_to_shower_coordinates(x_ground, y_ground, z_ground, azimuth
|
|
|
236
237
|
z_s = -sz * x + cz * z
|
|
237
238
|
|
|
238
239
|
return x_s, y_s, z_s
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
def fiducial_radius_from_shape(width, shape):
|
|
243
|
+
"""
|
|
244
|
+
Calculate minimum radius including different geometrical shapes.
|
|
245
|
+
|
|
246
|
+
Assumes definition of shapes as in 'camera_body_shape' model parameter:
|
|
247
|
+
|
|
248
|
+
- circle: shape = 0, width is diameter
|
|
249
|
+
- hexagon: shape = 1 or 3, width is flat-to-flat distance
|
|
250
|
+
- square: shape = 2, width is side length
|
|
251
|
+
|
|
252
|
+
Parameters
|
|
253
|
+
----------
|
|
254
|
+
width : float
|
|
255
|
+
Characteristic width
|
|
256
|
+
shape : int
|
|
257
|
+
Geometrical shape parameter
|
|
258
|
+
|
|
259
|
+
Returns
|
|
260
|
+
-------
|
|
261
|
+
float
|
|
262
|
+
Minimum fiducial radius
|
|
263
|
+
"""
|
|
264
|
+
if shape == 0:
|
|
265
|
+
return width / 2.0
|
|
266
|
+
if shape == 2:
|
|
267
|
+
return width / math.sqrt(2.0)
|
|
268
|
+
if shape in (1, 3):
|
|
269
|
+
return width / math.sqrt(3.0)
|
|
270
|
+
raise ValueError(
|
|
271
|
+
f"Unknown shape value {shape}. Valid values are: 0 (circle), 1 or 3 (hexagon), 2 (square)."
|
|
272
|
+
)
|
simtools/version.py
CHANGED
|
@@ -106,3 +106,25 @@ def semver_to_int(version_string):
|
|
|
106
106
|
release = v.release + (0,) * (3 - len(v.release))
|
|
107
107
|
major, minor, patch = release[:3]
|
|
108
108
|
return major * 10000 + minor * 100 + patch
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def sort_versions(version_list, reverse=False):
|
|
112
|
+
"""
|
|
113
|
+
Sort a list of semantic version strings.
|
|
114
|
+
|
|
115
|
+
Parameters
|
|
116
|
+
----------
|
|
117
|
+
version_list : list of str
|
|
118
|
+
List of semantic version strings (e.g., ["5.0.0", "6.0.2", "5.1.0"])
|
|
119
|
+
reverse : bool, optional
|
|
120
|
+
Sort in descending order if True (default False)
|
|
121
|
+
|
|
122
|
+
Returns
|
|
123
|
+
-------
|
|
124
|
+
list of str
|
|
125
|
+
Sorted list of version strings.
|
|
126
|
+
"""
|
|
127
|
+
try:
|
|
128
|
+
return [str(v) for v in sorted(map(Version, version_list), reverse=reverse)]
|
|
129
|
+
except InvalidVersion as exc:
|
|
130
|
+
raise ValueError(f"Invalid version in list: {version_list}") from exc
|