gammasimtools 0.18.0__py3-none-any.whl → 0.20.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.
Files changed (367) hide show
  1. {gammasimtools-0.18.0.dist-info → gammasimtools-0.20.0.dist-info}/METADATA +24 -69
  2. gammasimtools-0.20.0.dist-info/RECORD +395 -0
  3. {gammasimtools-0.18.0.dist-info → gammasimtools-0.20.0.dist-info}/entry_points.txt +11 -4
  4. {gammasimtools-0.18.0.dist-info → gammasimtools-0.20.0.dist-info}/licenses/LICENSE +1 -1
  5. simtools/_version.py +16 -3
  6. simtools/applications/calculate_incident_angles.py +182 -0
  7. simtools/applications/convert_all_model_parameters_from_simtel.py +4 -3
  8. simtools/applications/convert_geo_coordinates_of_array_elements.py +3 -3
  9. simtools/applications/db_add_simulation_model_from_repository_to_db.py +17 -14
  10. simtools/applications/db_add_value_from_json_to_db.py +8 -10
  11. simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +8 -13
  12. simtools/applications/db_generate_compound_indexes.py +65 -0
  13. simtools/applications/db_get_file_from_db.py +12 -24
  14. simtools/applications/db_get_parameter_from_db.py +4 -4
  15. simtools/applications/db_inspect_databases.py +20 -10
  16. simtools/applications/derive_mirror_rnda.py +17 -11
  17. simtools/applications/derive_psf_parameters.py +59 -309
  18. simtools/applications/derive_trigger_rates.py +91 -0
  19. simtools/applications/docs_produce_array_element_report.py +1 -1
  20. simtools/applications/docs_produce_calibration_reports.py +1 -1
  21. simtools/applications/docs_produce_model_parameter_reports.py +1 -1
  22. simtools/applications/docs_produce_simulation_configuration_report.py +1 -1
  23. simtools/applications/generate_corsika_histograms.py +1 -1
  24. simtools/applications/generate_default_metadata.py +8 -24
  25. simtools/applications/generate_simtel_event_data.py +11 -11
  26. simtools/applications/maintain_simulation_model_add_production_table.py +71 -0
  27. simtools/applications/maintain_simulation_model_compare_productions.py +98 -0
  28. simtools/applications/{verify_simulation_model_production_tables.py → maintain_simulation_model_verify_production_tables.py} +9 -1
  29. simtools/applications/merge_tables.py +2 -2
  30. simtools/applications/plot_array_layout.py +3 -3
  31. simtools/applications/plot_simtel_events.py +421 -0
  32. simtools/applications/plot_tabular_data.py +9 -2
  33. simtools/applications/plot_tabular_data_for_model_parameter.py +2 -1
  34. simtools/applications/print_version.py +8 -9
  35. simtools/applications/production_derive_corsika_limits.py +6 -7
  36. simtools/applications/production_derive_statistics.py +1 -1
  37. simtools/applications/production_generate_grid.py +2 -2
  38. simtools/applications/production_merge_corsika_limits.py +214 -0
  39. simtools/applications/run_application.py +47 -113
  40. simtools/applications/simulate_calibration_events.py +166 -0
  41. simtools/applications/simulate_flasher.py +141 -0
  42. simtools/applications/{simulate_light_emission.py → simulate_illuminator.py} +35 -99
  43. simtools/applications/simulate_prod.py +6 -24
  44. simtools/applications/simulate_prod_htcondor_generator.py +7 -0
  45. simtools/applications/submit_array_layouts.py +2 -1
  46. simtools/applications/submit_model_parameter_from_external.py +1 -1
  47. simtools/applications/validate_camera_efficiency.py +30 -12
  48. simtools/applications/validate_camera_fov.py +1 -1
  49. simtools/applications/validate_cumulative_psf.py +1 -1
  50. simtools/applications/validate_file_using_schema.py +9 -5
  51. simtools/applications/validate_optics.py +1 -1
  52. simtools/camera/camera_efficiency.py +61 -45
  53. simtools/camera/single_photon_electron_spectrum.py +1 -1
  54. simtools/configuration/commandline_parser.py +46 -11
  55. simtools/configuration/configurator.py +4 -4
  56. simtools/corsika/corsika_config.py +45 -25
  57. simtools/corsika/corsika_histograms.py +6 -5
  58. simtools/data_model/data_reader.py +2 -3
  59. simtools/data_model/metadata_collector.py +32 -36
  60. simtools/data_model/metadata_model.py +15 -12
  61. simtools/data_model/model_data_writer.py +13 -32
  62. simtools/data_model/schema.py +74 -24
  63. simtools/data_model/validate_data.py +42 -12
  64. simtools/db/db_handler.py +125 -62
  65. simtools/db/db_model_upload.py +14 -19
  66. simtools/dependencies.py +98 -30
  67. simtools/io/ascii_handler.py +279 -0
  68. simtools/{io_operations → io}/io_handler.py +25 -3
  69. simtools/job_execution/htcondor_script_generator.py +15 -4
  70. simtools/layout/array_layout.py +1 -1
  71. simtools/layout/array_layout_utils.py +51 -12
  72. simtools/model/array_model.py +41 -5
  73. simtools/model/flasher_model.py +106 -0
  74. simtools/model/model_parameter.py +4 -4
  75. simtools/model/model_repository.py +197 -2
  76. simtools/model/site_model.py +25 -0
  77. simtools/model/telescope_model.py +3 -1
  78. simtools/production_configuration/derive_corsika_limits.py +336 -427
  79. simtools/production_configuration/derive_production_statistics_handler.py +7 -6
  80. simtools/production_configuration/generate_production_grid.py +9 -11
  81. simtools/production_configuration/merge_corsika_limits.py +528 -0
  82. simtools/ray_tracing/incident_angles.py +706 -0
  83. simtools/ray_tracing/mirror_panel_psf.py +1 -0
  84. simtools/ray_tracing/psf_parameter_optimisation.py +792 -0
  85. simtools/ray_tracing/ray_tracing.py +6 -2
  86. simtools/reporting/docs_read_parameters.py +150 -62
  87. simtools/runners/corsika_runner.py +1 -1
  88. simtools/runners/corsika_simtel_runner.py +14 -5
  89. simtools/runners/runner_services.py +10 -5
  90. simtools/runners/simtools_runner.py +267 -0
  91. simtools/schemas/application_workflow.metaschema.yml +101 -68
  92. simtools/schemas/input/MST_mirror_2f_measurements.schema.yml +1 -1
  93. simtools/schemas/input/single_pe_spectrum.schema.yml +1 -1
  94. simtools/schemas/metadata.metaschema.yml +577 -3
  95. simtools/schemas/model_parameter.metaschema.yml +6 -6
  96. simtools/schemas/model_parameter_and_data_schema.metaschema.yml +4 -4
  97. simtools/schemas/model_parameters/adjust_gain.schema.yml +1 -1
  98. simtools/schemas/model_parameters/altitude.schema.yml +1 -1
  99. simtools/schemas/model_parameters/array_coordinates.schema.yml +1 -1
  100. simtools/schemas/model_parameters/array_coordinates_UTM.schema.yml +1 -1
  101. simtools/schemas/model_parameters/array_element_position_ground.schema.yml +1 -1
  102. simtools/schemas/model_parameters/array_element_position_utm.schema.yml +1 -1
  103. simtools/schemas/model_parameters/array_layouts.schema.yml +1 -1
  104. simtools/schemas/model_parameters/array_triggers.schema.yml +1 -1
  105. simtools/schemas/model_parameters/array_window.schema.yml +1 -1
  106. simtools/schemas/model_parameters/asum_clipping.schema.yml +1 -1
  107. simtools/schemas/model_parameters/asum_offset.schema.yml +1 -1
  108. simtools/schemas/model_parameters/asum_shaping.schema.yml +1 -1
  109. simtools/schemas/model_parameters/asum_threshold.schema.yml +1 -1
  110. simtools/schemas/model_parameters/atmospheric_profile.schema.yml +1 -1
  111. simtools/schemas/model_parameters/atmospheric_transmission.schema.yml +1 -1
  112. simtools/schemas/model_parameters/axes_offsets.schema.yml +1 -1
  113. simtools/schemas/model_parameters/camera_body_diameter.schema.yml +1 -1
  114. simtools/schemas/model_parameters/camera_body_shape.schema.yml +1 -1
  115. simtools/schemas/model_parameters/camera_config_file.schema.yml +1 -1
  116. simtools/schemas/model_parameters/camera_config_rotate.schema.yml +1 -1
  117. simtools/schemas/model_parameters/camera_degraded_efficiency.schema.yml +1 -1
  118. simtools/schemas/model_parameters/camera_degraded_map.schema.yml +1 -1
  119. simtools/schemas/model_parameters/camera_depth.schema.yml +1 -1
  120. simtools/schemas/model_parameters/camera_filter.schema.yml +1 -1
  121. simtools/schemas/model_parameters/camera_filter_incidence_angle.schema.yml +1 -1
  122. simtools/schemas/model_parameters/camera_pixels.schema.yml +1 -1
  123. simtools/schemas/model_parameters/camera_transmission.schema.yml +1 -1
  124. simtools/schemas/model_parameters/channels_per_chip.schema.yml +1 -1
  125. simtools/schemas/model_parameters/correct_nsb_spectrum_to_telescope_altitude.schema.yml +1 -1
  126. simtools/schemas/model_parameters/corsika_cherenkov_photon_bunch_size.schema.yml +1 -1
  127. simtools/schemas/model_parameters/corsika_cherenkov_photon_wavelength_range.schema.yml +1 -1
  128. simtools/schemas/model_parameters/corsika_first_interaction_height.schema.yml +1 -1
  129. simtools/schemas/model_parameters/corsika_iact_io_buffer.schema.yml +1 -1
  130. simtools/schemas/model_parameters/corsika_iact_max_bunches.schema.yml +1 -1
  131. simtools/schemas/model_parameters/corsika_iact_split_auto.schema.yml +1 -1
  132. simtools/schemas/model_parameters/corsika_longitudinal_shower_development.schema.yml +1 -1
  133. simtools/schemas/model_parameters/corsika_observation_level.schema.yml +1 -1
  134. simtools/schemas/model_parameters/corsika_particle_kinetic_energy_cutoff.schema.yml +1 -1
  135. simtools/schemas/model_parameters/corsika_starting_grammage.schema.yml +3 -3
  136. simtools/schemas/model_parameters/dark_events.schema.yml +1 -1
  137. simtools/schemas/model_parameters/default_trigger.schema.yml +1 -1
  138. simtools/schemas/model_parameters/design_model.schema.yml +1 -1
  139. simtools/schemas/model_parameters/disc_ac_coupled.schema.yml +1 -1
  140. simtools/schemas/model_parameters/disc_bins.schema.yml +1 -1
  141. simtools/schemas/model_parameters/disc_start.schema.yml +1 -1
  142. simtools/schemas/model_parameters/discriminator_amplitude.schema.yml +1 -1
  143. simtools/schemas/model_parameters/discriminator_fall_time.schema.yml +1 -1
  144. simtools/schemas/model_parameters/discriminator_gate_length.schema.yml +1 -1
  145. simtools/schemas/model_parameters/discriminator_hysteresis.schema.yml +1 -1
  146. simtools/schemas/model_parameters/discriminator_output_amplitude.schema.yml +1 -1
  147. simtools/schemas/model_parameters/discriminator_output_var_percent.schema.yml +1 -1
  148. simtools/schemas/model_parameters/discriminator_pulse_shape.schema.yml +1 -1
  149. simtools/schemas/model_parameters/discriminator_rise_time.schema.yml +1 -1
  150. simtools/schemas/model_parameters/discriminator_scale_threshold.schema.yml +1 -1
  151. simtools/schemas/model_parameters/discriminator_sigsum_over_threshold.schema.yml +1 -1
  152. simtools/schemas/model_parameters/discriminator_threshold.schema.yml +1 -1
  153. simtools/schemas/model_parameters/discriminator_time_over_threshold.schema.yml +1 -1
  154. simtools/schemas/model_parameters/discriminator_var_gate_length.schema.yml +1 -1
  155. simtools/schemas/model_parameters/discriminator_var_sigsum_over_threshold.schema.yml +1 -1
  156. simtools/schemas/model_parameters/discriminator_var_threshold.schema.yml +1 -1
  157. simtools/schemas/model_parameters/discriminator_var_time_over_threshold.schema.yml +1 -1
  158. simtools/schemas/model_parameters/dish_shape_length.schema.yml +1 -1
  159. simtools/schemas/model_parameters/dsum_clipping.schema.yml +1 -1
  160. simtools/schemas/model_parameters/dsum_ignore_below.schema.yml +1 -1
  161. simtools/schemas/model_parameters/dsum_offset.schema.yml +1 -1
  162. simtools/schemas/model_parameters/dsum_pedsub.schema.yml +1 -1
  163. simtools/schemas/model_parameters/dsum_pre_clipping.schema.yml +1 -1
  164. simtools/schemas/model_parameters/dsum_prescale.schema.yml +1 -1
  165. simtools/schemas/model_parameters/dsum_presum_max.schema.yml +1 -1
  166. simtools/schemas/model_parameters/dsum_presum_shift.schema.yml +1 -1
  167. simtools/schemas/model_parameters/dsum_shaping.schema.yml +1 -1
  168. simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml +1 -1
  169. simtools/schemas/model_parameters/dsum_threshold.schema.yml +2 -2
  170. simtools/schemas/model_parameters/dsum_zero_clip.schema.yml +1 -1
  171. simtools/schemas/model_parameters/effective_focal_length.schema.yml +1 -1
  172. simtools/schemas/model_parameters/epsg_code.schema.yml +1 -1
  173. simtools/schemas/model_parameters/fadc_ac_coupled.schema.yml +1 -1
  174. simtools/schemas/model_parameters/fadc_amplitude.schema.yml +1 -1
  175. simtools/schemas/model_parameters/fadc_bins.schema.yml +1 -1
  176. simtools/schemas/model_parameters/fadc_compensate_pedestal.schema.yml +1 -1
  177. simtools/schemas/model_parameters/fadc_dev_pedestal.schema.yml +1 -1
  178. simtools/schemas/model_parameters/fadc_err_compensate_pedestal.schema.yml +1 -1
  179. simtools/schemas/model_parameters/fadc_err_pedestal.schema.yml +1 -1
  180. simtools/schemas/model_parameters/fadc_lg_amplitude.schema.yml +1 -1
  181. simtools/schemas/model_parameters/fadc_lg_compensate_pedestal.schema.yml +1 -1
  182. simtools/schemas/model_parameters/fadc_lg_dev_pedestal.schema.yml +1 -1
  183. simtools/schemas/model_parameters/fadc_lg_err_compensate_pedestal.schema.yml +1 -1
  184. simtools/schemas/model_parameters/fadc_lg_err_pedestal.schema.yml +1 -1
  185. simtools/schemas/model_parameters/fadc_lg_max_signal.schema.yml +1 -1
  186. simtools/schemas/model_parameters/fadc_lg_max_sum.schema.yml +1 -1
  187. simtools/schemas/model_parameters/fadc_lg_noise.schema.yml +1 -1
  188. simtools/schemas/model_parameters/fadc_lg_pedestal.schema.yml +1 -1
  189. simtools/schemas/model_parameters/fadc_lg_sensitivity.schema.yml +1 -1
  190. simtools/schemas/model_parameters/fadc_lg_sysvar_pedestal.schema.yml +1 -1
  191. simtools/schemas/model_parameters/fadc_lg_var_pedestal.schema.yml +1 -1
  192. simtools/schemas/model_parameters/fadc_lg_var_sensitivity.schema.yml +1 -1
  193. simtools/schemas/model_parameters/fadc_long_event_threshold.schema.yml +35 -0
  194. simtools/schemas/model_parameters/fadc_long_sum_bins.schema.yml +41 -0
  195. simtools/schemas/model_parameters/fadc_long_sum_offset.schema.yml +38 -0
  196. simtools/schemas/model_parameters/fadc_max_signal.schema.yml +1 -1
  197. simtools/schemas/model_parameters/fadc_max_sum.schema.yml +1 -1
  198. simtools/schemas/model_parameters/fadc_mhz.schema.yml +1 -1
  199. simtools/schemas/model_parameters/fadc_noise.schema.yml +1 -1
  200. simtools/schemas/model_parameters/fadc_pedestal.schema.yml +1 -1
  201. simtools/schemas/model_parameters/fadc_pulse_shape.schema.yml +1 -1
  202. simtools/schemas/model_parameters/fadc_sensitivity.schema.yml +1 -1
  203. simtools/schemas/model_parameters/fadc_sum_bins.schema.yml +1 -1
  204. simtools/schemas/model_parameters/fadc_sum_offset.schema.yml +1 -1
  205. simtools/schemas/model_parameters/fadc_sysvar_pedestal.schema.yml +1 -1
  206. simtools/schemas/model_parameters/fadc_var_pedestal.schema.yml +1 -1
  207. simtools/schemas/model_parameters/fadc_var_sensitivity.schema.yml +1 -1
  208. simtools/schemas/model_parameters/fake_mirror_list.schema.yml +1 -1
  209. simtools/schemas/model_parameters/flatfielding.schema.yml +1 -1
  210. simtools/schemas/model_parameters/focal_length.schema.yml +1 -1
  211. simtools/schemas/model_parameters/focal_surface_parameters.schema.yml +1 -1
  212. simtools/schemas/model_parameters/focal_surface_ref_radius.schema.yml +1 -1
  213. simtools/schemas/model_parameters/focus_offset.schema.yml +1 -1
  214. simtools/schemas/model_parameters/gain_variation.schema.yml +1 -1
  215. simtools/schemas/model_parameters/geomag_horizontal.schema.yml +1 -1
  216. simtools/schemas/model_parameters/geomag_rotation.schema.yml +1 -1
  217. simtools/schemas/model_parameters/geomag_vertical.schema.yml +1 -1
  218. simtools/schemas/model_parameters/hg_lg_variation.schema.yml +1 -1
  219. simtools/schemas/model_parameters/iobuf_maximum.schema.yml +1 -1
  220. simtools/schemas/model_parameters/iobuf_output_maximum.schema.yml +1 -1
  221. simtools/schemas/model_parameters/laser_events.schema.yml +1 -1
  222. simtools/schemas/model_parameters/laser_external_trigger.schema.yml +1 -1
  223. simtools/schemas/model_parameters/laser_photons.schema.yml +1 -1
  224. simtools/schemas/model_parameters/laser_pulse_exptime.schema.yml +1 -1
  225. simtools/schemas/model_parameters/laser_pulse_offset.schema.yml +1 -1
  226. simtools/schemas/model_parameters/laser_pulse_sigtime.schema.yml +1 -1
  227. simtools/schemas/model_parameters/laser_pulse_twidth.schema.yml +1 -1
  228. simtools/schemas/model_parameters/laser_var_photons.schema.yml +1 -1
  229. simtools/schemas/model_parameters/laser_wavelength.schema.yml +1 -1
  230. simtools/schemas/model_parameters/led_events.schema.yml +1 -1
  231. simtools/schemas/model_parameters/led_photons.schema.yml +1 -1
  232. simtools/schemas/model_parameters/led_pulse_offset.schema.yml +1 -1
  233. simtools/schemas/model_parameters/led_pulse_sigtime.schema.yml +1 -1
  234. simtools/schemas/model_parameters/led_var_photons.schema.yml +1 -1
  235. simtools/schemas/model_parameters/lightguide_efficiency_vs_incidence_angle.schema.yml +1 -1
  236. simtools/schemas/model_parameters/lightguide_efficiency_vs_wavelength.schema.yml +50 -1
  237. simtools/schemas/model_parameters/min_photoelectrons.schema.yml +1 -1
  238. simtools/schemas/model_parameters/min_photons.schema.yml +1 -1
  239. simtools/schemas/model_parameters/mirror_align_random_distance.schema.yml +1 -1
  240. simtools/schemas/model_parameters/mirror_align_random_horizontal.schema.yml +1 -1
  241. simtools/schemas/model_parameters/mirror_align_random_vertical.schema.yml +1 -1
  242. simtools/schemas/model_parameters/mirror_class.schema.yml +1 -1
  243. simtools/schemas/model_parameters/mirror_degraded_reflection.schema.yml +1 -1
  244. simtools/schemas/model_parameters/mirror_focal_length.schema.yml +1 -1
  245. simtools/schemas/model_parameters/mirror_list.schema.yml +1 -1
  246. simtools/schemas/model_parameters/mirror_offset.schema.yml +1 -1
  247. simtools/schemas/model_parameters/mirror_panel_2f_measurements.schema.yml +1 -1
  248. simtools/schemas/model_parameters/mirror_reflection_random_angle.schema.yml +1 -1
  249. simtools/schemas/model_parameters/mirror_reflectivity.schema.yml +1 -1
  250. simtools/schemas/model_parameters/multiplicity_offset.schema.yml +1 -1
  251. simtools/schemas/model_parameters/muon_mono_threshold.schema.yml +1 -1
  252. simtools/schemas/model_parameters/nsb_autoscale_airmass.schema.yml +1 -1
  253. simtools/schemas/model_parameters/nsb_gain_drop_scale.schema.yml +1 -1
  254. simtools/schemas/model_parameters/nsb_offaxis.schema.yml +1 -1
  255. simtools/schemas/model_parameters/nsb_pixel_rate.schema.yml +1 -1
  256. simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml +2 -2
  257. simtools/schemas/model_parameters/nsb_reference_value.schema.yml +1 -1
  258. simtools/schemas/model_parameters/nsb_scaling_factor.schema.yml +1 -1
  259. simtools/schemas/model_parameters/nsb_sky_map.schema.yml +1 -1
  260. simtools/schemas/model_parameters/nsb_spectrum.schema.yml +23 -30
  261. simtools/schemas/model_parameters/num_gains.schema.yml +1 -1
  262. simtools/schemas/model_parameters/only_triggered_telescopes.schema.yml +1 -1
  263. simtools/schemas/model_parameters/optics_properties.schema.yml +1 -1
  264. simtools/schemas/model_parameters/parabolic_dish.schema.yml +1 -1
  265. simtools/schemas/model_parameters/pedestal_events.schema.yml +1 -1
  266. simtools/schemas/model_parameters/photon_delay.schema.yml +1 -1
  267. simtools/schemas/model_parameters/photons_per_run.schema.yml +1 -1
  268. simtools/schemas/model_parameters/pixel_cells.schema.yml +1 -1
  269. simtools/schemas/model_parameters/pixels_parallel.schema.yml +1 -1
  270. simtools/schemas/model_parameters/pixeltrg_time_step.schema.yml +1 -1
  271. simtools/schemas/model_parameters/pm_average_gain.schema.yml +1 -1
  272. simtools/schemas/model_parameters/pm_collection_efficiency.schema.yml +1 -1
  273. simtools/schemas/model_parameters/pm_gain_index.schema.yml +1 -1
  274. simtools/schemas/model_parameters/pm_photoelectron_spectrum.schema.yml +1 -1
  275. simtools/schemas/model_parameters/pm_transit_time.schema.yml +1 -1
  276. simtools/schemas/model_parameters/pm_voltage_variation.schema.yml +1 -1
  277. simtools/schemas/model_parameters/primary_mirror_degraded_map.schema.yml +1 -1
  278. simtools/schemas/model_parameters/primary_mirror_diameter.schema.yml +1 -1
  279. simtools/schemas/model_parameters/primary_mirror_hole_diameter.schema.yml +1 -1
  280. simtools/schemas/model_parameters/primary_mirror_incidence_angle.schema.yml +11 -1
  281. simtools/schemas/model_parameters/primary_mirror_parameters.schema.yml +1 -1
  282. simtools/schemas/model_parameters/primary_mirror_ref_radius.schema.yml +1 -1
  283. simtools/schemas/model_parameters/primary_mirror_segmentation.schema.yml +1 -1
  284. simtools/schemas/model_parameters/qe_variation.schema.yml +1 -1
  285. simtools/schemas/model_parameters/quantum_efficiency.schema.yml +1 -1
  286. simtools/schemas/model_parameters/random_focal_length.schema.yml +1 -1
  287. simtools/schemas/model_parameters/random_generator.schema.yml +1 -1
  288. simtools/schemas/model_parameters/random_mono_probability.schema.yml +1 -1
  289. simtools/schemas/model_parameters/reference_point_altitude.schema.yml +1 -1
  290. simtools/schemas/model_parameters/reference_point_latitude.schema.yml +1 -1
  291. simtools/schemas/model_parameters/reference_point_longitude.schema.yml +1 -1
  292. simtools/schemas/model_parameters/reference_point_utm_east.schema.yml +1 -1
  293. simtools/schemas/model_parameters/reference_point_utm_north.schema.yml +1 -1
  294. simtools/schemas/model_parameters/sampled_output.schema.yml +1 -1
  295. simtools/schemas/model_parameters/save_pe_with_amplitude.schema.yml +1 -1
  296. simtools/schemas/model_parameters/secondary_mirror_baffle.schema.yml +1 -1
  297. simtools/schemas/model_parameters/secondary_mirror_degraded_map.schema.yml +1 -1
  298. simtools/schemas/model_parameters/secondary_mirror_degraded_reflection.schema.yml +1 -1
  299. simtools/schemas/model_parameters/secondary_mirror_diameter.schema.yml +1 -1
  300. simtools/schemas/model_parameters/secondary_mirror_hole_diameter.schema.yml +1 -1
  301. simtools/schemas/model_parameters/secondary_mirror_incidence_angle.schema.yml +11 -1
  302. simtools/schemas/model_parameters/secondary_mirror_parameters.schema.yml +1 -1
  303. simtools/schemas/model_parameters/secondary_mirror_ref_radius.schema.yml +1 -1
  304. simtools/schemas/model_parameters/secondary_mirror_reflectivity.schema.yml +11 -1
  305. simtools/schemas/model_parameters/secondary_mirror_segmentation.schema.yml +1 -1
  306. simtools/schemas/model_parameters/secondary_mirror_shadow_diameter.schema.yml +1 -1
  307. simtools/schemas/model_parameters/secondary_mirror_shadow_offset.schema.yml +1 -1
  308. simtools/schemas/model_parameters/stars.schema.yml +2 -2
  309. simtools/schemas/model_parameters/store_photoelectrons.schema.yml +1 -1
  310. simtools/schemas/model_parameters/tailcut_scale.schema.yml +1 -1
  311. simtools/schemas/model_parameters/telescope_axis_height.schema.yml +1 -1
  312. simtools/schemas/model_parameters/telescope_random_angle.schema.yml +1 -1
  313. simtools/schemas/model_parameters/telescope_random_error.schema.yml +1 -1
  314. simtools/schemas/model_parameters/telescope_sphere_radius.schema.yml +1 -1
  315. simtools/schemas/model_parameters/telescope_transmission.schema.yml +1 -1
  316. simtools/schemas/model_parameters/teltrig_min_sigsum.schema.yml +1 -1
  317. simtools/schemas/model_parameters/teltrig_min_time.schema.yml +1 -1
  318. simtools/schemas/model_parameters/transit_time_calib_error.schema.yml +1 -1
  319. simtools/schemas/model_parameters/transit_time_compensate_error.schema.yml +1 -1
  320. simtools/schemas/model_parameters/transit_time_compensate_step.schema.yml +1 -1
  321. simtools/schemas/model_parameters/transit_time_error.schema.yml +1 -1
  322. simtools/schemas/model_parameters/transit_time_jitter.schema.yml +1 -1
  323. simtools/schemas/model_parameters/trigger_current_limit.schema.yml +1 -1
  324. simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml +1 -1
  325. simtools/schemas/model_parameters/trigger_pixels.schema.yml +1 -1
  326. simtools/schemas/plot_configuration.metaschema.yml +5 -2
  327. simtools/schemas/production_configuration_metrics.schema.yml +12 -2
  328. simtools/schemas/production_tables.schema.yml +7 -2
  329. simtools/simtel/simtel_config_reader.py +2 -2
  330. simtools/simtel/simtel_config_writer.py +33 -23
  331. simtools/simtel/simtel_io_event_histograms.py +483 -0
  332. simtools/simtel/simtel_io_event_reader.py +65 -43
  333. simtools/simtel/simtel_io_event_writer.py +40 -20
  334. simtools/simtel/simtel_io_metadata.py +1 -1
  335. simtools/simtel/simtel_table_reader.py +95 -13
  336. simtools/simtel/simulator_array.py +138 -10
  337. simtools/simtel/simulator_camera_efficiency.py +32 -23
  338. simtools/simtel/simulator_light_emission.py +437 -271
  339. simtools/simtel/simulator_ray_tracing.py +1 -1
  340. simtools/simulator.py +105 -147
  341. simtools/telescope_trigger_rates.py +119 -0
  342. simtools/testing/configuration.py +24 -26
  343. simtools/testing/helpers.py +2 -2
  344. simtools/testing/log_inspector.py +52 -0
  345. simtools/testing/validate_output.py +87 -37
  346. simtools/utils/general.py +125 -255
  347. simtools/utils/geometry.py +56 -0
  348. simtools/utils/names.py +1 -1
  349. simtools/visualization/legend_handlers.py +180 -264
  350. simtools/visualization/plot_array_layout.py +20 -8
  351. simtools/visualization/plot_incident_angles.py +431 -0
  352. simtools/visualization/plot_pixels.py +1 -1
  353. simtools/visualization/plot_simtel_event_histograms.py +376 -0
  354. simtools/visualization/plot_simtel_events.py +816 -0
  355. simtools/visualization/plot_tables.py +133 -37
  356. simtools/visualization/visualize.py +1 -100
  357. gammasimtools-0.18.0.dist-info/RECORD +0 -376
  358. simtools/applications/calculate_trigger_rate.py +0 -187
  359. simtools/applications/generate_sim_telarray_histograms.py +0 -196
  360. simtools/production_configuration/derive_corsika_limits_grid.py +0 -232
  361. simtools/simtel/simtel_io_histogram.py +0 -621
  362. simtools/simtel/simtel_io_histograms.py +0 -552
  363. {gammasimtools-0.18.0.dist-info → gammasimtools-0.20.0.dist-info}/WHEEL +0 -0
  364. {gammasimtools-0.18.0.dist-info → gammasimtools-0.20.0.dist-info}/top_level.txt +0 -0
  365. /simtools/{io_operations → io}/hdf5_handler.py +0 -0
  366. /simtools/{io_operations → io}/legacy_data_handler.py +0 -0
  367. /simtools/{io_operations/io_table_handler.py → io/table_handler.py} +0 -0
