gammasimtools 0.24.0__py3-none-any.whl → 0.25.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.24.0.dist-info → gammasimtools-0.25.0.dist-info}/METADATA +1 -1
- {gammasimtools-0.24.0.dist-info → gammasimtools-0.25.0.dist-info}/RECORD +58 -55
- {gammasimtools-0.24.0.dist-info → gammasimtools-0.25.0.dist-info}/entry_points.txt +1 -0
- simtools/_version.py +2 -2
- simtools/application_control.py +50 -0
- simtools/applications/derive_psf_parameters.py +5 -0
- simtools/applications/derive_pulse_shape_parameters.py +195 -0
- simtools/applications/plot_array_layout.py +63 -1
- simtools/applications/simulate_flasher.py +3 -2
- simtools/applications/simulate_pedestals.py +1 -1
- simtools/applications/simulate_prod.py +8 -23
- simtools/applications/simulate_prod_htcondor_generator.py +7 -0
- simtools/applications/submit_array_layouts.py +5 -3
- simtools/applications/validate_file_using_schema.py +49 -123
- simtools/configuration/commandline_parser.py +8 -6
- simtools/corsika/corsika_config.py +197 -87
- simtools/data_model/model_data_writer.py +14 -2
- simtools/data_model/schema.py +112 -5
- simtools/data_model/validate_data.py +82 -48
- simtools/db/db_model_upload.py +2 -1
- simtools/db/mongo_db.py +133 -42
- simtools/dependencies.py +5 -9
- simtools/io/eventio_handler.py +128 -0
- simtools/job_execution/htcondor_script_generator.py +0 -2
- simtools/layout/array_layout_utils.py +1 -1
- simtools/model/array_model.py +36 -5
- simtools/model/model_parameter.py +0 -1
- simtools/model/model_repository.py +18 -5
- simtools/ray_tracing/psf_analysis.py +11 -8
- simtools/ray_tracing/psf_parameter_optimisation.py +822 -679
- simtools/reporting/docs_read_parameters.py +69 -9
- simtools/runners/corsika_runner.py +12 -3
- simtools/runners/corsika_simtel_runner.py +6 -0
- simtools/runners/runner_services.py +17 -7
- simtools/runners/simtel_runner.py +12 -54
- simtools/schemas/model_parameters/flasher_pulse_exp_decay.schema.yml +2 -0
- simtools/schemas/model_parameters/flasher_pulse_shape.schema.yml +50 -0
- simtools/schemas/model_parameters/flasher_pulse_width.schema.yml +2 -0
- simtools/schemas/simulation_models_info.schema.yml +2 -0
- simtools/simtel/pulse_shapes.py +268 -0
- simtools/simtel/simtel_config_writer.py +82 -1
- simtools/simtel/simtel_io_event_writer.py +2 -2
- simtools/simtel/simulator_array.py +58 -12
- simtools/simtel/simulator_light_emission.py +45 -8
- simtools/simulator.py +361 -347
- simtools/testing/assertions.py +62 -6
- simtools/testing/configuration.py +1 -1
- simtools/testing/log_inspector.py +4 -1
- simtools/testing/sim_telarray_metadata.py +1 -1
- simtools/testing/validate_output.py +44 -9
- simtools/utils/names.py +2 -4
- simtools/version.py +37 -0
- simtools/visualization/legend_handlers.py +14 -4
- simtools/visualization/plot_array_layout.py +229 -33
- simtools/visualization/plot_mirrors.py +837 -0
- simtools/simtel/simtel_io_file_info.py +0 -62
- {gammasimtools-0.24.0.dist-info → gammasimtools-0.25.0.dist-info}/WHEEL +0 -0
- {gammasimtools-0.24.0.dist-info → gammasimtools-0.25.0.dist-info}/licenses/LICENSE +0 -0
- {gammasimtools-0.24.0.dist-info → gammasimtools-0.25.0.dist-info}/top_level.txt +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
gammasimtools-0.
|
|
1
|
+
gammasimtools-0.25.0.dist-info/licenses/LICENSE,sha256=a2q6KVo33OrRL_7ZSk7BYOT8KkUNV3WAMZW8CHEDkDU,1548
|
|
2
2
|
simtools/__init__.py,sha256=yvx0i5ygbllmMtF2Tzy7pohvhQNH_dBdj0Bt8bKFYpc,231
|
|
3
|
-
simtools/_version.py,sha256=
|
|
4
|
-
simtools/application_control.py,sha256=
|
|
3
|
+
simtools/_version.py,sha256=Kl3WY3DazpC5lEIaMkcNebxoUZL2q26hCV9RsV8iNxM,706
|
|
4
|
+
simtools/application_control.py,sha256=8fFhUG2gbQd80mW-5C_LSM9zzr8H6TdhRf9ZJn99ZaY,5030
|
|
5
5
|
simtools/constants.py,sha256=3N5bc8MlMWRzcg8EeSJweoioEo_uhStMxAzdb85Apvw,966
|
|
6
|
-
simtools/dependencies.py,sha256=
|
|
7
|
-
simtools/simulator.py,sha256=
|
|
6
|
+
simtools/dependencies.py,sha256=lUB6S8Qy95ecnokcgsY_NmgNBznUtkpa9kjztxkswRY,7133
|
|
7
|
+
simtools/simulator.py,sha256=HNulg-jR2mh1yHcr-DzC2GunWm0JnT7bHRauvMe5nO4,30463
|
|
8
8
|
simtools/telescope_trigger_rates.py,sha256=_2NUG8UnhfpMGhaEDgHUOOdnweCUcRTrTOkGGYInHqo,3984
|
|
9
|
-
simtools/version.py,sha256=
|
|
9
|
+
simtools/version.py,sha256=zVXYJYK7Q9c7stKrbbeJekkIZ-KQkGrHUnnKiVxXd20,7246
|
|
10
10
|
simtools/applications/calculate_incident_angles.py,sha256=utE5N6F_RjtNGxYx-HbAcQ4l6DtAmoZxYRgO7-jTM2g,6042
|
|
11
11
|
simtools/applications/convert_all_model_parameters_from_simtel.py,sha256=ml3rLe9-nRdPQBARpssK9aU0StwQ27RaUa-_6H-ZlA0,11893
|
|
12
12
|
simtools/applications/convert_geo_coordinates_of_array_elements.py,sha256=ALghVkw2ElrcqySz1teIeBhyzcMEoqDjDQO6bUw7cHw,5655
|
|
@@ -23,7 +23,8 @@ simtools/applications/db_upload_model_repository.py,sha256=StVJU6alEddTDWTqf_GPO
|
|
|
23
23
|
simtools/applications/derive_ctao_array_layouts.py,sha256=MTYrHjOkyzE8aBKeluGebibV9T7ZOocRF30GbHtzsbs,4134
|
|
24
24
|
simtools/applications/derive_mirror_rnda.py,sha256=S_9fUZ1TQbKltX86IWhS_10_KDF1abtxaixGh1UUGms,8964
|
|
25
25
|
simtools/applications/derive_photon_electron_spectrum.py,sha256=-Drq6QPo7xXjGGmdDzGKJ6x1Byg9_jOaD-fSKG6CJQE,3988
|
|
26
|
-
simtools/applications/derive_psf_parameters.py,sha256=
|
|
26
|
+
simtools/applications/derive_psf_parameters.py,sha256=x1HVRgsQeCtyuUejfdwXYpZ73wmJQU7_ZI3mfP5RAws,8049
|
|
27
|
+
simtools/applications/derive_pulse_shape_parameters.py,sha256=D399tpUK2DQ_76I2GbVIf6DW-Mkh1WlcoPqFdesyddg,6243
|
|
27
28
|
simtools/applications/derive_trigger_rates.py,sha256=4kdJjc7-pB2XiuEX9BHzbJ9XXBZ0vN0XITVtvQgq11k,2515
|
|
28
29
|
simtools/applications/docs_produce_array_element_report.py,sha256=CW2s2JwT-LvsBNjgbJayEjR42oYx8grWs96zP_VR9LQ,2556
|
|
29
30
|
simtools/applications/docs_produce_calibration_reports.py,sha256=sOmC6uNjFaawj26nqJa3GsWAnQd0F96W6WKm3gj7J0I,1575
|
|
@@ -38,7 +39,7 @@ simtools/applications/maintain_simulation_model_add_production.py,sha256=lBBm6F5
|
|
|
38
39
|
simtools/applications/maintain_simulation_model_compare_productions.py,sha256=aD6eZq1RUMnE4J-AuNjuHCKy_vDmnFnhPCPO0wxshbA,3194
|
|
39
40
|
simtools/applications/maintain_simulation_model_verify_production_tables.py,sha256=YpnP7EeaheV03KwW7ryEc4GHIqaEHOFkG-RqJOH64RE,1793
|
|
40
41
|
simtools/applications/merge_tables.py,sha256=N7MGX-VD2tu72RWvSDEb1zfls6px-wqLU4t5Lbl9V6E,2656
|
|
41
|
-
simtools/applications/plot_array_layout.py,sha256=
|
|
42
|
+
simtools/applications/plot_array_layout.py,sha256=x9IIj7sJrBz_SjKXXHEhZhN1QpMrQ1D3I5_dHCWqMoY,13494
|
|
42
43
|
simtools/applications/plot_simtel_events.py,sha256=aIINMATBNEs5-K72ZyWVBLyd83-70eMjERMNKvknSUE,6787
|
|
43
44
|
simtools/applications/plot_tabular_data.py,sha256=jsGBWFelKSD4TOI4WZHdez-mM9l666RLctJvqCkZfus,2691
|
|
44
45
|
simtools/applications/plot_tabular_data_for_model_parameter.py,sha256=zBFY5Vb6ns_gWTQN9BLTzhq-7x3pvnzS6CC6LR6y_CM,3161
|
|
@@ -48,54 +49,55 @@ simtools/applications/production_derive_statistics.py,sha256=NT_EL-jUg151QrCY1E1
|
|
|
48
49
|
simtools/applications/production_generate_grid.py,sha256=L_LlHA3Uly6P3Rx4eaxVvPXz3Z8VAwNv_7XO6Hm2VXs,5824
|
|
49
50
|
simtools/applications/production_merge_corsika_limits.py,sha256=sYOTG731ja0xW5p2Pq4dJdOuKwWi7MphASdZ-dg6osY,7588
|
|
50
51
|
simtools/applications/run_application.py,sha256=XaDRG-1TptvMSXwNis1z_n43YqkEI_fVjZiTImjl6-o,3947
|
|
51
|
-
simtools/applications/simulate_flasher.py,sha256=
|
|
52
|
+
simtools/applications/simulate_flasher.py,sha256=dTtvdkbb3NskiAS2J4AOUuETIN1jt-j09nDdw_8qrno,4695
|
|
52
53
|
simtools/applications/simulate_illuminator.py,sha256=3UcrubHk_aErIsPW0rJTtlpXPnYlEZaqWBuF1IW-0go,4220
|
|
53
|
-
simtools/applications/simulate_pedestals.py,sha256=
|
|
54
|
-
simtools/applications/simulate_prod.py,sha256=
|
|
55
|
-
simtools/applications/simulate_prod_htcondor_generator.py,sha256=
|
|
56
|
-
simtools/applications/submit_array_layouts.py,sha256=
|
|
54
|
+
simtools/applications/simulate_pedestals.py,sha256=n5zsHu4Y9wZdnmI191v-bXJdAZg1doIk9HFMS-xR66o,3724
|
|
55
|
+
simtools/applications/simulate_prod.py,sha256=vqGd4KPuWgvJtF0p0H0K0H4YfiPezjUNmUqRAcYqdqA,5346
|
|
56
|
+
simtools/applications/simulate_prod_htcondor_generator.py,sha256=MZc6BuhB5UO_b-j7x4ag_3Jf3Cii2YAvghOd17ZaQOY,3367
|
|
57
|
+
simtools/applications/submit_array_layouts.py,sha256=xlIG3kAJZtSOr1RHeMCfOn9Y-7fi49ppLUJS_pQgfFA,2863
|
|
57
58
|
simtools/applications/submit_data_from_external.py,sha256=4uXI_JSKNpQkSbuUfEWQgtvH-on7nffIgQHbpzjN0Bc,3043
|
|
58
59
|
simtools/applications/submit_model_parameter_from_external.py,sha256=UwpSclpjBXN2Vu8aQzHHRffj-Tt3M2IxqIcTnviRwuM,3754
|
|
59
60
|
simtools/applications/validate_camera_efficiency.py,sha256=sPmIiQYQM9ewco2ExKI_QJ_nL1wjwmY5NOSN6Us0Wjk,4949
|
|
60
61
|
simtools/applications/validate_camera_fov.py,sha256=hU_Ul_E3c_Hl-dKLIlzZPgWyDillNOJsLpQu7_L3f44,4535
|
|
61
62
|
simtools/applications/validate_cumulative_psf.py,sha256=yeki5GV0vFX6P5yuMCAPkfFI2C_S8OjrfZlSpn2ol00,6430
|
|
62
|
-
simtools/applications/validate_file_using_schema.py,sha256=
|
|
63
|
+
simtools/applications/validate_file_using_schema.py,sha256=W1om-MHJA105NAOkRMZ4q7HNjfw7E9Xh8ExZrvic17A,4455
|
|
63
64
|
simtools/applications/validate_optics.py,sha256=7daD4S_9kze-MkmPUioekde3cgkmtfLVbl1CbqC6mYY,6451
|
|
64
65
|
simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py,sha256=MG7F0_QTEjt2_1rryyVTDDjR9rHHWOGDHuP0fAVWolQ,5172
|
|
65
66
|
simtools/camera/camera_efficiency.py,sha256=DMw438cJ6gcnZyXHuTDAohk5duCF8EWpCqnE93FXziA,18927
|
|
66
67
|
simtools/camera/single_photon_electron_spectrum.py,sha256=eQTpmy8NH8v5kkrlFjYmlIQhqcDwXHy44q-59PtXZEI,11572
|
|
67
|
-
simtools/configuration/commandline_parser.py,sha256=
|
|
68
|
+
simtools/configuration/commandline_parser.py,sha256=ZSrtN5FRHn-qM5s3fKEhXnVqFbXacXE3VmWX_Q9nUfM,28016
|
|
68
69
|
simtools/configuration/configurator.py,sha256=sxaXZNbEb2Lli9092vmXsp6L0hbxZM9dZ6WtC25QYdw,14788
|
|
69
|
-
simtools/corsika/corsika_config.py,sha256=
|
|
70
|
+
simtools/corsika/corsika_config.py,sha256=P_RjtTl2AHXBHKkvM5EGIGKIiUIMkkmGz2HV2jUknuA,34207
|
|
70
71
|
simtools/corsika/corsika_histograms.py,sha256=nbxSoAj_oW3KABfo46ioj9W2VpXKWKw5mOiMeb1nGjs,70524
|
|
71
72
|
simtools/corsika/primary_particle.py,sha256=WK0UKYtdPSefes286ZGXsoGV9r6JqH19Tk9myza_plU,6613
|
|
72
73
|
simtools/data_model/data_reader.py,sha256=abqVujfDYu1SHbMhpqRA851_WDWZr2SOoi35p0hZ_7s,4051
|
|
73
74
|
simtools/data_model/format_checkers.py,sha256=bXF9dItkpZCGXAHdCH7vhgxEsIhXLLVFLOha-hKRspY,1949
|
|
74
75
|
simtools/data_model/metadata_collector.py,sha256=31j1l6Kl3gzVfpWql0ft-Dl0uvsBc0nF18oN9hp849Q,23513
|
|
75
76
|
simtools/data_model/metadata_model.py,sha256=wH52gC6MdwFw9A6UswZLsRlss7vbXDyxybBaI_UMt18,4642
|
|
76
|
-
simtools/data_model/model_data_writer.py,sha256=
|
|
77
|
-
simtools/data_model/schema.py,sha256=
|
|
78
|
-
simtools/data_model/validate_data.py,sha256=
|
|
77
|
+
simtools/data_model/model_data_writer.py,sha256=MaVZVQP6YVei493DFMIkj41eIlXZCJNlaObwv-iUspY,17192
|
|
78
|
+
simtools/data_model/schema.py,sha256=VkmWByIY9fkRMbCJRBLlg-G33deGHYPs0AShTv23f6Q,14257
|
|
79
|
+
simtools/data_model/validate_data.py,sha256=7S-cxzXUvDaQCCWyvV7QTx50pt7eHmuVC9jzBM2z9kk,32566
|
|
79
80
|
simtools/db/db_handler.py,sha256=ACBqi0k-4fqbq9gMmLg1wEa4LWWTXQuZQjoBg3VIjks,29418
|
|
80
|
-
simtools/db/db_model_upload.py,sha256=
|
|
81
|
-
simtools/db/mongo_db.py,sha256=
|
|
81
|
+
simtools/db/db_model_upload.py,sha256=zHPmvNM5QG4BTIfHFCo3qJn8f5pnuNScdKKOUGQORnc,11872
|
|
82
|
+
simtools/db/mongo_db.py,sha256=Efgxk_0dJMnwW6fPaPbEfvNU2tEbJcDDTlVTGwqTkxQ,19393
|
|
82
83
|
simtools/io/ascii_handler.py,sha256=S2fP2x6vE4nEF5g0NRARIWKs8vKU3c9SW8XtcdrwhQU,7826
|
|
84
|
+
simtools/io/eventio_handler.py,sha256=_72U8n6bikGrd9rFlimHOU7-mBaDtTdozkE4Bb5hJBw,4004
|
|
83
85
|
simtools/io/hdf5_handler.py,sha256=Jnya-FMhmt_jQHIMQawUZrJA6S3QFo1BGGVt2Jaj89g,4177
|
|
84
86
|
simtools/io/io_handler.py,sha256=qC4-htBLvHcHgHfsZeDJllevadpMBN7KtFPnuHSXrpI,3439
|
|
85
87
|
simtools/io/legacy_data_handler.py,sha256=ZJunKgO0gjCLHtBqVtYUAiD88ouJio1_w_XJHjjp_6U,1260
|
|
86
88
|
simtools/io/table_handler.py,sha256=YJqbam9sBjKAhHDyzFd0X0duWT1jnYPyk0La9Gp2jeo,10713
|
|
87
|
-
simtools/job_execution/htcondor_script_generator.py,sha256=
|
|
89
|
+
simtools/job_execution/htcondor_script_generator.py,sha256=np_mPnu8HdTQdTlb_MpTsNcBa9g6K3PJfJ1mmLiL2xE,4179
|
|
88
90
|
simtools/job_execution/job_manager.py,sha256=xWZlf1t6RuKvTEp1nNkNkkrUtR6smulxGfV8_WN_vG8,4716
|
|
89
91
|
simtools/layout/array_layout.py,sha256=sk1yIEEBx2MlbNyISe6K7vnmQuyp-QAuoFPF0U6nDRo,25073
|
|
90
|
-
simtools/layout/array_layout_utils.py,sha256=
|
|
92
|
+
simtools/layout/array_layout_utils.py,sha256=ueieDAWw9wi4E4eMWRGR4yQ2RAfu6amFAwYrF-gXZfg,12581
|
|
91
93
|
simtools/layout/geo_coordinates.py,sha256=9kKnXFi9vrfYKG_9elzFuzzssGFEUzxMubaclITkW_g,5944
|
|
92
94
|
simtools/layout/telescope_position.py,sha256=tXXf2_kr6ouPrDXWx20vf6c-yEo11AjN8_gJ2EwL5-g,20097
|
|
93
|
-
simtools/model/array_model.py,sha256=
|
|
95
|
+
simtools/model/array_model.py,sha256=q_ZWTwGyxGw1x_IS2-VjbKUMnELYtzs6oVqpne-1kOg,18942
|
|
94
96
|
simtools/model/calibration_model.py,sha256=omSgM2CIMh7HB2Bnm3OFjvWRMNBfkpGd6AnYayAEGiY,1563
|
|
95
97
|
simtools/model/camera.py,sha256=ewqhjovhxIX8a2hEHzxqZy2Mcfp621xk2nikxGDXDO4,21381
|
|
96
98
|
simtools/model/mirrors.py,sha256=g0eS4qFzUmo9UIakC4CDo7ourAGuFd3EfzL9RdrF9zg,9098
|
|
97
|
-
simtools/model/model_parameter.py,sha256=
|
|
98
|
-
simtools/model/model_repository.py,sha256=
|
|
99
|
+
simtools/model/model_parameter.py,sha256=mUaNsoPTrGyzYUVtWBwbn8dQzJiaOS861Y5CoBtD6F0,22796
|
|
100
|
+
simtools/model/model_repository.py,sha256=32B4CaZgSZuWj9GckmfwBhKVApd3UikL_hsfjtuDs0k,18557
|
|
99
101
|
simtools/model/model_utils.py,sha256=OUHsOKOhXDVCTRpSRCO4iJZncUB_6hy0uUaF2AeooI0,2963
|
|
100
102
|
simtools/model/site_model.py,sha256=ueu1t_fkpTZ-OnMYVlJyKbfySkqn_tVQN90NcyzSrTw,7060
|
|
101
103
|
simtools/model/telescope_model.py,sha256=No2BtJu5flgMTP6QoSwfsGd6RXfqabOobqvtftQlek0,14432
|
|
@@ -108,17 +110,17 @@ simtools/production_configuration/interpolation_handler.py,sha256=CWJa9WfBhHLTJD
|
|
|
108
110
|
simtools/production_configuration/merge_corsika_limits.py,sha256=t9JDvrpkP33ISCRCPVLE8GunjHDF_RYlRPqXI469l0w,20838
|
|
109
111
|
simtools/ray_tracing/incident_angles.py,sha256=sbrj20XAikRH_jH-tW88PQveT97w9mdAzVjvp0OsAns,25967
|
|
110
112
|
simtools/ray_tracing/mirror_panel_psf.py,sha256=0TGSkeXmRSo25mIhoNqrEQJgMWK-oPk7TT-8VkuMsxc,11267
|
|
111
|
-
simtools/ray_tracing/psf_analysis.py,sha256=
|
|
112
|
-
simtools/ray_tracing/psf_parameter_optimisation.py,sha256=
|
|
113
|
+
simtools/ray_tracing/psf_analysis.py,sha256=imSFCWSyRfcpqLMeSIwOoDWVwzLlHlnT7N0y6Qi2V2s,18290
|
|
114
|
+
simtools/ray_tracing/psf_parameter_optimisation.py,sha256=wH3IwL4TIrB9UprjXzj2YGJul_wHgrsMAXode2j-cBU,51621
|
|
113
115
|
simtools/ray_tracing/ray_tracing.py,sha256=gPnhEBPlSE51jt3k3brvtuJZQT4MejPeqQm1alLaUqU,21959
|
|
114
116
|
simtools/reporting/docs_auto_report_generator.py,sha256=Ee-zBf4pQahaN4RYv2aN_UEngFVMbzVqr_X3l_Q2vy8,14098
|
|
115
|
-
simtools/reporting/docs_read_parameters.py,sha256=
|
|
117
|
+
simtools/reporting/docs_read_parameters.py,sha256=3BQ22fs8_1-23VO6vwgf7WVuJJ0qUHz_fhl88gB3W4E,41624
|
|
116
118
|
simtools/resources/array-element-ids.json,sha256=W8cijMEmHJ28RLIyixVVdHr16-iUbIuURT9QIoIzCoY,4566
|
|
117
119
|
simtools/resources/array_elements.yml,sha256=MG-TyocXQCj6htA8af4nBzCxcfFZHs1XXtSfSl4kmBo,4285
|
|
118
|
-
simtools/runners/corsika_runner.py,sha256=
|
|
119
|
-
simtools/runners/corsika_simtel_runner.py,sha256=
|
|
120
|
-
simtools/runners/runner_services.py,sha256=
|
|
121
|
-
simtools/runners/simtel_runner.py,sha256=
|
|
120
|
+
simtools/runners/corsika_runner.py,sha256=mDD4_YtwIm8wvQtBTGBCrqtlj9sMKR-CZZpWmS2hy_0,9667
|
|
121
|
+
simtools/runners/corsika_simtel_runner.py,sha256=cki9Cc0wNo6zErrWJRkV-V-_J3g3eIboljiYg5clgFc,7795
|
|
122
|
+
simtools/runners/runner_services.py,sha256=_UhgQOOsIFpF2fiB6C7WhQA8jPIZhafzGbuErvlLLXI,10774
|
|
123
|
+
simtools/runners/simtel_runner.py,sha256=BAgVGLIbPbkGxxPu1ZtFFwIlYv7o84STdVkgFdky4jY,6581
|
|
122
124
|
simtools/runners/simtools_runner.py,sha256=i9E50ha1-vOy5yRSP6BbjuP5PaHKLLj2rD74Pzah2cg,8262
|
|
123
125
|
simtools/schemas/application_workflow.metaschema.yml,sha256=Gd2YIXT7DgdnlP0P-08ywGlle3RMhFqdPcHdrxNw6Gk,5657
|
|
124
126
|
simtools/schemas/common_definitions.schema.yml,sha256=_vzwIM-qIqi32HrjMHIH0dO0STeCZFsAIli6acFol7Y,1180
|
|
@@ -128,7 +130,7 @@ simtools/schemas/model_parameter_and_data_schema.metaschema.yml,sha256=ktpW7ym7H
|
|
|
128
130
|
simtools/schemas/plot_configuration.metaschema.yml,sha256=ALz6d3btyr0ao50nJ0tShMlMgR4SKP6MRC_qxiPjwmc,4408
|
|
129
131
|
simtools/schemas/production_configuration_metrics.schema.yml,sha256=9IOmDjtAyH-8Ti5hoxKKjZ0kl7E7iKBBDvTL8SSv_To,1935
|
|
130
132
|
simtools/schemas/production_tables.schema.yml,sha256=diTGV8z8K4yx4YDv0ZEEpTGimijru0PsvZMhaMN26_A,1428
|
|
131
|
-
simtools/schemas/simulation_models_info.schema.yml,sha256=
|
|
133
|
+
simtools/schemas/simulation_models_info.schema.yml,sha256=xGNHOuouJ0HEhBDeI-u4Euvj2zl_X4ba-jLTkdy8UJg,2308
|
|
132
134
|
simtools/schemas/input/MST_mirror_2f_measurements.schema.yml,sha256=2kFAIxgR36XIrTNvfvPB16OdnpkNdkXeCGnI01Tbc3Y,1124
|
|
133
135
|
simtools/schemas/input/single_pe_spectrum.schema.yml,sha256=hLD8JgChI1eV2yl7E_e_uvQebsRuG18ag_4aEiLjToM,1244
|
|
134
136
|
simtools/schemas/model_parameters/adjust_gain.schema.yml,sha256=n3k7JCkxDyl7LgU0y6-1BmxMO3yfy_Ab_emef4tEUTw,821
|
|
@@ -250,10 +252,10 @@ simtools/schemas/model_parameters/flasher_bunch_size.schema.yml,sha256=DMxKdnJhb
|
|
|
250
252
|
simtools/schemas/model_parameters/flasher_external_trigger.schema.yml,sha256=_5ebPJSy1e7UzfVAvpZ2t0x4xlSqy_E4SlXilSLUQCY,1047
|
|
251
253
|
simtools/schemas/model_parameters/flasher_photons.schema.yml,sha256=h8wL2osBXIb5CTiTAWr4bcyFhpwKLzEx7QYeQgG8D3M,950
|
|
252
254
|
simtools/schemas/model_parameters/flasher_position.schema.yml,sha256=8R9jKFPuB0XioJGs3xUVUwirIZpl-0Ra20VISXTk274,1298
|
|
253
|
-
simtools/schemas/model_parameters/flasher_pulse_exp_decay.schema.yml,sha256=
|
|
255
|
+
simtools/schemas/model_parameters/flasher_pulse_exp_decay.schema.yml,sha256=CYztKDC7m_Cb4efLmLTjvB08z-pj5KjiGs5sBbLVZxw,820
|
|
254
256
|
simtools/schemas/model_parameters/flasher_pulse_offset.schema.yml,sha256=7Yhw_U-TwpQvUJ2CXP87AMprSRiODOcJz9ySj-MQDvY,1104
|
|
255
|
-
simtools/schemas/model_parameters/flasher_pulse_shape.schema.yml,sha256
|
|
256
|
-
simtools/schemas/model_parameters/flasher_pulse_width.schema.yml,sha256=
|
|
257
|
+
simtools/schemas/model_parameters/flasher_pulse_shape.schema.yml,sha256=-EIevi9dyEyExDGtN5FvknNttJ9NXkkp93zsabmoUxA,2105
|
|
258
|
+
simtools/schemas/model_parameters/flasher_pulse_width.schema.yml,sha256=CGBf_LHhP1Qn8NPi20TF8Imx1NgUIX693-02DaFvQ9o,916
|
|
257
259
|
simtools/schemas/model_parameters/flasher_type.schema.yml,sha256=YiACuxCkUn-llJ5KuiqVo_wUxQcp6X4G3YnwHA6WOW8,685
|
|
258
260
|
simtools/schemas/model_parameters/flasher_var_photons.schema.yml,sha256=iMT9UfYad9EzVn0582aJltzzTXNl4H12RZO_zCi8FJY,796
|
|
259
261
|
simtools/schemas/model_parameters/flasher_wavelength.schema.yml,sha256=CQ0GARblgMunkn9iRmbpdhJiYq1vcVRbUBQEJJHYdRQ,889
|
|
@@ -375,41 +377,42 @@ simtools/schemas/model_parameters/transit_time_random.schema.yml,sha256=M9VdVDXo
|
|
|
375
377
|
simtools/schemas/model_parameters/trigger_current_limit.schema.yml,sha256=WTz-6fNrY9RSyVmAM7R7Bz-1gT0aJtl7GZ2urtDNEsk,677
|
|
376
378
|
simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml,sha256=U8ctXld0Ukz3JaVR0UGlxewzk-4RlsE3Gdq0hMW4qfQ,1476
|
|
377
379
|
simtools/schemas/model_parameters/trigger_pixels.schema.yml,sha256=3-n2PBl9LQ4PBVOgR__XQpFYGUYYS_Jju_pvGSucTq8,1012
|
|
380
|
+
simtools/simtel/pulse_shapes.py,sha256=Z4Lz1EnwHZ4fwiWJrZPYOuQU1Khds0_-_pDjTpzvAyw,8224
|
|
378
381
|
simtools/simtel/simtel_config_reader.py,sha256=_R1eLpZPqSu2MbiEfN1zYTdr8jJl1uameGyaxupACe0,15005
|
|
379
|
-
simtools/simtel/simtel_config_writer.py,sha256=
|
|
382
|
+
simtools/simtel/simtel_config_writer.py,sha256=TFRaXXIPNLrOc2GHm8wrA2e_KeXUlyP4P6ZGSNHtl4s,34234
|
|
380
383
|
simtools/simtel/simtel_io_event_histograms.py,sha256=M0EnmiS9AbzwLyZapkP2JJc3Dze40NoPTHKtWHxe1kg,17688
|
|
381
384
|
simtools/simtel/simtel_io_event_reader.py,sha256=YPP4Cs4NncTIXxbu40veksnJ_3_cZ00-56kGoEuR8so,14595
|
|
382
|
-
simtools/simtel/simtel_io_event_writer.py,sha256=
|
|
383
|
-
simtools/simtel/simtel_io_file_info.py,sha256=T2xtdz-0pDZFf7cJw7brBxA9OHbDuBossTzY60RHFfw,1775
|
|
385
|
+
simtools/simtel/simtel_io_event_writer.py,sha256=uX_YGkH4orqQrtrowVZ-LQ96fumHMTFOHffi5EwUpLM,12749
|
|
384
386
|
simtools/simtel/simtel_io_metadata.py,sha256=1BA32c-wHVD2MMfrXYdQuYPq2uPDyWBIpNGbwRMwjtc,6084
|
|
385
387
|
simtools/simtel/simtel_table_reader.py,sha256=m4h74MuvnA15q1-4-esypvBKYPyeZS-1CqdvyJ4HVXc,15101
|
|
386
|
-
simtools/simtel/simulator_array.py,sha256=
|
|
388
|
+
simtools/simtel/simulator_array.py,sha256=BcUuYN6fwgZnMWzu2H22LAmvAXqpHd9a2AtnajI0N2E,10545
|
|
387
389
|
simtools/simtel/simulator_camera_efficiency.py,sha256=BQg1dAD7sqCJitBJiGSk7VOZCjF01OeUXk5qyh_0I18,11730
|
|
388
|
-
simtools/simtel/simulator_light_emission.py,sha256=
|
|
390
|
+
simtools/simtel/simulator_light_emission.py,sha256=kk3MiZDANfS2b9WLvetNCg6aPQUliZ1im2Qoamjn_zQ,21944
|
|
389
391
|
simtools/simtel/simulator_ray_tracing.py,sha256=ssgcFMSFZNIwzDeHuo7-fN-djNbru59a2pK-iZL33KA,11525
|
|
390
|
-
simtools/testing/assertions.py,sha256=
|
|
391
|
-
simtools/testing/configuration.py,sha256=
|
|
392
|
+
simtools/testing/assertions.py,sha256=Edl0QaKeQENnvfWN1EVl1kAk42JQlB5Qjc9xQ_sKmnI,8031
|
|
393
|
+
simtools/testing/configuration.py,sha256=GjWrFqWzLRd6UG9kCEv0XzdRNcBbN3Zc7aGjoBFls3c,8273
|
|
392
394
|
simtools/testing/helpers.py,sha256=LTVlkt36gQ0AtIK2mN6toI3vxwUPCjV5VMLA0nkS07U,1829
|
|
393
|
-
simtools/testing/log_inspector.py,sha256=
|
|
394
|
-
simtools/testing/sim_telarray_metadata.py,sha256=
|
|
395
|
-
simtools/testing/validate_output.py,sha256=
|
|
395
|
+
simtools/testing/log_inspector.py,sha256=ZN-X52i1HLP7jGvw-8PYex23U64QwpvYPw8-OvVbhCc,1535
|
|
396
|
+
simtools/testing/sim_telarray_metadata.py,sha256=gcrmn93HPH3bLZdyjnBRZ_MZs4mA51mbQnBltKt1hhI,7937
|
|
397
|
+
simtools/testing/validate_output.py,sha256=ReaScg16pVXDZ7CX3AnGL7MHfA9uyE8zTe1xEjkP5Bk,14675
|
|
396
398
|
simtools/utils/general.py,sha256=SNZNCzDnN2V-IbPsM5eqH6gcyuCf2lwx32vlAvuZhdQ,24000
|
|
397
399
|
simtools/utils/geometry.py,sha256=VZlovI6E6p6EloqeM9kJ-YgbilZ_4dNIwoJ97evP5B0,9098
|
|
398
|
-
simtools/utils/names.py,sha256=
|
|
400
|
+
simtools/utils/names.py,sha256=zujnLpGAoHQuCub1SmMv305sTNFSPSyey_QZjSHjdT0,21853
|
|
399
401
|
simtools/utils/value_conversion.py,sha256=UNPNjqCeuYRscZ6UJbVK2VhbViU97TsYulc7s23Mwao,6482
|
|
400
|
-
simtools/visualization/legend_handlers.py,sha256=
|
|
401
|
-
simtools/visualization/plot_array_layout.py,sha256=
|
|
402
|
+
simtools/visualization/legend_handlers.py,sha256=D-EK2WjJAkh9f0pqsfG21TofqchL6FSiiUIAzamTjuA,10573
|
|
403
|
+
simtools/visualization/plot_array_layout.py,sha256=8YslFtXRa5jtiuBUB3im0slifWC8T1gT6JLVnKm0B-8,16548
|
|
402
404
|
simtools/visualization/plot_camera.py,sha256=dLXKHYfY_elqaKhj91HlntASoVixTrpc_Kf0jPU8RmU,11167
|
|
403
405
|
simtools/visualization/plot_corsika_histograms.py,sha256=6DV0NT-b-yYZ9dbCgSU3UCUHJTTWkthBsXaYgrF7JAg,21874
|
|
404
406
|
simtools/visualization/plot_incident_angles.py,sha256=kj_YcBrFRR6C9IUe4bhekfXR9UrPBmwXBtSvrFdMRf0,13424
|
|
407
|
+
simtools/visualization/plot_mirrors.py,sha256=nR8yDGCp2eQefMJNGyJdcaLAQl2klAAL6j3kgzcicmQ,26162
|
|
405
408
|
simtools/visualization/plot_pixels.py,sha256=QsMsRbjXyP7i15zTGUZWKvkVo8RRw4Pp-47xPRerr9Y,20564
|
|
406
409
|
simtools/visualization/plot_psf.py,sha256=0y3sIilriIqarFSv-yfod-1wtySTNBkq5ST79_8sFsU,25299
|
|
407
410
|
simtools/visualization/plot_simtel_event_histograms.py,sha256=o9fPkKE1568MRumPVRyBs8ah5eyTN2mCLXseEwAy4RA,12751
|
|
408
411
|
simtools/visualization/plot_simtel_events.py,sha256=zvfKboltaiz0yTPAv2_Is29hJlHbPMgofFhBEWNh0Ws,31450
|
|
409
412
|
simtools/visualization/plot_tables.py,sha256=T3pfuj8YKeCZhef9KY2ne8dIzxnYnKiWDDN7aptjHXY,8662
|
|
410
413
|
simtools/visualization/visualize.py,sha256=0vs7rt6OTCdrai7AO3bbd4sLuh1oEb_zAG_k53dgZVo,18815
|
|
411
|
-
gammasimtools-0.
|
|
412
|
-
gammasimtools-0.
|
|
413
|
-
gammasimtools-0.
|
|
414
|
-
gammasimtools-0.
|
|
415
|
-
gammasimtools-0.
|
|
414
|
+
gammasimtools-0.25.0.dist-info/METADATA,sha256=jrVF1kyY2u2gWsEswvnWh3zKzvXy4fiXS5-KVi61MKk,5977
|
|
415
|
+
gammasimtools-0.25.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
416
|
+
gammasimtools-0.25.0.dist-info/entry_points.txt,sha256=9qlTxm47fhxhKRWChXjBEbwRi3sdCOo3RXTJAo478z4,5128
|
|
417
|
+
gammasimtools-0.25.0.dist-info/top_level.txt,sha256=9Yi7Q7aQX6alvpP2YGQtIYo208wdGkXUApHboEdj-ys,9
|
|
418
|
+
gammasimtools-0.25.0.dist-info/RECORD,,
|
|
@@ -16,6 +16,7 @@ simtools-derive-ctao-array-layouts = simtools.applications.derive_ctao_array_lay
|
|
|
16
16
|
simtools-derive-mirror-rnda = simtools.applications.derive_mirror_rnda:main
|
|
17
17
|
simtools-derive-photon-electron-spectrum = simtools.applications.derive_photon_electron_spectrum:main
|
|
18
18
|
simtools-derive-psf-parameters = simtools.applications.derive_psf_parameters:main
|
|
19
|
+
simtools-derive-pulse-shape-parameters = simtools.applications.derive_pulse_shape_parameters:main
|
|
19
20
|
simtools-derive-trigger-rates = simtools.applications.derive_trigger_rates:main
|
|
20
21
|
simtools-docs-produce-array-element-report = simtools.applications.docs_produce_array_element_report:main
|
|
21
22
|
simtools-docs-produce-calibration-reports = simtools.applications.docs_produce_calibration_reports: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.25.0'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 25, 0)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
simtools/application_control.py
CHANGED
|
@@ -5,6 +5,8 @@ from dataclasses import dataclass
|
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
|
|
7
7
|
import simtools.utils.general as gen
|
|
8
|
+
from simtools import version
|
|
9
|
+
from simtools.db import db_handler
|
|
8
10
|
from simtools.io import io_handler
|
|
9
11
|
|
|
10
12
|
|
|
@@ -83,6 +85,8 @@ def startup_application(parse_function, setup_io_handler=True, logger_name=None)
|
|
|
83
85
|
|
|
84
86
|
io_handler_instance = io_handler.IOHandler() if setup_io_handler else None
|
|
85
87
|
|
|
88
|
+
_resolve_model_version_to_latest_patch(args_dict, db_config, logger)
|
|
89
|
+
|
|
86
90
|
return ApplicationContext(
|
|
87
91
|
args=args_dict,
|
|
88
92
|
db_config=db_config,
|
|
@@ -116,3 +120,49 @@ def get_application_label(file_path):
|
|
|
116
120
|
# label will be the filename without .py extension
|
|
117
121
|
"""
|
|
118
122
|
return Path(file_path).stem
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def _resolve_model_version_to_latest_patch(args_dict, db_config, logger):
|
|
126
|
+
"""
|
|
127
|
+
Update model_version in args_dict to latest patch version if needed.
|
|
128
|
+
|
|
129
|
+
Updated to the latest patch version requires to setup a DB connection.
|
|
130
|
+
|
|
131
|
+
Parameters
|
|
132
|
+
----------
|
|
133
|
+
args_dict : dict
|
|
134
|
+
Parsed command line arguments and configuration.
|
|
135
|
+
db_config : dict
|
|
136
|
+
Database configuration dictionary.
|
|
137
|
+
logger : logging.Logger
|
|
138
|
+
Logger instance for logging information.
|
|
139
|
+
"""
|
|
140
|
+
mv = args_dict.get("model_version")
|
|
141
|
+
if not mv or not db_config:
|
|
142
|
+
return
|
|
143
|
+
|
|
144
|
+
versions = mv if isinstance(mv, list) else [mv]
|
|
145
|
+
kinds = [version.version_kind(v) for v in versions]
|
|
146
|
+
if all(k == version.MAJOR_MINOR_PATCH for k in kinds):
|
|
147
|
+
return
|
|
148
|
+
|
|
149
|
+
try:
|
|
150
|
+
db = db_handler.DatabaseHandler(db_config)
|
|
151
|
+
model_versions = db.get_model_versions()
|
|
152
|
+
except (ValueError, KeyError, OSError) as exc:
|
|
153
|
+
logger.warning(f"Could not connect to database, using version(s) as-is. Error: {exc}")
|
|
154
|
+
return
|
|
155
|
+
|
|
156
|
+
def resolve(v, k):
|
|
157
|
+
if k == version.MAJOR_MINOR_PATCH:
|
|
158
|
+
return v
|
|
159
|
+
try:
|
|
160
|
+
latest = version.resolve_version_to_latest_patch(v, model_versions)
|
|
161
|
+
logger.info(f"Resolved {v} to {latest}")
|
|
162
|
+
return latest
|
|
163
|
+
except (ValueError, KeyError) as exc:
|
|
164
|
+
logger.warning(f"Could not resolve {v}, using as-is. Error: {exc}")
|
|
165
|
+
return v
|
|
166
|
+
|
|
167
|
+
resolved = [resolve(v, k) for v, k in zip(versions, kinds)]
|
|
168
|
+
args_dict["model_version"] = resolved if isinstance(mv, list) else resolved[0]
|
|
@@ -187,6 +187,11 @@ def _parse():
|
|
|
187
187
|
type=float,
|
|
188
188
|
default=0.8,
|
|
189
189
|
)
|
|
190
|
+
config.parser.add_argument(
|
|
191
|
+
"--cleanup",
|
|
192
|
+
help="Remove intermediate *.log and *.lis* files after optimization.",
|
|
193
|
+
action="store_true",
|
|
194
|
+
)
|
|
190
195
|
return config.initialize(
|
|
191
196
|
db_config=True,
|
|
192
197
|
simulation_model=["telescope", "model_version", "parameter_version"],
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
r"""Derive Gaussian sigma and exponential tau from specified rise/fall widths.
|
|
3
|
+
|
|
4
|
+
Solve (sigma, tau) for a Gaussian convolved with a causal exponential so the
|
|
5
|
+
pulse matches user-provided rise and fall widths between fractional amplitude
|
|
6
|
+
levels (e.g. 0.1-0.9 rise, 0.9-0.1 fall).
|
|
7
|
+
|
|
8
|
+
Command line arguments
|
|
9
|
+
----------------------
|
|
10
|
+
site (str, required)
|
|
11
|
+
North or South.
|
|
12
|
+
telescope (str, required)
|
|
13
|
+
Telescope model name.
|
|
14
|
+
model_version (str, required)
|
|
15
|
+
Model version.
|
|
16
|
+
parameter_version (str, required)
|
|
17
|
+
Parameter version.
|
|
18
|
+
rise_width_ns (float, required)
|
|
19
|
+
Rising-edge width between rise_range fractions (ns).
|
|
20
|
+
fall_width_ns (float, required)
|
|
21
|
+
Falling-edge width between fall_range fractions (ns).
|
|
22
|
+
rise_range (float float, optional)
|
|
23
|
+
Fractional amplitudes (low high) for rise width (default: 0.1 0.9).
|
|
24
|
+
fall_range (float float, optional)
|
|
25
|
+
Fractional amplitudes (high low) for fall width (default: 0.9 0.1).
|
|
26
|
+
dt_ns (float, optional)
|
|
27
|
+
Time sampling step (ns). Default: 0.1.
|
|
28
|
+
time_margin_ns (float, optional)
|
|
29
|
+
Margin added at both ends of readout window. Default: 5.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
Example
|
|
33
|
+
-------
|
|
34
|
+
Derive parameters for a pulse with 2.5 ns rise (10-90%) and
|
|
35
|
+
5 ns fall (90-10%) for LSTN-01:
|
|
36
|
+
|
|
37
|
+
.. code-block:: console
|
|
38
|
+
|
|
39
|
+
simtools-derive-pulse-shape-parameters \
|
|
40
|
+
--site North \
|
|
41
|
+
--telescope MSTx-NectarCam \
|
|
42
|
+
--model_version 7.0 \
|
|
43
|
+
--parameter_version 1.0.0 \
|
|
44
|
+
--rise_width_ns 2.5 \
|
|
45
|
+
--fall_width_ns 5.0 \
|
|
46
|
+
--rise_range 0.1 0.9 \
|
|
47
|
+
--fall_range 0.9 0.1 \
|
|
48
|
+
--dt_ns 0.1 \
|
|
49
|
+
--time_margin_ns 10
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
import logging
|
|
53
|
+
|
|
54
|
+
import simtools.data_model.model_data_writer as writer
|
|
55
|
+
from simtools.application_control import get_application_label, startup_application
|
|
56
|
+
from simtools.configuration import configurator
|
|
57
|
+
from simtools.model.model_utils import initialize_simulation_models
|
|
58
|
+
from simtools.simtel.pulse_shapes import solve_sigma_tau_from_rise_fall
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _parse():
|
|
62
|
+
"""Parse command line configuration for parameter derivation."""
|
|
63
|
+
config = configurator.Configurator(
|
|
64
|
+
label=get_application_label(__file__),
|
|
65
|
+
description=(
|
|
66
|
+
"Derive Gaussian sigma and exponential tau from rise/fall width specifications."
|
|
67
|
+
),
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
config.parser.add_argument(
|
|
71
|
+
"--rise_width_ns",
|
|
72
|
+
help="Wdth on the rising edge in ns between rise_range fractions.",
|
|
73
|
+
type=float,
|
|
74
|
+
required=True,
|
|
75
|
+
)
|
|
76
|
+
config.parser.add_argument(
|
|
77
|
+
"--fall_width_ns",
|
|
78
|
+
help="Width on the falling edge in ns between fall_range fractions.",
|
|
79
|
+
type=float,
|
|
80
|
+
required=True,
|
|
81
|
+
)
|
|
82
|
+
config.parser.add_argument(
|
|
83
|
+
"--rise_range",
|
|
84
|
+
help="Fractional amplitudes (low high) for rise width, e.g. 0.1 0.9",
|
|
85
|
+
type=float,
|
|
86
|
+
nargs=2,
|
|
87
|
+
default=[0.1, 0.9],
|
|
88
|
+
required=False,
|
|
89
|
+
)
|
|
90
|
+
config.parser.add_argument(
|
|
91
|
+
"--fall_range",
|
|
92
|
+
help="Fractional amplitudes (high low) for fall width, e.g. 0.9 0.1",
|
|
93
|
+
type=float,
|
|
94
|
+
nargs=2,
|
|
95
|
+
default=[0.9, 0.1],
|
|
96
|
+
required=False,
|
|
97
|
+
)
|
|
98
|
+
config.parser.add_argument(
|
|
99
|
+
"--dt_ns",
|
|
100
|
+
help="Time sampling step in ns used by the solver.",
|
|
101
|
+
type=float,
|
|
102
|
+
default=0.1,
|
|
103
|
+
required=False,
|
|
104
|
+
)
|
|
105
|
+
config.parser.add_argument(
|
|
106
|
+
"--time_margin_ns",
|
|
107
|
+
help=(
|
|
108
|
+
"Margin (ns) added to both ends of the instrument readout window when deriving the "
|
|
109
|
+
"internal time window."
|
|
110
|
+
),
|
|
111
|
+
type=float,
|
|
112
|
+
default=10.0,
|
|
113
|
+
required=False,
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
return config.initialize(
|
|
117
|
+
db_config=True,
|
|
118
|
+
simulation_model=["site", "telescope", "model_version", "parameter_version"],
|
|
119
|
+
output=True,
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def main():
|
|
124
|
+
"""Run parameter derivation and write results."""
|
|
125
|
+
app_context = startup_application(_parse)
|
|
126
|
+
log = logging.getLogger(__name__)
|
|
127
|
+
|
|
128
|
+
rise_width_ns = app_context.args["rise_width_ns"]
|
|
129
|
+
fall_width_ns = app_context.args["fall_width_ns"]
|
|
130
|
+
rise_range = tuple(app_context.args["rise_range"])
|
|
131
|
+
fall_range = tuple(app_context.args["fall_range"])
|
|
132
|
+
dt_ns = app_context.args["dt_ns"]
|
|
133
|
+
time_margin_ns = app_context.args["time_margin_ns"]
|
|
134
|
+
site = app_context.args["site"]
|
|
135
|
+
label = app_context.args.get("label") or get_application_label(__file__)
|
|
136
|
+
telescope_model, _, _ = initialize_simulation_models(
|
|
137
|
+
label=label,
|
|
138
|
+
db_config=app_context.db_config,
|
|
139
|
+
model_version=app_context.args["model_version"],
|
|
140
|
+
site=site,
|
|
141
|
+
telescope_name=app_context.args["telescope"],
|
|
142
|
+
)
|
|
143
|
+
fadc_sum_bins = telescope_model.get_parameter_value("fadc_sum_bins")
|
|
144
|
+
|
|
145
|
+
window_ns = fadc_sum_bins + time_margin_ns
|
|
146
|
+
t_start_ns = -window_ns
|
|
147
|
+
t_stop_ns = window_ns
|
|
148
|
+
|
|
149
|
+
sigma_ns, tau_ns = solve_sigma_tau_from_rise_fall(
|
|
150
|
+
rise_width_ns=rise_width_ns,
|
|
151
|
+
fall_width_ns=fall_width_ns,
|
|
152
|
+
dt_ns=dt_ns,
|
|
153
|
+
rise_range=rise_range,
|
|
154
|
+
t_start_ns=t_start_ns,
|
|
155
|
+
t_stop_ns=t_stop_ns,
|
|
156
|
+
)
|
|
157
|
+
# Apply reasonable rounding for output precision.
|
|
158
|
+
sigma_ns = round(sigma_ns, 4)
|
|
159
|
+
tau_ns = round(tau_ns, 4)
|
|
160
|
+
|
|
161
|
+
log.info(
|
|
162
|
+
f"Derived pulse parameters: sigma={sigma_ns:.6g} ns, tau={tau_ns:.6g} ns "
|
|
163
|
+
f"(rise={rise_width_ns} ns @ {rise_range}, fall={fall_width_ns} ns @ {fall_range})"
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
output_path = app_context.args.get("output_path")
|
|
167
|
+
instrument = app_context.args.get("telescope")
|
|
168
|
+
parameter_version = app_context.args.get("parameter_version")
|
|
169
|
+
|
|
170
|
+
writer.ModelDataWriter.dump_model_parameter(
|
|
171
|
+
parameter_name="flasher_pulse_width",
|
|
172
|
+
value=sigma_ns,
|
|
173
|
+
instrument=instrument,
|
|
174
|
+
parameter_version=parameter_version,
|
|
175
|
+
output_file="flasher_pulse_width.json",
|
|
176
|
+
output_path=output_path,
|
|
177
|
+
unit="ns",
|
|
178
|
+
)
|
|
179
|
+
writer.ModelDataWriter.dump_model_parameter(
|
|
180
|
+
parameter_name="flasher_pulse_exp_decay",
|
|
181
|
+
value=tau_ns,
|
|
182
|
+
instrument=instrument,
|
|
183
|
+
parameter_version=parameter_version,
|
|
184
|
+
output_file="flasher_pulse_exp_decay.json",
|
|
185
|
+
output_path=output_path,
|
|
186
|
+
unit="ns",
|
|
187
|
+
)
|
|
188
|
+
log.info(
|
|
189
|
+
f"Wrote model parameter files flasher_pulse_width.json and "
|
|
190
|
+
f"flasher_pulse_exp_decay.json (sigma={sigma_ns:.6g} ns, tau={tau_ns:.6g} ns)"
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
if __name__ == "__main__":
|
|
195
|
+
main()
|
|
@@ -62,6 +62,17 @@ highlighted_array_elements : list, optional
|
|
|
62
62
|
List of array elements to plot with red circles around them.
|
|
63
63
|
legend_location : str, optional
|
|
64
64
|
Location of the legend (default "best").
|
|
65
|
+
bounds : str, optional
|
|
66
|
+
Axis bounds mode. Use "symmetric" for +-R with padding (default) or "exact" for
|
|
67
|
+
per-axis min/max bounds.
|
|
68
|
+
padding : float, optional
|
|
69
|
+
Fractional padding applied around computed extents in both modes (default 0.1).
|
|
70
|
+
x_lim : tuple(float, float), optional
|
|
71
|
+
Explicit x-axis limits [xmin, xmax] in meters. When provided, overrides derived limits
|
|
72
|
+
and filters plotted elements by x.
|
|
73
|
+
y_lim : tuple(float, float), optional
|
|
74
|
+
Explicit y-axis limits [ymin, ymax] in meters. When provided, overrides derived limits
|
|
75
|
+
and filters plotted elements by y.
|
|
65
76
|
|
|
66
77
|
Examples
|
|
67
78
|
--------
|
|
@@ -89,6 +100,20 @@ Plot layout from a file with a list of telescopes:
|
|
|
89
100
|
simtools-plot-array-layout
|
|
90
101
|
--array_layout_file tests/resources/telescope_positions-North-ground.ecsv
|
|
91
102
|
|
|
103
|
+
Use exact bounds with default padding:
|
|
104
|
+
|
|
105
|
+
.. code-block:: console
|
|
106
|
+
|
|
107
|
+
simtools-plot-array-layout --array_layout_name alpha \
|
|
108
|
+
--site North --model_version 6.0.0 --bounds exact
|
|
109
|
+
|
|
110
|
+
Use symmetric bounds with custom padding:
|
|
111
|
+
|
|
112
|
+
.. code-block:: console
|
|
113
|
+
|
|
114
|
+
simtools-plot-array-layout --array_layout_name alpha \
|
|
115
|
+
--site North --model_version 6.0.0 --bounds symmetric --padding 0.15
|
|
116
|
+
|
|
92
117
|
Plot layout from a parameter file with a list of telescopes:
|
|
93
118
|
|
|
94
119
|
.. code-block:: console
|
|
@@ -173,6 +198,24 @@ def _parse():
|
|
|
173
198
|
required=False,
|
|
174
199
|
default=None,
|
|
175
200
|
)
|
|
201
|
+
config.parser.add_argument(
|
|
202
|
+
"--x_lim",
|
|
203
|
+
help="Explicit x-axis limits [xmin xmax] in meters.",
|
|
204
|
+
type=float,
|
|
205
|
+
nargs=2,
|
|
206
|
+
required=False,
|
|
207
|
+
default=None,
|
|
208
|
+
metavar=("XMIN", "XMAX"),
|
|
209
|
+
)
|
|
210
|
+
config.parser.add_argument(
|
|
211
|
+
"--y_lim",
|
|
212
|
+
help="Explicit y-axis limits [ymin ymax] in meters.",
|
|
213
|
+
type=float,
|
|
214
|
+
nargs=2,
|
|
215
|
+
required=False,
|
|
216
|
+
default=None,
|
|
217
|
+
metavar=("YMIN", "YMAX"),
|
|
218
|
+
)
|
|
176
219
|
config.parser.add_argument(
|
|
177
220
|
"--array_layout_name_background",
|
|
178
221
|
help="Name of the background layout array (e.g., test_layout, alpha, 4mst, etc.).",
|
|
@@ -201,12 +244,27 @@ def _parse():
|
|
|
201
244
|
help=(
|
|
202
245
|
"Location of the legend (e.g., 'best', 'upper right', 'upper left', "
|
|
203
246
|
"'lower left', 'lower right', 'right', 'center left', 'center right', "
|
|
204
|
-
"'lower center', 'upper center', 'center')."
|
|
247
|
+
"'lower center', 'upper center', 'center', 'no_legend')."
|
|
205
248
|
),
|
|
206
249
|
type=str,
|
|
207
250
|
required=False,
|
|
208
251
|
default="best",
|
|
209
252
|
)
|
|
253
|
+
config.parser.add_argument(
|
|
254
|
+
"--bounds",
|
|
255
|
+
help=("Axis bounds mode: 'symmetric' uses +-R with padding, 'exact' uses per-axis min/max"),
|
|
256
|
+
type=str,
|
|
257
|
+
choices=["symmetric", "exact"],
|
|
258
|
+
required=False,
|
|
259
|
+
default="symmetric",
|
|
260
|
+
)
|
|
261
|
+
config.parser.add_argument(
|
|
262
|
+
"--padding",
|
|
263
|
+
help=("Fractional padding applied around computed extents (used for both modes)."),
|
|
264
|
+
type=float,
|
|
265
|
+
required=False,
|
|
266
|
+
default=0.1,
|
|
267
|
+
)
|
|
210
268
|
return config.initialize(
|
|
211
269
|
db_config=True,
|
|
212
270
|
simulation_model=[
|
|
@@ -305,6 +363,10 @@ def main():
|
|
|
305
363
|
grayed_out_elements=app_context.args["grayed_out_array_elements"],
|
|
306
364
|
highlighted_elements=app_context.args["highlighted_array_elements"],
|
|
307
365
|
legend_location=app_context.args["legend_location"],
|
|
366
|
+
bounds_mode=app_context.args["bounds"],
|
|
367
|
+
padding=app_context.args["padding"],
|
|
368
|
+
x_lim=tuple(app_context.args["x_lim"]) if app_context.args["x_lim"] else None,
|
|
369
|
+
y_lim=tuple(app_context.args["y_lim"]) if app_context.args["y_lim"] else None,
|
|
308
370
|
)
|
|
309
371
|
site_string = ""
|
|
310
372
|
if layout.get("site") is not None:
|
|
@@ -29,8 +29,9 @@ Example Usage
|
|
|
29
29
|
.. code-block:: console
|
|
30
30
|
|
|
31
31
|
simtools-simulate-flasher --run_mode full_simulation \
|
|
32
|
-
--light_source MSFx-
|
|
33
|
-
--telescope MSTS-04 --site South
|
|
32
|
+
--light_source MSFx-NectarCam --model_version 6.0 \
|
|
33
|
+
--telescope MSTS-04 --site South --run_number 1 \
|
|
34
|
+
--array_layout_name 1mst
|
|
34
35
|
|
|
35
36
|
Command Line Arguments
|
|
36
37
|
----------------------
|