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
@@ -0,0 +1,78 @@
1
+ ---
2
+ $schema: http://json-schema.org/draft-06/schema#
3
+ $ref: '#/definitions/SimulationModelsInfo'
4
+ title: Production and simulation model information schema
5
+ description: Schema for validating 'info.yml' files used to update CTAO simulation models.
6
+ schema_version: 0.1.0
7
+ schema_name: simulation_models_info.metaschema
8
+ type: object
9
+ additionalProperties: false
10
+
11
+ definitions:
12
+ SimulationModelsInfo:
13
+ properties:
14
+ model_version:
15
+ $ref: 'common_definitions.schema.yml#/$defs/semantic_version_pattern'
16
+ model_update:
17
+ type: string
18
+ description: The type of update for the model version.
19
+ enum:
20
+ - patch_update
21
+ - full_update
22
+ model_version_history:
23
+ type: array
24
+ description: A list of previous model versions.
25
+ items:
26
+ $ref: 'common_definitions.schema.yml#/$defs/semantic_version_pattern'
27
+ description:
28
+ type: string
29
+ description: A detailed description of the model changes.
30
+ changes:
31
+ type: object
32
+ description: A map of design names to their parameter changes.
33
+ propertyNames:
34
+ $ref: 'common_definitions.schema.yml#/$defs/telescope_name_pattern'
35
+ additionalProperties:
36
+ type: object
37
+ additionalProperties:
38
+ anyOf:
39
+ - $ref: '#/$defs/ParameterValue'
40
+ - $ref: '#/$defs/DeprecatedParameter'
41
+ required:
42
+ - model_version
43
+ - model_update
44
+ - model_version_history
45
+ - description
46
+ - changes
47
+
48
+ $defs:
49
+ DeprecatedParameter:
50
+ type: object
51
+ properties:
52
+ deprecated:
53
+ type: boolean
54
+ const: true
55
+ required:
56
+ - deprecated
57
+ additionalProperties: false
58
+
59
+ ParameterValue:
60
+ type: object
61
+ properties:
62
+ version:
63
+ $ref: 'common_definitions.schema.yml#/$defs/semantic_version_pattern'
64
+ value:
65
+ oneOf:
66
+ - type: string
67
+ - type: number
68
+ - type: boolean
69
+ - type: array
70
+ - type: object
71
+ unit:
72
+ oneOf:
73
+ - type: string
74
+ - type: array
75
+ - type: "null"
76
+ required:
77
+ - version
78
+ additionalProperties: false
@@ -10,8 +10,6 @@ import numpy as np
10
10
  from simtools.io import ascii_handler
11
11
  from simtools.utils import names
12
12
 
13
- __all__ = ["SimtelConfigReader"]
14
-
15
13
 
16
14
  def get_list_of_simtel_parameters(simtel_config_file):
17
15
  """
@@ -13,8 +13,6 @@ import simtools.version
13
13
  from simtools.io import ascii_handler
14
14
  from simtools.utils import names
15
15
 
16
- __all__ = ["SimtelConfigWriter"]
17
-
18
16
 
19
17
  def sim_telarray_random_seeds(seed, number):
20
18
  """
@@ -67,6 +65,7 @@ class SimtelConfigWriter:
67
65
  model_version,
68
66
  layout_name=None,
69
67
  telescope_model_name=None,
68
+ telescope_design_model=None,
70
69
  label=None,
71
70
  simtel_path=None,
72
71
  ):
@@ -79,9 +78,12 @@ class SimtelConfigWriter:
79
78
  self._label = label
80
79
  self._layout_name = layout_name
81
80
  self._telescope_model_name = telescope_model_name
81
+ self._telescope_design_model = telescope_design_model
82
82
  self._simtel_path = simtel_path
83
83
 
