gammasimtools 0.6.1__py3-none-any.whl → 0.8.2__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.8.2.dist-info/METADATA +173 -0
- gammasimtools-0.8.2.dist-info/RECORD +345 -0
- {gammasimtools-0.6.1.dist-info → gammasimtools-0.8.2.dist-info}/WHEEL +1 -1
- gammasimtools-0.8.2.dist-info/entry_points.txt +31 -0
- simtools/_dev_version/__init__.py +9 -0
- simtools/_version.py +2 -2
- simtools/applications/calculate_trigger_rate.py +210 -0
- simtools/applications/convert_all_model_parameters_from_simtel.py +372 -0
- simtools/applications/{print_array_elements.py → convert_geo_coordinates_of_array_elements.py} +58 -63
- simtools/applications/convert_model_parameter_from_simtel.py +119 -0
- simtools/applications/{add_file_to_db.py → db_add_file_to_db.py} +70 -60
- simtools/applications/db_add_model_parameters_from_repository_to_db.py +184 -0
- simtools/applications/db_add_value_from_json_to_db.py +105 -0
- simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +180 -0
- simtools/applications/db_get_array_layouts_from_db.py +162 -0
- simtools/applications/{get_file_from_db.py → db_get_file_from_db.py} +30 -34
- simtools/applications/db_get_parameter_from_db.py +131 -0
- simtools/applications/db_inspect_databases.py +52 -0
- simtools/applications/derive_mirror_rnda.py +39 -255
- simtools/applications/derive_psf_parameters.py +441 -0
- simtools/applications/generate_array_config.py +82 -0
- simtools/applications/generate_corsika_histograms.py +52 -52
- simtools/applications/generate_default_metadata.py +5 -8
- simtools/applications/generate_regular_arrays.py +117 -0
- simtools/applications/generate_simtel_array_histograms.py +97 -56
- simtools/applications/plot_array_layout.py +345 -115
- simtools/applications/production_generate_simulation_config.py +158 -0
- simtools/applications/production_scale_events.py +168 -0
- simtools/applications/simulate_light_emission.py +478 -0
- simtools/applications/simulate_prod.py +97 -175
- simtools/applications/submit_data_from_external.py +9 -12
- simtools/applications/submit_model_parameter_from_external.py +122 -0
- simtools/applications/validate_camera_efficiency.py +35 -102
- simtools/applications/validate_camera_fov.py +20 -19
- simtools/applications/{compare_cumulative_psf.py → validate_cumulative_psf.py} +45 -44
- simtools/applications/validate_file_using_schema.py +111 -47
- simtools/applications/validate_optics.py +17 -22
- simtools/camera_efficiency.py +193 -202
- simtools/configuration/commandline_parser.py +384 -96
- simtools/configuration/configurator.py +55 -71
- simtools/constants.py +5 -5
- simtools/corsika/corsika_config.py +482 -342
- simtools/corsika/corsika_histograms.py +226 -204
- simtools/corsika/corsika_histograms_visualize.py +23 -24
- simtools/corsika/primary_particle.py +159 -0
- simtools/data_model/data_reader.py +25 -20
- simtools/data_model/format_checkers.py +52 -0
- simtools/data_model/metadata_collector.py +211 -185
- simtools/data_model/metadata_model.py +115 -37
- simtools/data_model/model_data_writer.py +335 -26
- simtools/data_model/validate_data.py +366 -154
- simtools/db/db_array_elements.py +130 -0
- simtools/db/db_from_repo_handler.py +106 -0
- simtools/db/db_handler.py +1246 -0
- simtools/io_operations/hdf5_handler.py +3 -1
- simtools/io_operations/io_handler.py +32 -57
- simtools/job_execution/job_manager.py +82 -69
- simtools/layout/array_layout.py +325 -537
- simtools/layout/geo_coordinates.py +8 -11
- simtools/layout/telescope_position.py +163 -86
- simtools/model/array_model.py +312 -259
- simtools/model/calibration_model.py +50 -0
- simtools/model/camera.py +277 -523
- simtools/model/mirrors.py +68 -49
- simtools/model/model_parameter.py +602 -0
- simtools/model/model_utils.py +11 -39
- simtools/model/site_model.py +161 -0
- simtools/model/telescope_model.py +143 -633
- simtools/production_configuration/calculate_statistical_errors_grid_point.py +454 -0
- simtools/production_configuration/event_scaler.py +146 -0
- simtools/production_configuration/generate_simulation_config.py +193 -0
- simtools/production_configuration/interpolation_handler.py +197 -0
- simtools/ray_tracing/__init__.py +0 -0
- simtools/ray_tracing/mirror_panel_psf.py +280 -0
- simtools/{psf_analysis.py → ray_tracing/psf_analysis.py} +133 -47
- simtools/ray_tracing/ray_tracing.py +646 -0
- simtools/runners/__init__.py +0 -0
- simtools/runners/corsika_runner.py +240 -0
- simtools/runners/corsika_simtel_runner.py +225 -0
- simtools/runners/runner_services.py +307 -0
- simtools/runners/simtel_runner.py +224 -0
- simtools/schemas/array_elements.yml +137 -0
- simtools/schemas/integration_tests_config.metaschema.yml +93 -0
- simtools/schemas/metadata.metaschema.yml +6 -0
- simtools/schemas/model_parameter.metaschema.yml +78 -0
- simtools/schemas/{data.metaschema.yml → model_parameter_and_data_schema.metaschema.yml} +27 -44
- simtools/schemas/model_parameters/adjust_gain.schema.yml +37 -0
- simtools/schemas/model_parameters/altitude.schema.yml +37 -0
- simtools/schemas/model_parameters/array_coordinates.schema.yml +33 -0
- simtools/schemas/model_parameters/array_coordinates_UTM.schema.yml +77 -0
- simtools/schemas/model_parameters/array_element_position_ground.schema.yml +39 -0
- simtools/schemas/model_parameters/array_element_position_utm.schema.yml +39 -0
- simtools/schemas/model_parameters/array_layouts.schema.yml +48 -0
- simtools/schemas/model_parameters/array_triggers.schema.yml +93 -0
- simtools/schemas/model_parameters/asum_clipping.schema.yml +38 -0
- simtools/schemas/model_parameters/asum_offset.schema.yml +35 -0
- simtools/schemas/model_parameters/asum_shaping.schema.yml +35 -0
- simtools/schemas/model_parameters/asum_threshold.schema.yml +38 -0
- simtools/schemas/model_parameters/atmospheric_profile.schema.yml +32 -0
- simtools/schemas/model_parameters/atmospheric_transmission.schema.yml +35 -0
- simtools/schemas/model_parameters/axes_offsets.schema.yml +53 -0
- simtools/schemas/model_parameters/camera_body_diameter.schema.yml +40 -0
- simtools/schemas/model_parameters/camera_body_shape.schema.yml +45 -0
- simtools/schemas/model_parameters/camera_config_file.schema.yml +40 -0
- simtools/schemas/model_parameters/camera_config_rotate.schema.yml +36 -0
- simtools/schemas/model_parameters/camera_degraded_efficiency.schema.yml +43 -0
- simtools/schemas/model_parameters/camera_degraded_map.schema.yml +42 -0
- simtools/schemas/model_parameters/camera_depth.schema.yml +42 -0
- simtools/schemas/model_parameters/camera_filter.schema.yml +45 -0
- simtools/schemas/model_parameters/camera_filter_incidence_angle.schema.yml +29 -0
- simtools/schemas/model_parameters/camera_pixels.schema.yml +36 -0
- simtools/schemas/model_parameters/camera_transmission.schema.yml +41 -0
- simtools/schemas/model_parameters/channels_per_chip.schema.yml +36 -0
- simtools/schemas/model_parameters/correct_nsb_spectrum_to_telescope_altitude.schema.yml +35 -0
- simtools/schemas/model_parameters/corsika_cherenkov_photon_bunch_size.schema.yml +27 -0
- simtools/schemas/model_parameters/corsika_cherenkov_photon_wavelength_range.schema.yml +38 -0
- simtools/schemas/model_parameters/corsika_first_interaction_height.schema.yml +28 -0
- simtools/schemas/model_parameters/corsika_iact_io_buffer.schema.yml +23 -0
- simtools/schemas/model_parameters/corsika_iact_max_bunches.schema.yml +27 -0
- simtools/schemas/model_parameters/corsika_iact_split_auto.schema.yml +28 -0
- simtools/schemas/model_parameters/corsika_longitudinal_shower_development.schema.yml +27 -0
- simtools/schemas/model_parameters/corsika_observation_level.schema.yml +38 -0
- simtools/schemas/model_parameters/corsika_particle_kinetic_energy_cutoff.schema.yml +52 -0
- simtools/schemas/model_parameters/corsika_starting_grammage.schema.yml +27 -0
- simtools/schemas/model_parameters/dark_events.schema.yml +32 -0
- simtools/schemas/model_parameters/default_trigger.schema.yml +35 -0
- simtools/schemas/model_parameters/design_model.schema.yml +31 -0
- simtools/schemas/model_parameters/disc_ac_coupled.schema.yml +32 -0
- simtools/schemas/model_parameters/disc_bins.schema.yml +39 -0
- simtools/schemas/model_parameters/disc_start.schema.yml +41 -0
- simtools/schemas/model_parameters/discriminator_amplitude.schema.yml +42 -0
- simtools/schemas/model_parameters/discriminator_fall_time.schema.yml +41 -0
- simtools/schemas/model_parameters/discriminator_gate_length.schema.yml +41 -0
- simtools/schemas/model_parameters/discriminator_hysteresis.schema.yml +39 -0
- simtools/schemas/model_parameters/discriminator_output_amplitude.schema.yml +40 -0
- simtools/schemas/model_parameters/discriminator_output_var_percent.schema.yml +41 -0
- simtools/schemas/model_parameters/discriminator_pulse_shape.schema.yml +33 -0
- simtools/schemas/model_parameters/discriminator_rise_time.schema.yml +42 -0
- simtools/schemas/model_parameters/discriminator_scale_threshold.schema.yml +37 -0
- simtools/schemas/model_parameters/discriminator_sigsum_over_threshold.schema.yml +44 -0
- simtools/schemas/model_parameters/discriminator_threshold.schema.yml +36 -0
- simtools/schemas/model_parameters/discriminator_time_over_threshold.schema.yml +45 -0
- simtools/schemas/model_parameters/discriminator_var_gate_length.schema.yml +40 -0
- simtools/schemas/model_parameters/discriminator_var_sigsum_over_threshold.schema.yml +41 -0
- simtools/schemas/model_parameters/discriminator_var_threshold.schema.yml +38 -0
- simtools/schemas/model_parameters/discriminator_var_time_over_threshold.schema.yml +38 -0
- simtools/schemas/model_parameters/dish_shape_length.schema.yml +41 -0
- simtools/schemas/model_parameters/dsum_clipping.schema.yml +38 -0
- simtools/schemas/model_parameters/dsum_ignore_below.schema.yml +38 -0
- simtools/schemas/model_parameters/dsum_offset.schema.yml +37 -0
- simtools/schemas/model_parameters/dsum_pedsub.schema.yml +33 -0
- simtools/schemas/model_parameters/dsum_pre_clipping.schema.yml +39 -0
- simtools/schemas/model_parameters/dsum_prescale.schema.yml +44 -0
- simtools/schemas/model_parameters/dsum_presum_max.schema.yml +38 -0
- simtools/schemas/model_parameters/dsum_presum_shift.schema.yml +45 -0
- simtools/schemas/model_parameters/dsum_shaping.schema.yml +44 -0
- simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml +32 -0
- simtools/schemas/model_parameters/dsum_threshold.schema.yml +43 -0
- simtools/schemas/model_parameters/dsum_zero_clip.schema.yml +42 -0
- simtools/schemas/model_parameters/effective_focal_length.schema.yml +61 -0
- simtools/schemas/model_parameters/epsg_code.schema.yml +37 -0
- simtools/schemas/model_parameters/fadc_ac_coupled.schema.yml +35 -0
- simtools/schemas/model_parameters/fadc_amplitude.schema.yml +46 -0
- simtools/schemas/model_parameters/fadc_bins.schema.yml +40 -0
- simtools/schemas/model_parameters/fadc_compensate_pedestal.schema.yml +50 -0
- simtools/schemas/model_parameters/fadc_dev_pedestal.schema.yml +38 -0
- simtools/schemas/model_parameters/fadc_err_compensate_pedestal.schema.yml +42 -0
- simtools/schemas/model_parameters/fadc_err_pedestal.schema.yml +49 -0
- simtools/schemas/model_parameters/fadc_lg_amplitude.schema.yml +47 -0
- simtools/schemas/model_parameters/fadc_lg_compensate_pedestal.schema.yml +51 -0
- simtools/schemas/model_parameters/fadc_lg_dev_pedestal.schema.yml +37 -0
- simtools/schemas/model_parameters/fadc_lg_err_compensate_pedestal.schema.yml +43 -0
- simtools/schemas/model_parameters/fadc_lg_err_pedestal.schema.yml +49 -0
- simtools/schemas/model_parameters/fadc_lg_max_signal.schema.yml +43 -0
- simtools/schemas/model_parameters/fadc_lg_max_sum.schema.yml +39 -0
- simtools/schemas/model_parameters/fadc_lg_noise.schema.yml +42 -0
- simtools/schemas/model_parameters/fadc_lg_pedestal.schema.yml +40 -0
- simtools/schemas/model_parameters/fadc_lg_sensitivity.schema.yml +50 -0
- simtools/schemas/model_parameters/fadc_lg_sysvar_pedestal.schema.yml +42 -0
- simtools/schemas/model_parameters/fadc_lg_var_pedestal.schema.yml +41 -0
- simtools/schemas/model_parameters/fadc_lg_var_sensitivity.schema.yml +42 -0
- simtools/schemas/model_parameters/fadc_max_signal.schema.yml +43 -0
- simtools/schemas/model_parameters/fadc_max_sum.schema.yml +39 -0
- simtools/schemas/model_parameters/fadc_mhz.schema.yml +31 -0
- simtools/schemas/model_parameters/fadc_noise.schema.yml +41 -0
- simtools/schemas/model_parameters/fadc_pedestal.schema.yml +40 -0
- simtools/schemas/model_parameters/fadc_pulse_shape.schema.yml +39 -0
- simtools/schemas/model_parameters/fadc_sensitivity.schema.yml +50 -0
- simtools/schemas/model_parameters/fadc_sum_bins.schema.yml +43 -0
- simtools/schemas/model_parameters/fadc_sum_offset.schema.yml +43 -0
- simtools/schemas/model_parameters/fadc_sysvar_pedestal.schema.yml +42 -0
- simtools/schemas/model_parameters/fadc_var_pedestal.schema.yml +41 -0
- simtools/schemas/model_parameters/fadc_var_sensitivity.schema.yml +42 -0
- simtools/schemas/model_parameters/flatfielding.schema.yml +37 -0
- simtools/schemas/model_parameters/focal_length.schema.yml +45 -0
- simtools/schemas/model_parameters/focal_surface_parameters.schema.yml +158 -0
- simtools/schemas/model_parameters/focal_surface_ref_radius.schema.yml +29 -0
- simtools/schemas/model_parameters/focus_offset.schema.yml +66 -0
- simtools/schemas/model_parameters/gain_variation.schema.yml +43 -0
- simtools/schemas/model_parameters/geomag_horizontal.schema.yml +34 -0
- simtools/schemas/model_parameters/geomag_rotation.schema.yml +37 -0
- simtools/schemas/model_parameters/geomag_vertical.schema.yml +34 -0
- simtools/schemas/model_parameters/hg_lg_variation.schema.yml +36 -0
- simtools/schemas/model_parameters/iobuf_maximum.schema.yml +34 -0
- simtools/schemas/model_parameters/iobuf_output_maximum.schema.yml +34 -0
- simtools/schemas/model_parameters/laser_events.schema.yml +36 -0
- simtools/schemas/model_parameters/laser_external_trigger.schema.yml +35 -0
- simtools/schemas/model_parameters/laser_photons.schema.yml +32 -0
- simtools/schemas/model_parameters/laser_pulse_exptime.schema.yml +34 -0
- simtools/schemas/model_parameters/laser_pulse_offset.schema.yml +34 -0
- simtools/schemas/model_parameters/laser_pulse_sigtime.schema.yml +33 -0
- simtools/schemas/model_parameters/laser_pulse_twidth.schema.yml +33 -0
- simtools/schemas/model_parameters/laser_var_photons.schema.yml +33 -0
- simtools/schemas/model_parameters/laser_wavelength.schema.yml +33 -0
- simtools/schemas/model_parameters/led_events.schema.yml +34 -0
- simtools/schemas/model_parameters/led_photons.schema.yml +34 -0
- simtools/schemas/model_parameters/led_pulse_offset.schema.yml +32 -0
- simtools/schemas/model_parameters/led_pulse_sigtime.schema.yml +33 -0
- simtools/schemas/model_parameters/led_var_photons.schema.yml +34 -0
- simtools/schemas/model_parameters/lightguide_efficiency_vs_incidence_angle.schema.yml +41 -0
- simtools/schemas/model_parameters/lightguide_efficiency_vs_wavelength.schema.yml +43 -0
- simtools/schemas/model_parameters/min_photoelectrons.schema.yml +35 -0
- simtools/schemas/model_parameters/min_photons.schema.yml +32 -0
- simtools/schemas/model_parameters/mirror_align_random_distance.schema.yml +36 -0
- simtools/schemas/model_parameters/mirror_align_random_horizontal.schema.yml +64 -0
- simtools/schemas/model_parameters/mirror_align_random_vertical.schema.yml +64 -0
- simtools/schemas/model_parameters/mirror_class.schema.yml +41 -0
- simtools/schemas/model_parameters/mirror_degraded_reflection.schema.yml +51 -0
- simtools/schemas/model_parameters/mirror_focal_length.schema.yml +42 -0
- simtools/schemas/model_parameters/mirror_list.schema.yml +38 -0
- simtools/schemas/model_parameters/mirror_offset.schema.yml +41 -0
- simtools/schemas/model_parameters/mirror_panel_2f_measurements.schema.yml +39 -0
- simtools/schemas/model_parameters/mirror_reflection_random_angle.schema.yml +61 -0
- simtools/schemas/model_parameters/mirror_reflectivity.schema.yml +40 -0
- simtools/schemas/model_parameters/multiplicity_offset.schema.yml +46 -0
- simtools/schemas/model_parameters/nsb_autoscale_airmass.schema.yml +51 -0
- simtools/schemas/model_parameters/nsb_gain_drop_scale.schema.yml +37 -0
- simtools/schemas/model_parameters/nsb_offaxis.schema.yml +79 -0
- simtools/schemas/model_parameters/nsb_pixel_rate.schema.yml +47 -0
- simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml +34 -0
- simtools/schemas/model_parameters/nsb_reference_value.schema.yml +33 -0
- simtools/schemas/model_parameters/nsb_scaling_factor.schema.yml +35 -0
- simtools/schemas/model_parameters/nsb_skymap.schema.yml +39 -0
- simtools/schemas/model_parameters/nsb_spectrum.schema.yml +50 -0
- simtools/schemas/model_parameters/num_gains.schema.yml +34 -0
- simtools/schemas/model_parameters/only_triggered_telescopes.schema.yml +33 -0
- simtools/schemas/model_parameters/optics_properties.schema.yml +31 -0
- simtools/schemas/model_parameters/parabolic_dish.schema.yml +32 -0
- simtools/schemas/model_parameters/pedestal_events.schema.yml +32 -0
- simtools/schemas/model_parameters/photon_delay.schema.yml +38 -0
- simtools/schemas/model_parameters/photons_per_run.schema.yml +33 -0
- simtools/schemas/model_parameters/pixel_cells.schema.yml +35 -0
- simtools/schemas/model_parameters/pixels_parallel.schema.yml +54 -0
- simtools/schemas/model_parameters/pixeltrg_time_step.schema.yml +40 -0
- simtools/schemas/model_parameters/pm_average_gain.schema.yml +34 -0
- simtools/schemas/model_parameters/pm_collection_efficiency.schema.yml +40 -0
- simtools/schemas/model_parameters/pm_gain_index.schema.yml +36 -0
- simtools/schemas/model_parameters/pm_photoelectron_spectrum.schema.yml +41 -0
- simtools/schemas/model_parameters/pm_transit_time.schema.yml +63 -0
- simtools/schemas/model_parameters/pm_voltage_variation.schema.yml +39 -0
- simtools/schemas/model_parameters/primary_mirror_degraded_map.schema.yml +42 -0
- simtools/schemas/model_parameters/primary_mirror_diameter.schema.yml +33 -0
- simtools/schemas/model_parameters/primary_mirror_hole_diameter.schema.yml +33 -0
- simtools/schemas/model_parameters/primary_mirror_incidence_angle.schema.yml +29 -0
- simtools/schemas/model_parameters/primary_mirror_parameters.schema.yml +168 -0
- simtools/schemas/model_parameters/primary_mirror_ref_radius.schema.yml +36 -0
- simtools/schemas/model_parameters/primary_mirror_segmentation.schema.yml +34 -0
- simtools/schemas/model_parameters/qe_variation.schema.yml +43 -0
- simtools/schemas/model_parameters/quantum_efficiency.schema.yml +42 -0
- simtools/schemas/model_parameters/random_focal_length.schema.yml +45 -0
- simtools/schemas/model_parameters/random_generator.schema.yml +36 -0
- simtools/schemas/model_parameters/reference_point_altitude.schema.yml +35 -0
- simtools/schemas/model_parameters/reference_point_latitude.schema.yml +36 -0
- simtools/schemas/model_parameters/reference_point_longitude.schema.yml +36 -0
- simtools/schemas/model_parameters/reference_point_utm_east.schema.yml +34 -0
- simtools/schemas/model_parameters/reference_point_utm_north.schema.yml +34 -0
- simtools/schemas/model_parameters/sampled_output.schema.yml +31 -0
- simtools/schemas/model_parameters/save_pe_with_amplitude.schema.yml +34 -0
- simtools/schemas/model_parameters/secondary_mirror_baffle.schema.yml +79 -0
- simtools/schemas/model_parameters/secondary_mirror_degraded_map.schema.yml +42 -0
- simtools/schemas/model_parameters/secondary_mirror_degraded_reflection.schema.yml +41 -0
- simtools/schemas/model_parameters/secondary_mirror_diameter.schema.yml +33 -0
- simtools/schemas/model_parameters/secondary_mirror_hole_diameter.schema.yml +36 -0
- simtools/schemas/model_parameters/secondary_mirror_incidence_angle.schema.yml +29 -0
- simtools/schemas/model_parameters/secondary_mirror_parameters.schema.yml +168 -0
- simtools/schemas/model_parameters/secondary_mirror_ref_radius.schema.yml +36 -0
- simtools/schemas/model_parameters/secondary_mirror_reflectivity.schema.yml +35 -0
- simtools/schemas/model_parameters/secondary_mirror_segmentation.schema.yml +37 -0
- simtools/schemas/model_parameters/secondary_mirror_shadow_diameter.schema.yml +40 -0
- simtools/schemas/model_parameters/secondary_mirror_shadow_offset.schema.yml +40 -0
- simtools/schemas/model_parameters/store_photoelectrons.schema.yml +41 -0
- simtools/schemas/model_parameters/tailcut_scale.schema.yml +40 -0
- simtools/schemas/model_parameters/telescope_axis_height.schema.yml +31 -0
- simtools/schemas/model_parameters/telescope_random_angle.schema.yml +35 -0
- simtools/schemas/model_parameters/telescope_random_error.schema.yml +34 -0
- simtools/schemas/model_parameters/telescope_sphere_radius.schema.yml +37 -0
- simtools/schemas/model_parameters/telescope_transmission.schema.yml +113 -0
- simtools/schemas/model_parameters/teltrig_min_sigsum.schema.yml +41 -0
- simtools/schemas/model_parameters/teltrig_min_time.schema.yml +36 -0
- simtools/schemas/model_parameters/transit_time_calib_error.schema.yml +36 -0
- simtools/schemas/model_parameters/transit_time_compensate_error.schema.yml +37 -0
- simtools/schemas/model_parameters/transit_time_compensate_step.schema.yml +38 -0
- simtools/schemas/model_parameters/transit_time_error.schema.yml +45 -0
- simtools/schemas/model_parameters/transit_time_jitter.schema.yml +36 -0
- simtools/schemas/model_parameters/trigger_current_limit.schema.yml +32 -0
- simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml +53 -0
- simtools/schemas/model_parameters/trigger_pixels.schema.yml +40 -0
- simtools/simtel/simtel_config_reader.py +353 -0
- simtools/simtel/simtel_config_writer.py +244 -63
- simtools/simtel/{simtel_events.py → simtel_io_events.py} +26 -25
- simtools/simtel/simtel_io_histogram.py +661 -0
- simtools/simtel/simtel_io_histograms.py +569 -0
- simtools/simtel/simulator_array.py +145 -0
- simtools/simtel/{simtel_runner_camera_efficiency.py → simulator_camera_efficiency.py} +76 -52
- simtools/simtel/simulator_light_emission.py +473 -0
- simtools/simtel/simulator_ray_tracing.py +262 -0
- simtools/simulator.py +220 -446
- simtools/testing/__init__.py +0 -0
- simtools/testing/assertions.py +151 -0
- simtools/testing/configuration.py +226 -0
- simtools/testing/helpers.py +42 -0
- simtools/testing/validate_output.py +240 -0
- simtools/utils/general.py +340 -437
- simtools/utils/geometry.py +12 -12
- simtools/utils/names.py +257 -644
- simtools/utils/value_conversion.py +176 -0
- simtools/version.py +3 -1
- simtools/visualization/legend_handlers.py +135 -152
- simtools/visualization/plot_camera.py +379 -0
- simtools/visualization/visualize.py +346 -167
- gammasimtools-0.6.1.dist-info/METADATA +0 -180
- gammasimtools-0.6.1.dist-info/RECORD +0 -91
- gammasimtools-0.6.1.dist-info/entry_points.txt +0 -23
- simtools/_dev_version/scm_version.py +0 -10
- simtools/applications/db_development_tools/add_new_parameter_to_db.py +0 -81
- simtools/applications/db_development_tools/add_unit_to_parameter_in_db.py +0 -59
- simtools/applications/db_development_tools/mark_non_optics_parameters_non_applicable.py +0 -102
- simtools/applications/get_parameter.py +0 -92
- simtools/applications/make_regular_arrays.py +0 -160
- simtools/applications/produce_array_config.py +0 -136
- simtools/applications/production.py +0 -313
- simtools/applications/sim_showers_for_trigger_rates.py +0 -187
- simtools/applications/tune_psf.py +0 -334
- simtools/corsika/corsika_default_config.py +0 -282
- simtools/corsika/corsika_runner.py +0 -450
- simtools/corsika_simtel/corsika_simtel_runner.py +0 -197
- simtools/db_handler.py +0 -1480
- simtools/ray_tracing.py +0 -525
- simtools/simtel/simtel_histograms.py +0 -414
- simtools/simtel/simtel_runner.py +0 -244
- simtools/simtel/simtel_runner_array.py +0 -293
- simtools/simtel/simtel_runner_ray_tracing.py +0 -277
- {gammasimtools-0.6.1.dist-info → gammasimtools-0.8.2.dist-info}/LICENSE +0 -0
- {gammasimtools-0.6.1.dist-info → gammasimtools-0.8.2.dist-info}/top_level.txt +0 -0
- /simtools/{corsika_simtel → db}/__init__.py +0 -0
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"""Simulation runner for ray tracing simulations."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
from collections import namedtuple
|
|
5
|
+
|
|
6
|
+
import astropy.units as u
|
|
7
|
+
|
|
8
|
+
from simtools.io_operations import io_handler
|
|
9
|
+
from simtools.runners.simtel_runner import SimtelRunner
|
|
10
|
+
from simtools.utils import names
|
|
11
|
+
|
|
12
|
+
__all__ = ["SimulatorRayTracing"]
|
|
13
|
+
|
|
14
|
+
# pylint: disable=no-member
|
|
15
|
+
# The line above is needed because there are members which are created
|
|
16
|
+
# by adding them to the __dict__ of the class rather than directly.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class SimulatorRayTracing(SimtelRunner):
|
|
20
|
+
"""
|
|
21
|
+
Perform ray tracing simulations with sim_telarray.
|
|
22
|
+
|
|
23
|
+
Parameters
|
|
24
|
+
----------
|
|
25
|
+
telescope_model: TelescopeModel
|
|
26
|
+
telescope model
|
|
27
|
+
label: str
|
|
28
|
+
label used for output file naming.
|
|
29
|
+
simtel_path: str or Path
|
|
30
|
+
Location of sim_telarray installation.
|
|
31
|
+
config_data: namedtuple
|
|
32
|
+
namedtuple containing the configurable parameters as values (expected units in
|
|
33
|
+
brackets): zenith_angle (deg), off_axis_angle (deg), source_distance (km),
|
|
34
|
+
single_mirror_mode, use_random_focal_length,
|
|
35
|
+
mirror_numbers.
|
|
36
|
+
force_simulate: bool
|
|
37
|
+
Remove existing files and force re-running of the ray-tracing simulation.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
def __init__(
|
|
41
|
+
self,
|
|
42
|
+
telescope_model,
|
|
43
|
+
label=None,
|
|
44
|
+
simtel_path=None,
|
|
45
|
+
config_data=None,
|
|
46
|
+
force_simulate=False,
|
|
47
|
+
test=False,
|
|
48
|
+
):
|
|
49
|
+
"""Initialize SimtelRunner."""
|
|
50
|
+
self._logger = logging.getLogger(__name__)
|
|
51
|
+
self._logger.debug("Init SimulatorRayTracing")
|
|
52
|
+
|
|
53
|
+
super().__init__(label=label, simtel_path=simtel_path)
|
|
54
|
+
|
|
55
|
+
self.telescope_model = telescope_model
|
|
56
|
+
self.label = label if label is not None else self.telescope_model.label
|
|
57
|
+
|
|
58
|
+
self.io_handler = io_handler.IOHandler()
|
|
59
|
+
self._base_directory = self.io_handler.get_output_directory(self.label, "ray-tracing")
|
|
60
|
+
|
|
61
|
+
self.config = (
|
|
62
|
+
self._config_to_namedtuple(config_data)
|
|
63
|
+
if isinstance(config_data, dict)
|
|
64
|
+
else config_data
|
|
65
|
+
)
|
|
66
|
+
self._rep_number = 0
|
|
67
|
+
self.runs_per_set = 1 if self.config.single_mirror_mode else 20
|
|
68
|
+
self.photons_per_run = 100000 if not test else 5000
|
|
69
|
+
|
|
70
|
+
self._load_required_files(force_simulate)
|
|
71
|
+
|
|
72
|
+
def _load_required_files(self, force_simulate):
|
|
73
|
+
"""
|
|
74
|
+
Load required files for the simulation. Depends on the running mode.
|
|
75
|
+
|
|
76
|
+
Initialize files for the simulation.
|
|
77
|
+
|
|
78
|
+
Parameters
|
|
79
|
+
----------
|
|
80
|
+
force_simulate: bool
|
|
81
|
+
Remove existing files and force re-running of the ray-tracing simulation.
|
|
82
|
+
"""
|
|
83
|
+
# This file is not actually needed and does not exist in simtools.
|
|
84
|
+
# It is required as CORSIKA input file to sim_telarray
|
|
85
|
+
self._corsika_file = self._simtel_path.joinpath("run9991.corsika.gz")
|
|
86
|
+
|
|
87
|
+
# Loop to define and remove existing files.
|
|
88
|
+
# Files will be named _base_file = self.__dict__['_' + base + 'File']
|
|
89
|
+
for base_name in ["stars", "photons", "log"]:
|
|
90
|
+
file_name = names.generate_file_name(
|
|
91
|
+
file_type=base_name,
|
|
92
|
+
suffix=".log" if base_name == "log" else ".lis",
|
|
93
|
+
site=self.telescope_model.site,
|
|
94
|
+
telescope_model_name=self.telescope_model.name,
|
|
95
|
+
source_distance=(
|
|
96
|
+
None if self.config.single_mirror_mode else self.config.source_distance
|
|
97
|
+
),
|
|
98
|
+
zenith_angle=self.config.zenith_angle,
|
|
99
|
+
off_axis_angle=self.config.off_axis_angle,
|
|
100
|
+
mirror_number=(
|
|
101
|
+
self.config.mirror_numbers if self.config.single_mirror_mode else None
|
|
102
|
+
),
|
|
103
|
+
label=self.label,
|
|
104
|
+
)
|
|
105
|
+
file = self._base_directory.joinpath(file_name)
|
|
106
|
+
if file.exists() and force_simulate:
|
|
107
|
+
file.unlink()
|
|
108
|
+
# Defining the file name variable as an class attribute.
|
|
109
|
+
self.__dict__["_" + base_name + "_file"] = file
|
|
110
|
+
|
|
111
|
+
if not file.exists() or force_simulate:
|
|
112
|
+
# Adding header to photon list file.
|
|
113
|
+
with self._photons_file.open("w", encoding="utf-8") as file:
|
|
114
|
+
file.write(f"#{50 * '='}\n")
|
|
115
|
+
file.write("# List of photons for RayTracing simulations\n")
|
|
116
|
+
file.write(f"#{50 * '='}\n")
|
|
117
|
+
file.write(f"# config_file = {self.telescope_model.get_config_file()}\n")
|
|
118
|
+
file.write(f"# zenith_angle [deg] = {self.config.zenith_angle}\n")
|
|
119
|
+
file.write(f"# off_axis_angle [deg] = {self.config.off_axis_angle}\n")
|
|
120
|
+
file.write(f"# source_distance [km] = {self.config.source_distance}\n")
|
|
121
|
+
if self.config.single_mirror_mode:
|
|
122
|
+
file.write(f"# mirror_number = {self.config.mirror_numbers}\n\n")
|
|
123
|
+
|
|
124
|
+
# Filling a star file with a single light source defined by
|
|
125
|
+
# - azimuth
|
|
126
|
+
# - elevation
|
|
127
|
+
# - flux
|
|
128
|
+
# - distance of light source
|
|
129
|
+
with self._stars_file.open("w", encoding="utf-8") as file:
|
|
130
|
+
file.write(
|
|
131
|
+
f"0. {90.0 - self.config.zenith_angle} 1.0 {self.config.source_distance}\n"
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
if self.config.single_mirror_mode:
|
|
135
|
+
self._logger.debug("For single mirror mode, need to prepare the single pixel camera.")
|
|
136
|
+
self._write_out_single_pixel_camera_file()
|
|
137
|
+
|
|
138
|
+
def _make_run_command(
|
|
139
|
+
self, run_number=None, input_file=None
|
|
140
|
+
): # pylint: disable=unused-argument
|
|
141
|
+
"""Generate simtel_array run command."""
|
|
142
|
+
if self.config.single_mirror_mode:
|
|
143
|
+
# Note: no mirror length defined for dual-mirror telescopes
|
|
144
|
+
_mirror_focal_length = float(
|
|
145
|
+
self.telescope_model.get_parameter_value("mirror_focal_length")
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
# RayTracing
|
|
149
|
+
command = str(self._simtel_path.joinpath("sim_telarray/bin/sim_telarray"))
|
|
150
|
+
command += f" -c {self.telescope_model.get_config_file()}"
|
|
151
|
+
command += f" -I{self.telescope_model.config_file_directory}"
|
|
152
|
+
command += super().get_config_option("random_state", "none")
|
|
153
|
+
command += super().get_config_option("IMAGING_LIST", str(self._photons_file))
|
|
154
|
+
command += super().get_config_option("stars", str(self._stars_file))
|
|
155
|
+
command += super().get_config_option(
|
|
156
|
+
"altitude", self.telescope_model.get_parameter_value("corsika_observation_level")
|
|
157
|
+
)
|
|
158
|
+
command += super().get_config_option(
|
|
159
|
+
"telescope_theta",
|
|
160
|
+
self.config.zenith_angle + self.config.off_axis_angle,
|
|
161
|
+
)
|
|
162
|
+
command += super().get_config_option("star_photons", str(self.photons_per_run))
|
|
163
|
+
command += super().get_config_option("telescope_phi", "0")
|
|
164
|
+
command += super().get_config_option("camera_transmission", "1.0")
|
|
165
|
+
command += super().get_config_option("nightsky_background", "all:0.")
|
|
166
|
+
command += super().get_config_option("trigger_current_limit", "1e10")
|
|
167
|
+
command += super().get_config_option("telescope_random_angle", "0")
|
|
168
|
+
command += super().get_config_option("telescope_random_error", "0")
|
|
169
|
+
command += super().get_config_option("convergent_depth", "0")
|
|
170
|
+
command += super().get_config_option("maximum_telescopes", "1")
|
|
171
|
+
command += super().get_config_option("show", "all")
|
|
172
|
+
command += super().get_config_option("camera_filter", "none")
|
|
173
|
+
if self.config.single_mirror_mode:
|
|
174
|
+
command += super().get_config_option("focus_offset", "all:0.")
|
|
175
|
+
command += super().get_config_option("camera_config_file", "single_pixel_camera.dat")
|
|
176
|
+
command += super().get_config_option("camera_pixels", "1")
|
|
177
|
+
command += super().get_config_option("trigger_pixels", "1")
|
|
178
|
+
command += super().get_config_option("camera_body_diameter", "0")
|
|
179
|
+
command += super().get_config_option(
|
|
180
|
+
"mirror_list",
|
|
181
|
+
self.telescope_model.get_single_mirror_list_file(
|
|
182
|
+
self.config.mirror_numbers, self.config.use_random_focal_length
|
|
183
|
+
),
|
|
184
|
+
)
|
|
185
|
+
command += super().get_config_option(
|
|
186
|
+
"focal_length", self.config.source_distance * u.km.to(u.cm)
|
|
187
|
+
)
|
|
188
|
+
command += super().get_config_option("dish_shape_length", _mirror_focal_length)
|
|
189
|
+
command += super().get_config_option("mirror_focal_length", _mirror_focal_length)
|
|
190
|
+
command += super().get_config_option("parabolic_dish", "0")
|
|
191
|
+
command += super().get_config_option("mirror_align_random_distance", "0.")
|
|
192
|
+
command += super().get_config_option("mirror_align_random_vertical", "0.,28.,0.,0.")
|
|
193
|
+
command += " " + str(self._corsika_file)
|
|
194
|
+
command += f" 2>&1 > {self._log_file} 2>&1"
|
|
195
|
+
|
|
196
|
+
return command
|
|
197
|
+
|
|
198
|
+
def _check_run_result(self, run_number=None): # pylint: disable=unused-argument
|
|
199
|
+
"""
|
|
200
|
+
Check run results.
|
|
201
|
+
|
|
202
|
+
Photon list files should have at least 100 lines.
|
|
203
|
+
|
|
204
|
+
Returns
|
|
205
|
+
-------
|
|
206
|
+
bool
|
|
207
|
+
True if photon list is not empty.
|
|
208
|
+
|
|
209
|
+
Raises
|
|
210
|
+
------
|
|
211
|
+
RuntimeError
|
|
212
|
+
if Photon list is empty.
|
|
213
|
+
"""
|
|
214
|
+
with open(self._photons_file, "rb") as ff:
|
|
215
|
+
n_lines = sum(1 for _ in ff)
|
|
216
|
+
if n_lines < 100:
|
|
217
|
+
raise RuntimeError("Photon list is empty.")
|
|
218
|
+
return True
|
|
219
|
+
|
|
220
|
+
def _write_out_single_pixel_camera_file(self):
|
|
221
|
+
"""Write out the single pixel camera file."""
|
|
222
|
+
with self.telescope_model.config_file_directory.joinpath("single_pixel_camera.dat").open(
|
|
223
|
+
"w"
|
|
224
|
+
) as file:
|
|
225
|
+
file.write("# Single pixel camera\n")
|
|
226
|
+
file.write('PixType 1 0 0 300 1 300 0.00 "funnel_perfect.dat"\n')
|
|
227
|
+
file.write("Pixel 0 1 0. 0. 0 0 0 0x00 1\n")
|
|
228
|
+
file.write("Trigger 1 of 0\n")
|
|
229
|
+
|
|
230
|
+
# need to also write out the funnel_perfect.dat file
|
|
231
|
+
with self.telescope_model.config_file_directory.joinpath("funnel_perfect.dat").open(
|
|
232
|
+
"w"
|
|
233
|
+
) as file:
|
|
234
|
+
file.write(
|
|
235
|
+
"# Perfect light collection where the angular efficiency of funnels is needed\n"
|
|
236
|
+
)
|
|
237
|
+
file.write("0 1.0\n")
|
|
238
|
+
file.write("30 1.0\n")
|
|
239
|
+
file.write("60 1.0\n")
|
|
240
|
+
file.write("90 1.0\n")
|
|
241
|
+
|
|
242
|
+
def _config_to_namedtuple(self, data_dict):
|
|
243
|
+
"""Convert dict to namedtuple for configuration."""
|
|
244
|
+
config_data = namedtuple(
|
|
245
|
+
"Config",
|
|
246
|
+
[
|
|
247
|
+
"zenith_angle",
|
|
248
|
+
"off_axis_angle",
|
|
249
|
+
"source_distance",
|
|
250
|
+
"single_mirror_mode",
|
|
251
|
+
"use_random_focal_length",
|
|
252
|
+
"mirror_numbers",
|
|
253
|
+
],
|
|
254
|
+
)
|
|
255
|
+
return config_data(
|
|
256
|
+
zenith_angle=data_dict["zenith_angle"],
|
|
257
|
+
off_axis_angle=data_dict["off_axis_angle"],
|
|
258
|
+
source_distance=data_dict["source_distance"],
|
|
259
|
+
single_mirror_mode=data_dict["single_mirror_mode"],
|
|
260
|
+
use_random_focal_length=data_dict["use_random_focal_length"],
|
|
261
|
+
mirror_numbers=data_dict["mirror_numbers"],
|
|
262
|
+
)
|