gammasimtools 0.17.0__py3-none-any.whl → 0.19.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 (363) hide show
  1. {gammasimtools-0.17.0.dist-info → gammasimtools-0.19.0.dist-info}/METADATA +27 -69
  2. gammasimtools-0.19.0.dist-info/RECORD +393 -0
  3. {gammasimtools-0.17.0.dist-info → gammasimtools-0.19.0.dist-info}/entry_points.txt +10 -2
  4. {gammasimtools-0.17.0.dist-info → gammasimtools-0.19.0.dist-info}/licenses/LICENSE +1 -1
  5. simtools/_version.py +16 -3
  6. simtools/applications/calculate_trigger_rate.py +1 -1
  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 +10 -1
  10. simtools/applications/db_add_value_from_json_to_db.py +2 -1
  11. simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +8 -13
  12. simtools/applications/db_generate_compound_indexes.py +61 -0
  13. simtools/applications/db_get_file_from_db.py +1 -1
  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 +18 -12
  17. simtools/applications/derive_psf_parameters.py +59 -309
  18. simtools/applications/docs_produce_array_element_report.py +1 -1
  19. simtools/applications/docs_produce_calibration_reports.py +1 -1
  20. simtools/applications/docs_produce_model_parameter_reports.py +1 -1
  21. simtools/applications/docs_produce_simulation_configuration_report.py +1 -1
  22. simtools/applications/generate_corsika_histograms.py +1 -1
  23. simtools/applications/generate_default_metadata.py +8 -24
  24. simtools/applications/generate_sim_telarray_histograms.py +1 -1
  25. simtools/applications/generate_simtel_event_data.py +97 -5
  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 +16 -18
  30. simtools/applications/plot_array_layout.py +3 -3
  31. simtools/applications/plot_simtel_events.py +379 -0
  32. simtools/applications/plot_tabular_data.py +21 -3
  33. simtools/applications/plot_tabular_data_for_model_parameter.py +104 -0
  34. simtools/applications/print_version.py +8 -9
  35. simtools/applications/production_derive_corsika_limits.py +64 -27
  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 +2 -1
  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 +31 -1
  55. simtools/configuration/configurator.py +4 -4
  56. simtools/constants.py +2 -0
  57. simtools/corsika/corsika_config.py +45 -25
  58. simtools/corsika/corsika_histograms.py +6 -5
  59. simtools/data_model/data_reader.py +2 -3
  60. simtools/data_model/metadata_collector.py +32 -36
  61. simtools/data_model/metadata_model.py +15 -12
  62. simtools/data_model/model_data_writer.py +13 -32
  63. simtools/data_model/schema.py +88 -24
  64. simtools/data_model/validate_data.py +34 -9
  65. simtools/db/db_handler.py +48 -37
  66. simtools/db/db_model_upload.py +3 -3
  67. simtools/dependencies.py +88 -25
  68. simtools/io/ascii_handler.py +279 -0
  69. simtools/{io_operations → io}/io_handler.py +25 -3
  70. simtools/{io_operations/io_table_handler.py → io/table_handler.py} +1 -1
  71. simtools/job_execution/htcondor_script_generator.py +15 -4
  72. simtools/layout/array_layout.py +1 -1
  73. simtools/layout/array_layout_utils.py +19 -8
  74. simtools/model/array_model.py +28 -5
  75. simtools/model/flasher_model.py +106 -0
  76. simtools/model/model_parameter.py +4 -4
  77. simtools/model/model_repository.py +197 -2
  78. simtools/model/telescope_model.py +3 -1
  79. simtools/production_configuration/derive_corsika_limits.py +361 -427
  80. simtools/production_configuration/derive_production_statistics_handler.py +7 -6
  81. simtools/production_configuration/generate_production_grid.py +9 -11
  82. simtools/production_configuration/merge_corsika_limits.py +528 -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/resources/array-element-ids.json +126 -0
  88. simtools/runners/corsika_runner.py +1 -1
  89. simtools/runners/corsika_simtel_runner.py +14 -5
  90. simtools/runners/runner_services.py +10 -5
  91. simtools/runners/simtools_runner.py +267 -0
  92. simtools/schemas/application_workflow.metaschema.yml +101 -68
  93. simtools/schemas/input/MST_mirror_2f_measurements.schema.yml +1 -1
  94. simtools/schemas/input/single_pe_spectrum.schema.yml +1 -1
  95. simtools/schemas/metadata.metaschema.yml +577 -3
  96. simtools/schemas/model_parameter.metaschema.yml +6 -6
  97. simtools/schemas/model_parameter_and_data_schema.metaschema.yml +7 -3
  98. simtools/schemas/model_parameters/adjust_gain.schema.yml +1 -1
  99. simtools/schemas/model_parameters/altitude.schema.yml +1 -1
  100. simtools/schemas/model_parameters/array_coordinates.schema.yml +1 -1
  101. simtools/schemas/model_parameters/array_coordinates_UTM.schema.yml +1 -1
  102. simtools/schemas/model_parameters/array_element_position_ground.schema.yml +1 -1
  103. simtools/schemas/model_parameters/array_element_position_utm.schema.yml +1 -1
  104. simtools/schemas/model_parameters/array_layouts.schema.yml +1 -1
  105. simtools/schemas/model_parameters/array_triggers.schema.yml +1 -1
  106. simtools/schemas/model_parameters/array_window.schema.yml +1 -1
  107. simtools/schemas/model_parameters/asum_clipping.schema.yml +1 -1
  108. simtools/schemas/model_parameters/asum_offset.schema.yml +1 -1
  109. simtools/schemas/model_parameters/asum_shaping.schema.yml +1 -1
  110. simtools/schemas/model_parameters/asum_threshold.schema.yml +1 -1
  111. simtools/schemas/model_parameters/atmospheric_profile.schema.yml +42 -1
  112. simtools/schemas/model_parameters/atmospheric_transmission.schema.yml +44 -1
  113. simtools/schemas/model_parameters/axes_offsets.schema.yml +1 -1
  114. simtools/schemas/model_parameters/camera_body_diameter.schema.yml +1 -1
  115. simtools/schemas/model_parameters/camera_body_shape.schema.yml +1 -1
  116. simtools/schemas/model_parameters/camera_config_file.schema.yml +1 -1
  117. simtools/schemas/model_parameters/camera_config_rotate.schema.yml +1 -1
  118. simtools/schemas/model_parameters/camera_degraded_efficiency.schema.yml +1 -1
  119. simtools/schemas/model_parameters/camera_degraded_map.schema.yml +1 -1
  120. simtools/schemas/model_parameters/camera_depth.schema.yml +1 -1
  121. simtools/schemas/model_parameters/camera_filter.schema.yml +11 -1
  122. simtools/schemas/model_parameters/camera_filter_incidence_angle.schema.yml +11 -1
  123. simtools/schemas/model_parameters/camera_pixels.schema.yml +1 -1
  124. simtools/schemas/model_parameters/camera_transmission.schema.yml +1 -1
  125. simtools/schemas/model_parameters/channels_per_chip.schema.yml +1 -1
  126. simtools/schemas/model_parameters/correct_nsb_spectrum_to_telescope_altitude.schema.yml +1 -1
  127. simtools/schemas/model_parameters/corsika_cherenkov_photon_bunch_size.schema.yml +1 -1
  128. simtools/schemas/model_parameters/corsika_cherenkov_photon_wavelength_range.schema.yml +1 -1
  129. simtools/schemas/model_parameters/corsika_first_interaction_height.schema.yml +1 -1
  130. simtools/schemas/model_parameters/corsika_iact_io_buffer.schema.yml +1 -1
  131. simtools/schemas/model_parameters/corsika_iact_max_bunches.schema.yml +1 -1
  132. simtools/schemas/model_parameters/corsika_iact_split_auto.schema.yml +1 -1
  133. simtools/schemas/model_parameters/corsika_longitudinal_shower_development.schema.yml +1 -1
  134. simtools/schemas/model_parameters/corsika_observation_level.schema.yml +1 -1
  135. simtools/schemas/model_parameters/corsika_particle_kinetic_energy_cutoff.schema.yml +1 -1
  136. simtools/schemas/model_parameters/corsika_starting_grammage.schema.yml +3 -3
  137. simtools/schemas/model_parameters/dark_events.schema.yml +1 -1
  138. simtools/schemas/model_parameters/default_trigger.schema.yml +1 -1
  139. simtools/schemas/model_parameters/design_model.schema.yml +1 -1
  140. simtools/schemas/model_parameters/disc_ac_coupled.schema.yml +1 -1
  141. simtools/schemas/model_parameters/disc_bins.schema.yml +1 -1
  142. simtools/schemas/model_parameters/disc_start.schema.yml +1 -1
  143. simtools/schemas/model_parameters/discriminator_amplitude.schema.yml +1 -1
  144. simtools/schemas/model_parameters/discriminator_fall_time.schema.yml +1 -1
  145. simtools/schemas/model_parameters/discriminator_gate_length.schema.yml +1 -1
  146. simtools/schemas/model_parameters/discriminator_hysteresis.schema.yml +1 -1
  147. simtools/schemas/model_parameters/discriminator_output_amplitude.schema.yml +1 -1
  148. simtools/schemas/model_parameters/discriminator_output_var_percent.schema.yml +1 -1
  149. simtools/schemas/model_parameters/discriminator_pulse_shape.schema.yml +32 -1
  150. simtools/schemas/model_parameters/discriminator_rise_time.schema.yml +1 -1
  151. simtools/schemas/model_parameters/discriminator_scale_threshold.schema.yml +1 -1
  152. simtools/schemas/model_parameters/discriminator_sigsum_over_threshold.schema.yml +1 -1
  153. simtools/schemas/model_parameters/discriminator_threshold.schema.yml +1 -1
  154. simtools/schemas/model_parameters/discriminator_time_over_threshold.schema.yml +1 -1
  155. simtools/schemas/model_parameters/discriminator_var_gate_length.schema.yml +1 -1
  156. simtools/schemas/model_parameters/discriminator_var_sigsum_over_threshold.schema.yml +1 -1
  157. simtools/schemas/model_parameters/discriminator_var_threshold.schema.yml +1 -1
  158. simtools/schemas/model_parameters/discriminator_var_time_over_threshold.schema.yml +1 -1
  159. simtools/schemas/model_parameters/dish_shape_length.schema.yml +1 -1
  160. simtools/schemas/model_parameters/dsum_clipping.schema.yml +1 -1
  161. simtools/schemas/model_parameters/dsum_ignore_below.schema.yml +1 -1
  162. simtools/schemas/model_parameters/dsum_offset.schema.yml +1 -1
  163. simtools/schemas/model_parameters/dsum_pedsub.schema.yml +1 -1
  164. simtools/schemas/model_parameters/dsum_pre_clipping.schema.yml +1 -1
  165. simtools/schemas/model_parameters/dsum_prescale.schema.yml +1 -1
  166. simtools/schemas/model_parameters/dsum_presum_max.schema.yml +1 -1
  167. simtools/schemas/model_parameters/dsum_presum_shift.schema.yml +1 -1
  168. simtools/schemas/model_parameters/dsum_shaping.schema.yml +1 -1
  169. simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml +1 -1
  170. simtools/schemas/model_parameters/dsum_threshold.schema.yml +2 -2
  171. simtools/schemas/model_parameters/dsum_zero_clip.schema.yml +1 -1
  172. simtools/schemas/model_parameters/effective_focal_length.schema.yml +1 -1
  173. simtools/schemas/model_parameters/epsg_code.schema.yml +1 -1
  174. simtools/schemas/model_parameters/fadc_ac_coupled.schema.yml +1 -1
  175. simtools/schemas/model_parameters/fadc_amplitude.schema.yml +1 -1
  176. simtools/schemas/model_parameters/fadc_bins.schema.yml +1 -1
  177. simtools/schemas/model_parameters/fadc_compensate_pedestal.schema.yml +1 -1
  178. simtools/schemas/model_parameters/fadc_dev_pedestal.schema.yml +1 -1
  179. simtools/schemas/model_parameters/fadc_err_compensate_pedestal.schema.yml +1 -1
  180. simtools/schemas/model_parameters/fadc_err_pedestal.schema.yml +1 -1
  181. simtools/schemas/model_parameters/fadc_lg_amplitude.schema.yml +1 -1
  182. simtools/schemas/model_parameters/fadc_lg_compensate_pedestal.schema.yml +1 -1
  183. simtools/schemas/model_parameters/fadc_lg_dev_pedestal.schema.yml +1 -1
  184. simtools/schemas/model_parameters/fadc_lg_err_compensate_pedestal.schema.yml +1 -1
  185. simtools/schemas/model_parameters/fadc_lg_err_pedestal.schema.yml +1 -1
  186. simtools/schemas/model_parameters/fadc_lg_max_signal.schema.yml +1 -1
  187. simtools/schemas/model_parameters/fadc_lg_max_sum.schema.yml +1 -1
  188. simtools/schemas/model_parameters/fadc_lg_noise.schema.yml +1 -1
  189. simtools/schemas/model_parameters/fadc_lg_pedestal.schema.yml +1 -1
  190. simtools/schemas/model_parameters/fadc_lg_sensitivity.schema.yml +1 -1
  191. simtools/schemas/model_parameters/fadc_lg_sysvar_pedestal.schema.yml +1 -1
  192. simtools/schemas/model_parameters/fadc_lg_var_pedestal.schema.yml +1 -1
  193. simtools/schemas/model_parameters/fadc_lg_var_sensitivity.schema.yml +1 -1
  194. simtools/schemas/model_parameters/fadc_long_event_threshold.schema.yml +35 -0
  195. simtools/schemas/model_parameters/fadc_long_sum_bins.schema.yml +41 -0
  196. simtools/schemas/model_parameters/fadc_long_sum_offset.schema.yml +38 -0
  197. simtools/schemas/model_parameters/fadc_max_signal.schema.yml +1 -1
  198. simtools/schemas/model_parameters/fadc_max_sum.schema.yml +1 -1
  199. simtools/schemas/model_parameters/fadc_mhz.schema.yml +1 -1
  200. simtools/schemas/model_parameters/fadc_noise.schema.yml +1 -1
  201. simtools/schemas/model_parameters/fadc_pedestal.schema.yml +1 -1
  202. simtools/schemas/model_parameters/fadc_pulse_shape.schema.yml +13 -1
  203. simtools/schemas/model_parameters/fadc_sensitivity.schema.yml +1 -1
  204. simtools/schemas/model_parameters/fadc_sum_bins.schema.yml +1 -1
  205. simtools/schemas/model_parameters/fadc_sum_offset.schema.yml +1 -1
  206. simtools/schemas/model_parameters/fadc_sysvar_pedestal.schema.yml +1 -1
  207. simtools/schemas/model_parameters/fadc_var_pedestal.schema.yml +1 -1
  208. simtools/schemas/model_parameters/fadc_var_sensitivity.schema.yml +1 -1
  209. simtools/schemas/model_parameters/fake_mirror_list.schema.yml +1 -1
  210. simtools/schemas/model_parameters/flatfielding.schema.yml +1 -1
  211. simtools/schemas/model_parameters/focal_length.schema.yml +1 -1
  212. simtools/schemas/model_parameters/focal_surface_parameters.schema.yml +1 -1
  213. simtools/schemas/model_parameters/focal_surface_ref_radius.schema.yml +1 -1
  214. simtools/schemas/model_parameters/focus_offset.schema.yml +1 -1
  215. simtools/schemas/model_parameters/gain_variation.schema.yml +1 -1
  216. simtools/schemas/model_parameters/geomag_horizontal.schema.yml +1 -1
  217. simtools/schemas/model_parameters/geomag_rotation.schema.yml +1 -1
  218. simtools/schemas/model_parameters/geomag_vertical.schema.yml +1 -1
  219. simtools/schemas/model_parameters/hg_lg_variation.schema.yml +1 -1
  220. simtools/schemas/model_parameters/iobuf_maximum.schema.yml +1 -1
  221. simtools/schemas/model_parameters/iobuf_output_maximum.schema.yml +1 -1
  222. simtools/schemas/model_parameters/laser_events.schema.yml +1 -1
  223. simtools/schemas/model_parameters/laser_external_trigger.schema.yml +1 -1
  224. simtools/schemas/model_parameters/laser_photons.schema.yml +1 -1
  225. simtools/schemas/model_parameters/laser_pulse_exptime.schema.yml +1 -1
  226. simtools/schemas/model_parameters/laser_pulse_offset.schema.yml +1 -1
  227. simtools/schemas/model_parameters/laser_pulse_sigtime.schema.yml +1 -1
  228. simtools/schemas/model_parameters/laser_pulse_twidth.schema.yml +1 -1
  229. simtools/schemas/model_parameters/laser_var_photons.schema.yml +1 -1
  230. simtools/schemas/model_parameters/laser_wavelength.schema.yml +1 -1
  231. simtools/schemas/model_parameters/led_events.schema.yml +1 -1
  232. simtools/schemas/model_parameters/led_photons.schema.yml +1 -1
  233. simtools/schemas/model_parameters/led_pulse_offset.schema.yml +1 -1
  234. simtools/schemas/model_parameters/led_pulse_sigtime.schema.yml +1 -1
  235. simtools/schemas/model_parameters/led_var_photons.schema.yml +1 -1
  236. simtools/schemas/model_parameters/lightguide_efficiency_vs_incidence_angle.schema.yml +11 -1
  237. simtools/schemas/model_parameters/lightguide_efficiency_vs_wavelength.schema.yml +50 -1
  238. simtools/schemas/model_parameters/min_photoelectrons.schema.yml +1 -1
  239. simtools/schemas/model_parameters/min_photons.schema.yml +1 -1
  240. simtools/schemas/model_parameters/mirror_align_random_distance.schema.yml +1 -1
  241. simtools/schemas/model_parameters/mirror_align_random_horizontal.schema.yml +1 -1
  242. simtools/schemas/model_parameters/mirror_align_random_vertical.schema.yml +1 -1
  243. simtools/schemas/model_parameters/mirror_class.schema.yml +1 -1
  244. simtools/schemas/model_parameters/mirror_degraded_reflection.schema.yml +1 -1
  245. simtools/schemas/model_parameters/mirror_focal_length.schema.yml +1 -1
  246. simtools/schemas/model_parameters/mirror_list.schema.yml +1 -1
  247. simtools/schemas/model_parameters/mirror_offset.schema.yml +1 -1
  248. simtools/schemas/model_parameters/mirror_panel_2f_measurements.schema.yml +1 -1
  249. simtools/schemas/model_parameters/mirror_reflection_random_angle.schema.yml +1 -1
  250. simtools/schemas/model_parameters/mirror_reflectivity.schema.yml +11 -1
  251. simtools/schemas/model_parameters/multiplicity_offset.schema.yml +1 -1
  252. simtools/schemas/model_parameters/muon_mono_threshold.schema.yml +1 -1
  253. simtools/schemas/model_parameters/nsb_autoscale_airmass.schema.yml +1 -1
  254. simtools/schemas/model_parameters/nsb_gain_drop_scale.schema.yml +1 -1
  255. simtools/schemas/model_parameters/nsb_offaxis.schema.yml +1 -1
  256. simtools/schemas/model_parameters/nsb_pixel_rate.schema.yml +1 -1
  257. simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml +13 -1
  258. simtools/schemas/model_parameters/nsb_reference_value.schema.yml +1 -1
  259. simtools/schemas/model_parameters/nsb_scaling_factor.schema.yml +1 -1
  260. simtools/schemas/model_parameters/nsb_sky_map.schema.yml +1 -1
  261. simtools/schemas/model_parameters/nsb_spectrum.schema.yml +1 -1
  262. simtools/schemas/model_parameters/num_gains.schema.yml +1 -1
  263. simtools/schemas/model_parameters/only_triggered_telescopes.schema.yml +1 -1
  264. simtools/schemas/model_parameters/optics_properties.schema.yml +1 -1
  265. simtools/schemas/model_parameters/parabolic_dish.schema.yml +1 -1
  266. simtools/schemas/model_parameters/pedestal_events.schema.yml +1 -1
  267. simtools/schemas/model_parameters/photon_delay.schema.yml +1 -1
  268. simtools/schemas/model_parameters/photons_per_run.schema.yml +1 -1
  269. simtools/schemas/model_parameters/pixel_cells.schema.yml +1 -1
  270. simtools/schemas/model_parameters/pixels_parallel.schema.yml +1 -1
  271. simtools/schemas/model_parameters/pixeltrg_time_step.schema.yml +1 -1
  272. simtools/schemas/model_parameters/pm_average_gain.schema.yml +1 -1
  273. simtools/schemas/model_parameters/pm_collection_efficiency.schema.yml +1 -1
  274. simtools/schemas/model_parameters/pm_gain_index.schema.yml +1 -1
  275. simtools/schemas/model_parameters/pm_photoelectron_spectrum.schema.yml +20 -1
  276. simtools/schemas/model_parameters/pm_transit_time.schema.yml +1 -1
  277. simtools/schemas/model_parameters/pm_voltage_variation.schema.yml +1 -1
  278. simtools/schemas/model_parameters/primary_mirror_degraded_map.schema.yml +1 -1
  279. simtools/schemas/model_parameters/primary_mirror_diameter.schema.yml +1 -1
  280. simtools/schemas/model_parameters/primary_mirror_hole_diameter.schema.yml +1 -1
  281. simtools/schemas/model_parameters/primary_mirror_incidence_angle.schema.yml +11 -1
  282. simtools/schemas/model_parameters/primary_mirror_parameters.schema.yml +1 -1
  283. simtools/schemas/model_parameters/primary_mirror_ref_radius.schema.yml +1 -1
  284. simtools/schemas/model_parameters/primary_mirror_segmentation.schema.yml +1 -1
  285. simtools/schemas/model_parameters/qe_variation.schema.yml +1 -1
  286. simtools/schemas/model_parameters/quantum_efficiency.schema.yml +11 -1
  287. simtools/schemas/model_parameters/random_focal_length.schema.yml +1 -1
  288. simtools/schemas/model_parameters/random_generator.schema.yml +1 -1
  289. simtools/schemas/model_parameters/random_mono_probability.schema.yml +1 -1
  290. simtools/schemas/model_parameters/reference_point_altitude.schema.yml +1 -1
  291. simtools/schemas/model_parameters/reference_point_latitude.schema.yml +1 -1
  292. simtools/schemas/model_parameters/reference_point_longitude.schema.yml +1 -1
  293. simtools/schemas/model_parameters/reference_point_utm_east.schema.yml +1 -1
  294. simtools/schemas/model_parameters/reference_point_utm_north.schema.yml +1 -1
  295. simtools/schemas/model_parameters/sampled_output.schema.yml +1 -1
  296. simtools/schemas/model_parameters/save_pe_with_amplitude.schema.yml +1 -1
  297. simtools/schemas/model_parameters/secondary_mirror_baffle.schema.yml +1 -1
  298. simtools/schemas/model_parameters/secondary_mirror_degraded_map.schema.yml +1 -1
  299. simtools/schemas/model_parameters/secondary_mirror_degraded_reflection.schema.yml +1 -1
  300. simtools/schemas/model_parameters/secondary_mirror_diameter.schema.yml +1 -1
  301. simtools/schemas/model_parameters/secondary_mirror_hole_diameter.schema.yml +1 -1
  302. simtools/schemas/model_parameters/secondary_mirror_incidence_angle.schema.yml +11 -1
  303. simtools/schemas/model_parameters/secondary_mirror_parameters.schema.yml +1 -1
  304. simtools/schemas/model_parameters/secondary_mirror_ref_radius.schema.yml +1 -1
  305. simtools/schemas/model_parameters/secondary_mirror_reflectivity.schema.yml +11 -1
  306. simtools/schemas/model_parameters/secondary_mirror_segmentation.schema.yml +1 -1
  307. simtools/schemas/model_parameters/secondary_mirror_shadow_diameter.schema.yml +1 -1
  308. simtools/schemas/model_parameters/secondary_mirror_shadow_offset.schema.yml +1 -1
  309. simtools/schemas/model_parameters/stars.schema.yml +1 -1
  310. simtools/schemas/model_parameters/store_photoelectrons.schema.yml +1 -1
  311. simtools/schemas/model_parameters/tailcut_scale.schema.yml +1 -1
  312. simtools/schemas/model_parameters/telescope_axis_height.schema.yml +1 -1
  313. simtools/schemas/model_parameters/telescope_random_angle.schema.yml +1 -1
  314. simtools/schemas/model_parameters/telescope_random_error.schema.yml +1 -1
  315. simtools/schemas/model_parameters/telescope_sphere_radius.schema.yml +1 -1
  316. simtools/schemas/model_parameters/telescope_transmission.schema.yml +1 -1
  317. simtools/schemas/model_parameters/teltrig_min_sigsum.schema.yml +1 -1
  318. simtools/schemas/model_parameters/teltrig_min_time.schema.yml +1 -1
  319. simtools/schemas/model_parameters/transit_time_calib_error.schema.yml +1 -1
  320. simtools/schemas/model_parameters/transit_time_compensate_error.schema.yml +1 -1
  321. simtools/schemas/model_parameters/transit_time_compensate_step.schema.yml +1 -1
  322. simtools/schemas/model_parameters/transit_time_error.schema.yml +1 -1
  323. simtools/schemas/model_parameters/transit_time_jitter.schema.yml +1 -1
  324. simtools/schemas/model_parameters/trigger_current_limit.schema.yml +1 -1
  325. simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml +1 -1
  326. simtools/schemas/model_parameters/trigger_pixels.schema.yml +1 -1
  327. simtools/schemas/plot_configuration.metaschema.yml +51 -59
  328. simtools/schemas/production_configuration_metrics.schema.yml +12 -2
  329. simtools/schemas/production_tables.schema.yml +2 -2
  330. simtools/simtel/simtel_config_reader.py +2 -2
  331. simtools/simtel/simtel_config_writer.py +16 -4
  332. simtools/simtel/simtel_io_event_histograms.py +746 -0
  333. simtools/simtel/simtel_io_event_reader.py +16 -43
  334. simtools/simtel/simtel_io_event_writer.py +46 -10
  335. simtools/simtel/simtel_io_histogram.py +3 -1
  336. simtools/simtel/simtel_io_histograms.py +7 -3
  337. simtools/simtel/simtel_io_metadata.py +99 -3
  338. simtools/simtel/simtel_table_reader.py +92 -10
  339. simtools/simtel/simulator_array.py +138 -10
  340. simtools/simtel/simulator_camera_efficiency.py +32 -23
  341. simtools/simtel/simulator_light_emission.py +437 -271
  342. simtools/simtel/simulator_ray_tracing.py +1 -1
  343. simtools/simulator.py +105 -147
  344. simtools/testing/configuration.py +24 -26
  345. simtools/testing/helpers.py +2 -2
  346. simtools/testing/log_inspector.py +50 -0
  347. simtools/testing/validate_output.py +87 -37
  348. simtools/utils/general.py +125 -257
  349. simtools/utils/geometry.py +36 -0
  350. simtools/utils/names.py +72 -3
  351. simtools/visualization/legend_handlers.py +180 -264
  352. simtools/visualization/plot_array_layout.py +20 -8
  353. simtools/visualization/plot_pixels.py +1 -2
  354. simtools/visualization/plot_tables.py +202 -27
  355. simtools/visualization/simtel_event_plots.py +816 -0
  356. simtools/visualization/visualize.py +4 -101
  357. gammasimtools-0.17.0.dist-info/RECORD +0 -374
  358. simtools/production_configuration/derive_corsika_limits_grid.py +0 -189
  359. {gammasimtools-0.17.0.dist-info → gammasimtools-0.19.0.dist-info}/WHEEL +0 -0
  360. {gammasimtools-0.17.0.dist-info → gammasimtools-0.19.0.dist-info}/top_level.txt +0 -0
  361. /simtools/{io_operations → io}/hdf5_handler.py +0 -0
  362. /simtools/{io_operations → io}/legacy_data_handler.py +0 -0
  363. /simtools/{schemas → resources}/array_elements.yml +0 -0
