gammasimtools 0.19.0__py3-none-any.whl → 0.20.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.20.0.dist-info}/METADATA +1 -3
- {gammasimtools-0.19.0.dist-info → gammasimtools-0.20.0.dist-info}/RECORD +43 -41
- {gammasimtools-0.19.0.dist-info → gammasimtools-0.20.0.dist-info}/entry_points.txt +2 -2
- 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_trigger_rates.py +91 -0
- simtools/applications/plot_simtel_events.py +73 -31
- simtools/applications/validate_file_using_schema.py +7 -4
- simtools/configuration/commandline_parser.py +17 -11
- simtools/data_model/validate_data.py +8 -3
- simtools/db/db_handler.py +83 -26
- simtools/db/db_model_upload.py +11 -16
- simtools/dependencies.py +10 -5
- simtools/layout/array_layout_utils.py +37 -5
- simtools/model/array_model.py +18 -1
- 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/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 +17 -19
- 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/telescope_trigger_rates.py +119 -0
- simtools/testing/log_inspector.py +13 -11
- simtools/utils/geometry.py +20 -0
- simtools/visualization/plot_incident_angles.py +431 -0
- simtools/visualization/plot_simtel_event_histograms.py +376 -0
- simtools/visualization/visualize.py +1 -3
- simtools/applications/calculate_trigger_rate.py +0 -187
- simtools/applications/generate_sim_telarray_histograms.py +0 -196
- simtools/simtel/simtel_io_histogram.py +0 -623
- simtools/simtel/simtel_io_histograms.py +0 -556
- {gammasimtools-0.19.0.dist-info → gammasimtools-0.20.0.dist-info}/WHEEL +0 -0
- {gammasimtools-0.19.0.dist-info → gammasimtools-0.20.0.dist-info}/licenses/LICENSE +0 -0
- {gammasimtools-0.19.0.dist-info → gammasimtools-0.20.0.dist-info}/top_level.txt +0 -0
- /simtools/visualization/{simtel_event_plots.py → plot_simtel_events.py} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gammasimtools
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.20.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,26 +1,28 @@
|
|
|
1
|
-
gammasimtools-0.
|
|
1
|
+
gammasimtools-0.20.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=D0Phtt01o1VQl6Hc5KWgvKucsJ2Ve2ykSmH5eQWQ0zU,706
|
|
4
4
|
simtools/constants.py,sha256=3N5bc8MlMWRzcg8EeSJweoioEo_uhStMxAzdb85Apvw,966
|
|
5
|
-
simtools/dependencies.py,sha256=
|
|
5
|
+
simtools/dependencies.py,sha256=bDMw1Nyjya0-TnWp_K6LyV6JbO_aJDARa6KSGXhLcqc,6572
|
|
6
6
|
simtools/simulator.py,sha256=O586ehWLBt4XMcYMpYYRDjzO0zoGfzDQy_32vIBPcTU,28108
|
|
7
|
+
simtools/telescope_trigger_rates.py,sha256=_2NUG8UnhfpMGhaEDgHUOOdnweCUcRTrTOkGGYInHqo,3984
|
|
7
8
|
simtools/version.py,sha256=Fri_aFaUOmV8CIygd3DknAmJaFZ05OAeLd1AgZOcgdQ,688
|
|
8
|
-
simtools/applications/
|
|
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=nf45luTOTBNQyObzJ01xMrTdRVnJ1p90VbGHYpnU6GU,1964
|
|
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
24
|
simtools/applications/derive_psf_parameters.py,sha256=TrP6AqiKc6Te3N1lfl63eSIsL_tcEKZZSBl1aN9NYTo,6900
|
|
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
|
|
@@ -29,14 +31,13 @@ simtools/applications/generate_array_config.py,sha256=bzuQsEp2wUBLGxVkF_1bpw0iFc
|
|
|
29
31
|
simtools/applications/generate_corsika_histograms.py,sha256=XU1kTlWADXU4-rqTE2PLqtpQ0b7WbTMid13Vqn1olMk,18243
|
|
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
35
|
simtools/applications/maintain_simulation_model_add_production_table.py,sha256=2Kp5K3ukMTebReQzO4HTZa59kkJXZ_eeOS7Dy5zqZA0,2048
|
|
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=JV6bHprGilgNgjYnM2XzuYRN7VhtLE5HnfTOlhOeCfE,14053
|
|
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
43
|
simtools/applications/print_version.py,sha256=QfyraIi_32ygaKcXFiiyI2OYPy745quEanE8ePDHGGU,2336
|
|
@@ -56,12 +57,12 @@ 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
68
|
simtools/corsika/corsika_histograms.py,sha256=lA0BiscQwhPSQSLYw-aICTtjKVCbyMjfXTCcfrXemGc,67691
|
|
@@ -73,9 +74,9 @@ simtools/data_model/metadata_collector.py,sha256=s1aa8iaPyc8rk2KmRBdIjbMNTcLxCT1
|
|
|
73
74
|
simtools/data_model/metadata_model.py,sha256=wH52gC6MdwFw9A6UswZLsRlss7vbXDyxybBaI_UMt18,4642
|
|
74
75
|
simtools/data_model/model_data_writer.py,sha256=w2lbFLBPS6ViPF0xDiXXUlrfqZYYR7nJwmmB6PLhxfI,14648
|
|
75
76
|
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=
|
|
77
|
+
simtools/data_model/validate_data.py,sha256=laKI4LCIkKhYkrQgPUHFoIwVCx-moBtuosgVMbOJU98,31082
|
|
78
|
+
simtools/db/db_handler.py,sha256=41PEd3pNp0bfEpJsAvHOxzZswY8reDTlRfryaUBcp-s,35912
|
|
79
|
+
simtools/db/db_model_upload.py,sha256=SRWq6dzY4AXwL9mfLXaQmcDnIHoCR0Xd3oZ_2na9DDY,4731
|
|
79
80
|
simtools/io/ascii_handler.py,sha256=S2fP2x6vE4nEF5g0NRARIWKs8vKU3c9SW8XtcdrwhQU,7826
|
|
80
81
|
simtools/io/hdf5_handler.py,sha256=CqP76MCfxvWH8AOnkIbQM5wBHIvSDEbdZ03wn7t6XgI,4232
|
|
81
82
|
simtools/io/io_handler.py,sha256=k-A91MYdOD64XRdiyEJtgu7fFtJYyfe0xjmx63u2daM,5081
|
|
@@ -84,10 +85,10 @@ simtools/io/table_handler.py,sha256=YJqbam9sBjKAhHDyzFd0X0duWT1jnYPyk0La9Gp2jeo,
|
|
|
84
85
|
simtools/job_execution/htcondor_script_generator.py,sha256=7Wm1iR8PK0gbutbZATyBmhqQu-MZQI0HaJa7dJJVMHA,4248
|
|
85
86
|
simtools/job_execution/job_manager.py,sha256=fuEJwzCp3U-1oRp0suq3VQY-afKVKMOqObpvxHETXlM,3424
|
|
86
87
|
simtools/layout/array_layout.py,sha256=_wOQ0fefbaleLPQcIyhH8rlYqzBokVi0VeTyi98XOLo,25186
|
|
87
|
-
simtools/layout/array_layout_utils.py,sha256=
|
|
88
|
+
simtools/layout/array_layout_utils.py,sha256=y1JAFR19IwOqrgW0k-tpi8BlpbI4Wcz9uO93sCs7Jbw,12737
|
|
88
89
|
simtools/layout/geo_coordinates.py,sha256=9kKnXFi9vrfYKG_9elzFuzzssGFEUzxMubaclITkW_g,5944
|
|
89
90
|
simtools/layout/telescope_position.py,sha256=m34taJ7LML_KBW75i3EGMK2vEHK9tqFltxa9Ojrspi0,20162
|
|
90
|
-
simtools/model/array_model.py,sha256=
|
|
91
|
+
simtools/model/array_model.py,sha256=Sg9gw5HgS4bIyN5iwvaT0MaSGD7Vr1G3Hm3NTZGOsI4,17043
|
|
91
92
|
simtools/model/calibration_model.py,sha256=PqZnca86rNiKu3pExJc3fdiDwbHcB7Q9yl2pyA1orGU,1442
|
|
92
93
|
simtools/model/camera.py,sha256=Gj9yWfAfM4GrrX5q6ZGSQy80WsOUqZaTnP7DoCYfOJ0,21403
|
|
93
94
|
simtools/model/flasher_model.py,sha256=SXSWJu9QWjMdrEHefhIXz_NuPsODTnb5HfY4Nhc5_oA,3948
|
|
@@ -95,15 +96,16 @@ simtools/model/mirrors.py,sha256=uGCAT68WpnESv9IAgg8Xae9Z2-XgxMBL_Phnv6Ro0XQ,915
|
|
|
95
96
|
simtools/model/model_parameter.py,sha256=ZquhZCTonqbuC5wRJejUzvuAFWd7EHRua8hWSVxRN0g,19241
|
|
96
97
|
simtools/model/model_repository.py,sha256=zli7zeZU-zdKX3nuAcK3D7RsBXlu607fvErk0NVPoQU,11124
|
|
97
98
|
simtools/model/model_utils.py,sha256=OFMKgrHLzStAE7k5JRuj6iAI4Z1_ND13lXWzUTGfZ_M,2485
|
|
98
|
-
simtools/model/site_model.py,sha256=
|
|
99
|
+
simtools/model/site_model.py,sha256=0oHrVWq9YPtuQKO6gg9LdPirEfqqaFtBT0dAxUlLR_8,6181
|
|
99
100
|
simtools/model/telescope_model.py,sha256=bsHctXxwo1k5Xno9wVNAVhFyDPRFk4CNoCNpHYkB-jE,13504
|
|
100
101
|
simtools/production_configuration/calculate_statistical_uncertainties_grid_point.py,sha256=r3g2dNMCZdl6K3fvg0mcPV7C2AIc70N2bSdyYb5hY4I,15550
|
|
101
|
-
simtools/production_configuration/derive_corsika_limits.py,sha256=
|
|
102
|
+
simtools/production_configuration/derive_corsika_limits.py,sha256=0psxcfBPut5iDbhazF50dK_GpDQZz51h4Ap2MUW0khQ,10562
|
|
102
103
|
simtools/production_configuration/derive_production_statistics.py,sha256=q7uW044MVcbGzwzVYpXcSvlRD8qcif8FyYP7mqtuNWs,5761
|
|
103
104
|
simtools/production_configuration/derive_production_statistics_handler.py,sha256=WPo29fUMjHFgQKu4AL01XrzIx4d846ddezdtLpH4USU,6187
|
|
104
105
|
simtools/production_configuration/generate_production_grid.py,sha256=DlR2hqyG0jU1yU21QU38ucAdmHZWPa7snFW26vmGEuI,13323
|
|
105
106
|
simtools/production_configuration/interpolation_handler.py,sha256=97zk7XR8yNMs4dEqcrfjpma6SgUDlqaXcsfAIw1rhuY,14131
|
|
106
107
|
simtools/production_configuration/merge_corsika_limits.py,sha256=t9JDvrpkP33ISCRCPVLE8GunjHDF_RYlRPqXI469l0w,20838
|
|
108
|
+
simtools/ray_tracing/incident_angles.py,sha256=uSMa1bGeqt5bhjUY3AT9WGJfV5YoudUC6ZlnCwVGLo8,25913
|
|
107
109
|
simtools/ray_tracing/mirror_panel_psf.py,sha256=xE_io65fGjv5GnH035xC84iSqC3Ltz1sxnybSqD6T20,11238
|
|
108
110
|
simtools/ray_tracing/psf_analysis.py,sha256=kw431lbLNd8nm7FoOkCZwSw1iXvNIit-WKX9n-GMLJw,18164
|
|
109
111
|
simtools/ray_tracing/psf_parameter_optimisation.py,sha256=no0dYe-dlk0XceSlfd9jpslB1kS8Ulo6ZsWGlHm8oek,26214
|
|
@@ -120,10 +122,10 @@ simtools/runners/simtools_runner.py,sha256=jFlDZ_t6KKprzVZrPRQtmd0kRMIwSiVNMx3B8
|
|
|
120
122
|
simtools/schemas/application_workflow.metaschema.yml,sha256=4AkbPKW4pbeAn5ewhe0I0jWZPw2USugkuXAF4QpyREk,5650
|
|
121
123
|
simtools/schemas/metadata.metaschema.yml,sha256=bgsIFwBlaC9HGNN8hlMSy2vMwwnG2DEfprXZuxfU2Kk,33556
|
|
122
124
|
simtools/schemas/model_parameter.metaschema.yml,sha256=tXKB0H_bn-UiHALtN0OppA-xKp5OVUICjXG8tYI7VEw,6595
|
|
123
|
-
simtools/schemas/model_parameter_and_data_schema.metaschema.yml,sha256=
|
|
125
|
+
simtools/schemas/model_parameter_and_data_schema.metaschema.yml,sha256=ugCjy7K-0HQ8arxqpuCJlz4Sn9vaPdKRLfmOvZiGFwE,10528
|
|
124
126
|
simtools/schemas/plot_configuration.metaschema.yml,sha256=ALz6d3btyr0ao50nJ0tShMlMgR4SKP6MRC_qxiPjwmc,4408
|
|
125
127
|
simtools/schemas/production_configuration_metrics.schema.yml,sha256=9IOmDjtAyH-8Ti5hoxKKjZ0kl7E7iKBBDvTL8SSv_To,1935
|
|
126
|
-
simtools/schemas/production_tables.schema.yml,sha256=
|
|
128
|
+
simtools/schemas/production_tables.schema.yml,sha256=lz266H7nogsIgGBpHYGrZDx4KWm26lbdoreH9b32Sh0,1478
|
|
127
129
|
simtools/schemas/input/MST_mirror_2f_measurements.schema.yml,sha256=2kFAIxgR36XIrTNvfvPB16OdnpkNdkXeCGnI01Tbc3Y,1124
|
|
128
130
|
simtools/schemas/input/single_pe_spectrum.schema.yml,sha256=hLD8JgChI1eV2yl7E_e_uvQebsRuG18ag_4aEiLjToM,1244
|
|
129
131
|
simtools/schemas/model_parameters/adjust_gain.schema.yml,sha256=TwLjYM-xBY41qbVvMe-s_qcacvcI_YTvLJ5lSNdEh3k,892
|
|
@@ -285,11 +287,11 @@ simtools/schemas/model_parameters/nsb_autoscale_airmass.schema.yml,sha256=QJTEXS
|
|
|
285
287
|
simtools/schemas/model_parameters/nsb_gain_drop_scale.schema.yml,sha256=cvNCJicoVrOehNARlMA5_3f8VUf-suniPlVbTwAvAvI,1110
|
|
286
288
|
simtools/schemas/model_parameters/nsb_offaxis.schema.yml,sha256=nEtlMnHFrnoph4zuPJAWfa-R59_egnOHzvR5Z7y_gJE,2177
|
|
287
289
|
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=
|
|
290
|
+
simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml,sha256=VvEcNvbPL_bUWuBPO7meB3-jGAodhpCNkmP3_3ZVHQ4,1364
|
|
289
291
|
simtools/schemas/model_parameters/nsb_reference_value.schema.yml,sha256=-Pirm9uOaCxXz5YPnXMnp_eV5b7lTnbFZ3a3XoBKkWw,907
|
|
290
292
|
simtools/schemas/model_parameters/nsb_scaling_factor.schema.yml,sha256=2QUOG5HAJgEH20S6A57sLYFAR7tGyKa6fKziVTW_n-k,828
|
|
291
293
|
simtools/schemas/model_parameters/nsb_sky_map.schema.yml,sha256=Ra8yw8htoYPVRFAH0q8Ds2BZXrH9VIoxLBDDVyA8qIk,1253
|
|
292
|
-
simtools/schemas/model_parameters/nsb_spectrum.schema.yml,sha256=
|
|
294
|
+
simtools/schemas/model_parameters/nsb_spectrum.schema.yml,sha256=Ez2g17smdNfdIsFG2XYL9EYJ7TDXqSUroII0uEa9nK0,1081
|
|
293
295
|
simtools/schemas/model_parameters/num_gains.schema.yml,sha256=smAZS3z4qTJO6xqysPcyuZ2MgI99QhsZxKON2xmqsY4,771
|
|
294
296
|
simtools/schemas/model_parameters/only_triggered_telescopes.schema.yml,sha256=UBWz-l0C-GGWpqvywWmdB8lI4uKjhTwNBZtxq3rRCxY,855
|
|
295
297
|
simtools/schemas/model_parameters/optics_properties.schema.yml,sha256=dTFrayKCqFuhuxa3wkbTkvt36Lo2LCkHvehwynsp7f8,745
|
|
@@ -337,7 +339,7 @@ simtools/schemas/model_parameters/secondary_mirror_reflectivity.schema.yml,sha25
|
|
|
337
339
|
simtools/schemas/model_parameters/secondary_mirror_segmentation.schema.yml,sha256=NMx_aPzgiBWRkgc24y_Zm_7-dI8MoAogAQ2Rc_weL-g,1179
|
|
338
340
|
simtools/schemas/model_parameters/secondary_mirror_shadow_diameter.schema.yml,sha256=cA-OxA9yIGCmQyq3YQb-MxfMO4t3z0qK5-LnuhIqeqk,1261
|
|
339
341
|
simtools/schemas/model_parameters/secondary_mirror_shadow_offset.schema.yml,sha256=odq7Zmhred9H39d4PHsOfYtuoXfHw0vpARnPwFUsrxo,1261
|
|
340
|
-
simtools/schemas/model_parameters/stars.schema.yml,sha256=
|
|
342
|
+
simtools/schemas/model_parameters/stars.schema.yml,sha256=oOGShhKVxB4DiXtrPWLF4Hz0ba7oT6Gcga11Bv8QQQI,1107
|
|
341
343
|
simtools/schemas/model_parameters/store_photoelectrons.schema.yml,sha256=gAWERR58elcJSYUH7sjj0jjKFswQ3bMefWKV2QgBpmM,1379
|
|
342
344
|
simtools/schemas/model_parameters/tailcut_scale.schema.yml,sha256=ApeGU59_byQT7TpHySqWVVkmNTcqBgV4jLRAdLHZ5yY,1190
|
|
343
345
|
simtools/schemas/model_parameters/telescope_axis_height.schema.yml,sha256=VpLF4Lj_hLWS1JRpYvY4DMawTJHsUGCzCIQqfocJTwA,751
|
|
@@ -356,15 +358,13 @@ simtools/schemas/model_parameters/trigger_current_limit.schema.yml,sha256=rCeU2q
|
|
|
356
358
|
simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml,sha256=7PMB5RY4S8zZZFjc8a33FZZmpfVKbP7qATsKHAvrf2w,1569
|
|
357
359
|
simtools/schemas/model_parameters/trigger_pixels.schema.yml,sha256=Yvpp3FP7IVS2OMMdwayKKS3W1lNGKg4EZH4WHHY-Qe4,1105
|
|
358
360
|
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=
|
|
361
|
+
simtools/simtel/simtel_config_writer.py,sha256=4r5KxodabcA7Si7UllIaH8Gpt2s3MCuCityeErVBgEM,24367
|
|
362
|
+
simtools/simtel/simtel_io_event_histograms.py,sha256=M0EnmiS9AbzwLyZapkP2JJc3Dze40NoPTHKtWHxe1kg,17688
|
|
363
|
+
simtools/simtel/simtel_io_event_reader.py,sha256=YPP4Cs4NncTIXxbu40veksnJ_3_cZ00-56kGoEuR8so,14595
|
|
364
|
+
simtools/simtel/simtel_io_event_writer.py,sha256=8iK4qvCEjA3X8HB6QdcMWD1w0cC1UEdAm_XRuOM-sGE,12739
|
|
363
365
|
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
|
|
366
|
+
simtools/simtel/simtel_io_metadata.py,sha256=PoWIfA4QLDDjcMomteSxzgjnfvlEz7JGZU-UW2xR2TI,6075
|
|
367
|
+
simtools/simtel/simtel_table_reader.py,sha256=m4h74MuvnA15q1-4-esypvBKYPyeZS-1CqdvyJ4HVXc,15101
|
|
368
368
|
simtools/simtel/simulator_array.py,sha256=nebA2DcVXUd7yWVHmWlWs4xaC_Jgc9yWKYxLh3f6YQA,10091
|
|
369
369
|
simtools/simtel/simulator_camera_efficiency.py,sha256=j3r6b5tG0-dUdkrKOBb-_R4V9Dv-bvnhaJyGHScwF30,11771
|
|
370
370
|
simtools/simtel/simulator_light_emission.py,sha256=gC52PLYBzqFfxQhOqup0ArJama_XRlgAUAr4NEdahMI,30242
|
|
@@ -372,22 +372,24 @@ simtools/simtel/simulator_ray_tracing.py,sha256=9B-qBC6XsRu9QKPq4b6ZBmpmtiJ4A6qb
|
|
|
372
372
|
simtools/testing/assertions.py,sha256=cJm6FtIJTFnTr7wqQ17yqCsrm7YVaxD3vfXoTc0GCm4,4765
|
|
373
373
|
simtools/testing/configuration.py,sha256=VaL7mpxi9Thu6img4lo02KD-LB0OlMAPw1IemnLPtWw,7856
|
|
374
374
|
simtools/testing/helpers.py,sha256=LTVlkt36gQ0AtIK2mN6toI3vxwUPCjV5VMLA0nkS07U,1829
|
|
375
|
-
simtools/testing/log_inspector.py,sha256=
|
|
375
|
+
simtools/testing/log_inspector.py,sha256=v5mtOz9tgBkCJuYYyDm8zV3x7yG7ctTrBNZCgox9l5w,1437
|
|
376
376
|
simtools/testing/sim_telarray_metadata.py,sha256=9aVEdCZSB_56Cq-XUVMX8BLtzrwbRXf3SMqeeM9GvAk,7941
|
|
377
377
|
simtools/testing/validate_output.py,sha256=9MGJE_U3VZicnDimR7lbr4PpYZgLdLnPisJttMBc8GM,13399
|
|
378
378
|
simtools/utils/general.py,sha256=cOJmyljEzvGkjxj0azh-1tRtZdqvEjDa2DknDsqcJ7g,24089
|
|
379
|
-
simtools/utils/geometry.py,sha256=
|
|
379
|
+
simtools/utils/geometry.py,sha256=CziDxqVlokcbUPVRIhnoOX8CIB7XbEq_yl_TlYqEmqM,8297
|
|
380
380
|
simtools/utils/names.py,sha256=42SfLFpuasa9n8D0QjcPgATqmU4TTTXXxUsudLCipA4,22150
|
|
381
381
|
simtools/utils/value_conversion.py,sha256=Cl-BHOZWUhWr-W_hT4CR1iLfiphd8MSNkzYEjDe6iH8,6311
|
|
382
382
|
simtools/visualization/legend_handlers.py,sha256=QhUeZwuftA1VxfcMQ40KrwnPaD2FU95fNgZfX68YTJE,9792
|
|
383
383
|
simtools/visualization/plot_array_layout.py,sha256=1SMiZwNuYCQu7Uf5p8Extie1pQBSKtxyYRsG_J3mG0I,7305
|
|
384
384
|
simtools/visualization/plot_camera.py,sha256=dLXKHYfY_elqaKhj91HlntASoVixTrpc_Kf0jPU8RmU,11167
|
|
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_simtel_event_histograms.py,sha256=o9fPkKE1568MRumPVRyBs8ah5eyTN2mCLXseEwAy4RA,12751
|
|
388
|
+
simtools/visualization/plot_simtel_events.py,sha256=x7XFOWY2bRMUZsC0884FugyW-J76kxjxG1s5cH7b28Q,25795
|
|
386
389
|
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,,
|
|
390
|
+
simtools/visualization/visualize.py,sha256=5NkEf-ZHkyA4eUR0YK64s3Sugzj2sizSmRAKJQBpSso,18974
|
|
391
|
+
gammasimtools-0.20.0.dist-info/METADATA,sha256=c_teBXKuL1RVa57tbodSgW3LkLCDToteTbxm-NvkidY,5977
|
|
392
|
+
gammasimtools-0.20.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
393
|
+
gammasimtools-0.20.0.dist-info/entry_points.txt,sha256=RSap2jP3H4R5s98pU3nsF0Wv1op1iSrsPr9Zie3O1ow,4968
|
|
394
|
+
gammasimtools-0.20.0.dist-info/top_level.txt,sha256=9Yi7Q7aQX6alvpP2YGQtIYo208wdGkXUApHboEdj-ys,9
|
|
395
|
+
gammasimtools-0.20.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,7 +24,6 @@ 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
28
|
simtools-maintain-simulation-model-add-production-table = simtools.applications.maintain_simulation_model_add_production_table:main
|
|
29
29
|
simtools-maintain-simulation-model-compare-productions = simtools.applications.maintain_simulation_model_compare_productions: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.20.0'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 20, 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
|
+
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. "
|
|
@@ -65,29 +65,17 @@ def main(): # noqa: D103
|
|
|
65
65
|
_io_handler = io_handler.IOHandler()
|
|
66
66
|
|
|
67
67
|
db = db_handler.DatabaseHandler(mongo_db_config=db_config)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
logger.info(
|
|
80
|
-
f"Got file {args_dict['file_name']} from DB {db_name} "
|
|
81
|
-
f"and saved into {_io_handler.get_output_directory()}"
|
|
82
|
-
)
|
|
83
|
-
break
|
|
84
|
-
except FileNotFoundError:
|
|
85
|
-
continue
|
|
86
|
-
|
|
87
|
-
for key, value in file_id.items():
|
|
88
|
-
if value is None:
|
|
89
|
-
logger.error(f"The file {key} was not found in any of the available DBs.")
|
|
90
|
-
raise FileNotFoundError
|
|
68
|
+
file_id = db.export_model_files(
|
|
69
|
+
dest=_io_handler.get_output_directory(),
|
|
70
|
+
file_names=args_dict["file_name"],
|
|
71
|
+
)
|
|
72
|
+
if file_id is None:
|
|
73
|
+
logger.error(f"The file {args_dict['file_name']} was not found in {db.db_name}.")
|
|
74
|
+
raise FileNotFoundError
|
|
75
|
+
logger.info(
|
|
76
|
+
f"Got file {args_dict['file_name']} from DB {db.db_name} "
|
|
77
|
+
f"and saved into {_io_handler.get_output_directory()}"
|
|
78
|
+
)
|
|
91
79
|
|
|
92
80
|
|
|
93
81
|
if __name__ == "__main__":
|