File indexing completed on 2025-08-05 08:10:09
0001
0002
0003 import os
0004 import json
0005
0006 import acts
0007 from acts import MaterialMapJsonConverter
0008 from acts.examples.odd import getOpenDataDetector
0009 from acts.examples import (
0010 GenericDetector,
0011 AlignedDetector,
0012 WhiteBoard,
0013 AlgorithmContext,
0014 ProcessCode,
0015 CsvTrackingGeometryWriter,
0016 ObjTrackingGeometryWriter,
0017 JsonSurfacesWriter,
0018 JsonMaterialWriter,
0019 JsonFormat,
0020 )
0021
0022
0023 def runGeometry(
0024 trackingGeometry,
0025 decorators,
0026 outputDir,
0027 events=1,
0028 outputObj=True,
0029 outputCsv=True,
0030 outputJson=True,
0031 ):
0032 for ievt in range(events):
0033 eventStore = WhiteBoard(name=f"EventStore#{ievt}", level=acts.logging.INFO)
0034 ialg = 0
0035
0036 context = AlgorithmContext(ialg, ievt, eventStore)
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=os.path.join(outputDir, "csv"),
0050 writePerEvent=True,
0051 )
0052 writer.write(context)
0053
0054 if outputObj:
0055 writer = ObjTrackingGeometryWriter(
0056 level=acts.logging.INFO, outputDir=os.path.join(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=os.path.join(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=os.path.join(outputDir, "geometry-map"),
0086 writeFormat=JsonFormat.Json,
0087 )
0088
0089 jmw.write(trackingGeometry)
0090
0091
0092 if "__main__" == __name__:
0093 detector, trackingGeometry, decorators = AlignedDetector.create()
0094
0095
0096
0097 runGeometry(trackingGeometry, decorators, outputDir=os.getcwd())
0098
0099
0100
0101
0102
0103
0104
0105
0106