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