gammasimtools 0.6.1__py3-none-any.whl → 0.8.1__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 (353) hide show
  1. gammasimtools-0.8.1.dist-info/METADATA +172 -0
  2. gammasimtools-0.8.1.dist-info/RECORD +346 -0
  3. {gammasimtools-0.6.1.dist-info → gammasimtools-0.8.1.dist-info}/WHEEL +1 -1
  4. gammasimtools-0.8.1.dist-info/entry_points.txt +31 -0
  5. simtools/_version.py +2 -2
  6. simtools/applications/calculate_trigger_rate.py +210 -0
  7. simtools/applications/convert_all_model_parameters_from_simtel.py +372 -0
  8. simtools/applications/{print_array_elements.py → convert_geo_coordinates_of_array_elements.py} +58 -63
  9. simtools/applications/convert_model_parameter_from_simtel.py +119 -0
  10. simtools/applications/{add_file_to_db.py → db_add_file_to_db.py} +70 -60
  11. simtools/applications/db_add_model_parameters_from_repository_to_db.py +184 -0
  12. simtools/applications/db_add_value_from_json_to_db.py +105 -0
  13. simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +180 -0
  14. simtools/applications/db_get_array_layouts_from_db.py +162 -0
  15. simtools/applications/{get_file_from_db.py → db_get_file_from_db.py} +30 -34
  16. simtools/applications/db_get_parameter_from_db.py +131 -0
  17. simtools/applications/db_inspect_databases.py +52 -0
  18. simtools/applications/derive_mirror_rnda.py +39 -255
  19. simtools/applications/derive_psf_parameters.py +441 -0
  20. simtools/applications/generate_array_config.py +82 -0
  21. simtools/applications/generate_corsika_histograms.py +52 -52
  22. simtools/applications/generate_default_metadata.py +5 -8
  23. simtools/applications/generate_regular_arrays.py +117 -0
  24. simtools/applications/generate_simtel_array_histograms.py +97 -56
  25. simtools/applications/plot_array_layout.py +345 -115
  26. simtools/applications/production_generate_simulation_config.py +158 -0
  27. simtools/applications/production_scale_events.py +168 -0
  28. simtools/applications/simulate_light_emission.py +478 -0
  29. simtools/applications/simulate_prod.py +97 -175
  30. simtools/applications/submit_data_from_external.py +9 -12
  31. simtools/applications/submit_model_parameter_from_external.py +122 -0
  32. simtools/applications/validate_camera_efficiency.py +35 -102
  33. simtools/applications/validate_camera_fov.py +20 -19
  34. simtools/applications/{compare_cumulative_psf.py → validate_cumulative_psf.py} +45 -44
  35. simtools/applications/validate_file_using_schema.py +113 -47
  36. simtools/applications/validate_optics.py +17 -22
  37. simtools/camera_efficiency.py +193 -202
  38. simtools/configuration/commandline_parser.py +384 -96
  39. simtools/configuration/configurator.py +55 -71
  40. simtools/constants.py +5 -5
  41. simtools/corsika/corsika_config.py +482 -342
  42. simtools/corsika/corsika_histograms.py +226 -204
  43. simtools/corsika/corsika_histograms_visualize.py +23 -24
  44. simtools/corsika/primary_particle.py +159 -0
  45. simtools/data_model/data_reader.py +25 -20
  46. simtools/data_model/format_checkers.py +52 -0
  47. simtools/data_model/metadata_collector.py +210 -184
  48. simtools/data_model/metadata_model.py +115 -37
  49. simtools/data_model/model_data_writer.py +335 -26
  50. simtools/data_model/validate_data.py +366 -154
  51. simtools/db/db_array_elements.py +130 -0
  52. simtools/db/db_from_repo_handler.py +106 -0
  53. simtools/db/db_handler.py +1246 -0
  54. simtools/io_operations/hdf5_handler.py +3 -1
  55. simtools/io_operations/io_handler.py +32 -57
  56. simtools/job_execution/job_manager.py +82 -69
  57. simtools/layout/array_layout.py +325 -537
  58. simtools/layout/geo_coordinates.py +8 -11
  59. simtools/layout/telescope_position.py +163 -86
  60. simtools/model/array_model.py +305 -256
  61. simtools/model/calibration_model.py +50 -0
  62. simtools/model/camera.py +233 -493
  63. simtools/model/mirrors.py +61 -44
  64. simtools/model/model_parameter.py +602 -0
  65. simtools/model/model_utils.py +7 -35
  66. simtools/model/site_model.py +161 -0
  67. simtools/model/telescope_model.py +127 -621
  68. simtools/production_configuration/calculate_statistical_errors_grid_point.py +454 -0
  69. simtools/production_configuration/event_scaler.py +146 -0
  70. simtools/production_configuration/generate_simulation_config.py +193 -0
  71. simtools/production_configuration/interpolation_handler.py +197 -0
  72. simtools/ray_tracing/__init__.py +0 -0
  73. simtools/ray_tracing/mirror_panel_psf.py +280 -0
  74. simtools/{psf_analysis.py → ray_tracing/psf_analysis.py} +133 -47
  75. simtools/ray_tracing/ray_tracing.py +646 -0
  76. simtools/runners/__init__.py +0 -0
  77. simtools/runners/corsika_runner.py +240 -0
  78. simtools/runners/corsika_simtel_runner.py +225 -0
  79. simtools/runners/runner_services.py +307 -0
  80. simtools/runners/simtel_runner.py +224 -0
  81. simtools/schemas/array_elements.yml +137 -0
  82. simtools/schemas/integration_tests_config.metaschema.yml +93 -0
  83. simtools/schemas/metadata.metaschema.yml +6 -0
  84. simtools/schemas/model_parameter.metaschema.yml +78 -0
  85. simtools/schemas/{data.metaschema.yml → model_parameter_and_data_schema.metaschema.yml} +27 -44
  86. simtools/schemas/model_parameters/adjust_gain.schema.yml +37 -0
  87. simtools/schemas/model_parameters/altitude.schema.yml +37 -0
  88. simtools/schemas/model_parameters/array_coordinates.schema.yml +33 -0
  89. simtools/schemas/model_parameters/array_coordinates_UTM.schema.yml +77 -0
  90. simtools/schemas/model_parameters/array_element_position_ground.schema.yml +39 -0
  91. simtools/schemas/model_parameters/array_element_position_utm.schema.yml +39 -0
  92. simtools/schemas/model_parameters/array_layouts.schema.yml +48 -0
  93. simtools/schemas/model_parameters/array_triggers.schema.yml +93 -0
  94. simtools/schemas/model_parameters/asum_clipping.schema.yml +38 -0
  95. simtools/schemas/model_parameters/asum_offset.schema.yml +35 -0
  96. simtools/schemas/model_parameters/asum_shaping.schema.yml +35 -0
  97. simtools/schemas/model_parameters/asum_threshold.schema.yml +38 -0
  98. simtools/schemas/model_parameters/atmospheric_profile.schema.yml +32 -0
  99. simtools/schemas/model_parameters/atmospheric_transmission.schema.yml +35 -0
  100. simtools/schemas/model_parameters/axes_offsets.schema.yml +53 -0
  101. simtools/schemas/model_parameters/camera_body_diameter.schema.yml +40 -0
  102. simtools/schemas/model_parameters/camera_body_shape.schema.yml +45 -0
  103. simtools/schemas/model_parameters/camera_config_file.schema.yml +40 -0
  104. simtools/schemas/model_parameters/camera_config_rotate.schema.yml +36 -0
  105. simtools/schemas/model_parameters/camera_degraded_efficiency.schema.yml +43 -0
  106. simtools/schemas/model_parameters/camera_degraded_map.schema.yml +42 -0
  107. simtools/schemas/model_parameters/camera_depth.schema.yml +42 -0
  108. simtools/schemas/model_parameters/camera_filter.schema.yml +45 -0
  109. simtools/schemas/model_parameters/camera_filter_incidence_angle.schema.yml +29 -0
  110. simtools/schemas/model_parameters/camera_pixels.schema.yml +36 -0
  111. simtools/schemas/model_parameters/camera_transmission.schema.yml +41 -0
  112. simtools/schemas/model_parameters/channels_per_chip.schema.yml +36 -0
  113. simtools/schemas/model_parameters/correct_nsb_spectrum_to_telescope_altitude.schema.yml +35 -0
  114. simtools/schemas/model_parameters/corsika_cherenkov_photon_bunch_size.schema.yml +27 -0
  115. simtools/schemas/model_parameters/corsika_cherenkov_photon_wavelength_range.schema.yml +38 -0
  116. simtools/schemas/model_parameters/corsika_first_interaction_height.schema.yml +28 -0
  117. simtools/schemas/model_parameters/corsika_iact_io_buffer.schema.yml +23 -0
  118. simtools/schemas/model_parameters/corsika_iact_max_bunches.schema.yml +27 -0
  119. simtools/schemas/model_parameters/corsika_iact_split_auto.schema.yml +28 -0
  120. simtools/schemas/model_parameters/corsika_longitudinal_shower_development.schema.yml +27 -0
  121. simtools/schemas/model_parameters/corsika_observation_level.schema.yml +38 -0
  122. simtools/schemas/model_parameters/corsika_particle_kinetic_energy_cutoff.schema.yml +52 -0
  123. simtools/schemas/model_parameters/corsika_starting_grammage.schema.yml +27 -0
  124. simtools/schemas/model_parameters/dark_events.schema.yml +32 -0
  125. simtools/schemas/model_parameters/default_trigger.schema.yml +35 -0
  126. simtools/schemas/model_parameters/design_model.schema.yml +31 -0
  127. simtools/schemas/model_parameters/disc_ac_coupled.schema.yml +32 -0
  128. simtools/schemas/model_parameters/disc_bins.schema.yml +39 -0
  129. simtools/schemas/model_parameters/disc_start.schema.yml +41 -0
  130. simtools/schemas/model_parameters/discriminator_amplitude.schema.yml +42 -0
  131. simtools/schemas/model_parameters/discriminator_fall_time.schema.yml +41 -0
  132. simtools/schemas/model_parameters/discriminator_gate_length.schema.yml +41 -0
  133. simtools/schemas/model_parameters/discriminator_hysteresis.schema.yml +39 -0
  134. simtools/schemas/model_parameters/discriminator_output_amplitude.schema.yml +40 -0
  135. simtools/schemas/model_parameters/discriminator_output_var_percent.schema.yml +41 -0
  136. simtools/schemas/model_parameters/discriminator_pulse_shape.schema.yml +33 -0
  137. simtools/schemas/model_parameters/discriminator_rise_time.schema.yml +42 -0
  138. simtools/schemas/model_parameters/discriminator_scale_threshold.schema.yml +37 -0
  139. simtools/schemas/model_parameters/discriminator_sigsum_over_threshold.schema.yml +44 -0
  140. simtools/schemas/model_parameters/discriminator_threshold.schema.yml +36 -0
  141. simtools/schemas/model_parameters/discriminator_time_over_threshold.schema.yml +45 -0
  142. simtools/schemas/model_parameters/discriminator_var_gate_length.schema.yml +40 -0
  143. simtools/schemas/model_parameters/discriminator_var_sigsum_over_threshold.schema.yml +41 -0
  144. simtools/schemas/model_parameters/discriminator_var_threshold.schema.yml +38 -0
  145. simtools/schemas/model_parameters/discriminator_var_time_over_threshold.schema.yml +38 -0
  146. simtools/schemas/model_parameters/dish_shape_length.schema.yml +41 -0
  147. simtools/schemas/model_parameters/dsum_clipping.schema.yml +38 -0
  148. simtools/schemas/model_parameters/dsum_ignore_below.schema.yml +38 -0
  149. simtools/schemas/model_parameters/dsum_offset.schema.yml +37 -0
  150. simtools/schemas/model_parameters/dsum_pedsub.schema.yml +33 -0
  151. simtools/schemas/model_parameters/dsum_pre_clipping.schema.yml +39 -0
  152. simtools/schemas/model_parameters/dsum_prescale.schema.yml +44 -0
  153. simtools/schemas/model_parameters/dsum_presum_max.schema.yml +38 -0
  154. simtools/schemas/model_parameters/dsum_presum_shift.schema.yml +45 -0
  155. simtools/schemas/model_parameters/dsum_shaping.schema.yml +44 -0
  156. simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml +32 -0
  157. simtools/schemas/model_parameters/dsum_threshold.schema.yml +43 -0
  158. simtools/schemas/model_parameters/dsum_zero_clip.schema.yml +42 -0
  159. simtools/schemas/model_parameters/effective_focal_length.schema.yml +61 -0
  160. simtools/schemas/model_parameters/epsg_code.schema.yml +37 -0
  161. simtools/schemas/model_parameters/fadc_ac_coupled.schema.yml +35 -0
  162. simtools/schemas/model_parameters/fadc_amplitude.schema.yml +46 -0
  163. simtools/schemas/model_parameters/fadc_bins.schema.yml +40 -0
  164. simtools/schemas/model_parameters/fadc_compensate_pedestal.schema.yml +50 -0
  165. simtools/schemas/model_parameters/fadc_dev_pedestal.schema.yml +38 -0
  166. simtools/schemas/model_parameters/fadc_err_compensate_pedestal.schema.yml +42 -0
  167. simtools/schemas/model_parameters/fadc_err_pedestal.schema.yml +49 -0
  168. simtools/schemas/model_parameters/fadc_lg_amplitude.schema.yml +47 -0
  169. simtools/schemas/model_parameters/fadc_lg_compensate_pedestal.schema.yml +51 -0
  170. simtools/schemas/model_parameters/fadc_lg_dev_pedestal.schema.yml +37 -0
  171. simtools/schemas/model_parameters/fadc_lg_err_compensate_pedestal.schema.yml +43 -0
  172. simtools/schemas/model_parameters/fadc_lg_err_pedestal.schema.yml +49 -0
  173. simtools/schemas/model_parameters/fadc_lg_max_signal.schema.yml +43 -0
  174. simtools/schemas/model_parameters/fadc_lg_max_sum.schema.yml +39 -0
  175. simtools/schemas/model_parameters/fadc_lg_noise.schema.yml +42 -0
  176. simtools/schemas/model_parameters/fadc_lg_pedestal.schema.yml +40 -0
  177. simtools/schemas/model_parameters/fadc_lg_sensitivity.schema.yml +50 -0
  178. simtools/schemas/model_parameters/fadc_lg_sysvar_pedestal.schema.yml +42 -0
  179. simtools/schemas/model_parameters/fadc_lg_var_pedestal.schema.yml +41 -0
  180. simtools/schemas/model_parameters/fadc_lg_var_sensitivity.schema.yml +42 -0
  181. simtools/schemas/model_parameters/fadc_max_signal.schema.yml +43 -0
  182. simtools/schemas/model_parameters/fadc_max_sum.schema.yml +39 -0
  183. simtools/schemas/model_parameters/fadc_mhz.schema.yml +31 -0
  184. simtools/schemas/model_parameters/fadc_noise.schema.yml +41 -0
  185. simtools/schemas/model_parameters/fadc_pedestal.schema.yml +40 -0
  186. simtools/schemas/model_parameters/fadc_pulse_shape.schema.yml +39 -0
  187. simtools/schemas/model_parameters/fadc_sensitivity.schema.yml +50 -0
  188. simtools/schemas/model_parameters/fadc_sum_bins.schema.yml +43 -0
  189. simtools/schemas/model_parameters/fadc_sum_offset.schema.yml +43 -0
  190. simtools/schemas/model_parameters/fadc_sysvar_pedestal.schema.yml +42 -0
  191. simtools/schemas/model_parameters/fadc_var_pedestal.schema.yml +41 -0
  192. simtools/schemas/model_parameters/fadc_var_sensitivity.schema.yml +42 -0
  193. simtools/schemas/model_parameters/flatfielding.schema.yml +37 -0
  194. simtools/schemas/model_parameters/focal_length.schema.yml +45 -0
  195. simtools/schemas/model_parameters/focal_surface_parameters.schema.yml +158 -0
  196. simtools/schemas/model_parameters/focal_surface_ref_radius.schema.yml +29 -0
  197. simtools/schemas/model_parameters/focus_offset.schema.yml +66 -0
  198. simtools/schemas/model_parameters/gain_variation.schema.yml +43 -0
  199. simtools/schemas/model_parameters/geomag_horizontal.schema.yml +34 -0
  200. simtools/schemas/model_parameters/geomag_rotation.schema.yml +37 -0
  201. simtools/schemas/model_parameters/geomag_vertical.schema.yml +34 -0
  202. simtools/schemas/model_parameters/hg_lg_variation.schema.yml +36 -0
  203. simtools/schemas/model_parameters/iobuf_maximum.schema.yml +34 -0
  204. simtools/schemas/model_parameters/iobuf_output_maximum.schema.yml +34 -0
  205. simtools/schemas/model_parameters/laser_events.schema.yml +36 -0
  206. simtools/schemas/model_parameters/laser_external_trigger.schema.yml +35 -0
  207. simtools/schemas/model_parameters/laser_photons.schema.yml +32 -0
  208. simtools/schemas/model_parameters/laser_pulse_exptime.schema.yml +34 -0
  209. simtools/schemas/model_parameters/laser_pulse_offset.schema.yml +34 -0
  210. simtools/schemas/model_parameters/laser_pulse_sigtime.schema.yml +33 -0
  211. simtools/schemas/model_parameters/laser_pulse_twidth.schema.yml +33 -0
  212. simtools/schemas/model_parameters/laser_var_photons.schema.yml +33 -0
  213. simtools/schemas/model_parameters/laser_wavelength.schema.yml +33 -0
  214. simtools/schemas/model_parameters/led_events.schema.yml +34 -0
  215. simtools/schemas/model_parameters/led_photons.schema.yml +34 -0
  216. simtools/schemas/model_parameters/led_pulse_offset.schema.yml +32 -0
  217. simtools/schemas/model_parameters/led_pulse_sigtime.schema.yml +33 -0
  218. simtools/schemas/model_parameters/led_var_photons.schema.yml +34 -0
  219. simtools/schemas/model_parameters/lightguide_efficiency_vs_incidence_angle.schema.yml +41 -0
  220. simtools/schemas/model_parameters/lightguide_efficiency_vs_wavelength.schema.yml +43 -0
  221. simtools/schemas/model_parameters/min_photoelectrons.schema.yml +35 -0
  222. simtools/schemas/model_parameters/min_photons.schema.yml +32 -0
  223. simtools/schemas/model_parameters/mirror_align_random_distance.schema.yml +36 -0
  224. simtools/schemas/model_parameters/mirror_align_random_horizontal.schema.yml +64 -0
  225. simtools/schemas/model_parameters/mirror_align_random_vertical.schema.yml +64 -0
  226. simtools/schemas/model_parameters/mirror_class.schema.yml +41 -0
  227. simtools/schemas/model_parameters/mirror_degraded_reflection.schema.yml +51 -0
  228. simtools/schemas/model_parameters/mirror_focal_length.schema.yml +42 -0
  229. simtools/schemas/model_parameters/mirror_list.schema.yml +38 -0
  230. simtools/schemas/model_parameters/mirror_offset.schema.yml +41 -0
  231. simtools/schemas/model_parameters/mirror_panel_2f_measurements.schema.yml +39 -0
  232. simtools/schemas/model_parameters/mirror_reflection_random_angle.schema.yml +61 -0
  233. simtools/schemas/model_parameters/mirror_reflectivity.schema.yml +40 -0
  234. simtools/schemas/model_parameters/multiplicity_offset.schema.yml +46 -0
  235. simtools/schemas/model_parameters/nsb_autoscale_airmass.schema.yml +51 -0
  236. simtools/schemas/model_parameters/nsb_gain_drop_scale.schema.yml +37 -0
  237. simtools/schemas/model_parameters/nsb_offaxis.schema.yml +79 -0
  238. simtools/schemas/model_parameters/nsb_pixel_rate.schema.yml +47 -0
  239. simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml +34 -0
  240. simtools/schemas/model_parameters/nsb_reference_value.schema.yml +33 -0
  241. simtools/schemas/model_parameters/nsb_scaling_factor.schema.yml +35 -0
  242. simtools/schemas/model_parameters/nsb_skymap.schema.yml +39 -0
  243. simtools/schemas/model_parameters/nsb_spectrum.schema.yml +50 -0
  244. simtools/schemas/model_parameters/num_gains.schema.yml +34 -0
  245. simtools/schemas/model_parameters/only_triggered_telescopes.schema.yml +33 -0
  246. simtools/schemas/model_parameters/optics_properties.schema.yml +31 -0
  247. simtools/schemas/model_parameters/parabolic_dish.schema.yml +32 -0
  248. simtools/schemas/model_parameters/pedestal_events.schema.yml +32 -0
  249. simtools/schemas/model_parameters/photon_delay.schema.yml +38 -0
  250. simtools/schemas/model_parameters/photons_per_run.schema.yml +33 -0
  251. simtools/schemas/model_parameters/pixel_cells.schema.yml +35 -0
  252. simtools/schemas/model_parameters/pixels_parallel.schema.yml +54 -0
  253. simtools/schemas/model_parameters/pixeltrg_time_step.schema.yml +40 -0
  254. simtools/schemas/model_parameters/pm_average_gain.schema.yml +34 -0
  255. simtools/schemas/model_parameters/pm_collection_efficiency.schema.yml +40 -0
  256. simtools/schemas/model_parameters/pm_gain_index.schema.yml +36 -0
  257. simtools/schemas/model_parameters/pm_photoelectron_spectrum.schema.yml +41 -0
  258. simtools/schemas/model_parameters/pm_transit_time.schema.yml +63 -0
  259. simtools/schemas/model_parameters/pm_voltage_variation.schema.yml +39 -0
  260. simtools/schemas/model_parameters/primary_mirror_degraded_map.schema.yml +42 -0
  261. simtools/schemas/model_parameters/primary_mirror_diameter.schema.yml +33 -0
  262. simtools/schemas/model_parameters/primary_mirror_hole_diameter.schema.yml +33 -0
  263. simtools/schemas/model_parameters/primary_mirror_incidence_angle.schema.yml +29 -0
  264. simtools/schemas/model_parameters/primary_mirror_parameters.schema.yml +168 -0
  265. simtools/schemas/model_parameters/primary_mirror_ref_radius.schema.yml +36 -0
  266. simtools/schemas/model_parameters/primary_mirror_segmentation.schema.yml +34 -0
  267. simtools/schemas/model_parameters/qe_variation.schema.yml +43 -0
  268. simtools/schemas/model_parameters/quantum_efficiency.schema.yml +42 -0
  269. simtools/schemas/model_parameters/random_focal_length.schema.yml +45 -0
  270. simtools/schemas/model_parameters/random_generator.schema.yml +36 -0
  271. simtools/schemas/model_parameters/reference_point_altitude.schema.yml +35 -0
  272. simtools/schemas/model_parameters/reference_point_latitude.schema.yml +36 -0
  273. simtools/schemas/model_parameters/reference_point_longitude.schema.yml +36 -0
  274. simtools/schemas/model_parameters/reference_point_utm_east.schema.yml +34 -0
  275. simtools/schemas/model_parameters/reference_point_utm_north.schema.yml +34 -0
  276. simtools/schemas/model_parameters/sampled_output.schema.yml +31 -0
  277. simtools/schemas/model_parameters/save_pe_with_amplitude.schema.yml +34 -0
  278. simtools/schemas/model_parameters/secondary_mirror_baffle.schema.yml +79 -0
  279. simtools/schemas/model_parameters/secondary_mirror_degraded_map.schema.yml +42 -0
  280. simtools/schemas/model_parameters/secondary_mirror_degraded_reflection.schema.yml +41 -0
  281. simtools/schemas/model_parameters/secondary_mirror_diameter.schema.yml +33 -0
  282. simtools/schemas/model_parameters/secondary_mirror_hole_diameter.schema.yml +36 -0
  283. simtools/schemas/model_parameters/secondary_mirror_incidence_angle.schema.yml +29 -0
  284. simtools/schemas/model_parameters/secondary_mirror_parameters.schema.yml +168 -0
  285. simtools/schemas/model_parameters/secondary_mirror_ref_radius.schema.yml +36 -0
  286. simtools/schemas/model_parameters/secondary_mirror_reflectivity.schema.yml +35 -0
  287. simtools/schemas/model_parameters/secondary_mirror_segmentation.schema.yml +37 -0
  288. simtools/schemas/model_parameters/secondary_mirror_shadow_diameter.schema.yml +40 -0
  289. simtools/schemas/model_parameters/secondary_mirror_shadow_offset.schema.yml +40 -0
  290. simtools/schemas/model_parameters/store_photoelectrons.schema.yml +41 -0
  291. simtools/schemas/model_parameters/tailcut_scale.schema.yml +40 -0
  292. simtools/schemas/model_parameters/telescope_axis_height.schema.yml +31 -0
  293. simtools/schemas/model_parameters/telescope_random_angle.schema.yml +35 -0
  294. simtools/schemas/model_parameters/telescope_random_error.schema.yml +34 -0
  295. simtools/schemas/model_parameters/telescope_sphere_radius.schema.yml +37 -0
  296. simtools/schemas/model_parameters/telescope_transmission.schema.yml +113 -0
  297. simtools/schemas/model_parameters/teltrig_min_sigsum.schema.yml +41 -0
  298. simtools/schemas/model_parameters/teltrig_min_time.schema.yml +36 -0
  299. simtools/schemas/model_parameters/transit_time_calib_error.schema.yml +36 -0
  300. simtools/schemas/model_parameters/transit_time_compensate_error.schema.yml +37 -0
  301. simtools/schemas/model_parameters/transit_time_compensate_step.schema.yml +38 -0
  302. simtools/schemas/model_parameters/transit_time_error.schema.yml +45 -0
  303. simtools/schemas/model_parameters/transit_time_jitter.schema.yml +36 -0
  304. simtools/schemas/model_parameters/trigger_current_limit.schema.yml +32 -0
  305. simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml +53 -0
  306. simtools/schemas/model_parameters/trigger_pixels.schema.yml +40 -0
  307. simtools/simtel/simtel_config_reader.py +353 -0
  308. simtools/simtel/simtel_config_writer.py +244 -63
  309. simtools/simtel/{simtel_events.py → simtel_io_events.py} +26 -25
  310. simtools/simtel/simtel_io_histogram.py +661 -0
  311. simtools/simtel/simtel_io_histograms.py +569 -0
  312. simtools/simtel/simulator_array.py +145 -0
  313. simtools/simtel/{simtel_runner_camera_efficiency.py → simulator_camera_efficiency.py} +76 -52
  314. simtools/simtel/simulator_light_emission.py +473 -0
  315. simtools/simtel/simulator_ray_tracing.py +262 -0
  316. simtools/simulator.py +220 -446
  317. simtools/testing/__init__.py +0 -0
  318. simtools/testing/assertions.py +151 -0
  319. simtools/testing/configuration.py +226 -0
  320. simtools/testing/helpers.py +42 -0
  321. simtools/testing/validate_output.py +240 -0
  322. simtools/utils/general.py +340 -437
  323. simtools/utils/geometry.py +12 -12
  324. simtools/utils/names.py +258 -644
  325. simtools/utils/value_conversion.py +176 -0
  326. simtools/version.py +2 -0
  327. simtools/visualization/legend_handlers.py +135 -152
  328. simtools/visualization/plot_camera.py +379 -0
  329. simtools/visualization/visualize.py +346 -167
  330. gammasimtools-0.6.1.dist-info/METADATA +0 -180
  331. gammasimtools-0.6.1.dist-info/RECORD +0 -91
  332. gammasimtools-0.6.1.dist-info/entry_points.txt +0 -23
  333. simtools/applications/db_development_tools/add_new_parameter_to_db.py +0 -81
  334. simtools/applications/db_development_tools/add_unit_to_parameter_in_db.py +0 -59
  335. simtools/applications/db_development_tools/mark_non_optics_parameters_non_applicable.py +0 -102
  336. simtools/applications/get_parameter.py +0 -92
  337. simtools/applications/make_regular_arrays.py +0 -160
  338. simtools/applications/produce_array_config.py +0 -136
  339. simtools/applications/production.py +0 -313
  340. simtools/applications/sim_showers_for_trigger_rates.py +0 -187
  341. simtools/applications/tune_psf.py +0 -334
  342. simtools/corsika/corsika_default_config.py +0 -282
  343. simtools/corsika/corsika_runner.py +0 -450
  344. simtools/corsika_simtel/corsika_simtel_runner.py +0 -197
  345. simtools/db_handler.py +0 -1480
  346. simtools/ray_tracing.py +0 -525
  347. simtools/simtel/simtel_histograms.py +0 -414
  348. simtools/simtel/simtel_runner.py +0 -244
  349. simtools/simtel/simtel_runner_array.py +0 -293
  350. simtools/simtel/simtel_runner_ray_tracing.py +0 -277
  351. {gammasimtools-0.6.1.dist-info → gammasimtools-0.8.1.dist-info}/LICENSE +0 -0
  352. {gammasimtools-0.6.1.dist-info → gammasimtools-0.8.1.dist-info}/top_level.txt +0 -0
  353. /simtools/{corsika_simtel → db}/__init__.py +0 -0
