gammasimtools 0.21.0__py3-none-any.whl → 0.22.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 (312) hide show
  1. {gammasimtools-0.21.0.dist-info → gammasimtools-0.22.0.dist-info}/METADATA +2 -3
  2. {gammasimtools-0.21.0.dist-info → gammasimtools-0.22.0.dist-info}/RECORD +311 -295
  3. {gammasimtools-0.21.0.dist-info → gammasimtools-0.22.0.dist-info}/entry_points.txt +2 -1
  4. simtools/_version.py +2 -2
  5. simtools/applications/calculate_incident_angles.py +1 -4
  6. simtools/applications/convert_all_model_parameters_from_simtel.py +1 -2
  7. simtools/applications/convert_model_parameter_from_simtel.py +0 -1
  8. simtools/applications/db_generate_compound_indexes.py +3 -16
  9. simtools/applications/db_upload_model_repository.py +122 -0
  10. simtools/applications/derive_psf_parameters.py +13 -3
  11. simtools/applications/docs_produce_array_element_report.py +1 -1
  12. simtools/applications/docs_produce_calibration_reports.py +1 -1
  13. simtools/applications/docs_produce_model_parameter_reports.py +1 -1
  14. simtools/applications/docs_produce_simulation_configuration_report.py +1 -1
  15. simtools/applications/generate_corsika_histograms.py +1 -1
  16. simtools/applications/maintain_simulation_model_add_production.py +7 -31
  17. simtools/applications/merge_tables.py +1 -1
  18. simtools/applications/plot_array_layout.py +1 -2
  19. simtools/applications/print_version.py +1 -1
  20. simtools/applications/production_derive_statistics.py +1 -2
  21. simtools/applications/production_generate_grid.py +1 -1
  22. simtools/applications/simulate_flasher.py +74 -72
  23. simtools/applications/simulate_illuminator.py +52 -186
  24. simtools/applications/{simulate_calibration_events.py → simulate_pedestals.py} +9 -55
  25. simtools/applications/submit_model_parameter_from_external.py +0 -1
  26. simtools/applications/validate_camera_efficiency.py +0 -1
  27. simtools/applications/validate_camera_fov.py +1 -2
  28. simtools/applications/validate_cumulative_psf.py +2 -3
  29. simtools/applications/validate_file_using_schema.py +20 -12
  30. simtools/applications/validate_optics.py +2 -2
  31. simtools/camera/camera_efficiency.py +8 -11
  32. simtools/configuration/commandline_parser.py +1 -7
  33. simtools/configuration/configurator.py +0 -2
  34. simtools/corsika/corsika_config.py +9 -11
  35. simtools/corsika/corsika_histograms.py +1 -1
  36. simtools/data_model/model_data_writer.py +87 -25
  37. simtools/data_model/schema.py +61 -2
  38. simtools/data_model/validate_data.py +1 -1
  39. simtools/db/db_handler.py +58 -37
  40. simtools/db/db_model_upload.py +210 -5
  41. simtools/io/io_handler.py +31 -83
  42. simtools/job_execution/job_manager.py +45 -0
  43. simtools/layout/array_layout_utils.py +1 -5
  44. simtools/model/array_model.py +93 -42
  45. simtools/model/model_parameter.py +20 -9
  46. simtools/model/model_repository.py +139 -106
  47. simtools/model/model_utils.py +21 -6
  48. simtools/model/telescope_model.py +20 -0
  49. simtools/production_configuration/derive_corsika_limits.py +1 -1
  50. simtools/ray_tracing/incident_angles.py +7 -7
  51. simtools/ray_tracing/mirror_panel_psf.py +1 -1
  52. simtools/ray_tracing/psf_parameter_optimisation.py +180 -73
  53. simtools/ray_tracing/ray_tracing.py +1 -3
  54. simtools/reporting/docs_read_parameters.py +171 -101
  55. simtools/resources/array_elements.yml +26 -0
  56. simtools/runners/corsika_simtel_runner.py +11 -17
  57. simtools/runners/runner_services.py +5 -6
  58. simtools/runners/simtools_runner.py +0 -2
  59. simtools/schemas/application_workflow.metaschema.yml +1 -1
  60. simtools/schemas/common_definitions.schema.yml +39 -0
  61. simtools/schemas/model_parameter.metaschema.yml +19 -13
  62. simtools/schemas/model_parameter_and_data_schema.metaschema.yml +6 -12
  63. simtools/schemas/model_parameters/adjust_gain.schema.yml +0 -5
  64. simtools/schemas/model_parameters/altitude.schema.yml +0 -5
  65. simtools/schemas/model_parameters/array_coordinates.schema.yml +0 -5
  66. simtools/schemas/model_parameters/array_coordinates_UTM.schema.yml +0 -5
  67. simtools/schemas/model_parameters/array_element_position_ground.schema.yml +0 -7
  68. simtools/schemas/model_parameters/array_element_position_utm.schema.yml +0 -7
  69. simtools/schemas/model_parameters/array_layouts.schema.yml +0 -5
  70. simtools/schemas/model_parameters/array_triggers.schema.yml +0 -5
  71. simtools/schemas/model_parameters/array_window.schema.yml +0 -7
  72. simtools/schemas/model_parameters/asum_clipping.schema.yml +0 -3
  73. simtools/schemas/model_parameters/asum_offset.schema.yml +0 -7
  74. simtools/schemas/model_parameters/asum_shaping.schema.yml +0 -7
  75. simtools/schemas/model_parameters/asum_threshold.schema.yml +0 -7
  76. simtools/schemas/model_parameters/atmospheric_profile.schema.yml +0 -5
  77. simtools/schemas/model_parameters/atmospheric_transmission.schema.yml +0 -5
  78. simtools/schemas/model_parameters/axes_offsets.schema.yml +0 -7
  79. simtools/schemas/model_parameters/calibration_devices.schema.yml +30 -0
  80. simtools/schemas/model_parameters/camera_body_diameter.schema.yml +0 -7
  81. simtools/schemas/model_parameters/camera_body_shape.schema.yml +0 -7
  82. simtools/schemas/model_parameters/camera_config_file.schema.yml +0 -7
  83. simtools/schemas/model_parameters/camera_config_rotate.schema.yml +0 -7
  84. simtools/schemas/model_parameters/camera_degraded_efficiency.schema.yml +0 -7
  85. simtools/schemas/model_parameters/camera_degraded_map.schema.yml +0 -7
  86. simtools/schemas/model_parameters/camera_depth.schema.yml +0 -7
  87. simtools/schemas/model_parameters/camera_filter.schema.yml +0 -7
  88. simtools/schemas/model_parameters/camera_filter_incidence_angle.schema.yml +0 -3
  89. simtools/schemas/model_parameters/camera_pixels.schema.yml +0 -7
  90. simtools/schemas/model_parameters/camera_transmission.schema.yml +0 -7
  91. simtools/schemas/model_parameters/channels_per_chip.schema.yml +0 -7
  92. simtools/schemas/model_parameters/correct_nsb_spectrum_to_telescope_altitude.schema.yml +0 -7
  93. simtools/schemas/model_parameters/corsika_observation_level.schema.yml +0 -5
  94. simtools/schemas/model_parameters/dark_events.schema.yml +4 -3
  95. simtools/schemas/model_parameters/default_trigger.schema.yml +0 -7
  96. simtools/schemas/model_parameters/design_model.schema.yml +0 -7
  97. simtools/schemas/model_parameters/disc_ac_coupled.schema.yml +0 -7
  98. simtools/schemas/model_parameters/disc_bins.schema.yml +0 -7
  99. simtools/schemas/model_parameters/disc_start.schema.yml +0 -7
  100. simtools/schemas/model_parameters/discriminator_amplitude.schema.yml +0 -7
  101. simtools/schemas/model_parameters/discriminator_fall_time.schema.yml +0 -7
  102. simtools/schemas/model_parameters/discriminator_gate_length.schema.yml +0 -7
  103. simtools/schemas/model_parameters/discriminator_hysteresis.schema.yml +0 -7
  104. simtools/schemas/model_parameters/discriminator_output_amplitude.schema.yml +0 -7
  105. simtools/schemas/model_parameters/discriminator_output_var_percent.schema.yml +0 -7
  106. simtools/schemas/model_parameters/discriminator_pulse_shape.schema.yml +0 -7
  107. simtools/schemas/model_parameters/discriminator_rise_time.schema.yml +0 -7
  108. simtools/schemas/model_parameters/discriminator_scale_threshold.schema.yml +0 -7
  109. simtools/schemas/model_parameters/discriminator_sigsum_over_threshold.schema.yml +0 -7
  110. simtools/schemas/model_parameters/discriminator_threshold.schema.yml +0 -7
  111. simtools/schemas/model_parameters/discriminator_time_over_threshold.schema.yml +1 -9
  112. simtools/schemas/model_parameters/discriminator_var_gate_length.schema.yml +0 -7
  113. simtools/schemas/model_parameters/discriminator_var_sigsum_over_threshold.schema.yml +0 -7
  114. simtools/schemas/model_parameters/discriminator_var_threshold.schema.yml +0 -7
  115. simtools/schemas/model_parameters/discriminator_var_time_over_threshold.schema.yml +0 -7
  116. simtools/schemas/model_parameters/dish_shape_length.schema.yml +0 -5
  117. simtools/schemas/model_parameters/dsum_clipping.schema.yml +1 -5
  118. simtools/schemas/model_parameters/dsum_ignore_below.schema.yml +0 -3
  119. simtools/schemas/model_parameters/dsum_offset.schema.yml +0 -3
  120. simtools/schemas/model_parameters/dsum_pedsub.schema.yml +0 -3
  121. simtools/schemas/model_parameters/dsum_pre_clipping.schema.yml +0 -3
  122. simtools/schemas/model_parameters/dsum_prescale.schema.yml +0 -3
  123. simtools/schemas/model_parameters/dsum_presum_max.schema.yml +0 -3
  124. simtools/schemas/model_parameters/dsum_presum_shift.schema.yml +0 -3
  125. simtools/schemas/model_parameters/dsum_shaping.schema.yml +0 -3
  126. simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml +0 -3
  127. simtools/schemas/model_parameters/dsum_threshold.schema.yml +2 -12
  128. simtools/schemas/model_parameters/dsum_zero_clip.schema.yml +0 -3
  129. simtools/schemas/model_parameters/effective_focal_length.schema.yml +0 -7
  130. simtools/schemas/model_parameters/epsg_code.schema.yml +0 -5
  131. simtools/schemas/model_parameters/fadc_ac_coupled.schema.yml +0 -7
  132. simtools/schemas/model_parameters/fadc_amplitude.schema.yml +2 -9
  133. simtools/schemas/model_parameters/fadc_bins.schema.yml +0 -7
  134. simtools/schemas/model_parameters/fadc_compensate_pedestal.schema.yml +0 -7
  135. simtools/schemas/model_parameters/fadc_dev_pedestal.schema.yml +0 -2
  136. simtools/schemas/model_parameters/fadc_err_compensate_pedestal.schema.yml +0 -7
  137. simtools/schemas/model_parameters/fadc_err_pedestal.schema.yml +0 -7
  138. simtools/schemas/model_parameters/fadc_lg_amplitude.schema.yml +2 -9
  139. simtools/schemas/model_parameters/fadc_lg_compensate_pedestal.schema.yml +0 -7
  140. simtools/schemas/model_parameters/fadc_lg_dev_pedestal.schema.yml +0 -2
  141. simtools/schemas/model_parameters/fadc_lg_err_compensate_pedestal.schema.yml +0 -7
  142. simtools/schemas/model_parameters/fadc_lg_err_pedestal.schema.yml +0 -7
  143. simtools/schemas/model_parameters/fadc_lg_max_signal.schema.yml +0 -7
  144. simtools/schemas/model_parameters/fadc_lg_max_sum.schema.yml +0 -2
  145. simtools/schemas/model_parameters/fadc_lg_noise.schema.yml +0 -7
  146. simtools/schemas/model_parameters/fadc_lg_pedestal.schema.yml +0 -7
  147. simtools/schemas/model_parameters/fadc_lg_sensitivity.schema.yml +0 -7
  148. simtools/schemas/model_parameters/fadc_lg_sysvar_pedestal.schema.yml +0 -7
  149. simtools/schemas/model_parameters/fadc_lg_var_pedestal.schema.yml +0 -7
  150. simtools/schemas/model_parameters/fadc_lg_var_sensitivity.schema.yml +0 -7
  151. simtools/schemas/model_parameters/fadc_long_event_threshold.schema.yml +0 -3
  152. simtools/schemas/model_parameters/fadc_long_sum_bins.schema.yml +0 -3
  153. simtools/schemas/model_parameters/fadc_long_sum_offset.schema.yml +0 -3
  154. simtools/schemas/model_parameters/fadc_max_signal.schema.yml +0 -7
  155. simtools/schemas/model_parameters/fadc_max_sum.schema.yml +0 -2
  156. simtools/schemas/model_parameters/fadc_mhz.schema.yml +0 -7
  157. simtools/schemas/model_parameters/fadc_noise.schema.yml +0 -7
  158. simtools/schemas/model_parameters/fadc_pedestal.schema.yml +0 -7
  159. simtools/schemas/model_parameters/fadc_pulse_shape.schema.yml +0 -7
  160. simtools/schemas/model_parameters/fadc_sensitivity.schema.yml +0 -7
  161. simtools/schemas/model_parameters/fadc_sum_bins.schema.yml +0 -7
  162. simtools/schemas/model_parameters/fadc_sum_offset.schema.yml +0 -7
  163. simtools/schemas/model_parameters/fadc_sysvar_pedestal.schema.yml +0 -7
  164. simtools/schemas/model_parameters/fadc_var_pedestal.schema.yml +0 -7
  165. simtools/schemas/model_parameters/fadc_var_sensitivity.schema.yml +0 -7
  166. simtools/schemas/model_parameters/fake_mirror_list.schema.yml +0 -3
  167. simtools/schemas/model_parameters/flasher_angular_distribution.schema.yml +32 -0
  168. simtools/schemas/model_parameters/flasher_angular_distribution_width.schema.yml +32 -0
  169. simtools/schemas/model_parameters/flasher_bunch_size.schema.yml +28 -0
  170. simtools/schemas/model_parameters/flasher_external_trigger.schema.yml +32 -0
  171. simtools/schemas/model_parameters/flasher_photons.schema.yml +34 -0
  172. simtools/schemas/model_parameters/flasher_position.schema.yml +43 -0
  173. simtools/schemas/model_parameters/flasher_pulse_exp_decay.schema.yml +29 -0
  174. simtools/schemas/model_parameters/flasher_pulse_offset.schema.yml +35 -0
  175. simtools/schemas/model_parameters/flasher_pulse_shape.schema.yml +30 -0
  176. simtools/schemas/model_parameters/flasher_pulse_width.schema.yml +32 -0
  177. simtools/schemas/model_parameters/flasher_type.schema.yml +28 -0
  178. simtools/schemas/model_parameters/flasher_var_photons.schema.yml +31 -0
  179. simtools/schemas/model_parameters/flasher_wavelength.schema.yml +33 -0
  180. simtools/schemas/model_parameters/flatfielding.schema.yml +0 -7
  181. simtools/schemas/model_parameters/focal_length.schema.yml +0 -7
  182. simtools/schemas/model_parameters/focal_surface_parameters.schema.yml +0 -3
  183. simtools/schemas/model_parameters/focal_surface_ref_radius.schema.yml +0 -3
  184. simtools/schemas/model_parameters/focus_offset.schema.yml +0 -7
  185. simtools/schemas/model_parameters/gain_variation.schema.yml +0 -7
  186. simtools/schemas/model_parameters/geomag_horizontal.schema.yml +2 -7
  187. simtools/schemas/model_parameters/geomag_rotation.schema.yml +2 -7
  188. simtools/schemas/model_parameters/geomag_vertical.schema.yml +2 -7
  189. simtools/schemas/model_parameters/hg_lg_variation.schema.yml +0 -5
  190. simtools/schemas/model_parameters/iobuf_maximum.schema.yml +0 -7
  191. simtools/schemas/model_parameters/iobuf_output_maximum.schema.yml +0 -7
  192. simtools/schemas/model_parameters/laser_events.schema.yml +4 -3
  193. simtools/schemas/model_parameters/laser_external_trigger.schema.yml +4 -3
  194. simtools/schemas/model_parameters/laser_photons.schema.yml +4 -3
  195. simtools/schemas/model_parameters/laser_pulse_exptime.schema.yml +4 -3
  196. simtools/schemas/model_parameters/laser_pulse_offset.schema.yml +4 -3
  197. simtools/schemas/model_parameters/laser_pulse_sigtime.schema.yml +4 -3
  198. simtools/schemas/model_parameters/laser_pulse_twidth.schema.yml +4 -3
  199. simtools/schemas/model_parameters/laser_var_photons.schema.yml +4 -3
  200. simtools/schemas/model_parameters/laser_wavelength.schema.yml +4 -3
  201. simtools/schemas/model_parameters/led_events.schema.yml +4 -3
  202. simtools/schemas/model_parameters/led_photons.schema.yml +4 -3
  203. simtools/schemas/model_parameters/led_pulse_offset.schema.yml +4 -3
  204. simtools/schemas/model_parameters/led_pulse_sigtime.schema.yml +4 -3
  205. simtools/schemas/model_parameters/led_var_photons.schema.yml +4 -3
  206. simtools/schemas/model_parameters/lightguide_efficiency_vs_incidence_angle.schema.yml +0 -7
  207. simtools/schemas/model_parameters/lightguide_efficiency_vs_wavelength.schema.yml +0 -7
  208. simtools/schemas/model_parameters/min_photoelectrons.schema.yml +0 -7
  209. simtools/schemas/model_parameters/min_photons.schema.yml +0 -7
  210. simtools/schemas/model_parameters/mirror_align_random_distance.schema.yml +0 -5
  211. simtools/schemas/model_parameters/mirror_align_random_horizontal.schema.yml +0 -7
  212. simtools/schemas/model_parameters/mirror_align_random_vertical.schema.yml +0 -7
  213. simtools/schemas/model_parameters/mirror_class.schema.yml +2 -9
  214. simtools/schemas/model_parameters/mirror_degraded_reflection.schema.yml +0 -7
  215. simtools/schemas/model_parameters/mirror_focal_length.schema.yml +0 -5
  216. simtools/schemas/model_parameters/mirror_list.schema.yml +0 -7
  217. simtools/schemas/model_parameters/mirror_offset.schema.yml +0 -7
  218. simtools/schemas/model_parameters/mirror_reflection_random_angle.schema.yml +0 -7
  219. simtools/schemas/model_parameters/mirror_reflectivity.schema.yml +0 -7
  220. simtools/schemas/model_parameters/multiplicity_offset.schema.yml +0 -7
  221. simtools/schemas/model_parameters/muon_mono_threshold.schema.yml +0 -7
  222. simtools/schemas/model_parameters/nsb_autoscale_airmass.schema.yml +0 -7
  223. simtools/schemas/model_parameters/nsb_gain_drop_scale.schema.yml +0 -3
  224. simtools/schemas/model_parameters/nsb_offaxis.schema.yml +0 -7
  225. simtools/schemas/model_parameters/nsb_pixel_rate.schema.yml +0 -7
  226. simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml +0 -5
  227. simtools/schemas/model_parameters/nsb_reference_value.schema.yml +0 -5
  228. simtools/schemas/model_parameters/nsb_scaling_factor.schema.yml +0 -5
  229. simtools/schemas/model_parameters/nsb_sky_map.schema.yml +0 -5
  230. simtools/schemas/model_parameters/nsb_spectrum.schema.yml +0 -5
  231. simtools/schemas/model_parameters/num_gains.schema.yml +0 -7
  232. simtools/schemas/model_parameters/only_triggered_telescopes.schema.yml +0 -7
  233. simtools/schemas/model_parameters/optics_properties.schema.yml +0 -7
  234. simtools/schemas/model_parameters/parabolic_dish.schema.yml +0 -3
  235. simtools/schemas/model_parameters/pedestal_events.schema.yml +4 -7
  236. simtools/schemas/model_parameters/photon_delay.schema.yml +0 -7
  237. simtools/schemas/model_parameters/photons_per_run.schema.yml +4 -4
  238. simtools/schemas/model_parameters/pixel_cells.schema.yml +0 -3
  239. simtools/schemas/model_parameters/pixels_parallel.schema.yml +0 -3
  240. simtools/schemas/model_parameters/pixeltrg_time_step.schema.yml +0 -7
  241. simtools/schemas/model_parameters/pm_average_gain.schema.yml +0 -5
  242. simtools/schemas/model_parameters/pm_collection_efficiency.schema.yml +0 -5
  243. simtools/schemas/model_parameters/pm_gain_index.schema.yml +0 -5
  244. simtools/schemas/model_parameters/pm_photoelectron_spectrum.schema.yml +0 -7
  245. simtools/schemas/model_parameters/pm_transit_time.schema.yml +4 -9
  246. simtools/schemas/model_parameters/pm_voltage_variation.schema.yml +0 -5
  247. simtools/schemas/model_parameters/primary_mirror_degraded_map.schema.yml +0 -7
  248. simtools/schemas/model_parameters/primary_mirror_diameter.schema.yml +0 -3
  249. simtools/schemas/model_parameters/primary_mirror_hole_diameter.schema.yml +0 -3
  250. simtools/schemas/model_parameters/primary_mirror_incidence_angle.schema.yml +0 -3
  251. simtools/schemas/model_parameters/primary_mirror_parameters.schema.yml +0 -3
  252. simtools/schemas/model_parameters/primary_mirror_ref_radius.schema.yml +0 -3
  253. simtools/schemas/model_parameters/primary_mirror_segmentation.schema.yml +0 -3
  254. simtools/schemas/model_parameters/qe_variation.schema.yml +0 -7
  255. simtools/schemas/model_parameters/quantum_efficiency.schema.yml +0 -7
  256. simtools/schemas/model_parameters/random_focal_length.schema.yml +2 -7
  257. simtools/schemas/model_parameters/random_generator.schema.yml +0 -7
  258. simtools/schemas/model_parameters/random_mono_probability.schema.yml +0 -7
  259. simtools/schemas/model_parameters/reference_point_altitude.schema.yml +0 -5
  260. simtools/schemas/model_parameters/reference_point_latitude.schema.yml +0 -5
  261. simtools/schemas/model_parameters/reference_point_longitude.schema.yml +0 -5
  262. simtools/schemas/model_parameters/reference_point_utm_east.schema.yml +0 -5
  263. simtools/schemas/model_parameters/reference_point_utm_north.schema.yml +0 -5
  264. simtools/schemas/model_parameters/sampled_output.schema.yml +0 -7
  265. simtools/schemas/model_parameters/save_pe_with_amplitude.schema.yml +0 -7
  266. simtools/schemas/model_parameters/secondary_mirror_baffle.schema.yml +0 -3
  267. simtools/schemas/model_parameters/secondary_mirror_degraded_map.schema.yml +0 -3
  268. simtools/schemas/model_parameters/secondary_mirror_degraded_reflection.schema.yml +0 -3
  269. simtools/schemas/model_parameters/secondary_mirror_diameter.schema.yml +0 -3
  270. simtools/schemas/model_parameters/secondary_mirror_hole_diameter.schema.yml +0 -3
  271. simtools/schemas/model_parameters/secondary_mirror_incidence_angle.schema.yml +0 -3
  272. simtools/schemas/model_parameters/secondary_mirror_parameters.schema.yml +0 -3
  273. simtools/schemas/model_parameters/secondary_mirror_ref_radius.schema.yml +0 -3
  274. simtools/schemas/model_parameters/secondary_mirror_reflectivity.schema.yml +0 -3
  275. simtools/schemas/model_parameters/secondary_mirror_segmentation.schema.yml +0 -3
  276. simtools/schemas/model_parameters/secondary_mirror_shadow_diameter.schema.yml +0 -3
  277. simtools/schemas/model_parameters/secondary_mirror_shadow_offset.schema.yml +0 -3
  278. simtools/schemas/model_parameters/stars.schema.yml +0 -5
  279. simtools/schemas/model_parameters/store_photoelectrons.schema.yml +0 -7
  280. simtools/schemas/model_parameters/tailcut_scale.schema.yml +0 -7
  281. simtools/schemas/model_parameters/telescope_axis_height.schema.yml +0 -7
  282. simtools/schemas/model_parameters/telescope_random_angle.schema.yml +0 -7
  283. simtools/schemas/model_parameters/telescope_random_error.schema.yml +0 -7
  284. simtools/schemas/model_parameters/telescope_sphere_radius.schema.yml +0 -7
  285. simtools/schemas/model_parameters/telescope_transmission.schema.yml +0 -7
  286. simtools/schemas/model_parameters/teltrig_min_sigsum.schema.yml +0 -7
  287. simtools/schemas/model_parameters/teltrig_min_time.schema.yml +0 -7
  288. simtools/schemas/model_parameters/transit_time_calib_error.schema.yml +0 -7
  289. simtools/schemas/model_parameters/transit_time_compensate_error.schema.yml +0 -7
  290. simtools/schemas/model_parameters/transit_time_compensate_step.schema.yml +0 -7
  291. simtools/schemas/model_parameters/transit_time_error.schema.yml +0 -7
  292. simtools/schemas/model_parameters/transit_time_jitter.schema.yml +0 -7
  293. simtools/schemas/model_parameters/trigger_current_limit.schema.yml +0 -7
  294. simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml +0 -7
  295. simtools/schemas/model_parameters/trigger_pixels.schema.yml +0 -7
  296. simtools/schemas/production_tables.schema.yml +8 -8
  297. simtools/schemas/simulation_models_info.schema.yml +78 -0
  298. simtools/simtel/simtel_config_writer.py +87 -13
  299. simtools/simtel/simulator_array.py +44 -74
  300. simtools/simtel/simulator_light_emission.py +336 -629
  301. simtools/simtel/simulator_ray_tracing.py +2 -2
  302. simtools/simulator.py +45 -14
  303. simtools/testing/configuration.py +4 -2
  304. simtools/testing/sim_telarray_metadata.py +4 -4
  305. simtools/utils/geometry.py +34 -0
  306. simtools/version.py +22 -0
  307. simtools/visualization/plot_psf.py +163 -61
  308. simtools/visualization/plot_simtel_events.py +1 -1
  309. simtools/model/flasher_model.py +0 -106
  310. {gammasimtools-0.21.0.dist-info → gammasimtools-0.22.0.dist-info}/WHEEL +0 -0
  311. {gammasimtools-0.21.0.dist-info → gammasimtools-0.22.0.dist-info}/licenses/LICENSE +0 -0
  312. {gammasimtools-0.21.0.dist-info → gammasimtools-0.22.0.dist-info}/top_level.txt +0 -0
