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,145 @@
|
|
|
1
|
+
"""Simulation runner for array simulations."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
|
|
5
|
+
from simtools.io_operations import io_handler
|
|
6
|
+
from simtools.runners.simtel_runner import InvalidOutputFileError, SimtelRunner
|
|
7
|
+
|
|
8
|
+
__all__ = ["SimulatorArray"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SimulatorArray(SimtelRunner):
|
|
12
|
+
"""
|
|
13
|
+
SimulatorArray is the interface with sim_telarray to perform array simulations.
|
|
14
|
+
|
|
15
|
+
Parameters
|
|
16
|
+
----------
|
|
17
|
+
corsika_config_data: CorsikaConfig
|
|
18
|
+
CORSIKA configuration.
|
|
19
|
+
simtel_path: str or Path
|
|
20
|
+
Location of source of the sim_telarray/CORSIKA package.
|
|
21
|
+
label: str
|
|
22
|
+
Instance label.
|
|
23
|
+
use_multipipe: bool
|
|
24
|
+
Use multipipe to run CORSIKA and sim_telarray.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def __init__(
|
|
28
|
+
self,
|
|
29
|
+
corsika_config,
|
|
30
|
+
simtel_path,
|
|
31
|
+
label=None,
|
|
32
|
+
use_multipipe=False,
|
|
33
|
+
sim_telarray_seeds=None,
|
|
34
|
+
):
|
|
35
|
+
"""Initialize SimulatorArray."""
|
|
36
|
+
self._logger = logging.getLogger(__name__)
|
|
37
|
+
self._logger.debug("Init SimulatorArray")
|
|
38
|
+
super().__init__(
|
|
39
|
+
label=label,
|
|
40
|
+
simtel_path=simtel_path,
|
|
41
|
+
corsika_config=corsika_config,
|
|
42
|
+
use_multipipe=use_multipipe,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
self.sim_telarray_seeds = sim_telarray_seeds
|
|
46
|
+
self.corsika_config = corsika_config
|
|
47
|
+
self.io_handler = io_handler.IOHandler()
|
|
48
|
+
self._log_file = None
|
|
49
|
+
|
|
50
|
+
def _make_run_command(self, run_number=None, input_file=None):
|
|
51
|
+
"""
|
|
52
|
+
Build and return the command to run simtel_array.
|
|
53
|
+
|
|
54
|
+
Parameters
|
|
55
|
+
----------
|
|
56
|
+
input_file: str
|
|
57
|
+
Full path of the input CORSIKA file
|
|
58
|
+
run_number: int (optional)
|
|
59
|
+
run number
|
|
60
|
+
|
|
61
|
+
Returns
|
|
62
|
+
-------
|
|
63
|
+
str
|
|
64
|
+
Command to run sim_telarray.
|
|
65
|
+
"""
|
|
66
|
+
self._log_file = self.get_file_name(file_type="log", run_number=run_number)
|
|
67
|
+
histogram_file = self.get_file_name(file_type="histogram", run_number=run_number)
|
|
68
|
+
output_file = self.get_file_name(file_type="output", run_number=run_number)
|
|
69
|
+
|
|
70
|
+
# Array
|
|
71
|
+
command = str(self._simtel_path.joinpath("sim_telarray/bin/sim_telarray"))
|
|
72
|
+
command += f" -c {self.corsika_config.array_model.get_config_file()}"
|
|
73
|
+
command += f" -I{self.corsika_config.array_model.get_config_directory()}"
|
|
74
|
+
command += super().get_config_option("telescope_theta", self.corsika_config.zenith_angle)
|
|
75
|
+
command += super().get_config_option("telescope_phi", self.corsika_config.azimuth_angle)
|
|
76
|
+
command += super().get_config_option(
|
|
77
|
+
"power_law",
|
|
78
|
+
SimulatorArray.get_power_law_for_sim_telarray_histograms(
|
|
79
|
+
self.corsika_config.primary_particle
|
|
80
|
+
),
|
|
81
|
+
)
|
|
82
|
+
command += super().get_config_option("histogram_file", histogram_file)
|
|
83
|
+
command += super().get_config_option("output_file", output_file)
|
|
84
|
+
command += super().get_config_option("random_state", "none")
|
|
85
|
+
if self.sim_telarray_seeds:
|
|
86
|
+
command += super().get_config_option("random_seed", self.sim_telarray_seeds)
|
|
87
|
+
command += super().get_config_option("show", "all")
|
|
88
|
+
command += f" {input_file}"
|
|
89
|
+
command += f" > {self._log_file} 2>&1 || exit"
|
|
90
|
+
|
|
91
|
+
return command
|
|
92
|
+
|
|
93
|
+
def _check_run_result(self, run_number=None):
|
|
94
|
+
"""
|
|
95
|
+
Check if simtel output file exists.
|
|
96
|
+
|
|
97
|
+
Parameters
|
|
98
|
+
----------
|
|
99
|
+
run_number: int
|
|
100
|
+
Run number.
|
|
101
|
+
|
|
102
|
+
Returns
|
|
103
|
+
-------
|
|
104
|
+
bool
|
|
105
|
+
True if simtel output file exists.
|
|
106
|
+
|
|
107
|
+
Raises
|
|
108
|
+
------
|
|
109
|
+
InvalidOutputFileError
|
|
110
|
+
If simtel output file does not exist.
|
|
111
|
+
"""
|
|
112
|
+
output_file = self.get_file_name(file_type="output", run_number=run_number)
|
|
113
|
+
if not output_file.exists():
|
|
114
|
+
msg = f"sim_telarray output file {output_file} does not exist."
|
|
115
|
+
self._logger.error(msg)
|
|
116
|
+
raise InvalidOutputFileError(msg)
|
|
117
|
+
self._logger.debug(f"simtel_array output file {output_file} exists.")
|
|
118
|
+
return True
|
|
119
|
+
|
|
120
|
+
@staticmethod
|
|
121
|
+
def get_power_law_for_sim_telarray_histograms(primary):
|
|
122
|
+
"""
|
|
123
|
+
Get the power law index for sim_telarray.
|
|
124
|
+
|
|
125
|
+
Events will be histogrammed in sim_telarray with a weight according to
|
|
126
|
+
the difference between this exponent and the one used for the shower simulations.
|
|
127
|
+
|
|
128
|
+
Parameters
|
|
129
|
+
----------
|
|
130
|
+
primary: str
|
|
131
|
+
Primary particle.
|
|
132
|
+
|
|
133
|
+
Returns
|
|
134
|
+
-------
|
|
135
|
+
float
|
|
136
|
+
Power law index.
|
|
137
|
+
"""
|
|
138
|
+
power_laws = {
|
|
139
|
+
"gamma": 2.5,
|
|
140
|
+
"electron": 3.3,
|
|
141
|
+
}
|
|
142
|
+
if primary.name in power_laws:
|
|
143
|
+
return power_laws[primary.name]
|
|
144
|
+
|
|
145
|
+
return 2.68
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
"""Simulation runner for camera efficiency calculations."""
|
|
2
|
+
|
|
1
3
|
import logging
|
|
2
4
|
from pathlib import Path
|
|
3
5
|
|
|
4
|
-
from simtools.
|
|
6
|
+
from simtools.model.model_parameter import InvalidModelParameterError
|
|
7
|
+
from simtools.runners.simtel_runner import SimtelRunner
|
|
8
|
+
from simtools.utils import general
|
|
5
9
|
|
|
6
|
-
__all__ = ["
|
|
10
|
+
__all__ = ["SimulatorCameraEfficiency"]
|
|
7
11
|
|
|
8
12
|
|
|
9
|
-
class
|
|
13
|
+
class SimulatorCameraEfficiency(SimtelRunner):
|
|
10
14
|
"""
|
|
11
|
-
|
|
12
|
-
camera efficiency simulations.
|
|
15
|
+
Interface with the testeff tool of sim_telarray to perform camera efficiency simulations.
|
|
13
16
|
|
|
14
17
|
Parameters
|
|
15
18
|
----------
|
|
@@ -17,31 +20,32 @@ class SimtelRunnerCameraEfficiency(SimtelRunner):
|
|
|
17
20
|
Instance of TelescopeModel class.
|
|
18
21
|
label: str
|
|
19
22
|
Instance label. Important for output file naming.
|
|
20
|
-
|
|
23
|
+
simtel_path: str or Path
|
|
21
24
|
Location of sim_telarray installation.
|
|
22
25
|
file_simtel: str or Path
|
|
23
|
-
|
|
26
|
+
Location of the sim_telarray testeff tool output file.
|
|
24
27
|
zenith_angle: float
|
|
25
|
-
|
|
28
|
+
Zenith angle given in the config to CameraEfficiency.
|
|
29
|
+
nsb_spectrum: str or Path
|
|
30
|
+
Path to the nsb spectrum file.
|
|
26
31
|
"""
|
|
27
32
|
|
|
28
33
|
def __init__(
|
|
29
34
|
self,
|
|
30
35
|
telescope_model,
|
|
31
36
|
label=None,
|
|
32
|
-
|
|
37
|
+
simtel_path=None,
|
|
33
38
|
file_simtel=None,
|
|
34
39
|
file_log=None,
|
|
35
40
|
zenith_angle=None,
|
|
36
41
|
nsb_spectrum=None,
|
|
42
|
+
skip_correction_to_nsb_spectrum=False,
|
|
37
43
|
):
|
|
38
|
-
"""
|
|
39
|
-
Initialize SimtelRunner.
|
|
40
|
-
"""
|
|
44
|
+
"""Initialize SimtelRunner."""
|
|
41
45
|
self._logger = logging.getLogger(__name__)
|
|
42
|
-
self._logger.debug("Init
|
|
46
|
+
self._logger.debug("Init SimulatorCameraEfficiency")
|
|
43
47
|
|
|
44
|
-
super().__init__(label=label,
|
|
48
|
+
super().__init__(label=label, simtel_path=simtel_path)
|
|
45
49
|
|
|
46
50
|
self._telescope_model = telescope_model
|
|
47
51
|
self.label = label if label is not None else self._telescope_model.label
|
|
@@ -50,29 +54,28 @@ class SimtelRunnerCameraEfficiency(SimtelRunner):
|
|
|
50
54
|
self._file_log = file_log
|
|
51
55
|
self.zenith_angle = zenith_angle
|
|
52
56
|
self.nsb_spectrum = nsb_spectrum
|
|
57
|
+
self.skip_correction_to_nsb_spectrum = skip_correction_to_nsb_spectrum
|
|
53
58
|
|
|
54
59
|
@property
|
|
55
60
|
def nsb_spectrum(self):
|
|
56
|
-
"""nsb_spectrum property"""
|
|
61
|
+
"""nsb_spectrum property."""
|
|
57
62
|
return self._nsb_spectrum
|
|
58
63
|
|
|
59
64
|
@nsb_spectrum.setter
|
|
60
65
|
def nsb_spectrum(self, nsb_spectrum):
|
|
61
|
-
"""Setter for nsb_spectrum"""
|
|
66
|
+
"""Setter for nsb_spectrum."""
|
|
62
67
|
if nsb_spectrum is not None:
|
|
63
68
|
self._nsb_spectrum = self._validate_or_fix_nsb_spectrum_file_format(nsb_spectrum)
|
|
64
69
|
else:
|
|
65
|
-
self._nsb_spectrum =
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return not self._file_simtel.exists()
|
|
70
|
-
|
|
71
|
-
def _make_run_command(self, **kwargs): # pylint: disable=unused-argument
|
|
72
|
-
"""
|
|
73
|
-
Prepare the command used to run testeff
|
|
74
|
-
"""
|
|
70
|
+
self._nsb_spectrum = (
|
|
71
|
+
self._telescope_model.config_file_directory
|
|
72
|
+
/ Path(self._telescope_model.get_parameter_value("nsb_reference_spectrum")).name
|
|
73
|
+
)
|
|
75
74
|
|
|
75
|
+
def _make_run_command(
|
|
76
|
+
self, run_number=None, input_file=None
|
|
77
|
+
): # pylint: disable=unused-argument
|
|
78
|
+
"""Prepare the command used to run testeff."""
|
|
76
79
|
self._logger.debug("Preparing the command to run testeff")
|
|
77
80
|
|
|
78
81
|
# Processing camera pixel features
|
|
@@ -81,20 +84,21 @@ class SimtelRunnerCameraEfficiency(SimtelRunner):
|
|
|
81
84
|
pixel_diameter = self._telescope_model.camera.get_pixel_diameter()
|
|
82
85
|
|
|
83
86
|
# Processing focal length
|
|
84
|
-
focal_length = self._telescope_model.
|
|
85
|
-
if focal_length == 0.0:
|
|
86
|
-
self._logger.warning("Using focal_length because effective_focal_length is 0")
|
|
87
|
-
focal_length = self._telescope_model.get_parameter_value_with_unit("focal_length")
|
|
87
|
+
focal_length = self._telescope_model.get_telescope_effective_focal_length("m", True)
|
|
88
88
|
|
|
89
89
|
# Processing mirror class
|
|
90
90
|
mirror_class = 1
|
|
91
|
-
|
|
91
|
+
try:
|
|
92
92
|
mirror_class = self._telescope_model.get_parameter_value("mirror_class")
|
|
93
|
+
except InvalidModelParameterError:
|
|
94
|
+
pass
|
|
93
95
|
|
|
94
96
|
# Processing camera transmission
|
|
95
97
|
camera_transmission = 1
|
|
96
|
-
|
|
98
|
+
try:
|
|
97
99
|
camera_transmission = self._telescope_model.get_parameter_value("camera_transmission")
|
|
100
|
+
except KeyError:
|
|
101
|
+
pass
|
|
98
102
|
|
|
99
103
|
# Processing camera filter
|
|
100
104
|
# A special case is testeff does not support 2D distributions
|
|
@@ -117,21 +121,26 @@ class SimtelRunnerCameraEfficiency(SimtelRunner):
|
|
|
117
121
|
"mirror_reflectivity", "secondary_mirror_incidence_angle"
|
|
118
122
|
)
|
|
119
123
|
|
|
120
|
-
command = str(self.
|
|
124
|
+
command = str(self._simtel_path.joinpath("sim_telarray/testeff"))
|
|
125
|
+
if self.skip_correction_to_nsb_spectrum:
|
|
126
|
+
command += " -nc" # Do not apply correction to original altitude where B&E was derived
|
|
127
|
+
command += " -I" # Clear the fall-back configuration directories
|
|
128
|
+
command += f" -I{self._telescope_model.config_file_directory}"
|
|
121
129
|
if self.nsb_spectrum is not None:
|
|
122
130
|
command += f" -fnsb {self.nsb_spectrum}"
|
|
123
131
|
command += " -nm -nsb-extra"
|
|
124
|
-
command += f" -alt {self._telescope_model.get_parameter_value('
|
|
132
|
+
command += f" -alt {self._telescope_model.get_parameter_value('corsika_observation_level')}"
|
|
125
133
|
command += f" -fatm {self._telescope_model.get_parameter_value('atmospheric_transmission')}"
|
|
126
|
-
command += f" -flen {focal_length
|
|
134
|
+
command += f" -flen {focal_length}"
|
|
127
135
|
command += f" {pixel_shape_cmd} {pixel_diameter}"
|
|
128
|
-
if mirror_class ==
|
|
136
|
+
if mirror_class == 0:
|
|
129
137
|
command += f" -fmir {self._telescope_model.get_parameter_value('mirror_list')}"
|
|
130
138
|
command += f" -fref {mirror_reflectivity}"
|
|
131
139
|
if mirror_class == 2:
|
|
132
140
|
command += " -m2"
|
|
133
141
|
command += f" -fref2 {mirror_reflectivity_secondary}"
|
|
134
|
-
command +=
|
|
142
|
+
command += " -teltrans "
|
|
143
|
+
command += f"{self._telescope_model.get_parameter_value('telescope_transmission')[0]}"
|
|
135
144
|
command += f" -camtrans {camera_transmission}"
|
|
136
145
|
command += f" -fflt {camera_filter_file}"
|
|
137
146
|
command += (
|
|
@@ -142,18 +151,16 @@ class SimtelRunnerCameraEfficiency(SimtelRunner):
|
|
|
142
151
|
)
|
|
143
152
|
command += f" -fqe {self._telescope_model.get_parameter_value('quantum_efficiency')}"
|
|
144
153
|
command += " 200 1000" # lmin and lmax
|
|
145
|
-
command += " 300
|
|
154
|
+
command += " 300" # Xmax
|
|
155
|
+
command += f" {self._telescope_model.get_parameter_value('atmospheric_profile')}"
|
|
146
156
|
command += f" {self.zenith_angle}"
|
|
147
157
|
command += f" 2>{self._file_log}"
|
|
148
158
|
command += f" >{self._file_simtel}"
|
|
149
159
|
|
|
150
|
-
|
|
151
|
-
command = f"cd {self._simtel_source_path.joinpath('sim_telarray')} && {command}"
|
|
160
|
+
return f"cd {self._simtel_path.joinpath('sim_telarray')} && {command}"
|
|
152
161
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
def _check_run_result(self, **kwargs): # pylint: disable=unused-argument
|
|
156
|
-
"""Checking run results
|
|
162
|
+
def _check_run_result(self, run_number=None): # pylint: disable=unused-argument
|
|
163
|
+
"""Check run results.
|
|
157
164
|
|
|
158
165
|
Raises
|
|
159
166
|
------
|
|
@@ -171,10 +178,18 @@ class SimtelRunnerCameraEfficiency(SimtelRunner):
|
|
|
171
178
|
def _get_one_dim_distribution(self, two_dim_parameter, weighting_distribution_parameter):
|
|
172
179
|
"""
|
|
173
180
|
Calculate an average one-dimensional curve for testeff from the two-dimensional curve.
|
|
181
|
+
|
|
174
182
|
The two-dimensional distribution is provided in two_dim_parameter. The distribution
|
|
175
183
|
of weights to use for averaging the two-dimensional distribution is given in
|
|
176
184
|
weighting_distribution_parameter.
|
|
177
185
|
|
|
186
|
+
Parameters
|
|
187
|
+
----------
|
|
188
|
+
two_dim_parameter: str
|
|
189
|
+
The name of the two-dimensional distribution parameter.
|
|
190
|
+
weighting_distribution_parameter: str
|
|
191
|
+
The name of the parameter with the distribution of weights.
|
|
192
|
+
|
|
178
193
|
Returns
|
|
179
194
|
-------
|
|
180
195
|
one_dim_file: Path
|
|
@@ -203,27 +218,36 @@ class SimtelRunnerCameraEfficiency(SimtelRunner):
|
|
|
203
218
|
new_file_name = (
|
|
204
219
|
f"weighted_average_1D_{self._telescope_model.get_parameter_value(two_dim_parameter)}"
|
|
205
220
|
)
|
|
206
|
-
|
|
221
|
+
return self._telescope_model.export_table_to_model_directory(
|
|
207
222
|
new_file_name, distribution_to_export
|
|
208
223
|
)
|
|
209
224
|
|
|
210
|
-
return one_dim_file
|
|
211
|
-
|
|
212
225
|
def _validate_or_fix_nsb_spectrum_file_format(self, nsb_spectrum_file):
|
|
213
226
|
"""
|
|
214
227
|
Validate or fix the nsb spectrum file format.
|
|
228
|
+
|
|
215
229
|
The nsb spectrum file format required by sim_telarray has three columns:
|
|
216
|
-
|
|
230
|
+
wavelength (nm), ignored, NSB flux [1e9 * ph/m2/s/sr/nm],
|
|
217
231
|
where the second column is ignored by sim_telarray and the third is used for the NSB flux.
|
|
218
232
|
This function makes sure the file has at least three columns,
|
|
219
233
|
by copying the second column to the third.
|
|
220
|
-
"""
|
|
221
234
|
|
|
235
|
+
Parameters
|
|
236
|
+
----------
|
|
237
|
+
nsb_spectrum_file: str or Path
|
|
238
|
+
The path to the nsb spectrum file.
|
|
239
|
+
|
|
240
|
+
Returns
|
|
241
|
+
-------
|
|
242
|
+
validated_nsb_spectrum_file: Path
|
|
243
|
+
The path to the validated nsb spectrum file.
|
|
244
|
+
"""
|
|
222
245
|
validated_nsb_spectrum_file = (
|
|
223
|
-
self._telescope_model.
|
|
246
|
+
self._telescope_model.config_file_directory / Path(nsb_spectrum_file).name
|
|
224
247
|
)
|
|
225
|
-
|
|
226
|
-
|
|
248
|
+
|
|
249
|
+
lines = general.read_file_encoded_in_utf_or_latin(nsb_spectrum_file)
|
|
250
|
+
|
|
227
251
|
with open(validated_nsb_spectrum_file, "w", encoding="utf-8") as file:
|
|
228
252
|
for line in lines:
|
|
229
253
|
if line.startswith("#"):
|