84
- def write_telescope_config_file(self, config_file_path, parameters, telescope_name=None):
84
+ def write_telescope_config_file(
85
+ self, config_file_path, parameters, telescope_name=None, telescope_design_model=None
86
+ ):
85
87
  """
86
88
  Write the sim_telarray config file for a single telescope.
87
89
 
@@ -93,33 +95,115 @@ class SimtelConfigWriter:
93
95
  Model parameters
94
96
  telescope_name: str
95
97
  Name of the telescope (use self._telescope_model_name if None)
98
+ telescope_design_model: str
99
+ Telescope design model.
96
100
  """
97
101
  self._logger.debug(f"Writing telescope config file {config_file_path}")
98
102
 
103
+ simtel_par = self._get_parameters_for_sim_telarray(parameters, config_file_path)
104
+ telescope_name = telescope_name or self._telescope_model_name
105
+ _telescope_design_model = telescope_design_model or self._telescope_design_model
106
+
99
107
  with open(config_file_path, "w", encoding="utf-8") as file:
100
108
  self._write_header(file, "TELESCOPE CONFIGURATION FILE")
101
109
 
102
- telescope_name = telescope_name or self._telescope_model_name
103
110
  file.write("#ifdef TELESCOPE\n")
104
111
  file.write(f" echo Configuration for {telescope_name} - TELESCOPE $(TELESCOPE)\n")
105
112
  file.write("#endif\n\n")
106
113
 
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")
120
- for meta in self._get_sim_telarray_metadata("telescope", parameters, telescope_name):
114
+ for simtel_name, simtel_value in simtel_par.items():
115
+ file.write(f"{simtel_name} = {self._get_value_string_for_simtel(simtel_value)}\n")
116
+ for meta in self._get_sim_telarray_metadata(
117
+ "telescope",
118
+ parameters,
119
+ telescope_name,
120
+ telescope_design_model=_telescope_design_model,
121
+ ):
121
122
  file.write(f"{meta}\n")
122
123
 
124
+ def _get_parameters_for_sim_telarray(self, parameters, config_file_path):
125
+ """
126
+ Convert parameter dictionary to sim_telarray configuration file format.
127
+
128
+ Accounts for differences between the data models for sim_telarray configuration
129
+ and the simulation models.
130
+
131
+ Parameters
132
+ ----------
133
+ parameters: dict
134
+ Model parameters.
135
+ config_file_path: str or Path
136
+ Path of the file to write on.
137
+
138
+ Returns
139
+ -------
140
+ dict
141
+ Model parameters in sim_telarray format.
142
+ """
143
+ simtel_par = {}
144
+ for par, value in parameters.items():
145
+ simtel_name, simtel_value = self._convert_model_parameters_to_simtel_format(
146
+ names.get_simulation_software_name_from_parameter_name(
147
+ par, software_name="sim_telarray"
148
+ ),
149
+ value["value"],
150
+ config_file_path,
151
+ None,
152
+ )
153
+ if simtel_name:
154
+ simtel_par[simtel_name] = simtel_value
155
+ if "stars" not in parameters: # sim_telarray requires 'stars' to be set
156
+ simtel_par["stars"] = None
157
+
158
+ return self._get_flasher_parameters_for_sim_telarray(parameters, simtel_par)
159
+
160
+ def _get_flasher_parameters_for_sim_telarray(self, parameters, simtel_par):
161
+ """
162
+ Combine flasher pulse time parameters into a single parameter.
163
+
164
+ Takes into account that sim_telarray expects a single parameter with a specific name.
165
+
166
+ Parameters
167
+ ----------
168
+ parameters: dict
169
+ Model parameters.
170
+ simtel_par: dict
171
+ Model parameters in sim_telarray format.
172
+
173
+ Returns
174
+ -------
175
+ dict
176
+ Model parameters in sim_telarray format including flasher parameters.
177
+
178
+ """
179
+ if "flasher_pulse_shape" not in parameters and "flasher_pulse_width" not in parameters:
180
+ return simtel_par
181
+
182
+ mapping = {
183
+ "gauss": "laser_pulse_sigtime",
184
+ "tophat": "laser_pulse_twidth",
185
+ }
186
+
187
+ shape = parameters.get("flasher_pulse_shape", {}).get("value", "").lower()
188
+ if "exponential" in shape:
189
+ simtel_par["laser_pulse_exptime"] = parameters.get("flasher_pulse_exp_decay", {}).get(
190
+ "value", 0.0
191
+ )
192
+ else:
193
+ simtel_par["laser_pulse_exptime"] = 0.0
194
+
195
+ width = parameters.get("flasher_pulse_width", {}).get("value", 0.0)
196
+
197
+ simtel_par.update(dict.fromkeys(mapping.values(), 0.0))
198
+ if shape == "gauss-exponential":
199
+ simtel_par["laser_pulse_sigtime"] = width
200
+ elif shape in mapping:
201
+ simtel_par[mapping[shape]] = width
202
+ else:
203
+ self._logger.warning(f"Flasher pulse shape '{shape}' without width definition")
204
+
205
+ return simtel_par
206
+
123
207
  def _get_value_string_for_simtel(self, value):
