diff --git a/model/DetectorTypes.yml b/model/DetectorTypes.yml index 2785754..412426c 100644 --- a/model/DetectorTypes.yml +++ b/model/DetectorTypes.yml @@ -2,13 +2,15 @@ SolidVolume: !record fields: shape: GeometricShape - # TODO could use material_id here - material: BulkMaterial + # identified referring to `BulkMaterial` list in `ScannerInformation` + material_id: uint # A list of identical SolidVolumes at different locations ReplicatedSolidVolume: !record fields: solidVolume: SolidVolume + # list of transforms + # constraint: length >= 1 transforms: RigidTransformation* # list of unique ids for every replicated solid volume # constraint: size(transforms) == size(ids) diff --git a/model/MaterialTypes.yml b/model/MaterialTypes.yml index 5448db6..9299f51 100644 --- a/model/MaterialTypes.yml +++ b/model/MaterialTypes.yml @@ -15,13 +15,16 @@ BulkMaterial: !record fields: # unique id that can be used to refer to the material in voxelised maps etc id: uint - # informative string, not standardised - name: string? + # informative string, not standardised. + # Expected examples: BGO, LSO, LYSO, LaBr, GAGG, plastic + name: string # density of the material - # TODO specify units + # Units: g/cc + # TODO agree with vendors if this information can be supplied and to what accuracy density: float # List of atoms and their respective mass fractions # sum of massFractions should be 1 - # This list should be reasonably accurate to be useful for Monte Carlo simulations + # TODO agree with vendors if this information can be supplied and to what accuracy + # Ideally this list should be reasonably accurate to be useful for Monte Carlo simulations, but can be approximate. atoms: AtomAndFraction* \ No newline at end of file diff --git a/model/ScannerInformation.yml b/model/ScannerInformation.yml index 1d43ec7..4d0b69c 100644 --- a/model/ScannerInformation.yml +++ b/model/ScannerInformation.yml @@ -1,6 +1,4 @@ -# Detector ID and location. Units are in mm -# TODO: this is currently just a sample implementation with "point" detectors. # Will be obsolete Detector: !record fields: @@ -30,8 +28,11 @@ ScannerInformation: !record modelName: string? # list of geometric information for all detector elements - # TODO replace with ScannerGeometry - detectors: Detector* + scanner_geometry: ScannerGeometry + + # list of materials present in the scanner geometry. The `material_id`s there will refer to the + # identifiers in this list below. + bulkMaterials: BulkMaterial* # edge information for TOF bins in mm (given as from first to last edge, so there is one more edge than the number of bins) # 0 corresponds to the same arrival time. Negative numbers indicate that the first detector detected first. diff --git a/model/Shapes.yml b/model/Shapes.yml index d599036..b26aee9 100644 --- a/model/Shapes.yml +++ b/model/Shapes.yml @@ -8,8 +8,8 @@ BoxShape: !record fields: corners: Coordinate*8 -# annulus of certain thickness oriented along the last axis of `orientation` -# TODO define angles +# annulus of certain thickness oriented along the [0,0,1] axis +# in radians. An angle of 0 corresponds to the [1,0,0] axis, Pi/2 corresponds to the [0,1,0] axis. AnnulusShape: !record fields: # inner radius (in mm) @@ -31,4 +31,3 @@ GeometricShape: !record fields: # union of different shape types shape: [BoxShape, AnnulusShape] - # TODO could have rigidTransformation field here. If we do, the `center` and `orientation` fields in `AnnulusShape` should be deleted