simtools/_version.py CHANGED
@@ -1,7 +1,14 @@
1
1
  # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
3
 
4
- __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
4
+ __all__ = [
5
+ "__version__",
6
+ "__version_tuple__",
7
+ "version",
8
+ "version_tuple",
9
+ "__commit_id__",
10
+ "commit_id",
11
+ ]
5
12
 
6
13
  TYPE_CHECKING = False
7
14
  if TYPE_CHECKING:
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
9
16
  from typing import Union
10
17
 
11
18
  VERSION_TUPLE = Tuple[Union[int, str], ...]
19
+ COMMIT_ID = Union[str, None]
12
20
  else:
13
21
  VERSION_TUPLE = object
22
+ COMMIT_ID = object
14
23
 
15
24
  version: str
16
25
  __version__: str
17
26
  __version_tuple__: VERSION_TUPLE
18
27
  version_tuple: VERSION_TUPLE
28
+ commit_id: COMMIT_ID
29
+ __commit_id__: COMMIT_ID
19
30
 
20
- __version__ = version = '0.17.0'
21
- __version_tuple__ = version_tuple = (0, 17, 0)
31
+ __version__ = version = '0.19.0'
32
+ __version_tuple__ = version_tuple = (0, 19, 0)
33
+
34
+ __commit_id__ = commit_id = None
@@ -48,7 +48,7 @@ from pathlib import Path
48
48
 
