4 The CTP monitors three different types of signals. In the XML file
5 they are listed in the section <TriggerCounterList>
9 Almost each input threshold is monitored with one counter per
10 multiplicity it can have. E.g. there are 7 counters for the EM10VH
11 threshold: "1EM10VH" ... "7EM10VH"
13 Due to limitations of the CTPIN monitoring LUT (there are only 4 LUT
14 per CTPIN connector and a LUT has 8 bit input) only 2 3-bit thresholds
15 can be monitored per LUT, so max 8 3-bit thresholds per
16 connector. Hence JET thresholds 8 and 9 can not be monitored.
21 This allows to monitor any combination of conditions built in the same
22 way as L1 Items. However, since we can also monitor L1 Items directly
23 (see 3)), there is little need for this type of monitoring. We use it to monitor simple conditions
28 For each of these type 64 L1Items can be monitored independently
29 Please take note that the bunch mask is not applied for the per-bunch monitoring, thus one item per threshold is sufficient
33 from AthenaCommon.Logging
import logging
34 log = logging.getLogger(__name__)
36 from ..Base.MonCounters
import CtpinCounter, CtpmonCounter
50 for slotConnectors
in ctpinConfig.values():
51 for connName
in slotConnectors.values():
53 connectedCables += [ connName ]
56 for ctpinCableName
in connectedCables:
57 conn = connectors[ctpinCableName]
58 for i, tl
in enumerate(conn.triggerLines):
59 if ctpinCableName ==
"JET1" and i==8:
61 for mult
in range(1, 2**tl.nbits):
62 counters += [
CtpinCounter(threshold=tl.name, multiplicity = mult) ]
78 'AFP_NSA',
'AFP_NSC',
'AFP_FSA',
'AFP_FSC',
'AFP_FSA_TOF_T0',
'AFP_FSC_TOF_T0',
79 'AFP_FSA_TOF_T1',
'AFP_FSC_TOF_T1',
'AFP_FSA_TOF_T2',
'AFP_FSC_TOF_T2',
'AFP_FSA_TOF_T3',
'AFP_FSC_TOF_T3',
80 'MBTS_A0',
'MBTS_A1',
'MBTS_A2',
'MBTS_A3',
'MBTS_A4',
'MBTS_A5',
'MBTS_A6',
'MBTS_A7',
81 'MBTS_A8',
'MBTS_A9',
'MBTS_A10',
'MBTS_A11',
'MBTS_A12',
'MBTS_A13',
'MBTS_A14',
'MBTS_A15',
82 'MBTS_C0',
'MBTS_C1',
'MBTS_C2',
'MBTS_C3',
'MBTS_C4',
'MBTS_C5',
'MBTS_C6',
'MBTS_C7',
83 'MBTS_C8',
'MBTS_C9',
'MBTS_C10',
'MBTS_C11',
'MBTS_C12',
'MBTS_C13',
'MBTS_C14',
'MBTS_C15',
84 'BMA0',
'BMA1',
'BMA2',
'BMA3',
"ZDC_0",
"ZDC_1",
"ZDC_2",
"ZDC_ALT_0",
"ZDC_ALT_1",
"ZDC_ALT_2"
88 for thrName
in cThr[mult]:
98 this functions marks the items that should be monitored by setting the corresponding monitoring flags
99 e.g. to "LF:000|HF:111" for high frequency monitoring of TBP, TAP, and TAV.
106 monItems = { 1 :[], 2: [], 3: [], 4: [], 5: [], 6: [], 7: [] }
107 monItemsHF = { 1 :[], 2: [], 3: [], 4: [], 5: [], 6: [], 7: [] }
111 if 'HI' not in menuName:
112 monItems[TBP|TAP|TAV] = [
114 "L1_MU10BO",
"L1_MU10BOM",
"L1_MU12BOM",
"L1_MU14FCH",
115 "L1_MU3V",
"L1_MU4BOM",
"L1_MU5VF",
"L1_MU8VFC",
116 "L1_2MU3V",
"L1_2MU3VF",
"L1_2MU5VF",
117 "L1_MU5VF_2MU3V",
"L1_MU8VF_2MU5VF",
118 "L1_3MU3V",
"L1_MU5VF_3MU3VF",
"L1_4MU3V",
121 "L1_eEM5",
"L1_eEM9",
"L1_eEM12L",
122 "L1_eEM18L",
"L1_eEM18M",
"L1_eEM24L",
123 "L1_eEM26",
"L1_eEM26L",
"L1_eEM26M",
"L1_eEM26T",
125 "L1_2eEM18M",
"L1_2eEM24L",
126 "L1_eEM24L_3eEM12L",
"L1_eEM40L_2eEM18L",
127 "L1_eTAU20M",
"L1_eTAU30",
128 "L1_eTAU60",
"L1_eTAU80",
"L1_eTAU140",
130 "L1_cTAU20M",
"L1_cTAU35M",
131 "L1_cTAU30M_2cTAU20M",
132 "L1_jJ30",
"L1_jJ40",
"L1_jJ50",
133 "L1_jJ60",
"L1_jJ90",
"L1_jJ125",
134 "L1_jJ160",
"L1_jJ500",
135 "L1_jJ40p30ETA49",
"L1_jJ50p30ETA49",
136 "L1_jJ60p30ETA49",
"L1_jJ90p30ETA49",
"L1_jJ125p30ETA49",
137 "L1_3jJ90",
"L1_4jJ40",
"L1_4jJ50",
138 "L1_3jJ70p0ETA23",
"L1_4jJ40p0ETA25",
"L1_5jJ40p0ETA25",
139 "L1_jJ140_3jJ60",
"L1_jJ85p0ETA21_3jJ40p0ETA25",
140 "L1_jXE60",
"L1_jXE70",
"L1_jXE80",
"L1_jXE90",
"L1_jXE100",
"L1_eTAU12",
141 "L1_jXE110",
"L1_jXE120",
"L1_jXE500",
144 "L1_jTEC200",
"L1_jTEFWD100",
"L1_jTEFWDA100",
"L1_jTEFWDC100",
145 "L1_gJ20p0ETA25",
"L1_gJ20p25ETA49",
"L1_gJ50p0ETA25",
146 "L1_gJ100p0ETA25",
"L1_gJ400p0ETA25",
147 "L1_gLJ80p0ETA25",
"L1_gLJ100p0ETA25",
"L1_gLJ140p0ETA25",
"L1_gLJ160p0ETA25",
149 "L1_gXENC70",
"L1_gXENC100",
150 "L1_gXEJWOJ60",
"L1_gXEJWOJ70",
"L1_gXEJWOJ80",
"L1_gXEJWOJ100",
"L1_gXEJWOJ110",
"L1_gXEJWOJ120",
"L1_gXEJWOJ500",
154 "L1_2eEM10L_MU8F",
"L1_MU3V_jJ40",
156 "L1_LLPDPHI-jXE40-jJ40",
157 "L1_BPH-0M9-eEM9-eEM7_MU5VF",
158 "L1_BTAG-MU5VFjJ20_2jJ40p0ETA25_jJ50p0ETA25",
159 "L1_BPH-0M9-eEM9-eEM7",
"L1_BPH-0M10-3MU3V",
"L1_BPH-0M10-3MU3VF",
160 "L1_JPSI-1M5-eEM9",
"L1_JPSI-1M5-eEM15",
161 "L1_BTAG-MU3VjJ40",
"L1_BTAG-MU5VFjJ80",
162 "L1_cTAU30M_2cTAU20M_DR-eTAU30LeTAU20L",
164 "L1_DY-BOX-2MU3VF",
"L1_DY-BOX-MU5VFMU3V",
165 "L1_LAR-ZEE-eEM",
"L1_LFV-MU5VF",
166 "L1_10DR-MU14FCH-MU5VF_EMPTY",
"L1_DPHI-M70-2eEM12M",
170 "L1_HT190-jJ40s5pETA21",
"L1_jMJJ-500-NFF",
171 "L1_LLP-RO-eEM",
"L1_LLP-NOMATCH-eEM",
173 "L1_ZAFB-25DPHI-eEM18M",
175 "L1_LFV-eEM10L-MU8VF",
"L1_LFV-eEM15L-MU5VF",
178 if 'MC' not in menuName:
179 monItems[TBP|TAP|TAV] += [
182 "L1_LUCID_A",
"L1_LUCID_C",
183 "L1_CALREQ1",
"L1_CALREQ2",
186 "L1_BPTX0_BGRP12",
"L1_BPTX1_BGRP12",
190 "L1_BCM_2A_FIRSTINTRAIN",
"L1_BCM_2C_FIRSTINTRAIN",
192 "L1_AFP_A_AND_C_TOF_T0T1",
193 "L1_AFP_FSA_BGRP12",
"L1_AFP_FSC_BGRP12",
194 "L1_AFP_FSA_TOF_T0_BGRP12",
"L1_AFP_FSA_TOF_T1_BGRP12",
"L1_AFP_FSA_TOF_T2_BGRP12",
"L1_AFP_FSA_TOF_T3_BGRP12",
195 "L1_AFP_FSC_TOF_T0_BGRP12",
"L1_AFP_FSC_TOF_T1_BGRP12",
"L1_AFP_FSC_TOF_T2_BGRP12",
"L1_AFP_FSC_TOF_T3_BGRP12",
196 "L1_AFP_A_OR_C_EMPTY",
197 "L1_AFP_NSA_BGRP12",
"L1_AFP_NSC_BGRP12",
198 "L1_AFP_A",
"L1_AFP_C",
"L1_AFP_A_AND_C",
199 "L1_MBTS_A",
"L1_MBTS_C",
200 "L1_MBTS_1",
"L1_MBTS_1_1",
"L1_MBTS_2",
201 "L1_MBTS_1_A",
"L1_MBTS_1_C",
"L1_MBTS_4_A",
"L1_MBTS_4_C",
203 "L1_AFP_A_AND_C_TOF_jJ50",
205 "L1_AFP_A_AND_C_TOF_T0T1_jJ90",
208 "L1_MU3VF",
"L1_MU8F",
"L1_MU8FC",
"L1_MU8VF",
209 "L1_MU3VC",
"L1_MU3EOF",
"L1_MU4BO",
210 "L1_MU8FH",
"L1_MU8EOF",
211 "L1_MU9VF",
"L1_MU9VFC",
212 "L1_MU12FCH",
"L1_MU14FCHR",
"L1_MU14EOF",
213 "L1_MU15VFCH",
"L1_MU15VFCHR",
214 "L1_MU18VFCH",
"L1_MU20VFC",
215 "L1_2MU8F",
"L1_2MU8VF",
216 "L1_2MU14FCH_OVERLAY",
218 "L1_jJ55",
"L1_jJ80",
"L1_jJ140",
"L1_jJ180",
219 "L1_jJ30p0ETA25",
"L1_jJ40p0ETA25",
220 "L1_jJ70p0ETA23",
"L1_jJ55p0ETA23",
221 "L1_jJ80p0ETA25",
"L1_jJ85p0ETA21",
222 "L1_jEM25",
"L1_jEM20M",
224 "L1_eEM7",
"L1_eEM10L",
"L1_eEM15",
225 "L1_eEM18",
"L1_eEM22M",
"L1_eEM24VM",
228 "L1_eTAU20L",
"L1_eTAU35",
"L1_eTAU40HM",
232 monItems[TBP|TAP|TAV] = [
237 "L1_ZDC_BIT0",
"L1_ZDC_BIT1",
"L1_ZDC_BIT2",
238 "L1_ZDC_COMB0",
"L1_ZDC_COMB1",
"L1_ZDC_COMB2",
"L1_ZDC_COMB3",
239 "L1_ZDC_COMB4",
"L1_ZDC_COMB5",
"L1_ZDC_COMB6",
"L1_ZDC_COMB7",
240 "L1_ZDC_A",
"L1_ZDC_C",
"L1_ZDC_A_C",
246 "L1_MBTS_2_2",
"L1_MBTS_3_3",
"L1_MBTS_4_4",
250 "L1_MU3V",
"L1_MU5VF",
251 "L1_MU8F",
"L1_MU8VF",
253 "L1_2MU3V",
"L1_2MU5VF",
255 "L1_2MU14FCH_OVERLAY",
257 "L1_eEM5",
"L1_eEM9",
"L1_eEM12",
"L1_eEM15",
258 "L1_eEM18",
"L1_eEM18L",
259 "L1_eEM26",
"L1_eEM26M",
262 "L1_jJ20",
"L1_jJ30",
"L1_jJ40",
"L1_jJ50",
263 "L1_jJ55",
"L1_jJ60",
"L1_jJ90",
"L1_jJ125",
265 "L1_jJ40p30ETA49",
"L1_jJ50p30ETA49",
"L1_jJ60p30ETA49",
268 "L1_gJ20p0ETA25",
"L1_gJ400p0ETA25",
270 "L1_gLJ80p0ETA25",
"L1_gXEJWOJ100",
278 if "MC" not in menuName:
279 monItems[TBP|TAP|TAV] += [
281 "L1_CALREQ0",
"L1_CALREQ1",
"L1_CALREQ2",
282 "L1_BPTX0_BGRP12",
"L1_BPTX1_BGRP12",
288 "L1_BCM_2A_FIRSTINTRAIN",
"L1_BCM_2C_FIRSTINTRAIN",
290 "L1_LUCID_A",
"L1_LUCID_C",
294 "L1_MBTS_1",
"L1_MBTS_2",
"L1_MBTS_1_1",
299 if "lowMu" in menuFullName:
300 monItems[TBP|TAP|TAV].
extend([
302 "L1_AFP_A_OR_C",
"L1_AFP_A_AND_C",
304 "L1_AFP_A_AND_C_TOF_T0T1_jJ125",
305 "L1_AFP_A_AND_C_TOF_T0T1_jJ50",
306 "L1_AFP_A_AND_C_TOF_T0T1_jJ60",
307 "L1_AFP_A_AND_C_TOF_T0T1_jJ90",
308 "L1_AFP_A_AND_C_TOF_jJ125",
309 "L1_AFP_A_AND_C_TOF_jJ50",
310 "L1_AFP_A_AND_C_TOF_jJ60",
311 "L1_AFP_A_AND_C_TOF_jJ90",
312 "L1_AFP_A_AND_C_jJ20",
313 "L1_AFP_A_AND_C_jJ30",
314 "L1_AFP_A_OR_C_jJ20",
315 "L1_AFP_A_OR_C_jJ30",
319 "L1_MU5VF_AFP_A_OR_C",
321 "L1_eEM9_AFP_A_AND_C",
323 "L1_ZDC_A",
"L1_ZDC_C",
"L1_ZDC_A_C",
"L1_ZDC_OR",
"L1_ZDC_XOR",
328 "L1_jTE5",
"L1_jTE10",
"L1_jTE20",
"L1_jTE50",
329 "L1_jJ10",
"L1_jJ20",
330 "L1_eEM5",
"L1_eEM9",
334 if "MC" not in menuName:
335 monItems[TBP|TAP|TAV].
extend([
338 "L1_AFP_A",
"L1_AFP_C",
341 "L1_AFP_FSA_TOF_T0_BGRP12",
342 "L1_AFP_FSA_TOF_T1_BGRP12",
343 "L1_AFP_FSA_TOF_T2_BGRP12",
344 "L1_AFP_FSA_TOF_T3_BGRP12",
346 "L1_AFP_FSC_TOF_T0_BGRP12",
347 "L1_AFP_FSC_TOF_T1_BGRP12",
348 "L1_AFP_FSC_TOF_T2_BGRP12",
349 "L1_AFP_FSC_TOF_T3_BGRP12",
353 "L1_AFP_A_AND_C_TOF_T0T1",
357 monItems[TBP|TAP|TAV].
extend([
361 "L1_ZDC_XOR",
"L1_ZDC_C_VZDC_A",
"L1_ZDC_A_VZDC_C",
362 "L1_1ZDC_A_VZDC_C",
"L1_VZDC_A_1ZDC_C",
363 "L1_1ZDC_A_1ZDC_C",
"L1_5ZDC_A_VZDC_C",
"L1_VZDC_A_5ZDC_C",
364 "L1_ZDC_1XOR5",
"L1_5ZDC_A_5ZDC_C",
368 "L1_eEM1",
"L1_eEM2",
370 "L1_DPHI-2eEM1",
"L1_DPHI-2eTAU1",
371 "L1_DPHI-2eEM1_VjTE200",
372 "L1_2eEM1_VjTE200",
"L1_2eEM2_VjTE200",
"L1_2eEM1_VjTE200_GAP_AANDC",
373 "L1_eEM5_VjTE200",
"L1_eEM9_VjTE200",
374 "L1_eEM1_jTE4_VjTE200",
"L1_eEM2_jTE4_VjTE200",
"L1_eTAU1_jTE4_VjTE200",
375 "L1_2eTAU1_VjTE200",
"L1_2eTAU1_VjTE200_GAP_AANDC",
376 "L1_eEM1_TRT_VjTE200",
"L1_eTAU1_TRT_VjTE200",
377 "L1_eEM1_TRT_ZDC_XOR_VjTE200",
"L1_eTAU1_TRT_ZDC_XOR_VjTE200",
378 "L1_eEM1_TRT_VZDC_A_VZDC_C_VjTE100",
"L1_eTAU1_TRT_VZDC_A_VZDC_C_VjTE100",
379 "L1_eEM1_TRT_ZDC_XOR4_VjTE100",
"L1_eTAU1_TRT_ZDC_XOR4_VjTE100",
382 "L1_jJ5p30ETA49",
"L1_jJ10p30ETA49",
384 "L1_jTE3",
"L1_jTE4",
"L1_jTE5",
"L1_jTE10",
"L1_jTE20",
"L1_jTE50",
385 "L1_jTE100",
"L1_jTE600",
"L1_jTE1500",
"L1_jTE6500",
"L1_jTEFWD2600",
"L1_jTEFWD5600",
"L1_jTEFWD6300",
"L1_jTEFWD6600",
388 "L1_VjTE10",
"L1_VjTE200",
"L1_VjTE600",
"L1_jTE50_VjTE600",
390 "L1_GAP_A",
"L1_GAP_C",
"L1_GAP_AANDC",
392 "L1_MU3V_VjTE50",
"L1_MU3V_VjTE200",
394 "L1_TRT_VjTE20",
"L1_eEM1_TRT_VjTE100",
395 "L1_TRT_ZDC_XOR_VjTE200",
"L1_TRT_1ZDC_NZDC_VjTE200",
397 "L1_ZDC_A_C_VjTE10",
"L1_ZDC_XOR_VjTE10",
"L1_TRT_ZDC_A_C_VjTE10",
"L1_TRT_ZDC_XOR_VjTE10",
398 "L1_TRT_ZDC_A_VjTE50",
"L1_TRT_ZDC_C_VjTE50",
400 "L1_MBTS_2_VZDC_A_ZDC_C_VjTE200_GAP_A",
"L1_MBTS_2_1ZDC_NZDC_VjTE200_GAP_A",
401 "L1_MBTS_2_ZDC_A_VZDC_C_VjTE200_GAP_C",
"L1_MBTS_2_1ZDC_NZDC_VjTE200_GAP_C",
402 "L1_MBTS_1_VZDC_A_ZDC_C_jTE3_VjTE200",
"L1_MBTS_1_ZDC_A_VZDC_C_jTE3_VjTE200",
403 "L1_MBTS_1_1ZDC_NZDC_jTE3_VjTE200",
404 "L1_MBTS_1_VZDC_A_ZDC_C_jTE3_VjTE200_GAP_A",
"L1_MBTS_1_1ZDC_NZDC_jTE3_VjTE200_GAP_A",
405 "L1_MBTS_1_ZDC_A_VZDC_C_jTE3_VjTE200_GAP_C",
"L1_MBTS_1_1ZDC_NZDC_jTE3_VjTE200_GAP_C",
407 "L1_1ZDC_A_1ZDC_C_VjTE200",
"L1_ZDC_1XOR5_VjTE200",
408 "L1_ZDC_XOR_VjTE200",
409 "L1_VZDC_A_VZDC_C_jTE5_VjTE200",
"L1_ZDC_XOR_jTE5_VjTE200",
410 "L1_1ZDC_NZDC_jTE5_VjTE200",
"L1_5ZDC_A_5ZDC_C_jTE5_VjTE200",
411 "L1_VZDC_A_VZDC_C_jTE10_VjTE200",
"L1_ZDC_XOR_jTE10_VjTE200",
412 "L1_1ZDC_NZDC_jTE10_VjTE200",
413 "L1_TRT_VZDC_A_VZDC_C_jTE5_VjTE200",
"L1_TRT_ZDC_XOR_jTE5_VjTE200",
415 "L1_ZDC_XOR_jJ5_VjTE200",
"L1_ZDC_XOR_jJ10_VjTE200",
"L1_1ZDC_NZDC_jJ5_VjTE200",
416 "L1_1ZDC_NZDC_jJ10_VjTE200",
"L1_VZDC_A_VZDC_C_jJ5_VjTE200",
"L1_VZDC_A_VZDC_C_jJ10_VjTE200",
418 "L1_ZDC_HELT20_jTEFWD2600",
419 "L1_ZDC_HELT35_jTEFWD2600",
420 "L1_ZDC_HELT50_jTEFWD2600",
422 "L1_TEA_TeAsymmetry-jTENoSort",
426 "L1_TEA_jJ5p30ETA49",
427 "L1_ESP_TeAsymmetry-jTENoSort",
431 "L1_ESP_jJ5p30ETA49",
433 'L1_TEA_1ZDC_NZDC_jJ10_VjTE200',
434 'L1_TEA_1ZDC_NZDC_jJ5_VjTE200',
435 'L1_TEA_5ZDC_A_5ZDC_C_jJ10_VjTE200',
436 'L1_TEA_5ZDC_A_5ZDC_C_jJ5_VjTE200',
437 'L1_TEA_VZDC_A_VZDC_C_jJ10_VjTE200',
438 'L1_TEA_VZDC_A_VZDC_C_jJ10p30ETA49_VjTE200',
439 'L1_TEA_VZDC_A_VZDC_C_jJ5_VjTE200',
440 'L1_TEA_VZDC_A_VZDC_C_jJ5p30ETA49_VjTE200',
441 'L1_TEA_ZDC_5XOR_jJ10_VjTE200',
442 'L1_TEA_ZDC_5XOR_jJ5_VjTE200',
443 'L1_TEA_ZDC_XOR_jJ10_VjTE200',
444 'L1_TEA_ZDC_XOR_jJ10p30ETA49_VjTE200',
445 'L1_TEA_ZDC_XOR_jJ5_VjTE200',
446 'L1_TEA_ZDC_XOR_jJ5p30ETA49_VjTE200',
448 'L1_TEA_ASYM0_TRT_ZDC_XOR_VjTE200',
449 'L1_TEA_ASYM1_TRT_ZDC_XOR_VjTE200',
450 'L1_TEA_ASYM2_TRT_ZDC_XOR_VjTE200',
451 'L1_TEA_ASYM3_TRT_ZDC_XOR_VjTE200',
452 'L1_TEA_ASYM0_ZDC_XOR_VjTE200',
453 'L1_TEA_ASYM1_ZDC_XOR_VjTE200',
454 'L1_TEA_ASYM2_ZDC_XOR_VjTE200',
455 'L1_TEA_ASYM3_ZDC_XOR_VjTE200',
457 'L1_TEA_eEM2_VjTE200',
458 'L1_TEA_eTAU2_VjTE200',
460 'L1_TeATIME-jTENoSort',
462 'L1_TeAsymmetry-jTENoSort',
463 'L1_TeAsymmetry1-jTENoSort',
464 'L1_TeAsymmetry2-jTENoSort',
465 'L1_TeAsymmetry3-jTENoSort',
469 if "MC" not in menuName:
470 monItems[TBP|TAP|TAV].
extend([
473 monItems[TBP|TAP|TAV] += topo3_monitems
477 monItemsHF[TBP|TAP|TAV] = [
479 "L1_MBTS_1",
"L1_MBTS_2",
"L1_MBTS_1_1",
481 "L1_BCM_2A_FIRSTINTRAIN",
"L1_BCM_2C_FIRSTINTRAIN"
485 monItemsHF[TBP|TAP|TAV].
extend([
488 if "lowMu" in menuFullName:
489 monItemsHF[TBP|TAP|TAV].
extend([
491 "L1_ZDC_A",
"L1_ZDC_C",
"L1_ZDC_A_C",
"L1_ZDC_OR",
495 monItemsHF[TBP|TAP|TAV].
extend([
496 "L1_ZDC_A",
"L1_ZDC_C",
"L1_ZDC_A_C",
497 "L1_ZDC_OR",
"L1_ZDC_XOR",
498 "L1_ZDC_C_VZDC_A",
"L1_ZDC_A_VZDC_C",
"L1_5ZDC_A_5ZDC_C",
506 counts_LF_items = { TBP :
set(), TAP :
set(), TAV :
set() }
507 counts_HF_items = { TBP :
set(), TAP :
set(), TAV :
set() }
512 counts_LF_items[TBP].update( monItems[k] )
513 counts_HF_items[TBP].update( monItemsHF[k] )
516 counts_LF_items[TAP].update( monItems[k] )
517 counts_HF_items[TAP].update( monItemsHF[k] )
520 counts_LF_items[TAV].update( monItems[k] )
521 counts_HF_items[TAV].update( monItemsHF[k] )
523 counts_LF = dict( map(
lambda x : (x[0],len(x[1])), counts_LF_items.items() ) )
524 counts_HF = dict( map(
lambda x : (x[0],len(x[1])), counts_HF_items.items() ) )
526 lutsLF =
int( (
max(counts_LF.values())-1) / 8) + 1
527 lutsHF =
int( (
max(counts_HF.values())-1) / 8) + 1
530 if lutsLF + lutsHF > maxLUTs:
531 log.error(
"too many monitoring items are defined:")
532 log.error(
" low frequency TBP: %i",counts_LF[TBP])
533 log.error(
" TAP: %i",counts_LF[TAP])
534 log.error(
" TAV: %i",counts_LF[TAV])
535 log.error(
" required LUTs: %i",lutsLF)
536 log.error(
" high frequency TBP: %i",counts_HF[TBP])
537 log.error(
" TAP: %i",counts_HF[TAP])
538 log.error(
" TAV: %i",counts_HF[TAV])
539 log.error(
" required LUTs: %i",lutsHF)
540 log.error(
" this menu requires %i monitoring LUTs while only %i are available", (lutsLF + lutsHF), maxLUTs)
541 raise RuntimeError(
"Reduce the number of monitored items")
543 if 'AllCTPIn' not in menuName:
544 MonitorDef.checkForNonExistingMonItems(items, monItems)
550 for k,l
in monItems.items():
553 item.addMonitor(k, MonitorDef.LOW_FREQ)
556 for k,l
in monItemsHF.items():
559 item.addMonitor(k, MonitorDef.HIGH_FREQ)
565 allItemNames = [item.name
for item
in items]
568 allMonitorItems =
set()
570 allMonitorItems.update(monItems[i])
573 nonExistingMonItems = []
575 for monItem
in allMonitorItems:
576 if monItem
not in allItemNames:
577 nonExistingMonItems += [monItem]
579 if len(nonExistingMonItems)>0:
580 raise RuntimeError(
"These monitoring items are not part of the menu: %s" %
','.
join(nonExistingMonItems))