@@ -96,6 +96,8 @@ class SimtelConfigWriter:
96
96
  """
97
97
  self._logger.debug(f"Writing telescope config file {config_file_path}")
98
98
 
99
+ simtel_par = self._get_parameters_for_sim_telarray(parameters, config_file_path)
100
+
99
101
  with open(config_file_path, "w", encoding="utf-8") as file:
100
102
  self._write_header(file, "TELESCOPE CONFIGURATION FILE")
101
103
 
@@ -104,22 +106,94 @@ class SimtelConfigWriter:
104
106
  file.write(f" echo Configuration for {telescope_name} - TELESCOPE $(TELESCOPE)\n")
105
107
  file.write("#endif\n\n")
106
108
 
107
- for par, value in parameters.items():
108
- simtel_name, value = self._convert_model_parameters_to_simtel_format(
109
- names.get_simulation_software_name_from_parameter_name(
110
- par, software_name="sim_telarray"
111
- ),
112
- value["value"],
113
- config_file_path,
114
- None,
115
- )
116
- if simtel_name:
117
- file.write(f"{simtel_name} = {self._get_value_string_for_simtel(value)}\n")
118
- if "stars" not in parameters: # sim_telarray requires 'stars' to be set
119
- file.write("stars = none\n")
109
+ for simtel_name, simtel_value in simtel_par.items():
110
+ file.write(f"{simtel_name} = {self._get_value_string_for_simtel(simtel_value)}\n")
120
111
  for meta in self._get_sim_telarray_metadata("telescope", parameters, telescope_name):
121
112
  file.write(f"{meta}\n")
122
113
 
114
+ def _get_parameters_for_sim_telarray(self, parameters, config_file_path):
115
+ """
116
+ Convert parameter dictionary to sim_telarray configuration file format.
117
+
118
+ Accounts for differences between the data models for sim_telarray configuration
119
+ and the simulation models.
120
+
121
+ Parameters
122
+ ----------
123
+ parameters: dict
124
+ Model parameters.
125
+ config_file_path: str or Path
126
+ Path of the file to write on.
127
+
128
+ Returns
129
+ -------
130
+ dict
131
+ Model parameters in sim_telarray format.
132
+ """
133
+ simtel_par = {}
134
+ for par, value in parameters.items():
135
+ simtel_name, simtel_value = self._convert_model_parameters_to_simtel_format(
136
+ names.get_simulation_software_name_from_parameter_name(
137
+ par, software_name="sim_telarray"
138
+ ),
139
+ value["value"],
140
+ config_file_path,
141
+ None,
142
+ )
143
+ if simtel_name:
144
+ simtel_par[simtel_name] = simtel_value
145
+ if "stars" not in parameters: # sim_telarray requires 'stars' to be set
146
+ simtel_par["stars"] = None
147
+
148
+ return self._get_flasher_parameters_for_sim_telarray(parameters, simtel_par)
149
+
150
+ def _get_flasher_parameters_for_sim_telarray(self, parameters, simtel_par):
151
+ """
152
+ Combine flasher pulse time parameters into a single parameter.
153
+
154
+ Takes into account that sim_telarray expects a single parameter with a specific name.
155
+
156
+ Parameters
157
+ ----------
158
+ parameters: dict
159
+ Model parameters.
160
+ simtel_par: dict
161
+ Model parameters in sim_telarray format.
162
+
163
+ Returns
164
+ -------
165
+ dict
166
+ Model parameters in sim_telarray format including flasher parameters.
167
+
168
+ """
169
+ if "flasher_pulse_shape" not in parameters and "flasher_pulse_width" not in parameters:
170
+ return simtel_par
171
+
172
+ mapping = {
173
+ "gauss": "laser_pulse_sigtime",
174
+ "tophat": "laser_pulse_twidth",
175
+ }
176
+
177
+ shape = parameters.get("flasher_pulse_shape", {}).get("value", "").lower()
178
+ if "exponential" in shape:
179
+ simtel_par["laser_pulse_exptime"] = parameters.get("flasher_pulse_exp_decay", {}).get(
180
+ "value", 0.0
181
+ )
182
+ else:
183
+ simtel_par["laser_pulse_exptime"] = 0.0
184
+
185
+ width = parameters.get("flasher_pulse_width", {}).get("value", 0.0)
186
+
187
+ simtel_par.update(dict.fromkeys(mapping.values(), 0.0))
188
+ if shape == "gauss-exponential":
189
+ simtel_par["laser_pulse_sigtime"] = width
190
+ elif shape in mapping:
191
+ simtel_par[mapping[shape]] = width
192
+ else:
193
+ self._logger.warning(f"Flasher pulse shape '{shape}' without width definition")
194
+
195
+ return simtel_par
196
+
123
197
  def _get_value_string_for_simtel(self, value):
124
198
  """