49
49
  import simtools.utils.general as gen
50
50
  from simtools.configuration import configurator
51
- from simtools.io_operations import io_handler
51
+ from simtools.io import io_handler
52
52
  from simtools.simtel.simtel_io_histograms import SimtelIOHistograms
53
53
 
54
54
 
@@ -69,7 +69,8 @@ import simtools.data_model.model_data_writer as writer
69
69
  import simtools.utils.general as gen
70
70
  from simtools.configuration import configurator
71
71
  from simtools.data_model import schema
72
- from simtools.io_operations.io_handler import IOHandler
72
+ from simtools.io import ascii_handler
73
+ from simtools.io.io_handler import IOHandler
73
74
  from simtools.simtel import simtel_config_reader
74
75
 
75
76
 
@@ -170,7 +171,7 @@ def get_number_of_camera_pixel(args_dict, logger):
170
171
  )
171
172
  _camera_pixel = config_reader.parameter_dict.get(args_dict["simtel_telescope_name"])
172
173
  except (FileNotFoundError, AttributeError):
173
- logger.warning("Failed to read camera pixel parameter.")
174
+ logger.warning("Unable to retrieve camera pixel parameter.")
174
175
  _camera_pixel = None
175
176
  logger.info(f"Number of camera pixels: {_camera_pixel}")
