Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-05 08:18:37

0001 # This file is part of the ACTS project.
0002 #
0003 # Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 #
0005 # This Source Code Form is subject to the terms of the Mozilla Public
0006 # License, v. 2.0. If a copy of the MPL was not distributed with this
0007 # file, You can obtain one at https://mozilla.org/MPL/2.0/.
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     # Fill material scan config.
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     # Fill material validation config.
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]  # Wraps to last element.
0066 
0067     with pytest.raises(IndexError):
0068         det.volumes[n]
0069     with pytest.raises(IndexError):
0070         det.volumes[-(n + 1)]