124
208
  """
125
209
  Return a value string for simtel.
@@ -137,12 +221,17 @@ class SimtelConfigWriter:
137
221
  value = "none" if value is None else value # simtel requires 'none'
138
222
  if isinstance(value, bool):
139
223
  value = 1 if value else 0
140
- elif isinstance(value, (list, np.ndarray)): # noqa: UP038
224
+ elif isinstance(value, (list, np.ndarray)):
141
225
  value = gen.convert_list_to_string(value, shorten_list=True)
142
226
  return value
143
227
 
144
228
  def _get_sim_telarray_metadata(
145
- self, config_type, model_parameters, telescope_model_name, additional_metadata=None
229
+ self,
230
+ config_type,
231
+ model_parameters,
232
+ telescope_model_name,
233
+ additional_metadata=None,
234
+ telescope_design_model=None,
146
235
  ):
147
236
  """
148
237
  Return sim_telarray metadata.
@@ -157,6 +246,8 @@ class SimtelConfigWriter:
157
246
  Name of the telescope model
158
247
  additional_metadata: dict
159
248
  Dictionary with additional metadata to include using 'set'.
249
+ telescope_design_model: str
250
+ Name of the telescope design model.
160
251
 
161
252
  Returns
162
253
  -------
@@ -167,14 +258,15 @@ class SimtelConfigWriter:
167
258
  f"config_release = {self._model_version} with simtools v{simtools.version.__version__}",
168
259
  f"config_version = {self._model_version}",
169
260
  ]
261
+ telescope_design_model = telescope_design_model or "design_model_not_set"
170
262
  if config_type == "telescope":
171
263
  meta_parameters.extend(
172
264
  [
173
- f"camera_config_name = {telescope_model_name}",
174
- "camera_config_variant = ",
265
+ f"camera_config_name = {telescope_design_model}",
266
+ f"camera_config_variant = {telescope_model_name}",
175
267
  f"camera_config_version = {self._model_version}",
176
- f"optics_config_name = {telescope_model_name}",
177
- "optics_config_variant = ",
268
+ f"optics_config_name = {telescope_design_model}",
269
+ f"optics_config_variant = {telescope_model_name}",
178
270
  f"optics_config_version = {self._model_version}",
179
271
  ]
180
272
  )
@@ -447,7 +539,7 @@ class SimtelConfigWriter:
447
539
  if simtel_name is not None:
448
540
  file.write(f"{self.TAB}{simtel_name} = {value}\n")
449
541
  for meta in self._get_sim_telarray_metadata(
450
- "site", site_parameters, self._telescope_model_name, additional_metadata
542
+ "site", site_parameters, None, additional_metadata
451
543
  ):
452
544
  file.write(f"{self.TAB}{meta}\n")
453
545
  file.write("\n")
@@ -514,7 +606,7 @@ class SimtelConfigWriter:
514
606
  trigger_lines[tel_type] += ", ".join(map(str, tel_list))
