ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/ECALDQM/gui/generateLayouts.py
Revision: 1.6
Committed: Fri Nov 16 10:00:59 2012 UTC (12 years, 5 months ago) by yiiyama
Content type: text/x-python
Branch: MAIN
CVS Tags: HEAD
Changes since 1.5: +7 -8 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 from optparse import OptionParser
2 import sys,os
3 from dqmlayouts import *
4
5 genLists = {
6 'shift': ('shift_ecal_layout', 'shift_ecal_T0_layout', 'shift_ecal_relval_layout'),
7 'ecal': ('ecal-layouts', 'ecal_T0_layouts'),
8 'overview': ('ecal_overview_layouts'),
9 'online': ('ecal-layouts', 'shift_ecal_layout', 'ecal_overview_layouts'),
10 'offline': ('ecal_T0_layouts', 'shift_ecal_T0_layout', 'ecal_overview_layouts'),
11 'relval': ('ecal_relval-layouts', 'ecalmc_relval-layouts', 'shift_ecal_relval_layout'),
12 'all': ('shift_ecal_layout', 'shift_ecal_T0_layout', 'shift_ecal_relval_layout',
13 'ecal-layouts', 'ecal_T0_layouts', 'ecal_overview_layouts',
14 'ecal_relval-layouts', 'ecalmc_relval-layouts', 'shift_ecal_relval_layout'),
15 'priv': ('ecalpriv-layouts', 'ecal_overview_layouts')
16 }
17
18 optparser = OptionParser()
19 optparser.add_option('-l', '--list', dest = 'list', help = 'LIST=(shift|ecal|overview|online|offline|relval|all)', metavar = 'LIST', default = 'all')
20 optparser.add_option('-t', '--target-dir', dest = 'targetDir', help = '', metavar = '')
21
22 (options, args) = optparser.parse_args()
23
24 if 'CMSSW_BASE' not in os.environ:
25 print "CMSSW environment not set"
26 sys.exit()
27
28 if options.list not in genLists:
29 optparser.print_usage()
30 sys.exit()
31
32 if not options.targetDir:
33 optparser.print_usage()
34 sys.exit()
35
36 genList = genLists[options.list]
37 targetDir = options.targetDir
38
39 #### BEGIN path definitions / utility functions ####
40
41 from DQM.EcalBarrelMonitorTasks.ClusterTask_cfi import ecalClusterTask
42 from DQM.EcalBarrelMonitorTasks.EnergyTask_cfi import ecalEnergyTask
43 from DQM.EcalBarrelMonitorTasks.IntegrityTask_cfi import ecalIntegrityTask
44 from DQM.EcalBarrelMonitorTasks.LaserTask_cfi import ecalLaserTask
45 from DQM.EcalBarrelMonitorTasks.LedTask_cfi import ecalLedTask
46 from DQM.EcalBarrelMonitorTasks.OccupancyTask_cfi import ecalOccupancyTask
47 from DQM.EcalBarrelMonitorTasks.PedestalTask_cfi import ecalPedestalTask
48 from DQM.EcalBarrelMonitorTasks.PNDiodeTask_cfi import ecalPnDiodeTask
49 from DQM.EcalBarrelMonitorTasks.PresampleTask_cfi import ecalPresampleTask
50 from DQM.EcalBarrelMonitorTasks.RawDataTask_cfi import ecalRawDataTask
51 from DQM.EcalBarrelMonitorTasks.SelectiveReadoutTask_cfi import ecalSelectiveReadoutTask
52 from DQM.EcalBarrelMonitorTasks.TestPulseTask_cfi import ecalTestPulseTask
53 from DQM.EcalBarrelMonitorTasks.TimingTask_cfi import ecalTimingTask
54 from DQM.EcalBarrelMonitorTasks.TrigPrimTask_cfi import ecalTrigPrimTask
55
56 from DQM.EcalBarrelMonitorClient.IntegrityClient_cfi import ecalIntegrityClient
57 from DQM.EcalBarrelMonitorClient.LaserClient_cfi import ecalLaserClient
58 from DQM.EcalBarrelMonitorClient.LedClient_cfi import ecalLedClient
59 from DQM.EcalBarrelMonitorClient.OccupancyClient_cfi import ecalOccupancyClient
60 from DQM.EcalBarrelMonitorClient.PedestalClient_cfi import ecalPedestalClient
61 from DQM.EcalBarrelMonitorClient.PNIntegrityClient_cfi import ecalPnIntegrityClient
62 from DQM.EcalBarrelMonitorClient.PresampleClient_cfi import ecalPresampleClient
63 from DQM.EcalBarrelMonitorClient.RawDataClient_cfi import ecalRawDataClient
64 from DQM.EcalBarrelMonitorClient.SelectiveReadoutClient_cfi import ecalSelectiveReadoutClient
65 from DQM.EcalBarrelMonitorClient.SummaryClient_cfi import ecalSummaryClient
66 from DQM.EcalBarrelMonitorClient.TestPulseClient_cfi import ecalTestPulseClient
67 from DQM.EcalBarrelMonitorClient.TimingClient_cfi import ecalTimingClient
68 from DQM.EcalBarrelMonitorClient.TrigPrimClient_cfi import ecalTrigPrimClient
69 from DQM.EcalBarrelMonitorClient.CalibrationSummaryClient_cfi import ecalCalibrationSummaryClient
70
71 clusterTask = ecalClusterTask.MEs
72 energyTask = ecalEnergyTask.MEs
73 integrityTask = ecalIntegrityTask.MEs
74 laserTask = ecalLaserTask.MEs
75 ledTask = ecalLedTask.MEs
76 occupancyTask = ecalOccupancyTask.MEs
77 pedestalTask = ecalPedestalTask.MEs
78 pnDiodeTask = ecalPnDiodeTask.MEs
79 presampleTask = ecalPresampleTask.MEs
80 rawDataTask = ecalRawDataTask.MEs
81 selectiveReadoutTask = ecalSelectiveReadoutTask.MEs
82 testPulseTask = ecalTestPulseTask.MEs
83 timingTask = ecalTimingTask.MEs
84 trigPrimTask = ecalTrigPrimTask.MEs
85 integrityClient = ecalIntegrityClient.MEs
86 laserClient = ecalLaserClient.MEs
87 ledClient = ecalLedClient.MEs
88 occupancyClient = ecalOccupancyClient.MEs
89 pedestalClient = ecalPedestalClient.MEs
90 pnIntegrityClient = ecalPnIntegrityClient.MEs
91 presampleClient = ecalPresampleClient.MEs
92 rawDataClient = ecalRawDataClient.MEs
93 selectiveReadoutClient = ecalSelectiveReadoutClient.MEs
94 summaryClient = ecalSummaryClient.MEs
95 testPulseClient = ecalTestPulseClient.MEs
96 timingClient = ecalTimingClient.MEs
97 trigPrimClient = ecalTrigPrimClient.MEs
98 calibrationSummaryClient = ecalCalibrationSummaryClient.MEs
99
100 smNamesEE = [
101 "EE-01", "EE-02", "EE-03", "EE-04", "EE-05", "EE-06", "EE-07", "EE-08", "EE-09",
102 "EE+01", "EE+02", "EE+03", "EE+04", "EE+05", "EE+06", "EE+07", "EE+08", "EE+09"]
103
104 smNamesEB = [
105 "EB-01", "EB-02", "EB-03", "EB-04", "EB-05", "EB-06", "EB-07", "EB-08", "EB-09",
106 "EB-10", "EB-11", "EB-12", "EB-13", "EB-14", "EB-15", "EB-16", "EB-17", "EB-18",
107 "EB+01", "EB+02", "EB+03", "EB+04", "EB+05", "EB+06", "EB+07", "EB+08", "EB+09",
108 "EB+10", "EB+11", "EB+12", "EB+13", "EB+14", "EB+15", "EB+16", "EB+17", "EB+18"]
109
110 smMEMNamesEE = ["EE-02", "EE-03", "EE-07", "EE-08", "EE+02", "EE+03", "EE+07", "EE+08"]
111
112 laserWavelengths = ['1', '2', '3']
113
114 laserNames = ['Quantronics', 'Green', 'Photonics']
115
116 ledWavelengths = ['1', '2']
117
118 mgpaGainsFull = ['01', '06', '12']
119 mgpaGains = ['12']
120
121 pnMGPAGainsFull = ['01', '16']
122 pnMGPAGains = ['16']
123
124 ebRep = {'subdet': 'EcalBarrel', 'prefix': 'EB', 'suffix': ''}
125 eeRep = {'subdet': 'EcalEndcap', 'prefix': 'EE'}
126 eemRep = {'subdet': 'EcalEndcap', 'prefix': 'EE', 'suffix': ' EE -'}
127 eepRep = {'subdet': 'EcalEndcap', 'prefix': 'EE', 'suffix': ' EE +'}
128
129 def formRep(rep, setRep):
130 for key, value in setRep.items():
131 if type(value) is ListType:
132 rep.update({key: '%(' + key + ')s'})
133
134 def prepareRepAndME(m, rep):
135 me = {}
136 if type(m) is TupleType:
137 rep.update(m[1])
138 me = m[0]
139 else:
140 me = m
141
142 for ph in findall(r'\%\(([^\)]+)\)s', me.path.value()):
143 if ph not in rep:
144 rep.update({ph: '%(' + ph + ')s'})
145
146 return me
147
148 def single(name, *mes, **keywords) :
149 rows = []
150 returnSet = False
151 rep = {}
152 setRep = {}
153
154 if 'rep' in keywords:
155 setRep = keywords['rep']
156 formRep(rep, setRep)
157
158 for m in mes :
159 me = prepareRepAndME(m, rep)
160
161 rows.append([(me.path.value() % rep, me.description.value() % rep)])
162
163 if len(setRep) > 0:
164 return LayoutElemSet(name, rows, setRep)
165 else:
166 return LayoutElem(name, rows)
167
168 def eb(name, *mes, **keywords) :
169 rows = []
170 rep = {}
171 setRep = {}
172
173 if 'rep' in keywords:
174 setRep = keywords['rep']
175 formRep(rep, setRep)
176
177 for m in mes:
178 me = prepareRepAndME(m, rep)
179
180 rep.update(ebRep)
181 rows.append([(me.path.value() % rep, me.description.value() % rep)])
182
183 if len(setRep) > 0:
184 return LayoutElemSet(name, rows, setRep)
185 else:
186 return LayoutElem(name, rows)
187
188 def ee(name, *mes, **keywords) :
189 rows = []
190 rep = {}
191 setRep = {}
192
193 if 'rep' in keywords:
194 setRep = keywords['rep']
195 formRep(rep, setRep)
196
197 for m in mes :
198 me = prepareRepAndME(m, rep)
199
200 rep.update(eeRep)
201 rows.append([(me.path.value() % rep, me.description.value() % rep)])
202
203 if len(setRep) > 0:
204 return LayoutElemSet(name, rows, setRep)
205 else:
206 return LayoutElem(name, rows)
207
208 def ecal2P(name, *mes, **keywords) :
209 rows = [list(), list()]
210 rep = {}
211 setRep = {}
212
213 if 'rep' in keywords:
214 setRep = keywords['rep']
215 formRep(rep, setRep)
216
217 for m in mes :
218 me = prepareRepAndME(m, rep)
219
220 rep.update(ebRep)
221 rows[0].append((me.path.value() % rep, me.description.value() % rep))
222 rep.update(eeRep)
223 rows[1].append((me.path.value() % rep, me.description.value() % rep))
224
225 if len(setRep) > 0:
226 return LayoutElemSet(name, rows, setRep)
227 else:
228 return LayoutElem(name, rows)
229
230 def ecal3P(name, *mes, **keywords) :
231 rep = {}
232 setRep = {}
233
234 if 'rep' in keywords:
235 setRep = keywords['rep']
236 formRep(rep, setRep)
237
238 ebrows = []
239 eerows = []
240 for m in mes :
241 me = prepareRepAndME(m, rep)
242
243 rep.update(ebRep)
244 ebrows.append([(me.path.value() % rep, me.description.value() % rep)])
245 cols = []
246 rep.update(eemRep)
247 cols.append((me.path.value() % rep, me.description.value() % rep))
248 rep.update(eepRep)
249 cols.append((me.path.value() % rep, me.description.value() % rep))
250 eerows.append(cols)
251
252 rows = ebrows + eerows
253
254 if len(setRep) > 0:
255 return LayoutElemSet(name, rows, setRep)
256 else:
257 return LayoutElem(name, rows)
258
259 def ee2P(name, *mes, **keywords) :
260 rows = []
261 rep = {}
262 setRep = {}
263
264 if 'rep' in keywords:
265 setRep = keywords['rep']
266 formRep(rep, setRep)
267
268 for m in mes :
269 me = prepareRepAndME(m, rep)
270
271 rep.update(ebRep)
272 cols = []
273 rep.update(eemRep)
274 cols.append((me.path.value() % rep, me.description.value() % rep))
275 rep.update(eepRep)
276 cols.append((me.path.value() % rep, me.description.value() % rep))
277 rows.append(cols)
278
279 if len(setRep) > 0:
280 return LayoutElemSet(name, rows, setRep)
281 else:
282 return LayoutElem(name, rows)
283
284 def subdetSet_produce(subdet, mes) :
285 rep = {'subdet': subdet[0], 'prefix': subdet[1]}
286 tmpList = []
287 for m in mes:
288 me = prepareRepAndME(m, rep)
289
290 for ph in findall(r'\%\(([^\)]+)\)s', me.path.value()):
291 if ph not in rep:
292 rep.update({ph: '%(' + ph + ')s'})
293
294 tmpList.append((me.path.value() % rep, me.description.value() % rep))
295
296 if len(tmpList) == 1:
297 return [[tmpList[0]]]
298 elif len(tmpList) == 2:
299 return [[tmpList[0]], [tmpList[1]]]
300 else:
301 rows = []
302 cols = []
303 for i in range(0, len(tmpList)):
304 cols.append(tmpList[i])
305 if len(cols) == 2:
306 rows.append(cols)
307 cols = []
308
309 return rows
310
311 def eeSMSet(name, *mes) :
312 rows = subdetSet_produce(('EcalEndcap', 'EE'), mes)
313 return [LayoutElemSet(name + ' %(sm)s', rows, {'sm': smNamesEE}, addSerial = False)]
314
315 def eeSMMEMSet(name, *mes) :
316 rows = subdetSet_produce(('EcalEndcap', 'EE'), mes)
317 return [LayoutElemSet(name + ' %(sm)s', rows, {'sm': smMEMNamesEE}, addSerial = False)]
318
319 def ebSMSet(name, *mes) :
320 rows = subdetSet_produce(('EcalBarrel', 'EB'), mes)
321 return [LayoutElemSet(name + ' %(sm)s', rows, {'sm': smNamesEB}, addSerial = False)]
322
323 def smSet(name, *mes) :
324 return eeSMSet(name, *mes) + ebSMSet(name, *mes)
325
326 def smMEMSet(name, *mes) :
327 return eeSMMEMSet(name, *mes) + ebSMSet(name, *mes)
328
329 def subdetEtaPhi(name, me, meEta, mePhi) :
330 elems = [
331 LayoutElem(name + " EB", [[(me.path.value() % ebRep, me.description.value() % ebRep)], [(meEta.path.value() % ebRep, meEta.description.value() % ebRep), (mePhi.path.value() % ebRep, mePhi.description.value() % ebRep)]]),
332 LayoutElem(name + " EE -", [[(me.path.value() % eemRep, me.description.value() % eemRep)], [(meEta.path.value() % eemRep, meEta.description.value() % eemRep), (mePhi.path.value() % eemRep, mePhi.description.value() % eemRep)]]),
333 LayoutElem(name + " EE +", [[(me.path.value() % eepRep, me.description.value() % eepRep)], [(meEta.path.value() % eepRep, meEta.description.value() % eepRep), (mePhi.path.value() % eepRep, mePhi.description.value() % eepRep)]])
334 ]
335
336 return elems
337
338 #### END path definitions / utility functions ####
339
340 layouts = {}
341
342 #### BEGIN shift_ecal_layout / shift_ecal_T0_layout ####
343
344 layouts['shift_ecal_layout'] = LayoutDir("00 Shift/Ecal", [
345 ecal3P('Summary', summaryClient.QualitySummary),
346 ecal3P('FE Status', rawDataClient.QualitySummary),
347 ecal3P('Integrity', integrityClient.QualitySummary),
348 ecal3P('Occupancy', occupancyTask.DigiAll),
349 ecal3P('Noise', presampleClient.QualitySummary),
350 ecal3P('RecHit Energy', energyTask.HitMapAll),
351 ecal3P('Timing', timingClient.QualitySummary),
352 ecal3P('TriggerPrimitives', trigPrimClient.EmulQualitySummary),
353 ecal3P('Hot Cells', occupancyClient.QualitySummary),
354 ecal3P('Laser 3 (Photonics)', (laserClient.QualitySummary, {'wl': '3'})), #online
355 ecal2P('Laser 3 PN', (laserClient.PNQualitySummary, {'wl': '3'})), #online
356 ecal3P('Test Pulse', (testPulseClient.QualitySummary, {'gain': '12'})), #online
357 ecal2P('Test Pulse PN', (testPulseClient.PNQualitySummary, {'pngain': '16'})), #online
358 ecal2P('Pedestal', (pedestalClient.QualitySummary, {'gain': '12'})), #online - not used in 2012
359 ecal2P('Pedestal PN', (pedestalClient.PNQualitySummary, {'pngain': '16'})), #online - not used in 2012
360 ee2P('Led 1', (ledClient.QualitySummary, {'wl': '1'})), #online
361 ee('Led 1 PN', (ledClient.PNQualitySummary, {'wl': '1'})) #online
362 ])
363
364 layouts['shift_ecal_layout'].remove('Pedestal')
365 layouts['shift_ecal_layout'].remove('Pedestal PN')
366
367 layouts['shift_ecal_T0_layout'] = layouts['shift_ecal_layout'].clone()
368 layouts['shift_ecal_T0_layout'].remove("Laser 3 (Photonics)")
369 layouts['shift_ecal_T0_layout'].remove("Laser 3 PN")
370 layouts['shift_ecal_T0_layout'].remove("Test Pulse")
371 layouts['shift_ecal_T0_layout'].remove("Test Pulse PN")
372 layouts['shift_ecal_T0_layout'].remove("Pedestal")
373 layouts['shift_ecal_T0_layout'].remove("Pedestal PN")
374 layouts['shift_ecal_T0_layout'].remove("Led 1")
375 layouts['shift_ecal_T0_layout'].remove("Led 1 PN")
376
377 #### END shift_ecal_layout / shift_ecal_T0_layout ####
378
379 #### BEGIN ecal-layouts.py / ecal_T0_layouts.py / ecalpriv-layouts.py ####
380
381 layouts['ecal-layouts'] = LayoutDir("Ecal/Layouts", [
382 ecal3P('Summary', summaryClient.QualitySummary),
383 ecal3P('Occupancy Summary', occupancyTask.DigiAll),
384 ecal3P('Calibration Summary', calibrationSummaryClient.QualitySummary),
385 LayoutDir("Overview", [], addSerial = True),
386 LayoutDir("Raw Data", [], addSerial = True),
387 LayoutDir("Occupancy", [], addSerial = True),
388 LayoutDir("Noise", [], addSerial = True),
389 LayoutDir("Energy", [], addSerial = True),
390 LayoutDir("Timing", [], addSerial = True),
391 LayoutDir("Trigger Primitives", [], addSerial = True),
392 LayoutDir("Selective Readout", [], addSerial = True),
393 LayoutDir("Laser", [], addSerial = True), #online
394 LayoutDir("Led", [], addSerial = True), #online
395 LayoutDir('Test Pulse', [], addSerial = True), #online
396 LayoutDir('Pedestal', [], addSerial = True), #online - not used in 2012
397 LayoutDir('Trend', [], addSerial = True), #online
398 LayoutDir("By SuperModule", [], addSerial = True)
399 ])
400
401 layouts['ecal-layouts'].get('Overview').append([
402 ecal3P('Summary', summaryClient.QualitySummary),
403 ecal3P('FE Status', rawDataClient.QualitySummary),
404 ecal3P('Integrity', integrityClient.QualitySummary),
405 ecal3P('Occupancy', occupancyTask.DigiAll),
406 ecal3P('Noise', presampleClient.QualitySummary),
407 ecal3P('RecHit Energy', energyTask.HitMapAll),
408 ecal3P('Timing', timingClient.QualitySummary),
409 ecal3P('Trigger Primitives', trigPrimClient.EmulQualitySummary),
410 ecal3P('Hot Cells', occupancyClient.QualitySummary),
411 ecal3P('Laser %(wl)s (%(lname)s)', laserClient.QualitySummary, rep = {'wl': laserWavelengths, 'lname': laserNames}), #online
412 ecal2P('Laser %(wl)s PN', laserClient.PNQualitySummary, rep = {'wl': laserWavelengths}), #online
413 ecal3P('Test Pulse G%(gain)s', testPulseClient.QualitySummary, rep = {'gain': mgpaGains}), #online
414 ecal2P('Test Pulse PN G%(pngain)s', testPulseClient.PNQualitySummary, rep = {'pngain': pnMGPAGains}), #online
415 ecal3P('Pedestal G%(gain)s', pedestalClient.QualitySummary, rep = {'gain': mgpaGains}), #online - not used in 2012
416 ecal3P('Pedestal PN G%(pngain)s', pedestalClient.PNQualitySummary, rep = {'pngain': pnMGPAGains}), #online - not used in 2012
417 ee2P('Led %(wl)s', ledClient.QualitySummary, rep = {'wl': ledWavelengths}), #online
418 ee('Led %(wl)s PN', ledClient.PNQualitySummary, rep = {'wl': ledWavelengths}), #online
419 single('Error Trends', rawDataTask.TrendNSyncErrors, integrityTask.TrendNErrors) #online
420 ])
421
422 layouts['ecal-layouts'].get("Raw Data").append([
423 ecal3P('FEStatus Summary', rawDataClient.QualitySummary),
424 ecal2P('Total FE Sync Errors', rawDataTask.DesyncTotal),
425 ecal2P('FE Errors in this LS', rawDataTask.DesyncByLumi, rawDataTask.FEByLumi),
426 ecal3P('Integrity Summary', integrityClient.QualitySummary),
427 ecal2P('Total Integrity Errors', integrityTask.Total),
428 ecal2P('Integrity Errors in this LS', integrityTask.ByLumi), #online
429 single('Error Trends', rawDataTask.TrendNSyncErrors, integrityTask.TrendNErrors), #online
430 ecal2P('Event Type', rawDataTask.EventTypePreCalib, rawDataTask.EventTypeCalib, rawDataTask.EventTypePostCalib),
431 ecal2P('FED Entries', rawDataTask.Entries),
432 LayoutDir('Desync Errors', [
433 ecal2P('CRC', rawDataTask.CRC),
434 ecal2P('DCC-GT Mismatch', rawDataTask.RunNumber, rawDataTask.Orbit),
435 ecal2P('DCC-GT Mismatch', rawDataTask.BXDCC, rawDataTask.L1ADCC, rawDataTask.TriggerType),
436 ecal2P('DCC-TCC Mismatch', rawDataTask.BXTCC, rawDataTask.L1ATCC),
437 ecal2P('DCC-SRP Mismatch', rawDataTask.BXSRP, rawDataTask.L1ASRP),
438 ecal2P('DCC-FE Mismatch', rawDataTask.BXFE, rawDataTask.L1AFE)
439 ]),
440 LayoutDir('By SuperModule', [
441 LayoutDir('Integrity Quality', smSet('Integrity', integrityClient.Quality)),
442 LayoutDir('FEStatus', smSet('FE Status Flags', rawDataTask.FEStatus))
443 ])
444 ])
445
446 layouts['ecal-layouts'].get("Occupancy").append([
447 ecal3P('Hot Cells', occupancyClient.QualitySummary)
448 ])
449 layouts['ecal-layouts'].get("Occupancy").append(
450 subdetEtaPhi("Digi", occupancyTask.DigiAll, occupancyTask.DigiProjEta, occupancyTask.DigiProjPhi) +
451 subdetEtaPhi("RecHit", occupancyTask.RecHitAll, occupancyTask.RecHitProjEta, occupancyTask.RecHitProjPhi) +
452 subdetEtaPhi("RecHit (Filtered)", occupancyTask.RecHitThrAll, occupancyTask.RecHitThrProjEta, occupancyTask.RecHitThrProjPhi) +
453 subdetEtaPhi("Trigger Primitive (Filtered)", occupancyTask.TPDigiThrAll, occupancyTask.TPDigiThrProjEta, occupancyTask.TPDigiThrProjPhi) +
454 subdetEtaPhi("Basic Cluster", clusterTask.BCOccupancy, clusterTask.BCOccupancyProjEta, clusterTask.BCOccupancyProjPhi)
455 )
456 layouts['ecal-layouts'].get("Occupancy").append([
457 ecal2P('Hit Multiplicity', occupancyTask.Digi1D, occupancyTask.RecHitThr1D),
458 ecal2P('Multiplicity Trend', occupancyTask.TrendNDigi, occupancyTask.TrendNRecHitThr, occupancyTask.TrendNTPDigi), #online
459 ecal2P('FED Total', occupancyTask.DigiDCC),
460 ecal2P('Basic Cluster Multiplicity', clusterTask.BCNum),
461 ecal3P('Super Cluster Seed', clusterTask.SCSeedOccupancy),
462 ecal2P('Super Cluster Multiplicity', clusterTask.SCNum),
463 ecal3P('Single Crystal Cluster', clusterTask.SingleCrystalCluster),
464 ecal2P('Cluster Multiplicity Trends', clusterTask.TrendNBC, clusterTask.TrendNSC), #online
465 ecal3P('Laser', laserTask.Occupancy), #online
466 ee2P('Led', ledTask.Occupancy), #online
467 ecal3P('Test Pulse', testPulseTask.Occupancy), #online
468 ecal3P('Pedestal', pedestalTask.Occupancy), #online - not used in 2012
469 ecal2P('PN Digi', pnDiodeTask.OccupancySummary), #online
470 LayoutDir('SR and TT Flags', [
471 ecal3P('Zero Suppression', selectiveReadoutTask.ZS1Map, selectiveReadoutTask.ZSMap),
472 ecal3P('Full Readout', selectiveReadoutTask.FullReadoutMap),
473 ecal3P('Forced Readout', selectiveReadoutTask.RUForcedMap),
474 ecal3P('All SR Flags', selectiveReadoutTask.FlagCounterMap),
475 ecal3P('TT High Interest', trigPrimTask.HighIntMap),
476 ecal3P('TT Medium Interest', trigPrimTask.MedIntMap),
477 ecal3P('TT Low Interest', trigPrimTask.LowIntMap)
478 ]),
479 LayoutDir('By SuperModule', [
480 LayoutDir('Digi', smSet('Digi Occupancy', occupancyTask.Digi)),
481 LayoutDir('PN Digi', smMEMSet('PN Digi Occupancy', pnDiodeTask.Occupancy)) #online
482 ])
483 ])
484
485 layouts['ecal-layouts'].get("Noise").append([
486 ecal3P('Presample Quality', presampleClient.QualitySummary),
487 ecal3P('RMS Map', presampleClient.RMSMapAll),
488 ecal3P('Reconstructed', occupancyTask.RecHitAll, clusterTask.SingleCrystalCluster),
489 ecal2P('Trend', presampleClient.TrendMean, presampleClient.TrendRMS), #online
490 LayoutDir('By SuperModule', [
491 LayoutDir('Quality', smSet('Quality', presampleClient.Quality)),
492 LayoutDir('Mean', smSet('Mean', presampleTask.Pedestal, presampleClient.Mean)),
493 LayoutDir('RMS', smSet('RMS', presampleClient.RMSMap, presampleClient.RMS)),
494 LayoutDir('PN', smMEMSet('PN Presample', pnDiodeTask.Pedestal)) #online
495 ])
496 ])
497
498 layouts['ecal-layouts'].get("Energy").append([
499 ecal3P('RecHit Energy', energyTask.HitMapAll),
500 ecal3P('RecHit Energy Spectrum', energyTask.HitAll)
501 ])
502 layouts['ecal-layouts'].get("Energy").append(
503 subdetEtaPhi("Basic Cluster Energy", clusterTask.BCEMap, clusterTask.BCEMapProjEta, clusterTask.BCEMapProjPhi) +
504 subdetEtaPhi("Basic Cluster Size", clusterTask.BCSizeMap, clusterTask.BCSizeMapProjEta, clusterTask.BCSizeMapProjPhi)
505 )
506 layouts['ecal-layouts'].get("Energy").append([
507 ecal2P('Basic Cluster Energy', clusterTask.BCE),
508 ecal2P('Basic Cluster Size', clusterTask.BCSize),
509 ecal2P('Basic Cluster Size Trend', clusterTask.TrendBCSize), #online
510 ecal2P('Super Cluster Energy', clusterTask.SCE),
511 ecal2P('Super Cluster Energy Low', clusterTask.SCELow),
512 ecal2P('Super Cluster Seed Energy', clusterTask.SCSeedEnergy),
513 ecal2P('Super Cluster R9', clusterTask.SCR9),
514 ecal2P('Super Cluster Size', clusterTask.SCNBCs, clusterTask.SCNcrystals),
515 ecal2P('Cluster Energy vs Seed Energy', clusterTask.SCClusterVsSeed),
516 LayoutDir('By SuperModule',
517 smSet('RecHit', energyTask.HitMap, energyTask.Hit)
518 )
519 ## LayoutDir('DiClusterMass', [
520 ## single('Pi0', clusterTask.Pi0),
521 ## single('JPsi', clusterTask.JPsi),
522 ## single('Z', clusterTask.Z),
523 ## single('High Mass', clusterTask.HighMass)
524 ## ])
525 ])
526
527 layouts['ecal-layouts'].get("Timing").append([
528 ecal3P('Quality Summary', timingClient.QualitySummary),
529 ecal3P('Mean', timingClient.MeanAll),
530 ecal3P('RMS', timingClient.RMSAll)
531 ])
532 layouts['ecal-layouts'].get("Timing").append(
533 subdetEtaPhi("Map", timingTask.TimeAllMap, timingClient.ProjEta, timingClient.ProjPhi)
534 )
535 layouts['ecal-layouts'].get("Timing").append([
536 ecal2P("Forward-Backward", timingClient.FwdBkwdDiff, timingClient.FwdvBkwd),
537 ecal3P('Distribution', timingTask.TimeAll),
538 ecal3P('Vs Amptlitude', timingTask.TimeAmpAll),
539 LayoutDir('By SuperModule', [
540 LayoutDir('Quality', smSet('Quality', timingClient.Quality)),
541 LayoutDir('Distribution', smSet('Distribution', timingTask.Time1D)),
542 LayoutDir('Mean', smSet('Mean', timingTask.TimeMap, timingClient.MeanSM)),
543 LayoutDir('RMS', smSet('RMS', timingClient.RMSMap)),
544 LayoutDir('Vs Amplitude', smSet('Time vs Amplitude', timingTask.TimeAmp)),
545 LayoutDir('Laser', smSet('Photonics Laser', (laserTask.Timing, {'wl': '3'}))), #online
546 LayoutDir('Led', eeSMSet('Led 1', (ledTask.Timing, {'wl': '1'}))) #online
547 ])
548 ])
549
550 layouts['ecal-layouts'].get("Trigger Primitives").append([
551 ecal3P('Emulation Quality', trigPrimClient.EmulQualitySummary),
552 ecal3P('Occupancy (Filtered)', occupancyTask.TPDigiThrAll),
553 ecal3P('Et Spectrum', trigPrimTask.EtReal),
554 ecal3P('Emulation Et Spectrum', trigPrimTask.EtMaxEmul),
555 ecal3P('Et Map', trigPrimTask.EtSummary),
556 ecal3P('Timing', trigPrimClient.TimingSummary),
557 ecal3P('Non Single Timing', trigPrimClient.NonSingleSummary),
558 ecal3P("Occupancy vs BX", trigPrimTask.OccVsBx),
559 ecal3P("Et vs BX", trigPrimTask.EtVsBx),
560 ecal3P('Emululation Timing', trigPrimTask.EmulMaxIndex),
561 LayoutDir('By SuperModule', [
562 LayoutDir('EmulMatching', smSet('Match', trigPrimTask.MatchedIndex)),
563 LayoutDir('Et', smSet('TP Et', trigPrimTask.EtRealMap))
564 ])
565 ])
566
567 layouts['ecal-layouts'].get("Selective Readout").append([
568 ecal2P('DCC Data Size', selectiveReadoutTask.DCCSize),
569 ecal2P('DCC Data Size', selectiveReadoutTask.DCCSizeProf),
570 ecal3P('DCC Data Size', selectiveReadoutTask.EventSize),
571 ecal3P('Tower Data Size', selectiveReadoutTask.TowerSize),
572 ecal3P('Payload High Interest', selectiveReadoutTask.HighIntPayload),
573 ecal3P('Payload Low Interest', selectiveReadoutTask.LowIntPayload),
574 ecal3P("ZS Filter Output (High Int.)", selectiveReadoutTask.HighIntOutput),
575 ecal3P("ZS Filter Output (Low Int.)", selectiveReadoutTask.LowIntOutput),
576 ecal3P('High Interest Rate', selectiveReadoutClient.HighInterest),
577 ecal3P('Medium Interest Rate', selectiveReadoutClient.MedInterest),
578 ecal3P('Low Interest Rate', selectiveReadoutClient.LowInterest),
579 ecal3P('TT Flags', trigPrimTask.TTFlags),
580 ecal3P('Full Readout Flags', selectiveReadoutClient.FR),
581 ecal3P('Zero Suppression Flags', selectiveReadoutClient.ZS1),
582 ecal3P('Forced Readout Flags', selectiveReadoutClient.RUForced),
583 ecal3P('Full Readout Flag Dropped', selectiveReadoutClient.FRDropped),
584 ecal3P('ZS Flag Readout', selectiveReadoutClient.ZSReadout)
585 ])
586
587 layouts['ecal-layouts'].get("Laser").append([
588 ecal3P("Quality Summary L%(wl)s (%(lname)s)", laserClient.QualitySummary, rep = {'wl': laserWavelengths, 'lname': laserNames}),
589 ecal3P('Amplitude L%(wl)s (%(lname)s)', laserTask.AmplitudeSummary, rep = {'wl': laserWavelengths, 'lname': laserNames}),
590 ecal2P('Amplitude RMS L%(wl)s (%(lname)s)', laserClient.AmplitudeRMS, rep = {'wl': laserWavelengths, 'lname': laserNames}),
591 ecal3P('Occupancy', laserTask.Occupancy),
592 ecal2P('Timing Spread L%(wl)s (%(lname)s)', laserClient.TimingRMSMap, rep = {'wl': laserWavelengths, 'lname': laserNames}),
593 ecal2P('PN Quality Summary L%(wl)s (%(lname)s)', laserClient.PNQualitySummary, rep = {'wl': laserWavelengths, 'lname': laserNames}),
594 LayoutDirSet('Laser%(wl)s (%(lname)s)', [
595 LayoutDir('Quality', smSet('Quality', laserClient.Quality)),
596 LayoutDir('Amplitude', smSet('Amplitude', laserTask.Amplitude, laserClient.AmplitudeMean)),
597 LayoutDir('Timing', smSet('Timing', laserTask.Timing, laserClient.TimingMean, laserClient.TimingRMS)),
598 LayoutDir('APD Over PN', smSet('APD Over PN', laserTask.AOverP)),
599 LayoutDir('Shape', smSet('Shape', laserTask.Shape)),
600 LayoutDir('PN Amplitude', smMEMSet('Amplitude', laserTask.PNAmplitude))
601 ], {'wl': laserWavelengths, 'lname': laserNames})
602 ])
603
604 layouts['ecal-layouts'].get("Led").append([
605 ee2P("Quality Summary L%(wl)s", ledClient.QualitySummary, rep = {'wl': ledWavelengths}),
606 ee2P('Amplitude L%(wl)s', ledTask.AmplitudeSummary, rep = {'wl': ledWavelengths}),
607 single('Amplitude RMS L%(wl)s', ledClient.AmplitudeRMS, rep = {'wl': ledWavelengths}),
608 ee2P('Occupancy', ledTask.Occupancy),
609 single('Timing Spread L%(wl)s', ledClient.TimingRMSMap, rep = {'wl': ledWavelengths}),
610 single('PN Quality Summary L%(wl)s', ledClient.PNQualitySummary, rep = {'wl': ledWavelengths}),
611 LayoutDirSet('Led%(wl)s', [
612 LayoutDir('Quality', eeSMSet('Quality', ledClient.Quality)),
613 LayoutDir('Amplitude', eeSMSet('Amplitude', ledTask.Amplitude, ledClient.AmplitudeMean)),
614 LayoutDir('Timing', eeSMSet('Timing', ledTask.Timing, ledClient.TimingMean)),
615 LayoutDir('APD Over PN', eeSMSet('APD Over PN', ledTask.AOverP)),
616 LayoutDir('Shape', eeSMSet('Shape', ledTask.Shape)),
617 LayoutDir('PN Amplitude', eeSMMEMSet('Amplitude', ledTask.PNAmplitude))
618 ], {'wl': ledWavelengths})
619 ])
620
621 layouts['ecal-layouts'].get("Test Pulse").append([
622 ecal3P('Quality Summary G%(gain)s', testPulseClient.QualitySummary, rep = {'gain': mgpaGains}),
623 ecal3P('Occupancy', testPulseTask.Occupancy),
624 ecal2P('PN Quality Summary G%(pngain)s', testPulseClient.PNQualitySummary, rep = {'pngain': pnMGPAGains}),
625 LayoutDirSet('Gain%(gain)s', [
626 LayoutDir('Quality', smSet('Quality', testPulseClient.Quality)),
627 LayoutDir('Amplitude', smSet('Amplitude', testPulseTask.Amplitude)),
628 LayoutDir('Amplitude RMS', smSet('RMS', testPulseClient.AmplitudeRMS)),
629 LayoutDir('Shape', smSet('Shape', testPulseTask.Shape))
630 ], {'gain': mgpaGains}),
631 LayoutDirSet('PNGain%(pngain)s',
632 smMEMSet('Amplitude', testPulseTask.PNAmplitude),
633 {'pngain': pnMGPAGains})
634 ])
635
636 layouts['ecal-layouts'].get('Pedestal').append([
637 ecal3P('Quality Summary G%(gain)s', pedestalClient.QualitySummary, rep = {'gain': mgpaGains}),
638 ecal3P('Occupancy', pedestalTask.Occupancy),
639 ecal2P('PN Quality Summary G%(pngain)s', pedestalClient.PNQualitySummary, rep = {'pngain': pnMGPAGains}),
640 LayoutDirSet('Gain%(gain)s', [
641 LayoutDir('Quality', smSet('Quality', pedestalClient.Quality)),
642 LayoutDir('Mean', smSet('Mean', pedestalTask.Pedestal, pedestalClient.Mean)),
643 LayoutDir('RMS', smSet('RMS', pedestalClient.RMS))
644 ], {'gain': mgpaGains}),
645 LayoutDirSet('PNGain%(pngain)s', [
646 LayoutDir('Mean', smMEMSet('Mean', pedestalTask.PNPedestal)),
647 LayoutDir('RMS', smMEMSet('RMS', pedestalClient.PNRMS))
648 ], {'pngain': pnMGPAGains})
649 ])
650
651 layouts['ecal-layouts'].get("Trend").append([
652 single('Errors', rawDataTask.TrendNSyncErrors, integrityTask.TrendNErrors),
653 ecal2P('Number of Digis', occupancyTask.TrendNDigi),
654 ecal2P('Number of RecHits', occupancyTask.TrendNRecHitThr),
655 ecal2P('Number of TPs', occupancyTask.TrendNTPDigi),
656 ecal2P('Presample Mean', presampleClient.TrendMean),
657 ecal2P('Presample RMS', presampleClient.TrendRMS),
658 ecal2P('Basic Clusters', clusterTask.TrendNBC, clusterTask.TrendBCSize),
659 ecal2P('Super Clusters', clusterTask.TrendNSC, clusterTask.TrendSCSize)
660 ])
661
662 ebSMRep = {'sm': smNamesEB}
663 ebSMRep.update(ebRep)
664 ebSMSet = LayoutDirSet("%(sm)s", [
665 single("Integrity", integrityClient.Quality),
666 single("FEStatus", rawDataTask.FEStatus),
667 single("Digi Occupancy", occupancyTask.Digi),
668 single("Presample Quality", presampleClient.Quality),
669 single("Presample Mean", presampleTask.Pedestal, presampleClient.Mean),
670 single("Presample RMS", presampleClient.RMS),
671 single("Energy", energyTask.HitMap, energyTask.Hit),
672 single("Timing Quality", timingClient.Quality),
673 single("Timing All", timingTask.Time1D),
674 single("Timing Mean", timingTask.TimeMap, timingClient.MeanSM),
675 single("Timing RMS", timingClient.RMSMap),
676 single("Timing Vs Amplitude", timingTask.TimeAmp),
677 single("Trigger Primitives", trigPrimTask.EtRealMap, trigPrimTask.MatchedIndex),
678 LayoutDir('Laser', [
679 single('Quality L%(wl)s (%(lname)s)', laserClient.Quality, rep = {'wl': laserWavelengths, 'lname': laserNames}),
680 single('Amplitude L%(wl)s (%(lname)s)', laserTask.Amplitude, laserClient.AmplitudeMean, rep = {'wl': laserWavelengths, 'lname': laserNames}),
681 single('Timing L%(wl)s (%(lname)s)', laserTask.Timing, laserClient.TimingMean, laserClient.TimingRMS, rep = {'wl': laserWavelengths, 'lname': laserNames}),
682 single('APD Over PN L%(wl)s (%(lname)s)', laserTask.AOverP, rep = {'wl': laserWavelengths, 'lname': laserNames}),
683 single('Shape L%(wl)s (%(lname)s)', laserTask.Shape, rep = {'wl': laserWavelengths, 'lname': laserNames})
684 ]), #online
685 LayoutDir('Test Pulse', [
686 single('Quality G%(gain)s', testPulseClient.Quality, rep = {'gain': mgpaGains}),
687 single('Amplitude G%(gain)s', testPulseTask.Amplitude, testPulseClient.AmplitudeRMS, rep = {'gain': mgpaGains}),
688 single('Shape G%(gain)s', testPulseTask.Shape, rep = {'gain': mgpaGains})
689 ]), #online
690 LayoutDir('Pedestal', [
691 single('Quality G%(gain)s', pedestalClient.Quality, rep = {'gain': mgpaGains}),
692 single('Mean G%(gain)s', pedestalTask.Pedestal, pedestalClient.Mean, rep = {'gain': mgpaGains}),
693 single('RMS G%(gain)s', pedestalClient.RMS, rep = {'gain': mgpaGains})
694 ]) #online
695 ], ebSMRep)
696 eeSMRep = {'sm': smNamesEE}
697 eeSMRep.update(eeRep)
698 eeSMSet = ebSMSet.clone()
699 eeSMSet.setReplacement(eeSMRep)
700 eeSMSet.append(
701 LayoutDir('Led', [
702 single('Quality L%(wl)s', ledClient.Quality, rep = {'wl': ledWavelengths}),
703 single('Amplitude L%(wl)s', ledTask.Amplitude, ledClient.AmplitudeMean, rep = {'wl': ledWavelengths}),
704 single('Timing L%(wl)s', ledTask.Timing, ledClient.TimingMean, rep = {'wl': ledWavelengths}),
705 single('APD Over PN L%(wl)s', ledTask.AOverP, rep = {'wl': ledWavelengths}),
706 single('Shape L%(wl)s', ledTask.Shape, rep = {'wl': ledWavelengths})
707 ]) #online
708 )
709 ebSMMEMRep = {'sm': smNamesEB}
710 ebSMMEMRep.update(ebRep)
711 ebSMMEMSet = LayoutDirSet("%(sm)s", [
712 single('PN Digi Occupancy', pnDiodeTask.Occupancy), #online
713 single('PN Presample', pnDiodeTask.Pedestal), #online
714 LayoutDir('Laser', [single('PN Amplitude L%(wl)s', laserTask.PNAmplitude, rep = {'wl': laserWavelengths})]), #online
715 LayoutDir('Test Pulse', [single('PN Amplitude G%(pngain)s', testPulseTask.PNAmplitude, rep = {'pngain': pnMGPAGains})]), #online
716 LayoutDir('Pedestal', [single('PN Pedestal G%(pngain)s', pedestalTask.PNPedestal, pedestalClient.PNRMS, rep = {'pngain': pnMGPAGains})]) #online
717 ], ebSMMEMRep)
718 eeSMMEMRep = {'sm': smMEMNamesEE}
719 eeSMMEMRep.update(eeRep)
720 eeSMMEMSet = ebSMMEMSet.clone()
721 eeSMMEMSet.setReplacement(eeSMMEMRep)
722 eeSMMEMSet.append(
723 LayoutDir('Led', [
724 single('PN Amplitude L%(wl)s', ledTask.PNAmplitude, rep = {'wl': ledWavelengths})
725 ])
726 )
727
728 layouts['ecal-layouts'].get("By SuperModule").append([
729 ebSMSet,
730 eeSMSet,
731 ebSMMEMSet,
732 eeSMMEMSet
733 ])
734
735 layouts['ecalpriv-layouts'] = layouts['ecal-layouts'].clone()
736 layouts['ecalpriv-layouts'].get('Test Pulse/Quality Summary G%(gain)s').setReplacement({'gain': mgpaGainsFull})
737 layouts['ecalpriv-layouts'].get('Test Pulse/PN Quality Summary G%(pngain)s').setReplacement({'pngain': pnMGPAGainsFull})
738 layouts['ecalpriv-layouts'].get('Test Pulse/Gain%(gain)s').setReplacement({'gain': mgpaGainsFull})
739 layouts['ecalpriv-layouts'].get('Test Pulse/PNGain%(pngain)s').setReplacement({'pngain': pnMGPAGainsFull})
740 layouts['ecalpriv-layouts'].get('Pedestal/Quality Summary G%(gain)s').setReplacement({'gain': mgpaGainsFull})
741 layouts['ecalpriv-layouts'].get('Pedestal/PN Quality Summary G%(pngain)s').setReplacement({'pngain': pnMGPAGainsFull})
742 layouts['ecalpriv-layouts'].get('Pedestal/Gain%(gain)s').setReplacement({'gain': mgpaGainsFull})
743 layouts['ecalpriv-layouts'].get('Pedestal/PNGain%(pngain)s').setReplacement({'pngain': pnMGPAGainsFull})
744 layouts['ecalpriv-layouts'].remove('By SuperModule')
745 ebSMSet.get("Test Pulse/Quality G%(gain)s").setReplacement({'gain': mgpaGainsFull})
746 ebSMSet.get("Test Pulse/Amplitude G%(gain)s").setReplacement({'gain': mgpaGainsFull})
747 ebSMSet.get("Test Pulse/Shape G%(gain)s").setReplacement({'gain': mgpaGainsFull})
748 ebSMSet.get("Pedestal/Quality G%(gain)s").setReplacement({'gain': mgpaGainsFull})
749 ebSMSet.get("Pedestal/Mean G%(gain)s").setReplacement({'gain': mgpaGainsFull})
750 ebSMSet.get("Pedestal/RMS G%(gain)s").setReplacement({'gain': mgpaGainsFull})
751 ebSMMEMSet.get("Test Pulse/PN Amplitude G%(pngain)s").setReplacement({'pngain': pnMGPAGainsFull})
752 ebSMMEMSet.get("Pedestal/PN Pedestal G%(pngain)s").setReplacement({'pngain': pnMGPAGainsFull})
753 eeSMSet.get("Test Pulse/Quality G%(gain)s").setReplacement({'gain': mgpaGainsFull})
754 eeSMSet.get("Test Pulse/Amplitude G%(gain)s").setReplacement({'gain': mgpaGainsFull})
755 eeSMSet.get("Test Pulse/Shape G%(gain)s").setReplacement({'gain': mgpaGainsFull})
756 eeSMSet.get("Pedestal/Quality G%(gain)s").setReplacement({'gain': mgpaGainsFull})
757 eeSMSet.get("Pedestal/Mean G%(gain)s").setReplacement({'gain': mgpaGainsFull})
758 eeSMSet.get("Pedestal/RMS G%(gain)s").setReplacement({'gain': mgpaGainsFull})
759 eeSMMEMSet.get("Test Pulse/PN Amplitude G%(pngain)s").setReplacement({'pngain': pnMGPAGainsFull})
760 eeSMMEMSet.get("Pedestal/PN Pedestal G%(pngain)s").setReplacement({'pngain': pnMGPAGainsFull})
761 layouts['ecalpriv-layouts'].append(
762 LayoutDir("By SuperModule", [
763 ebSMSet,
764 eeSMSet,
765 ebSMMEMSet,
766 eeSMMEMSet
767 ])
768 )
769
770 #removing pedestal from central DQM layouts (2012)
771 layouts['ecal-layouts'].remove('Pedestal')
772 layouts['ecal-layouts'].remove('Overview/Pedestal G%(gain)s')
773 layouts['ecal-layouts'].remove('Overview/Pedestal PN G%(pngain)s')
774 layouts['ecal-layouts'].remove('Occupancy/Pedestal')
775 layouts['ecal-layouts'].remove('By SuperModule/Pedestal')
776
777 layouts['ecal_T0_layouts'] = layouts['ecal-layouts'].clone()
778 layouts['ecal_T0_layouts'].remove('Calibration Summary')
779 layouts['ecal_T0_layouts'].remove('Selective Readout')
780 layouts['ecal_T0_layouts'].remove('Laser')
781 layouts['ecal_T0_layouts'].remove('Led')
782 layouts['ecal_T0_layouts'].remove('Test Pulse')
783 layouts['ecal_T0_layouts'].remove('Pedestal')
784 layouts['ecal_T0_layouts'].remove('Trend')
785 layouts['ecal_T0_layouts'].remove('Overview/Laser %(wl)s (%(lname)s)')
786 layouts['ecal_T0_layouts'].remove('Overview/Laser %(wl)s PN')
787 layouts['ecal_T0_layouts'].remove('Overview/Test Pulse G%(gain)s')
788 layouts['ecal_T0_layouts'].remove('Overview/Test Pulse PN G%(pngain)s')
789 layouts['ecal_T0_layouts'].remove('Overview/Pedestal G%(gain)s')
790 layouts['ecal_T0_layouts'].remove('Overview/Pedestal PN G%(pngain)s')
791 layouts['ecal_T0_layouts'].remove('Overview/Led %(wl)s')
792 layouts['ecal_T0_layouts'].remove('Overview/Led %(wl)s PN')
793 layouts['ecal_T0_layouts'].remove('Overview/Error Trends')
794 layouts['ecal_T0_layouts'].remove('Raw Data/Integrity Errors in this LS')
795 layouts['ecal_T0_layouts'].remove('Raw Data/Error Trends')
796 layouts['ecal_T0_layouts'].remove('Occupancy/Cluster Multiplicity Trends')
797 layouts['ecal_T0_layouts'].remove('Occupancy/Laser')
798 layouts['ecal_T0_layouts'].remove('Occupancy/Led')
799 layouts['ecal_T0_layouts'].remove('Occupancy/Test Pulse')
800 layouts['ecal_T0_layouts'].remove('Occupancy/Pedestal')
801 layouts['ecal_T0_layouts'].remove('Occupancy/PN Digi')
802 layouts['ecal_T0_layouts'].remove('Occupancy/By SuperModule/PN Digi')
803 layouts['ecal_T0_layouts'].remove('Noise/Trend')
804 layouts['ecal_T0_layouts'].remove('Noise/By SuperModule/PN')
805 layouts['ecal_T0_layouts'].remove('Energy/Basic Cluster Size Trend')
806 layouts['ecal_T0_layouts'].remove('Timing/Laser')
807 layouts['ecal_T0_layouts'].remove('Timing/Led')
808 layouts['ecal_T0_layouts'].remove('By SuperModule/%(sm)s/Laser')
809 layouts['ecal_T0_layouts'].remove('By SuperModule/%(sm)s/Test Pulse')
810 layouts['ecal_T0_layouts'].remove('By SuperModule/%(sm)s/Pedestal')
811 layouts['ecal_T0_layouts'].remove('By SuperModule/%(sm)s/Led')
812
813 #### END ecal-layouts.py / ecal_T0_layouts.py / ecalpriv-layouts.py ####
814
815 #### BEGIN ecal_overview_layouts ####
816
817 layouts['ecal_overview_layouts'] = LayoutDir("Collisions/EcalFeedBack", [
818 ecal2P("Single Event Timing", timingTask.TimeAll),
819 eb("Forward-Backward EB", timingClient.FwdBkwdDiff, timingClient.FwdvBkwd),
820 ee("Forward-Backward EE", timingClient.FwdBkwdDiff, timingClient.FwdvBkwd),
821 ])
822 layouts['ecal_overview_layouts'].append(
823 subdetEtaPhi("Timing Map", timingTask.TimeAllMap, timingClient.ProjEta, timingClient.ProjPhi)
824 )
825 layouts['ecal_overview_layouts'].append(
826 LayoutElem("Timing ES", [
827 [["EcalPreshower/ESTimingTask/ES Timing Z 1 P 1"], ["EcalPreshower/ESTimingTask/ES Timing Z -1 P 1"]],
828 [["EcalPreshower/ESTimingTask/ES Timing Z 1 P 2"], ["EcalPreshower/ESTimingTask/ES Timing Z -1 P 2"]]
829 ])
830 )
831 layouts['ecal_overview_layouts'].append(
832 subdetEtaPhi("Occupancy", occupancyTask.RecHitThrAll, occupancyTask.RecHitThrProjEta, occupancyTask.RecHitThrProjPhi)
833 )
834 layouts['ecal_overview_layouts'].append([
835 LayoutElem("Occupancy ES", [
836 [["EcalPreshower/ESOccupancyTask/ES Occupancy with selected hits Z 1 P 1"], ["EcalPreshower/ESOccupancyTask/ES Occupancy with selected hits Z -1 P 1"]],
837 [["EcalPreshower/ESOccupancyTask/ES Occupancy with selected hits Z 1 P 2"], ["EcalPreshower/ESOccupancyTask/ES Occupancy with selected hits Z -1 P 2"]]
838 ]),
839 eb("RecHit Energy EB", energyTask.HitMapAll, energyTask.HitAll),
840 ee2P("RecHit Energy EE", energyTask.HitMapAll, energyTask.HitMapAll),
841 LayoutElem("RecHit Energy ES", [
842 [["EcalPreshower/ESOccupancyTask/ES Energy Density with selected hits Z 1 P 1"], ["EcalPreshower/ESOccupancyTask/ES Energy Density with selected hits Z -1 P 1"]],
843 [["EcalPreshower/ESOccupancyTask/ES Energy Density with selected hits Z 1 P 2"], ["EcalPreshower/ESOccupancyTask/ES Energy Density with selected hits Z -1 P 2"]]
844 ])
845 ])
846
847 #### END ecal_overview_layouts ####
848
849 #### BEGIN ecal_relval-layouts / ecalmc_relval-layouts ####
850
851 layouts['ecal_relval-layouts'] = LayoutDir("DataLayouts/Ecal", [
852 ecal2P("Number of Ecal RecHits", occupancyTask.RecHitThr1D),
853 LayoutElem("Number of ES RecHits", [
854 [["EcalPreshower/ESOccupancyTask/ES Num of RecHits Z 1 P 1"], ["EcalPreshower/ESOccupancyTask/ES Num of RecHits Z -1 P 1"]],
855 [["EcalPreshower/ESOccupancyTask/ES Num of RecHits Z 1 P 2"], ["EcalPreshower/ESOccupancyTask/ES Num of RecHits Z -1 P 2"]]
856 ])
857 ] + subdetEtaPhi("Ecal RecHit Occupancy", occupancyTask.RecHitThrAll, occupancyTask.RecHitThrProjEta, occupancyTask.RecHitThrProjPhi) + [
858 ecal3P("Ecal Spectrum", energyTask.HitAll),
859 LayoutElem("ES Spectrum", [
860 [["EcalPreshower/ESOccupancyTask/ES RecHit Energy Z 1 P 1"], ["EcalPreshower/ESOccupancyTask/ES RecHit Energy Z -1 P 1"]],
861 [["EcalPreshower/ESOccupancyTask/ES RecHit Energy Z 1 P 2"], ["EcalPreshower/ESOccupancyTask/ES RecHit Energy Z -1 P 2"]]
862 ]),
863 LayoutElem("Ecal Max Energy", [
864 [["EcalBarrel/EBRecoSummary/recHits_EB_energyMax"]],
865 [["EcalEndcap/EERecoSummary/recHits_EEP_energyMax"], ["EcalEndcap/EERecoSummary/recHits_EEM_energyMax"]]
866 ]),
867 LayoutElem("ES Max Energy", [
868 [["EcalPreshower/ESRecoSummary/recHits_ES_energyMax"]]
869 ]),
870 LayoutElem("Ecal Timing", [
871 [["EcalBarrel/EBRecoSummary/recHits_EB_time"]],
872 [["EcalEndcap/EERecoSummary/recHits_EEP_time"], ["EcalEndcap/EERecoSummary/recHits_EEM_time"]]
873 ]),
874 LayoutElem("ES Timing", [
875 [["EcalPreshower/ESRecoSummary/recHits_ES_time"]]
876 ]),
877 LayoutElem("Ecal Chi2", [
878 [["EcalBarrel/EBRecoSummary/recHits_EB_Chi2"]],
879 [["EcalEndcap/EERecoSummary/recHits_EEP_Chi2"], ["EcalEndcap/EERecoSummary/recHits_EEM_Chi2"]]
880 ]),
881 LayoutElem("EB SwissCross", [
882 [["EcalBarrel/EBRecoSummary/recHits_EB_E1oE4"]]
883 ]),
884 LayoutElem("RecHit Flags", [
885 [["EcalBarrel/EBRecoSummary/recHits_EB_recoFlag"]],
886 [["EcalEndcap/EERecoSummary/recHits_EE_recoFlag"]]
887 ]),
888 LayoutElem("ReducedRecHit Flags", [
889 [["EcalBarrel/EBRecoSummary/redRecHits_EB_recoFlag"]],
890 [["EcalEndcap/EERecoSummary/redRecHits_EE_recoFlag"]]
891 ]),
892 LayoutElem("Basic Cluster RecHit Flags", [
893 [["EcalBarrel/EBRecoSummary/basicClusters_recHits_EB_recoFlag"]],
894 [["EcalEndcap/EERecoSummary/basicClusters_recHits_EE_recoFlag"]]
895 ]),
896 ecal2P("Number of Basic Clusters", clusterTask.BCNum),
897 ecal2P("Number of Super Clusters", clusterTask.SCNum),
898 ecal2P("Super Cluster Energy", clusterTask.SCE),
899 LayoutElem("Super Cluster Occupancy Eta", [
900 [["EcalBarrel/EBRecoSummary/superClusters_EB_eta"]],
901 [["EcalEndcap/EERecoSummary/superClusters_EE_eta"]]
902 ]),
903 LayoutElem("Super Cluster Occupancy Phi", [
904 [["EcalBarrel/EBRecoSummary/superClusters_EB_phi"]],
905 [["EcalEndcap/EERecoSummary/superClusters_EE_phi"]]
906 ]),
907 ecal2P("Super Cluster Size (Crystals)", clusterTask.SCNcrystals),
908 ecal2P("Super Cluster Size (Basic Clusters)", clusterTask.SCNBCs),
909 LayoutElem("Super Cluster Seed SwissCross", [
910 [["EcalBarrel/EBRecoSummary/superClusters_EB_E1oE4"]]
911 ]),
912 LayoutElem("Preshower Planes Energy", [
913 [["EcalPreshower/ESRecoSummary/esClusters_energy_plane1"], ["EcalPreshower/ESRecoSummary/esClusters_energy_plane2"]],
914 [["EcalPreshower/ESRecoSummary/esClusters_energy_ratio"]]
915 ])
916 ])
917
918 layouts['ecalmc_relval-layouts'] = layouts['ecal_relval-layouts'].clone('MCLayouts/Ecal')
919
920 #### END ecal_relval-layouts / ecalmc_relval-layouts ####
921
922 #### BEGIN shift_ecal_relval_layout ####
923
924 layouts['shift_ecal_relval_layout'] = LayoutDir("00 Shift/Ecal", [
925 ecal3P("RecHit Spectra", energyTask.HitAll),
926 ecal2P("Number of RecHits", occupancyTask.RecHitThr1D),
927 ecal3P("Mean Timing", timingClient.MeanAll)
928 ])
929
930 #### END shift_ecal_relval_layout ####
931
932 for lo in genList:
933 filename = lo
934 if lo == 'ecalpriv-layouts' :
935 filename = 'ecal-layouts'
936
937 output = file(targetDir + '/' + filename + '.py', 'w')
938 layouts[lo].expand(output)
939 output.close()
940
941