File indexing completed on 2025-07-11 07:50:49
0001
0002
0003 import os
0004 from pathlib import Path
0005
0006 import acts
0007 from acts import MaterialMapJsonConverter
0008 from acts.examples.odd import getOpenDataDetector
0009 from acts.examples import (
0010 WhiteBoard,
0011 AlgorithmContext,
0012 ProcessCode,
0013 CsvTrackingGeometryWriter,
0014 ObjTrackingGeometryWriter,
0015 JsonSurfacesWriter,
0016 JsonMaterialWriter,
0017 JsonFormat,
0018 )
0019
0020
0021 def runGeometry(
0022 trackingGeometry,
0023 decorators,
0024 outputDir: Path,
0025 events=1,
0026 outputObj=True,
0027 outputCsv=True,
0028 outputJson=True,
0029 ):
0030 for ievt in range(events):
0031 eventStore = WhiteBoard(name=f"EventStore#{ievt}", level=acts.logging.INFO)
0032 ialg = 0
0033 ithread = 0
0034
0035 context = AlgorithmContext(ialg, ievt, eventStore, ithread)
0036
0037 for cdr in decorators:
0038 r = cdr.decorate(context)
0039 if r != ProcessCode.SUCCESS:
0040 raise RuntimeError("Failed to decorate event context")
0041
0042 if outputCsv:
0043
0044
0045 writer = CsvTrackingGeometryWriter(
0046 level=acts.logging.INFO,
0047 trackingGeometry=trackingGeometry,
0048 outputDir=str(outputDir / "csv"),
0049 writePerEvent=True,
0050 )
0051 writer.write(context)
0052
0053 if outputObj:
0054 writer = ObjTrackingGeometryWriter(
0055 level=acts.logging.INFO, outputDir=outputDir / "obj"
0056 )
0057 writer.write(context, trackingGeometry)
0058
0059 if outputJson:
0060
0061
0062 writer = JsonSurfacesWriter(
0063 level=acts.logging.INFO,
0064 trackingGeometry=trackingGeometry,
0065 outputDir=str(outputDir / "json"),
0066 writePerEvent=True,
0067 writeSensitive=True,
0068 )
0069 writer.write(context)
0070
0071 jmConverterCfg = MaterialMapJsonConverter.Config(
0072 processSensitives=True,
0073 processApproaches=True,
0074 processRepresenting=True,
0075 processBoundaries=True,
0076 processVolumes=True,
0077 processNonMaterial=True,
0078 context=context.geoContext,
0079 )
0080
0081 jmw = JsonMaterialWriter(
0082 level=acts.logging.VERBOSE,
0083 converterCfg=jmConverterCfg,
0084 fileName=str(outputDir / "geometry-map"),
0085 writeFormat=JsonFormat.Json,
0086 )
0087
0088 jmw.write(trackingGeometry)
0089
0090
0091 if "__main__" == __name__:
0092
0093 detector = getOpenDataDetector()
0094 trackingGeometry = detector.trackingGeometry()
0095 decorators = detector.contextDecorators()
0096
0097 runGeometry(trackingGeometry, decorators, outputDir=Path.cwd())
0098
0099
0100
0101
0102
0103
0104
0105
0106