diff --git a/docs/changes/1940.maintenance.md b/docs/changes/1940.maintenance.md new file mode 100644 index 0000000000..4d01b23dd1 --- /dev/null +++ b/docs/changes/1940.maintenance.md @@ -0,0 +1 @@ +Add search patterns in integration tests and fix bug when using an isotropic angular distribution in the illuminator simulations. diff --git a/src/simtools/simtel/simulator_light_emission.py b/src/simtools/simtel/simulator_light_emission.py index 81c934e524..0cd5981827 100644 --- a/src/simtools/simtel/simulator_light_emission.py +++ b/src/simtools/simtel/simulator_light_emission.py @@ -546,6 +546,9 @@ def _get_angular_distribution_string_for_sim_telarray(self): ) return option_string + if option_string == "isotropic": + return option_string + width = self.calibration_model.get_parameter_value_with_unit( "flasher_angular_distribution_width" ) diff --git a/tests/integration_tests/config/simulate_illuminator_configurable_position.yml b/tests/integration_tests/config/simulate_illuminator_configurable_position.yml index e7cdc48ca8..da12cd182d 100644 --- a/tests/integration_tests/config/simulate_illuminator_configurable_position.yml +++ b/tests/integration_tests/config/simulate_illuminator_configurable_position.yml @@ -18,8 +18,23 @@ applications: test: true log_level: DEBUG integration_tests: - - output_file: logfile.log - - output_file: xyzls.simtel.zst + - test_output_files: + - file: logfile.log + path_descriptor: output_path + - file: xyzls.simtel.zst + path_descriptor: output_path + - expected_log_output: + pattern: + - "Initialize for run" + - "Total number of photons produced in this run" + - "Sim_telarray finished at" + - "CORSIKA IACT finished at" + - "Tel. triggered:" + - "Finished." + forbidden_pattern: + - "Error" + file: logfile.log + path_descriptor: output_path model_version_use_current: true test_name: run-configurable-position schema_name: application_workflow.metaschema diff --git a/tests/integration_tests/config/simulate_illuminator_layout.yml b/tests/integration_tests/config/simulate_illuminator_layout.yml index dc0483231f..05f84a359a 100644 --- a/tests/integration_tests/config/simulate_illuminator_layout.yml +++ b/tests/integration_tests/config/simulate_illuminator_layout.yml @@ -10,8 +10,23 @@ applications: test: true log_level: DEBUG integration_tests: - - output_file: logfile.log - - output_file: xyzls.simtel.zst + - test_output_files: + - file: logfile.log + path_descriptor: output_path + - file: xyzls.simtel.zst + path_descriptor: output_path + - expected_log_output: + pattern: + - "Initialize for run" + - "Total number of photons produced in this run" + - "Sim_telarray finished at" + - "CORSIKA IACT finished at" + - "Tel. triggered:" + - "Finished." + forbidden_pattern: + - "Error" + file: logfile.log + path_descriptor: output_path model_version_use_current: true test_name: run-layout schema_name: application_workflow.metaschema diff --git a/tests/unit_tests/simtel/test_simulator_light_emission.py b/tests/unit_tests/simtel/test_simulator_light_emission.py index 3a7a9fd289..935d9a371e 100644 --- a/tests/unit_tests/simtel/test_simulator_light_emission.py +++ b/tests/unit_tests/simtel/test_simulator_light_emission.py @@ -1610,3 +1610,20 @@ def test__calibration_pointing_direction_with_custom_params(simulator_instance): simulator_instance.telescope_model.get_parameter_value_with_unit.assert_called_with( "array_element_position_ground" ) + + +def test__get_angular_distribution_string_for_sim_telarray_isotropic(simulator_instance): + """Test isotropic distribution returns just the token.""" + simulator_instance.calibration_model.get_parameter_value.return_value = "Isotropic" + + # Even if width is available (though it shouldn't be for isotropic), it should be ignored + mock_width = Mock() + mock_width.to.return_value.value = 10.0 + simulator_instance.calibration_model.get_parameter_value_with_unit.return_value = mock_width + + result = simulator_instance._get_angular_distribution_string_for_sim_telarray() + assert result == "isotropic" + + # Verify width was NOT requested: the implementation returns early for isotropic distributions + # before attempting to fetch the width via get_parameter_value_with_unit. + simulator_instance.calibration_model.get_parameter_value_with_unit.assert_not_called()