176
177
  return _camera_pixel
@@ -319,7 +320,7 @@ def print_list_of_files(args_dict, logger):
319
320
  """
320
321
  model_files = sorted(Path(args_dict["output_path"]).rglob("*.json"))
321
322
  for file in model_files:
322
- model_dict = gen.collect_data_from_file(file_name=file)
323
+ model_dict = ascii_handler.collect_data_from_file(file_name=file)
323
324
  if model_dict.get("file"):
324
325
  logger.info(f"{file.name}: {model_dict['value']}")
325
326
 
@@ -140,10 +140,10 @@ def _parse(label=None, description=None):
140
140
  def main():
141
141
  """Print a list of array elements."""
142
142
  label = Path(__file__).stem
143
- data_model_name = "array_coordinates"
143
+ model_parameter_name = "array_coordinates"
144
144
  args_dict, db_config = _parse(
145
145
  label,
146
- description=f"Print a list of array element positions ({data_model_name})",
146
+ description=f"Print a list of array element positions ({model_parameter_name})",
147
147
  )
148
148
 
149
149
  logger = logging.getLogger()
@@ -153,7 +153,7 @@ def main():
153
153
  site = args_dict.get("site", None)
154
154
  metadata, validate_schema_file = None, None
155
155
  else:
156
- metadata = MetadataCollector(args_dict=args_dict, data_model_name=data_model_name)
156
+ metadata = MetadataCollector(args_dict=args_dict, model_parameter_name=model_parameter_name)
157
157
  site = metadata.get_site(from_input_meta=True)
158
158
  validate_schema_file = metadata.get_data_model_schema_file_name()
159
159
 
@@ -18,7 +18,16 @@ r"""
18
18
 
