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

# Content
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()