File indexing completed on 2026-09-05 08:18:37
0001
0002
0003
0004
0005
0006
0007
0008
0009 import gc
0010 import os
0011
0012 import pytest
0013
0014 import detray.core
0015 import detray.io
0016 import detray.tests
0017
0018
0019 def test_material_validation_end_to_end(detector, tmp_path):
0020 det, names = detector
0021 datadir = str(tmp_path)
0022
0023
0024 scan_cfg = detray.tests.MaterialScanConfig()
0025 scan_cfg.trackGenerator.phiSteps = 2
0026 scan_cfg.trackGenerator.etaSteps = 2
0027 scan_cfg.trackGenerator.uniformEta = True
0028 scan_cfg.materialFile = os.path.join(datadir, "material_scan")
0029
0030
0031 validation_cfg = detray.tests.MaterialValidationConfig()
0032 validation_cfg.relativeError = 0.01
0033 validation_cfg.materialFile = os.path.join(datadir, "navigation_material_trace")
0034
0035 assert 0 == detray.tests.runMaterialValidation(det, names, scan_cfg, validation_cfg)
0036
0037 scan_csv = os.path.join(datadir, "toy_detector_material_scan.csv")
0038 trace_csv = os.path.join(datadir, "toy_detector_navigation_material_trace_cpu.csv")
0039 assert os.path.getsize(scan_csv) > 0
0040 assert os.path.getsize(trace_csv) > 0
0041
0042
0043 def test_detector_outlives_memory_resource(toy_detector_files):
0044 reader_config = (
0045 detray.io.DetectorReaderConfig()
0046 .addFile(toy_detector_files["geometry"])
0047 .addFile(toy_detector_files["material"])
0048 )
0049 memory_resource = detray.core.HostMemoryResource()
0050 det, names = detray.io.readDetector(memory_resource, reader_config)
0051
0052 del memory_resource
0053 gc.collect()
0054
0055 assert len(det.volumes) == 22
0056 assert det.name(names) == "toy_detector"
0057
0058
0059 def test_detector_volume_container_bounds(detector):
0060 det, _ = detector
0061 n = len(det.volumes)
0062 assert n == 22
0063
0064 det.volumes[0]
0065 det.volumes[-1]
0066
0067 with pytest.raises(IndexError):
0068 det.volumes[n]
0069 with pytest.raises(IndexError):
0070 det.volumes[-(n + 1)]