|
|
|||
Warning, /acts/Plugins/Json/schema/material-map-v1.schema.json is written in an unsupported language. File is not indexed.
0001 {
0002 "$schema": "https://json-schema.org/draft/2020-12/schema",
0003 "$id": "urn:acts:material-map:1",
0004 "title": "ACTS material map — version 1",
0005 "description": "Surface-only version 1 handled by TrackingGeometryMaterialJsonConverter. See docs/pages/material_map_json_schema.md for supported-state boundaries.",
0006 "type": "object",
0007 "properties": {
0008 "$schema": {
0009 "type": "string",
0010 "minLength": 1
0011 },
0012 "header": {
0013 "type": "object",
0014 "properties": {
0015 "format": {
0016 "const": "acts-material-map"
0017 },
0018 "version": {
0019 "const": 1
0020 },
0021 "description": {
0022 "type": "string"
0023 },
0024 "units": {
0025 "type": "object",
0026 "properties": {
0027 "length": {
0028 "enum": [
0029 "nm",
0030 "um",
0031 "mm",
0032 "cm",
0033 "m"
0034 ]
0035 },
0036 "angle": {
0037 "enum": [
0038 "rad",
0039 "mrad",
0040 "deg"
0041 ]
0042 },
0043 "energy": {
0044 "enum": [
0045 "eV",
0046 "keV",
0047 "MeV",
0048 "GeV",
0049 "TeV"
0050 ]
0051 },
0052 "material_amount": {
0053 "enum": [
0054 "mol",
0055 "mmol",
0056 "kmol"
0057 ]
0058 }
0059 },
0060 "required": [
0061 "length",
0062 "angle",
0063 "energy",
0064 "material_amount"
0065 ],
0066 "additionalProperties": false
0067 }
0068 },
0069 "required": [
0070 "format",
0071 "version",
0072 "units"
0073 ],
0074 "additionalProperties": false
0075 },
0076 "slab_stores": {
0077 "type": "object",
0078 "propertyNames": {
0079 "type": "string",
0080 "minLength": 1
0081 },
0082 "additionalProperties": {
0083 "type": "array",
0084 "items": {
0085 "$ref": "#/$defs/slab"
0086 },
0087 "minItems": 1
0088 }
0089 },
0090 "surfaces": {
0091 "type": "array",
0092 "items": {
0093 "type": "object",
0094 "properties": {
0095 "target": {
0096 "$ref": "#/$defs/surfaceTarget"
0097 },
0098 "material": {
0099 "oneOf": [
0100 {
0101 "$ref": "#/$defs/surfacePayload"
0102 },
0103 {
0104 "type": "null"
0105 }
0106 ]
0107 }
0108 },
0109 "required": [
0110 "target",
0111 "material"
0112 ],
0113 "additionalProperties": false,
0114 "allOf": [
0115 {
0116 "if": {
0117 "properties": {
0118 "target": {
0119 "properties": {
0120 "kind": {
0121 "const": "stable-key"
0122 }
0123 }
0124 }
0125 }
0126 },
0127 "then": {
0128 "properties": {
0129 "material": {
0130 "$ref": "#/$defs/surfacePayload"
0131 }
0132 }
0133 }
0134 }
0135 ]
0136 },
0137 "minItems": 0
0138 }
0139 },
0140 "required": [
0141 "header",
0142 "surfaces"
0143 ],
0144 "additionalProperties": false,
0145 "$defs": {
0146 "geometryId": {
0147 "type": "object",
0148 "description": "Exact geometry identifier in readable components. Omitted fields mean zero, never wildcards; {} is the zero ID. Writers omit zero fields. passive is the canonical name for the shared approach/passive field.",
0149 "properties": {
0150 "volume": {
0151 "type": "integer",
0152 "minimum": 0,
0153 "maximum": 255,
0154 "default": 0
0155 },
0156 "layer": {
0157 "type": "integer",
0158 "minimum": 0,
0159 "maximum": 4095,
0160 "default": 0
0161 },
0162 "passive": {
0163 "type": "integer",
0164 "minimum": 0,
0165 "maximum": 255,
0166 "default": 0
0167 },
0168 "sensitive": {
0169 "type": "integer",
0170 "minimum": 0,
0171 "maximum": 1048575,
0172 "default": 0
0173 },
0174 "extra": {
0175 "type": "integer",
0176 "minimum": 0,
0177 "maximum": 255,
0178 "default": 0
0179 },
0180 "portal": {
0181 "type": "integer",
0182 "minimum": 0,
0183 "maximum": 255,
0184 "default": 0
0185 }
0186 },
0187 "additionalProperties": false
0188 },
0189 "direction": {
0190 "enum": [
0191 "x",
0192 "y",
0193 "z",
0194 "r",
0195 "phi",
0196 "rphi",
0197 "theta",
0198 "eta",
0199 "mag"
0200 ]
0201 },
0202 "length": {
0203 "oneOf": [
0204 {
0205 "type": "number",
0206 "exclusiveMinimum": 0
0207 },
0208 {
0209 "const": "infinity"
0210 }
0211 ],
0212 "description": "Positive length in header.units.length or the literal infinity; NaN and numeric infinities are forbidden."
0213 },
0214 "material": {
0215 "oneOf": [
0216 {
0217 "type": "object",
0218 "properties": {
0219 "kind": {
0220 "const": "vacuum"
0221 }
0222 },
0223 "required": [
0224 "kind"
0225 ],
0226 "additionalProperties": false
0227 },
0228 {
0229 "type": "object",
0230 "properties": {
0231 "kind": {
0232 "const": "material"
0233 },
0234 "radiation_length": {
0235 "$ref": "#/$defs/length"
0236 },
0237 "interaction_length": {
0238 "$ref": "#/$defs/length"
0239 },
0240 "relative_atomic_mass": {
0241 "type": "number",
0242 "exclusiveMinimum": 0
0243 },
0244 "atomic_number": {
0245 "type": "number",
0246 "minimum": 0
0247 },
0248 "molar_density": {
0249 "type": "number",
0250 "minimum": 0
0251 },
0252 "molar_electron_density": {
0253 "type": "number",
0254 "minimum": 0
0255 },
0256 "mean_excitation_energy": {
0257 "type": "number",
0258 "minimum": 0
0259 }
0260 },
0261 "required": [
0262 "kind",
0263 "radiation_length",
0264 "interaction_length",
0265 "relative_atomic_mass",
0266 "atomic_number",
0267 "molar_density",
0268 "molar_electron_density",
0269 "mean_excitation_energy"
0270 ],
0271 "additionalProperties": false
0272 }
0273 ],
0274 "description": "Physical properties use header.units: length, dimensionless Ar/Z, material_amount/length^3 densities, and energy. All seven properties are explicit."
0275 },
0276 "slab": {
0277 "type": "object",
0278 "properties": {
0279 "material": {
0280 "$ref": "#/$defs/material"
0281 },
0282 "thickness": {
0283 "type": "number",
0284 "minimum": 0
0285 }
0286 },
0287 "required": [
0288 "material",
0289 "thickness"
0290 ],
0291 "additionalProperties": false,
0292 "description": "Thickness in header.units.length. Vacuum at zero thickness represents Nothing; vacuum with positive thickness retains its extent."
0293 },
0294 "transform": {
0295 "type": "object",
0296 "properties": {
0297 "rotation": {
0298 "type": "array",
0299 "items": {
0300 "type": "array",
0301 "items": {
0302 "type": "number"
0303 },
0304 "minItems": 3,
0305 "maxItems": 3
0306 },
0307 "minItems": 3,
0308 "maxItems": 3
0309 },
0310 "translation": {
0311 "type": "array",
0312 "items": {
0313 "type": "number"
0314 },
0315 "minItems": 3,
0316 "maxItems": 3
0317 }
0318 },
0319 "required": [
0320 "rotation",
0321 "translation"
0322 ],
0323 "additionalProperties": false,
0324 "description": "Rigid local-to-global transform: p_global = rotation * p_frame + translation. Row-major rotation; translation in header.units.length. Semantic validation checks a proper orthonormal rotation."
0325 },
0326 "axis": {
0327 "oneOf": [
0328 {
0329 "type": "object",
0330 "properties": {
0331 "kind": {
0332 "const": "equidistant"
0333 },
0334 "bins": {
0335 "type": "integer",
0336 "minimum": 1
0337 },
0338 "range": {
0339 "type": "array",
0340 "items": {
0341 "type": "number"
0342 },
0343 "minItems": 2,
0344 "maxItems": 2
0345 },
0346 "boundary": {
0347 "enum": [
0348 "open",
0349 "bound",
0350 "closed"
0351 ]
0352 },
0353 "direction": {
0354 "$ref": "#/$defs/direction"
0355 }
0356 },
0357 "required": [
0358 "kind",
0359 "bins",
0360 "boundary",
0361 "range"
0362 ],
0363 "additionalProperties": false
0364 },
0365 {
0366 "type": "object",
0367 "properties": {
0368 "kind": {
0369 "const": "variable"
0370 },
0371 "edges": {
0372 "type": "array",
0373 "items": {
0374 "type": "number"
0375 },
0376 "minItems": 2
0377 },
0378 "boundary": {
0379 "enum": [
0380 "open",
0381 "bound",
0382 "closed"
0383 ]
0384 },
0385 "direction": {
0386 "$ref": "#/$defs/direction"
0387 }
0388 },
0389 "required": [
0390 "kind",
0391 "edges",
0392 "boundary"
0393 ],
0394 "additionalProperties": false
0395 }
0396 ],
0397 "description": "Ordered axis. Edges must increase strictly. Deferred properties are permitted only in proto-grid; no implicit ranges in resolved payloads."
0398 },
0399 "axisSpec": {
0400 "oneOf": [
0401 {
0402 "type": "object",
0403 "properties": {
0404 "kind": {
0405 "const": "equidistant"
0406 },
0407 "bins": {
0408 "type": "integer",
0409 "minimum": 1
0410 },
0411 "range": {
0412 "type": "array",
0413 "items": {
0414 "type": "number"
0415 },
0416 "minItems": 2,
0417 "maxItems": 2
0418 },
0419 "boundary": {
0420 "enum": [
0421 "open",
0422 "bound",
0423 "closed"
0424 ]
0425 },
0426 "direction": {
0427 "$ref": "#/$defs/direction"
0428 }
0429 },
0430 "required": [
0431 "kind",
0432 "bins"
0433 ],
0434 "additionalProperties": false
0435 },
0436 {
0437 "type": "object",
0438 "properties": {
0439 "kind": {
0440 "const": "variable"
0441 },
0442 "edges": {
0443 "type": "array",
0444 "items": {
0445 "type": "number"
0446 },
0447 "minItems": 2
0448 },
0449 "boundary": {
0450 "enum": [
0451 "open",
0452 "bound",
0453 "closed"
0454 ]
0455 },
0456 "direction": {
0457 "$ref": "#/$defs/direction"
0458 }
0459 },
0460 "required": [
0461 "kind",
0462 "edges"
0463 ],
0464 "additionalProperties": false
0465 },
0466 {
0467 "type": "object",
0468 "properties": {
0469 "kind": {
0470 "const": "deferred-variable"
0471 },
0472 "normalized_edges": {
0473 "type": "array",
0474 "items": {
0475 "type": "number",
0476 "minimum": 0,
0477 "maximum": 1
0478 },
0479 "minItems": 2
0480 },
0481 "boundary": {
0482 "enum": [
0483 "open",
0484 "bound",
0485 "closed"
0486 ]
0487 },
0488 "direction": {
0489 "$ref": "#/$defs/direction"
0490 }
0491 },
0492 "required": [
0493 "kind",
0494 "normalized_edges"
0495 ],
0496 "additionalProperties": false
0497 }
0498 ],
0499 "description": "Ordered axis. Edges must increase strictly. Deferred properties are permitted only in proto-grid; no implicit ranges in resolved payloads."
0500 },
0501 "binAxis": {
0502 "oneOf": [
0503 {
0504 "$ref": "#/$defs/binningAxis"
0505 },
0506 {
0507 "type": "object",
0508 "properties": {
0509 "kind": {
0510 "const": "subdivided"
0511 },
0512 "base": {
0513 "$ref": "#/$defs/binningAxis"
0514 },
0515 "mode": {
0516 "enum": [
0517 "replace",
0518 "repeat"
0519 ]
0520 },
0521 "subdivision": {
0522 "$ref": "#/$defs/binAxis"
0523 }
0524 },
0525 "required": [
0526 "kind",
0527 "base",
0528 "mode",
0529 "subdivision"
0530 ],
0531 "additionalProperties": false
0532 }
0533 ],
0534 "description": "BinUtility subdivision intent: replace one base interval, or repeat the subdivision in every base interval. Recursive and distinct from a resolved grid axis."
0535 },
0536 "surfaceBinning": {
0537 "type": "object",
0538 "properties": {
0539 "axes": {
0540 "type": "array",
0541 "items": {
0542 "$ref": "#/$defs/binAxis"
0543 },
0544 "minItems": 0,
0545 "maxItems": 2
0546 },
0547 "transform": {
0548 "$ref": "#/$defs/transform"
0549 }
0550 },
0551 "required": [
0552 "axes"
0553 ],
0554 "additionalProperties": false
0555 },
0556 "surfaceSettings": {
0557 "type": "object",
0558 "properties": {
0559 "mapping_type": {
0560 "enum": [
0561 "default",
0562 "pre",
0563 "post",
0564 "sensor"
0565 ]
0566 },
0567 "split_factor": {
0568 "type": "number",
0569 "minimum": 0,
0570 "maximum": 1
0571 }
0572 },
0573 "required": [
0574 "mapping_type",
0575 "split_factor"
0576 ],
0577 "additionalProperties": false
0578 },
0579 "surfaceStorage": {
0580 "oneOf": [
0581 {
0582 "type": "object",
0583 "properties": {
0584 "kind": {
0585 "const": "direct"
0586 },
0587 "values": {
0588 "type": "array",
0589 "items": {
0590 "$ref": "#/$defs/slab"
0591 },
0592 "minItems": 1
0593 }
0594 },
0595 "required": [
0596 "kind",
0597 "values"
0598 ],
0599 "additionalProperties": false
0600 },
0601 {
0602 "type": "object",
0603 "properties": {
0604 "kind": {
0605 "const": "indexed"
0606 },
0607 "slabs": {
0608 "type": "array",
0609 "items": {
0610 "$ref": "#/$defs/slab"
0611 },
0612 "minItems": 1
0613 },
0614 "indices": {
0615 "type": "array",
0616 "items": {
0617 "type": "integer",
0618 "minimum": 0
0619 },
0620 "minItems": 1
0621 }
0622 },
0623 "required": [
0624 "kind",
0625 "slabs",
0626 "indices"
0627 ],
0628 "additionalProperties": false
0629 },
0630 {
0631 "type": "object",
0632 "properties": {
0633 "kind": {
0634 "const": "globally-indexed"
0635 },
0636 "store": {
0637 "type": "string",
0638 "minLength": 1
0639 },
0640 "indices": {
0641 "type": "array",
0642 "items": {
0643 "type": "integer",
0644 "minimum": 0
0645 },
0646 "minItems": 1
0647 }
0648 },
0649 "required": [
0650 "kind",
0651 "store",
0652 "indices"
0653 ],
0654 "additionalProperties": false
0655 }
0656 ]
0657 },
0658 "surfacePayload": {
0659 "oneOf": [
0660 {
0661 "type": "object",
0662 "properties": {
0663 "kind": {
0664 "const": "homogeneous"
0665 },
0666 "settings": {
0667 "$ref": "#/$defs/surfaceSettings"
0668 },
0669 "slab": {
0670 "$ref": "#/$defs/slab"
0671 }
0672 },
0673 "required": [
0674 "kind",
0675 "settings",
0676 "slab"
0677 ],
0678 "additionalProperties": false
0679 },
0680 {
0681 "type": "object",
0682 "properties": {
0683 "kind": {
0684 "const": "binned"
0685 },
0686 "settings": {
0687 "$ref": "#/$defs/surfaceSettings"
0688 },
0689 "binning": {
0690 "$ref": "#/$defs/binnedSurfaceBinning"
0691 },
0692 "values": {
0693 "type": "array",
0694 "items": {
0695 "$ref": "#/$defs/slab"
0696 },
0697 "minItems": 1
0698 }
0699 },
0700 "required": [
0701 "kind",
0702 "settings",
0703 "binning",
0704 "values"
0705 ],
0706 "additionalProperties": false
0707 },
0708 {
0709 "type": "object",
0710 "properties": {
0711 "kind": {
0712 "const": "grid"
0713 },
0714 "settings": {
0715 "$ref": "#/$defs/surfaceSettings"
0716 },
0717 "axes": {
0718 "type": "array",
0719 "items": {
0720 "$ref": "#/$defs/axis"
0721 },
0722 "minItems": 2,
0723 "maxItems": 2
0724 },
0725 "storage": {
0726 "$ref": "#/$defs/surfaceStorage"
0727 }
0728 },
0729 "required": [
0730 "kind",
0731 "settings",
0732 "axes",
0733 "storage"
0734 ],
0735 "additionalProperties": false
0736 },
0737 {
0738 "type": "object",
0739 "properties": {
0740 "kind": {
0741 "const": "proto"
0742 },
0743 "settings": {
0744 "allOf": [
0745 {
0746 "$ref": "#/$defs/surfaceSettings"
0747 },
0748 {
0749 "properties": {
0750 "split_factor": {
0751 "const": 1
0752 }
0753 }
0754 }
0755 ]
0756 },
0757 "binning": {
0758 "$ref": "#/$defs/surfaceBinning"
0759 },
0760 "material_key": {
0761 "type": "string",
0762 "minLength": 1
0763 }
0764 },
0765 "required": [
0766 "kind",
0767 "settings",
0768 "binning"
0769 ],
0770 "additionalProperties": false
0771 },
0772 {
0773 "type": "object",
0774 "properties": {
0775 "kind": {
0776 "const": "proto-grid"
0777 },
0778 "settings": {
0779 "allOf": [
0780 {
0781 "$ref": "#/$defs/surfaceSettings"
0782 },
0783 {
0784 "properties": {
0785 "split_factor": {
0786 "const": 1
0787 }
0788 }
0789 }
0790 ]
0791 },
0792 "axes": {
0793 "type": "array",
0794 "items": {
0795 "$ref": "#/$defs/axisSpec"
0796 },
0797 "minItems": 2,
0798 "maxItems": 2
0799 },
0800 "material_key": {
0801 "type": "string",
0802 "minLength": 1
0803 }
0804 },
0805 "required": [
0806 "kind",
0807 "settings",
0808 "axes"
0809 ],
0810 "additionalProperties": false
0811 },
0812 {
0813 "type": "object",
0814 "properties": {
0815 "kind": {
0816 "const": "merged-material-marker"
0817 },
0818 "origins": {
0819 "type": "array",
0820 "items": {
0821 "type": "object",
0822 "properties": {
0823 "geometry_id": {
0824 "$ref": "#/$defs/geometryId"
0825 },
0826 "material_key": {
0827 "type": "string",
0828 "minLength": 1
0829 }
0830 },
0831 "required": [
0832 "geometry_id"
0833 ],
0834 "additionalProperties": false
0835 },
0836 "minItems": 0
0837 }
0838 },
0839 "required": [
0840 "kind",
0841 "origins"
0842 ],
0843 "additionalProperties": false
0844 }
0845 ]
0846 },
0847 "surfaceTarget": {
0848 "oneOf": [
0849 {
0850 "type": "object",
0851 "properties": {
0852 "kind": {
0853 "const": "geometry-id"
0854 },
0855 "geometry_id": {
0856 "$ref": "#/$defs/geometryId"
0857 }
0858 },
0859 "required": [
0860 "kind",
0861 "geometry_id"
0862 ],
0863 "additionalProperties": false
0864 },
0865 {
0866 "type": "object",
0867 "properties": {
0868 "kind": {
0869 "const": "stable-key"
0870 },
0871 "key": {
0872 "type": "string",
0873 "minLength": 1
0874 },
0875 "recorded_geometry_id": {
0876 "$ref": "#/$defs/geometryId"
0877 }
0878 },
0879 "required": [
0880 "kind",
0881 "key",
0882 "recorded_geometry_id"
0883 ],
0884 "additionalProperties": false
0885 }
0886 ]
0887 },
0888 "binnedSurfaceBinning": {
0889 "type": "object",
0890 "properties": {
0891 "axes": {
0892 "type": "array",
0893 "items": {
0894 "$ref": "#/$defs/binAxis"
0895 },
0896 "minItems": 1,
0897 "maxItems": 2
0898 },
0899 "transform": {
0900 "$ref": "#/$defs/transform"
0901 }
0902 },
0903 "required": [
0904 "axes"
0905 ],
0906 "additionalProperties": false
0907 },
0908 "binningAxis": {
0909 "description": "Resolved BinUtility axis: direction required, no guard-cell boundary mode.",
0910 "allOf": [
0911 {
0912 "$ref": "#/$defs/axis"
0913 },
0914 {
0915 "required": [
0916 "direction"
0917 ],
0918 "properties": {
0919 "boundary": {
0920 "enum": [
0921 "bound",
0922 "closed"
0923 ]
0924 }
0925 }
0926 }
0927 ]
0928 }
0929 }
0930 }
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|