8 return static_cast<uint16_t
>(
23 if (idx < 0 || idx > 4)
24 throw std::out_of_range(
"Peak index out of range (must be 0-4)");
27 return static_cast<uint8_t
>((tw[2 * idx] >> 31) & 0x1);
33 if (idx < 0 || idx > 4)
34 throw std::out_of_range(
"peak index out of range (must be 0-4)");
36 throw std::out_of_range(
"Found value out of range (must be 0-1)");
39 (tw[2 * idx] & ~(1u << 31)) | ((val & 0x1) << 31);
45 if (idx < 0 || idx > 4)
46 throw std::out_of_range(
"Peak index out of range (must be 0-4)");
48 return (tw[2 * idx] >> 8) & 0x7FFFFF;
54 if (idx < 0 || idx > 4)
55 throw std::out_of_range(
"Peak index out of range (must be 0-4)");
57 throw std::out_of_range(
"ADC_Integral value out of range (must be 0-8388607)");
59 tw[2 * idx] = (tw[2 * idx] & ~(0x7FFFFFu << 8)) |
60 ((val & 0x7FFFFF) << 8);
66 if (idx < 0 || idx > 4)
67 throw std::out_of_range(
"Peak index out of range (must be 0-4)");
69 return static_cast<uint8_t
>(tw[2 * idx] & 0xF);
75 if (idx < 0 || idx > 4)
76 throw std::out_of_range(
"Peak index out of range (must be 0-4)");
78 throw std::out_of_range(
"Num_SubPeaks value out of range (must be 0-15)");
80 tw[2 * idx] = (tw[2 * idx] & ~0xF) | (val & 0xF);
86 if (idx < 0 || idx > 4)
87 throw std::out_of_range(
"Peak index out of range (must be 0-4)");
89 return static_cast<uint16_t
>((tw[2 * idx + 1] >> 23) &
96 if (idx < 0 || idx > 4)
97 throw std::out_of_range(
"Peak index out of range (must be 0-4)");
99 throw std::out_of_range(
"Time_Over_Baseline value out of range (must be 0-511)");
101 tw[2 * idx + 1] = (tw[2 * idx + 1] & ~(0x1FFu << 23)) |
102 ((val & 0x1FF) << 23);
108 if (idx < 0 || idx > 4)
109 throw std::out_of_range(
"Peak index out of range (must be 0-4)");
111 return static_cast<uint16_t
>((tw[2 * idx + 1] >> 14) &
118 if (idx < 0 || idx > 4)
119 throw std::out_of_range(
"Peak index out of range (must be 0-4)");
121 throw std::out_of_range(
"Time_Peak value out of range (must be 0-511)");
123 tw[2 * idx + 1] = (tw[2 * idx + 1] & ~(0x1FFu << 14)) |
124 ((val & 0x1FF) << 14);
130 if (idx < 0 || idx > 4)
131 throw std::out_of_range(
"Peak index out of range (must be 0-4)");
134 return static_cast<uint16_t
>(tw[2 * idx + 1] & 0x3FFF);
140 if (idx < 0 || idx > 4)
141 throw std::out_of_range(
"Peak index out of range (must be 0-4)");
143 throw std::out_of_range(
"ADC Max value out of range (must be 0-16383)");
146 (tw[2 * idx + 1] & ~0x3FFFu) | (val & 0x3FFF);
152 if (idx < 0 || idx > 4)
153 throw std::out_of_range(
"Time_Start index out of range (must be 0-4)");
157 int shift = 22 - 10 * idx;
158 return static_cast<uint16_t
>((tw[10] >> shift) & 0x3FF);
160 int shift = 22 - 10 * (idx - 3);
161 return static_cast<uint16_t
>((tw[11] >> shift) & 0x3FF);
168 if (idx < 0 || idx > 4)
169 throw std::out_of_range(
"Time_Start index out of range (must be 0–4)");
171 throw std::out_of_range(
"Time_Start value out of range (must be 0–1023)");
177 int shift = 22 - 10 * idx;
179 (tw[10] & ~(mask << shift)) | ((val & mask) << shift);
181 int shift = 22 - 10 * (idx - 3);
183 (tw[11] & ~(mask << shift)) | ((val & mask) << shift);