@@ -21,16 +21,13 @@ r"""
21
21
 
22
22
  """
23
23
 
24
- import json
25
24
  import logging
26
25
  from pathlib import Path
27
26
 
28
- import yaml
29
-
30
27
  import simtools.utils.general as gen
31
28
  from simtools.configuration import configurator
32
29
  from simtools.data_model import metadata_model
33
- from simtools.io_operations import io_handler
30
+ from simtools.io import ascii_handler, io_handler
34
31
 
35
32
 
36
33
  def _parse(label, description):
@@ -74,8 +71,8 @@ def main(): # noqa: D103
74
71
  label, description="Generate a default simtools metadata file from a json schema."
75
72
  )
76
73
 
77
- _logger = logging.getLogger()
78
- _logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
74
+ logger = logging.getLogger()
75
+ logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
79
76
 
80
77
  default_values = metadata_model.get_default_metadata_dict(args_dict["schema"])
81
78
 
@@ -83,24 +80,11 @@ def main(): # noqa: D103
83
80
  print(default_values)
84
81
  else:
85
82
  _io_handler = io_handler.IOHandler()
86
- _out_file = _io_handler.get_output_file(args_dict["output_file"])
87
- _logger.info(f"Writing default values to {_out_file}")
88
- if args_dict["output_file"].endswith((".yml", ".yaml")):
89
- with open(_out_file, "w", encoding="utf-8") as file:
90
- yaml.dump(
91
- default_values,
92
- file,
93
- default_flow_style=False,
94
- sort_keys=False,
95
- )
96
- if args_dict["output_file"].endswith(".json"):
97
- with open(_out_file, "w", encoding="utf-8") as file:
98
- json.dump(
99
- default_values,
100
- file,
101
- indent=4,
102
- sort_keys=False,
103
- )
83
+ output_file = _io_handler.get_output_file(args_dict["output_file"])
84
+ logger.info(f"Writing default values to {output_file}")
85
+ ascii_handler.write_data_to_file(
86
+ data=default_values, output_file=output_file, sort_keys=False
87
+ )
104
88
 
