gammasimtools 0.19.0__py3-none-any.whl → 0.21.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 (59) hide show
  1. {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/METADATA +1 -3
  2. {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/RECORD +54 -51
  3. {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/entry_points.txt +3 -3
  4. simtools/_version.py +2 -2
  5. simtools/applications/calculate_incident_angles.py +182 -0
  6. simtools/applications/db_add_simulation_model_from_repository_to_db.py +17 -14
  7. simtools/applications/db_add_value_from_json_to_db.py +6 -9
  8. simtools/applications/db_generate_compound_indexes.py +7 -3
  9. simtools/applications/db_get_file_from_db.py +11 -23
  10. simtools/applications/derive_psf_parameters.py +58 -39
  11. simtools/applications/derive_trigger_rates.py +91 -0
  12. simtools/applications/generate_corsika_histograms.py +7 -184
  13. simtools/applications/maintain_simulation_model_add_production.py +105 -0
  14. simtools/applications/plot_simtel_events.py +5 -189
  15. simtools/applications/print_version.py +8 -7
  16. simtools/applications/validate_file_using_schema.py +7 -4
  17. simtools/configuration/commandline_parser.py +17 -11
  18. simtools/corsika/corsika_histograms.py +81 -0
  19. simtools/data_model/validate_data.py +8 -3
  20. simtools/db/db_handler.py +122 -31
  21. simtools/db/db_model_upload.py +51 -30
  22. simtools/dependencies.py +10 -5
  23. simtools/layout/array_layout_utils.py +37 -5
  24. simtools/model/array_model.py +18 -1
  25. simtools/model/model_repository.py +118 -63
  26. simtools/model/site_model.py +25 -0
  27. simtools/production_configuration/derive_corsika_limits.py +9 -34
  28. simtools/ray_tracing/incident_angles.py +706 -0
  29. simtools/ray_tracing/psf_parameter_optimisation.py +999 -565
  30. simtools/schemas/model_parameter_and_data_schema.metaschema.yml +2 -2
  31. simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml +1 -1
  32. simtools/schemas/model_parameters/nsb_spectrum.schema.yml +22 -29
  33. simtools/schemas/model_parameters/stars.schema.yml +1 -1
  34. simtools/schemas/production_tables.schema.yml +5 -0
  35. simtools/simtel/simtel_config_writer.py +18 -20
  36. simtools/simtel/simtel_io_event_histograms.py +253 -516
  37. simtools/simtel/simtel_io_event_reader.py +51 -2
  38. simtools/simtel/simtel_io_event_writer.py +31 -11
  39. simtools/simtel/simtel_io_metadata.py +1 -1
  40. simtools/simtel/simtel_table_reader.py +3 -3
  41. simtools/simulator.py +1 -4
  42. simtools/telescope_trigger_rates.py +119 -0
  43. simtools/testing/log_inspector.py +13 -11
  44. simtools/utils/geometry.py +20 -0
  45. simtools/version.py +89 -0
  46. simtools/{corsika/corsika_histograms_visualize.py → visualization/plot_corsika_histograms.py} +109 -0
  47. simtools/visualization/plot_incident_angles.py +431 -0
  48. simtools/visualization/plot_psf.py +673 -0
  49. simtools/visualization/plot_simtel_event_histograms.py +376 -0
  50. simtools/visualization/{simtel_event_plots.py → plot_simtel_events.py} +284 -87
  51. simtools/visualization/visualize.py +1 -3
  52. simtools/applications/calculate_trigger_rate.py +0 -187
  53. simtools/applications/generate_sim_telarray_histograms.py +0 -196
  54. simtools/applications/maintain_simulation_model_add_production_table.py +0 -71
  55. simtools/simtel/simtel_io_histogram.py +0 -623
  56. simtools/simtel/simtel_io_histograms.py +0 -556
  57. {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/WHEEL +0 -0
  58. {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/licenses/LICENSE +0 -0
  59. {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gammasimtools
3
- Version: 0.19.0
3
+ Version: 0.21.0
4
4
  Summary: Tools for the Simulation System of the CTA Observatory
5
5
  Author-email: simtools developers <simtools-developer@desy.de>
6
6
  License-Expression: BSD-3-Clause
@@ -95,8 +95,6 @@ Please cite this software if it is used for a publication, see the [Zenodo recor
95
95
  [![CI-integrationtest](https://github.com/gammasim/simtools/actions/workflows/CI-integrationtests.yml/badge.svg)](https://github.com/gammasim/simtools/actions/workflows/CI-integrationtests.yml)
96
96
  [![CI-docs](https://github.com/gammasim/simtools/actions/workflows/CI-docs.yml/badge.svg)](https://github.com/gammasim/simtools/actions/workflows/CI-docs.yml)
97
97
 
98
- -[![Quality](https://app.codacy.com/project/badge/Grade/a3f19df7454844059341edd0769e02a7)](https://app.codacy.com/gh/gammasim/simtools/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
99
- [![Coverage](https://codecov.io/gh/gammasim/simtools/graph/badge.svg?token=AYAIRPARCH)](https://codecov.io/gh/gammasim/simtools)
100
98
  [![Coverage](https://sonar-ctao.zeuthen.desy.de/api/project_badges/measure?project=gammasim_simtools_0d23837b-8b2d-4e54-9a98-2f1bde681f14&metric=coverage&token=sqb_5d1fde56fa060247eee7d5e53fa5ac0a4aabe483)](https://sonar-ctao.zeuthen.desy.de/dashboard?id=gammasim_simtools_0d23837b-8b2d-4e54-9a98-2f1bde681f14)
101
99
  [![Quality Gate Status](https://sonar-ctao.zeuthen.desy.de/api/project_badges/measure?project=gammasim_simtools_0d23837b-8b2d-4e54-9a98-2f1bde681f14&metric=alert_status&token=sqb_5d1fde56fa060247eee7d5e53fa5ac0a4aabe483)](https://sonar-ctao.zeuthen.desy.de/dashboard?id=gammasim_simtools_0d23837b-8b2d-4e54-9a98-2f1bde681f14)
102
100
 
@@ -1,45 +1,46 @@
1
- gammasimtools-0.19.0.dist-info/licenses/LICENSE,sha256=a2q6KVo33OrRL_7ZSk7BYOT8KkUNV3WAMZW8CHEDkDU,1548
1
+ gammasimtools-0.21.0.dist-info/licenses/LICENSE,sha256=a2q6KVo33OrRL_7ZSk7BYOT8KkUNV3WAMZW8CHEDkDU,1548
2
2
  simtools/__init__.py,sha256=yvx0i5ygbllmMtF2Tzy7pohvhQNH_dBdj0Bt8bKFYpc,231
3
- simtools/_version.py,sha256=4qZmq76p4A8zgTbsz2W10S-HRpsdBOEWdWpNjxJdKRM,706
3
+ simtools/_version.py,sha256=1jNZfFOI753oBgzdezhn3bNQqGrO2IvFnr4lHXE6EpI,706
4
4
  simtools/constants.py,sha256=3N5bc8MlMWRzcg8EeSJweoioEo_uhStMxAzdb85Apvw,966
5
- simtools/dependencies.py,sha256=zjT-_MR1s678QjCQBHlkoEi75TsMBHjd01lWG3ZBZ0U,6268
6
- simtools/simulator.py,sha256=O586ehWLBt4XMcYMpYYRDjzO0zoGfzDQy_32vIBPcTU,28108
7
- simtools/version.py,sha256=Fri_aFaUOmV8CIygd3DknAmJaFZ05OAeLd1AgZOcgdQ,688
8
- simtools/applications/calculate_trigger_rate.py,sha256=q8cwbbggizy-thDK2mGFyrOXazJhozu5RnUdF9vk1FM,6056
5
+ simtools/dependencies.py,sha256=bDMw1Nyjya0-TnWp_K6LyV6JbO_aJDARa6KSGXhLcqc,6572
6
+ simtools/simulator.py,sha256=B2_hF05DiCCnmpfK5eYbWDqdUK-4XzgeE7CtrXjMStc,27991
7
+ simtools/telescope_trigger_rates.py,sha256=_2NUG8UnhfpMGhaEDgHUOOdnweCUcRTrTOkGGYInHqo,3984
8
+ simtools/version.py,sha256=NsdU6YDeOD58xT4BcJ6OYq2CSu_qV3ztZAnnS6o9pKc,3223
9
+ simtools/applications/calculate_incident_angles.py,sha256=cWcNf3n6S5TmG7wkC3V52HEU7mxLnUw3UD_3Wrcbwgw,5968
9
10
  simtools/applications/convert_all_model_parameters_from_simtel.py,sha256=OSA01q4Qpjv1pyR8f53gBz6Jo-k-bM0L3HKw-GDvJ54,12177
10
11
  simtools/applications/convert_geo_coordinates_of_array_elements.py,sha256=-P0tbF5T3P23_tYTp18HAmlYH7a7Gx-TTzxESf5Qfvk,5967
11
12
  simtools/applications/convert_model_parameter_from_simtel.py,sha256=sQL4m3VM2k1MGn3gfC7vWZx6p9VcpauH1GkOk9PMkn0,3856
12
13
  simtools/applications/db_add_file_to_db.py,sha256=Jvesc9NL4OSGUMGKsZs0yyX2HyQfCwGJemLvMf8JQGY,5555
13
- simtools/applications/db_add_simulation_model_from_repository_to_db.py,sha256=9o5gei7a2ObHik-aASGSMmIWHripDLzEj2ZRfs0_-To,3848
14
- simtools/applications/db_add_value_from_json_to_db.py,sha256=SIVzZAdlQh8yfxl9TJ0lLS5i4MyW5ctY-ZCP3Ufgi-M,3741
15
- simtools/applications/db_generate_compound_indexes.py,sha256=A-H-m6EUgeCXeUDyGUlCT515J-m2cPbgutvgz8B8utk,1800
14
+ simtools/applications/db_add_simulation_model_from_repository_to_db.py,sha256=02sZBCczjbBZoWb4AjKTcfq3aDn9oPjSF8IduJsqJ6o,4311
15
+ simtools/applications/db_add_value_from_json_to_db.py,sha256=IOdbgrIUa3xdrXGcblFXDoIIGnXpWkAyu-4K7n17VrQ,3585
16
+ simtools/applications/db_generate_compound_indexes.py,sha256=7yAxaNCtSgeaArbGMKzNRXsZzB9DHx5FtMPc7FzwGMc,1978
16
17
  simtools/applications/db_get_array_layouts_from_db.py,sha256=2St5ZfcohXSHnDYiP326D4fqlbfsgREsC4lGJ5cDUPg,5122
17
- simtools/applications/db_get_file_from_db.py,sha256=xa1TVVgth-R8Toh1W2ApFkASQTYl7nmO0w-NPfbEkQE,2738
18
+ simtools/applications/db_get_file_from_db.py,sha256=3aIRyZaHIDYwLGCMFdQFtsp84D5r2MlIC20QPOZ1rck,2394
18
19
  simtools/applications/db_get_parameter_from_db.py,sha256=L0VehfQir3lrLDPa_ezEuU7uo8gmBdfMDqOax39Nqn0,5131
19
20
  simtools/applications/db_inspect_databases.py,sha256=Po78qE7qmf97u93fSJpdZTWpDEEBFzm1CHxFi0ZL-uE,1871
20
21
  simtools/applications/derive_ctao_array_layouts.py,sha256=n6bCW2hRXDg1GxynwouRJKQlBYeG2GCehx61tNvRLMA,4081
21
22
  simtools/applications/derive_mirror_rnda.py,sha256=yYCfdN-KNr_R_mmiVrn3L3QJRinvO5z3o0HIRLzPO3w,8955
22
23
  simtools/applications/derive_photon_electron_spectrum.py,sha256=8Dpz-XTlCmOvoKUFtq78B1of62k8ygyk5_r-ZxZYauo,3968
23
- simtools/applications/derive_psf_parameters.py,sha256=TrP6AqiKc6Te3N1lfl63eSIsL_tcEKZZSBl1aN9NYTo,6900
24
+ simtools/applications/derive_psf_parameters.py,sha256=Uw6KkC2CjvC0cfONqI9VI7R5-jULC1gYBjpkl_zYbt8,7783
25
+ simtools/applications/derive_trigger_rates.py,sha256=3JqdnjNJJNyWF6HyzUSQfldrbvXGRoNUpCqTET3qtEw,2460
24
26
  simtools/applications/docs_produce_array_element_report.py,sha256=N_vnKRV3r32PF_99QeD1-6BfEBOaVzpedC5pvHsDwDU,2488
25
27
  simtools/applications/docs_produce_calibration_reports.py,sha256=lMddZEZa_BXYifRCXS_XMceP9lLjeDDVGtlJZBJhn4o,1382
26
28
  simtools/applications/docs_produce_model_parameter_reports.py,sha256=tSZJJ7CDha-qU3mfqRXLjiOWgdvd1lPjZYJSM-TEAl0,1973
27
29
  simtools/applications/docs_produce_simulation_configuration_report.py,sha256=EsexpianRJ0ypJJrAviIlUzSLQXHcJglHbMIzmoCcII,1443
28
30
  simtools/applications/generate_array_config.py,sha256=bzuQsEp2wUBLGxVkF_1bpw0iFco--47QhQPByAO3hXA,2224
29
- simtools/applications/generate_corsika_histograms.py,sha256=XU1kTlWADXU4-rqTE2PLqtpQ0b7WbTMid13Vqn1olMk,18243
31
+ simtools/applications/generate_corsika_histograms.py,sha256=tJ3vC9wlxN1uj46qVYh8AExZxsSnekcO42E81_rtDlc,11426
30
32
  simtools/applications/generate_default_metadata.py,sha256=t-4qWX1EyCoUaUs4Pg_ec_MiT9bEFH5jN7KHWzZ8fP8,2370
31
33
  simtools/applications/generate_regular_arrays.py,sha256=JZI4KfhP67K6Qvg2yAsQZgKNnRiQAfdcpDHfgP16Wkk,3846
32
- simtools/applications/generate_sim_telarray_histograms.py,sha256=OLP1NE1SLhescr4OmmVdSi2fQ1Xnm6LdzIzCWXGFwV0,6671
33
34
  simtools/applications/generate_simtel_event_data.py,sha256=qd25UVoR0qR2B1YNf9UYceYkJR0K9dAWQRqWrdkPmUs,9072
34
- simtools/applications/maintain_simulation_model_add_production_table.py,sha256=2Kp5K3ukMTebReQzO4HTZa59kkJXZ_eeOS7Dy5zqZA0,2048
35
+ simtools/applications/maintain_simulation_model_add_production.py,sha256=jhTdbLugZjMiBYrjIev511Q77y0w2INnnGFRCtNFUFc,3578
35
36
  simtools/applications/maintain_simulation_model_compare_productions.py,sha256=ld3t1AOBYYFDP21XY4LaANsz20XsgT5qe5oAibCLnRo,3172
36
37
  simtools/applications/maintain_simulation_model_verify_production_tables.py,sha256=fFa6QdA7uzRmxCvtdEDxDfGIs88UR7z-NRENHpZKxsk,1758
37
38
  simtools/applications/merge_tables.py,sha256=HtV8imZx4fOPnZnM6Rqm4Eestx3w-ZcmQkEVXNhM0Y4,2730
38
39
  simtools/applications/plot_array_layout.py,sha256=WvgaSdYrSfnNyi7Q1-xGyv7AsT9AiZUJRtHnIRVh5J4,9887
39
- simtools/applications/plot_simtel_events.py,sha256=cP3n5rRk_pU5l7rPF1JzxPlQ371TbLcJC_ZTf81frP0,13252
40
+ simtools/applications/plot_simtel_events.py,sha256=urOcRtRsQXM7s3CeKEe1dxYKiGu_T6EKKoLcay4lZc8,6817
40
41
  simtools/applications/plot_tabular_data.py,sha256=qHDU75GgmXTFoxIbRlewLpbnsYMjNgMdVnc8bUqAszo,3135
41
42
  simtools/applications/plot_tabular_data_for_model_parameter.py,sha256=4N1QmS60OR02Vm9UJRqMr7IURIHi3C5dU1Fx0hzasi4,3320
42
- simtools/applications/print_version.py,sha256=QfyraIi_32ygaKcXFiiyI2OYPy745quEanE8ePDHGGU,2336
43
+ simtools/applications/print_version.py,sha256=8eBAhkLZFRbRXcHvVgLpA4o12uHCLvAWRvm-goUrVyI,2449
43
44
  simtools/applications/production_derive_corsika_limits.py,sha256=ENcN4VyfdgPgnbJDcET8k5m0j7_BiVU7-yf-1WwoE10,5834
44
45
  simtools/applications/production_derive_statistics.py,sha256=v9FSp25U0dIQyWHdIccpXO7C8i8G_EfNo27bEdxH9ws,5114
45
46
  simtools/applications/production_generate_grid.py,sha256=Qz4iEaYszJ9I-f9oHtH5zyt4ZaNSqElLDoi5ybrD64o,6761
@@ -56,16 +57,15 @@ simtools/applications/submit_model_parameter_from_external.py,sha256=moaiYtqhMmb
56
57
  simtools/applications/validate_camera_efficiency.py,sha256=xFnGBZ7uF4x4w3lnep7MZiBVhdumy_B1vYQngMKyjT0,4920
57
58
  simtools/applications/validate_camera_fov.py,sha256=gx5EX58ZlHdduO8VNaUqUwRmubg6LoeYqpakVOSzXos,4573
58
59
  simtools/applications/validate_cumulative_psf.py,sha256=3ddMQVODelAgG6uUueODbPqmRc2okhdMnWw7A_UJkPw,6404
59
- simtools/applications/validate_file_using_schema.py,sha256=3naNJFCun36S82xh8UK6YuTb5tks7WGb-apyWu1nYyM,6951
60
+ simtools/applications/validate_file_using_schema.py,sha256=zFWHZEeERtlryb6D3bKnxCVVr8jvi9vN__m8RK97YpM,7093
60
61
  simtools/applications/validate_optics.py,sha256=OCeqjcMIAwRcrc-4rm5jAcPZSHrSXJT6q4PAJYZO540,6377
61
62
  simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py,sha256=skCdGFyZyWfleg2GvlB3FVM7w8TK0rgrdSe_xsAV_qw,5399
62
63
  simtools/camera/camera_efficiency.py,sha256=9KBVEuK32X2YfBMJCP6g-A1DplchPWKGKtw9-JIKB4U,19025
63
64
  simtools/camera/single_photon_electron_spectrum.py,sha256=eQTpmy8NH8v5kkrlFjYmlIQhqcDwXHy44q-59PtXZEI,11572
64
- simtools/configuration/commandline_parser.py,sha256=7Xo8qjSsaZHhxw0lk-mQ6TpVZ3vFuOl09-DiR86JdYA,27177
65
+ simtools/configuration/commandline_parser.py,sha256=qVcBDG4jxZaK7i4bKb0eejhoGkLhR7KN1MbGzr8q6WQ,27344
65
66
  simtools/configuration/configurator.py,sha256=fVze9No1nebT2xTg7hPHU1Y9tkI7kwuMM9ew6i_9SZg,15008
66
67
  simtools/corsika/corsika_config.py,sha256=hw2myjSEkYgw5cbjm00tLNdlKQx52YDuHnQjPYsR2E4,29067
67
- simtools/corsika/corsika_histograms.py,sha256=lA0BiscQwhPSQSLYw-aICTtjKVCbyMjfXTCcfrXemGc,67691
68
- simtools/corsika/corsika_histograms_visualize.py,sha256=HjGLcff-ILXh8VYQKWycbHocVBVQp3TTOPmxAky0guI,18169
68
+ simtools/corsika/corsika_histograms.py,sha256=7mQdMyk6UFGTslxgain-fJAijPmDmL59Ra5ecyAUc3k,70536
69
69
  simtools/corsika/primary_particle.py,sha256=WK0UKYtdPSefes286ZGXsoGV9r6JqH19Tk9myza_plU,6613
70
70
  simtools/data_model/data_reader.py,sha256=M_TmHRe8AyA291twrmHGNRu11fMibDhWWDCvVptDoRM,4111
71
71
  simtools/data_model/format_checkers.py,sha256=bXF9dItkpZCGXAHdCH7vhgxEsIhXLLVFLOha-hKRspY,1949
@@ -73,9 +73,9 @@ simtools/data_model/metadata_collector.py,sha256=s1aa8iaPyc8rk2KmRBdIjbMNTcLxCT1
73
73
  simtools/data_model/metadata_model.py,sha256=wH52gC6MdwFw9A6UswZLsRlss7vbXDyxybBaI_UMt18,4642
74
74
  simtools/data_model/model_data_writer.py,sha256=w2lbFLBPS6ViPF0xDiXXUlrfqZYYR7nJwmmB6PLhxfI,14648
75
75
  simtools/data_model/schema.py,sha256=wrPKmY073wGfKHp7NAO5FLjjS2Z9N0oGMpRUwK-mRWA,8680
76
- simtools/data_model/validate_data.py,sha256=kwIhjirHA2u7_P8zDwTfwRMaQLp5nUIvgQrbu_A4Bpo,30877
77
- simtools/db/db_handler.py,sha256=Ru8vAZXFuZ1ChO1e-RPg8QIki22FFJK4gRiAS4boq3M,34221
78
- simtools/db/db_model_upload.py,sha256=7xXoA43ICs4Oo1YN2_SrY7Dbkcfo6cXdMed-cEzBi4Q,4859
76
+ simtools/data_model/validate_data.py,sha256=laKI4LCIkKhYkrQgPUHFoIwVCx-moBtuosgVMbOJU98,31082
77
+ simtools/db/db_handler.py,sha256=BBwgvn9iwQNRaNLcXT8YAUZQsCD-33Mti_ANiiPR5_g,37614
78
+ simtools/db/db_model_upload.py,sha256=XjIsehucRUdGdmd9Vdp52l5lT2pStskLW8dPmuffDaI,5568
79
79
  simtools/io/ascii_handler.py,sha256=S2fP2x6vE4nEF5g0NRARIWKs8vKU3c9SW8XtcdrwhQU,7826
80
80
  simtools/io/hdf5_handler.py,sha256=CqP76MCfxvWH8AOnkIbQM5wBHIvSDEbdZ03wn7t6XgI,4232
81
81
  simtools/io/io_handler.py,sha256=k-A91MYdOD64XRdiyEJtgu7fFtJYyfe0xjmx63u2daM,5081
@@ -84,29 +84,30 @@ simtools/io/table_handler.py,sha256=YJqbam9sBjKAhHDyzFd0X0duWT1jnYPyk0La9Gp2jeo,
84
84
  simtools/job_execution/htcondor_script_generator.py,sha256=7Wm1iR8PK0gbutbZATyBmhqQu-MZQI0HaJa7dJJVMHA,4248
85
85
  simtools/job_execution/job_manager.py,sha256=fuEJwzCp3U-1oRp0suq3VQY-afKVKMOqObpvxHETXlM,3424
86
86
  simtools/layout/array_layout.py,sha256=_wOQ0fefbaleLPQcIyhH8rlYqzBokVi0VeTyi98XOLo,25186
87
- simtools/layout/array_layout_utils.py,sha256=1RNl_ZrkQjpqCaDUyhKb-qIaQYLu3uFIo-kcyoXA92A,11677
87
+ simtools/layout/array_layout_utils.py,sha256=y1JAFR19IwOqrgW0k-tpi8BlpbI4Wcz9uO93sCs7Jbw,12737
88
88
  simtools/layout/geo_coordinates.py,sha256=9kKnXFi9vrfYKG_9elzFuzzssGFEUzxMubaclITkW_g,5944
89
89
  simtools/layout/telescope_position.py,sha256=m34taJ7LML_KBW75i3EGMK2vEHK9tqFltxa9Ojrspi0,20162
90
- simtools/model/array_model.py,sha256=ty88I-__QP3O3VhwXznvJvCkjdP536eN3LrMIS2JhdQ,16552
90
+ simtools/model/array_model.py,sha256=Sg9gw5HgS4bIyN5iwvaT0MaSGD7Vr1G3Hm3NTZGOsI4,17043
91
91
  simtools/model/calibration_model.py,sha256=PqZnca86rNiKu3pExJc3fdiDwbHcB7Q9yl2pyA1orGU,1442
92
92
  simtools/model/camera.py,sha256=Gj9yWfAfM4GrrX5q6ZGSQy80WsOUqZaTnP7DoCYfOJ0,21403
93
93
  simtools/model/flasher_model.py,sha256=SXSWJu9QWjMdrEHefhIXz_NuPsODTnb5HfY4Nhc5_oA,3948
94
94
  simtools/model/mirrors.py,sha256=uGCAT68WpnESv9IAgg8Xae9Z2-XgxMBL_Phnv6Ro0XQ,9151
95
95
  simtools/model/model_parameter.py,sha256=ZquhZCTonqbuC5wRJejUzvuAFWd7EHRua8hWSVxRN0g,19241
96
- simtools/model/model_repository.py,sha256=zli7zeZU-zdKX3nuAcK3D7RsBXlu607fvErk0NVPoQU,11124
96
+ simtools/model/model_repository.py,sha256=MGyMGA5we9B6KUat5i5XXO_ci8ggd6sfpmalFw70Ijo,12711
97
97
  simtools/model/model_utils.py,sha256=OFMKgrHLzStAE7k5JRuj6iAI4Z1_ND13lXWzUTGfZ_M,2485
98
- simtools/model/site_model.py,sha256=eBkF-bMdS3AtARbDbDC8LqzNWqSDpROFhygWdH6uv4w,5263
98
+ simtools/model/site_model.py,sha256=0oHrVWq9YPtuQKO6gg9LdPirEfqqaFtBT0dAxUlLR_8,6181
99
99
  simtools/model/telescope_model.py,sha256=bsHctXxwo1k5Xno9wVNAVhFyDPRFk4CNoCNpHYkB-jE,13504
100
100
  simtools/production_configuration/calculate_statistical_uncertainties_grid_point.py,sha256=r3g2dNMCZdl6K3fvg0mcPV7C2AIc70N2bSdyYb5hY4I,15550
101
- simtools/production_configuration/derive_corsika_limits.py,sha256=CgsCGQB7W0cJJrvxUresbUMfy0D_jJoukYI3uMjyRJE,11242
101
+ simtools/production_configuration/derive_corsika_limits.py,sha256=0psxcfBPut5iDbhazF50dK_GpDQZz51h4Ap2MUW0khQ,10562
102
102
  simtools/production_configuration/derive_production_statistics.py,sha256=q7uW044MVcbGzwzVYpXcSvlRD8qcif8FyYP7mqtuNWs,5761
103
103
  simtools/production_configuration/derive_production_statistics_handler.py,sha256=WPo29fUMjHFgQKu4AL01XrzIx4d846ddezdtLpH4USU,6187
104
104
  simtools/production_configuration/generate_production_grid.py,sha256=DlR2hqyG0jU1yU21QU38ucAdmHZWPa7snFW26vmGEuI,13323
105
105
  simtools/production_configuration/interpolation_handler.py,sha256=97zk7XR8yNMs4dEqcrfjpma6SgUDlqaXcsfAIw1rhuY,14131
106
106
  simtools/production_configuration/merge_corsika_limits.py,sha256=t9JDvrpkP33ISCRCPVLE8GunjHDF_RYlRPqXI469l0w,20838
107
+ simtools/ray_tracing/incident_angles.py,sha256=uSMa1bGeqt5bhjUY3AT9WGJfV5YoudUC6ZlnCwVGLo8,25913
107
108
  simtools/ray_tracing/mirror_panel_psf.py,sha256=xE_io65fGjv5GnH035xC84iSqC3Ltz1sxnybSqD6T20,11238
108
109
  simtools/ray_tracing/psf_analysis.py,sha256=kw431lbLNd8nm7FoOkCZwSw1iXvNIit-WKX9n-GMLJw,18164
109
- simtools/ray_tracing/psf_parameter_optimisation.py,sha256=no0dYe-dlk0XceSlfd9jpslB1kS8Ulo6ZsWGlHm8oek,26214
110
+ simtools/ray_tracing/psf_parameter_optimisation.py,sha256=d0XvU3EDF_mArjXSHvFDyMIJMKkhRzglF41URwXvsuQ,42923
110
111
  simtools/ray_tracing/ray_tracing.py,sha256=GTORirYWQz4NNJi8aB83Nm0MwdC9WVChYPAtfeYRBrw,22046
111
112
  simtools/reporting/docs_auto_report_generator.py,sha256=i4GGtpKKN0cVtGPEK4m3tpOrD8-PP5uot4kRHUujt8U,9236
112
113
  simtools/reporting/docs_read_parameters.py,sha256=4_CpJJJ92_CO9o8fV3-_OiFo4wbVMMipbD5DA8SO7bM,36349
@@ -120,10 +121,10 @@ simtools/runners/simtools_runner.py,sha256=jFlDZ_t6KKprzVZrPRQtmd0kRMIwSiVNMx3B8
120
121
  simtools/schemas/application_workflow.metaschema.yml,sha256=4AkbPKW4pbeAn5ewhe0I0jWZPw2USugkuXAF4QpyREk,5650
121
122
  simtools/schemas/metadata.metaschema.yml,sha256=bgsIFwBlaC9HGNN8hlMSy2vMwwnG2DEfprXZuxfU2Kk,33556
122
123
  simtools/schemas/model_parameter.metaschema.yml,sha256=tXKB0H_bn-UiHALtN0OppA-xKp5OVUICjXG8tYI7VEw,6595
123
- simtools/schemas/model_parameter_and_data_schema.metaschema.yml,sha256=o_Q83CGGg0pbVax5qtF7lw6RjMQ8PYJrGji1KKsFaoM,10514
124
+ simtools/schemas/model_parameter_and_data_schema.metaschema.yml,sha256=ugCjy7K-0HQ8arxqpuCJlz4Sn9vaPdKRLfmOvZiGFwE,10528
124
125
  simtools/schemas/plot_configuration.metaschema.yml,sha256=ALz6d3btyr0ao50nJ0tShMlMgR4SKP6MRC_qxiPjwmc,4408
125
126
  simtools/schemas/production_configuration_metrics.schema.yml,sha256=9IOmDjtAyH-8Ti5hoxKKjZ0kl7E7iKBBDvTL8SSv_To,1935
126
- simtools/schemas/production_tables.schema.yml,sha256=6fKfuOZT2XgG8dCOTPieV7xre2IDjRN0KcEKIYppvxI,1315
127
+ simtools/schemas/production_tables.schema.yml,sha256=lz266H7nogsIgGBpHYGrZDx4KWm26lbdoreH9b32Sh0,1478
127
128
  simtools/schemas/input/MST_mirror_2f_measurements.schema.yml,sha256=2kFAIxgR36XIrTNvfvPB16OdnpkNdkXeCGnI01Tbc3Y,1124
128
129
  simtools/schemas/input/single_pe_spectrum.schema.yml,sha256=hLD8JgChI1eV2yl7E_e_uvQebsRuG18ag_4aEiLjToM,1244
129
130
  simtools/schemas/model_parameters/adjust_gain.schema.yml,sha256=TwLjYM-xBY41qbVvMe-s_qcacvcI_YTvLJ5lSNdEh3k,892
@@ -285,11 +286,11 @@ simtools/schemas/model_parameters/nsb_autoscale_airmass.schema.yml,sha256=QJTEXS
285
286
  simtools/schemas/model_parameters/nsb_gain_drop_scale.schema.yml,sha256=cvNCJicoVrOehNARlMA5_3f8VUf-suniPlVbTwAvAvI,1110
286
287
  simtools/schemas/model_parameters/nsb_offaxis.schema.yml,sha256=nEtlMnHFrnoph4zuPJAWfa-R59_egnOHzvR5Z7y_gJE,2177
287
288
  simtools/schemas/model_parameters/nsb_pixel_rate.schema.yml,sha256=aYo8qQekz5fs8kIkSZrd-bQaikS8QVkm-OpPcufj-yM,1396
288
- simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml,sha256=S3ADT2SjsA9Waghj9kb3umhjePiVijnf0maf3pOCYDg,1374
289
+ simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml,sha256=VvEcNvbPL_bUWuBPO7meB3-jGAodhpCNkmP3_3ZVHQ4,1364
289
290
  simtools/schemas/model_parameters/nsb_reference_value.schema.yml,sha256=-Pirm9uOaCxXz5YPnXMnp_eV5b7lTnbFZ3a3XoBKkWw,907
290
291
  simtools/schemas/model_parameters/nsb_scaling_factor.schema.yml,sha256=2QUOG5HAJgEH20S6A57sLYFAR7tGyKa6fKziVTW_n-k,828
291
292
  simtools/schemas/model_parameters/nsb_sky_map.schema.yml,sha256=Ra8yw8htoYPVRFAH0q8Ds2BZXrH9VIoxLBDDVyA8qIk,1253
292
- simtools/schemas/model_parameters/nsb_spectrum.schema.yml,sha256=9tzosBfgHHKQOX_7Wd4fKMC69qHIptTPu07p5MA3vw0,1333
293
+ simtools/schemas/model_parameters/nsb_spectrum.schema.yml,sha256=Ez2g17smdNfdIsFG2XYL9EYJ7TDXqSUroII0uEa9nK0,1081
293
294
  simtools/schemas/model_parameters/num_gains.schema.yml,sha256=smAZS3z4qTJO6xqysPcyuZ2MgI99QhsZxKON2xmqsY4,771
294
295
  simtools/schemas/model_parameters/only_triggered_telescopes.schema.yml,sha256=UBWz-l0C-GGWpqvywWmdB8lI4uKjhTwNBZtxq3rRCxY,855
295
296
  simtools/schemas/model_parameters/optics_properties.schema.yml,sha256=dTFrayKCqFuhuxa3wkbTkvt36Lo2LCkHvehwynsp7f8,745
@@ -337,7 +338,7 @@ simtools/schemas/model_parameters/secondary_mirror_reflectivity.schema.yml,sha25
337
338
  simtools/schemas/model_parameters/secondary_mirror_segmentation.schema.yml,sha256=NMx_aPzgiBWRkgc24y_Zm_7-dI8MoAogAQ2Rc_weL-g,1179
338
339
  simtools/schemas/model_parameters/secondary_mirror_shadow_diameter.schema.yml,sha256=cA-OxA9yIGCmQyq3YQb-MxfMO4t3z0qK5-LnuhIqeqk,1261
339
340
  simtools/schemas/model_parameters/secondary_mirror_shadow_offset.schema.yml,sha256=odq7Zmhred9H39d4PHsOfYtuoXfHw0vpARnPwFUsrxo,1261
340
- simtools/schemas/model_parameters/stars.schema.yml,sha256=ec9x5FzybMTgXoAMWpcG2ydsoRHZgTbiNQ2tbOSqYrY,1105
341
+ simtools/schemas/model_parameters/stars.schema.yml,sha256=oOGShhKVxB4DiXtrPWLF4Hz0ba7oT6Gcga11Bv8QQQI,1107
341
342
  simtools/schemas/model_parameters/store_photoelectrons.schema.yml,sha256=gAWERR58elcJSYUH7sjj0jjKFswQ3bMefWKV2QgBpmM,1379
342
343
  simtools/schemas/model_parameters/tailcut_scale.schema.yml,sha256=ApeGU59_byQT7TpHySqWVVkmNTcqBgV4jLRAdLHZ5yY,1190
343
344
  simtools/schemas/model_parameters/telescope_axis_height.schema.yml,sha256=VpLF4Lj_hLWS1JRpYvY4DMawTJHsUGCzCIQqfocJTwA,751
@@ -356,15 +357,13 @@ simtools/schemas/model_parameters/trigger_current_limit.schema.yml,sha256=rCeU2q
356
357
  simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml,sha256=7PMB5RY4S8zZZFjc8a33FZZmpfVKbP7qATsKHAvrf2w,1569
357
358
  simtools/schemas/model_parameters/trigger_pixels.schema.yml,sha256=Yvpp3FP7IVS2OMMdwayKKS3W1lNGKg4EZH4WHHY-Qe4,1105
358
359
  simtools/simtel/simtel_config_reader.py,sha256=_rDPaD2Fleqx8XlPVy97KnWYvZQBZdrDjZr9QNKM5PU,15039
359
- simtools/simtel/simtel_config_writer.py,sha256=uWQQ59WwYN-HAcBSin_7ejf_Oh9hQOL0wLsBUlLqcrQ,24586
360
- simtools/simtel/simtel_io_event_histograms.py,sha256=6MDOR716J9K06lh2FFI4W64tEHfxHPJMv9o6hYY55Mw,29280
361
- simtools/simtel/simtel_io_event_reader.py,sha256=jf3v6mu_33Lwup5s5y8lZ-d8ZP1bMtafTNisQocmLrc,12752
362
- simtools/simtel/simtel_io_event_writer.py,sha256=W_skWhB3mKgKsWQlDwYnx1QTT7Keow-rRWfWI0Ez5yo,12196
360
+ simtools/simtel/simtel_config_writer.py,sha256=rZWr8Ru8rgwURmBYt1ysXvaGj21xh2Wua8udDvhDwjs,24366
361
+ simtools/simtel/simtel_io_event_histograms.py,sha256=M0EnmiS9AbzwLyZapkP2JJc3Dze40NoPTHKtWHxe1kg,17688
362
+ simtools/simtel/simtel_io_event_reader.py,sha256=YPP4Cs4NncTIXxbu40veksnJ_3_cZ00-56kGoEuR8so,14595
363
+ simtools/simtel/simtel_io_event_writer.py,sha256=8iK4qvCEjA3X8HB6QdcMWD1w0cC1UEdAm_XRuOM-sGE,12739
363
364
  simtools/simtel/simtel_io_file_info.py,sha256=T2xtdz-0pDZFf7cJw7brBxA9OHbDuBossTzY60RHFfw,1775
364
- simtools/simtel/simtel_io_histogram.py,sha256=P1VJwCt74jQx-avxJkMsSjo9-ID4LpYvt1O6pQigPJI,23681
365
- simtools/simtel/simtel_io_histograms.py,sha256=yzcBnG1I4xa9jg1LONWQ5j0W43B4xOcEsaW9yc2Y36s,20684
366
- simtools/simtel/simtel_io_metadata.py,sha256=pyuCNaTPpeNKssWsdk1yTdDfXmPU3qOTWmF4f6tr_HE,6075
367
- simtools/simtel/simtel_table_reader.py,sha256=jNaYyILK2gYMZ5g9ZWrcuUH1ppjSBsQcXcZNjNywzIY,15115
365
+ simtools/simtel/simtel_io_metadata.py,sha256=PoWIfA4QLDDjcMomteSxzgjnfvlEz7JGZU-UW2xR2TI,6075
366
+ simtools/simtel/simtel_table_reader.py,sha256=m4h74MuvnA15q1-4-esypvBKYPyeZS-1CqdvyJ4HVXc,15101
368
367
  simtools/simtel/simulator_array.py,sha256=nebA2DcVXUd7yWVHmWlWs4xaC_Jgc9yWKYxLh3f6YQA,10091
369
368
  simtools/simtel/simulator_camera_efficiency.py,sha256=j3r6b5tG0-dUdkrKOBb-_R4V9Dv-bvnhaJyGHScwF30,11771
370
369
  simtools/simtel/simulator_light_emission.py,sha256=gC52PLYBzqFfxQhOqup0ArJama_XRlgAUAr4NEdahMI,30242
@@ -372,22 +371,26 @@ simtools/simtel/simulator_ray_tracing.py,sha256=9B-qBC6XsRu9QKPq4b6ZBmpmtiJ4A6qb
372
371
  simtools/testing/assertions.py,sha256=cJm6FtIJTFnTr7wqQ17yqCsrm7YVaxD3vfXoTc0GCm4,4765
373
372
  simtools/testing/configuration.py,sha256=VaL7mpxi9Thu6img4lo02KD-LB0OlMAPw1IemnLPtWw,7856
374
373
  simtools/testing/helpers.py,sha256=LTVlkt36gQ0AtIK2mN6toI3vxwUPCjV5VMLA0nkS07U,1829
375
- simtools/testing/log_inspector.py,sha256=rzkYEK1M6HoEYNShg84rnLtfrsYqyYo-IuDZ_IFsBJs,1429
374
+ simtools/testing/log_inspector.py,sha256=v5mtOz9tgBkCJuYYyDm8zV3x7yG7ctTrBNZCgox9l5w,1437
376
375
  simtools/testing/sim_telarray_metadata.py,sha256=9aVEdCZSB_56Cq-XUVMX8BLtzrwbRXf3SMqeeM9GvAk,7941
377
376
  simtools/testing/validate_output.py,sha256=9MGJE_U3VZicnDimR7lbr4PpYZgLdLnPisJttMBc8GM,13399
378
377
  simtools/utils/general.py,sha256=cOJmyljEzvGkjxj0azh-1tRtZdqvEjDa2DknDsqcJ7g,24089
379
- simtools/utils/geometry.py,sha256=hxosDQcjNNQ62ZVrRrLii_qUafuZ6OopnEZGB7SG1rU,7630
378
+ simtools/utils/geometry.py,sha256=CziDxqVlokcbUPVRIhnoOX8CIB7XbEq_yl_TlYqEmqM,8297
380
379
  simtools/utils/names.py,sha256=42SfLFpuasa9n8D0QjcPgATqmU4TTTXXxUsudLCipA4,22150
381
380
  simtools/utils/value_conversion.py,sha256=Cl-BHOZWUhWr-W_hT4CR1iLfiphd8MSNkzYEjDe6iH8,6311
382
381
  simtools/visualization/legend_handlers.py,sha256=QhUeZwuftA1VxfcMQ40KrwnPaD2FU95fNgZfX68YTJE,9792
383
382
  simtools/visualization/plot_array_layout.py,sha256=1SMiZwNuYCQu7Uf5p8Extie1pQBSKtxyYRsG_J3mG0I,7305
384
383
  simtools/visualization/plot_camera.py,sha256=dLXKHYfY_elqaKhj91HlntASoVixTrpc_Kf0jPU8RmU,11167
384
+ simtools/visualization/plot_corsika_histograms.py,sha256=6DV0NT-b-yYZ9dbCgSU3UCUHJTTWkthBsXaYgrF7JAg,21874
385
+ simtools/visualization/plot_incident_angles.py,sha256=aAlLNHoTOoVF9uKSvwbZrPjsSPNkJVU-sKjiD-5ArXY,13460
385
386
  simtools/visualization/plot_pixels.py,sha256=CrgO_sJNYfmiRwUSKL9dpQvzkGw73Jd-4sZW_1KUfTI,20570
387
+ simtools/visualization/plot_psf.py,sha256=ww90nRhYk9mePjL2PPU538Ths4YzAOviri7e323qaX4,22464
388
+ simtools/visualization/plot_simtel_event_histograms.py,sha256=o9fPkKE1568MRumPVRyBs8ah5eyTN2mCLXseEwAy4RA,12751
389
+ simtools/visualization/plot_simtel_events.py,sha256=CZRX9xO4dxyzItGgCFmWYj4XOj2qn9Vbj61bbulmS0o,31768
386
390
  simtools/visualization/plot_tables.py,sha256=YfGrT1rj7wijKUgrFROrQ057SE0MbvSzxbkCdMLMEjw,8668
387
- simtools/visualization/simtel_event_plots.py,sha256=x7XFOWY2bRMUZsC0884FugyW-J76kxjxG1s5cH7b28Q,25795
388
- simtools/visualization/visualize.py,sha256=iqFaLHpYUn88OhjIxdmFPWFMyg09gZzejSX-rDR6BD4,19025
389
- gammasimtools-0.19.0.dist-info/METADATA,sha256=pge6WUbEENVmwH2MoMSFcXWSxvIcFCHg1ca9pbi6Qv8,6324
390
- gammasimtools-0.19.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
391
- gammasimtools-0.19.0.dist-info/entry_points.txt,sha256=0MKJDeSFyp_9k1nH8ROudJ3dQuVtsKUkHpxn60jHj3A,4986
392
- gammasimtools-0.19.0.dist-info/top_level.txt,sha256=9Yi7Q7aQX6alvpP2YGQtIYo208wdGkXUApHboEdj-ys,9
393
- gammasimtools-0.19.0.dist-info/RECORD,,
391
+ simtools/visualization/visualize.py,sha256=5NkEf-ZHkyA4eUR0YK64s3Sugzj2sizSmRAKJQBpSso,18974
392
+ gammasimtools-0.21.0.dist-info/METADATA,sha256=vWr34hLIVk7HOqqqQmPuRdWsJx5r8qhoPA3hibP1LJ4,5977
393
+ gammasimtools-0.21.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
394
+ gammasimtools-0.21.0.dist-info/entry_points.txt,sha256=m2vT9CExjHsFyATSzoXOC1XL-U4GpinWI0V9_P8wIWo,4956
395
+ gammasimtools-0.21.0.dist-info/top_level.txt,sha256=9Yi7Q7aQX6alvpP2YGQtIYo208wdGkXUApHboEdj-ys,9
396
+ gammasimtools-0.21.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  [console_scripts]
2
- simtools-calculate-trigger-rate = simtools.applications.calculate_trigger_rate:main
2
+ simtools-calculate-incident-angles = simtools.applications.calculate_incident_angles:main
3
3
  simtools-convert-all-model-parameters-from-simtel = simtools.applications.convert_all_model_parameters_from_simtel:main
4
4
  simtools-convert-geo-coordinates-of-array-elements = simtools.applications.convert_geo_coordinates_of_array_elements:main
5
5
  simtools-convert-model-parameter-from-simtel = simtools.applications.convert_model_parameter_from_simtel:main
@@ -15,6 +15,7 @@ simtools-derive-ctao-array-layouts = simtools.applications.derive_ctao_array_lay
15
15
  simtools-derive-mirror-rnda = simtools.applications.derive_mirror_rnda:main
16
16
  simtools-derive-photon-electron-spectrum = simtools.applications.derive_photon_electron_spectrum:main
17
17
  simtools-derive-psf-parameters = simtools.applications.derive_psf_parameters:main
18
+ simtools-derive-trigger-rates = simtools.applications.derive_trigger_rates:main
18
19
  simtools-docs-produce-array-element-report = simtools.applications.docs_produce_array_element_report:main
19
20
  simtools-docs-produce-calibration-reports = simtools.applications.docs_produce_calibration_reports:main
20
21
  simtools-docs-produce-model-parameter-reports = simtools.applications.docs_produce_model_parameter_reports:main
@@ -23,9 +24,8 @@ simtools-generate-array-config = simtools.applications.generate_array_config:mai
23
24
  simtools-generate-corsika-histograms = simtools.applications.generate_corsika_histograms:main
24
25
  simtools-generate-default-metadata = simtools.applications.generate_default_metadata:main
25
26
  simtools-generate-regular-arrays = simtools.applications.generate_regular_arrays:main
26
- simtools-generate-sim-telarray-histograms = simtools.applications.generate_sim_telarray_histograms:main
27
27
  simtools-generate-simtel-event-data = simtools.applications.generate_simtel_event_data:main
28
- simtools-maintain-simulation-model-add-production-table = simtools.applications.maintain_simulation_model_add_production_table:main
28
+ simtools-maintain-simulation-model-add-production = simtools.applications.maintain_simulation_model_add_production:main
29
29
  simtools-maintain-simulation-model-compare-productions = simtools.applications.maintain_simulation_model_compare_productions:main
30
30
  simtools-maintain-simulation-model-verify-production-tables = simtools.applications.maintain_simulation_model_verify_production_tables:main
31
31
  simtools-merge-tables = simtools.applications.merge_tables:main
simtools/_version.py CHANGED
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.19.0'
32
- __version_tuple__ = version_tuple = (0, 19, 0)
31
+ __version__ = version = '0.21.0'
32
+ __version_tuple__ = version_tuple = (0, 21, 0)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -0,0 +1,182 @@
1
+ #!/usr/bin/env python
2
+ r"""
3
+ Calculate photon incident angles on focal plane and primary/secondary mirrors.
4
+
5
+ Creates photon files with additional columns for incident angles calculation.
6
+ Outputs files and histograms of the incidence angles at
7
+ the focal plane, primary mirror, and if available, secondary mirror.
8
+ Optional debug plots can be also generated.
9
+ Note that this application does not include a full raytracing of telescope structures,
10
+ and their non symmetric shadowing at off-axis angles.
11
+
12
+ Example usage
13
+ -------------
14
+
15
+ .. code-block:: console
16
+
17
+ simtools-calculate-incident-angles \
18
+ --off_axis_angles 0 1 2 3 4 \
19
+ --source_distance 10 \
20
+ --number_of_photons 1000000 \
21
+ --model_version 6.0.0 \
22
+ --telescope MSTN-04 \
23
+ --site North
24
+
25
+ Command line arguments
26
+ ----------------------
27
+
28
+ - off_axis_angles (float, optional)
29
+ One or more off-axis angles in degrees (space-separated). Default: [0.0].
30
+ - source_distance (float, optional)
31
+ Source distance in kilometers. Default: 10.0.
32
+ - number_of_photons (int, optional)
33
+ Number of photons of the light source to trace per run. Default: 10000.
34
+ - perfect_mirror (flag, optional)
35
+ Assume perfect mirror shape/alignment/reflection.
36
+ - debug_plots (flag, optional)
37
+ Generate additional debug plots (radius histograms, XY heatmaps, radius vs angle).
38
+ - calculate_primary_secondary_angles / no-calculate_primary_secondary_angles
39
+ Include or skip angles on primary/secondary mirrors. Default: include.
40
+
41
+ The application writes:
42
+
43
+ - imaging list (photons) file
44
+ - stars list file
45
+ - a histogram of incident angles (PNG)
46
+ - a results table in ECSV format
47
+
48
+ Example of a focal-plane incident angle plot for a SST:
49
+
50
+ .. _plot_calculate_incident_angles_plot:
51
+ .. image:: images/incident_angles_multi_calculate_incident_angles_SSTS-04.png
52
+ :width: 49 %
53
+
54
+ Example of a primary mirror incident angle plot for a SST:
55
+
56
+ .. _plot_calculate_incident_angles_plot_primary:
57
+ .. image:: images/incident_angles_primary_multi_calculate_incident_angles_SSTS-04.png
58
+ :width: 49 %
59
+
60
+ Note also the relation between radius and primary mirror incident angles, and how this relates to
61
+ the peak seen in the primary mirror incident angle distribution:
62
+
63
+ .. _plot_calculate_incident_angles_plot_angle_vs_radius:
64
+ .. image:: images/primary_angle_vs_radius.png
65
+ :width: 49 %
66
+
67
+ Example of a secondary mirror incident angle plot for a SST:
68
+
69
+ .. _plot_calculate_incident_angles_plot_secondary:
70
+ .. image:: images/incident_angles_secondary_multi_calculate_incident_angles_SSTS-04.png
71
+ :width: 49 %
72
+ """
73
+
74
+ import logging
75
+ from pathlib import Path
76
+
77
+ from simtools.configuration import configurator
78
+ from simtools.ray_tracing.incident_angles import IncidentAnglesCalculator
79
+ from simtools.visualization.plot_incident_angles import plot_incident_angles
80
+
81
+
82
+ def _parse(label):
83
+ """Parse command line configuration."""
84
+ config = configurator.Configurator(
85
+ label=label,
86
+ description=(
87
+ "Calculate photon incident angles on focal plane and primary/secondary mirrors."
88
+ ),
89
+ )
90
+ config.parser.add_argument(
91
+ "--off_axis_angles",
92
+ help="One or more off-axis angles in degrees (space-separated)",
93
+ type=float,
94
+ nargs="+",
95
+ required=False,
96
+ )
97
+ config.parser.add_argument(
98
+ "--source_distance",
99
+ help="Source distance in kilometers",
100
+ type=float,
101
+ default=10.0,
102
+ required=False,
103
+ )
104
+ config.parser.add_argument(
105
+ "--number_of_photons",
106
+ help="Number of star photons to trace (per run)",
107
+ type=int,
108
+ default=10000,
109
+ required=False,
110
+ )
111
+ config.parser.add_argument(
112
+ "--perfect_mirror",
113
+ help="Assume perfect mirror shape/alignment/reflection",
114
+ action="store_true",
115
+ required=False,
116
+ )
117
+ config.parser.add_argument(
118
+ "--debug_plots",
119
+ dest="debug_plots",
120
+ help="Generate additional debug plots (radius histograms, XY heatmaps, radius vs angle)",
121
+ action="store_true",
122
+ required=False,
123
+ )
124
+ config.parser.add_argument(
125
+ "--calculate_primary_secondary_angles",
126
+ dest="calculate_primary_secondary_angles",
127
+ help="Also compute angles of incidence on primary and secondary mirrors",
128
+ required=False,
129
+ action="store_true",
130
+ )
131
+ return config.initialize(
132
+ db_config=True,
133
+ simulation_model=["telescope", "site", "model_version"],
134
+ )
135
+
136
+
137
+ def main():
138
+ """Application to calculate incident angles using ray tracing."""
139
+ label = Path(__file__).stem
140
+ args_dict, db_config = _parse(label)
141
+
142
+ logger = logging.getLogger()
143
+ logger.setLevel(logging.INFO)
144
+
145
+ logger.info("Starting calculation of incident angles")
146
+
147
+ output_base = Path(args_dict.get("output_path", "./"))
148
+ output_dir = (
149
+ output_base / label if not args_dict.get("use_plain_output_path", False) else output_base
150
+ )
151
+ base_label = args_dict.get("label", label)
152
+ telescope_name = args_dict["telescope"]
153
+ label_with_telescope = f"{base_label}_{telescope_name}"
154
+
155
+ calculator = IncidentAnglesCalculator(
156
+ simtel_path=args_dict["simtel_path"],
157
+ db_config=db_config,
158
+ config_data=args_dict,
159
+ output_dir=output_dir,
160
+ label=base_label,
161
+ )
162
+ offsets = [float(v) for v in args_dict.get("off_axis_angles", [0.0])]
163
+
164
+ results_by_offset = calculator.run_for_offsets(offsets)
165
+ plot_incident_angles(
166
+ results_by_offset,
167
+ output_dir,
168
+ label_with_telescope,
169
+ debug_plots=args_dict.get("debug_plots", False),
170
+ )
171
+ total = sum(len(t) for t in results_by_offset.values())
172
+ summary_msg = (
173
+ f"Calculated incident angles for {len(results_by_offset)} offsets,\n"
174
+ f"total photon statistics {total}"
175
+ )
176
+ if total < 1_000_000:
177
+ summary_msg += " (below 1e6; results may be statistically unstable)"
178
+ logger.info(summary_msg)
179
+
180
+
181
+ if __name__ == "__main__":
182
+ main()
@@ -5,14 +5,16 @@ r"""
5
5
  Generates a new database with all required collections.
6
6
  Follows the structure of the CTAO gitlab simulation model repository.
7
7
 
8
- This is an application for experts and should not be used by the general user.
8
+ This is an application for DB maintainers and should not be used by the general user.
9
9
 
10
10
  Command line arguments
11
11
 
12
12
  input_path (str, required)
13
13
  Path of local copy of model parameter repository.
14
- db_name (str, required)
14
+ db_simulation_model (str, required)
15
15
  Name of new DB to be created.
16
+ db_simulation_model_version (str, required)
17
+ Version of the new DB to be created.
16
18
  type (str, optional)
17
19
  Type of data to be uploaded to the DB. Options are: model_parameters, production_tables.
18
20
 
@@ -20,7 +22,7 @@ r"""
20
22
  --------
21
23
  Upload model data repository to the DB
22
24
  Loops over all subdirectories in 'input_path' and uploads all json files to the
23
- database 'new_db_name' (or updates an existing database with the same name):
25
+ database (or updates an existing database with the same name):
24
26
 
25
27
  * subdirectories starting with 'OBS' are uploaded to the 'sites' collection
26
28
  * json files from the subdirectory 'configuration_sim_telarray/configuration_corsika'
@@ -33,7 +35,8 @@ r"""
33
35
 
34
36
  simtools-db-simulation-model-from-repository-to-db \
35
37
  --input_path /path/to/repository \
36
- --db_name new_db_name \
38
+ --db_simulation_model database name \
39
+ --db_simulation_model_version new database version \
37
40
  --type model_parameters
38
41
 
39
42
  Upload production tables to the DB:
@@ -42,7 +45,8 @@ r"""
42
45
 
43
46
  simtools-db-simulation-model-from-repository-to-db \
44
47
  --input_path /path/to/repository \
45
- --db_name new_db_name \
48
+ --db_simulation_model database name \
49
+ --db_simulation_model_version new database version \
46
50
  --type production_tables
47
51
 
48
52
  """
@@ -78,12 +82,6 @@ def _parse(label=None, description=None):
78
82
  type=Path,
79
83
  required=True,
80
84
  )
81
- config.parser.add_argument(
82
- "--db_name",
83
- help="Name of the new simulation model database to be created.",
84
- type=str.strip,
85
- required=True,
86
- )
87
85
  config.parser.add_argument(
88
86
  "--type",
89
87
  help="Type of data to be uploaded to the database.",
@@ -94,7 +92,12 @@ def _parse(label=None, description=None):
94
92
  )
95
93
 
96
94
  args_dict, db_config = config.initialize(output=True, require_command_line=True, db_config=True)
97
- db_config["db_simulation_model"] = args_dict["db_name"] # overwrite explicitly DB configuration
95
+ if args_dict.get("db_simulation_model") and args_dict.get("db_simulation_model_version"):
96
+ # overwrite explicitly DB configuration
97
+ db_config["db_simulation_model"] = args_dict["db_simulation_model"]
98
+ db_config["db_simulation_model_version"] = args_dict["db_simulation_model_version"]
99
+ else:
100
+ raise ValueError("Both db_simulation_model and db_simulation_model_version are required.")
98
101
  return args_dict, db_config
99
102
 
100
103
 
@@ -110,9 +113,9 @@ def main():
110
113
  db = db_handler.DatabaseHandler(mongo_db_config=db_config)
111
114
 
112
115
  if args_dict.get("type") == "model_parameters":
113
- db_model_upload.add_model_parameters_to_db(args_dict, db)
116
+ db_model_upload.add_model_parameters_to_db(input_path=Path(args_dict["input_path"]), db=db)
114
117
  elif args_dict.get("type") == "production_tables":
115
- db_model_upload.add_production_tables_to_db(args_dict, db)
118
+ db_model_upload.add_production_tables_to_db(input_path=Path(args_dict["input_path"]), db=db)
116
119
 
117
120
 
118
121
  if __name__ == "__main__":
@@ -62,8 +62,8 @@ def main(): # noqa: D103
62
62
  logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
63
63
 
64
64
  if args_dict.get("test_db", False):
65
- db_config["db_simulation_model"] = db_config["db_simulation_model"] + str(uuid.uuid4())
66
- logger.info(f"Using test database: {db_config['db_simulation_model']}")
65
+ db_config["db_simulation_model_version"] = str(uuid.uuid4())
66
+ logger.info(f"Using test database version {db_config['db_simulation_model_version']}")
67
67
  db = db_handler.DatabaseHandler(mongo_db_config=db_config)
68
68
 
69
69
  files_to_insert = []
@@ -83,14 +83,13 @@ def main(): # noqa: D103
83
83
  print(*files_to_insert, sep="\n")
84
84
  print()
85
85
 
86
- logger.info(f"DB {args_dict['db_simulation_model']} selected.")
86
+ logger.info(f"DB {db.get_db_name()} selected.")
87
87
 
88
88
  if gen.user_confirm():
89
89
  for file_to_insert_now in files_to_insert:
90
90
  par_dict = ascii_handler.collect_data_from_file(file_name=file_to_insert_now)
91
91
  logger.info(f"Adding the following parameter to the DB: {par_dict['parameter']}")
92
92
  db.add_new_parameter(
93
- db_name=db_config["db_simulation_model"],
94
93
  par_dict=par_dict,
95
94
  collection_name=args_dict["db_collection"],
96
95
  file_prefix="./",
@@ -103,11 +102,9 @@ def main(): # noqa: D103
103
102
  logger.info("Aborted, no change applied to the database")
104
103
 
105
104
  # drop test database; be safe and required DB name is sandbox
106
- if args_dict.get("test_db", False) and "sandbox" in args_dict["db_simulation_model"]:
107
- logger.info(
108
- f"Test database used. Dropping all data from {db_config['db_simulation_model']}"
109
- )
110
- db.db_client.drop_database(db_config["db_simulation_model"])
105
+ if args_dict.get("test_db", False) and "sandbox" in db.get_db_name():
106
+ logger.info(f"Test database used. Dropping all data from {db.get_db_name()}")
107
+ db.db_client.drop_database(db.get_db_name())
111
108
 
112
109
 
113
110
  if __name__ == "__main__":
@@ -27,8 +27,8 @@ def _parse():
27
27
  config.parser.add_argument(
28
28
  "--db_name",
29
29
  help="Database name",
30
- default="all",
31
- required=True,
30
+ default=None,
31
+ required=False,
32
32
  )
33
33
  return config.initialize(db_config=True)
34
34
 
@@ -44,7 +44,11 @@ def main(): # noqa: D103
44
44
  databases = [
45
45
  d for d in db.db_client.list_database_names() if d not in ("config", "admin", "local")
46
46
  ]
47
- requested = args_dict["db_name"]
47
+ requested = db.get_db_name(
48
+ db_name=args_dict["db_name"],
49
+ db_simulation_model_version=args_dict.get("db_simulation_model_version"),
50
+ model_name=args_dict.get("db_simulation_model"),
51
+ )
48
52
  if requested != "all" and requested not in databases:
49
53
  raise ValueError(
50
54
  f"Requested database '{requested}' not found. "