Skip to content

Commit 397edea

Browse files
Minor documentation improvements for detector and efficiencies
1 parent 3d2d60d commit 397edea

File tree

2 files changed

+20
-24
lines changed

2 files changed

+20
-24
lines changed

model/DetectionEfficiencies.yml

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,25 @@ SGID: uint
1010
# Constraint: size == number of all possible unique DetectionBins
1111
DetectionBinEfficiencies: float[detectionBin]
1212

13-
# Efficiency for two detection bins in a pair of modules.
13+
# Detection efficiency for two detection bins in a pair of modules.
1414
# This is one component (often called "geometric") of the detection efficiency model.
15+
# Note that "detection bin" includes energy windows (if any) for the modules.
1516
ModulePairEfficiencies: !record
1617
fields:
1718
# Detection efficiency for a pair of detection bins
18-
# detectionBin1 and detectionBin2 run from 0 to the number of detections_bins in each module
19+
# detectionBin1 and detectionBin2 run from 0 up to the number of detections_bins in each module,
1920
values: float[detectionBin1, detectionBin2]
2021
# Symmetry Group Identifier (SGID)
2122
# This should be a number between 0 and numberOfSGIDs-1
2223
sgid: SGID
2324

2425

2526
# Lookup table for SGIDs
26-
# For every module pair, give the SGID. If -1, the module-pair is not in coincidence.
27+
# For every module pair (of specific types), give the SGID. If -1, the module-pair is not in coincidence.
2728
# Values run from -1 ... (numberOfSGIDs-1)
28-
ModulePairSGIDLUT: int[moduleIdx1, moduleIdx2]
29+
ModulePairSGIDLUT: int[moduleIndex1, moduleIndex2]
2930

31+
# List of ModulePairEfficiencies, one for each SGID
3032
ModulePairEfficienciesVector: ModulePairEfficiencies*
3133

3234
# Component-based information on detection efficiencies
@@ -41,31 +43,36 @@ ModulePairEfficienciesVector: ModulePairEfficiencies*
4143
#
4244
# Finding the total detection efficiency therefore follows these steps in pseudo-code
4345
# 0. obtain module-types
44-
# 1. find modules for each detection_bin
45-
# 2. find det_el indices "inside" each module
46-
# 3. SGID = modulePairSGIDLUT[module_type1][module_type2][mod1, mod1]
46+
# 1. find module_index for each detection_bin
47+
# 2. find detection_bin "inside" each module
48+
# 3. SGID = modulePairSGIDLUT[type_of_module1][type_of_module2][module_index1, module_index2]
4749
# 4. if (SGID < 0) return 0
48-
# 5. module_pair_efficiencies = modulePairEfficienciesVector[module_type1][module_type2][SGID]
49-
# 6. return detectionBinEfficiencies[module_type1](detection_bin1) * detectionBinEfficiencies[module_type2](detection_bin2)
50-
# * module_pair_efficiencies[det_el_in_mod1, en1, det_el_in_mod2, en2]
50+
# 5. module_pair_efficiencies = modulePairEfficienciesVector[type_of_module1][type_of_module2][SGID]
51+
# 6. return detectionBinEfficiencies[type_of_module1](detection_bin1) * detectionBinEfficiencies[type_of_module2](detection_bin2)
52+
# * module_pair_efficiencies[detection_bin_in_module1, detection_bin_in_module2]
5153
#
5254
# If either of the components is not present, its value is considered to be 1.
55+
#
56+
# Note that computing a detection efficiency for a triple coincidence is left to the user.
5357
DetectionEfficiencies: !record
5458
fields:
5559
# List of detection efficiencies for every detection bin (one for each module-type).
56-
# Constraint: size(detectionBinEfficiencies) == ScannerInformation.numberOfReplicatedModules
60+
# Constraint: size(detectionBinEfficiencies) == ScannerGeometry.numberOfReplicatedModules()
5761
detectionBinEfficiencies: DetectionBinEfficiencies*?
5862
# Nested list of lookup tables for SGIDs, one for each module-type pair.
5963
# Also indicates if coincidences between a module-pair are recorded.
6064
modulePairSGIDLUT: ModulePairSGIDLUT**?
6165
# Nested list of all modulePairEfficienciesVectors (one for each module-type pair)
62-
# Constraint: size(modulePairEfficienciesVectors) == max(modulePairSGIDLUT) + 1
66+
# Constraint: size(modulePairEfficienciesVectors[type_of_module1][type_of_module2]) == max(modulePairSGIDLUT[type_of_module1][type_of_module2]) + 1
6367
modulePairEfficienciesVectors: ModulePairEfficienciesVector**?
6468

65-
# Constraint: size == number of all possible unique DetectionBins
69+
# Type for alive-time fractions for singles
70+
# See AliveTimeFractions
71+
# Constraint: size == number of all possible DetectionBins (for a specific type_of_module)
6672
SinglesAliveTimeFractions: float[detectionBin]
6773

6874
# Type for coincidence alive time fractions array for 2 modules in coincidence
75+
# See AliveTimeFractions
6976
ModuleCoincidenceAliveTimeFractions: !array
7077
items: float
7178
dimensions: [moduleId0, moduleId1]

model/DetectorInformation.yml

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,6 @@ TypeOfModule: uint
5151
# This is a pair of 2 "module-types".
5252
TypeOfModulePair: TypeOfModule*2
5353

54-
# This is the type for the index over "modules".
55-
# It is an unsigned integer that runs over all the "modules" starting from 0.
56-
#
57-
# The correspondence between this integer and a module is not encoded in this model,
58-
# but only in the "helpers".
59-
# It corresponds to effectively incrementing the moduleIdx in nested loops:
60-
# 1. ScannerGeometry.replicated_modules
61-
# 2. replicated_module.transforms
62-
# (with the moduleIdx running faster over the 2nd loop)
63-
ModuleIdx: uint
64-
6554
# type for a "single" detection (of a particular type of module), expanded into
6655
# indices into the `ScannerGeometry`
6756
ExpandedDetectionBin: !record

0 commit comments

Comments
 (0)