gammasimtools 0.21.0__py3-none-any.whl → 0.23.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 (370) hide show
  1. {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/METADATA +3 -3
  2. gammasimtools-0.23.0.dist-info/RECORD +414 -0
  3. {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/entry_points.txt +2 -1
  4. simtools/_version.py +2 -2
  5. simtools/application_control.py +118 -0
  6. simtools/applications/calculate_incident_angles.py +17 -25
  7. simtools/applications/convert_all_model_parameters_from_simtel.py +29 -45
  8. simtools/applications/convert_geo_coordinates_of_array_elements.py +26 -45
  9. simtools/applications/convert_model_parameter_from_simtel.py +21 -42
  10. simtools/applications/db_add_file_to_db.py +12 -13
  11. simtools/applications/db_add_simulation_model_from_repository_to_db.py +20 -33
  12. simtools/applications/db_add_value_from_json_to_db.py +28 -23
  13. simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +19 -34
  14. simtools/applications/db_generate_compound_indexes.py +12 -27
  15. simtools/applications/db_get_array_layouts_from_db.py +19 -39
  16. simtools/applications/db_get_file_from_db.py +15 -17
  17. simtools/applications/db_get_parameter_from_db.py +33 -35
  18. simtools/applications/db_inspect_databases.py +10 -11
  19. simtools/applications/db_upload_model_repository.py +104 -0
  20. simtools/applications/derive_ctao_array_layouts.py +16 -21
  21. simtools/applications/derive_mirror_rnda.py +9 -14
  22. simtools/applications/derive_photon_electron_spectrum.py +7 -10
  23. simtools/applications/derive_psf_parameters.py +24 -21
  24. simtools/applications/derive_trigger_rates.py +6 -9
  25. simtools/applications/docs_produce_array_element_report.py +22 -23
  26. simtools/applications/docs_produce_calibration_reports.py +26 -24
  27. simtools/applications/docs_produce_model_parameter_reports.py +15 -22
  28. simtools/applications/docs_produce_simulation_configuration_report.py +21 -22
  29. simtools/applications/generate_array_config.py +14 -33
  30. simtools/applications/generate_corsika_histograms.py +22 -43
  31. simtools/applications/generate_default_metadata.py +15 -36
  32. simtools/applications/generate_regular_arrays.py +11 -15
  33. simtools/applications/generate_simtel_event_data.py +23 -33
  34. simtools/applications/maintain_simulation_model_add_production.py +17 -48
  35. simtools/applications/maintain_simulation_model_compare_productions.py +10 -12
  36. simtools/applications/maintain_simulation_model_verify_production_tables.py +8 -11
  37. simtools/applications/merge_tables.py +15 -24
  38. simtools/applications/plot_array_layout.py +77 -55
  39. simtools/applications/plot_simtel_events.py +11 -13
  40. simtools/applications/plot_tabular_data.py +17 -38
  41. simtools/applications/plot_tabular_data_for_model_parameter.py +16 -23
  42. simtools/applications/print_version.py +14 -42
  43. simtools/applications/production_derive_corsika_limits.py +5 -9
  44. simtools/applications/production_derive_statistics.py +12 -26
  45. simtools/applications/production_generate_grid.py +20 -48
  46. simtools/applications/production_merge_corsika_limits.py +17 -21
  47. simtools/applications/run_application.py +12 -32
  48. simtools/applications/simulate_flasher.py +79 -81
  49. simtools/applications/simulate_illuminator.py +56 -197
  50. simtools/applications/{simulate_calibration_events.py → simulate_pedestals.py} +22 -68
  51. simtools/applications/simulate_prod.py +21 -33
  52. simtools/applications/simulate_prod_htcondor_generator.py +11 -25
  53. simtools/applications/submit_array_layouts.py +15 -18
  54. simtools/applications/submit_data_from_external.py +18 -34
  55. simtools/applications/submit_model_parameter_from_external.py +27 -41
  56. simtools/applications/validate_camera_efficiency.py +23 -22
  57. simtools/applications/validate_camera_fov.py +21 -27
  58. simtools/applications/validate_cumulative_psf.py +28 -37
  59. simtools/applications/validate_file_using_schema.py +35 -45
  60. simtools/applications/validate_optics.py +27 -33
  61. simtools/camera/camera_efficiency.py +8 -13
  62. simtools/configuration/commandline_parser.py +33 -11
  63. simtools/configuration/configurator.py +0 -7
  64. simtools/corsika/corsika_config.py +9 -16
  65. simtools/corsika/corsika_histograms.py +1 -1
  66. simtools/data_model/data_reader.py +0 -2
  67. simtools/data_model/metadata_collector.py +0 -2
  68. simtools/data_model/model_data_writer.py +87 -27
  69. simtools/data_model/schema.py +61 -2
  70. simtools/data_model/validate_data.py +1 -3
  71. simtools/db/db_handler.py +58 -39
  72. simtools/db/db_model_upload.py +210 -5
  73. simtools/io/hdf5_handler.py +0 -5
  74. simtools/io/io_handler.py +31 -83
  75. simtools/io/legacy_data_handler.py +0 -5
  76. simtools/job_execution/job_manager.py +43 -1
  77. simtools/layout/array_layout.py +0 -2
  78. simtools/layout/array_layout_utils.py +1 -5
  79. simtools/layout/telescope_position.py +0 -2
  80. simtools/model/array_model.py +95 -46
  81. simtools/model/calibration_model.py +0 -2
  82. simtools/model/camera.py +0 -2
  83. simtools/model/mirrors.py +0 -2
  84. simtools/model/model_parameter.py +50 -16
  85. simtools/model/model_repository.py +139 -106
  86. simtools/model/model_utils.py +21 -11
  87. simtools/model/site_model.py +0 -2
  88. simtools/model/telescope_model.py +20 -2
  89. simtools/production_configuration/calculate_statistical_uncertainties_grid_point.py +0 -2
  90. simtools/production_configuration/derive_corsika_limits.py +1 -1
  91. simtools/production_configuration/derive_production_statistics.py +0 -2
  92. simtools/production_configuration/interpolation_handler.py +0 -2
  93. simtools/ray_tracing/incident_angles.py +7 -7
  94. simtools/ray_tracing/mirror_panel_psf.py +1 -1
  95. simtools/ray_tracing/psf_analysis.py +0 -2
  96. simtools/ray_tracing/psf_parameter_optimisation.py +180 -73
  97. simtools/ray_tracing/ray_tracing.py +1 -5
  98. simtools/reporting/docs_auto_report_generator.py +108 -0
  99. simtools/reporting/docs_read_parameters.py +168 -104
  100. simtools/resources/array_elements.yml +26 -0
  101. simtools/runners/corsika_runner.py +0 -2
  102. simtools/runners/corsika_simtel_runner.py +11 -19
  103. simtools/runners/runner_services.py +5 -6
  104. simtools/runners/simtel_runner.py +0 -2
  105. simtools/runners/simtools_runner.py +0 -2
  106. simtools/schemas/application_workflow.metaschema.yml +1 -1
  107. simtools/schemas/common_definitions.schema.yml +39 -0
  108. simtools/schemas/model_parameter.metaschema.yml +19 -13
  109. simtools/schemas/model_parameter_and_data_schema.metaschema.yml +6 -12
  110. simtools/schemas/model_parameters/adjust_gain.schema.yml +0 -5
  111. simtools/schemas/model_parameters/altitude.schema.yml +0 -5
  112. simtools/schemas/model_parameters/array_coordinates.schema.yml +0 -5
  113. simtools/schemas/model_parameters/array_coordinates_UTM.schema.yml +0 -5
  114. simtools/schemas/model_parameters/array_element_position_ground.schema.yml +0 -7
  115. simtools/schemas/model_parameters/array_element_position_utm.schema.yml +0 -7
  116. simtools/schemas/model_parameters/array_layouts.schema.yml +0 -5
  117. simtools/schemas/model_parameters/array_triggers.schema.yml +0 -5
  118. simtools/schemas/model_parameters/array_window.schema.yml +0 -7
  119. simtools/schemas/model_parameters/asum_clipping.schema.yml +0 -3
  120. simtools/schemas/model_parameters/asum_offset.schema.yml +0 -7
  121. simtools/schemas/model_parameters/asum_shaping.schema.yml +0 -7
  122. simtools/schemas/model_parameters/asum_threshold.schema.yml +0 -7
  123. simtools/schemas/model_parameters/atmospheric_profile.schema.yml +0 -5
  124. simtools/schemas/model_parameters/atmospheric_transmission.schema.yml +0 -5
  125. simtools/schemas/model_parameters/axes_offsets.schema.yml +0 -7
  126. simtools/schemas/model_parameters/calibration_devices.schema.yml +30 -0
  127. simtools/schemas/model_parameters/camera_body_diameter.schema.yml +0 -7
  128. simtools/schemas/model_parameters/camera_body_shape.schema.yml +0 -7
  129. simtools/schemas/model_parameters/camera_config_file.schema.yml +0 -7
  130. simtools/schemas/model_parameters/camera_config_rotate.schema.yml +0 -7
  131. simtools/schemas/model_parameters/camera_degraded_efficiency.schema.yml +0 -7
  132. simtools/schemas/model_parameters/camera_degraded_map.schema.yml +0 -7
  133. simtools/schemas/model_parameters/camera_depth.schema.yml +0 -7
  134. simtools/schemas/model_parameters/camera_filter.schema.yml +0 -7
  135. simtools/schemas/model_parameters/camera_filter_incidence_angle.schema.yml +0 -3
  136. simtools/schemas/model_parameters/camera_pixels.schema.yml +0 -7
  137. simtools/schemas/model_parameters/camera_transmission.schema.yml +0 -7
  138. simtools/schemas/model_parameters/channels_per_chip.schema.yml +0 -7
  139. simtools/schemas/model_parameters/correct_nsb_spectrum_to_telescope_altitude.schema.yml +0 -7
  140. simtools/schemas/model_parameters/corsika_observation_level.schema.yml +0 -5
  141. simtools/schemas/model_parameters/dark_events.schema.yml +4 -3
  142. simtools/schemas/model_parameters/default_trigger.schema.yml +0 -7
  143. simtools/schemas/model_parameters/design_model.schema.yml +0 -7
  144. simtools/schemas/model_parameters/disc_ac_coupled.schema.yml +0 -7
  145. simtools/schemas/model_parameters/disc_bins.schema.yml +0 -7
  146. simtools/schemas/model_parameters/disc_start.schema.yml +0 -7
  147. simtools/schemas/model_parameters/discriminator_amplitude.schema.yml +0 -7
  148. simtools/schemas/model_parameters/discriminator_fall_time.schema.yml +0 -7
  149. simtools/schemas/model_parameters/discriminator_gate_length.schema.yml +0 -7
  150. simtools/schemas/model_parameters/discriminator_hysteresis.schema.yml +0 -7
  151. simtools/schemas/model_parameters/discriminator_output_amplitude.schema.yml +0 -7
  152. simtools/schemas/model_parameters/discriminator_output_var_percent.schema.yml +0 -7
  153. simtools/schemas/model_parameters/discriminator_pulse_shape.schema.yml +0 -7
  154. simtools/schemas/model_parameters/discriminator_rise_time.schema.yml +0 -7
  155. simtools/schemas/model_parameters/discriminator_scale_threshold.schema.yml +0 -7
  156. simtools/schemas/model_parameters/discriminator_sigsum_over_threshold.schema.yml +0 -7
  157. simtools/schemas/model_parameters/discriminator_threshold.schema.yml +0 -7
  158. simtools/schemas/model_parameters/discriminator_time_over_threshold.schema.yml +1 -9
  159. simtools/schemas/model_parameters/discriminator_var_gate_length.schema.yml +0 -7
  160. simtools/schemas/model_parameters/discriminator_var_sigsum_over_threshold.schema.yml +0 -7
  161. simtools/schemas/model_parameters/discriminator_var_threshold.schema.yml +0 -7
  162. simtools/schemas/model_parameters/discriminator_var_time_over_threshold.schema.yml +0 -7
  163. simtools/schemas/model_parameters/dish_shape_length.schema.yml +0 -5
  164. simtools/schemas/model_parameters/dsum_clipping.schema.yml +1 -5
  165. simtools/schemas/model_parameters/dsum_ignore_below.schema.yml +0 -3
  166. simtools/schemas/model_parameters/dsum_offset.schema.yml +0 -3
  167. simtools/schemas/model_parameters/dsum_pedsub.schema.yml +0 -3
  168. simtools/schemas/model_parameters/dsum_pre_clipping.schema.yml +0 -3
  169. simtools/schemas/model_parameters/dsum_prescale.schema.yml +0 -3
  170. simtools/schemas/model_parameters/dsum_presum_max.schema.yml +0 -3
  171. simtools/schemas/model_parameters/dsum_presum_shift.schema.yml +0 -3
  172. simtools/schemas/model_parameters/dsum_shaping.schema.yml +0 -3
  173. simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml +0 -3
  174. simtools/schemas/model_parameters/dsum_threshold.schema.yml +2 -12
  175. simtools/schemas/model_parameters/dsum_zero_clip.schema.yml +0 -3
  176. simtools/schemas/model_parameters/effective_focal_length.schema.yml +0 -7
  177. simtools/schemas/model_parameters/epsg_code.schema.yml +0 -5
  178. simtools/schemas/model_parameters/fadc_ac_coupled.schema.yml +0 -7
  179. simtools/schemas/model_parameters/fadc_amplitude.schema.yml +2 -9
  180. simtools/schemas/model_parameters/fadc_bins.schema.yml +0 -7
  181. simtools/schemas/model_parameters/fadc_compensate_pedestal.schema.yml +0 -7
  182. simtools/schemas/model_parameters/fadc_dev_pedestal.schema.yml +0 -2
  183. simtools/schemas/model_parameters/fadc_err_compensate_pedestal.schema.yml +0 -7
  184. simtools/schemas/model_parameters/fadc_err_pedestal.schema.yml +0 -7
  185. simtools/schemas/model_parameters/fadc_lg_amplitude.schema.yml +2 -9
  186. simtools/schemas/model_parameters/fadc_lg_compensate_pedestal.schema.yml +0 -7
  187. simtools/schemas/model_parameters/fadc_lg_dev_pedestal.schema.yml +0 -2
  188. simtools/schemas/model_parameters/fadc_lg_err_compensate_pedestal.schema.yml +0 -7
  189. simtools/schemas/model_parameters/fadc_lg_err_pedestal.schema.yml +0 -7
  190. simtools/schemas/model_parameters/fadc_lg_max_signal.schema.yml +0 -7
  191. simtools/schemas/model_parameters/fadc_lg_max_sum.schema.yml +0 -2
  192. simtools/schemas/model_parameters/fadc_lg_noise.schema.yml +0 -7
  193. simtools/schemas/model_parameters/fadc_lg_pedestal.schema.yml +0 -7
  194. simtools/schemas/model_parameters/fadc_lg_sensitivity.schema.yml +0 -7
  195. simtools/schemas/model_parameters/fadc_lg_sysvar_pedestal.schema.yml +0 -7
  196. simtools/schemas/model_parameters/fadc_lg_var_pedestal.schema.yml +0 -7
  197. simtools/schemas/model_parameters/fadc_lg_var_sensitivity.schema.yml +0 -7
  198. simtools/schemas/model_parameters/fadc_long_event_threshold.schema.yml +0 -3
  199. simtools/schemas/model_parameters/fadc_long_sum_bins.schema.yml +0 -3
  200. simtools/schemas/model_parameters/fadc_long_sum_offset.schema.yml +0 -3
  201. simtools/schemas/model_parameters/fadc_max_signal.schema.yml +0 -7
  202. simtools/schemas/model_parameters/fadc_max_sum.schema.yml +0 -2
  203. simtools/schemas/model_parameters/fadc_mhz.schema.yml +0 -7
  204. simtools/schemas/model_parameters/fadc_noise.schema.yml +0 -7
  205. simtools/schemas/model_parameters/fadc_pedestal.schema.yml +0 -7
  206. simtools/schemas/model_parameters/fadc_pulse_shape.schema.yml +0 -7
  207. simtools/schemas/model_parameters/fadc_sensitivity.schema.yml +0 -7
  208. simtools/schemas/model_parameters/fadc_sum_bins.schema.yml +0 -7
  209. simtools/schemas/model_parameters/fadc_sum_offset.schema.yml +0 -7
  210. simtools/schemas/model_parameters/fadc_sysvar_pedestal.schema.yml +0 -7
  211. simtools/schemas/model_parameters/fadc_var_pedestal.schema.yml +0 -7
  212. simtools/schemas/model_parameters/fadc_var_sensitivity.schema.yml +0 -7
  213. simtools/schemas/model_parameters/fake_mirror_list.schema.yml +0 -3
  214. simtools/schemas/model_parameters/flasher_angular_distribution.schema.yml +32 -0
  215. simtools/schemas/model_parameters/flasher_angular_distribution_width.schema.yml +32 -0
  216. simtools/schemas/model_parameters/flasher_bunch_size.schema.yml +28 -0
  217. simtools/schemas/model_parameters/flasher_external_trigger.schema.yml +32 -0
  218. simtools/schemas/model_parameters/flasher_photons.schema.yml +34 -0
  219. simtools/schemas/model_parameters/flasher_position.schema.yml +43 -0
  220. simtools/schemas/model_parameters/flasher_pulse_exp_decay.schema.yml +29 -0
  221. simtools/schemas/model_parameters/flasher_pulse_offset.schema.yml +35 -0
  222. simtools/schemas/model_parameters/flasher_pulse_shape.schema.yml +30 -0
  223. simtools/schemas/model_parameters/flasher_pulse_width.schema.yml +32 -0
  224. simtools/schemas/model_parameters/flasher_type.schema.yml +28 -0
  225. simtools/schemas/model_parameters/flasher_var_photons.schema.yml +31 -0
  226. simtools/schemas/model_parameters/flasher_wavelength.schema.yml +33 -0
  227. simtools/schemas/model_parameters/flatfielding.schema.yml +0 -7
  228. simtools/schemas/model_parameters/focal_length.schema.yml +0 -7
  229. simtools/schemas/model_parameters/focal_surface_parameters.schema.yml +0 -3
  230. simtools/schemas/model_parameters/focal_surface_ref_radius.schema.yml +0 -3
  231. simtools/schemas/model_parameters/focus_offset.schema.yml +0 -7
  232. simtools/schemas/model_parameters/gain_variation.schema.yml +0 -7
  233. simtools/schemas/model_parameters/geomag_horizontal.schema.yml +2 -7
  234. simtools/schemas/model_parameters/geomag_rotation.schema.yml +2 -7
  235. simtools/schemas/model_parameters/geomag_vertical.schema.yml +2 -7
  236. simtools/schemas/model_parameters/hg_lg_variation.schema.yml +0 -5
  237. simtools/schemas/model_parameters/iobuf_maximum.schema.yml +0 -7
  238. simtools/schemas/model_parameters/iobuf_output_maximum.schema.yml +0 -7
  239. simtools/schemas/model_parameters/laser_events.schema.yml +4 -3
  240. simtools/schemas/model_parameters/laser_external_trigger.schema.yml +4 -3
  241. simtools/schemas/model_parameters/laser_photons.schema.yml +4 -3
  242. simtools/schemas/model_parameters/laser_pulse_exptime.schema.yml +4 -3
  243. simtools/schemas/model_parameters/laser_pulse_offset.schema.yml +4 -3
  244. simtools/schemas/model_parameters/laser_pulse_sigtime.schema.yml +4 -3
  245. simtools/schemas/model_parameters/laser_pulse_twidth.schema.yml +4 -3
  246. simtools/schemas/model_parameters/laser_var_photons.schema.yml +4 -3
  247. simtools/schemas/model_parameters/laser_wavelength.schema.yml +4 -3
  248. simtools/schemas/model_parameters/led_events.schema.yml +4 -3
  249. simtools/schemas/model_parameters/led_photons.schema.yml +4 -3
  250. simtools/schemas/model_parameters/led_pulse_offset.schema.yml +4 -3
  251. simtools/schemas/model_parameters/led_pulse_sigtime.schema.yml +4 -3
  252. simtools/schemas/model_parameters/led_var_photons.schema.yml +4 -3
  253. simtools/schemas/model_parameters/lightguide_efficiency_vs_incidence_angle.schema.yml +0 -7
  254. simtools/schemas/model_parameters/lightguide_efficiency_vs_wavelength.schema.yml +0 -7
  255. simtools/schemas/model_parameters/min_photoelectrons.schema.yml +0 -7
  256. simtools/schemas/model_parameters/min_photons.schema.yml +0 -7
  257. simtools/schemas/model_parameters/mirror_align_random_distance.schema.yml +0 -5
  258. simtools/schemas/model_parameters/mirror_align_random_horizontal.schema.yml +0 -7
  259. simtools/schemas/model_parameters/mirror_align_random_vertical.schema.yml +0 -7
  260. simtools/schemas/model_parameters/mirror_class.schema.yml +2 -9
  261. simtools/schemas/model_parameters/mirror_degraded_reflection.schema.yml +0 -7
  262. simtools/schemas/model_parameters/mirror_focal_length.schema.yml +0 -5
  263. simtools/schemas/model_parameters/mirror_list.schema.yml +0 -7
  264. simtools/schemas/model_parameters/mirror_offset.schema.yml +0 -7
  265. simtools/schemas/model_parameters/mirror_reflection_random_angle.schema.yml +0 -7
  266. simtools/schemas/model_parameters/mirror_reflectivity.schema.yml +0 -7
  267. simtools/schemas/model_parameters/multiplicity_offset.schema.yml +0 -7
  268. simtools/schemas/model_parameters/muon_mono_threshold.schema.yml +0 -7
  269. simtools/schemas/model_parameters/nsb_autoscale_airmass.schema.yml +0 -7
  270. simtools/schemas/model_parameters/nsb_gain_drop_scale.schema.yml +0 -3
  271. simtools/schemas/model_parameters/nsb_offaxis.schema.yml +0 -7
  272. simtools/schemas/model_parameters/nsb_pixel_rate.schema.yml +0 -7
  273. simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml +0 -5
  274. simtools/schemas/model_parameters/nsb_reference_value.schema.yml +0 -5
  275. simtools/schemas/model_parameters/nsb_scaling_factor.schema.yml +0 -5
  276. simtools/schemas/model_parameters/nsb_sky_map.schema.yml +0 -5
  277. simtools/schemas/model_parameters/nsb_spectrum.schema.yml +0 -5
  278. simtools/schemas/model_parameters/num_gains.schema.yml +0 -7
  279. simtools/schemas/model_parameters/only_triggered_telescopes.schema.yml +0 -7
  280. simtools/schemas/model_parameters/optics_properties.schema.yml +0 -7
  281. simtools/schemas/model_parameters/parabolic_dish.schema.yml +0 -3
  282. simtools/schemas/model_parameters/pedestal_events.schema.yml +4 -7
  283. simtools/schemas/model_parameters/photon_delay.schema.yml +0 -7
  284. simtools/schemas/model_parameters/photons_per_run.schema.yml +4 -4
  285. simtools/schemas/model_parameters/pixel_cells.schema.yml +0 -3
  286. simtools/schemas/model_parameters/pixels_parallel.schema.yml +0 -3
  287. simtools/schemas/model_parameters/pixeltrg_time_step.schema.yml +0 -7
  288. simtools/schemas/model_parameters/pm_average_gain.schema.yml +0 -5
  289. simtools/schemas/model_parameters/pm_collection_efficiency.schema.yml +0 -5
  290. simtools/schemas/model_parameters/pm_gain_index.schema.yml +0 -5
  291. simtools/schemas/model_parameters/pm_photoelectron_spectrum.schema.yml +0 -7
  292. simtools/schemas/model_parameters/pm_transit_time.schema.yml +4 -9
  293. simtools/schemas/model_parameters/pm_voltage_variation.schema.yml +0 -5
  294. simtools/schemas/model_parameters/primary_mirror_degraded_map.schema.yml +0 -7
  295. simtools/schemas/model_parameters/primary_mirror_diameter.schema.yml +0 -3
  296. simtools/schemas/model_parameters/primary_mirror_hole_diameter.schema.yml +0 -3
  297. simtools/schemas/model_parameters/primary_mirror_incidence_angle.schema.yml +0 -3
  298. simtools/schemas/model_parameters/primary_mirror_parameters.schema.yml +0 -3
  299. simtools/schemas/model_parameters/primary_mirror_ref_radius.schema.yml +0 -3
  300. simtools/schemas/model_parameters/primary_mirror_segmentation.schema.yml +0 -3
  301. simtools/schemas/model_parameters/qe_variation.schema.yml +0 -7
  302. simtools/schemas/model_parameters/quantum_efficiency.schema.yml +0 -7
  303. simtools/schemas/model_parameters/random_focal_length.schema.yml +2 -7
  304. simtools/schemas/model_parameters/random_generator.schema.yml +0 -7
  305. simtools/schemas/model_parameters/random_mono_probability.schema.yml +0 -7
  306. simtools/schemas/model_parameters/reference_point_altitude.schema.yml +0 -5
  307. simtools/schemas/model_parameters/reference_point_latitude.schema.yml +0 -5
  308. simtools/schemas/model_parameters/reference_point_longitude.schema.yml +0 -5
  309. simtools/schemas/model_parameters/reference_point_utm_east.schema.yml +0 -5
  310. simtools/schemas/model_parameters/reference_point_utm_north.schema.yml +0 -5
  311. simtools/schemas/model_parameters/sampled_output.schema.yml +0 -7
  312. simtools/schemas/model_parameters/save_pe_with_amplitude.schema.yml +0 -7
  313. simtools/schemas/model_parameters/secondary_mirror_baffle.schema.yml +0 -3
  314. simtools/schemas/model_parameters/secondary_mirror_degraded_map.schema.yml +0 -3
  315. simtools/schemas/model_parameters/secondary_mirror_degraded_reflection.schema.yml +0 -3
  316. simtools/schemas/model_parameters/secondary_mirror_diameter.schema.yml +0 -3
  317. simtools/schemas/model_parameters/secondary_mirror_hole_diameter.schema.yml +0 -3
  318. simtools/schemas/model_parameters/secondary_mirror_incidence_angle.schema.yml +0 -3
  319. simtools/schemas/model_parameters/secondary_mirror_parameters.schema.yml +0 -3
  320. simtools/schemas/model_parameters/secondary_mirror_ref_radius.schema.yml +0 -3
  321. simtools/schemas/model_parameters/secondary_mirror_reflectivity.schema.yml +0 -3
  322. simtools/schemas/model_parameters/secondary_mirror_segmentation.schema.yml +0 -3
  323. simtools/schemas/model_parameters/secondary_mirror_shadow_diameter.schema.yml +0 -3
  324. simtools/schemas/model_parameters/secondary_mirror_shadow_offset.schema.yml +0 -3
  325. simtools/schemas/model_parameters/stars.schema.yml +0 -5
  326. simtools/schemas/model_parameters/store_photoelectrons.schema.yml +0 -7
  327. simtools/schemas/model_parameters/tailcut_scale.schema.yml +0 -7
  328. simtools/schemas/model_parameters/telescope_axis_height.schema.yml +0 -7
  329. simtools/schemas/model_parameters/telescope_random_angle.schema.yml +0 -7
  330. simtools/schemas/model_parameters/telescope_random_error.schema.yml +0 -7
  331. simtools/schemas/model_parameters/telescope_sphere_radius.schema.yml +0 -7
  332. simtools/schemas/model_parameters/telescope_transmission.schema.yml +0 -7
  333. simtools/schemas/model_parameters/teltrig_min_sigsum.schema.yml +0 -7
  334. simtools/schemas/model_parameters/teltrig_min_time.schema.yml +0 -7
  335. simtools/schemas/model_parameters/transit_time_calib_error.schema.yml +0 -7
  336. simtools/schemas/model_parameters/transit_time_compensate_error.schema.yml +0 -7
  337. simtools/schemas/model_parameters/transit_time_compensate_step.schema.yml +0 -7
  338. simtools/schemas/model_parameters/transit_time_error.schema.yml +0 -7
  339. simtools/schemas/model_parameters/transit_time_jitter.schema.yml +0 -7
  340. simtools/schemas/model_parameters/transit_time_random.schema.yml +29 -0
  341. simtools/schemas/model_parameters/trigger_current_limit.schema.yml +0 -7
  342. simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml +0 -7
  343. simtools/schemas/model_parameters/trigger_pixels.schema.yml +0 -7
  344. simtools/schemas/production_tables.schema.yml +8 -8
  345. simtools/schemas/simulation_models_info.schema.yml +78 -0
  346. simtools/simtel/simtel_config_reader.py +0 -2
  347. simtools/simtel/simtel_config_writer.py +118 -26
  348. simtools/simtel/simtel_io_metadata.py +3 -3
  349. simtools/simtel/simulator_array.py +43 -85
  350. simtools/simtel/simulator_camera_efficiency.py +0 -2
  351. simtools/simtel/simulator_light_emission.py +336 -631
  352. simtools/simtel/simulator_ray_tracing.py +2 -4
  353. simtools/simulator.py +45 -19
  354. simtools/testing/assertions.py +2 -2
  355. simtools/testing/configuration.py +21 -6
  356. simtools/testing/sim_telarray_metadata.py +4 -4
  357. simtools/utils/general.py +5 -13
  358. simtools/utils/geometry.py +34 -5
  359. simtools/utils/names.py +1 -13
  360. simtools/version.py +83 -0
  361. simtools/visualization/plot_array_layout.py +129 -23
  362. simtools/visualization/plot_incident_angles.py +0 -2
  363. simtools/visualization/plot_psf.py +163 -61
  364. simtools/visualization/plot_simtel_events.py +1 -12
  365. simtools/visualization/visualize.py +0 -12
  366. gammasimtools-0.21.0.dist-info/RECORD +0 -396
  367. simtools/model/flasher_model.py +0 -106
  368. {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/WHEEL +0 -0
  369. {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/licenses/LICENSE +0 -0
  370. {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/top_level.txt +0 -0
@@ -56,6 +56,12 @@ axes_range : float, optional
56
56
  Range of the both axes in meters.
57
57
  marker_scaling : float, optional.
58
58
  Scaling factor for plotting of array elements, optional.
59
+ grayed_out_array_elements : list, optional
60
+ List of array elements to plot as gray circles.
61
+ highlighted_array_elements : list, optional
62
+ List of array elements to plot with red circles around them.
63
+ legend_location : str, optional
64
+ Location of the legend (default "best").
59
65
 
60
66
  Examples
61
67
  --------
@@ -97,41 +103,39 @@ Plot all layouts for the North site and model version 6.0.0:
97
103
  .. code-block:: console
98
104
 
99
105
  simtools-plot-array-layout --site North --plot_all_layouts --model_version=6.0.0
100
- """
101
106
 
102
- import logging
103
- from pathlib import Path
107
+ Plot layout with some telescopes grayed out and others highlighted:
108
+
109
+ .. code-block:: console
110
+
111
+ simtools-plot-array-layout --site North
112
+ --array_layout_name alpha
113
+ --model_version=6.0.0
114
+ --grayed_out_array_elements LSTN-01 LSTN-02
115
+ --highlighted_array_elements MSTN-01 MSTN-02
116
+ --legend_location "upper right"
117
+ """
104
118
 
105
119
  import matplotlib as mpl
106
120
  import matplotlib.pyplot as plt
107
121
 
108
122
  import simtools.layout.array_layout_utils as layout_utils
109
- import simtools.utils.general as gen
123
+ from simtools.application_control import get_application_label, startup_application
110
124
  from simtools.configuration import configurator
111
- from simtools.io import io_handler
112
125
  from simtools.visualization import visualize
113
126
  from simtools.visualization.plot_array_layout import plot_array_layout
114
127
 
115
128
 
116
- def _parse(label, description, usage=None):
117
- """
118
- Parse command line configuration.
119
-
120
- Parameters
121
- ----------
122
- label : str
123
- Label describing the application.
124
- description : str
125
- Description of the application.
126
- usage : str
127
- Example on how to use the application.
128
-
129
- Returns
130
- -------
131
- CommandLineParser
132
- Command line parser object.
133
- """
134
- config = configurator.Configurator(label=label, description=description, usage=usage)
129
+ def _parse():
130
+ """Parse command line configuration."""
131
+ config = configurator.Configurator(
132
+ label=get_application_label(__file__),
133
+ description="Plots array layout.",
134
+ usage=(
135
+ "Use '--array_layout_name plot_all' to plot all layouts for the given site "
136
+ "and model version."
137
+ ),
138
+ )
135
139
 
136
140
  config.parser.add_argument(
137
141
  "--figure_name",
@@ -176,6 +180,33 @@ def _parse(label, description, usage=None):
176
180
  required=False,
177
181
  default=None,
178
182
  )
183
+ config.parser.add_argument(
184
+ "--grayed_out_array_elements",
185
+ help="List of array elements to plot as gray circles.",
186
+ type=str,
187
+ nargs="*",
188
+ required=False,
189
+ default=None,
190
+ )
191
+ config.parser.add_argument(
192
+ "--highlighted_array_elements",
193
+ help="List of array elements to plot with red circles around them.",
194
+ type=str,
195
+ nargs="*",
196
+ required=False,
197
+ default=None,
198
+ )
199
+ config.parser.add_argument(
200
+ "--legend_location",
201
+ help=(
202
+ "Location of the legend (e.g., 'best', 'upper right', 'upper left', "
203
+ "'lower left', 'lower right', 'right', 'center left', 'center right', "
204
+ "'lower center', 'upper center', 'center')."
205
+ ),
206
+ type=str,
207
+ required=False,
208
+ default="best",
209
+ )
179
210
  return config.initialize(
180
211
  db_config=True,
181
212
  simulation_model=[
@@ -199,8 +230,8 @@ def read_layouts(args_dict, db_config, logger):
199
230
  Dictionary with command line arguments.
200
231
  db_config : dict
201
232
  Database configuration.
202
- logger : logging.Logger
203
- Logger instance.
233
+ logger : logging.app_context.logger
234
+ app_context.logger instance.
204
235
 
205
236
  Returns
206
237
  -------
@@ -248,28 +279,17 @@ def read_layouts(args_dict, db_config, logger):
248
279
 
249
280
  def main():
250
281
  """Plot array layout application."""
251
- label = Path(__file__).stem
252
- args_dict, db_config = _parse(
253
- label,
254
- (
255
- "Plots array layout."
256
- "Use '--array_layout_name plot_all' to plot all layouts for the given site "
257
- "and model version."
258
- ),
259
- )
260
- logger = logging.getLogger()
261
- logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
262
- io_handler_instance = io_handler.IOHandler()
282
+ app_context = startup_application(_parse)
263
283
 
264
- layouts = read_layouts(args_dict, db_config, logger)
284
+ layouts = read_layouts(app_context.args, app_context.db_config, app_context.logger)
265
285
 
266
- if args_dict.get("array_layout_name_background"):
286
+ if app_context.args.get("array_layout_name_background"):
267
287
  background_layout = layout_utils.get_array_layouts_from_db(
268
- args_dict["array_layout_name_background"],
269
- args_dict["site"],
270
- args_dict["model_version"],
271
- db_config,
272
- args_dict["coordinate_system"],
288
+ app_context.args["array_layout_name_background"],
289
+ app_context.args["site"],
290
+ app_context.args["model_version"],
291
+ app_context.db_config,
292
+ app_context.args["coordinate_system"],
273
293
  )["array_elements"]
274
294
  else:
275
295
  background_layout = None
@@ -278,29 +298,31 @@ def main():
278
298
  for layout in layouts:
279
299
  fig_out = plot_array_layout(
280
300
  telescopes=layout["array_elements"],
281
- show_tel_label=args_dict["show_labels"],
282
- axes_range=args_dict["axes_range"],
283
- marker_scaling=args_dict["marker_scaling"],
301
+ show_tel_label=app_context.args["show_labels"],
302
+ axes_range=app_context.args["axes_range"],
303
+ marker_scaling=app_context.args["marker_scaling"],
284
304
  background_telescopes=background_layout,
305
+ grayed_out_elements=app_context.args["grayed_out_array_elements"],
306
+ highlighted_elements=app_context.args["highlighted_array_elements"],
307
+ legend_location=app_context.args["legend_location"],
285
308
  )
286
309
  site_string = ""
287
310
  if layout.get("site") is not None:
288
311
  site_string = f"_{layout['site']}"
289
- elif args_dict["site"] is not None:
290
- site_string = f"_{args_dict['site']}"
312
+ elif app_context.args["site"] is not None:
313
+ site_string = f"_{app_context.args['site']}"
291
314
  coordinate_system_string = (
292
- f"_{args_dict['coordinate_system']}"
293
- if args_dict["coordinate_system"] not in layout["name"]
315
+ f"_{app_context.args['coordinate_system']}"
316
+ if app_context.args["coordinate_system"] not in layout["name"]
294
317
  else ""
295
318
  )
296
- plot_file_name = args_dict["figure_name"] or (
319
+ plot_file_name = app_context.args["figure_name"] or (
297
320
  f"array_layout_{layout['name']}{site_string}{coordinate_system_string}"
298
321
  )
299
322
 
300
323
  visualize.save_figure(
301
324
  fig_out,
302
- io_handler_instance.get_output_directory(label, sub_dir="application-plots")
303
- / plot_file_name,
325
+ app_context.io_handler.get_output_directory() / plot_file_name,
304
326
  dpi=400,
305
327
  )
306
328
  plt.close()
@@ -76,19 +76,18 @@ Examples
76
76
 
77
77
  """
78
78
 
79
- import logging
80
79
  from pathlib import Path
81
80
 
82
81
  import simtools.utils.general as gen
82
+ from simtools.application_control import get_application_label, startup_application
83
83
  from simtools.configuration import configurator
84
- from simtools.io import io_handler
85
84
  from simtools.visualization.plot_simtel_events import PLOT_CHOICES, generate_and_save_plots
86
85
 
87
86
 
88
- def _parse(label: str):
87
+ def _parse():
89
88
  """Parse command line configuration."""
90
89
  config = configurator.Configurator(
91
- label=label,
90
+ label=get_application_label(__file__),
92
91
  description=(
93
92
  "Create diagnostic plots from sim_telarray files using simtools visualization."
94
93
  ),
@@ -178,17 +177,16 @@ def _parse(label: str):
178
177
 
179
178
  def main():
180
179
  """Generate plots from sim_telarray files."""
181
- label = Path(__file__).stem
182
- args, _db = _parse(label)
180
+ app_context = startup_application(_parse)
183
181
 
184
- logger = logging.getLogger()
185
- logger.setLevel(gen.get_log_level_from_user(args.get("log_level", "INFO")))
182
+ simtel_files = [
183
+ Path(p).expanduser() for p in gen.ensure_iterable(app_context.args["simtel_files"])
184
+ ]
185
+ plots = list(gen.ensure_iterable(app_context.args.get("plots")))
186
186
 
187
- ioh = io_handler.IOHandler()
188
- simtel_files = [Path(p).expanduser() for p in gen.ensure_iterable(args["simtel_files"])]
189
- plots = list(gen.ensure_iterable(args.get("plots")))
190
-
191
- generate_and_save_plots(simtel_files=simtel_files, plots=plots, args=args, ioh=ioh)
187
+ generate_and_save_plots(
188
+ simtel_files=simtel_files, plots=plots, args=app_context.args, ioh=app_context.io_handler
189
+ )
192
190
 
193
191
 
194
192
  if __name__ == "__main__":
@@ -23,37 +23,24 @@ Plot tabular data using a configuration file.
23
23
 
24
24
  """
25
25
 
26
- import logging
27
- from pathlib import Path
28
-
29
26
  import simtools.utils.general as gen
27
+ from simtools.application_control import get_application_label, startup_application
30
28
  from simtools.configuration import configurator
31
29
  from simtools.constants import PLOT_CONFIG_SCHEMA
32
30
  from simtools.data_model import schema
33
31
  from simtools.data_model.metadata_collector import MetadataCollector
34
- from simtools.io import ascii_handler, io_handler
32
+ from simtools.io import ascii_handler
35
33
  from simtools.visualization import plot_tables
36
34
 
37
35
 
38
- def _parse(label, description, usage):
39
- """
40
- Parse command line configuration.
41
-
42
- Parameters
43
- ----------
44
- label : str
45
- Label describing the application.
46
- description : str
47
- Description of the application.
48
- usage : str
49
- Example on how to use the application.
50
-
51
- Returns
52
- -------
53
- CommandLineParser
54
- Command line parser object.
55
- """
56
- config = configurator.Configurator(label=label, description=description, usage=usage)
36
+ def _parse():
37
+ """Parse command line configuration."""
38
+ config = configurator.Configurator(
39
+ label=get_application_label(__file__),
40
+ description="Plots tabular data.",
41
+ usage="""simtools-plot-tabular-data --plot_config config_file_name "
42
+ --output_file output_file_name""",
43
+ )
57
44
 
58
45
  config.parser.add_argument(
59
46
  "--plot_config",
@@ -79,33 +66,25 @@ def _parse(label, description, usage):
79
66
 
80
67
  def main():
81
68
  """Plot tabular data."""
82
- args_dict, db_config_ = _parse(
83
- label=Path(__file__).stem,
84
- description="Plots tabular data.",
85
- usage="""simtools-plot-tabular-data --plot_config config_file_name "
86
- --output_file output_file_name""",
87
- )
88
- logger = logging.getLogger()
89
- logger.setLevel(gen.get_log_level_from_user(args_dict.get("log_level", "INFO")))
90
- io_handler_instance = io_handler.IOHandler()
69
+ app_context = startup_application(_parse)
91
70
 
92
71
  plot_config = gen.convert_keys_in_dict_to_lowercase(
93
72
  schema.validate_dict_using_schema(
94
- ascii_handler.collect_data_from_file(args_dict["plot_config"]),
73
+ ascii_handler.collect_data_from_file(app_context.args["plot_config"]),
95
74
  PLOT_CONFIG_SCHEMA,
96
75
  )
97
76
  )
98
77
 
99
78
  plot_tables.plot(
100
79
  config=plot_config["plot"],
101
- output_file=io_handler_instance.get_output_file(args_dict["output_file"]),
102
- db_config=db_config_,
103
- data_path=args_dict.get("table_data_path"),
80
+ output_file=app_context.io_handler.get_output_file(app_context.args["output_file"]),
81
+ db_config=app_context.db_config,
82
+ data_path=app_context.args.get("table_data_path"),
104
83
  )
105
84
 
106
85
  MetadataCollector.dump(
107
- args_dict,
108
- io_handler_instance.get_output_file(args_dict["output_file"]),
86
+ app_context.args,
87
+ app_context.io_handler.get_output_file(app_context.args["output_file"]),
109
88
  add_activity_name=True,
110
89
  )
111
90
 
@@ -46,19 +46,18 @@ Plot tabular data for all types defined in the schema file:
46
46
 
47
47
  """
48
48
 
49
- import logging
50
- from pathlib import Path
51
-
52
- import simtools.utils.general as gen
49
+ from simtools.application_control import get_application_label, startup_application
53
50
  from simtools.configuration import configurator
54
51
  from simtools.data_model.metadata_collector import MetadataCollector
55
- from simtools.io import io_handler
56
52
  from simtools.visualization import plot_tables
57
53
 
58
54
 
59
- def _parse(label, description):
55
+ def _parse():
60
56
  """Parse command line configuration."""
61
- config = configurator.Configurator(label=label, description=description)
57
+ config = configurator.Configurator(
58
+ label=get_application_label(__file__),
59
+ description="Plots tabular data for a model parameter.",
60
+ )
62
61
 
63
62
  config.parser.add_argument("--parameter", type=str, required=True, help="Parameter name.")
64
63
  config.parser.add_argument(
@@ -73,31 +72,25 @@ def _parse(label, description):
73
72
 
74
73
  def main():
75
74
  """Plot tabular data."""
76
- args_dict, db_config = _parse(
77
- label=Path(__file__).stem,
78
- description="Plots tabular data for a model parameter.",
79
- )
80
- logger = logging.getLogger()
81
- logger.setLevel(gen.get_log_level_from_user(args_dict.get("log_level", "INFO")))
82
- io_handler_instance = io_handler.IOHandler()
75
+ app_context = startup_application(_parse)
83
76
 
84
77
  plot_configs, output_files = plot_tables.generate_plot_configurations(
85
- parameter=args_dict["parameter"],
86
- parameter_version=args_dict["parameter_version"],
87
- site=args_dict["site"],
88
- telescope=args_dict.get("telescope"),
89
- output_path=io_handler_instance.get_output_directory(),
90
- plot_type=args_dict["plot_type"],
91
- db_config=db_config,
78
+ parameter=app_context.args["parameter"],
79
+ parameter_version=app_context.args["parameter_version"],
80
+ site=app_context.args["site"],
81
+ telescope=app_context.args.get("telescope"),
82
+ output_path=app_context.io_handler.get_output_directory(),
83
+ plot_type=app_context.args["plot_type"],
84
+ db_config=app_context.db_config,
92
85
  )
93
86
 
94
87
  for plot_config, output_file in zip(plot_configs, output_files):
95
88
  plot_tables.plot(
96
89
  config=plot_config,
97
90
  output_file=output_file,
98
- db_config=db_config,
91
+ db_config=app_context.db_config,
99
92
  )
100
- MetadataCollector.dump(args_dict, output_file=output_file, add_activity_name=True)
93
+ MetadataCollector.dump(app_context.args, output_file=output_file, add_activity_name=True)
101
94
 
102
95
 
103
96
  if __name__ == "__main__":
@@ -6,55 +6,27 @@ The versions of simtools, the DB, sim_telarray, and CORSIKA are printed.
6
6
 
7
7
  """
8
8
 
9
- import logging
10
- from pathlib import Path
11
-
12
9
  from simtools import dependencies, version
10
+ from simtools.application_control import get_application_label, startup_application
13
11
  from simtools.configuration import configurator
14
- from simtools.io import ascii_handler, io_handler
15
- from simtools.utils import general as gen
16
-
17
-
18
- def _parse(label, description, usage):
19
- """
20
- Parse command line configuration.
12
+ from simtools.io import ascii_handler
21
13
 
22
- No command line arguments are required for this application,
23
- but the configurator is called to set up the DB connection and
24
- the structure with _parse is kept from other applications for consistency.
25
-
26
- Parameters
27
- ----------
28
- label : str
29
- Label describing the application.
30
- description : str
31
- Description of the application.
32
- usage : str
33
- Example on how to use the application.
34
-
35
- Returns
36
- -------
37
- CommandLineParser
38
- Command line parser object.
39
- """
40
- config = configurator.Configurator(label=label, description=description, usage=usage)
41
14
 
15
+ def _parse():
16
+ """Parse command line configuration."""
17
+ config = configurator.Configurator(
18
+ label=get_application_label(__file__),
19
+ description="Print the versions of simtools, the DB, sim_telarray and CORSIKA.",
20
+ usage="simtools-print-version",
21
+ )
42
22
  return config.initialize(db_config=True, output=True, require_command_line=False)
43
23
 
44
24
 
45
25
  def main():
46
26
  """Print the versions of the simtools software."""
47
- label = Path(__file__).stem
48
- args_dict, db_config = _parse(
49
- label=label,
50
- description="Print the versions of simtools, the DB, sim_telarray and CORSIKA.",
51
- usage="simtools-print-version",
52
- )
53
- logger = logging.getLogger()
54
- logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
55
- io_handler_instance = io_handler.IOHandler()
27
+ app_context = startup_application(_parse)
56
28
 
57
- version_string = dependencies.get_version_string(db_config)
29
+ version_string = dependencies.get_version_string(app_context.db_config)
58
30
  version_dict = {"simtools version": version.__version__}
59
31
 
60
32
  print()
@@ -68,11 +40,11 @@ def main():
68
40
  key, value = version_entry.split(": ", 1)
69
41
  version_dict[key] = value
70
42
 
71
- if not args_dict.get("output_file_from_default", False):
43
+ if not app_context.args.get("output_file_from_default", False):
72
44
  ascii_handler.write_data_to_file(
73
45
  data=version_dict,
74
- output_file=io_handler_instance.get_output_file(
75
- args_dict.get("output_file", "simtools_version.json"), label=label
46
+ output_file=app_context.io_handler.get_output_file(
47
+ app_context.args.get("output_file", "simtools_version.json")
76
48
  ),
77
49
  )
78
50
 
@@ -82,9 +82,7 @@ Derive limits for a given file for custom defined array layouts:
82
82
  --output_file corsika_simulation_limits_lookup.ecsv
83
83
  """
84
84
 
85
- import logging
86
-
87
- import simtools.utils.general as gen
85
+ from simtools.application_control import get_application_label, startup_application
88
86
  from simtools.configuration import configurator
89
87
  from simtools.production_configuration.derive_corsika_limits import (
90
88
  generate_corsika_limits_grid,
@@ -94,7 +92,8 @@ from simtools.production_configuration.derive_corsika_limits import (
94
92
  def _parse():
95
93
  """Parse command line configuration."""
96
94
  config = configurator.Configurator(
97
- description="Derive limits for energy, radial distance, and viewcone."
95
+ label=get_application_label(__file__),
96
+ description="Derive limits for energy, radial distance, and viewcone.",
98
97
  )
99
98
  config.parser.add_argument(
100
99
  "--event_data_file",
@@ -133,12 +132,9 @@ def _parse():
133
132
 
134
133
  def main():
135
134
  """Derive limits for energy, radial distance, and viewcone."""
136
- args_dict, db_config = _parse()
137
-
138
- logger = logging.getLogger()
139
- logger.setLevel(gen.get_log_level_from_user(args_dict.get("log_level", "info")))
135
+ app_context = startup_application(_parse)
140
136
 
141
- generate_corsika_limits_grid(args_dict, db_config)
137
+ generate_corsika_limits_grid(app_context.args, app_context.db_config)
142
138
 
143
139
 
144
140
  if __name__ == "__main__":
@@ -50,27 +50,21 @@ The output will be a file containing the grid points with the derived number of
50
50
  added.
51
51
  """
52
52
 
53
- import logging
54
- from pathlib import Path
55
-
53
+ from simtools.application_control import get_application_label, startup_application
56
54
  from simtools.configuration import configurator
57
- from simtools.io import io_handler
58
55
  from simtools.production_configuration.derive_production_statistics_handler import (
59
56
  ProductionStatisticsHandler,
60
57
  )
61
- from simtools.utils import general as gen
62
-
63
58
 
64
- def _parse(label, description):
65
- """
66
- Parse command line arguments for the statistical error evaluator application.
67
59
 
68
- Returns
69
- -------
70
- argparse.Namespace
71
- Parsed command line arguments.
72
- """
73
- config = configurator.Configurator(label=label, description=description)
60
+ def _parse():
61
+ """Parse command line arguments."""
62
+ config = configurator.Configurator(
63
+ label=get_application_label(__file__),
64
+ description=(
65
+ "Evaluate statistical uncertainties from DL2 MC event files and interpolate results."
66
+ ),
67
+ )
74
68
 
75
69
  config.parser.add_argument(
76
70
  "--grid_points_production_file",
@@ -139,19 +133,11 @@ def _parse(label, description):
139
133
 
140
134
  def main():
141
135
  """Run the ProductionStatisticsHandler."""
142
- label = Path(__file__).stem
136
+ app_context = startup_application(_parse)
143
137
 
144
- args_dict, _ = _parse(
145
- label,
146
- "Evaluate statistical uncertainties from DL2 MC event files and interpolate results.",
138
+ manager = ProductionStatisticsHandler(
139
+ app_context.args, output_path=app_context.io_handler.get_output_directory()
147
140
  )
148
- logger = logging.getLogger()
149
- logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
150
-
151
- _io_handler = io_handler.IOHandler()
152
- output_path = _io_handler.get_output_directory(label, sub_dir="")
153
-
154
- manager = ProductionStatisticsHandler(args_dict, output_path=output_path)
155
141
  manager.run()
156
142
 
157
143