105
89
 
106
90
  if __name__ == "__main__":
@@ -24,19 +24,19 @@ The output consists of an HDF5 or FITS file containing the following tables:
24
24
  +-------------------+---------+-----------------------------------------------+
25
25
  | energy_max | float32 | Maximum simulated energy (TeV) |
26
26
  +-------------------+---------+-----------------------------------------------+
27
- | viewcone_min | float32 | Min viewcone angle (rad) |
27
+ | viewcone_min | float32 | Min viewcone angle (deg) |
28
28
  +-------------------+---------+-----------------------------------------------+
29
- | viewcone_max | float32 | Max viewcone angle (rad) |
29
+ | viewcone_max | float32 | Max viewcone angle (deg) |
30
30
  +-------------------+---------+-----------------------------------------------+
31
31
  | core_scatter_min | float32 | Min core scatter radius (m) |
32
32
  +-------------------+---------+-----------------------------------------------+
33
33
  | core_scatter_max | float32 | Max core scatter radius (m) |
34
34
  +-------------------+---------+-----------------------------------------------+
35
- | zenith | float32 | Zenith angle (rad) |
35
+ | zenith | float32 | Zenith angle (deg) |
36
36
  +-------------------+---------+-----------------------------------------------+
37
- | azimuth | float32 | Azimuth angle (rad) |
37
+ | azimuth | float32 | Azimuth angle (deg) |
38
38
  +-------------------+---------+-----------------------------------------------+
