5def PprMonitoringConfig(inputFlags):
6 '''Function to configure LVL1 Ppr algorithm in the monitoring system.'''
7
8 import math
9
10 from AthenaConfiguration.ComponentFactory import CompFactory
11 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
12 result = ComponentAccumulator()
13
14
15 from TrigT1CaloMonitoring.LVL1CaloMonitoringConfig import L1CaloMonitorCfgHelper
16 helper = L1CaloMonitorCfgHelper(inputFlags,CompFactory.PprMonitorAlgorithm,'PprMonAlg')
17
18
19 PprMonAlg = helper.alg
20
21
22 groupName = 'PprMonitor'
23 PprMonAlg.PackageName = groupName
24
25
26 threshADC = 50
27 PprMonAlg.TT_ADC_HitMap_Thresh = threshADC
28
29 sliceNo = 15
30 PprMonAlg.SliceNo = sliceNo
31
32 threshVec = [0, 1, 3, 5, 10, 20, 30, 50]
33 PprMonAlg.LUTHitMap_ThreshVec = threshVec
34
35
36
37
38
39 devPath = 'Developer/PprMonAlg'
40 expPath = 'Expert/PpmTrex'
41
42
43 etabins = [-4.9,-4.475,-4.050,-3.625,-3.2,-3.1,-2.9,
44 -2.7,-2.5,-2.4,-2.3,-2.2,-2.1,-2.0,-1.9,
45 -1.8,-1.7,-1.6,-1.5,-1.4,-1.3,-1.2,-1.1,
46 -1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,
47 -0.2,-0.1,0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,
48 0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,
49 1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.7,2.9,
50 3.1,3.2,3.625,4.050,4.475,4.9]
51
52 etabins_HAD_1D = [-4.9,-4.050,-3.2,-3.1,-2.9,
53 -2.7,-2.5,-2.4,-2.3,-2.2,-2.1,-2.0,-1.9,
54 -1.8,-1.7,-1.6,-1.5,-1.4,-1.3,-1.2,-1.1,
55 -1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,
56 -0.2,-0.1,0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,
57 0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,
58 1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.7,2.9,
59 3.1,3.2,4.050,4.9]
60
61 phibins = 64
62 phimin = 0
63 phimax_2d = 64
64 phimax_1d = 2.*math.pi
65 maxEnergyRange = 256
66 bcn = 3564
67
68
71 histPath_dev = devPath+'/Outputs'
72 histPath_exp = expPath+'/Outputs'
73 histPath_det = expPath+'/Outputs/detail'
74
75
76 helper.defineHistogram('BCID;ppm_1d_tt_lutcp_LutPerBCN',
77 fillGroup='groupLUTCP',
78 title='Number of LUT-CP > 5 GeV/2 per BC; Bunch crossing; # of LUT above limit',
79 type='TH1F', path=histPath_det,
80 hanConfig={
81 "description": "Number of LUT-CP > 5 GeV/2 per BC."
82 },
83 xbins=bcn, xmin=0, xmax=bcn,
84 cutmask='mask_cpET_5')
85
86
87 helper.defineHistogram('eta_TT;ppm_em_1d_tt_lutcp_Eta',
88 fillGroup='groupLUTCP_EM',
89 title='EM LUT-CP: Distribution of peak in #eta; #eta',
90 type='TH1F', path=histPath_dev,
91 xbins=etabins,
92 cutmask='mask_cpET_0')
93
94 helper.defineHistogram('phiTT_1D;ppm_em_1d_tt_lutcp_Phi',
95 fillGroup='groupLUTCP_EM',
96 title='EM LUT-CP: Distribution of peak in #phi; #phi',
97 type='TH1F', path=histPath_dev,
98 xbins=phibins, xmin=phimin, xmax=phimax_1d)
99
100 helper.defineHistogram('cpET_TT;ppm_em_1d_tt_lutcp_Et',
101 fillGroup='groupLUTCP_EM',
102 title='EM LUT-CP: Distribution of peak; EM LUT peak [GeV/2]',
103 type='TH1F', path=histPath_dev,
104 xbins=maxEnergyRange-1, xmin=1, xmax=maxEnergyRange,
105 cutmask='mask_cpET_0')
106
107
108 helper.defineHistogram('eta_TT;ppm_had_1d_tt_lutcp_Eta',
109 fillGroup='groupLUTCP_HAD',
110 title='HAD LUT-CP: Distribution of peak in #eta; #eta',
111 type='TH1F', path=histPath_exp,
112 hanConfig={
113 "description": "HAD LUT-CP: Distribution of peak in #eta."
114 },
115 xbins=etabins_HAD_1D,
116 cutmask='mask_cpET_0')
117
118 helper.defineHistogram('phiTT_1D;ppm_had_1d_tt_lutcp_Phi',
119 fillGroup='groupLUTCP_HAD',
120 title='HAD LUT-CP: Distribution of peak in #phi; #phi',
121 type='TH1F', path=histPath_exp,
122 hanConfig={
123 "description": "HAD LUT-CP: Distribution of peak in #phi."
124 },
125 xbins=phibins, xmin=phimin, xmax=phimax_1d)
126
127 helper.defineHistogram('cpET_TT;ppm_had_1d_tt_lutcp_Et',
128 fillGroup='groupLUTCP_HAD',
129 title='HAD LUT-CP: Distribution of peak; HAD LUT peak [GeV/2]',
130 type='TH1F', path=histPath_exp,
131 hanConfig={
132 "display" : "LogX,LogY",
133 "description": "HAD LUT-CP: Distribution of peak."
134 },
135 xbins=maxEnergyRange-1, xmin=1, xmax=maxEnergyRange,
136 cutmask='mask_cpET_0')
137
138
139 helper.defineHistogram('etaTT_2D,phiTT_2D,cpET_TT_2D;ppm_em_2d_etaPhi_tt_lutcp_AverageEt',
140 fillGroup='groupLUTCP_EM',
141 title='EM Average LUT-CP Et for Et > 5 GeV/2',
142 type='TProfile2D', path=histPath_dev,
143 xbins=etabins, ybins=phibins, ymin=phimin, ymax=phimax_2d)
144
145 helper.defineHistogram('etaTT_2D,phiTT_2D,cpET_TT_2D;ppm_had_2d_etaPhi_tt_lutcp_AverageEt',
146 fillGroup='groupLUTCP_HAD',
147 title='HAD Average LUT-CP Et for Et > 5 GeV/2',
148 type='TProfile2D', path=histPath_det,
149 hanConfig={
150 "display" : "SetPalette(1),LogZ",
151 "description": "HAD Average LUT-CP Et for Et > 5 GeV/2."
152 },
153 xbins=etabins, ybins=phibins, ymin=phimin, ymax=phimax_2d)
154
155
156
157
158
159 layers = ['EM', 'HAD']
160 iThresh = list(range(0, len(threshVec)))
161
162 for layer in layers:
163 histPath = histPath_dev
164 for i in iThresh:
165 groupname = 'groupLUTCP_{0}_{1}'.format(layer, threshVec[i])
166 if layer=='HAD':
167 histPath = histPath_exp if i in [0, 5] else histPath_det
168 helper.defineHistogram('etaTT_2D,phiTT_2D;ppm_{0}_2d_etaPhi_tt_lutcp_Threshold0{1}'.format(layer.lower(), i),
169 fillGroup=groupname,
170 title='#eta - #phi map of {0} LUT-CP > {1} GeV/2'.format(layer, threshVec[i]),
171 type='TH2D', path=histPath,
172 hanConfig={
173 "display" : "SetPalette(1),LogZ",
174 "description": '#eta - #phi map of {0} LUT-CP > {1} GeV/2'.format(layer, threshVec[i])
175 },
176 xbins=etabins, ybins=phibins, ymin=phimin, ymax=phimax_2d)
177
178
179
182 histPath_dev = devPath+'/Outputs'
183 histPath_exp = expPath+'/Outputs'
184 histPath_det = expPath+'/Outputs/detail'
185
186
187 helper.defineHistogram('BCID;ppm_1d_tt_lutjep_LutPerBCN',
188 fillGroup='groupLUTJEP',
189 title='Number of LUT-JEP > 5 GeV per BC; Bunch crossing; # of LUT above limit',
190 type='TH1F', path=histPath_det,
191 hanConfig={
192 "description": "Number of LUT-JEP > 5 GeV per BC."
193 },
194 xbins=bcn, xmin=0, xmax=bcn,
195 cutmask='mask_jepET_5')
196
197
198 helper.defineHistogram('eta_TT;ppm_em_1d_tt_lutjep_Eta',
199 fillGroup='groupLUTJEP_EM',
200 title='EM LUT-JEP: Distribution of peak in #eta',
201 type='TH1F', path=histPath_dev,
202 xbins=etabins,
203 cutmask='mask_jepET_0')
204
205 helper.defineHistogram('phiTT_1D;ppm_em_1d_tt_lutjep_Phi',
206 fillGroup='groupLUTJEP_EM',
207 title='EM LUT-JEP: Distribution of peak in #phi; #phi',
208 type='TH1F', path=histPath_dev,
209 xbins=phibins, xmin=phimin, xmax=phimax_1d)
210
211 helper.defineHistogram('jepET_TT;ppm_em_1d_tt_lutjep_Et',
212 fillGroup='groupLUTJEP_EM',
213 title='EM LUT-JEP: Distribution of peak; EM LUT peak [GeV]',
214 type='TH1F', path=histPath_dev,
215 xbins=maxEnergyRange-1, xmin=1, xmax=maxEnergyRange,
216 cutmask='mask_jepET_0')
217
218
219 helper.defineHistogram('eta_TT;ppm_had_1d_tt_lutjep_Eta',
220 fillGroup='groupLUTJEP_HAD',
221 title='HAD LUT-JEP: Distribution of peak in #eta',
222 type='TH1F', path=histPath_exp,
223 hanConfig={
224 "description": "HAD LUT-JEP: Distribution of peak in #eta."
225 },
226 xbins=etabins_HAD_1D,
227 cutmask='mask_jepET_0')
228
229 helper.defineHistogram('phiTT_1D;ppm_had_1d_tt_lutjep_Phi',
230 fillGroup='groupLUTJEP_HAD',
231 title='HAD LUT-JEP: Distribution of peak in #phi; #phi',
232 type='TH1F', path=histPath_exp,
233 hanConfig={
234 "description": "HAD LUT-JEP: Distribution of peak in #phi."
235 },
236 xbins=phibins, xmin=phimin, xmax=phimax_1d)
237
238 helper.defineHistogram('jepET_TT;ppm_had_1d_tt_lutjep_Et',
239 fillGroup='groupLUTJEP_HAD',
240 title='HAD LUT-JEP: Distribution of peak; HAD LUT peak [GeV]',
241 type='TH1F', path=histPath_exp,
242 hanConfig={
243 "display" : "LogX,LogY",
244 "description": "HAD LUT-JEP: Distribution of peak."
245 },
246 xbins=maxEnergyRange-1, xmin=1, xmax=maxEnergyRange,
247 cutmask='mask_jepET_0')
248
249
250 helper.defineHistogram('etaTT_2D,phiTT_2D,jepET_TT_2D;ppm_em_2d_etaPhi_tt_lutjep_AverageEt',
251 fillGroup='groupLUTJEP_EM',
252 title='EM Average LUT-JEP Et for Et > 5 GeV',
253 type='TProfile2D', path=histPath_dev,
254 xbins=etabins, ybins=phibins, ymin=phimin, ymax=phimax_2d)
255
256 helper.defineHistogram('etaTT_2D,phiTT_2D,jepET_TT_2D;ppm_had_2d_etaPhi_tt_lutjep_AverageEt',
257 fillGroup='groupLUTJEP_HAD',
258 title='HAD Average LUT-JEP Et for Et > 5 GeV',
259 type='TProfile2D', path=histPath_det,
260 hanConfig={
261 "display" : "SetPalette(1),LogZ",
262 "description": "HAD Average LUT-JEP Et for Et > 5 GeV."
263 },
264 xbins=etabins, ybins=phibins, ymin=phimin, ymax=phimax_2d)
265
266 for layer in layers:
267 histPath = histPath_dev
268 for i in iThresh:
269 if layer=='HAD':
270 histPath = histPath_exp if i in [0, 5] else histPath_det
271 groupname = 'groupLUTJEP_{0}_{1}'.format(layer, threshVec[i])
272 helper.defineHistogram('etaTT_2D,phiTT_2D;ppm_{0}_2d_etaPhi_tt_lutjep_Threshold0{1}'.format(layer.lower(), i),
273 fillGroup=groupname,
274 title='#eta - #phi map of {0} LUT-JEP > {1} GeV'.format(layer, threshVec[i]),
275 type='TH2D', path=histPath,
276 hanConfig={
277 "display" : "SetPalette(1),LogZ",
278 "description": '#eta - #phi map of {0} LUT-JEP > {1} GeV'.format(layer, threshVec[i]),
279 },
280 xbins=etabins, ybins=phibins, ymin=phimin, ymax=phimax_2d)
281
282
283
286 histPath_dev = devPath+'/Inputs'
287 histPath_exp = expPath+'/Inputs'
288 histPath_det = expPath+'/Inputs/detail'
289
290
291 helper.defineHistogram('etaTT_2D,phiTT_2D;ppm_em_2d_etaPhi_tt_adc_HitMap',
292 fillGroup='groupADC_EM',
293 title='#eta - #phi map of EM FADC > {0} for triggered timeslice; Tower #eta; Tower #phi'.format(threshADC),
294 type='TH2F', path=histPath_dev,
295 xbins=etabins, ybins=phibins, ymin=phimin, ymax=phimax_2d)
296
297 helper.defineHistogram('etaTT_2D,phiTT_2D,adcTT;ppm_em_2d_etaPhi_tt_adc_ProfileHitMap',
298 fillGroup='groupADC_EM',
299 title='#eta - #phi profile map of EM FADC > {0} for triggered timeslice; Tower #eta; Tower #phi'.format(threshADC),
300 type='TProfile2D', path=histPath_dev,
301 xbins=etabins, ybins=phibins, ymin=phimin, ymax=phimax_2d)
302
303
304 helper.defineHistogram('etaTT_2D,phiTT_2D;ppm_had_2d_etaPhi_tt_adc_HitMap',
305 fillGroup='groupADC_HAD',
306 title='#eta - #phi map of HAD FADC > {0} for triggered timeslice; Tower #eta; Tower #phi'.format(threshADC),
307 type='TH2F', path=histPath_exp,
308 hanConfig={
309 "display" : "SetPalette(1),LogZ",
310 "description" : "#eta - #phi map of HAD FADC > {0} for triggered timeslice."
311 },
312 xbins=etabins, ybins=phibins, ymin=phimin, ymax=phimax_2d)
313
314 helper.defineHistogram('etaTT_2D,phiTT_2D,adcTT;ppm_had_2d_etaPhi_tt_adc_ProfileHitMap',
315 fillGroup='groupADC_HAD',
316 title='#eta - #phi profile map of HAD FADC > {0} for triggered timeslice; Tower #eta; Tower #phi'.format(threshADC),
317 type='TProfile2D', path=histPath_exp,
318 hanConfig={
319 "display" : "SetPalette(1),LogZ",
320 "description": "#eta - #phi profile map of HAD FADC > {0} for triggered timeslice."
321 },
322 xbins=etabins, ybins=phibins, ymin=phimin, ymax=phimax_2d)
323
324
325 helper.defineHistogram('adcPeak;ppm_em_1d_tt_adc_TriggeredSlice',
326 fillGroup='groupTimeslice_EM',
327 title='Number of the EM triggered slice; # Slice',
328 type='TH1F', path=histPath_dev,
329 xbins=sliceNo, xmin=0, xmax=sliceNo)
330
331 helper.defineHistogram('adcPeak;ppm_had_1d_tt_adc_TriggeredSlice',
332 fillGroup='groupTimeslice_HAD',
333 title='Number of the HAD triggered slice; # Slice',
334 type='TH1F', path=histPath_det,
335 hanConfig={
336 "display" : "LogY",
337 "description" : "Number of the HAD triggered slice."
338 },
339 xbins=sliceNo, xmin=0, xmax=sliceNo)
340
341 helper.defineHistogram('maxADC;ppm_em_1d_tt_adc_MaxTimeslice',
342 fillGroup='groupTimeslice_EM',
343 title='EM distribution of maximum timeslice; slice',
344 type='TH1D', path=histPath_dev,
345 xbins=sliceNo, xmin=0, xmax=sliceNo)
346
347 helper.defineHistogram('maxADC;ppm_had_1d_tt_adc_MaxTimeslice',
348 fillGroup='groupTimeslice_HAD',
349 title='HAD distribution of maximum timeslice; slice',
350 type='TH1D', path=histPath_exp,
351 hanConfig={
352 "display" : "SetPalette(1)",
353 "description": "HAD distribution of maximum timeslice."
354 },
355 xbins=sliceNo, xmin=0, xmax=sliceNo)
356
357 helper.defineHistogram('etaTT_2D,phiTT_2D,maxADCPlus1;ppm_em_2d_etaPhi_tt_adc_MaxTimeslice',
358 fillGroup='groupTimeslice_EM',
359 title='Average maximum timeslice for EM signal (TS:1-15); Tower #eta; Tower #phi',
360 type='TProfile2D', path=histPath_dev,
361 xbins=etabins, ybins=phibins, ymin=phimin, ymax=phimax_2d)
362
363 helper.defineHistogram('etaTT_2D,phiTT_2D,maxADCPlus1;ppm_had_2d_etaPhi_tt_adc_MaxTimeslice',
364 fillGroup='groupTimeslice_HAD',
365 title='Average maximum timeslice for HAD signal (TS:1-15); Tower #eta; Tower #phi',
366 type='TProfile2D', path=histPath_exp,
367 hanConfig={
368 "description": "Average maximum timeslice for HAD signal (TS:1-15)."
369 },
370 xbins=etabins, ybins=phibins, ymin=phimin, ymax=phimax_2d)
371
372
373 bcidBitsLabels = ['none (40 MHz)', 'satBC only', 'peakF only', 'satBC & peakF', 'sat80BC & peakF', 'sat80BC & sat40BC', 'sat80BC only']
374 helper.defineHistogram('bcidBits,adcBCID;ppm_2d_tt_adc_BcidBits',
375 fillGroup='groupTimeslice',
376 title='PPM: PeakADC Vs. Bits of BCID Logic Word',
377 type='TH2I', path=histPath_det,
378 hanConfig={
379 "description": "PPM: PeakADC Vs. Bits of BCID Logic Word."
380 },
381 xbins=7, xmin=0, xmax=7, xlabels=bcidBitsLabels, ybins=1024, ymin=0, ymax=1024)
382
383
384 sat80Labels = ['no saturated ADC', 'none/none', 'none/low', 'none/high', 'low/low', 'low/high', 'high/high', 'else']
385 helper.defineHistogram('sat80Word;ppm_1d_tt_adc_HLCase',
386 fillGroup='groupTimeslice',
387 title= 'PPM: Sat80 thresholds passed by ADC[n-2.5] / ADC[n-1.5]',
388 type='TH1I', path=histPath_det,
389 hanConfig={
390 "description": "PPM: Sat80 thresholds passed by ADC[n-2.5] / ADC[n-1.5]."
391 },
392 xbins=8, xmin=0, xmax=8, xlabels=sat80Labels)
393
394
395 partitionsEM = ['LArFCAL1C', 'LArEMECC', 'LArOverlapC', 'LArEMBC', 'LArEMBA', 'LArOverlapA', 'LArEMECA', 'LArFCAL1A']
396 partitionsHAD = [ 'LArFCAL23C', 'LArHECC', 'TileEBC', 'TileLBC', 'TileLBA', 'TileEBA', 'LArHECA', 'LArFCAL23A']
397
398
399 histPath = histPath_dev
400 for p in partitionsEM:
401 helper.defineHistogram('slice,wADC;ppm_em_1d_tt_adc_SignalProfile{0}'.format(p),
402 fillGroup='groupTimeslice_EM'+'_'+p,
403 title='Signal Shape Profile for {0}; Timeslice'.format(p),
404 type='TProfile', path=histPath,
405 xbins=sliceNo, xmin=0, xmax=sliceNo)
406
407
408 for p in partitionsHAD:
409 if p.startswith('Tile'):
410 histPath = histPath_det
411 helper.defineHistogram('slice,wADC;ppm_had_1d_tt_adc_SignalProfile{0}'.format(p),
412 fillGroup='groupTimeslice_HAD'+'_'+p,
413 title='Signal Shape Profile for {0}; Timeslice'.format(p),
414 type='TProfile', path=histPath,
415 hanConfig={
416 "description": "Signal Shape Profile for {0}.".format(p)
417 },
418 xbins=sliceNo, xmin=0, xmax=sliceNo)
419
420
423
424
425
426 histPath_dev = devPath+'/Errors'
427 histPath_exp = expPath+'/Errors'
428 histPath_det = expPath+'/Errors/detail'
429
430
431 helper.defineHistogram('etaTT;ppm_em_1d_pedOverflow_Eta',
432 fillGroup='groupErrors_EM',
433 title='EM : Overflow of pedestal correction;#eta',
434 type='TH1F', path=histPath_dev,
435 xbins=etabins,
436 cutmask='mask_PedCorrOverflow',
437 opt='')
438
439 helper.defineHistogram('etaTT;ppm_em_1d_pedUnderflow_Eta',
440 fillGroup='groupErrors_EM',
441 title='EM : Underflow of pedestal correction;#eta',
442 type='TH1F', path=histPath_dev,
443 xbins=etabins,
444 cutmask='mask_PedCorrUnderflow',
445 opt='')
446
447
448 helper.defineHistogram('etaTT;ppm_had_1d_pedOverflow_Eta',
449 fillGroup='groupErrors_HAD',
450 title='HAD : Overflow of pedestal correction;#eta',
451 type='TH1F', path=histPath_det,
452 hanConfig={
453 "description": "Overflow of pedestal correction."
454 },
455 xbins=etabins_HAD_1D,
456 cutmask='mask_PedCorrOverflow',
457 opt='')
458
459 helper.defineHistogram('etaTT;ppm_had_1d_pedUnderflow_Eta',
460 fillGroup='groupErrors_HAD',
461 title='HAD : Underflow of pedestal correction;#eta',
462 type='TH1F', path=histPath_det,
463 hanConfig={
464 "description": "Underflow of pedestal correction."
465 },
466 xbins=etabins_HAD_1D,
467 cutmask='mask_PedCorrUnderflow',
468 opt='')
469
470
471 globalError_xlabels_mcmerr = [
472 "ChannelDisabled",
473 "MCMAbsent",
474 "Timeout",
475 "ASICFull",
476 "EventMismatch",
477 "BunchMismatch",
478 "FIFOCorrupt",
479 "PinParity",
480 ]
481
482
483 globalError_xlabels_substat = [
484 "GLinkParity",
485 "GLinkProtocol",
486 "BCNMismatch",
487 "FIFOOverflow",
488 "ModuleError",
489 " ",
490 "GLinkDown",
491 "GLinkTimeout",
492 ]
493
494
495 helper.defineHistogram('bit_2D;ppm_1d_SubStatErrorSummary',
496 fillGroup='group1DSubStatErrorSummary',
497 title='Summary of SubStatus Word Errors',
498 type='TH1F', path=histPath_exp,
499 hanConfig={
500 "algorithm" : "Histogram_Empty",
501 "description" : "Summary of SubStatus Word Errors."
502 },
503 xbins=8, xmin=0, xmax=8,
504 xlabels=globalError_xlabels_substat,
505 opt='kAlwaysCreate')
506
507 helper.defineHistogram('eventMonitor,bit_2D;ppm_2d_SubStatErrorEventNumbers',
508 fillGroup='groupSubStatErrorEventNumbers',
509 title='SubStatus Word Errors Event Numbers;Events with Error/Mismatch;;',
510 type='TH2I', path=histPath_det,
511 hanConfig={
512 "description": "SubStatus Word Errors Event Numbers."
513 },
514 xbins=10, xmin=0, xmax=10, ybins=8, ymin=0, ymax=8,
515 ylabels=globalError_xlabels_substat,
516 opt='')
517
518 helper.defineHistogram('bit_2D,y_2D;ppm_2d_SubStatError03',
519 fillGroup='groupSubStatError03',
520 title='SubStatus Word Errors (crates 0-3)',
521 type='TH2I', path=histPath_dev,
522 xbins=8, xmin=0, xmax=8, ybins=64, ymin=0, ymax=64,
523 xlabels=globalError_xlabels_substat,
524 ylabels=BinErrors('cr0cr1cr2cr3'),
525 opt='')
526
527 helper.defineHistogram('bit_2D,y_2D;ppm_2d_SubStatError47',
528 fillGroup='groupSubStatError47',
529 title='SubStatus Word Errors (crates 4-7)',
530 type='TH2I', path=histPath_det,
531 hanConfig={
532 "display" : "SetPalette(1),SetGridx,SetGridy",
533 "description" : "SubStatus Word Errors (crates 4-7)."
534 },
535 xbins=8, xmin=0, xmax=8, ybins=64, ymin=0, ymax=64,
536 xlabels=globalError_xlabels_substat,
537 ylabels=BinErrors('cr4cr5cr6cr7'),
538 opt='')
539
540
541 helper.defineHistogram('bit_2D;ppm_1d_MCMErrorSummary',
542 fillGroup='group1DMCMErrorSummary',
543 title='Summary of MCM Errors',
544 type='TH1F', path=histPath_exp,
545 hanConfig={
546 "algorithm" : "Histogram_Empty",
547 "description" : "Summary of MCM Errors."
548 },
549 xbins=8, xmin=0, xmax=8,
550 xlabels=globalError_xlabels_mcmerr,
551 opt='kAlwaysCreate')
552
553 helper.defineHistogram('eventMonitor,bit_2D;ppm_2d_MCMErrorEventNumbers',
554 fillGroup='groupMCMErrorEventNumbers',
555 title='MCM Error Field Event Numbers;Events with Error/Mismatch;;',
556 type='TH2I', path=histPath_det,
557 hanConfig={
558 "description": "MCM Error Field Event Numbers."
559 },
560 xbins=10, xmin=0, xmax=10, ybins=8, ymin=0, ymax=8,
561 ylabels=globalError_xlabels_mcmerr,
562 opt='')
563
564 helper.defineHistogram('bit_2D,y_2D;ppm_2d_MCMErrorField03',
565 fillGroup='groupMCMErrorField03',
566 title='MCM Error Field (crates 0-3)',
567 type='TH2I', path=histPath_dev,
568 xbins=8, xmin=0, xmax=8, ybins=64, ymin=0, ymax=64,
569 xlabels=globalError_xlabels_mcmerr,
570 ylabels=BinErrors('cr0cr1cr2cr3'),
571 opt='')
572
573 helper.defineHistogram('bit_2D,y_2D;ppm_2d_MCMErrorField47',
574 fillGroup='groupMCMErrorField47',
575 title='MCM Error Field (crates 4-7)',
576 type='TH2I', path=histPath_det,
577 hanConfig={
578 "display" : "SetPalette(1),SetGridx,SetGridy",
579 "description": "MCM Error Field (crates 4-7)."
580 },
581 xbins=8, xmin=0, xmax=8, ybins=64, ymin=0, ymax=64,
582 xlabels=globalError_xlabels_mcmerr,
583 ylabels=BinErrors('cr4cr5cr6cr7'),
584 opt='')
585
586
587
588 acc = helper.result()
589 result.merge(acc)
590 return result
591
592