Back to home page

EIC code displayed by LXR

 
 

    


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 }