515
607
  width = trigger_dict["width"]["value"] * u.Unit(trigger_dict["width"]["unit"]).to("ns")
516
608
  trigger_lines[tel_type] += f" width {width}"
517
- if trigger_dict.get("hard_stereo"):
609
+ if trigger_dict.get("hard_stereo", {}).get("value"):
518
610
  trigger_lines[tel_type] += " hardstereo"
519
611
  if all(trigger_dict["min_separation"][key] is not None for key in ["value", "unit"]):
520
612
  min_sep = trigger_dict["min_separation"]["value"] * u.Unit(
@@ -105,8 +105,8 @@ def get_sim_telarray_telescope_id(telescope_name, file):
105
105
  _, telescope_meta = read_sim_telarray_metadata(file)
106
106
  telescope_name_to_sim_telarray_id = {}
107
107
  for tel_id in telescope_meta.keys():
108
- _optics_name = telescope_meta[tel_id].get("optics_config_name", None)
109
- _camera_name = telescope_meta[tel_id].get("camera_config_name", None)
108
+ _optics_name = telescope_meta[tel_id].get("optics_config_variant", None)
109
+ _camera_name = telescope_meta[tel_id].get("camera_config_variant", None)
110
110
  if _optics_name == _camera_name and _optics_name == telescope_name:
111
111
  telescope_name_to_sim_telarray_id[telescope_name] = tel_id
112
112
 
@@ -132,7 +132,7 @@ def get_sim_telarray_telescope_id_to_telescope_name_mapping(file):
132
132
  for i, (tel_id, meta) in enumerate(telescope_meta.items()):
133
133
  try:
134
134
  telescope_name = names.validate_array_element_name(
135
- meta.get("optics_config_name", f"Unknown-{tel_id}")
135
+ meta.get("optics_config_variant", f"Unknown-{tel_id}")
136
136
  )
137
137
  except ValueError:
138
138
  telescope_name = _guess_telescope_name_for_legacy_files(i, file)
@@ -6,8 +6,6 @@ from simtools.io import io_handler
6
6
  from simtools.runners.simtel_runner import InvalidOutputFileError, SimtelRunner
7
7
  from simtools.utils.general import clear_default_sim_telarray_cfg_directories
8
8
 
9
- __all__ = ["SimulatorArray"]
10
-
11
9
 
12
10
  class SimulatorArray(SimtelRunner):
13
11
  """
@@ -34,6 +32,7 @@ class SimulatorArray(SimtelRunner):
34
32
  label=None,
35
33
  use_multipipe=False,
36
34
  sim_telarray_seeds=None,
35
+ calibration_config=None,
37
36
  ):
38
37
  """Initialize SimulatorArray."""
39
38
  self._logger = logging.getLogger(__name__)
@@ -47,6 +46,7 @@ class SimulatorArray(SimtelRunner):
47
46
 
48
47
  self.sim_telarray_seeds = sim_telarray_seeds
49
48
  self.corsika_config = corsika_config
49
+ self.calibration_config = calibration_config
50
50
  self.io_handler = io_handler.IOHandler()
51
51
  self._log_file = None
52
52
 
@@ -70,68 +70,60 @@ class SimulatorArray(SimtelRunner):
70
70
  """
71
71
  command = self._common_run_command(run_number, weak_pointing)
72
72
 
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
- )
73
+ if self.calibration_config:
74
+ command += self._make_run_command_for_calibration_simulations()
75
+ else:
76
+ command += self._make_run_command_for_shower_simulations()
77
+
78
+ # "-C show=all" should be the last option
79
+ command += super().get_config_option("show", "all")
80
+ command += f" {input_file} | gzip > {self._log_file} 2>&1 || exit"
81
81
 
82
82
  return clear_default_sim_telarray_cfg_directories(command)
83
83
 