39
- | nsb_level | float64 | Night sky background level (photons/deg^2/ns) |
39
+ | nsb_level | float64 | Night sky background level (factor to dark) |
40
40
  +-------------------+---------+-----------------------------------------------+
41
41
 
42
42
  **SHOWERS**
@@ -56,9 +56,9 @@ The output consists of an HDF5 or FITS file containing the following tables:
56
56
  +------------------+---------+-----------------------------------------------+
57
57
  | y_core | float64 | Shower core Y position on ground (m) |
58
58
  +------------------+---------+-----------------------------------------------+
59
- | shower_azimuth | float64 | Direction of shower azimuth (rad) |
59
+ | shower_azimuth | float64 | Direction of shower azimuth (deg) |
60
60
  +------------------+---------+-----------------------------------------------+
61
- | shower_altitude | float64 | Direction of shower altitude (rad) |
61
+ | shower_altitude | float64 | Direction of shower altitude (deg) |
62
62
  +------------------+---------+-----------------------------------------------+
63
63
  | area_weight | float64 | Weighting factor for sampling area |
64
64
  +------------------+---------+-----------------------------------------------+
@@ -74,9 +74,9 @@ The output consists of an HDF5 or FITS file containing the following tables:
74
74
  +-----------------+---------+-----------------------------------------------+
