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.
- {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/METADATA +1 -3
- {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/RECORD +54 -51
- {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/entry_points.txt +3 -3
- simtools/_version.py +2 -2
- simtools/applications/calculate_incident_angles.py +182 -0
- simtools/applications/db_add_simulation_model_from_repository_to_db.py +17 -14
- simtools/applications/db_add_value_from_json_to_db.py +6 -9
- simtools/applications/db_generate_compound_indexes.py +7 -3
- simtools/applications/db_get_file_from_db.py +11 -23
- simtools/applications/derive_psf_parameters.py +58 -39
- simtools/applications/derive_trigger_rates.py +91 -0
- simtools/applications/generate_corsika_histograms.py +7 -184
- simtools/applications/maintain_simulation_model_add_production.py +105 -0
- simtools/applications/plot_simtel_events.py +5 -189
- simtools/applications/print_version.py +8 -7
- simtools/applications/validate_file_using_schema.py +7 -4
- simtools/configuration/commandline_parser.py +17 -11
- simtools/corsika/corsika_histograms.py +81 -0
- simtools/data_model/validate_data.py +8 -3
- simtools/db/db_handler.py +122 -31
- simtools/db/db_model_upload.py +51 -30
- simtools/dependencies.py +10 -5
- simtools/layout/array_layout_utils.py +37 -5
- simtools/model/array_model.py +18 -1
- simtools/model/model_repository.py +118 -63
- simtools/model/site_model.py +25 -0
- simtools/production_configuration/derive_corsika_limits.py +9 -34
- simtools/ray_tracing/incident_angles.py +706 -0
- simtools/ray_tracing/psf_parameter_optimisation.py +999 -565
- simtools/schemas/model_parameter_and_data_schema.metaschema.yml +2 -2
- simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml +1 -1
- simtools/schemas/model_parameters/nsb_spectrum.schema.yml +22 -29
- simtools/schemas/model_parameters/stars.schema.yml +1 -1
- simtools/schemas/production_tables.schema.yml +5 -0
- simtools/simtel/simtel_config_writer.py +18 -20
- simtools/simtel/simtel_io_event_histograms.py +253 -516
- simtools/simtel/simtel_io_event_reader.py +51 -2
- simtools/simtel/simtel_io_event_writer.py +31 -11
- simtools/simtel/simtel_io_metadata.py +1 -1
- simtools/simtel/simtel_table_reader.py +3 -3
- simtools/simulator.py +1 -4
- simtools/telescope_trigger_rates.py +119 -0
- simtools/testing/log_inspector.py +13 -11
- simtools/utils/geometry.py +20 -0
- simtools/version.py +89 -0
- simtools/{corsika/corsika_histograms_visualize.py → visualization/plot_corsika_histograms.py} +109 -0
- simtools/visualization/plot_incident_angles.py +431 -0
- simtools/visualization/plot_psf.py +673 -0
- simtools/visualization/plot_simtel_event_histograms.py +376 -0
- simtools/visualization/{simtel_event_plots.py → plot_simtel_events.py} +284 -87
- simtools/visualization/visualize.py +1 -3
- simtools/applications/calculate_trigger_rate.py +0 -187
- simtools/applications/generate_sim_telarray_histograms.py +0 -196
- simtools/applications/maintain_simulation_model_add_production_table.py +0 -71
- simtools/simtel/simtel_io_histogram.py +0 -623
- simtools/simtel/simtel_io_histograms.py +0 -556
- {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/WHEEL +0 -0
- {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/licenses/LICENSE +0 -0
- {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.
|
|
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
|
[](https://github.com/gammasim/simtools/actions/workflows/CI-integrationtests.yml)
|
|
96
96
|
[](https://github.com/gammasim/simtools/actions/workflows/CI-docs.yml)
|
|
97
97
|
|
|
98
|
-
-[](https://app.codacy.com/gh/gammasim/simtools/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
|
|
99
|
-
[](https://codecov.io/gh/gammasim/simtools)
|
|
100
98
|
[](https://sonar-ctao.zeuthen.desy.de/dashboard?id=gammasim_simtools_0d23837b-8b2d-4e54-9a98-2f1bde681f14)
|
|
101
99
|
[](https://sonar-ctao.zeuthen.desy.de/dashboard?id=gammasim_simtools_0d23837b-8b2d-4e54-9a98-2f1bde681f14)
|
|
102
100
|
|
|
@@ -1,45 +1,46 @@
|
|
|
1
|
-
gammasimtools-0.
|
|
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=
|
|
3
|
+
simtools/_version.py,sha256=1jNZfFOI753oBgzdezhn3bNQqGrO2IvFnr4lHXE6EpI,706
|
|
4
4
|
simtools/constants.py,sha256=3N5bc8MlMWRzcg8EeSJweoioEo_uhStMxAzdb85Apvw,966
|
|
5
|
-
simtools/dependencies.py,sha256=
|
|
6
|
-
simtools/simulator.py,sha256=
|
|
7
|
-
simtools/
|
|
8
|
-
simtools/
|
|
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=
|
|
14
|
-
simtools/applications/db_add_value_from_json_to_db.py,sha256=
|
|
15
|
-
simtools/applications/db_generate_compound_indexes.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
77
|
-
simtools/db/db_handler.py,sha256=
|
|
78
|
-
simtools/db/db_model_upload.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
360
|
-
simtools/simtel/simtel_io_event_histograms.py,sha256=
|
|
361
|
-
simtools/simtel/simtel_io_event_reader.py,sha256=
|
|
362
|
-
simtools/simtel/simtel_io_event_writer.py,sha256=
|
|
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/
|
|
365
|
-
simtools/simtel/
|
|
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=
|
|
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=
|
|
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/
|
|
388
|
-
|
|
389
|
-
gammasimtools-0.
|
|
390
|
-
gammasimtools-0.
|
|
391
|
-
gammasimtools-0.
|
|
392
|
-
gammasimtools-0.
|
|
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-
|
|
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
|
|
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.
|
|
32
|
-
__version_tuple__ = version_tuple = (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
|
|
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
|
-
|
|
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
|
|
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
|
-
--
|
|
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
|
-
--
|
|
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
|
-
|
|
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["
|
|
66
|
-
logger.info(f"Using test database
|
|
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 {
|
|
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
|
|
107
|
-
logger.info(
|
|
108
|
-
|
|
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=
|
|
31
|
-
required=
|
|
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 =
|
|
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. "
|