ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/ECALDQM/tools/ecalOldConfigBuilder.py
Revision: 1.1
Committed: Wed Oct 3 13:31:10 2012 UTC (12 years, 6 months ago) by yiiyama
Content type: text/x-python
Branch: MAIN
CVS Tags: HEAD
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 yiiyama 1.1 from optparse import OptionParser
2     import re
3    
4     # get options
5     optparser = OptionParser()
6     optparser.add_option("-e", "--env", dest = "environment",
7     help = "ENV=(CMSLive|PrivLive|PrivOffline|LocalLive|LocalOffline)", metavar = "ENV", default = "")
8     optparser.add_option("-c", "--config", dest = "config",
9     help = "CONFIG=(Physics|Calibration|Laser)", metavar = "CONFIG")
10     optparser.add_option("-d", "--daqtype", dest = "daqtype", default = "globalDAQ",
11     help = "DAQ=(globalDAQ|localDAQ)", metavar = "DAQ")
12     optparser.add_option("-f", "--file", dest = "filename", default = "",
13     help = "write to FILE (optional)", metavar = "FILE")
14     optparser.add_option("-s", "--source", dest = "sourceFiles", default = "",
15     help = "use FILELIST (space separated) as source", metavar = "FILELIST")
16     optparser.add_option("-g", "--gtag", dest = "gtag", default = "",
17     help = "global tag", metavar = "TAG")
18     optparser.add_option("-w", "--workflow", dest = "workflow", default = "",
19     help = "offline workflow", metavar = "WORKFLOW")
20     optparser.add_option("-r", "--rawdata", dest = "rawdata", default = "",
21     help = "collection name", metavar = "RAWDATA")
22     optparser.add_option("-n", "--new", action = "store_true", dest = "newFramework")
23    
24     (options, args) = optparser.parse_args()
25    
26     if not options.environment or not options.config :
27     optparser.print_usage()
28     exit
29    
30     env = options.environment
31     if env not in set(['CMSLive', 'PrivLive', 'PrivOffline', 'LocalLive', 'LocalOffline']) :
32     optparser.error("ENV value " + env + " not correct")
33     exit
34    
35     config = options.config
36     if config not in set(['Physics', 'Calibration', 'Laser']) :
37     optparser.error("CONFIG value " + config + " not correct")
38     exit
39    
40     daqtype = options.daqtype
41     if daqtype not in set(['localDAQ', 'globalDAQ', 'miniDAQ']) :
42     optparser.error("DAQ value " + daqtype + " not correct")
43     exit
44    
45     filename = options.filename
46     sourceFiles = re.sub(r'([^ ]+)[ ]?', r' "file:\1",\n', options.sourceFiles)
47     gtag = options.gtag
48     workflow = options.workflow
49     FedRawData = options.rawdata
50     newFramework = options.newFramework
51    
52     physics = (config == 'Physics')
53     calib = (config == 'Calibration')
54     laser = (config == 'Laser')
55    
56     # set environments
57    
58     # TODO : should we write in PrivOffline rather than PrivLive?
59     # PrivLive will have larger coverage of time; what about statistics?
60    
61     workspace = 'Ecal'
62     if laser or calib :
63     workspace = 'EcalCalibration'
64    
65     withDB = False
66     if (env == 'PrivLive') or (daqtype == 'localDAQ') :
67     withDB = True
68    
69     if laser :
70     newFramework = True
71    
72     if newFramework :
73     withDB = False
74    
75     central = False
76     privCentral = False
77     if (env == 'CMSLive') :
78     if laser :
79     privCentral = True
80     else :
81     central = True
82    
83     privEcal = privCentral
84     if (env == 'PrivLive') or (env == 'PrivOffline') :
85     privEcal = True
86    
87     p5 = privEcal or central
88    
89     local = False
90     if (env == 'LocalOffline') or (env == 'LocalLive') :
91     local = True
92    
93     doOutput = True
94     if (env == 'LocalLive') or (laser and privEcal) :
95     doOutput = False
96    
97     live = False
98     if (env == 'CMSLive') or (env == 'PrivLive') or (env == 'LocalLive') :
99     live = True
100    
101     if not p5 and not gtag :
102     optparser.error("Global tag must be given for non-P5 DQM cfg")
103     exit
104    
105     if not live and not sourceFiles :
106     optparser.error("Source file name not given for offline DQM")
107     exit
108    
109     if doOutput and not live and not workflow :
110     optparser.error("Workflow needs to be given for offline DQM")
111     exit
112    
113     if workflow and not re.match('[\/][a-zA-Z0-9_]+[\/][a-zA-Z0-9_]+[\/][a-zA-Z0-9_]+', workflow) :
114     optparser.error("Invalid workflow: " + workflow)
115     exit
116    
117     streamerInput = False
118     if re.search('[.]dat', sourceFiles) :
119     streamerInput = True
120    
121     header = ''
122     recoModules = ''
123     ecalDQM = ''
124     dqmModules = ''
125     filters = ''
126     setup = ''
127     misc = ''
128     sequencePaths = ''
129     source = ''
130     customizations = ''
131    
132     header += '''import FWCore.ParameterSet.Config as cms
133     import os, sys, socket
134    
135     process = cms.Process("DQM")
136     '''
137    
138     recoModules += '''
139    
140     ### RECONSTRUCTION MODULES ###
141    
142     process.load("Geometry.CaloEventSetup.CaloGeometry_cfi")
143    
144     process.load("Geometry.CaloEventSetup.CaloTopology_cfi")
145    
146     process.load("Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi")
147    
148     process.load("Geometry.CMSCommonData.cmsIdealGeometryXML_cfi")
149    
150     process.load("Geometry.EcalMapping.EcalMapping_cfi")
151    
152     process.load("Geometry.EcalMapping.EcalMappingRecord_cfi")
153     '''
154    
155     if not laser :
156     recoModules += '''
157     from EventFilter.EcalRawToDigi.EcalUnpackerData_cfi import ecalEBunpacker
158     process.ecalDigis = ecalEBunpacker.clone()
159    
160     process.load("RecoLocalCalo.EcalRecProducers.ecalGlobalUncalibRecHit_cfi")
161    
162     process.load("RecoLocalCalo.EcalRecProducers.ecalDetIdToBeRecovered_cfi")
163    
164     process.load("RecoLocalCalo.EcalRecProducers.ecalRecHit_cfi")
165    
166     process.load("RecoLocalCalo.EcalRecAlgos.EcalSeverityLevelESProducer_cfi")
167    
168     process.load("RecoEcal.EgammaClusterProducers.ecalClusteringSequence_cff")
169    
170     process.load("CalibCalorimetry.EcalLaserCorrection.ecalLaserCorrectionService_cfi")
171    
172     process.load("SimCalorimetry.EcalTrigPrimProducers.ecalTriggerPrimitiveDigis_cfi")
173     '''
174    
175     if physics and live :
176     recoModules += '''
177     process.load("EventFilter.L1GlobalTriggerRawToDigi.l1GtEvmUnpack_cfi")
178     '''
179    
180     if calib :
181     recoModules += '''
182     from RecoLocalCalo.EcalRecProducers.ecalFixedAlphaBetaFitUncalibRecHit_cfi import ecalFixedAlphaBetaFitUncalibRecHit
183     process.ecalLaserLedUncalibRecHit = ecalFixedAlphaBetaFitUncalibRecHit.clone()
184    
185     from RecoLocalCalo.EcalRecProducers.ecalMaxSampleUncalibRecHit_cfi import ecalMaxSampleUncalibRecHit
186     process.ecalTestPulseUncalibRecHit = ecalMaxSampleUncalibRecHit.clone()
187     '''
188    
189    
190     if newFramework :
191     ecalDQM += '''
192    
193     ### ECAL DQM MODULES ###
194    
195     process.load("DQM.EcalCommon.EcalDQMBinningService_cfi")
196     '''
197     if physics :
198     ecalDQM += '''
199     process.load("DQM.EcalBarrelMonitorTasks.EcalMonitorTask_cfi")
200     process.load("DQM.EcalBarrelMonitorClient.EcalMonitorClient_cfi")
201     '''
202     else :
203     ecalDQM += '''
204     process.load("DQM.EcalBarrelMonitorTasks.EcalCalibMonitorTasks_cfi")
205     process.load("DQM.EcalBarrelMonitorClient.EcalCalibMonitorClient_cfi")
206     '''
207    
208     else :
209     ecalDQM += '''
210    
211     ### ECAL DQM MODULES ###
212    
213     process.load("DQM.EcalBarrelMonitorModule.EcalBarrelMonitorModule_cfi")
214     process.load("DQM.EcalEndcapMonitorModule.EcalEndcapMonitorModule_cfi")
215     process.load("DQM.EcalBarrelMonitorTasks.EcalBarrelMonitorTasks_cfi")
216     process.load("DQM.EcalEndcapMonitorTasks.EcalEndcapMonitorTasks_cfi")
217     '''
218    
219     if not newFramework and not central and physics :
220     ecalDQM += '''
221     process.load("DQM.EcalBarrelMonitorTasks.EBHltTask_cfi")
222     process.load("DQM.EcalEndcapMonitorTasks.EEHltTask_cfi")
223     '''
224    
225     if not newFramework and physics and live :
226     ecalDQM += '''
227     process.load("DQM.EcalBarrelMonitorTasks.EBTrendTask_cfi")
228     process.load("DQM.EcalBarrelMonitorClient.EBTrendClient_cfi")
229     process.load("DQM.EcalEndcapMonitorTasks.EETrendTask_cfi")
230     process.load("DQM.EcalEndcapMonitorClient.EETrendClient_cfi")
231     '''
232    
233     if not newFramework :
234     ecalDQM += '''
235     process.load("DQM.EcalBarrelMonitorClient.EcalBarrelMonitorClient_cfi")
236     process.load("DQM.EcalEndcapMonitorClient.EcalEndcapMonitorClient_cfi")
237     '''
238    
239     if privEcal and not live :
240     ecalDQM += '''
241     ###### Temporary solution for merging the plots #####
242     process.load("Toolset.DQMTools.DQMFileLoader_cfi")
243     '''
244    
245    
246     dqmModules += '''
247    
248     ### DQM COMMON MODULES ###
249    
250     process.load("DQMServices.Core.DQM_cfg")
251     '''
252    
253     if not newFramework :
254     dqmModules += '''
255     process.dqmQTestEB = cms.EDAnalyzer("QualityTester",
256     reportThreshold = cms.untracked.string("red"),
257     prescaleFactor = cms.untracked.int32(1),
258     qtList = cms.untracked.FileInPath("DQM/EcalBarrelMonitorModule/test/data/EcalBarrelQualityTests.xml"),
259     getQualityTestsFromFile = cms.untracked.bool(True),
260     qtestOnEndLumi = cms.untracked.bool(True),
261     qtestOnEndRun = cms.untracked.bool(True)
262     )
263     process.dqmQTestEE = cms.EDAnalyzer("QualityTester",
264     reportThreshold = cms.untracked.string("red"),
265     prescaleFactor = cms.untracked.int32(1),
266     qtList = cms.untracked.FileInPath("DQM/EcalEndcapMonitorModule/test/data/EcalEndcapQualityTests.xml"),
267     getQualityTestsFromFile = cms.untracked.bool(True),
268     qtestOnEndLumi = cms.untracked.bool(True),
269     qtestOnEndRun = cms.untracked.bool(True)
270     )
271     '''
272    
273     if p5 :
274     dqmModules += '''
275     process.load("DQM.Integration.test.environment_cfi")'''
276     else :
277     dqmModules += '''
278     process.load("DQMServices.Components.DQMEnvironment_cfi")'''
279    
280     if not newFramework :
281     dqmModules += '''
282     process.dqmEnvEB = process.dqmEnv.clone()
283     process.dqmEnvEE = process.dqmEnv.clone()
284     '''
285    
286    
287     filters += '''
288    
289     ### FILTERS ###
290    
291     process.load("FWCore.Modules.preScaler_cfi")
292     '''
293    
294     if live :
295     filters += '''
296     process.load("HLTrigger.special.HLTTriggerTypeFilter_cfi")
297     '''
298    
299     if physics :
300     filters += '''
301     process.ecalPhysicsFilter = cms.EDFilter("EcalMonitorPrescaler")
302     '''
303     elif calib :
304     filters += '''
305     process.ecalCalibrationFilter = cms.EDFilter("EcalMonitorPrescaler")
306     process.ecalLaserLedFilter = cms.EDFilter("EcalMonitorPrescaler")
307     process.ecalTestPulseFilter = cms.EDFilter("EcalMonitorPrescaler")'''
308     if (daqtype == 'localDAQ') :
309     filters += '''
310     process.ecalPedestalFilter = cms.EDFilter("EcalMonitorPrescaler")'''
311    
312    
313     setup += '''
314    
315    
316     ### JOB PARAMETERS ###
317    
318     process.maxEvents = cms.untracked.PSet(
319     input = cms.untracked.int32(-1)
320     )
321     '''
322    
323     frontier = 'frontier://FrontierProd/'
324     if p5 :
325     frontier = 'frontier://(proxyurl=http://localhost:3128)(serverurl=http://localhost:8000/FrontierOnProd)(serverurl=http://localhost:8000/FrontierOnProd)(retrieve-ziplevel=0)/'
326    
327     if not gtag :
328     setup += '''
329     process.load("DQM.Integration.test.FrontierCondition_GT_cfi")
330     '''
331     else :
332     setup += 'process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")' + "\n"
333     setup += 'process.GlobalTag.globaltag = "' + gtag + '::All"' + "\n"
334    
335     setup += '''
336     process.GlobalTag.toGet = cms.VPSet(
337     cms.PSet(
338     record = cms.string("EcalDQMChannelStatusRcd"),
339     tag = cms.string("EcalDQMChannelStatus_v1_hlt"),
340     connect = cms.untracked.string("''' + frontier + '''CMS_COND_34X_ECAL")
341     ),
342     cms.PSet(
343     record = cms.string("EcalDQMTowerStatusRcd"),
344     tag = cms.string("EcalDQMTowerStatus_v1_hlt"),
345     connect = cms.untracked.string("''' + frontier + '''CMS_COND_34X_ECAL")
346     )
347     )
348     '''
349    
350    
351     misc += '''
352    
353     ### MESSAGE LOGGER ###
354    
355     process.MessageLogger = cms.Service("MessageLogger",
356     cout = cms.untracked.PSet(
357     threshold = cms.untracked.string("WARNING"),
358     noLineBreaks = cms.untracked.bool(True),
359     noTimeStamps = cms.untracked.bool(True),
360     default = cms.untracked.PSet(
361     limit = cms.untracked.int32(0)
362     )
363     ),
364     destinations = cms.untracked.vstring("cout")
365     )
366     '''
367    
368     sequencePaths += '''
369    
370     ### SEQUENCES AND PATHS ###
371     '''
372    
373     if laser :
374     sequencePaths += '''
375     process.ecalMonitorPath = cms.Path(
376     process.ecalLaserMonitorClient
377     )
378     '''
379     else :
380     sequencePaths += '''
381     process.ecalPreRecoSequence = cms.Sequence(
382     process.preScaler +
383     '''
384     if live :
385     sequencePaths += '# process.hltTriggerTypeFilter +'
386    
387     sequencePaths += '''
388     process.ecalDigis
389     )
390    
391     process.ecalRecoSequence = cms.Sequence(
392     process.ecalGlobalUncalibRecHit *
393     process.ecalDetIdToBeRecovered *
394     process.ecalRecHit
395     )
396     '''
397    
398     if physics :
399     sequencePaths += '''
400     process.ecalClusterSequence = cms.Sequence(
401     process.hybridClusteringSequence +
402     process.multi5x5ClusteringSequence
403     )
404     process.ecalClusterSequence.remove(process.multi5x5SuperClustersWithPreshower)
405     '''
406    
407     if not newFramework :
408     sequencePaths += '''
409     process.ecalMonitorBaseSequence = cms.Sequence('''
410    
411     #should run all files in one job
412     if privEcal and not live :
413     sequencePaths += '''
414     process.dqmFileLoader +'''
415    
416     sequencePaths += '''
417     process.ecalBarrelMonitorModule +
418     process.ecalEndcapMonitorModule +
419     process.ecalBarrelOccupancyTask +
420     process.ecalBarrelIntegrityTask +
421     process.ecalEndcapOccupancyTask +
422     process.ecalEndcapIntegrityTask +
423     process.ecalBarrelStatusFlagsTask +
424     process.ecalBarrelRawDataTask +
425     process.ecalEndcapStatusFlagsTask +
426     process.ecalEndcapRawDataTask +
427     process.ecalBarrelPedestalOnlineTask +
428     process.ecalEndcapPedestalOnlineTask
429     )
430     '''
431    
432     if physics :
433     sequencePaths += '''
434     process.ecalMonitorSequence = cms.Sequence('''
435    
436     if newFramework :
437     sequencePaths += '''
438     process.ecalMonitorTask'''
439     else :
440     if not central :
441     sequencePaths += '''
442     process.ecalBarrelHltTask +
443     process.ecalEndcapHltTask +'''
444    
445     if live :
446     sequencePaths += '''
447     process.ecalBarrelTrendTask +
448     process.ecalEndcapTrendTask +'''
449    
450     sequencePaths += '''
451     process.ecalBarrelCosmicTask +
452     process.ecalBarrelClusterTask +
453     process.ecalBarrelTriggerTowerTask +
454     process.ecalBarrelTimingTask +
455     process.ecalBarrelSelectiveReadoutTask +
456     process.ecalEndcapCosmicTask +
457     process.ecalEndcapClusterTask +
458     process.ecalEndcapTriggerTowerTask +
459     process.ecalEndcapTimingTask +
460     process.ecalEndcapSelectiveReadoutTask'''
461    
462     sequencePaths += '''
463     )
464    
465     process.ecalMonitorPath = cms.Path(
466     process.ecalPreRecoSequence *
467     process.ecalPhysicsFilter *
468     process.ecalRecoSequence *
469     (
470     process.ecalClusterSequence +'''
471    
472     if physics and live :
473     sequencePaths += '''
474     process.l1GtEvmUnpack +'''
475    
476     sequencePaths += '''
477     process.simEcalTriggerPrimitiveDigis
478     ) *
479     ('''
480     if not newFramework :
481     sequencePaths += '''
482     process.ecalMonitorBaseSequence +'''
483    
484     sequencePaths += '''
485     process.ecalMonitorSequence
486     )
487     )
488     '''
489    
490     elif calib :
491     sequencePaths += '''
492     process.ecalLaserLedPath = cms.Path(
493     process.ecalPreRecoSequence *
494     process.ecalLaserLedFilter *
495     process.ecalRecoSequence *
496     process.ecalLaserLedUncalibRecHit *'''
497     if newFramework :
498     sequencePaths += '''
499     (
500     process.ecalLaserLedMonitorTask +
501     process.ecalPNDiodeMonitorTask
502     )'''
503     else :
504     sequencePaths += '''
505     (
506     process.ecalMonitorBaseSequence +
507     process.ecalBarrelLaserTask +
508     process.ecalEndcapLaserTask +
509     process.ecalEndcapLedTask
510     )'''
511     sequencePaths += '''
512     )
513     '''
514     if (daqtype == 'localDAQ') :
515     sequencePaths += '''
516     process.ecalPedestalPath = cms.Path(
517     process.ecalPreRecoSequence *
518     process.ecalPedestalFilter *
519     process.ecalRecoSequence *'''
520     if newFramework :
521     sequencePaths += '''
522     (
523     process.ecalPedestalMonitorTask +
524     process.ecalPNDiodeMonitorTask
525     )'''
526     else :
527     sequencePaths += '''
528     (
529     process.ecalMonitorBaseSequence +
530     process.ecalBarrelPedestalTask +
531     process.ecalEndcapPedestalTask
532     )'''
533     sequencePaths += '''
534     )
535     '''
536    
537     sequencePaths += '''
538     process.ecalTestPulsePath = cms.Path(
539     process.ecalPreRecoSequence *
540     process.ecalTestPulseFilter *
541     process.ecalRecoSequence *
542     process.ecalTestPulseUncalibRecHit *'''
543     if newFramework :
544     sequencePaths += '''
545     (
546     process.ecalTestPulseMonitorTask +
547     process.ecalPNDiodeMonitorTask
548     )'''
549     else :
550     sequencePaths += '''
551     (
552     process.ecalMonitorBaseSequence +
553     process.ecalBarrelTestPulseTask +
554     process.ecalEndcapTestPulseTask
555     )'''
556     sequencePaths += '''
557     )
558     '''
559    
560     sequencePaths += '''
561     process.ecalClientPath = cms.Path(
562     process.ecalPreRecoSequence *'''
563    
564     if physics :
565     sequencePaths += '''
566     process.ecalPhysicsFilter +'''
567     else :
568     sequencePaths += '''
569     process.ecalCalibrationFilter +'''
570    
571     if not newFramework and physics and live :
572     sequencePaths += '''
573     process.ecalBarrelTrendClient +
574     process.ecalEndcapTrendClient +'''
575    
576     if newFramework :
577     if physics :
578     sequencePaths += '''
579     process.ecalMonitorClient'''
580     else :
581     sequencePaths += '''
582     process.ecalCalibMonitorClient'''
583    
584     else :
585     sequencePaths += '''
586     process.ecalBarrelMonitorClient +
587     process.ecalEndcapMonitorClient'''
588    
589     sequencePaths += '''
590     )
591     '''
592     #end if laser else
593    
594     sequencePaths += '''
595     process.ecalMonitorEndPath = cms.EndPath('''
596     if newFramework :
597     sequencePaths += '''
598     process.dqmEnv'''
599     else :
600     sequencePaths += '''
601     process.dqmEnvEB +
602     process.dqmEnvEE +
603     process.dqmQTestEB +
604     process.dqmQTestEE'''
605    
606     sequencePaths += '''
607     )'''
608    
609     if doOutput :
610     sequencePaths += '''
611     process.dqmEndPath = cms.EndPath(
612     process.dqmSaver
613     )
614     '''
615    
616     sequencePaths += '''
617     process.schedule = cms.Schedule('''
618    
619     if physics :
620     sequencePaths += '''
621     process.ecalMonitorPath,
622     process.ecalClientPath,'''
623     elif calib :
624     sequencePaths += '''
625     process.ecalLaserLedPath,'''
626    
627     if (daqtype == 'localDAQ') :
628     sequencePaths += '''
629     process.ecalPedestalPath,'''
630    
631     sequencePaths += '''
632     process.ecalTestPulsePath,
633     process.ecalClientPath,'''
634     elif laser :
635     sequencePaths += '''
636     process.ecalMonitorPath,'''
637    
638     sequencePaths += '''
639     process.ecalMonitorEndPath'''
640    
641     if doOutput :
642     sequencePaths += ''',
643     process.dqmEndPath'''
644    
645     sequencePaths += '''
646     )
647     '''
648    
649     source += '''
650    
651     ### SOURCE ###
652     '''
653    
654     if live :
655     source += '''
656     process.load("DQM.Integration.test.inputsource_cfi")
657     '''
658     else :
659     if streamerInput :
660     source += '''
661     process.source = cms.Source("NewEventStreamFileReader")
662     '''
663     else :
664     source += '''
665     process.source = cms.Source("PoolSource")
666     '''
667    
668     customizations += '''
669    
670     ### CUSTOMIZATIONS ###
671     '''
672    
673     if not laser :
674     customizations += '''
675     ## Reconstruction Modules ##
676    
677     process.ecalRecHit.killDeadChannels = True
678     process.ecalRecHit.ChannelStatusToBeExcluded = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 78, 142 ]
679     '''
680    
681     if physics :
682     customizations += '''
683     process.simEcalTriggerPrimitiveDigis.Label = "ecalDigis"
684     process.simEcalTriggerPrimitiveDigis.InstanceEB = "ebDigis"
685     process.simEcalTriggerPrimitiveDigis.InstanceEE = "eeDigis"
686     '''
687    
688     if calib :
689     customizations += '''
690     process.ecalTestPulseUncalibRecHit.EBdigiCollection = "ecalDigis:ebDigis"
691     process.ecalTestPulseUncalibRecHit.EEdigiCollection = "ecalDigis:eeDigis"
692    
693     process.ecalLaserLedUncalibRecHit.MinAmplBarrel = 12.
694     process.ecalLaserLedUncalibRecHit.MinAmplEndcap = 16.
695     '''
696    
697     customizations += '''
698     ## Filters ##
699     '''
700    
701     if physics :
702     customizations += '''
703     process.ecalPhysicsFilter.EcalRawDataCollection = cms.InputTag("ecalDigis")
704     process.ecalPhysicsFilter.clusterPrescaleFactor = cms.untracked.int32(1)
705     '''
706     if live :
707     customizations += '''
708     process.hltTriggerTypeFilter.SelectedTriggerType = 1 # 0=random, 1=physics, 2=calibration, 3=technical
709     '''
710    
711     if calib :
712     customizations += '''
713     process.ecalCalibrationFilter.EcalRawDataCollection = cms.InputTag("ecalDigis")
714     process.ecalCalibrationFilter.laserPrescaleFactor = cms.untracked.int32(1)
715     process.ecalCalibrationFilter.ledPrescaleFactor = cms.untracked.int32(1)
716     process.ecalCalibrationFilter.pedestalPrescaleFactor = cms.untracked.int32(1)
717     process.ecalCalibrationFilter.testpulsePrescaleFactor = cms.untracked.int32(1)
718    
719     process.ecalLaserLedFilter.EcalRawDataCollection = cms.InputTag("ecalDigis")
720     process.ecalLaserLedFilter.laserPrescaleFactor = cms.untracked.int32(1)
721     process.ecalLaserLedFilter.ledPrescaleFactor = cms.untracked.int32(1)
722    
723     process.ecalTestPulseFilter.EcalRawDataCollection = cms.InputTag("ecalDigis")
724     process.ecalTestPulseFilter.testpulsePrescaleFactor = cms.untracked.int32(1)
725     '''
726     if (daqtype == 'localDAQ') :
727     customizations += '''
728     process.ecalPedestalFilter.EcalRawDataCollection = cms.InputTag("ecalDigis")
729     process.ecalPedestalFilter.pedestalPrescaleFactor = cms.untracked.int32(1)
730     '''
731     elif live :
732     customizations += '''
733     process.hltTriggerTypeFilter.SelectedTriggerType = 2 # 0=random, 1=physics, 2=calibration, 3=technical
734     '''
735    
736     customizations += '''
737     ## Ecal DQM modules ##
738     '''
739    
740     if newFramework :
741     if physics :
742     customizations += '''
743     process.ecalMonitorTask.online = True
744     process.ecalMonitorClient.online = True
745     process.ecalMonitorClient.workers = ["IntegrityClient", "OccupancyClient", "PresampleClient", "RawDataClient", "TimingClient", "SelectiveReadoutClient", "TrigPrimClient", "SummaryClient"]
746     process.ecalMonitorTask.workerParameters.common.hltTaskMode = 2
747     process.ecalMonitorClient.workerParameters.SummaryClient.activeSources = ["Integrity", "RawData", "Presample", "TriggerPrimitives", "Timing", "HotCell"]
748     '''
749    
750     if laser :
751     if privEcal :
752     customizations += '''
753     process.ecalLaserMonitorClient.clientParameters.LightChecker.matacqPlotsDir = "/data/ecalod-disk01/dqm-data/laser"
754     '''
755    
756     else :
757     if calib :
758     customizations += '''
759     process.ecalBarrelLaserTask.EcalUncalibratedRecHitCollection = "ecalLaserLedUncalibRecHit:EcalUncalibRecHitsEB"
760     process.ecalBarrelTestPulseTask.EcalUncalibratedRecHitCollection = "ecalTestPulseUncalibRecHit:EcalUncalibRecHitsEB"
761     process.ecalEndcapLaserTask.EcalUncalibratedRecHitCollection = "ecalLaserLedUncalibRecHit:EcalUncalibRecHitsEE"
762     process.ecalEndcapLedTask.EcalUncalibratedRecHitCollection = "ecalLaserLedUncalibRecHit:EcalUncalibRecHitsEE"
763     process.ecalEndcapTestPulseTask.EcalUncalibratedRecHitCollection = "ecalTestPulseUncalibRecHit:EcalUncalibRecHitsEE"
764    
765     process.ecalBarrelLaserTask.laserWavelengths = [ 1, 2, 3, 4 ]
766     process.ecalEndcapLaserTask.laserWavelengths = [ 1, 2, 3, 4 ]
767     process.ecalEndcapLedTask.ledWavelengths = [ 1, 2 ]
768     process.ecalBarrelMonitorClient.laserWavelengths = [ 1, 2, 3, 4 ]
769     process.ecalEndcapMonitorClient.laserWavelengths = [ 1, 2, 3, 4 ]
770     process.ecalEndcapMonitorClient.ledWavelengths = [ 1, 2 ]
771     '''
772     if (daqtype == 'localDAQ') :
773     customizations += '''
774     process.ecalBarrelMonitorClient.enabledClients = ["Integrity", "StatusFlags", "Occupancy", "PedestalOnline", "Pedestal", "TestPulse", "Laser", "Summary"]
775     process.ecalEndcapMonitorClient.enabledClients = ["Integrity", "StatusFlags", "Occupancy", "PedestalOnline","Pedestal", "TestPulse", "Laser", "Led", "Summary"]
776     '''
777     else :
778     customizations += '''
779     process.ecalBarrelMonitorClient.enabledClients = ["Integrity", "StatusFlags", "Occupancy", "PedestalOnline", "TestPulse", "Laser", "Summary"]
780     process.ecalEndcapMonitorClient.enabledClients = ["Integrity", "StatusFlags", "Occupancy", "PedestalOnline", "TestPulse", "Laser", "Led", "Summary"]
781     '''
782    
783     customizations += '''
784     process.ecalBarrelMonitorClient.produceReports = False
785     process.ecalEndcapMonitorClient.produceReports = False
786     '''
787    
788     if live :
789     customizations += '''
790     process.ecalBarrelTestPulseTask.MGPAGains = [ 12 ]
791     process.ecalBarrelTestPulseTask.MGPAGainsPN = [ 16 ]
792     process.ecalEndcapTestPulseTask.MGPAGains = [ 12 ]
793     process.ecalEndcapTestPulseTask.MGPAGainsPN = [ 16 ]
794     process.ecalBarrelMonitorClient.MGPAGains = [ 12 ]
795     process.ecalBarrelMonitorClient.MGPAGainsPN = [ 16 ]
796     process.ecalEndcapMonitorClient.MGPAGains = [ 12 ]
797     process.ecalEndcapMonitorClient.MGPAGainsPN = [ 16 ]
798     '''
799    
800     if physics :
801     customizations += '''
802     process.ecalBarrelMonitorClient.enabledClients = ["Integrity", "StatusFlags", "Occupancy", "PedestalOnline", "Timing", "Cosmic", "TriggerTower", "Cluster", "Summary"]
803     process.ecalEndcapMonitorClient.enabledClients = ["Integrity", "StatusFlags", "Occupancy", "PedestalOnline", "Timing", "Cosmic", "TriggerTower", "Cluster", "Summary"]
804    
805     process.ecalBarrelMonitorClient.reducedReports = False
806     process.ecalEndcapMonitorClient.reducedReports = False
807     '''
808     if live :
809     customizations += '''
810     process.ecalBarrelTimingTask.useBeamStatus = cms.untracked.bool(True)
811     process.ecalEndcapTimingTask.useBeamStatus = cms.untracked.bool(True)
812     '''
813    
814     customizations += '''
815     process.ecalBarrelMonitorClient.location = "P5_Co"
816     process.ecalEndcapMonitorClient.location = "P5_Co"
817     process.ecalBarrelMonitorClient.verbose = False
818     process.ecalEndcapMonitorClient.verbose = False
819     '''
820    
821     if live :
822     customizations += '''
823     process.ecalBarrelMonitorClient.updateTime = 4
824     process.ecalEndcapMonitorClient.updateTime = 4
825     '''
826    
827     if withDB :
828     customizations += '''
829     os.environ["TNS_ADMIN"] = "/etc"
830     dbName = ""
831     dbHostName = ""
832     dbHostPort = 1521
833     dbUserName = ""
834     dbPassword = ""
835    
836     try :
837     file = open("/nfshome0/ecalpro/DQM/online-DQM/.cms_tstore.conf", "r")
838     for line in file :
839     if line.find("dbName") >= 0 :
840     dbName = line.split()[2]
841     if line.find("dbHostName") >= 0 :
842     dbHostName = line.split()[2]
843     if line.find("dbHostPort") >= 0 :
844     dbHostPort = int(line.split()[2])
845     if line.find("dbUserName") >= 0 :
846     dbUserName = line.split()[2]
847     if line.find("dbPassword") >= 0 :
848     dbPassword = line.split()[2]
849     file.close()
850     except IOError :
851     pass
852    
853     process.ecalBarrelMonitorClient.dbName = dbName
854     process.ecalBarrelMonitorClient.dbHostName = dbHostName
855     process.ecalBarrelMonitorClient.dbHostPort = dbHostPort
856     process.ecalBarrelMonitorClient.dbUserName = dbUserName
857     process.ecalBarrelMonitorClient.dbPassword = dbPassword
858    
859     process.ecalEndcapMonitorClient.dbName = dbName
860     process.ecalEndcapMonitorClient.dbHostName = dbHostName
861     process.ecalEndcapMonitorClient.dbHostPort = dbHostPort
862     process.ecalEndcapMonitorClient.dbUserName = dbUserName
863     process.ecalEndcapMonitorClient.dbPassword = dbPassword
864     '''
865    
866     if (env == 'PrivLive') :
867     customizations += '''
868     process.ecalBarrelMonitorClient.resetFile = "/data/ecalod-disk01/dqm-data/reset/EB"
869     process.ecalBarrelMonitorClient.resetFile = "/data/ecalod-disk01/dqm-data/reset/EE"
870     process.ecalBarrelMonitorClient.dbTagName = "CMSSW-online-private"
871     process.ecalEndcapMonitorClient.dbTagName = "CMSSW-online-private"
872     '''
873     elif (env == 'PrivOffline') :
874     customizations += '''
875     process.ecalBarrelMonitorClient.dbTagName = "CMSSW-offline-private"
876     process.ecalEndcapMonitorClient.dbTagName = "CMSSW-offline-private"
877     '''
878    
879     dirName = '/data/ecalod-disk01/dqm-data/tmp'
880    
881     if privEcal and not live :
882     customizations += 'process.dqmFileLoader.directory = "' + dirName + '"' + "\n"
883     customizations += 'process.dqmFileLoader.workflow = "' + workflow + '"' + "\n"
884    
885     customizations += '''
886     ## DQM common modules ##
887     '''
888    
889     if newFramework :
890     if laser or not physics:
891     customizations += '''
892     process.dqmEnv.subSystemFolder = cms.untracked.string("EcalCalibration")
893     '''
894     else :
895     customizations += '''
896     process.dqmEnv.subSystemFolder = cms.untracked.string("Ecal")
897     '''
898    
899     else :
900     if physics :
901     customizations += '''
902     process.dqmEnvEB.subSystemFolder = cms.untracked.string("EcalBarrel")
903     process.dqmEnvEE.subSystemFolder = cms.untracked.string("EcalEndcap")
904     '''
905     else :
906     customizations += '''
907     process.dqmEnvEB.subSystemFolder = cms.untracked.string("EcalBarrel/Calibration")
908     process.dqmEnvEE.subSystemFolder = cms.untracked.string("EcalEndcap/Calibration")
909     '''
910    
911     if central :
912     if physics :
913     customizations += '''
914     process.DQMStore.referenceFileName = "/dqmdata/dqm/reference/ecal_reference.root"
915     '''
916     elif calib :
917     customizations += '''
918     process.DQMStore.referenceFileName = "/dqmdata/dqm/reference/ecalcalib_reference.root"
919     '''
920    
921     if doOutput :
922     if not central or privCentral :
923     customizations += 'process.dqmSaver.referenceHandling = "skip"' + "\n"
924    
925     if privEcal :
926     customizations += '''
927     process.dqmSaver.saveByTime = -1
928     process.dqmSaver.saveByMinute = -1'''
929     if live :
930     customizations += '''
931     process.dqmSaver.convention = "Online"
932     process.dqmSaver.dirName = "/data/ecalod-disk01/dqm-data/online-DQM/data"
933     '''
934     # temporary - remove when subsystemFolder issue is resolved
935     if physics :
936     customizations += 'process.dqmSaver.version = 1' + "\n"
937     elif calib :
938     customizations += 'process.dqmSaver.version = 2' + "\n"
939    
940     else :
941     customizations += '''
942     process.dqmSaver.dirName = "''' + dirName + '''"
943     '''
944    
945     if not live :
946     customizations += 'process.dqmSaver.convention = "Offline"' + "\n"
947     customizations += 'process.dqmSaver.workflow = "' + workflow + '"' + "\n"
948    
949     if local :
950     customizations += '''
951     process.DQM.collectorHost = "localhost"
952     process.DQM.collectorPort = 8061
953     '''
954     elif live and privEcal and not privCentral :
955     customizations += '''
956     process.DQM.collectorHost = "ecalod-web01.cms"
957     process.DQM.collectorPort = 9190
958     '''
959     elif not central and not privCentral :
960     customizations += '''
961     process.DQM.collectorHost = ""
962     '''
963    
964     customizations += '''
965     ## Source ##
966     '''
967     if live :
968     customizations += 'process.source.consumerName = cms.untracked.string("' + workspace + ' DQM Consumer")' + "\n"
969     if privEcal :
970     customizations += 'process.source.sourceURL = cms.string("http://dqm-c2d07-30.cms:22100/urn:xdaq-application:lid=30")' + "\n"
971     elif local :
972     customizations += 'process.source.sourceURL = cms.string("http://localhost:22100/urn:xdaq-application:lid=30")' + "\n"
973    
974     if not physics or (daqtype != 'globalDAQ') :
975     customizations += 'process.source.SelectHLTOutput = cms.untracked.string("hltOutputCalibration")' + "\n"
976     customizations += 'process.source.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring("HLT_EcalCalibration_v*"))' + "\n"
977    
978     else :
979     customizations += '''
980     process.source.fileNames = cms.untracked.vstring(
981     ''' + sourceFiles + '''
982     )
983     '''
984    
985     if p5 :
986     customizations += '''
987     ## Run type specific ##
988     '''
989     customizations += '''
990     if process.runType.getRunType() == process.runType.cosmic_run :'''
991     if newFramework :
992     customizations += '''
993     pass'''
994     else :
995     customizations += '''
996     process.ecalMonitorEndPath.remove(process.dqmQTestEB)
997     process.ecalMonitorEndPath.remove(process.dqmQTestEE)'''
998    
999     customizations += '''
1000     elif process.runType.getRunType() == process.runType.hpu_run:
1001     process.source.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring("*"))
1002     '''
1003    
1004     HIFedRawData = 'rawDataRepacker'
1005     if (FedRawData == '') :
1006     if not physics and (daqtype == 'globalDAQ') :
1007     FedRawData = 'hltEcalCalibrationRaw'
1008     else :
1009     FedRawData = 'rawDataCollector'
1010    
1011     customizations += '''
1012     ## FEDRawDataCollection name ##
1013     FedRawData = "''' + FedRawData + '''"
1014     '''
1015    
1016     if p5 and physics :
1017     customizations += '''
1018     if process.runType.getRunType() == process.runType.hi_run:
1019     FedRawData = "''' + HIFedRawData + '''"
1020     '''
1021    
1022     if not laser :
1023     customizations += '''
1024     process.ecalDigis.InputLabel = cms.InputTag(FedRawData)
1025     '''
1026    
1027     if not newFramework :
1028     customizations += '''
1029     process.ecalBarrelRawDataTask.FEDRawDataCollection = cms.InputTag(FedRawData)
1030     process.ecalEndcapRawDataTask.FEDRawDataCollection = cms.InputTag(FedRawData)
1031     '''
1032    
1033     if physics :
1034     if newFramework :
1035     customizations += 'process.ecalMonitorTask.collectionTags.Source = FedRawData' + "\n"
1036     if live :
1037     customizations += 'process.l1GtEvmUnpack.EvmGtInputTag = cms.InputTag(FedRawData)' + "\n"
1038    
1039     else :
1040     customizations += 'process.ecalBarrelSelectiveReadoutTask.FEDRawDataCollection = cms.InputTag(FedRawData)' + "\n"
1041     customizations += 'process.ecalEndcapSelectiveReadoutTask.FEDRawDataCollection = cms.InputTag(FedRawData)' + "\n"
1042     if not central :
1043     customizations += 'process.ecalBarrelHltTask.FEDRawDataCollection = cms.InputTag(FedRawData)' + "\n"
1044     customizations += 'process.ecalEndcapHltTask.FEDRawDataCollection = cms.InputTag(FedRawData)' + "\n"
1045    
1046     if live :
1047     customizations += 'process.l1GtEvmUnpack.EvmGtInputTag = cms.InputTag(FedRawData)' + "\n"
1048     customizations += 'process.ecalBarrelTrendTask.FEDRawDataCollection = cms.InputTag(FedRawData)' + "\n"
1049     customizations += 'process.ecalEndcapTrendTask.FEDRawDataCollection = cms.InputTag(FedRawData)' + "\n"
1050    
1051     if not newFramework and calib and (daqtype == 'globalDAQ') :
1052     customizations += '''
1053     ## Avoid plot name clashes ##
1054     process.ecalBarrelIntegrityTask.subfolder = "Calibration"
1055     process.ecalBarrelOccupancyTask.subfolder = "Calibration"
1056     process.ecalBarrelStatusFlagsTask.subfolder = "Calibration"
1057     process.ecalBarrelRawDataTask.subfolder = "Calibration"
1058     process.ecalBarrelPedestalOnlineTask.subfolder = "Calibration"
1059     process.ecalEndcapIntegrityTask.subfolder = "Calibration"
1060     process.ecalEndcapOccupancyTask.subfolder = "Calibration"
1061     process.ecalEndcapStatusFlagsTask.subfolder = "Calibration"
1062     process.ecalEndcapRawDataTask.subfolder = "Calibration"
1063     process.ecalEndcapPedestalOnlineTask.subfolder = "Calibration"
1064     process.ecalBarrelMonitorClient.subfolder = "Calibration"
1065     process.ecalEndcapMonitorClient.subfolder = "Calibration"
1066     '''
1067    
1068     # write cfg file
1069     if filename == '' :
1070     if physics :
1071     c = 'ecal'
1072     elif calib :
1073     c = 'ecalcalib'
1074     elif laser :
1075     c = 'ecallaser'
1076    
1077     if central or privCentral :
1078     e = 'live'
1079     elif privEcal and live :
1080     e = 'privlive'
1081     elif live :
1082     e = 'locallive'
1083     else :
1084     e = 'data'
1085    
1086     if newFramework and not laser :
1087     e = 'new-' + e
1088    
1089     filename = c + '_dqm_sourceclient-' + e + '_cfg.py'
1090    
1091     cfgfile = file(filename, "w")
1092    
1093     cfgfile.write(
1094     header +
1095     recoModules +
1096     ecalDQM +
1097     dqmModules +
1098     filters +
1099     setup +
1100     misc +
1101     sequencePaths +
1102     source +
1103     customizations
1104     )
1105    
1106     cfgfile.close()