75
75
  | file_id | int64 | Internal unique identifier for the file |
76
76
  +-----------------+---------+-----------------------------------------------+
77
- | array_altitude | float64 | Altitude of array pointing direction (rad) |
77
+ | array_altitude | float64 | Altitude of array pointing direction (deg) |
78
78
  +-----------------+---------+-----------------------------------------------+
79
- | array_azimuth | float64 | Azimuth of array pointing direction (rad) |
79
+ | array_azimuth | float64 | Azimuth of array pointing direction (deg) |
80
80
  +-----------------+---------+-----------------------------------------------+
81
81
  | telescope_list | string | Comma-separated list of triggered telescopes |
82
82
  +-----------------+---------+-----------------------------------------------+
@@ -130,7 +130,7 @@ from pathlib import Path
130
130
  import simtools.utils.general as gen
131
131
  from simtools.configuration import configurator
132
132
  from simtools.data_model.metadata_collector import MetadataCollector
133
- from simtools.io_operations import io_handler, io_table_handler
133
+ from simtools.io import io_handler, table_handler
134
134
  from simtools.simtel.simtel_io_event_writer import SimtelIOEventDataWriter
135
135
 
136
136
 
@@ -187,7 +187,7 @@ def main(): # noqa: D103
187
187
  output_filepath = io_handler.IOHandler().get_output_file(args_dict["output_file"])