125
199
  Return a value string for simtel.
@@ -34,6 +34,7 @@ class SimulatorArray(SimtelRunner):
34
34
  label=None,
35
35
  use_multipipe=False,
36
36
  sim_telarray_seeds=None,
37
+ calibration_config=None,
37
38
  ):
38
39
  """Initialize SimulatorArray."""
39
40
  self._logger = logging.getLogger(__name__)
@@ -47,6 +48,7 @@ class SimulatorArray(SimtelRunner):
47
48
 
48
49
  self.sim_telarray_seeds = sim_telarray_seeds
49
50
  self.corsika_config = corsika_config
51
+ self.calibration_config = calibration_config
50
52
  self.io_handler = io_handler.IOHandler()
51
53
  self._log_file = None
52
54
 
@@ -70,68 +72,69 @@ class SimulatorArray(SimtelRunner):
70
72
  """
71
73
  command = self._common_run_command(run_number, weak_pointing)
72
74
 
73
- command += f" {input_file}"
74
- command += f" | gzip > {self._log_file} 2>&1 || exit"
75
- command += super().get_config_option(
76
- "power_law",
77
- SimulatorArray.get_power_law_for_sim_telarray_histograms(
78
- self.corsika_config.primary_particle
79
- ),
80
- )
75
+ if self.calibration_config:
76
+ command += self._make_run_command_for_calibration_simulations(input_file)
77
+ else:
78
+ command += self._make_run_command_for_shower_simulations(input_file)
81
79
 
82
80
  return clear_default_sim_telarray_cfg_directories(command)
83
81
 
84
- def make_run_command_for_calibration_simulations(
85
- self, run_number=None, input_file=None, calibration_runner_args=None
86
- ):
82
+ def _make_run_command_for_shower_simulations(self, input_file=None):
87
83
  """