@@ -0,0 +1,379 @@
1
+ """Plot camera pixel layout."""
2
+
3
+ import logging
4
+
5
+ import matplotlib.colors as mcolors
6
+ import matplotlib.patches as mpatches
7
+ import matplotlib.pyplot as plt
8
+ import numpy as np
9
+ from matplotlib.collections import PatchCollection
10
+
11
+ import simtools.visualization.legend_handlers as leg_h
12
+ from simtools.model.model_utils import is_two_mirror_telescope
13
+ from simtools.utils import names
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+
18
+ def plot_pixel_layout(camera, camera_in_sky_coor=False, pixels_id_to_print=50):
19
+ """
20
+ Plot the pixel layout for an observer facing the camera.
21
+
22
+ Including in the plot edge pixels, off pixels, pixel ID for the first 50 pixels,
23
+ coordinate systems, FOV, focal length and the average edge radius.
24
+
25
+ Parameters
26
+ ----------
27
+ camera : Camera
28
+ Camera object to plot.
29
+ camera_in_sky_coor : bool, optional
30
+ Flag to plot the camera in the sky coordinate system.
31
+ pixels_id_to_print : int, optional
32
+ Number of pixel IDs to print in the plot.
33
+
34
+ Returns
35
+ -------
36
+ fig : plt.Figure
37
+ Figure with the pixel layout.
38
+ """
39
+ logger.info(f"Plotting the {camera.telescope_model_name} camera")
40
+
41
+ fig, ax = plt.subplots(figsize=(8, 8))
42
+
43
+ if not is_two_mirror_telescope(camera.telescope_model_name) and not camera_in_sky_coor:
44
+ camera.pixels["y"] = [(-1) * y_val for y_val in camera.pixels["y"]]
45
+
46
+ on_pixels, edge_pixels, off_pixels = _pixel_type_lists(camera)
47
+ for i_pix, (x, y) in enumerate(zip(camera.pixels["x"], camera.pixels["y"])):
48
+ if camera.pixels["pix_id"][i_pix] < pixels_id_to_print + 1:
49
+ font_size = (
50
+ 4
51
+ if "SCT" in names.get_array_element_type_from_name(camera.telescope_model_name)
52
+ else 2
53
+ )
54
+ plt.text(
55
+ x, y, camera.pixels["pix_id"][i_pix], ha="center", va="center", fontsize=font_size
56
+ )
57
+ ax.add_collection(
58
+ PatchCollection(on_pixels, facecolor="none", edgecolor="black", linewidth=0.2)
59
+ )
60
+ ax.add_collection(
61
+ PatchCollection(
62
+ edge_pixels,
63
+ facecolor=(*mcolors.to_rgb("brown"), 0.5),
64
+ edgecolor=(*mcolors.to_rgb("black"), 1),
65
+ linewidth=0.2,
66
+ )
67
+ )
68
+ ax.add_collection(
69
+ PatchCollection(off_pixels, facecolor="black", edgecolor="black", linewidth=0.2)
70
+ )
71
+ legend_objects = [leg_h.PixelObject(), leg_h.EdgePixelObject()]
72
+ legend_labels = ["Pixel", "Edge pixel"]
73
+ legend_handler_map = {
74
+ leg_h.PixelObject: (
75
+ leg_h.HexPixelHandler()
76
+ if isinstance(on_pixels[0], mpatches.RegularPolygon)
77
+ else leg_h.SquarePixelHandler()
78
+ ),
79
+ leg_h.EdgePixelObject: (
80
+ leg_h.HexEdgePixelHandler()
81
+ if isinstance(on_pixels[0], mpatches.RegularPolygon)
82
+ else leg_h.SquareEdgePixelHandler()
83
+ ),
84
+ leg_h.OffPixelObject: (
85
+ leg_h.HexOffPixelHandler()
86
+ if isinstance(on_pixels[0], mpatches.RegularPolygon)
87
+ else leg_h.SquareOffPixelHandler()
88
+ ),
89
+ }
90
+
91
+ if len(off_pixels) > 0:
92
+ legend_objects.append(leg_h.OffPixelObject())
93
+ legend_labels.append("Disabled pixel")
94
+
95
+ plt.axis("equal")
96
+ plt.grid(True)
97
+ ax.set_axisbelow(True)
98
+ plt.axis(
99
+ [
100
+ min(camera.pixels["x"]),
101
+ max(camera.pixels["x"]),
102
+ min(camera.pixels["y"]) * 1.42,
103
+ max(camera.pixels["y"]) * 1.42,
104
+ ]
105
+ )
106
+ plt.xlabel("Horizontal scale [cm]", fontsize=18, labelpad=0)
107
+ plt.ylabel("Vertical scale [cm]", fontsize=18, labelpad=0)
108
+ ax.set_title(
109
+ f"Pixels layout in {camera.telescope_model_name:s} camera",
110
+ fontsize=15,
111
+ y=1.02,
112
+ )
113
+ plt.tick_params(axis="both", which="major", labelsize=15)
114
+
115
+ _plot_axes_def(camera, plt, camera.pixels["rotate_angle"])
116
+
117
+ description = {
118
+ False: "For an observer facing the camera",
119
+ True: "For an observer behind the camera looking through",
120
+ None: "For an observer looking from secondary to camera",
121
+ }[camera_in_sky_coor and not is_two_mirror_telescope(camera.telescope_model_name)]
122
+ ax.text(0.02, 0.02, description, transform=ax.transAxes, color="black", fontsize=12)
123
+
124
+ fov, r_edge_avg = camera.calc_fov()
125
+ ax.text(
126
+ 0.02,
127
+ 0.96,
128
+ rf"$f_{{\mathrm{{eff}}}} = {camera.focal_length:.3f}\,\mathrm{{cm}}$",
129
+ transform=ax.transAxes,
130
+ color="black",
131
+ fontsize=12,
132
+ )
133
+ ax.text(
134
+ 0.02,
135
+ 0.92,
136
+ rf"Avg. edge radius = {r_edge_avg:.3f}$\,\mathrm{{cm}}$",
137
+ transform=ax.transAxes,
138
+ color="black",
139
+ fontsize=12,
140
+ )
141
+ ax.text(
142
+ 0.02,
143
+ 0.88,
144
+ rf"FoV = {fov:.3f}$\,\mathrm{{deg}}$",
145
+ transform=ax.transAxes,
146
+ color="black",
147
+ fontsize=12,
148
+ )
149
+ plt.legend(
150
+ legend_objects,
151
+ legend_labels,
152
+ handler_map=legend_handler_map,
153
+ prop={"size": 11},
154
+ loc="upper right",
155
+ )
156
+ ax.set_aspect("equal", "datalim")
157
+ plt.tight_layout()
158
+
159
+ return fig
160
+
161
+
162
+ def _pixel_type_lists(camera):
163
+ """
164
+ Return on, off, and edge pixel lists.
165
+
166
+ Parameters
167
+ ----------
168
+ camera : Camera
169
+ Camera object.
170
+
171
+ Returns
172
+ -------
173
+ on_pixels : list
174
+ List of on pixels.
175
+ edge_pixels : list
176
+ List of edge pixels.
177
+ off_pixels : list
178
+ List of off pixels.
179
+ """
180
+ on_pixels, edge_pixels, off_pixels = [], [], []
181
+
182
+ for i_pix, (x, y) in enumerate(zip(camera.pixels["x"], camera.pixels["y"])):
183
+ shape = _pixel_shape(camera, x, y)
184
+ if camera.pixels["pix_on"][i_pix]:
185
+ neighbors = camera.get_neighbor_pixels()[i_pix]
186
+ if len(neighbors) < 6 and camera.pixels["pixel_shape"] in (1, 3):
187
+ edge_pixels.append(shape)
188
+ elif len(neighbors) < 4 and camera.pixels["pixel_shape"] == 2:
189
+ edge_pixels.append(shape)
190
+ else:
191
+ on_pixels.append(shape)
192
+ else:
193
+ off_pixels.append(shape)
194
+
195
+ return on_pixels, edge_pixels, off_pixels
196
+
197
+
198
+ def _pixel_shape(camera, x, y):
199
+ """
200
+ Return the shape of the pixel.
201
+
202
+ Parameters
203
+ ----------
204
+ camera : Camera
205
+ Camera object.
206
+ x : float
207
+ x-coordinate of the pixel.
208
+ y : float
209
+ y-coordinate of the pixel.
210
+
211
+ Returns
212
+ -------
213
+ shape : matplotlib.patches.Patch
214
+ Shape of the pixel.
215
+ """
216
+ if camera.pixels["pixel_shape"] in (1, 3):
217
+ return mpatches.RegularPolygon(
218
+ (x, y),
219
+ numVertices=6,
220
+ radius=camera.pixels["pixel_diameter"] / np.sqrt(3),
221
+ orientation=np.deg2rad(camera.pixels["orientation"]),
222
+ )
223
+ if camera.pixels["pixel_shape"] == 2:
224
+ return mpatches.Rectangle(
225
+ (
226
+ x - camera.pixels["pixel_diameter"] / 2.0,
227
+ y - camera.pixels["pixel_diameter"] / 2.0,
228
+ ),
229
+ width=camera.pixels["pixel_diameter"],
230
+ height=camera.pixels["pixel_diameter"],
231
+ )
232
+ return None
233
+
234
+
235
+ def _plot_axes_def(camera, plot, rotate_angle):
236
+ """
237
+ Plot three axes definitions on the pyplot.plt instance provided.
238
+
239
+ The three axes are Alt/Az, the camera coordinate system and the original coordinate
240
+ system the pixel list was provided.
241
+
242
+ Parameters
243
+ ----------
244
+ camera : Camera
245
+ Camera object.
246
+ plot: pyplot.plt instance
247
+ A pyplot.plt instance where to add the axes definitions.
248
+ rotate_angle: float
249
+ The rotation angle applied
250
+ """
251
+ invert_yaxis = False
252
+ x_left = 0.7 # Position of the left most axis
253
+ if not is_two_mirror_telescope(camera.telescope_model_name):
254
+ invert_yaxis = True
255
+ x_left = 0.8
256
+
257
+ x_title = r"$x_{\!pix}$"
258
+ y_title = r"$y_{\!pix}$"
259
+ x_pos, y_pos = (x_left, 0.12)
260
+ # The rotation of LST (above 100 degrees) raises the axes.
261
+ # In this case, lower the starting point.
262
+ if np.rad2deg(rotate_angle) > 100:
263
+ y_pos -= 0.09
264
+ x_pos -= 0.05
265
+ kwargs = {
266
+ "x_title": x_title,
267
+ "y_title": y_title,
268
+ "x_pos": x_pos,
269
+ "y_pos": y_pos,
270
+ "rotate_angle": rotate_angle - (1 / 2.0) * np.pi,
271
+ "fc": "black",
272
+ "ec": "black",
273
+ "invert_yaxis": invert_yaxis,
274
+ }
275
+ _plot_one_axis_def(plot, **kwargs)
276
+
277
+ x_title = r"$x_{\!cam}$"
278
+ y_title = r"$y_{\!cam}$"
279
+ x_pos, y_pos = (x_left + 0.15, 0.12)
280
+ kwargs = {
281
+ "x_title": x_title,
282
+ "y_title": y_title,
283
+ "x_pos": x_pos,
284
+ "y_pos": y_pos,
285
+ "rotate_angle": (3 / 2.0) * np.pi,
286
+ "fc": "blue",
287
+ "ec": "blue",
288
+ "invert_yaxis": invert_yaxis,
289
+ }
290
+ _plot_one_axis_def(plot, **kwargs)
291
+
292
+ x_title = "Alt"
293
+ y_title = "Az"
294
+ x_pos, y_pos = (x_left + 0.15, 0.25)
295
+ kwargs = {
296
+ "x_title": x_title,
297
+ "y_title": y_title,
298
+ "x_pos": x_pos,
299
+ "y_pos": y_pos,
300
+ "rotate_angle": (3 / 2.0) * np.pi,
301
+ "fc": "red",
302
+ "ec": "red",
303
+ "invert_yaxis": invert_yaxis,
304
+ }
305
+ _plot_one_axis_def(plot, **kwargs)
306
+
307
+
308
+ def _plot_one_axis_def(plot, **kwargs):
309
+ """
310
+ Plot an axis on the pyplot.plt instance provided.
311
+
312
+ Parameters
313
+ ----------
314
+ plot: pyplot.plt instance
315
+ A pyplot.plt instance where to add the axes definitions.
316
+ **kwargs: dict
317
+ x_title: str
318
+ x-axis title
319
+ y_title: str
320
+ y-axis title,
321
+ x_pos: float
322
+ x position of the axis to draw
323
+ y_pos: float
324
+ y position of the axis to draw
325
+ rotate_angle: float
326
+ rotation angle of the axis in radians
327
+ fc: str
328
+ face colour of the axis
329
+ ec: str
330
+ edge colour of the axis
331
+ invert_yaxis: bool
332
+ Flag to invert the y-axis (for dual mirror telescopes).
333
+ """
334
+ x_title = kwargs["x_title"]
335
+ y_title = kwargs["y_title"]
336
+ x_pos, y_pos = (kwargs["x_pos"], kwargs["y_pos"])
337
+
338
+ r = 0.1 # size of arrow
339
+ sign = 1.0
340
+ if kwargs["invert_yaxis"]:
341
+ sign *= -1.0
342
+ x_text1 = x_pos + sign * r * np.cos(kwargs["rotate_angle"])
343
+ y_text1 = y_pos + r * np.sin(0 + kwargs["rotate_angle"])
344
+ x_text2 = x_pos + sign * r * np.cos(np.pi / 2.0 + kwargs["rotate_angle"])
345
+ y_text2 = y_pos + r * np.sin(np.pi / 2.0 + kwargs["rotate_angle"])
346
+
347
+ plot.gca().annotate(
348
+ x_title,
349
+ xy=(x_pos, y_pos),
350
+ xytext=(x_text1, y_text1),
351
+ xycoords="axes fraction",
352
+ ha="center",
353
+ va="center",
354
+ size="xx-large",
355
+ arrowprops={
356
+ "arrowstyle": "<|-",
357
+ "shrinkA": 0,
358
+ "shrinkB": 0,
359
+ "fc": kwargs["fc"],
360
+ "ec": kwargs["ec"],
361
+ },
362
+ )
363
+
364
+ plot.gca().annotate(
365
+ y_title,
366
+ xy=(x_pos, y_pos),
367
+ xytext=(x_text2, y_text2),
368
+ xycoords="axes fraction",
369
+ ha="center",
370
+ va="center",
371
+ size="xx-large",
372
+ arrowprops={
373
+ "arrowstyle": "<|-",
374
+ "shrinkA": 0,
375
+ "shrinkB": 0,
376
+ "fc": kwargs["fc"],
377
+ "ec": kwargs["ec"],
378
+ },
379
+ )