188
188
  generator = SimtelIOEventDataWriter(files, args_dict["max_files"])
189
189
  tables = generator.process_files()
190
- io_table_handler.write_tables(tables, output_filepath, overwrite_existing=True)
190
+ table_handler.write_tables(tables, output_filepath, overwrite_existing=True)
191
191
  MetadataCollector.dump(args_dict=args_dict, output_file=output_filepath.with_suffix(".yml"))
192
192
 
193
193
  if args_dict["print_dataset_information"] > 0:
@@ -0,0 +1,71 @@
1
+ r"""
2
+ Generate new simulation model production tables by copying existing table and apply modifications.
3
+
4
+ This script should be used to maintain the simulation model repository. It allow to create a
5
+ new production table by copying an existing base version and apply modification defined in a YAML
6
+ file (see the example file listed below).
7
+
8
+ Example
9
+ -------
10
+ .. code-block:: console
11
+
12
+ simtools-maintain-simulation-model-add-production-table \\
13
+ --simulation_models_path ../simulation-models-dev/simulation-models/ \\
14
+ --source_prod_table_dir 6.0.0 \\
15
+ --modifications tests/resources/production_tables_changes_for_threshold_study_6.2.0.yml
16
+
17
+ """
18
+
19
+ import logging
20
+ from pathlib import Path
21
+
22
+ import simtools.utils.general as gen
23
+ from simtools.configuration import configurator
24
+ from simtools.model import model_repository
25
+
26
+
27
+ def _parse(label, description):
28
+ """
29
+ Parse command line arguments.
30
+
31
+ Returns
32
+ -------
33
+ dict
34
+ Parsed command-line arguments.
35
+ """
36
+ config = configurator.Configurator(label=label, description=description)
37
+ config.parser.add_argument(
38
+ "--simulation_models_path",
39
+ type=str,
40
+ required=True,
41
+ help="Path to the simulation models repository.",
42
+ )
43
+ config.parser.add_argument(
44
+ "--source_prod_table_dir",
45
+ type=str,
46
+ required=True,
47
+ help="The source production table directory to copy from.",
48
+ )
49
+ config.parser.add_argument(
50
+ "--modifications",
51
+ type=str,
52
+ required=True,
53
+ help="File containing the list of changes to apply.",
54
+ )
55
+
56
+ return config.initialize(db_config=False, output=False)
57
+
58
+
59
+ def main(): # noqa: D103
60
+ label = Path(__file__).stem
61
+ args_dict, _ = _parse(
62
+ label=label, description=("Copy and update simulation model production tables.")
63
+ )
64
+ logger = logging.getLogger()
65
+ logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
66
+
67
+ model_repository.copy_and_update_production_table(args_dict)
68
+
69
+
70
+ if __name__ == "__main__":
71
+ main()
@@ -0,0 +1,98 @@
1
+ r"""
2
+ Compare two directories with model production tables in JSON format.
3
+
4
+ This script should be used to support the maintenance the simulation model repository.
5
+
6
+ Example
7
+ -------
8
+ .. code-block:: console
9
+
10
+ simtools-maintain-simulation-model-compare-productions \\
11
+ --directory_1 ../simulation-models-dev/simulation-models/6.0.0/ \\
12
+ --directory_2 ../simulation-models-dev/simulation-models/6.2.0
13
+
14
+ """
15
+
16
+ import logging
17
+ from pathlib import Path
18
+
19
+ import simtools.utils.general as gen
20
+ from simtools.configuration import configurator
21
+ from simtools.io import ascii_handler
22
+
23
+
24
+ def _parse(label, description):
25
+ """Parse command line arguments."""
26
+ config = configurator.Configurator(label=label, description=description)
27
+ config.parser.add_argument(
28
+ "--directory_1",
29
+ type=str,
30
+ required=True,
31
+ help="Path to the first directory containing JSON files.",
32
+ )
33
+ config.parser.add_argument(
34
+ "--directory_2",
35
+ type=str,
36
+ required=True,
37
+ help="Path to the second directory containing JSON files.",
38
+ )
39
+ return config.initialize(db_config=False, output=False)
40
+
41
+
42
+ def _print_differences(differences, rel_path):
43
+ """Print differences in a readable format."""
44
+ print(f"Difference in {rel_path}:\n{'-' * 40}")
45
+ for diff in differences:
46
+ # Clean up the path formatting for better readability
47
+ clean_diff = diff.replace("['parameters']['", "parameters.").replace("']['", ".")
48
+ clean_diff = clean_diff.replace("['", "").replace("']", "")
49
+ print(f" {clean_diff}")
50
+ print(f"{'-' * 40}\n")
51
+
52
+
53
+ def _compare_json_dirs(dir1, dir2, ignore_key="model_version"):
54
+ """Compare two directories containing JSON files, ignoring a specific key."""
55
+ for path1 in dir1.rglob("*.json"):
56
+ rel_path = path1.relative_to(dir1)
57
+ path2 = dir2 / rel_path
58
+
59
+ if not path2.exists():
60
+ print(f"Missing in dir2: {rel_path}")
61
+ continue
62
+
63
+ try:
64
+ json1 = gen.remove_key_from_dict(
65
+ ascii_handler.collect_data_from_file(path1), ignore_key
66
+ )
67
+ json2 = gen.remove_key_from_dict(
68
+ ascii_handler.collect_data_from_file(path2), ignore_key
69
+ )
70
+ except FileNotFoundError as e:
71
+ print(f"Error reading {rel_path}: {e}")
72
+ continue
73
+
74
+ differences = gen.find_differences_in_json_objects(json1, json2)
75
+ if differences:
76
+ _print_differences(differences, rel_path)
77
+
78
+ # Check for files present in dir2 but not dir1
79
+ for path2 in dir2.rglob("*.json"):
80
+ rel_path = path2.relative_to(dir2)
81
+ if not (dir1 / rel_path).exists():
82
+ print(f"Missing in dir1: {rel_path}")
83
+
84
+
85
+ def main(): # noqa: D103
86
+ label = Path(__file__).stem
87
+ args_dict, _ = _parse(
88
+ label=label,
89
+ description=("Compare two directories with model production tables in JSON format."),
90
+ )
91
+ logger = logging.getLogger()
92
+ logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
93
+
94
+ _compare_json_dirs(Path(args_dict["directory_1"]), Path(args_dict["directory_2"]))
95
+
96
+
97
+ if __name__ == "__main__":
98
+ main()
@@ -1,12 +1,20 @@
1
1
  #!/usr/bin/python3
