ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/ECALDQM/gui/generateLayouts.py
Revision: 1.5
Committed: Thu Oct 4 20:33:26 2012 UTC (12 years, 6 months ago) by yiiyama
Content type: text/x-python
Branch: MAIN
Changes since 1.4: +2 -1 lines
Log Message:
small changes

File Contents

# User Rev Content
1 yiiyama 1.1 from optparse import OptionParser
2 yiiyama 1.2 import sys,os
3 yiiyama 1.1 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 yiiyama 1.2 optparser.add_option('-t', '--target-dir', dest = 'targetDir', help = '', metavar = '')
21 yiiyama 1.1
22     (options, args) = optparser.parse_args()
23    
24 yiiyama 1.2 if 'CMSSW_BASE' not in os.environ:
25     print "CMSSW environment not set"
26     sys.exit()
27    
28 yiiyama 1.1 if options.list not in genLists:
29     optparser.print_usage()
30 yiiyama 1.2 sys.exit()
31 yiiyama 1.1
32 yiiyama 1.2 if not options.targetDir:
33 yiiyama 1.1 optparser.print_usage()
34 yiiyama 1.2 sys.exit()
35 yiiyama 1.1
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 yiiyama 1.2 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 yiiyama 1.1
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 yiiyama 1.3 mgpaGainsFull = ['01', '06', '12']
119 yiiyama 1.1 mgpaGains = ['12']
120    
121 yiiyama 1.3 pnMGPAGainsFull = ['01', '16']
122 yiiyama 1.1 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 yiiyama 1.2 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 yiiyama 1.4 for ph in findall(r'\%\(([^\)]+)\)s', me.path.value()):
143 yiiyama 1.2 if ph not in rep:
144     rep.update({ph: '%(' + ph + ')s'})
145    
146     return me
147 yiiyama 1.1
148 yiiyama 1.2 def single(name, *mes, **keywords) :
149 yiiyama 1.1 rows = []
150 yiiyama 1.2 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 yiiyama 1.4 rows.append([(me.path.value() % rep, me.description.value() % rep)])
162 yiiyama 1.2
163     if len(setRep) > 0:
164     return LayoutElemSet(name, rows, setRep)
165 yiiyama 1.1 else:
166     return LayoutElem(name, rows)
167    
168 yiiyama 1.2 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 yiiyama 1.1
177 yiiyama 1.2 for m in mes:
178     me = prepareRepAndME(m, rep)
179    
180     rep.update(ebRep)
181 yiiyama 1.4 rows.append([(me.path.value() % rep, me.description.value() % rep)])
182 yiiyama 1.2
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 yiiyama 1.1 rows = []
190 yiiyama 1.2 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 yiiyama 1.4 rows.append([(me.path.value() % rep, me.description.value() % rep)])
202 yiiyama 1.2
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 yiiyama 1.4 rows[0].append((me.path.value() % rep, me.description.value() % rep))
222 yiiyama 1.2 rep.update(eeRep)
223 yiiyama 1.4 rows[1].append((me.path.value() % rep, me.description.value() % rep))
224 yiiyama 1.2
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 yiiyama 1.4 ebrows.append([(me.path.value() % rep, me.description.value() % rep)])
245 yiiyama 1.2 cols = []
246     rep.update(eemRep)
247 yiiyama 1.4 cols.append((me.path.value() % rep, me.description.value() % rep))
248 yiiyama 1.2 rep.update(eepRep)
249 yiiyama 1.4 cols.append((me.path.value() % rep, me.description.value() % rep))
250 yiiyama 1.2 eerows.append(cols)
251    
252     rows = ebrows + eerows
253    
254     if len(setRep) > 0:
255     return LayoutElemSet(name, rows, setRep)
256 yiiyama 1.1 else:
257     return LayoutElem(name, rows)
258    
259 yiiyama 1.2 def ee2P(name, *mes, **keywords) :
260     rows = []
261     rep = {}
262     setRep = {}
263 yiiyama 1.1
264 yiiyama 1.2 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 yiiyama 1.4 cols.append((me.path.value() % rep, me.description.value() % rep))
275 yiiyama 1.2 rep.update(eepRep)
276 yiiyama 1.4 cols.append((me.path.value() % rep, me.description.value() % rep))
277 yiiyama 1.2 rows.append(cols)
278    
279     if len(setRep) > 0:
280     return LayoutElemSet(name, rows, setRep)
281 yiiyama 1.1 else:
282 yiiyama 1.2 return LayoutElem(name, rows)
283 yiiyama 1.1
284 yiiyama 1.2 def subdetSet_produce(subdet, mes) :
285 yiiyama 1.1 rep = {'subdet': subdet[0], 'prefix': subdet[1]}
286 yiiyama 1.2 tmpList = []
287     for m in mes:
288     me = prepareRepAndME(m, rep)
289    
290 yiiyama 1.4 for ph in findall(r'\%\(([^\)]+)\)s', me.path.value()):
291 yiiyama 1.2 if ph not in rep:
292     rep.update({ph: '%(' + ph + ')s'})
293 yiiyama 1.1
294 yiiyama 1.4 tmpList.append((me.path.value() % rep, me.description.value() % rep))
295 yiiyama 1.2
296     if len(tmpList) == 1:
297     return [[tmpList[0]]]
298     elif len(tmpList) == 2:
299     return [[tmpList[0]], [tmpList[1]]]
300 yiiyama 1.1 else:
301 yiiyama 1.2 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 yiiyama 1.1
309     return rows
310    
311 yiiyama 1.2 def eeSMSet(name, *mes) :
312     rows = subdetSet_produce(('EcalEndcap', 'EE'), mes)
313 yiiyama 1.1 return [LayoutElemSet(name + ' %(sm)s', rows, {'sm': smNamesEE}, addSerial = False)]
314    
315 yiiyama 1.2 def eeSMMEMSet(name, *mes) :
316     rows = subdetSet_produce(('EcalEndcap', 'EE'), mes)
317 yiiyama 1.1 return [LayoutElemSet(name + ' %(sm)s', rows, {'sm': smMEMNamesEE}, addSerial = False)]
318    
319 yiiyama 1.2 def ebSMSet(name, *mes) :
320     rows = subdetSet_produce(('EcalBarrel', 'EB'), mes)
321 yiiyama 1.1 return [LayoutElemSet(name + ' %(sm)s', rows, {'sm': smNamesEB}, addSerial = False)]
322    
323 yiiyama 1.2 def smSet(name, *mes) :
324     return eeSMSet(name, *mes) + ebSMSet(name, *mes)
325 yiiyama 1.1
326 yiiyama 1.2 def smMEMSet(name, *mes) :
327     return eeSMMEMSet(name, *mes) + ebSMSet(name, *mes)
328 yiiyama 1.1
329 yiiyama 1.2 def subdetEtaPhi(name, me, meEta, mePhi) :
330     elems = [
331 yiiyama 1.4 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 yiiyama 1.2 ]
335 yiiyama 1.1
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 yiiyama 1.2 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 yiiyama 1.1 ])
363    
364 yiiyama 1.2 layouts['shift_ecal_layout'].remove('Pedestal')
365     layouts['shift_ecal_layout'].remove('Pedestal PN')
366    
367 yiiyama 1.1 layouts['shift_ecal_T0_layout'] = layouts['shift_ecal_layout'].clone()
368 yiiyama 1.2 layouts['shift_ecal_T0_layout'].remove("Laser 3 (Photonics)")
369     layouts['shift_ecal_T0_layout'].remove("Laser 3 PN")
370 yiiyama 1.1 layouts['shift_ecal_T0_layout'].remove("Test Pulse")
371     layouts['shift_ecal_T0_layout'].remove("Test Pulse PN")
372 yiiyama 1.2 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 yiiyama 1.1
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 yiiyama 1.2 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 yiiyama 1.1 ])
400    
401     layouts['ecal-layouts'].get('Overview').append([
402 yiiyama 1.2 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     ecal3P('Total FE Sync Errors', rawDataTask.DesyncTotal),
425     ecal3P('FE Errors in this LS', rawDataTask.DesyncByLumi, rawDataTask.FEByLumi),
426     ecal3P('Integrity Summary', integrityClient.QualitySummary),
427     ecal3P('Total Integrity Errors', integrityTask.Total),
428     ecal3P('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 yiiyama 1.1 ])
445    
446     layouts['ecal-layouts'].get("Occupancy").append([
447 yiiyama 1.2 ecal3P('Hot Cells', occupancyClient.QualitySummary)
448 yiiyama 1.1 ])
449     layouts['ecal-layouts'].get("Occupancy").append(
450 yiiyama 1.2 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", occupancyTask.TPDigiAll, occupancyTask.TPDigiProjEta, occupancyTask.TPDigiProjPhi) +
454     subdetEtaPhi("Trigger Primitive (Filtered)", occupancyTask.TPDigiThrAll, occupancyTask.TPDigiThrProjEta, occupancyTask.TPDigiThrProjPhi) +
455     subdetEtaPhi("Basic Cluster", clusterTask.BCOccupancy, clusterTask.BCOccupancyProjEta, clusterTask.BCOccupancyProjPhi)
456 yiiyama 1.1 )
457     layouts['ecal-layouts'].get("Occupancy").append([
458 yiiyama 1.2 ecal2P('Hit Multiplicity', occupancyTask.Digi1D, occupancyTask.RecHitThr1D),
459     ecal2P('Multiplicity Trend', occupancyTask.TrendNDigi, occupancyTask.TrendNRecHitThr, occupancyTask.TrendNTPDigi), #online
460     ecal2P('FED Total', occupancyTask.DigiDCC),
461     ecal2P('Basic Cluster Multiplicity', clusterTask.BCNum),
462     ecal3P('Super Cluster Seed', clusterTask.SCSeedOccupancy),
463     ecal2P('Super Cluster Multiplicity', clusterTask.SCNum),
464     ecal3P('Single Crystal Cluster', clusterTask.SingleCrystalCluster),
465     ecal2P('Cluster Multiplicity Trends', clusterTask.TrendNBC, clusterTask.TrendNSC), #online
466     ecal3P('Laser', laserTask.Occupancy), #online
467     ee2P('Led', ledTask.Occupancy), #online
468     ecal3P('Test Pulse', testPulseTask.Occupancy), #online
469     ecal3P('Pedestal', pedestalTask.Occupancy), #online - not used in 2012
470     ecal2P('PN Digi', pnDiodeTask.OccupancySummary), #online
471     LayoutDir('SR and TT Flags', [
472     ecal3P('Zero Suppression', selectiveReadoutTask.ZS1Map, selectiveReadoutTask.ZSMap),
473     ecal3P('Full Readout', selectiveReadoutTask.FullReadoutMap),
474     ecal3P('Forced Readout', selectiveReadoutTask.RUForcedMap),
475     ecal3P('All SR Flags', selectiveReadoutTask.FlagCounterMap),
476     ecal3P('TT High Interest', trigPrimTask.HighIntMap),
477     ecal3P('TT Medium Interest', trigPrimTask.MedIntMap),
478     ecal3P('TT Low Interest', trigPrimTask.LowIntMap)
479     ]),
480     LayoutDir('By SuperModule', [
481     LayoutDir('Digi', smSet('Digi Occupancy', occupancyTask.Digi)),
482     LayoutDir('PN Digi', smMEMSet('PN Digi Occupancy', pnDiodeTask.Occupancy)) #online
483     ])
484     ])
485    
486     layouts['ecal-layouts'].get("Noise").append([
487     ecal3P('Presample Quality', presampleClient.QualitySummary),
488     ecal3P('RMS Map', presampleClient.RMSMap),
489     ecal3P('Reconstructed', occupancyTask.RecHitAll, clusterTask.SingleCrystalCluster),
490     ecal2P('Trend', presampleClient.TrendMean, presampleClient.TrendRMS), #online
491     LayoutDir('By SuperModule', [
492     LayoutDir('Quality', smSet('Quality', presampleClient.Quality)),
493     LayoutDir('Mean', smSet('Mean', presampleTask.Pedestal, presampleClient.Mean)),
494     LayoutDir('RMS', smSet('RMS', presampleClient.RMS)),
495     LayoutDir('PN', smMEMSet('PN Presample', pnDiodeTask.Pedestal)) #online
496     ])
497 yiiyama 1.1 ])
498    
499     layouts['ecal-layouts'].get("Energy").append([
500 yiiyama 1.2 ecal3P('RecHit Energy', energyTask.HitMapAll),
501     ecal3P('RecHit Energy Spectrum', energyTask.HitAll)
502 yiiyama 1.1 ])
503     layouts['ecal-layouts'].get("Energy").append(
504 yiiyama 1.2 subdetEtaPhi("Basic Cluster Energy", clusterTask.BCEMap, clusterTask.BCEMapProjEta, clusterTask.BCEMapProjPhi) +
505     subdetEtaPhi("Basic Cluster Size", clusterTask.BCSizeMap, clusterTask.BCSizeMapProjEta, clusterTask.BCSizeMapProjPhi)
506 yiiyama 1.1 )
507     layouts['ecal-layouts'].get("Energy").append([
508 yiiyama 1.2 ecal2P('Basic Cluster Energy', clusterTask.BCE),
509     ecal2P('Basic Cluster Size', clusterTask.BCSize),
510     ecal2P('Basic Cluster Size Trend', clusterTask.TrendBCSize), #online
511     ecal2P('Super Cluster Energy', clusterTask.SCE),
512     ecal2P('Super Cluster Energy Low', clusterTask.SCELow),
513     ecal2P('Super Cluster Seed Energy', clusterTask.SCSeedEnergy),
514     ecal2P('Super Cluster R9', clusterTask.SCR9),
515     ecal2P('Super Cluster Size', clusterTask.SCNBCs, clusterTask.SCNcrystals),
516     ecal2P('Cluster Energy vs Seed Energy', clusterTask.SCClusterVsSeed),
517     LayoutDir('By SuperModule',
518     smSet('RecHit', energyTask.HitMap, energyTask.Hit)
519     )
520 yiiyama 1.1 ## LayoutDir('DiClusterMass', [
521 yiiyama 1.2 ## single('Pi0', clusterTask.Pi0),
522     ## single('JPsi', clusterTask.JPsi),
523     ## single('Z', clusterTask.Z),
524     ## single('High Mass', clusterTask.HighMass)
525 yiiyama 1.1 ## ])
526     ])
527    
528     layouts['ecal-layouts'].get("Timing").append([
529 yiiyama 1.2 ecal3P('Quality Summary', timingClient.QualitySummary),
530     ecal3P('Mean', timingClient.MeanAll),
531     ecal3P('RMS', timingClient.RMSAll)
532 yiiyama 1.1 ])
533     layouts['ecal-layouts'].get("Timing").append(
534 yiiyama 1.2 subdetEtaPhi("Map", timingTask.TimeAllMap, timingClient.ProjEta, timingClient.ProjPhi)
535 yiiyama 1.1 )
536     layouts['ecal-layouts'].get("Timing").append([
537 yiiyama 1.2 ecal2P("Forward-Backward", timingClient.FwdBkwdDiff, timingClient.FwdvBkwd),
538     ecal3P('Distribution', timingTask.TimeAll),
539     ecal3P('Vs Amptlitude', timingTask.TimeAmpAll),
540     LayoutDir('By SuperModule', [
541     LayoutDir('Quality', smSet('Quality', timingClient.Quality)),
542     LayoutDir('Distribution', smSet('Distribution', timingTask.Time1D)),
543     LayoutDir('Mean', smSet('Mean', timingTask.TimeMap, timingClient.MeanSM)),
544     LayoutDir('RMS', smSet('RMS', timingClient.RMSMap)),
545     LayoutDir('Vs Amplitude', smSet('Time vs Amplitude', timingTask.TimeAmp)),
546     LayoutDir('Laser', smSet('Photonics Laser', (laserTask.Timing, {'wl': '3'}))), #online
547     LayoutDir('Led', eeSMSet('Led 1', (ledTask.Timing, {'wl': '1'}))) #online
548     ])
549 yiiyama 1.1 ])
550    
551     layouts['ecal-layouts'].get("Trigger Primitives").append([
552 yiiyama 1.2 ecal3P('Emulation Quality', trigPrimClient.EmulQualitySummary),
553     ecal3P('Occupancy', occupancyTask.TPDigiAll),
554     ecal3P('Occupancy (Filtered)', occupancyTask.TPDigiThrAll),
555     ecal3P('Et Spectrum', trigPrimTask.EtReal),
556     ecal3P('Emulation Et Spectrum', trigPrimTask.EtMaxEmul),
557     ecal3P('Et Map', trigPrimTask.EtSummary),
558 yiiyama 1.5 ecal3P('Timing', trigPrimClient.TimingSummary),
559     ecal3P('Non Single Timing', trigPrimClient.NonSingleSummary),
560 yiiyama 1.2 ecal3P("Occupancy vs BX", trigPrimTask.OccVsBx),
561     ecal3P("Et vs BX", trigPrimTask.EtVsBx),
562     ecal3P('Emululation Timing', trigPrimTask.EmulMaxIndex),
563     LayoutDir('By SuperModule', [
564     LayoutDir('EmulMatching', smSet('Match', trigPrimTask.MatchedIndex)),
565     LayoutDir('Et', smSet('TP Et', trigPrimTask.EtRealMap))
566     ])
567 yiiyama 1.1 ])
568    
569     layouts['ecal-layouts'].get("Selective Readout").append([
570 yiiyama 1.2 ecal2P('DCC Data Size', selectiveReadoutTask.DCCSize),
571     ecal3P('DCC Data Size', selectiveReadoutTask.EventSize),
572     ecal3P('Tower Data Size', selectiveReadoutTask.TowerSize),
573     ecal3P('Payload High Interest', selectiveReadoutTask.HighIntPayload),
574     ecal3P('Payload Low Interest', selectiveReadoutTask.LowIntPayload),
575     ecal3P("ZS Filter Output (High Int.)", selectiveReadoutTask.HighIntOutput),
576     ecal3P("ZS Filter Output (Low Int.)", selectiveReadoutTask.LowIntOutput),
577     ecal3P('High Interest Rate', selectiveReadoutClient.HighInterest),
578     ecal3P('Medium Interest Rate', selectiveReadoutClient.MedInterest),
579     ecal3P('Low Interest Rate', selectiveReadoutClient.LowInterest),
580     ecal3P('TT Flags', trigPrimTask.TTFlags),
581     ecal3P('Full Readout Flags', selectiveReadoutClient.FR),
582     ecal3P('Zero Suppression Flags', selectiveReadoutClient.ZS1),
583     ecal3P('Forced Readout Flags', selectiveReadoutClient.RUForced),
584     ecal3P('Full Readout Flag Dropped', selectiveReadoutClient.FRDropped),
585     ecal3P('ZS Flag Readout', selectiveReadoutClient.ZSReadout)
586 yiiyama 1.1 ])
587    
588     layouts['ecal-layouts'].get("Laser").append([
589 yiiyama 1.2 ecal3P("Quality Summary L%(wl)s (%(lname)s)", laserClient.QualitySummary, rep = {'wl': laserWavelengths, 'lname': laserNames}),
590     ecal3P('Amplitude L%(wl)s (%(lname)s)', laserTask.AmplitudeSummary, rep = {'wl': laserWavelengths, 'lname': laserNames}),
591     ecal2P('Amplitude RMS L%(wl)s (%(lname)s)', laserClient.AmplitudeRMS, rep = {'wl': laserWavelengths, 'lname': laserNames}),
592     ecal3P('Occupancy', laserTask.Occupancy),
593     ecal2P('Timing Spread L%(wl)s (%(lname)s)', laserClient.TimingRMSMap, rep = {'wl': laserWavelengths, 'lname': laserNames}),
594     ecal2P('PN Quality Summary L%(wl)s (%(lname)s)', laserClient.PNQualitySummary, rep = {'wl': laserWavelengths, 'lname': laserNames}),
595 yiiyama 1.1 LayoutDirSet('Laser%(wl)s (%(lname)s)', [
596 yiiyama 1.2 LayoutDir('Quality', smSet('Quality', laserClient.Quality)),
597     LayoutDir('Amplitude', smSet('Amplitude', laserTask.Amplitude, laserClient.AmplitudeMean)),
598     LayoutDir('Timing', smSet('Timing', laserTask.Timing, laserClient.TimingMean, laserClient.TimingRMS)),
599     LayoutDir('APD Over PN', smSet('APD Over PN', laserTask.AOverP)),
600     LayoutDir('Shape', smSet('Shape', laserTask.Shape)),
601     LayoutDir('PN Amplitude', smMEMSet('Amplitude', laserTask.PNAmplitude))
602     ], {'wl': laserWavelengths, 'lname': laserNames})
603 yiiyama 1.1 ])
604    
605     layouts['ecal-layouts'].get("Led").append([
606 yiiyama 1.2 ee2P("Quality Summary L%(wl)s", ledClient.QualitySummary, rep = {'wl': ledWavelengths}),
607     ee2P('Amplitude L%(wl)s', ledTask.AmplitudeSummary, rep = {'wl': ledWavelengths}),
608     single('Amplitude RMS L%(wl)s', ledClient.AmplitudeRMS, rep = {'wl': ledWavelengths}),
609     ee2P('Occupancy', ledTask.Occupancy),
610     single('Timing Spread L%(wl)s', ledClient.TimingRMSMap, rep = {'wl': ledWavelengths}),
611     single('PN Quality Summary L%(wl)s', ledClient.PNQualitySummary, rep = {'wl': ledWavelengths}),
612 yiiyama 1.1 LayoutDirSet('Led%(wl)s', [
613 yiiyama 1.2 LayoutDir('Quality', eeSMSet('Quality', ledClient.Quality)),
614     LayoutDir('Amplitude', eeSMSet('Amplitude', ledTask.Amplitude, ledClient.AmplitudeMean)),
615     LayoutDir('Timing', eeSMSet('Timing', ledTask.Timing, ledClient.TimingMean)),
616     LayoutDir('APD Over PN', eeSMSet('APD Over PN', ledTask.AOverP)),
617     LayoutDir('Shape', eeSMSet('Shape', ledTask.Shape)),
618     LayoutDir('PN Amplitude', eeSMMEMSet('Amplitude', ledTask.PNAmplitude))
619     ], {'wl': ledWavelengths})
620 yiiyama 1.1 ])
621    
622     layouts['ecal-layouts'].get("Test Pulse").append([
623 yiiyama 1.2 ecal3P('Quality Summary G%(gain)s', testPulseClient.QualitySummary, rep = {'gain': mgpaGains}),
624     ecal3P('Occupancy', testPulseTask.Occupancy),
625     ecal2P('PN Quality Summary G%(pngain)s', testPulseClient.PNQualitySummary, rep = {'pngain': pnMGPAGains}),
626 yiiyama 1.1 LayoutDirSet('Gain%(gain)s', [
627 yiiyama 1.2 LayoutDir('Quality', smSet('Quality', testPulseClient.Quality)),
628     LayoutDir('Amplitude', smSet('Amplitude', testPulseTask.Amplitude)),
629     LayoutDir('Amplitude RMS', smSet('RMS', testPulseClient.AmplitudeRMS)),
630     LayoutDir('Shape', smSet('Shape', testPulseTask.Shape))
631     ], {'gain': mgpaGains}),
632     LayoutDirSet('PNGain%(pngain)s',
633     smMEMSet('Amplitude', testPulseTask.PNAmplitude),
634     {'pngain': pnMGPAGains})
635     ])
636    
637     layouts['ecal-layouts'].get('Pedestal').append([
638     ecal3P('Quality Summary G%(gain)s', pedestalClient.QualitySummary, rep = {'gain': mgpaGains}),
639     ecal3P('Occupancy', pedestalTask.Occupancy),
640     ecal2P('PN Quality Summary G%(pngain)s', pedestalClient.PNQualitySummary, rep = {'pngain': pnMGPAGains}),
641     LayoutDirSet('Gain%(gain)s', [
642     LayoutDir('Quality', smSet('Quality', pedestalClient.Quality)),
643     LayoutDir('Mean', smSet('Mean', pedestalTask.Pedestal, pedestalClient.Mean)),
644     LayoutDir('RMS', smSet('RMS', pedestalClient.RMS))
645     ], {'gain': mgpaGains}),
646     LayoutDirSet('PNGain%(pngain)s', [
647     LayoutDir('Mean', smMEMSet('Mean', pedestalTask.PNPedestal)),
648     LayoutDir('RMS', smMEMSet('RMS', pedestalClient.PNRMS))
649     ], {'pngain': pnMGPAGains})
650 yiiyama 1.1 ])
651    
652     layouts['ecal-layouts'].get("Trend").append([
653 yiiyama 1.2 single('Errors', rawDataTask.TrendNSyncErrors, integrityTask.TrendNErrors),
654     ecal2P('Number of Digis', occupancyTask.TrendNDigi),
655     ecal2P('Number of RecHits', occupancyTask.TrendNRecHitThr),
656     ecal2P('Number of TPs', occupancyTask.TrendNTPDigi),
657     ecal2P('Presample Mean', presampleClient.TrendMean),
658     ecal2P('Presample RMS', presampleClient.TrendRMS),
659     ecal2P('Basic Clusters', clusterTask.TrendNBC, clusterTask.TrendBCSize),
660     ecal2P('Super Clusters', clusterTask.TrendNSC, clusterTask.TrendSCSize)
661 yiiyama 1.1 ])
662    
663 yiiyama 1.2 ebSMRep = {'sm': smNamesEB}
664     ebSMRep.update(ebRep)
665     ebSMSet = LayoutDirSet("%(sm)s", [
666     single("Integrity", integrityClient.Quality),
667     single("FEStatus", rawDataTask.FEStatus),
668     single("Digi Occupancy", occupancyTask.Digi),
669     single("Presample Quality", presampleClient.Quality),
670     single("Presample Mean", presampleTask.Pedestal, presampleClient.Mean),
671     single("Presample RMS", presampleClient.RMS),
672     single("Energy", energyTask.HitMap, energyTask.Hit),
673     single("Timing Quality", timingClient.Quality),
674     single("Timing All", timingTask.Time1D),
675     single("Timing Mean", timingTask.TimeMap, timingClient.MeanSM),
676     single("Timing RMS", timingClient.RMSMap),
677     single("Timing Vs Amplitude", timingTask.TimeAmp),
678     single("Trigger Primitives", trigPrimTask.EtRealMap, trigPrimTask.MatchedIndex),
679 yiiyama 1.1 LayoutDir('Laser', [
680 yiiyama 1.2 single('Quality L%(wl)s (%(lname)s)', laserClient.Quality, rep = {'wl': laserWavelengths, 'lname': laserNames}),
681     single('Amplitude L%(wl)s (%(lname)s)', laserTask.Amplitude, laserClient.AmplitudeMean, rep = {'wl': laserWavelengths, 'lname': laserNames}),
682     single('Timing L%(wl)s (%(lname)s)', laserTask.Timing, laserClient.TimingMean, laserClient.TimingRMS, rep = {'wl': laserWavelengths, 'lname': laserNames}),
683     single('APD Over PN L%(wl)s (%(lname)s)', laserTask.AOverP, rep = {'wl': laserWavelengths, 'lname': laserNames}),
684     single('Shape L%(wl)s (%(lname)s)', laserTask.Shape, rep = {'wl': laserWavelengths, 'lname': laserNames})
685     ]), #online
686 yiiyama 1.1 LayoutDir('Test Pulse', [
687 yiiyama 1.2 single('Quality G%(gain)s', testPulseClient.Quality, rep = {'gain': mgpaGains}),
688     single('Amplitude G%(gain)s', testPulseTask.Amplitude, testPulseClient.AmplitudeRMS, rep = {'gain': mgpaGains}),
689     single('Shape G%(gain)s', testPulseTask.Shape, rep = {'gain': mgpaGains})
690     ]), #online
691     LayoutDir('Pedestal', [
692     single('Quality G%(gain)s', pedestalClient.Quality, rep = {'gain': mgpaGains}),
693     single('Mean G%(gain)s', pedestalTask.Pedestal, pedestalClient.Mean, rep = {'gain': mgpaGains}),
694     single('RMS G%(gain)s', pedestalClient.RMS, rep = {'gain': mgpaGains})
695     ]) #online
696     ], ebSMRep)
697     eeSMRep = {'sm': smNamesEE}
698     eeSMRep.update(eeRep)
699     eeSMSet = ebSMSet.clone()
700     eeSMSet.setReplacement(eeSMRep)
701     eeSMSet.append(
702     LayoutDir('Led', [
703     single('Quality L%(wl)s', ledClient.Quality, rep = {'wl': ledWavelengths}),
704     single('Amplitude L%(wl)s', ledTask.Amplitude, ledClient.AmplitudeMean, rep = {'wl': ledWavelengths}),
705     single('Timing L%(wl)s', ledTask.Timing, ledClient.TimingMean, rep = {'wl': ledWavelengths}),
706     single('APD Over PN L%(wl)s', ledTask.AOverP, rep = {'wl': ledWavelengths}),
707     single('Shape L%(wl)s', ledTask.Shape, rep = {'wl': ledWavelengths})
708     ]) #online
709     )
710     ebSMMEMRep = {'sm': smNamesEB}
711     ebSMMEMRep.update(ebRep)
712     ebSMMEMSet = LayoutDirSet("%(sm)s", [
713     single('PN Digi Occupancy', pnDiodeTask.Occupancy), #online
714     single('PN Presample', pnDiodeTask.Pedestal), #online
715     LayoutDir('Laser', [single('PN Amplitude L%(wl)s', laserTask.PNAmplitude, rep = {'wl': laserWavelengths})]), #online
716     LayoutDir('Test Pulse', [single('PN Amplitude G%(pngain)s', testPulseTask.PNAmplitude, rep = {'pngain': pnMGPAGains})]), #online
717     LayoutDir('Pedestal', [single('PN Pedestal G%(pngain)s', pedestalTask.PNPedestal, pedestalClient.PNRMS, rep = {'pngain': pnMGPAGains})]) #online
718     ], ebSMMEMRep)
719     eeSMMEMRep = {'sm': smMEMNamesEE}
720     eeSMMEMRep.update(eeRep)
721     eeSMMEMSet = ebSMMEMSet.clone()
722     eeSMMEMSet.setReplacement(eeSMMEMRep)
723     eeSMMEMSet.append(
724     LayoutDir('Led', [
725     single('PN Amplitude L%(wl)s', ledTask.PNAmplitude, rep = {'wl': ledWavelengths})
726 yiiyama 1.1 ])
727     )
728 yiiyama 1.2
729     layouts['ecal-layouts'].get("By SuperModule").append([
730     ebSMSet,
731     eeSMSet,
732     ebSMMEMSet,
733     eeSMMEMSet
734     ])
735    
736     layouts['ecalpriv-layouts'] = layouts['ecal-layouts'].clone()
737     layouts['ecalpriv-layouts'].get('Test Pulse/Quality Summary G%(gain)s').setReplacement({'gain': mgpaGainsFull})
738     layouts['ecalpriv-layouts'].get('Test Pulse/PN Quality Summary G%(pngain)s').setReplacement({'pngain': pnMGPAGainsFull})
739     layouts['ecalpriv-layouts'].get('Test Pulse/Gain%(gain)s').setReplacement({'gain': mgpaGainsFull})
740     layouts['ecalpriv-layouts'].get('Test Pulse/PNGain%(pngain)s').setReplacement({'pngain': pnMGPAGainsFull})
741     layouts['ecalpriv-layouts'].get('Pedestal/Quality Summary G%(gain)s').setReplacement({'gain': mgpaGainsFull})
742     layouts['ecalpriv-layouts'].get('Pedestal/PN Quality Summary G%(pngain)s').setReplacement({'pngain': pnMGPAGainsFull})
743     layouts['ecalpriv-layouts'].get('Pedestal/Gain%(gain)s').setReplacement({'gain': mgpaGainsFull})
744     layouts['ecalpriv-layouts'].get('Pedestal/PNGain%(pngain)s').setReplacement({'pngain': pnMGPAGainsFull})
745     layouts['ecalpriv-layouts'].remove('By SuperModule')
746     ebSMSet.get("Test Pulse/Quality G%(gain)s").setReplacement({'gain': mgpaGainsFull})
747     ebSMSet.get("Test Pulse/Amplitude G%(gain)s").setReplacement({'gain': mgpaGainsFull})
748     ebSMSet.get("Test Pulse/Shape G%(gain)s").setReplacement({'gain': mgpaGainsFull})
749     ebSMSet.get("Pedestal/Quality G%(gain)s").setReplacement({'gain': mgpaGainsFull})
750     ebSMSet.get("Pedestal/Mean G%(gain)s").setReplacement({'gain': mgpaGainsFull})
751     ebSMSet.get("Pedestal/RMS G%(gain)s").setReplacement({'gain': mgpaGainsFull})
752     ebSMMEMSet.get("Test Pulse/PN Amplitude G%(pngain)s").setReplacement({'pngain': pnMGPAGainsFull})
753     ebSMMEMSet.get("Pedestal/PN Pedestal G%(pngain)s").setReplacement({'pngain': pnMGPAGainsFull})
754     eeSMSet.get("Test Pulse/Quality G%(gain)s").setReplacement({'gain': mgpaGainsFull})
755     eeSMSet.get("Test Pulse/Amplitude G%(gain)s").setReplacement({'gain': mgpaGainsFull})
756     eeSMSet.get("Test Pulse/Shape G%(gain)s").setReplacement({'gain': mgpaGainsFull})
757     eeSMSet.get("Pedestal/Quality G%(gain)s").setReplacement({'gain': mgpaGainsFull})
758     eeSMSet.get("Pedestal/Mean G%(gain)s").setReplacement({'gain': mgpaGainsFull})
759     eeSMSet.get("Pedestal/RMS G%(gain)s").setReplacement({'gain': mgpaGainsFull})
760     eeSMMEMSet.get("Test Pulse/PN Amplitude G%(pngain)s").setReplacement({'pngain': pnMGPAGainsFull})
761     eeSMMEMSet.get("Pedestal/PN Pedestal G%(pngain)s").setReplacement({'pngain': pnMGPAGainsFull})
762     layouts['ecalpriv-layouts'].append(
763     LayoutDir("By SuperModule", [
764     ebSMSet,
765     eeSMSet,
766     ebSMMEMSet,
767     eeSMMEMSet
768 yiiyama 1.1 ])
769     )
770 yiiyama 1.2
771     #removing pedestal from central DQM layouts (2012)
772     layouts['ecal-layouts'].remove('Pedestal')
773     layouts['ecal-layouts'].remove('Overview/Pedestal G%(gain)s')
774     layouts['ecal-layouts'].remove('Overview/Pedestal PN G%(pngain)s')
775     layouts['ecal-layouts'].remove('Occupancy/Pedestal')
776     layouts['ecal-layouts'].remove('By SuperModule/Pedestal')
777 yiiyama 1.1
778     layouts['ecal_T0_layouts'] = layouts['ecal-layouts'].clone()
779     layouts['ecal_T0_layouts'].remove('Calibration Summary')
780     layouts['ecal_T0_layouts'].remove('Selective Readout')
781     layouts['ecal_T0_layouts'].remove('Laser')
782     layouts['ecal_T0_layouts'].remove('Led')
783     layouts['ecal_T0_layouts'].remove('Test Pulse')
784     layouts['ecal_T0_layouts'].remove('Pedestal')
785     layouts['ecal_T0_layouts'].remove('Trend')
786 yiiyama 1.2 layouts['ecal_T0_layouts'].remove('Overview/Laser %(wl)s (%(lname)s)')
787     layouts['ecal_T0_layouts'].remove('Overview/Laser %(wl)s PN')
788     layouts['ecal_T0_layouts'].remove('Overview/Test Pulse G%(gain)s')
789     layouts['ecal_T0_layouts'].remove('Overview/Test Pulse PN G%(pngain)s')
790     layouts['ecal_T0_layouts'].remove('Overview/Pedestal G%(gain)s')
791     layouts['ecal_T0_layouts'].remove('Overview/Pedestal PN G%(pngain)s')
792     layouts['ecal_T0_layouts'].remove('Overview/Led %(wl)s')
793     layouts['ecal_T0_layouts'].remove('Overview/Led %(wl)s PN')
794 yiiyama 1.1 layouts['ecal_T0_layouts'].remove('Overview/Error Trends')
795 yiiyama 1.2 layouts['ecal_T0_layouts'].remove('Raw Data/Integrity Errors in this LS')
796     layouts['ecal_T0_layouts'].remove('Raw Data/Error Trends')
797     layouts['ecal_T0_layouts'].remove('Occupancy/Cluster Multiplicity Trends')
798     layouts['ecal_T0_layouts'].remove('Occupancy/Laser')
799 yiiyama 1.1 layouts['ecal_T0_layouts'].remove('Occupancy/Led')
800     layouts['ecal_T0_layouts'].remove('Occupancy/Test Pulse')
801 yiiyama 1.2 layouts['ecal_T0_layouts'].remove('Occupancy/Pedestal')
802     layouts['ecal_T0_layouts'].remove('Occupancy/PN Digi')
803     layouts['ecal_T0_layouts'].remove('Occupancy/By SuperModule/PN Digi')
804     layouts['ecal_T0_layouts'].remove('Noise/Trend')
805     layouts['ecal_T0_layouts'].remove('Noise/By SuperModule/PN')
806     layouts['ecal_T0_layouts'].remove('Energy/Basic Cluster Size Trend')
807     layouts['ecal_T0_layouts'].remove('Timing/Laser')
808     layouts['ecal_T0_layouts'].remove('Timing/Led')
809 yiiyama 1.1 layouts['ecal_T0_layouts'].remove('By SuperModule/%(sm)s/Laser')
810     layouts['ecal_T0_layouts'].remove('By SuperModule/%(sm)s/Test Pulse')
811     layouts['ecal_T0_layouts'].remove('By SuperModule/%(sm)s/Pedestal')
812     layouts['ecal_T0_layouts'].remove('By SuperModule/%(sm)s/Led')
813    
814     #### END ecal-layouts.py / ecal_T0_layouts.py / ecalpriv-layouts.py ####
815    
816     #### BEGIN ecal_overview_layouts ####
817    
818     layouts['ecal_overview_layouts'] = LayoutDir("Collisions/EcalFeedBack", [
819 yiiyama 1.2 ecal2P("Single Event Timing", timingTask.TimeAll),
820     eb("Forward-Backward EB", timingClient.FwdBkwdDiff, timingClient.FwdvBkwd),
821     ee("Forward-Backward EE", timingClient.FwdBkwdDiff, timingClient.FwdvBkwd),
822 yiiyama 1.1 ])
823     layouts['ecal_overview_layouts'].append(
824 yiiyama 1.2 subdetEtaPhi("Timing Map", timingTask.TimeAllMap, timingClient.ProjEta, timingClient.ProjPhi)
825 yiiyama 1.1 )
826     layouts['ecal_overview_layouts'].append(
827     LayoutElem("Timing ES", [
828     [["EcalPreshower/ESTimingTask/ES Timing Z 1 P 1"], ["EcalPreshower/ESTimingTask/ES Timing Z -1 P 1"]],
829     [["EcalPreshower/ESTimingTask/ES Timing Z 1 P 2"], ["EcalPreshower/ESTimingTask/ES Timing Z -1 P 2"]]
830     ])
831     )
832     layouts['ecal_overview_layouts'].append(
833 yiiyama 1.2 subdetEtaPhi("Occupancy", occupancyTask.RecHitThrAll, occupancyTask.RecHitThrProjEta, occupancyTask.RecHitThrProjPhi)
834 yiiyama 1.1 )
835     layouts['ecal_overview_layouts'].append([
836     LayoutElem("Occupancy ES", [
837     [["EcalPreshower/ESOccupancyTask/ES Occupancy with selected hits Z 1 P 1"], ["EcalPreshower/ESOccupancyTask/ES Occupancy with selected hits Z -1 P 1"]],
838     [["EcalPreshower/ESOccupancyTask/ES Occupancy with selected hits Z 1 P 2"], ["EcalPreshower/ESOccupancyTask/ES Occupancy with selected hits Z -1 P 2"]]
839     ]),
840 yiiyama 1.2 eb("RecHit Energy EB", energyTask.HitMapAll, energyTask.HitAll),
841     ee2P("RecHit Energy EE", energyTask.HitMapAll, energyTask.HitMapAll),
842 yiiyama 1.1 LayoutElem("RecHit Energy ES", [
843     [["EcalPreshower/ESOccupancyTask/ES Energy Density with selected hits Z 1 P 1"], ["EcalPreshower/ESOccupancyTask/ES Energy Density with selected hits Z -1 P 1"]],
844     [["EcalPreshower/ESOccupancyTask/ES Energy Density with selected hits Z 1 P 2"], ["EcalPreshower/ESOccupancyTask/ES Energy Density with selected hits Z -1 P 2"]]
845     ])
846     ])
847    
848     #### END ecal_overview_layouts ####
849    
850     #### BEGIN ecal_relval-layouts / ecalmc_relval-layouts ####
851    
852     layouts['ecal_relval-layouts'] = LayoutDir("DataLayouts/Ecal", [
853 yiiyama 1.2 ecal2P("Number of Ecal RecHits", occupancyTask.RecHitThr1D),
854 yiiyama 1.1 LayoutElem("Number of ES RecHits", [
855     [["EcalPreshower/ESOccupancyTask/ES Num of RecHits Z 1 P 1"], ["EcalPreshower/ESOccupancyTask/ES Num of RecHits Z -1 P 1"]],
856     [["EcalPreshower/ESOccupancyTask/ES Num of RecHits Z 1 P 2"], ["EcalPreshower/ESOccupancyTask/ES Num of RecHits Z -1 P 2"]]
857 yiiyama 1.2 ])
858     ] + subdetEtaPhi("Ecal RecHit Occupancy", occupancyTask.RecHitThrAll, occupancyTask.RecHitThrProjEta, occupancyTask.RecHitThrProjPhi) + [
859     ecal3P("Ecal Spectrum", energyTask.HitAll),
860 yiiyama 1.1 LayoutElem("ES Spectrum", [
861     [["EcalPreshower/ESOccupancyTask/ES RecHit Energy Z 1 P 1"], ["EcalPreshower/ESOccupancyTask/ES RecHit Energy Z -1 P 1"]],
862     [["EcalPreshower/ESOccupancyTask/ES RecHit Energy Z 1 P 2"], ["EcalPreshower/ESOccupancyTask/ES RecHit Energy Z -1 P 2"]]
863     ]),
864     LayoutElem("Ecal Max Energy", [
865     [["EcalBarrel/EBRecoSummary/recHits_EB_energyMax"]],
866     [["EcalEndcap/EERecoSummary/recHits_EEP_energyMax"], ["EcalEndcap/EERecoSummary/recHits_EEM_energyMax"]]
867     ]),
868     LayoutElem("ES Max Energy", [
869     [["EcalPreshower/ESRecoSummary/recHits_ES_energyMax"]]
870     ]),
871     LayoutElem("Ecal Timing", [
872     [["EcalBarrel/EBRecoSummary/recHits_EB_time"]],
873     [["EcalEndcap/EERecoSummary/recHits_EEP_time"], ["EcalEndcap/EERecoSummary/recHits_EEM_time"]]
874     ]),
875     LayoutElem("ES Timing", [
876     [["EcalPreshower/ESRecoSummary/recHits_ES_time"]]
877     ]),
878     LayoutElem("Ecal Chi2", [
879     [["EcalBarrel/EBRecoSummary/recHits_EB_Chi2"]],
880     [["EcalEndcap/EERecoSummary/recHits_EEP_Chi2"], ["EcalEndcap/EERecoSummary/recHits_EEM_Chi2"]]
881     ]),
882     LayoutElem("EB SwissCross", [
883 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/recHits_EB_E1oE4"]]
884 yiiyama 1.1 ]),
885     LayoutElem("RecHit Flags", [
886 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/recHits_EB_recoFlag"]],
887 yiiyama 1.1 [["EcalEndcap/EERecoSummary/recHits_EE_recoFlag"]]
888     ]),
889     LayoutElem("ReducedRecHit Flags", [
890 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/redRecHits_EB_recoFlag"]],
891 yiiyama 1.1 [["EcalEndcap/EERecoSummary/redRecHits_EE_recoFlag"]]
892     ]),
893     LayoutElem("Basic Cluster RecHit Flags", [
894 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/basicClusters_recHits_EB_recoFlag"]],
895 yiiyama 1.1 [["EcalEndcap/EERecoSummary/basicClusters_recHits_EE_recoFlag"]]
896     ]),
897 yiiyama 1.2 ecal2P("Number of Basic Clusters", clusterTask.BCNum),
898     ecal2P("Number of Super Clusters", clusterTask.SCNum),
899     ecal2P("Super Cluster Energy", clusterTask.SCE),
900 yiiyama 1.1 LayoutElem("Super Cluster Occupancy Eta", [
901 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/superClusters_EB_eta"]],
902 yiiyama 1.1 [["EcalEndcap/EERecoSummary/superClusters_EE_eta"]]
903     ]),
904     LayoutElem("Super Cluster Occupancy Phi", [
905 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/superClusters_EB_phi"]],
906 yiiyama 1.1 [["EcalEndcap/EERecoSummary/superClusters_EE_phi"]]
907     ]),
908 yiiyama 1.2 ecal2P("Super Cluster Size (Crystals)", clusterTask.SCNcrystals),
909     ecal2P("Super Cluster Size (Basic Clusters)", clusterTask.SCNBCs),
910 yiiyama 1.1 LayoutElem("Super Cluster Seed SwissCross", [
911 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/superClusters_EB_E1oE4"]]
912 yiiyama 1.1 ]),
913     LayoutElem("Preshower Planes Energy", [
914     [["EcalPreshower/ESRecoSummary/esClusters_energy_plane1"], ["EcalPreshower/ESRecoSummary/esClusters_energy_plane2"]],
915     [["EcalPreshower/ESRecoSummary/esClusters_energy_ratio"]]
916     ])
917     ])
918    
919     layouts['ecalmc_relval-layouts'] = layouts['ecal_relval-layouts'].clone('MCLayouts/Ecal')
920    
921     #### END ecal_relval-layouts / ecalmc_relval-layouts ####
922    
923     #### BEGIN shift_ecal_relval_layout ####
924    
925     layouts['shift_ecal_relval_layout'] = LayoutDir("00 Shift/Ecal", [
926 yiiyama 1.2 ecal3P("RecHit Spectra", energyTask.HitAll),
927     ecal2P("Number of RecHits", occupancyTask.RecHitThr1D),
928     ecal3P("Mean Timing", timingClient.MeanAll)
929 yiiyama 1.1 ])
930    
931     #### END shift_ecal_relval_layout ####
932    
933     for lo in genList:
934     filename = lo
935     if lo == 'ecalpriv-layouts' :
936     filename = 'ecal-layouts'
937    
938     output = file(targetDir + '/' + filename + '.py', 'w')
939     layouts[lo].expand(output)
940     output.close()
941 yiiyama 1.2
942