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