19
19
  Examples
20
20
  --------
21
- Upload model data repository to the DB:
21
+ Upload model data repository to the DB
22
+ Loops over all subdirectories in 'input_path' and uploads all json files to the
23
+ database 'new_db_name' (or updates an existing database with the same name):
24
+
25
+ * subdirectories starting with 'OBS' are uploaded to the 'sites' collection
26
+ * json files from the subdirectory 'configuration_sim_telarray/configuration_corsika'
27
+ are uploaded to the 'configuration_sim_telarray/configuration_corsika' collection
28
+ * 'Files' are added to the 'files' collection
29
+ * all other json files are uploaded to collection defined in the array element description
30
+ in 'simtools/schemas/array_elements.yml'
22
31
 
23
32
  .. code-block:: console
24
33
 
@@ -32,6 +32,7 @@ from pathlib import Path
32
32
  import simtools.utils.general as gen
33
33
  from simtools.configuration import configurator
34
34
  from simtools.db import db_handler
35
+ from simtools.io import ascii_handler
35
36
 
36
37
 
37
38
  def _parse():
@@ -86,7 +87,7 @@ def main(): # noqa: D103
86
87
 
87
88
  if gen.user_confirm():
88
89
  for file_to_insert_now in files_to_insert:
89
- par_dict = gen.collect_data_from_file(file_name=file_to_insert_now)
90
+ par_dict = ascii_handler.collect_data_from_file(file_name=file_to_insert_now)
90
91
  logger.info(f"Adding the following parameter to the DB: {par_dict['parameter']}")