88
- Build and return the command to run sim_telarray for calibration simulations.
84
+ Build and return the command to run sim_telarray shower simulations.
89
85
 
90
86
  Parameters
91
87
  ----------
92
- calibration_runner_args: dict
93
- Dictionary with calibration runner arguments.
94
88
  input_file: str
95
89
  Full path of the input CORSIKA file
96
90
  run_number: int (optional)
97
91
  run number
92
+ weak_pointing: bool (optional)
93
+ Specify weak pointing option for sim_telarray.
98
94
 
99
95
  Returns
100
96
  -------
101
97
  str
102
- Command to run sim_telarray for pedestal simulations.
98
+ Command to run sim_telarray.
103
99
  """
104
- command = self._common_run_command(run_number)
105
-
106
- command += super().get_config_option(
107
- "Altitude",
108
- self.corsika_config.array_model.site_model.get_parameter_value_with_unit(
109
- "reference_point_altitude"
110
- ).to_value("m"),
111
- )
100
+ command = f" {input_file}"
101
+ command += f" | gzip > {self._log_file} 2>&1 || exit"
112
102
  command += super().get_config_option(
113
- "nsb_scaling_factor", calibration_runner_args["nsb_scaling_factor"]
103
+ "power_law",
104
+ SimulatorArray.get_power_law_for_sim_telarray_histograms(
105
+ self.corsika_config.primary_particle
106
+ ),
114
107
  )
115
- if calibration_runner_args.get("stars"):
116
- command += super().get_config_option("stars", calibration_runner_args["stars"])
108
+ return command
117
109
 
118
- if calibration_runner_args.get("run_mode") in ("pedestals", "nsb_only_pedestals"):
119
- command += super().get_config_option(
120
- "pedestal_events", calibration_runner_args["number_of_events"]
121
- )
122
- if calibration_runner_args.get("run_mode") == "nsb_only_pedestals":
123
- command += self._nsb_only_pedestals_command()
124
- if calibration_runner_args.get("run_mode") == "dark_pedestals":
125
- command += super().get_config_option(
126
- "dark_events", calibration_runner_args["number_of_events"]
127
- )
128
- if calibration_runner_args.get("run_mode") == "flasher":
129
- command += self._flasher_command(calibration_runner_args)
110
+ def _make_run_command_for_calibration_simulations(self, input_file=None):
111
+ """Build sim_telarray command for calibration simulations."""
112
+ cfg = self.calibration_config
113
+ altitude = self.corsika_config.array_model.site_model.get_parameter_value_with_unit(
114
+ "reference_point_altitude"
115
+ ).to_value("m")
130
116
 
131
- command += f" {input_file}"
132
- command += f" | gzip > {self._log_file} 2>&1 || exit"
117
+ command = super().get_config_option("Altitude", altitude)
133
118
 
134
- return clear_default_sim_telarray_cfg_directories(command)
119
+ for key in ("nsb_scaling_factor", "stars"):
120
+ if cfg.get(key):
121
+ command += super().get_config_option(key, cfg[key])
122
+
123
+ run_mode = cfg.get("run_mode")
124
+ if run_mode in ("pedestals", "nsb_only_pedestals"):
125
+ n_events = cfg.get("number_of_pedestal_events", cfg["number_of_events"])
126
+ command += super().get_config_option("pedestal_events", n_events)
127
+ if run_mode == "nsb_only_pedestals":
128
+ command += self._nsb_only_pedestals_command()
129
+ if run_mode == "dark_pedestals":
130
+ n_events = cfg.get("number_of_dark_events", cfg["number_of_events"])
131
+ command += super().get_config_option("dark_events", n_events)
132
+ if run_mode == "direct_injection":
133
+ n_events = cfg.get("number_of_flasher_events", cfg["number_of_events"])
134
+ command += super().get_config_option("laser_events", n_events)
135
+
136
+ command += f" {input_file} | gzip > {self._log_file} 2>&1 || exit"
137
+ return command
135
138
 
136
139
  def _common_run_command(self, run_number, weak_pointing=None):
137
140
  """Build generic run command for sim_telarray."""
@@ -164,39 +167,6 @@ class SimulatorArray(SimtelRunner):
164
167
 
165
168
  return command
166
169
 
167
- def _flasher_command(self, calibration_runner_args):
168
- """
169
- Generate the command to run sim_telarray for flasher simulations.
170
-
171
- Parameters
172
- ----------
173
- calibration_runner_args: dict
174
- Dictionary with calibration runner arguments.
175
-
176
- Returns
177
- -------
178
- str
179
- Command to run sim_telarray for flasher simulations.
180
- """
181
- command = super().get_config_option(
182
- "laser_events", calibration_runner_args["number_of_events"]
183
- )
184
- command += super().get_config_option(
185
- "laser_photons", calibration_runner_args["flasher_photons"]
186
- )
187
- command += super().get_config_option(
188
- "laser_var_photons", calibration_runner_args["flasher_var_photons"]
189
- )
190
- command += super().get_config_option(
191
- "laser_pulse_exptime", calibration_runner_args["flasher_exp_time"]
192
- )
193
- command += super().get_config_option(
194
- "laser_pulse_sigtime", calibration_runner_args["flasher_sig_time"]
195
- )
196
- command += super().get_config_option("laser_external_trigger", 1)
197
-
198
- return command
199
-
200
170
  def _nsb_only_pedestals_command(self):
201
171
  """
202
172
  Generate the command to run sim_telarray for nsb-only pedestal simulations.