gammasimtools 0.21.0__py3-none-any.whl → 0.23.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.23.0.dist-info}/METADATA +3 -3
- gammasimtools-0.23.0.dist-info/RECORD +414 -0
- {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/entry_points.txt +2 -1
- simtools/_version.py +2 -2
- simtools/application_control.py +118 -0
- simtools/applications/calculate_incident_angles.py +17 -25
- simtools/applications/convert_all_model_parameters_from_simtel.py +29 -45
- simtools/applications/convert_geo_coordinates_of_array_elements.py +26 -45
- simtools/applications/convert_model_parameter_from_simtel.py +21 -42
- simtools/applications/db_add_file_to_db.py +12 -13
- simtools/applications/db_add_simulation_model_from_repository_to_db.py +20 -33
- simtools/applications/db_add_value_from_json_to_db.py +28 -23
- simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +19 -34
- simtools/applications/db_generate_compound_indexes.py +12 -27
- simtools/applications/db_get_array_layouts_from_db.py +19 -39
- simtools/applications/db_get_file_from_db.py +15 -17
- simtools/applications/db_get_parameter_from_db.py +33 -35
- simtools/applications/db_inspect_databases.py +10 -11
- simtools/applications/db_upload_model_repository.py +104 -0
- simtools/applications/derive_ctao_array_layouts.py +16 -21
- simtools/applications/derive_mirror_rnda.py +9 -14
- simtools/applications/derive_photon_electron_spectrum.py +7 -10
- simtools/applications/derive_psf_parameters.py +24 -21
- simtools/applications/derive_trigger_rates.py +6 -9
- simtools/applications/docs_produce_array_element_report.py +22 -23
- simtools/applications/docs_produce_calibration_reports.py +26 -24
- simtools/applications/docs_produce_model_parameter_reports.py +15 -22
- simtools/applications/docs_produce_simulation_configuration_report.py +21 -22
- simtools/applications/generate_array_config.py +14 -33
- simtools/applications/generate_corsika_histograms.py +22 -43
- simtools/applications/generate_default_metadata.py +15 -36
- simtools/applications/generate_regular_arrays.py +11 -15
- simtools/applications/generate_simtel_event_data.py +23 -33
- simtools/applications/maintain_simulation_model_add_production.py +17 -48
- simtools/applications/maintain_simulation_model_compare_productions.py +10 -12
- simtools/applications/maintain_simulation_model_verify_production_tables.py +8 -11
- simtools/applications/merge_tables.py +15 -24
- simtools/applications/plot_array_layout.py +77 -55
- simtools/applications/plot_simtel_events.py +11 -13
- simtools/applications/plot_tabular_data.py +17 -38
- simtools/applications/plot_tabular_data_for_model_parameter.py +16 -23
- simtools/applications/print_version.py +14 -42
- simtools/applications/production_derive_corsika_limits.py +5 -9
- simtools/applications/production_derive_statistics.py +12 -26
- simtools/applications/production_generate_grid.py +20 -48
- simtools/applications/production_merge_corsika_limits.py +17 -21
- simtools/applications/run_application.py +12 -32
- simtools/applications/simulate_flasher.py +79 -81
- simtools/applications/simulate_illuminator.py +56 -197
- simtools/applications/{simulate_calibration_events.py → simulate_pedestals.py} +22 -68
- simtools/applications/simulate_prod.py +21 -33
- simtools/applications/simulate_prod_htcondor_generator.py +11 -25
- simtools/applications/submit_array_layouts.py +15 -18
- simtools/applications/submit_data_from_external.py +18 -34
- simtools/applications/submit_model_parameter_from_external.py +27 -41
- simtools/applications/validate_camera_efficiency.py +23 -22
- simtools/applications/validate_camera_fov.py +21 -27
- simtools/applications/validate_cumulative_psf.py +28 -37
- simtools/applications/validate_file_using_schema.py +35 -45
- simtools/applications/validate_optics.py +27 -33
- simtools/camera/camera_efficiency.py +8 -13
- simtools/configuration/commandline_parser.py +33 -11
- simtools/configuration/configurator.py +0 -7
- simtools/corsika/corsika_config.py +9 -16
- simtools/corsika/corsika_histograms.py +1 -1
- simtools/data_model/data_reader.py +0 -2
- simtools/data_model/metadata_collector.py +0 -2
- simtools/data_model/model_data_writer.py +87 -27
- simtools/data_model/schema.py +61 -2
- simtools/data_model/validate_data.py +1 -3
- simtools/db/db_handler.py +58 -39
- simtools/db/db_model_upload.py +210 -5
- simtools/io/hdf5_handler.py +0 -5
- simtools/io/io_handler.py +31 -83
- simtools/io/legacy_data_handler.py +0 -5
- simtools/job_execution/job_manager.py +43 -1
- simtools/layout/array_layout.py +0 -2
- simtools/layout/array_layout_utils.py +1 -5
- simtools/layout/telescope_position.py +0 -2
- simtools/model/array_model.py +95 -46
- simtools/model/calibration_model.py +0 -2
- simtools/model/camera.py +0 -2
- simtools/model/mirrors.py +0 -2
- simtools/model/model_parameter.py +50 -16
- simtools/model/model_repository.py +139 -106
- simtools/model/model_utils.py +21 -11
- simtools/model/site_model.py +0 -2
- simtools/model/telescope_model.py +20 -2
- simtools/production_configuration/calculate_statistical_uncertainties_grid_point.py +0 -2
- simtools/production_configuration/derive_corsika_limits.py +1 -1
- simtools/production_configuration/derive_production_statistics.py +0 -2
- simtools/production_configuration/interpolation_handler.py +0 -2
- simtools/ray_tracing/incident_angles.py +7 -7
- simtools/ray_tracing/mirror_panel_psf.py +1 -1
- simtools/ray_tracing/psf_analysis.py +0 -2
- simtools/ray_tracing/psf_parameter_optimisation.py +180 -73
- simtools/ray_tracing/ray_tracing.py +1 -5
- simtools/reporting/docs_auto_report_generator.py +108 -0
- simtools/reporting/docs_read_parameters.py +168 -104
- simtools/resources/array_elements.yml +26 -0
- simtools/runners/corsika_runner.py +0 -2
- simtools/runners/corsika_simtel_runner.py +11 -19
- simtools/runners/runner_services.py +5 -6
- simtools/runners/simtel_runner.py +0 -2
- 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/transit_time_random.schema.yml +29 -0
- 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_reader.py +0 -2
- simtools/simtel/simtel_config_writer.py +118 -26
- simtools/simtel/simtel_io_metadata.py +3 -3
- simtools/simtel/simulator_array.py +43 -85
- simtools/simtel/simulator_camera_efficiency.py +0 -2
- simtools/simtel/simulator_light_emission.py +336 -631
- simtools/simtel/simulator_ray_tracing.py +2 -4
- simtools/simulator.py +45 -19
- simtools/testing/assertions.py +2 -2
- simtools/testing/configuration.py +21 -6
- simtools/testing/sim_telarray_metadata.py +4 -4
- simtools/utils/general.py +5 -13
- simtools/utils/geometry.py +34 -5
- simtools/utils/names.py +1 -13
- simtools/version.py +83 -0
- simtools/visualization/plot_array_layout.py +129 -23
- simtools/visualization/plot_incident_angles.py +0 -2
- simtools/visualization/plot_psf.py +163 -61
- simtools/visualization/plot_simtel_events.py +1 -12
- simtools/visualization/visualize.py +0 -12
- gammasimtools-0.21.0.dist-info/RECORD +0 -396
- simtools/model/flasher_model.py +0 -106
- {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/WHEEL +0 -0
- {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/licenses/LICENSE +0 -0
- {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
$schema: http://json-schema.org/draft-06/schema#
|
|
3
|
+
$ref: '#/definitions/SimulationModelsInfo'
|
|
4
|
+
title: Production and simulation model information schema
|
|
5
|
+
description: Schema for validating 'info.yml' files used to update CTAO simulation models.
|
|
6
|
+
schema_version: 0.1.0
|
|
7
|
+
schema_name: simulation_models_info.metaschema
|
|
8
|
+
type: object
|
|
9
|
+
additionalProperties: false
|
|
10
|
+
|
|
11
|
+
definitions:
|
|
12
|
+
SimulationModelsInfo:
|
|
13
|
+
properties:
|
|
14
|
+
model_version:
|
|
15
|
+
$ref: 'common_definitions.schema.yml#/$defs/semantic_version_pattern'
|
|
16
|
+
model_update:
|
|
17
|
+
type: string
|
|
18
|
+
description: The type of update for the model version.
|
|
19
|
+
enum:
|
|
20
|
+
- patch_update
|
|
21
|
+
- full_update
|
|
22
|
+
model_version_history:
|
|
23
|
+
type: array
|
|
24
|
+
description: A list of previous model versions.
|
|
25
|
+
items:
|
|
26
|
+
$ref: 'common_definitions.schema.yml#/$defs/semantic_version_pattern'
|
|
27
|
+
description:
|
|
28
|
+
type: string
|
|
29
|
+
description: A detailed description of the model changes.
|
|
30
|
+
changes:
|
|
31
|
+
type: object
|
|
32
|
+
description: A map of design names to their parameter changes.
|
|
33
|
+
propertyNames:
|
|
34
|
+
$ref: 'common_definitions.schema.yml#/$defs/telescope_name_pattern'
|
|
35
|
+
additionalProperties:
|
|
36
|
+
type: object
|
|
37
|
+
additionalProperties:
|
|
38
|
+
anyOf:
|
|
39
|
+
- $ref: '#/$defs/ParameterValue'
|
|
40
|
+
- $ref: '#/$defs/DeprecatedParameter'
|
|
41
|
+
required:
|
|
42
|
+
- model_version
|
|
43
|
+
- model_update
|
|
44
|
+
- model_version_history
|
|
45
|
+
- description
|
|
46
|
+
- changes
|
|
47
|
+
|
|
48
|
+
$defs:
|
|
49
|
+
DeprecatedParameter:
|
|
50
|
+
type: object
|
|
51
|
+
properties:
|
|
52
|
+
deprecated:
|
|
53
|
+
type: boolean
|
|
54
|
+
const: true
|
|
55
|
+
required:
|
|
56
|
+
- deprecated
|
|
57
|
+
additionalProperties: false
|
|
58
|
+
|
|
59
|
+
ParameterValue:
|
|
60
|
+
type: object
|
|
61
|
+
properties:
|
|
62
|
+
version:
|
|
63
|
+
$ref: 'common_definitions.schema.yml#/$defs/semantic_version_pattern'
|
|
64
|
+
value:
|
|
65
|
+
oneOf:
|
|
66
|
+
- type: string
|
|
67
|
+
- type: number
|
|
68
|
+
- type: boolean
|
|
69
|
+
- type: array
|
|
70
|
+
- type: object
|
|
71
|
+
unit:
|
|
72
|
+
oneOf:
|
|
73
|
+
- type: string
|
|
74
|
+
- type: array
|
|
75
|
+
- type: "null"
|
|
76
|
+
required:
|
|
77
|
+
- version
|
|
78
|
+
additionalProperties: false
|
|
@@ -13,8 +13,6 @@ import simtools.version
|
|
|
13
13
|
from simtools.io import ascii_handler
|
|
14
14
|
from simtools.utils import names
|
|
15
15
|
|
|
16
|
-
__all__ = ["SimtelConfigWriter"]
|
|
17
|
-
|
|
18
16
|
|
|
19
17
|
def sim_telarray_random_seeds(seed, number):
|
|
20
18
|
"""
|
|
@@ -67,6 +65,7 @@ class SimtelConfigWriter:
|
|
|
67
65
|
model_version,
|
|
68
66
|
layout_name=None,
|
|
69
67
|
telescope_model_name=None,
|
|
68
|
+
telescope_design_model=None,
|
|
70
69
|
label=None,
|
|
71
70
|
simtel_path=None,
|
|
72
71
|
):
|
|
@@ -79,9 +78,12 @@ class SimtelConfigWriter:
|
|
|
79
78
|
self._label = label
|
|
80
79
|
self._layout_name = layout_name
|
|
81
80
|
self._telescope_model_name = telescope_model_name
|
|
81
|
+
self._telescope_design_model = telescope_design_model
|
|
82
82
|
self._simtel_path = simtel_path
|
|
83
83
|
|
|
84
|
-
def write_telescope_config_file(
|
|
84
|
+
def write_telescope_config_file(
|
|
85
|
+
self, config_file_path, parameters, telescope_name=None, telescope_design_model=None
|
|
86
|
+
):
|
|
85
87
|
"""
|
|
86
88
|
Write the sim_telarray config file for a single telescope.
|
|
87
89
|
|
|
@@ -93,33 +95,115 @@ class SimtelConfigWriter:
|
|
|
93
95
|
Model parameters
|
|
94
96
|
telescope_name: str
|
|
95
97
|
Name of the telescope (use self._telescope_model_name if None)
|
|
98
|
+
telescope_design_model: str
|
|
99
|
+
Telescope design model.
|
|
96
100
|
"""
|
|
97
101
|
self._logger.debug(f"Writing telescope config file {config_file_path}")
|
|
98
102
|
|
|
103
|
+
simtel_par = self._get_parameters_for_sim_telarray(parameters, config_file_path)
|
|
104
|
+
telescope_name = telescope_name or self._telescope_model_name
|
|
105
|
+
_telescope_design_model = telescope_design_model or self._telescope_design_model
|
|
106
|
+
|
|
99
107
|
with open(config_file_path, "w", encoding="utf-8") as file:
|
|
100
108
|
self._write_header(file, "TELESCOPE CONFIGURATION FILE")
|
|
101
109
|
|
|
102
|
-
telescope_name = telescope_name or self._telescope_model_name
|
|
103
110
|
file.write("#ifdef TELESCOPE\n")
|
|
104
111
|
file.write(f" echo Configuration for {telescope_name} - TELESCOPE $(TELESCOPE)\n")
|
|
105
112
|
file.write("#endif\n\n")
|
|
106
113
|
|
|
107
|
-
for
|
|
108
|
-
simtel_name
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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")
|
|
120
|
-
for meta in self._get_sim_telarray_metadata("telescope", parameters, telescope_name):
|
|
114
|
+
for simtel_name, simtel_value in simtel_par.items():
|
|
115
|
+
file.write(f"{simtel_name} = {self._get_value_string_for_simtel(simtel_value)}\n")
|
|
116
|
+
for meta in self._get_sim_telarray_metadata(
|
|
117
|
+
"telescope",
|
|
118
|
+
parameters,
|
|
119
|
+
telescope_name,
|
|
120
|
+
telescope_design_model=_telescope_design_model,
|
|
121
|
+
):
|
|
121
122
|
file.write(f"{meta}\n")
|
|
122
123
|
|
|
124
|
+
def _get_parameters_for_sim_telarray(self, parameters, config_file_path):
|
|
125
|
+
"""
|
|
126
|
+
Convert parameter dictionary to sim_telarray configuration file format.
|
|
127
|
+
|
|
128
|
+
Accounts for differences between the data models for sim_telarray configuration
|
|
129
|
+
and the simulation models.
|
|
130
|
+
|
|
131
|
+
Parameters
|
|
132
|
+
----------
|
|
133
|
+
parameters: dict
|
|
134
|
+
Model parameters.
|
|
135
|
+
config_file_path: str or Path
|
|
136
|
+
Path of the file to write on.
|
|
137
|
+
|
|
138
|
+
Returns
|
|
139
|
+
-------
|
|
140
|
+
dict
|
|
141
|
+
Model parameters in sim_telarray format.
|
|
142
|
+
"""
|
|
143
|
+
simtel_par = {}
|
|
144
|
+
for par, value in parameters.items():
|
|
145
|
+
simtel_name, simtel_value = self._convert_model_parameters_to_simtel_format(
|
|
146
|
+
names.get_simulation_software_name_from_parameter_name(
|
|
147
|
+
par, software_name="sim_telarray"
|
|
148
|
+
),
|
|
149
|
+
value["value"],
|
|
150
|
+
config_file_path,
|
|
151
|
+
None,
|
|
152
|
+
)
|
|
153
|
+
if simtel_name:
|
|
154
|
+
simtel_par[simtel_name] = simtel_value
|
|
155
|
+
if "stars" not in parameters: # sim_telarray requires 'stars' to be set
|
|
156
|
+
simtel_par["stars"] = None
|
|
157
|
+
|
|
158
|
+
return self._get_flasher_parameters_for_sim_telarray(parameters, simtel_par)
|
|
159
|
+
|
|
160
|
+
def _get_flasher_parameters_for_sim_telarray(self, parameters, simtel_par):
|
|
161
|
+
"""
|
|
162
|
+
Combine flasher pulse time parameters into a single parameter.
|
|
163
|
+
|
|
164
|
+
Takes into account that sim_telarray expects a single parameter with a specific name.
|
|
165
|
+
|
|
166
|
+
Parameters
|
|
167
|
+
----------
|
|
168
|
+
parameters: dict
|
|
169
|
+
Model parameters.
|
|
170
|
+
simtel_par: dict
|
|
171
|
+
Model parameters in sim_telarray format.
|
|
172
|
+
|
|
173
|
+
Returns
|
|
174
|
+
-------
|
|
175
|
+
dict
|
|
176
|
+
Model parameters in sim_telarray format including flasher parameters.
|
|
177
|
+
|
|
178
|
+
"""
|
|
179
|
+
if "flasher_pulse_shape" not in parameters and "flasher_pulse_width" not in parameters:
|
|
180
|
+
return simtel_par
|
|
181
|
+
|
|
182
|
+
mapping = {
|
|
183
|
+
"gauss": "laser_pulse_sigtime",
|
|
184
|
+
"tophat": "laser_pulse_twidth",
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
shape = parameters.get("flasher_pulse_shape", {}).get("value", "").lower()
|
|
188
|
+
if "exponential" in shape:
|
|
189
|
+
simtel_par["laser_pulse_exptime"] = parameters.get("flasher_pulse_exp_decay", {}).get(
|
|
190
|
+
"value", 0.0
|
|
191
|
+
)
|
|
192
|
+
else:
|
|
193
|
+
simtel_par["laser_pulse_exptime"] = 0.0
|
|
194
|
+
|
|
195
|
+
width = parameters.get("flasher_pulse_width", {}).get("value", 0.0)
|
|
196
|
+
|
|
197
|
+
simtel_par.update(dict.fromkeys(mapping.values(), 0.0))
|
|
198
|
+
if shape == "gauss-exponential":
|
|
199
|
+
simtel_par["laser_pulse_sigtime"] = width
|
|
200
|
+
elif shape in mapping:
|
|
201
|
+
simtel_par[mapping[shape]] = width
|
|
202
|
+
else:
|
|
203
|
+
self._logger.warning(f"Flasher pulse shape '{shape}' without width definition")
|
|
204
|
+
|
|
205
|
+
return simtel_par
|
|
206
|
+
|
|
123
207
|
def _get_value_string_for_simtel(self, value):
|
|
124
208
|
"""
|
|
125
209
|
Return a value string for simtel.
|
|
@@ -137,12 +221,17 @@ class SimtelConfigWriter:
|
|
|
137
221
|
value = "none" if value is None else value # simtel requires 'none'
|
|
138
222
|
if isinstance(value, bool):
|
|
139
223
|
value = 1 if value else 0
|
|
140
|
-
elif isinstance(value, (list, np.ndarray)):
|
|
224
|
+
elif isinstance(value, (list, np.ndarray)):
|
|
141
225
|
value = gen.convert_list_to_string(value, shorten_list=True)
|
|
142
226
|
return value
|
|
143
227
|
|
|
144
228
|
def _get_sim_telarray_metadata(
|
|
145
|
-
self,
|
|
229
|
+
self,
|
|
230
|
+
config_type,
|
|
231
|
+
model_parameters,
|
|
232
|
+
telescope_model_name,
|
|
233
|
+
additional_metadata=None,
|
|
234
|
+
telescope_design_model=None,
|
|
146
235
|
):
|
|
147
236
|
"""
|
|
148
237
|
Return sim_telarray metadata.
|
|
@@ -157,6 +246,8 @@ class SimtelConfigWriter:
|
|
|
157
246
|
Name of the telescope model
|
|
158
247
|
additional_metadata: dict
|
|
159
248
|
Dictionary with additional metadata to include using 'set'.
|
|
249
|
+
telescope_design_model: str
|
|
250
|
+
Name of the telescope design model.
|
|
160
251
|
|
|
161
252
|
Returns
|
|
162
253
|
-------
|
|
@@ -167,14 +258,15 @@ class SimtelConfigWriter:
|
|
|
167
258
|
f"config_release = {self._model_version} with simtools v{simtools.version.__version__}",
|
|
168
259
|
f"config_version = {self._model_version}",
|
|
169
260
|
]
|
|
261
|
+
telescope_design_model = telescope_design_model or "design_model_not_set"
|
|
170
262
|
if config_type == "telescope":
|
|
171
263
|
meta_parameters.extend(
|
|
172
264
|
[
|
|
173
|
-
f"camera_config_name = {
|
|
174
|
-
"camera_config_variant = ",
|
|
265
|
+
f"camera_config_name = {telescope_design_model}",
|
|
266
|
+
f"camera_config_variant = {telescope_model_name}",
|
|
175
267
|
f"camera_config_version = {self._model_version}",
|
|
176
|
-
f"optics_config_name = {
|
|
177
|
-
"optics_config_variant = ",
|
|
268
|
+
f"optics_config_name = {telescope_design_model}",
|
|
269
|
+
f"optics_config_variant = {telescope_model_name}",
|
|
178
270
|
f"optics_config_version = {self._model_version}",
|
|
179
271
|
]
|
|
180
272
|
)
|
|
@@ -447,7 +539,7 @@ class SimtelConfigWriter:
|
|
|
447
539
|
if simtel_name is not None:
|
|
448
540
|
file.write(f"{self.TAB}{simtel_name} = {value}\n")
|
|
449
541
|
for meta in self._get_sim_telarray_metadata(
|
|
450
|
-
"site", site_parameters,
|
|
542
|
+
"site", site_parameters, None, additional_metadata
|
|
451
543
|
):
|
|
452
544
|
file.write(f"{self.TAB}{meta}\n")
|
|
453
545
|
file.write("\n")
|
|
@@ -514,7 +606,7 @@ class SimtelConfigWriter:
|
|
|
514
606
|
trigger_lines[tel_type] += ", ".join(map(str, tel_list))
|
|
515
607
|
width = trigger_dict["width"]["value"] * u.Unit(trigger_dict["width"]["unit"]).to("ns")
|
|
516
608
|
trigger_lines[tel_type] += f" width {width}"
|
|
517
|
-
if trigger_dict.get("hard_stereo"):
|
|
609
|
+
if trigger_dict.get("hard_stereo", {}).get("value"):
|
|
518
610
|
trigger_lines[tel_type] += " hardstereo"
|
|
519
611
|
if all(trigger_dict["min_separation"][key] is not None for key in ["value", "unit"]):
|
|
520
612
|
min_sep = trigger_dict["min_separation"]["value"] * u.Unit(
|
|
@@ -105,8 +105,8 @@ def get_sim_telarray_telescope_id(telescope_name, file):
|
|
|
105
105
|
_, telescope_meta = read_sim_telarray_metadata(file)
|
|
106
106
|
telescope_name_to_sim_telarray_id = {}
|
|
107
107
|
for tel_id in telescope_meta.keys():
|
|
108
|
-
_optics_name = telescope_meta[tel_id].get("
|
|
109
|
-
_camera_name = telescope_meta[tel_id].get("
|
|
108
|
+
_optics_name = telescope_meta[tel_id].get("optics_config_variant", None)
|
|
109
|
+
_camera_name = telescope_meta[tel_id].get("camera_config_variant", None)
|
|
110
110
|
if _optics_name == _camera_name and _optics_name == telescope_name:
|
|
111
111
|
telescope_name_to_sim_telarray_id[telescope_name] = tel_id
|
|
112
112
|
|
|
@@ -132,7 +132,7 @@ def get_sim_telarray_telescope_id_to_telescope_name_mapping(file):
|
|
|
132
132
|
for i, (tel_id, meta) in enumerate(telescope_meta.items()):
|
|
133
133
|
try:
|
|
134
134
|
telescope_name = names.validate_array_element_name(
|
|
135
|
-
meta.get("
|
|
135
|
+
meta.get("optics_config_variant", f"Unknown-{tel_id}")
|
|
136
136
|
)
|
|
137
137
|
except ValueError:
|
|
138
138
|
telescope_name = _guess_telescope_name_for_legacy_files(i, file)
|
|
@@ -6,8 +6,6 @@ from simtools.io import io_handler
|
|
|
6
6
|
from simtools.runners.simtel_runner import InvalidOutputFileError, SimtelRunner
|
|
7
7
|
from simtools.utils.general import clear_default_sim_telarray_cfg_directories
|
|
8
8
|
|
|
9
|
-
__all__ = ["SimulatorArray"]
|
|
10
|
-
|
|
11
9
|
|
|
12
10
|
class SimulatorArray(SimtelRunner):
|
|
13
11
|
"""
|
|
@@ -34,6 +32,7 @@ class SimulatorArray(SimtelRunner):
|
|
|
34
32
|
label=None,
|
|
35
33
|
use_multipipe=False,
|
|
36
34
|
sim_telarray_seeds=None,
|
|
35
|
+
calibration_config=None,
|
|
37
36
|
):
|
|
38
37
|
"""Initialize SimulatorArray."""
|
|
39
38
|
self._logger = logging.getLogger(__name__)
|
|
@@ -47,6 +46,7 @@ class SimulatorArray(SimtelRunner):
|
|
|
47
46
|
|
|
48
47
|
self.sim_telarray_seeds = sim_telarray_seeds
|
|
49
48
|
self.corsika_config = corsika_config
|
|
49
|
+
self.calibration_config = calibration_config
|
|
50
50
|
self.io_handler = io_handler.IOHandler()
|
|
51
51
|
self._log_file = None
|
|
52
52
|
|
|
@@ -70,68 +70,60 @@ class SimulatorArray(SimtelRunner):
|
|
|
70
70
|
"""
|
|
71
71
|
command = self._common_run_command(run_number, weak_pointing)
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
73
|
+
if self.calibration_config:
|
|
74
|
+
command += self._make_run_command_for_calibration_simulations()
|
|
75
|
+
else:
|
|
76
|
+
command += self._make_run_command_for_shower_simulations()
|
|
77
|
+
|
|
78
|
+
# "-C show=all" should be the last option
|
|
79
|
+
command += super().get_config_option("show", "all")
|
|
80
|
+
command += f" {input_file} | gzip > {self._log_file} 2>&1 || exit"
|
|
81
81
|
|
|
82
82
|
return clear_default_sim_telarray_cfg_directories(command)
|
|
83
83
|
|
|
84
|
-
def
|
|
85
|
-
self, run_number=None, input_file=None, calibration_runner_args=None
|
|
86
|
-
):
|
|
84
|
+
def _make_run_command_for_shower_simulations(self):
|
|
87
85
|
"""
|
|
88
|
-
Build and return the command to run sim_telarray
|
|
89
|
-
|
|
90
|
-
Parameters
|
|
91
|
-
----------
|
|
92
|
-
calibration_runner_args: dict
|
|
93
|
-
Dictionary with calibration runner arguments.
|
|
94
|
-
input_file: str
|
|
95
|
-
Full path of the input CORSIKA file
|
|
96
|
-
run_number: int (optional)
|
|
97
|
-
run number
|
|
86
|
+
Build and return the command to run sim_telarray shower simulations.
|
|
98
87
|
|
|
99
88
|
Returns
|
|
100
89
|
-------
|
|
101
90
|
str
|
|
102
|
-
Command to run sim_telarray
|
|
91
|
+
Command to run sim_telarray.
|
|
103
92
|
"""
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
"reference_point_altitude"
|
|
110
|
-
).to_value("m"),
|
|
111
|
-
)
|
|
112
|
-
command += super().get_config_option(
|
|
113
|
-
"nsb_scaling_factor", calibration_runner_args["nsb_scaling_factor"]
|
|
93
|
+
return super().get_config_option(
|
|
94
|
+
"power_law",
|
|
95
|
+
SimulatorArray.get_power_law_for_sim_telarray_histograms(
|
|
96
|
+
self.corsika_config.primary_particle
|
|
97
|
+
),
|
|
114
98
|
)
|
|
115
|
-
if calibration_runner_args.get("stars"):
|
|
116
|
-
command += super().get_config_option("stars", calibration_runner_args["stars"])
|
|
117
99
|
|
|
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)
|
|
100
|
+
def _make_run_command_for_calibration_simulations(self):
|
|
101
|
+
"""Build sim_telarray command for calibration simulations."""
|
|
102
|
+
cfg = self.calibration_config
|
|
103
|
+
altitude = self.corsika_config.array_model.site_model.get_parameter_value_with_unit(
|
|
104
|
+
"reference_point_altitude"
|
|
105
|
+
).to_value("m")
|
|
130
106
|
|
|
131
|
-
command
|
|
132
|
-
command += f" | gzip > {self._log_file} 2>&1 || exit"
|
|
107
|
+
command = super().get_config_option("Altitude", altitude)
|
|
133
108
|
|
|
134
|
-
|
|
109
|
+
for key in ("nsb_scaling_factor", "stars"):
|
|
110
|
+
if cfg.get(key):
|
|
111
|
+
command += super().get_config_option(key, cfg[key])
|
|
112
|
+
|
|
113
|
+
run_mode = cfg.get("run_mode")
|
|
114
|
+
if run_mode in ("pedestals", "nsb_only_pedestals"):
|
|
115
|
+
n_events = cfg.get("number_of_pedestal_events", cfg["number_of_events"])
|
|
116
|
+
command += super().get_config_option("pedestal_events", n_events)
|
|
117
|
+
if run_mode == "nsb_only_pedestals":
|
|
118
|
+
command += self._nsb_only_pedestals_command()
|
|
119
|
+
if run_mode == "dark_pedestals":
|
|
120
|
+
n_events = cfg.get("number_of_dark_events", cfg["number_of_events"])
|
|
121
|
+
command += super().get_config_option("dark_events", n_events)
|
|
122
|
+
if run_mode == "direct_injection":
|
|
123
|
+
n_events = cfg.get("number_of_flasher_events", cfg["number_of_events"])
|
|
124
|
+
command += super().get_config_option("laser_events", n_events)
|
|
125
|
+
|
|
126
|
+
return command
|
|
135
127
|
|
|
136
128
|
def _common_run_command(self, run_number, weak_pointing=None):
|
|
137
129
|
"""Build generic run command for sim_telarray."""
|
|
@@ -159,44 +151,10 @@ class SimulatorArray(SimtelRunner):
|
|
|
159
151
|
)
|
|
160
152
|
elif self.sim_telarray_seeds and self.sim_telarray_seeds.get("seed"):
|
|
161
153
|
command += super().get_config_option("random_seed", self.sim_telarray_seeds["seed"])
|
|
162
|
-
command += super().get_config_option("show", "all")
|
|
163
154
|
command += super().get_config_option("output_file", output_file)
|
|
164
155
|
|
|
165
156
|
return command
|
|
166
157
|
|
|
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
158
|
def _nsb_only_pedestals_command(self):
|
|
201
159
|
"""
|
|
202
160
|
Generate the command to run sim_telarray for nsb-only pedestal simulations.
|