91
92
  db.add_new_parameter(
92
93
  db_name=db_config["db_simulation_model"],
@@ -33,7 +33,6 @@
33
33
 
34
34
  """
35
35
 
36
- import json
37
36
  import logging
38
37
  from pathlib import Path
39
38
 
@@ -41,7 +40,8 @@ import astropy.table
41
40
 
42
41
  import simtools.utils.general as gen
43
42
  from simtools.configuration import configurator
44
- from simtools.data_model.model_data_writer import JsonNumpyEncoder, ModelDataWriter
43
+ from simtools.data_model.model_data_writer import ModelDataWriter
44
+ from simtools.io import ascii_handler
45
45
  from simtools.model.array_model import ArrayModel
46
46
 
47
47
 
@@ -145,17 +145,12 @@ def write_ground_array_elements_to_repository(args_dict, db_config, logger):
145
145
  output_path = Path(args_dict["repository_path"]) / f"{element_name}"
146
146
  output_path.mkdir(parents=True, exist_ok=True)
147
147
  logger.info(f"Writing array element positions (ground) to {output_path}")
148
- with open(
149
- output_path / "array_element_position_ground.json", "w", encoding="utf-8"
150
- ) as file:
151
- json.dump(
152
- data,
153
- file,
154
- indent=4,
155
- sort_keys=False,
156
- cls=JsonNumpyEncoder,
157
- )
158
- file.write("\n")
148
+ ascii_handler.write_data_to_file(
149
+ data=data,
150
+ output_file=output_path / "array_element_position_ground.json",
151
+ sort_keys=False,
152
+ numpy_types=True,
153
+ )
159
154
 
160
155
 
161
156
  def main():
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/python3
2
+
3
+ """
4
+ Generate compound indexes for the specified database.
5
+
6
+ This needs to be done once after a database has been set up.
7
+ Significantly accelerates database querying (at least a factor
8
+ of 5 in query time with a factor of 10 less documents examined).
9
+
10
+ Command line arguments
11
+ ----------------------
12
+ db_name (str, optional)
13
+ Database name (use "all" for all databases)
14
+ """
15
+
16
+ import logging
17
+
18
+ import simtools.utils.general as gen
19
+ from simtools.configuration import configurator
20
+ from simtools.db import db_handler
21
+
22
+
23
+ def _parse():
24
+ config = configurator.Configurator(
25
+ description="Generate compound indexes for a specific database"
26
+ )
27
+ config.parser.add_argument(
28
+ "--db_name",
29
+ help="Database name",
30
+ default="all",
31
+ required=True,
32
+ )
33
+ return config.initialize(db_config=True)
34
+
35
+
36
+ def main(): # noqa: D103
37
+ args_dict, db_config = _parse()
38
+
39
+ logger = logging.getLogger()
40
+ logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
41
+
42
+ db = db_handler.DatabaseHandler(mongo_db_config=db_config)
43
+ # databases without internal databases we don't have rights to modify
44
+ databases = [
45
+ d for d in db.db_client.list_database_names() if d not in ("config", "admin", "local")
46
+ ]
47
+ requested = args_dict["db_name"]
48
+ if requested != "all" and requested not in databases:
49
+ raise ValueError(
50
+ f"Requested database '{requested}' not found. "
51
+ f"Following databases are available: {', '.join(databases)}"
52
+ )
53
+
54
+ databases = databases if requested == "all" else [requested]
55
+ for db_name in databases:
56
+ logger.info(f"Generating compound indexes for database: {db_name}")
57
+ db.generate_compound_indexes(db_name=db_name)
58
+
59
+
60
+ if __name__ == "__main__":
61
+ main()
@@ -38,7 +38,7 @@ import logging
38
38
  import simtools.utils.general as gen
39
39
  from simtools.configuration import configurator
40
40
  from simtools.db import db_handler
41
- from simtools.io_operations import io_handler
41
+ from simtools.io import io_handler
42
42
 
43
43
 
44
44
  def _parse():
@@ -60,7 +60,6 @@ r"""
60
60
 
61
61
  """
62
62
 
63
- import json
64
63
  import logging
65
64
  from pathlib import Path
66
65
  from pprint import pprint
@@ -68,7 +67,7 @@ from pprint import pprint
68
67
  import simtools.utils.general as gen
69
68
  from simtools.configuration import configurator
70
69
  from simtools.db import db_handler
71
- from simtools.io_operations import io_handler
70
+ from simtools.io import ascii_handler, io_handler
72
71
 
73
72
 
74
73
  def _parse():
@@ -142,8 +141,9 @@ def main(): # noqa: D103
142
141
  )
143
142
  pars[args_dict["parameter"]].pop("_id")
144
143
  pars[args_dict["parameter"]].pop("entry_date")
145
- with open(_output_file, "w", encoding="utf-8") as json_file:
146
- json.dump(pars[args_dict["parameter"]], json_file, indent=4)
144
+ ascii_handler.write_data_to_file(
145
+ data=pars[args_dict["parameter"]], output_file=_output_file
146
+ )
147
147
  else:
148
148
  pprint(pars[args_dict["parameter"]])
149
149
 
@@ -6,7 +6,7 @@ Inspect databases and print (available database names and collections).
6
6
  Command line arguments
7
7
  ----------------------
8
8
  db_name (str, optional)
9
- Inspect a specific database.
9
+ Database name (use "all" for all databases)
10
10
  """
11
11
 
12
12
  import logging
@@ -20,11 +20,11 @@ def _parse():
20
20
  config = configurator.Configurator(description="Inspect databases")
21
21
  config.parser.add_argument(
22
22
  "--db_name",
23
- help="Inspect a specific database (use all to print all databases)",
23
+ help="Database name",
24
24
  default="all",
25
25
  required=True,
26
26
  )
27
- return config.initialize(db_config=True, simulation_model="telescope")
27
+ return config.initialize(db_config=True)
28
28
 
29
29
 
30
30
  def main(): # noqa: D103
@@ -34,18 +34,28 @@ def main(): # noqa: D103
34
34
  logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
35
35
 
36
36
  db = db_handler.DatabaseHandler(mongo_db_config=db_config)
37
-
38
- databases = db.db_client.list_database_names()
37
+ # databases without internal databases we don't have rights to modify
38
+ databases = [
39
+ d for d in db.db_client.list_database_names() if d not in ("config", "admin", "local")
40
+ ]
41
+ requested = args_dict["db_name"]
42
+ if requested != "all" and requested not in databases:
43
+ raise ValueError(
44
+ f"Requested database '{requested}' not found. "
45
+ f"Following databases are available: {', '.join(databases)}"
46
+ )
47
+
48
+ databases = databases if requested == "all" else [requested]
39
49
 
40
50
  for db_name in databases:
41
- if args_dict["db_name"] != "all" and db_name != args_dict["db_name"]:
42
- continue
43
- # missing admin rights; skip config and admin
44
- if db_name in ("config", "admin", "local"):
45
- continue
46
51
  print("Database:", db_name)
47
52
  collections = db.get_collections(db_name=db_name)
48
53
  print(" Collections:", collections)
54
+ print(" Indexes:")
55
+ for collection_name in collections:
56
+ db_collection = db.get_collection(collection_name=collection_name, db_name=db_name)
57
+ for idx in db_collection.list_indexes():
58
+ print(f" {collection_name}: {idx}")
49
59
 
50
60
 
51
61
  if __name__ == "__main__":
@@ -1,18 +1,15 @@
1
1
  #!/usr/bin/python3
2
2
 
3
3
  r"""
4
- Derive the simulation model parameter mirror_reflection_random_angle.
5
-
6
- This parameter, often referred to as "mirror roughness," is used to align the simulation
7
- with the measured containment diameter of the optical point-spread function (PSF) for
8
- individual mirror panels.
4
+ Derive mirror random reflection angle (mirror roughness) of a single mirror panel.
9
5
 
10
6
  Description
11
7
  -----------
12
8
 
13
9
  This application derives the value of the simulation model parameter
14
10
  *mirror_reflection_random_angle* using measurements of the focal length
15
- and PSF of individual mirror panels.
11
+ and point-spread function (PSF) of individual mirror panels.
12
+ This parameter is sometimes referred to as the "mirror roughness".
16
13
 
17
14
  PSF measurements are provided by one of the following options:
18
15
 
@@ -22,7 +19,7 @@ r"""
22
19
  * file (table) with measured PSF for each mirror panel spot size (``--psf_measurement``)
23
20
 
24
21
  The containment fraction used for the PSF diameter calculation is set through
25
- the argument ``--containment_fraction`` (typically 0.8 = 80%).
22
+ the argument ``--containment_fraction`` (typically 0.8 = 80%; called below D80).
26
23
 
27
24
  Mirror panels are simulated individually, using one of the following options to set the
28
25
  mirror panel focal length:
@@ -37,7 +34,7 @@ r"""
37
34
  taken from the Model Parameters DB (default) or can be set using the argument ``--rnda``.
38
35
 
39
36
  Ray-tracing simulations are performed for single mirror configurations for each
40
- mirror given in the mirror_list. The mean simulated containment diameter for all the mirrors
37
+ mirror given in the mirror list. The mean simulated containment diameter for all the mirrors
41
38
  is compared with the mean measured containment diameter. The algorithm defines a new value for
42
39
  the random reflection angle based on the sign of the difference between measured and simulated
43
40
  containment diameters and a new set of simulations is performed. This process is repeated
@@ -59,7 +56,7 @@ r"""
59
56
  .. image:: images/derive_mirror_rnda_North-MST-FlashCam-D_D80-distributions.png
60
57
  :width: 49 %
61
58
 
62
- This application uses the following :ref:`SimulationSoftware` tools:
59
+ This application uses the following software tools:
63
60
 
64
61
  - sim_telarray/bin/sim_telarray
65
62
  - sim_telarray/bin/rx (optional)
@@ -67,7 +64,7 @@ r"""
67
64
  Command line arguments
68
65
  ----------------------
69
66
  telescope (str, required)
70
- Telescope name (e.g. North-LST-1, South-SST-D, ...)
67
+ Telescope name (e.g. LSTN-01, SSTS-25)
71
68
  model_version (str, optional)
72
69
  Model version
73
70
  psf_measurement (str, optional)
@@ -89,6 +86,8 @@ r"""
89
86
  random_focal_length (float, optional)
90
87
  Value of the random focal lengths to replace the default random_focal_length. Only used if
91
88
  'use_random_focal_length' is activated.
89
+ random_focal_length_seed (int, optional)
90
+ Seed for the random number generator used for focal length variation.
92
91
  no_tuning (activation mode, optional)
93
92
  Turn off the tuning - A single case will be simulated and plotted.
94
93
  test (activation mode, optional)
@@ -96,8 +95,8 @@ r"""
96
95
 
97
96
  Example
98
97
  -------
99
- Derive mirror random reflection angle for a mid-sized telescope (MST),
100
- simulation production 5.0.0
98
+ Derive mirror random reflection angle for a large-sized telescope (LSTS),
99
+ simulation production 6.0.0
101
100
 
102
101
  .. code-block:: console
103
102
 
@@ -200,6 +199,13 @@ def _parse(label):
200
199
  type=float,
201
200
  required=False,
202
201
  )
202
+ config.parser.add_argument(
203
+ "--random_focal_length_seed",
204
+ help="Seed for the random number generator used for focal length variation.",
205
+ type=int,
206
+ required=False,
207
+ default=None,
208
+ )
203
209
  config.parser.add_argument(
204
210
  "--no_tuning",
205
211
  help="no tuning of random_reflection_angle (a single case will be simulated).",