84
- def make_run_command_for_calibration_simulations(
85
- self, run_number=None, input_file=None, calibration_runner_args=None
86
- ):
84
+ def _make_run_command_for_shower_simulations(self):
87
85
  """
88
- Build and return the command to run sim_telarray for calibration simulations.
89
-
90
- Parameters
91
- ----------
92
- calibration_runner_args: dict
93
- Dictionary with calibration runner arguments.
94
- input_file: str
95
- Full path of the input CORSIKA file
96
- run_number: int (optional)
97
- run number
86
+ Build and return the command to run sim_telarray shower simulations.
98
87
 
99
88
  Returns
100
89
  -------
101
90
  str
102
- Command to run sim_telarray for pedestal simulations.
91
+ Command to run sim_telarray.
103
92
  """
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
- )
112
- command += super().get_config_option(
113
- "nsb_scaling_factor", calibration_runner_args["nsb_scaling_factor"]
93
+ return super().get_config_option(
94
+ "power_law",
95
+ SimulatorArray.get_power_law_for_sim_telarray_histograms(
96
+ self.corsika_config.primary_particle
97
+ ),
114
98
  )
115
- if calibration_runner_args.get("stars"):
116
- command += super().get_config_option("stars", calibration_runner_args["stars"])
117
99
 
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)
100
+ def _make_run_command_for_calibration_simulations(self):
101
+ """Build sim_telarray command for calibration simulations."""
102
+ cfg = self.calibration_config
103
+ altitude = self.corsika_config.array_model.site_model.get_parameter_value_with_unit(
104
+ "reference_point_altitude"
105
+ ).to_value("m")
130
106
 
131
- command += f" {input_file}"
132
- command += f" | gzip > {self._log_file} 2>&1 || exit"
107
+ command = super().get_config_option("Altitude", altitude)
133
108
 
134
- return clear_default_sim_telarray_cfg_directories(command)
109
+ for key in ("nsb_scaling_factor", "stars"):
110
+ if cfg.get(key):
111
+ command += super().get_config_option(key, cfg[key])
112
+
113
+ run_mode = cfg.get("run_mode")
114
+ if run_mode in ("pedestals", "nsb_only_pedestals"):
115
+ n_events = cfg.get("number_of_pedestal_events", cfg["number_of_events"])
116
+ command += super().get_config_option("pedestal_events", n_events)
117
+ if run_mode == "nsb_only_pedestals":
118
+ command += self._nsb_only_pedestals_command()
119
+ if run_mode == "dark_pedestals":
120
+ n_events = cfg.get("number_of_dark_events", cfg["number_of_events"])
121
+ command += super().get_config_option("dark_events", n_events)
122
+ if run_mode == "direct_injection":
123
+ n_events = cfg.get("number_of_flasher_events", cfg["number_of_events"])
124
+ command += super().get_config_option("laser_events", n_events)
125
+
126
+ return command
135
127
 
136
128
  def _common_run_command(self, run_number, weak_pointing=None):
137
129
  """Build generic run command for sim_telarray."""
@@ -159,44 +151,10 @@ class SimulatorArray(SimtelRunner):
159
151
  )
160
152
  elif self.sim_telarray_seeds and self.sim_telarray_seeds.get("seed"):
161
153
  command += super().get_config_option("random_seed", self.sim_telarray_seeds["seed"])
162
- command += super().get_config_option("show", "all")
163
154
  command += super().get_config_option("output_file", output_file)
164
155
 
165
156
  return command
166
157
 
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
158
  def _nsb_only_pedestals_command(self):
201
159
  """
202
160
  Generate the command to run sim_telarray for nsb-only pedestal simulations.
@@ -7,8 +7,6 @@ from simtools.io import ascii_handler
7
7
  from simtools.runners.simtel_runner import SimtelRunner
8
8
  from simtools.utils import general
9
9
 
10
- __all__ = ["SimulatorCameraEfficiency"]
11
-
12
10
 
13
11
  class SimulatorCameraEfficiency(SimtelRunner):
14
12
  """