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

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     ecal3P('Timing', trigPrimClient.TimingSummary, trigPrimClient.NonSingleSummary),
559     ecal3P("Occupancy vs BX", trigPrimTask.OccVsBx),
560     ecal3P("Et vs BX", trigPrimTask.EtVsBx),
561     ecal3P('Emululation Timing', trigPrimTask.EmulMaxIndex),
562     LayoutDir('By SuperModule', [
563     LayoutDir('EmulMatching', smSet('Match', trigPrimTask.MatchedIndex)),
564     LayoutDir('Et', smSet('TP Et', trigPrimTask.EtRealMap))
565     ])
566 yiiyama 1.1 ])
567    
568     layouts['ecal-layouts'].get("Selective Readout").append([
569 yiiyama 1.2 ecal2P('DCC Data Size', selectiveReadoutTask.DCCSize),
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 yiiyama 1.1 ])
586    
587     layouts['ecal-layouts'].get("Laser").append([
588 yiiyama 1.2 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 yiiyama 1.1 LayoutDirSet('Laser%(wl)s (%(lname)s)', [
595 yiiyama 1.2 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 yiiyama 1.1 ])
603    
604     layouts['ecal-layouts'].get("Led").append([
605 yiiyama 1.2 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 yiiyama 1.1 LayoutDirSet('Led%(wl)s', [
612 yiiyama 1.2 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 yiiyama 1.1 ])
620    
621     layouts['ecal-layouts'].get("Test Pulse").append([
622 yiiyama 1.2 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 yiiyama 1.1 LayoutDirSet('Gain%(gain)s', [
626 yiiyama 1.2 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 yiiyama 1.1 ])
650    
651     layouts['ecal-layouts'].get("Trend").append([
652 yiiyama 1.2 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 yiiyama 1.1 ])
661    
662 yiiyama 1.2 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 yiiyama 1.1 LayoutDir('Laser', [
679 yiiyama 1.2 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 yiiyama 1.1 LayoutDir('Test Pulse', [
686 yiiyama 1.2 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 yiiyama 1.1 ])
726     )
727 yiiyama 1.2
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 yiiyama 1.1 ])
768     )
769 yiiyama 1.2
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 yiiyama 1.1
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 yiiyama 1.2 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 yiiyama 1.1 layouts['ecal_T0_layouts'].remove('Overview/Error Trends')
794 yiiyama 1.2 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 yiiyama 1.1 layouts['ecal_T0_layouts'].remove('Occupancy/Led')
799     layouts['ecal_T0_layouts'].remove('Occupancy/Test Pulse')
800 yiiyama 1.2 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 yiiyama 1.1 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 yiiyama 1.2 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 yiiyama 1.1 ])
822     layouts['ecal_overview_layouts'].append(
823 yiiyama 1.2 subdetEtaPhi("Timing Map", timingTask.TimeAllMap, timingClient.ProjEta, timingClient.ProjPhi)
824 yiiyama 1.1 )
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 yiiyama 1.2 subdetEtaPhi("Occupancy", occupancyTask.RecHitThrAll, occupancyTask.RecHitThrProjEta, occupancyTask.RecHitThrProjPhi)
833 yiiyama 1.1 )
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 yiiyama 1.2 eb("RecHit Energy EB", energyTask.HitMapAll, energyTask.HitAll),
840     ee2P("RecHit Energy EE", energyTask.HitMapAll, energyTask.HitMapAll),
841 yiiyama 1.1 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 yiiyama 1.2 ecal2P("Number of Ecal RecHits", occupancyTask.RecHitThr1D),
853 yiiyama 1.1 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 yiiyama 1.2 ])
857     ] + subdetEtaPhi("Ecal RecHit Occupancy", occupancyTask.RecHitThrAll, occupancyTask.RecHitThrProjEta, occupancyTask.RecHitThrProjPhi) + [
858     ecal3P("Ecal Spectrum", energyTask.HitAll),
859 yiiyama 1.1 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 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/recHits_EB_E1oE4"]]
883 yiiyama 1.1 ]),
884     LayoutElem("RecHit Flags", [
885 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/recHits_EB_recoFlag"]],
886 yiiyama 1.1 [["EcalEndcap/EERecoSummary/recHits_EE_recoFlag"]]
887     ]),
888     LayoutElem("ReducedRecHit Flags", [
889 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/redRecHits_EB_recoFlag"]],
890 yiiyama 1.1 [["EcalEndcap/EERecoSummary/redRecHits_EE_recoFlag"]]
891     ]),
892     LayoutElem("Basic Cluster RecHit Flags", [
893 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/basicClusters_recHits_EB_recoFlag"]],
894 yiiyama 1.1 [["EcalEndcap/EERecoSummary/basicClusters_recHits_EE_recoFlag"]]
895     ]),
896 yiiyama 1.2 ecal2P("Number of Basic Clusters", clusterTask.BCNum),
897     ecal2P("Number of Super Clusters", clusterTask.SCNum),
898     ecal2P("Super Cluster Energy", clusterTask.SCE),
899 yiiyama 1.1 LayoutElem("Super Cluster Occupancy Eta", [
900 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/superClusters_EB_eta"]],
901 yiiyama 1.1 [["EcalEndcap/EERecoSummary/superClusters_EE_eta"]]
902     ]),
903     LayoutElem("Super Cluster Occupancy Phi", [
904 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/superClusters_EB_phi"]],
905 yiiyama 1.1 [["EcalEndcap/EERecoSummary/superClusters_EE_phi"]]
906     ]),
907 yiiyama 1.2 ecal2P("Super Cluster Size (Crystals)", clusterTask.SCNcrystals),
908     ecal2P("Super Cluster Size (Basic Clusters)", clusterTask.SCNBCs),
909 yiiyama 1.1 LayoutElem("Super Cluster Seed SwissCross", [
910 yiiyama 1.2 [["EcalBarrel/EBRecoSummary/superClusters_EB_E1oE4"]]
911 yiiyama 1.1 ]),
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 yiiyama 1.2 ecal3P("RecHit Spectra", energyTask.HitAll),
926     ecal2P("Number of RecHits", occupancyTask.RecHitThr1D),
927     ecal3P("Mean Timing", timingClient.MeanAll)
928 yiiyama 1.1 ])
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 yiiyama 1.2
941