2
2
 
3
- """
3
+ r"""
4
4
  Verify simulation model production tables and model parameters for completeness.
5
5
 
6
6
  This application is a utility to be used in the CI pipeline of the SimulationModels
7
7
  repository. It checks that all model parameters defined in the production tables
8
8
  exist in the simulation models repository.
9
9
 
10
+ Example
11
+ -------
12
+
13
+ .. code-block:: console
14
+
15
+ simtools-maintain-simulation-model-verify-production-tables \\
16
+ --simulation_models_path /path/to/simulation/models/repository
17
+
10
18
  """
11
19
 
12
20
  import logging
@@ -41,7 +41,7 @@ from pathlib import Path
41
41
 
42
42
  import simtools.utils.general as gen
43
43
  from simtools.configuration import configurator
44
- from simtools.io_operations import io_handler, io_table_handler
44
+ from simtools.io import io_handler, table_handler
45
45
 
46
46
 
47
47
  def _parse(label, description):
@@ -91,7 +91,7 @@ def main(): # noqa: D103
91
91
  output_path = io_handler.IOHandler().get_output_directory(label)
92
92
  output_filepath = Path(output_path).joinpath(f"{args_dict['output_file']}")
93
93
 
94
- io_table_handler.merge_tables(
94
+ table_handler.merge_tables(
95
95
  input_files,
96
96
  input_table_names=args_dict["table_names"],
97
97
  output_file=output_filepath,
@@ -13,7 +13,7 @@ For the following options, array element positions are retrieved from the model
13
13
  (``--plot_all_layouts``)
14
14
 
15
15
  * from a model parameter file
16
- (e.g., ``-array_layout_parameter_file tests/resources/model_parameters/array_layouts-2.0.1.json``)
16
+ (e.g., ``-array_layout_parameter_file tests/resources/model_parameters/array_layouts-2.0.2.json``)
17
17
 
18
18
  * from a list of array elements (e.g., ``-array_element_list MSTN-01, MSTN-02``).
19
19
  Positions are retrieved from the database.
@@ -88,7 +88,7 @@ Plot layout from a parameter file with a list of telescopes:
88
88
  .. code-block:: console
89
89
 
90
90
  simtools-plot-array-layout
91
- --array_layout_parameter_file tests/resources/model_parameters/array_layouts-2.0.1.json
91
+ --array_layout_parameter_file tests/resources/model_parameters/array_layouts-2.0.2.json
92
92
  --model_version 6.0.0
93
93
 
94
94
 
@@ -108,7 +108,7 @@ import matplotlib.pyplot as plt
108
108
  import simtools.layout.array_layout_utils as layout_utils
109
109
  import simtools.utils.general as gen
110
110
  from simtools.configuration import configurator
111
- from simtools.io_operations import io_handler
111
+ from simtools.io import io_handler
112
112
  from simtools.visualization import visualize
113
113
  from simtools.visualization.plot_array_layout import plot_array_layout
114
114