@@ -10,23 +10,25 @@ SGID: uint
1010# Constraint: size == number of all possible unique DetectionBins
1111DetectionBinEfficiencies : 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.
1516ModulePairEfficiencies : !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
3032ModulePairEfficienciesVector : 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.
5357DetectionEfficiencies : !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)
6672SinglesAliveTimeFractions : float[detectionBin]
6773
6874# Type for coincidence alive time fractions array for 2 modules in coincidence
75+ # See AliveTimeFractions
6976ModuleCoincidenceAliveTimeFractions : !array
7077 items : float
7178 dimensions : [moduleId0, moduleId1]
0 commit comments