3 from __future__
import absolute_import
7 from .pipe
import pipe
as _pipe
8 from .options
import globalTag
9 from itertools
import islice
12 i = iterator.__iter__()
14 l = list(islice(i, n))
41 if self.config.fragment:
42 self.
labels[
'process'] =
'fragment'
43 self.
labels[
'dict'] =
'fragment.__dict__'
45 self.
labels[
'process'] =
'process'
46 self.
labels[
'dict'] =
'process.__dict__'
48 if self.config.prescale
and (self.config.prescale.lower() !=
'none'):
49 self.
labels[
'prescale'] = self.config.prescale
52 from .confdbOfflineConverter
import OfflineConverter
53 self.
converter = OfflineConverter(version = self.config.menu.version, database = self.config.menu.database, proxy = self.config.proxy, proxyHost = self.config.proxy_host, proxyPort = self.config.proxy_port)
61 if not self.config.setup:
64 if ".py" in self.config.setup:
65 self.config.setupFile = self.config.setup.split(
".py")[0]
67 args = [
'--configName', self.config.setup ]
68 args.append(
'--noedsources')
69 args.append(
'--nopaths')
70 for key, vals
in self.options.items():
72 args.extend((
'--'+key,
','.
join(vals)))
74 data, err = self.converter.query( *args )
75 if 'ERROR' in err
or 'Exhausted Resultset' in err
or 'CONFIG_NOT_FOUND' in err:
76 sys.stderr.write(
"%s: error while retrieving the HLT setup menu\n\n" % os.path.basename(sys.argv[0]))
77 sys.stderr.write(err +
"\n\n")
79 self.config.setupFile =
"setup_"+self.config.setup[1:].
replace(
"/",
"_")+
"_cff"
80 outfile = open(self.config.setupFile+
".py",
"w+")
81 outfile.write(
"# This file is automatically generated by hltGetConfiguration.\n" + data)
84 if self.config.menu.run:
85 args = [
'--runNumber', self.config.menu.run]
87 args = [
'--configName', self.config.menu.name ]
88 if not self.config.hilton:
90 args.append(
'--noedsources')
91 for key, vals
in self.options.items():
93 args.extend((
'--'+key,
','.
join(vals)))
94 data, err = self.converter.query( *args )
95 if 'ERROR' in err
or 'Exhausted Resultset' in err
or 'CONFIG_NOT_FOUND' in err:
96 sys.stderr.write(
"%s: error while retrieving the HLT menu\n\n" % os.path.basename(sys.argv[0]))
97 sys.stderr.write(err +
"\n\n")
102 if self.config.menu.run:
103 args = [
'--runNumber', self.config.menu.run]
105 args = [
'--configName', self.config.menu.name]
115 data, err = self.converter.query( *args )
116 if 'ERROR' in err
or 'Exhausted Resultset' in err
or 'CONFIG_NOT_FOUND' in err:
117 sys.stderr.write(
"%s: error while retrieving the list of paths from the HLT menu\n\n" % os.path.basename(sys.argv[0]))
118 sys.stderr.write(err +
"\n\n")
120 filter = re.compile(
r' *= *cms.(End|Final)?Path.*')
121 paths = [ filter.sub(
'', line)
for line
in data.splitlines()
if filter.search(line) ]
136 filter = re.compile(
r'^' + glob.replace(
'?',
'.').
replace(
'*',
'.*').
replace(
'[!',
'[^') +
r'$')
137 matches.extend( negate + element
for element
in collection
if filter.match(element) )
146 for element
in elements:
147 if element[0] ==
'-':
148 result.add( element )
150 result.discard(
'-' + element )
151 return sorted( element
for element
in result )
158 for element
in elements:
159 if element[0] ==
'-':
160 result.discard( element[1:] )
162 result.add( element )
163 return sorted( element
for element
in result )
169 if self.config.fragment:
170 self.
data = re.sub(
r'\bprocess\b',
'fragment', self.
data )
171 self.
data = re.sub(
r'\bProcess\b',
'ProcessFragment', self.
data )
178 if self.config.fragment:
180 # add specific customizations
181 from HLTrigger.Configuration.customizeHLTforALL import customizeHLTforAll
182 fragment = customizeHLTforAll(fragment,"%s")
183 """ % (self.config.type)
184 elif self.config.hilton:
188 if self.config.type==
"Fake":
190 elif self.config.type
in (
"Fake1",
"Fake2",
"2018"):
194 _gtData =
"auto:"+prefix+
"_hlt_"+self.config.type
195 _gtMc =
"auto:"+prefix+
"_mc_" +self.config.type
197 # add specific customizations
199 _customInfo['menuType' ]= "%s"
200 _customInfo['globalTags']= {}
201 _customInfo['globalTags'][True ] = "%s"
202 _customInfo['globalTags'][False] = "%s"
203 _customInfo['inputFiles']={}
204 _customInfo['inputFiles'][True] = "file:RelVal_Raw_%s_DATA.root"
205 _customInfo['inputFiles'][False] = "file:RelVal_Raw_%s_MC.root"
206 _customInfo['maxEvents' ]= %s
207 _customInfo['globalTag' ]= "%s"
208 _customInfo['inputFile' ]= %s
209 _customInfo['realData' ]= %s
211 from HLTrigger.Configuration.customizeHLTforALL import customizeHLTforAll
212 %%(process)s = customizeHLTforAll(%%(process)s,"%s",_customInfo)
213 """ % (self.config.type,_gtData,_gtMc,self.config.type,self.config.type,self.config.events,self.config.globaltag,self.
source,self.config.data,self.config.type)
216 from HLTrigger.Configuration.customizeHLTforCMSSW import customizeHLTforCMSSW
217 %%(process)s = customizeHLTforCMSSW(%%(process)s,"%s")
218 """ % (self.config.type)
222 # Eras-based customisations
223 from HLTrigger.Configuration.Eras import modifyHLTforEras
224 modifyHLTforEras(%(process)s)
227 if self.config.customise:
229 self.
data +=
"#User-defined customization functions\n"
230 for customise
in self.config.customise.split(
","):
231 customiseValues = customise.split(
".")
232 if len(customiseValues)>=3:
raise Exception(
"--customise option cannot contain more than one dot.")
233 if len(customiseValues)==1:
234 customiseValues.append(
"customise")
235 customiseValues[0] = customiseValues[0].
replace(
"/",
".")
236 self.
data +=
"from "+customiseValues[0]+
" import "+customiseValues[1]+
"\n"
237 self.
data +=
"process = "+customiseValues[1]+
"(process)\n"
244 if not self.config.fragment:
248 if self.config.type
in (
'HIon', ):
250 if not self.config.fragment:
251 self.
_fix_parameter( type =
'InputTag', value =
'rawDataCollector', replace =
'rawDataRepacker')
274 if self.config.fragment:
276 # dummify hltGetConditions in cff's
277 if 'hltGetConditions' in %(dict)s and 'HLTriggerFirstPath' in %(dict)s :
278 %(process)s.hltDummyConditions = cms.EDFilter( "HLTBool",
279 result = cms.bool( True )
281 %(process)s.HLTriggerFirstPath.replace(%(process)s.hltGetConditions,%(process)s.hltDummyConditions)
292 match = re.match(
r'(Scouting\w+)Output$', path)
294 module =
'hltOutput' + match.group(1)
295 self.
data = self.data.replace(path+
' = cms.EndPath', path+
' = cms.Path')
296 self.
data = self.data.replace(
' + process.'+module,
'')
297 self.
data = self.data.replace(
' process.'+module,
'')
328 # limit the number of events to be processed
329 %%(process)s.maxEvents = cms.untracked.PSet(
330 input = cms.untracked.int32( %d )
332 """ % self.config.events
335 # enable TrigReport, TimeReport and MultiThreading
336 %(process)s.options = cms.untracked.PSet(
337 wantSummary = cms.untracked.bool( True ),
338 numberOfThreads = cms.untracked.uint32( 4 ),
339 numberOfStreams = cms.untracked.uint32( 0 ),
345 name: parameter name (optional)
346 type: parameter type (look for tracked and untracked variants)
347 value: original value
348 replace: replacement value
352 r'%(name)s = cms(?P<tracked>(?:\.untracked)?)\.%(type)s\( (?P<quote>["\']?)%(value)s(?P=quote)' % args,
353 r'%(name)s = cms\g<tracked>.%(type)s( \g<quote>%(replace)s\g<quote>' % args,
357 r'cms(?P<tracked>(?:\.untracked)?)\.%(type)s\( (?P<quote>["\']?)%(value)s(?P=quote)' % args,
358 r'cms\g<tracked>.%(type)s( \g<quote>%(replace)s\g<quote>' % args,
365 if self.
options[
'paths'][0][0] ==
'-':
367 for minuspath
in self.
options[
'paths']:
369 self.
data = re.sub(
r' cms.PSet\( pathName = cms.string\( "%s" \),\n prescales = cms.vuint32\( .* \)\n \),?\n' % path,
'', self.
data)
373 if path
not in self.
options[
'paths']:
374 self.
data = re.sub(
r' cms.PSet\( pathName = cms.string\( "%s" \),\n prescales = cms.vuint32\( .* \)\n \),?\n' % path,
'', self.
data)
376 if self.config.prescale
and (self.config.prescale.lower() !=
'none'):
379 # force the use of a specific HLT prescale column
380 if 'PrescaleService' in %(dict)s:
381 %(process)s.PrescaleService.forceDefault = True
382 %(process)s.PrescaleService.lvl1DefaultLabel = '%(prescale)s'
389 filters = [ match[1]
for match
in re.findall(
r'(process\.)?\b(\w+) = cms.EDFilter', self.
data) ]
390 re_sequence = re.compile(
r'cms\.(Path|Sequence)\((.*)\)' )
392 self.
data = re_sequence.sub(
lambda line: re.sub(
r'cms\.ignore *\( *((process\.)?\b(\w+)) *\)',
r'\1', line.group(0) ), self.
data )
393 self.
data = re_sequence.sub(
lambda line: re.sub(
r'~',
'', line.group(0) ), self.
data )
395 for some
in splitter(filters, 1000):
396 re_filters = re.compile(
r'\b((process\.)?(' +
r'|'.
join(some) +
r'))\b' )
397 self.
data = re_sequence.sub(
lambda line: re_filters.sub(
r'cms.ignore( \1 )', line.group(0) ), self.
data )
401 if self.config.errortype:
403 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'1', replace =
'0')
404 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'2', replace =
'0')
405 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'3', replace =
'0')
421 if not self.config.data
and not self.config.globaltag:
422 if self.config.type
in globalTag:
423 self.config.globaltag = globalTag[self.config.type]
425 self.config.globaltag = globalTag[
'GRun']
428 if self.config.l1.override:
429 self.config.l1.tag = self.config.l1.override
430 self.config.l1.record =
'L1TUtmTriggerMenuRcd'
431 self.config.l1.connect =
''
432 self.config.l1.label =
''
433 if not self.config.l1.snapshotTime:
434 self.config.l1.snapshotTime =
'9999-12-31 23:59:59.000'
435 self.config.l1cond =
'%(tag)s,%(record)s,%(connect)s,%(label)s,%(snapshotTime)s' % self.config.l1.__dict__
437 self.config.l1cond =
None
439 if self.config.globaltag
or self.config.l1cond:
441 # override the GlobalTag, connection string and pfnPrefix
442 if 'GlobalTag' in %(dict)s:
443 from Configuration.AlCa.GlobalTag import GlobalTag as customiseGlobalTag
444 %(process)s.GlobalTag = customiseGlobalTag(%(process)s.GlobalTag"""
445 if self.config.globaltag:
446 text +=
", globaltag = %s" % repr(self.config.globaltag)
447 if self.config.l1cond:
448 text +=
", conditions = %s" % repr(self.config.l1cond)
454 if self.config.l1Xml.XmlFile:
456 # override the GlobalTag's L1T menu from an Xml file
457 from HLTrigger.Configuration.CustomConfigs import L1XML
458 %%(process)s = L1XML(%%(process)s,"%s")
459 """ % (self.config.l1Xml.XmlFile)
464 if self.config.emulator:
466 # run the Full L1T emulator, then repack the data into a new RAW collection, to be used by the HLT
467 from HLTrigger.Configuration.CustomConfigs import L1REPACK
468 %%(process)s = L1REPACK(%%(process)s,"%s")
469 """ % (self.config.emulator)
476 if not self.config.hilton:
478 r'\b(process\.)?hltOutput(\w+) *= *cms\.OutputModule\( *"(ShmStreamConsumer)" *,',
479 r'%(process)s.hltOutput\2 = cms.OutputModule( "PoolOutputModule",\n fileName = cms.untracked.string( "output\2.root" ),\n fastCloning = cms.untracked.bool( False ),\n dataset = cms.untracked.PSet(\n filterName = cms.untracked.string( "" ),\n dataTier = cms.untracked.string( "RAW" )\n ),',
483 r'\b(process\.)?hltOutput(\w+) *= *cms\.OutputModule\( *"EvFOutputModule" *,\n use_compression = cms.untracked.bool\( True \),\n compression_algorithm = cms.untracked.string\( "ZLIB" \),\n compression_level = cms.untracked.int32\( 1 \),\n lumiSection_interval = cms.untracked.int32\( 0 \),\n(.+?),\n psetMap = cms.untracked.InputTag\( "hltPSetMap" \)\n',
484 r'\1hltOutput\2 = cms.OutputModule( "PoolOutputModule",\n fileName = cms.untracked.string( "output\2.root" ),\n fastCloning = cms.untracked.bool( False ),\n dataset = cms.untracked.PSet(\n filterName = cms.untracked.string( "" ),\n dataTier = cms.untracked.string( "RAW" )\n ),\n\3\n',
485 self.
data,0,re.DOTALL
488 r'\b(process\.)?hltOutput(\w+) *= *cms\.OutputModule\( *"GlobalEvFOutputModule" *,\n use_compression = cms.untracked.bool\( True \),\n compression_algorithm = cms.untracked.string\( "ZLIB" \),\n compression_level = cms.untracked.int32\( 1 \),\n lumiSection_interval = cms.untracked.int32\( 0 \),\n(.+?),\n psetMap = cms.untracked.InputTag\( "hltPSetMap" \)\n',
489 r'\1hltOutput\2 = cms.OutputModule( "PoolOutputModule",\n fileName = cms.untracked.string( "output\2.root" ),\n fastCloning = cms.untracked.bool( False ),\n dataset = cms.untracked.PSet(\n filterName = cms.untracked.string( "" ),\n dataTier = cms.untracked.string( "RAW" )\n ),\n\3\n',
490 self.
data,0,re.DOTALL
492 if not self.config.fragment
and self.config.output ==
'minimal':
495 # add a single "keep *" output
496 %(process)s.hltOutputMinimal = cms.OutputModule( "PoolOutputModule",
497 fileName = cms.untracked.string( "output.root" ),
498 fastCloning = cms.untracked.bool( False ),
499 dataset = cms.untracked.PSet(
500 dataTier = cms.untracked.string( 'AOD' ),
501 filterName = cms.untracked.string( '' )
503 outputCommands = cms.untracked.vstring( 'drop *',
504 'keep edmTriggerResults_*_*_*',
505 'keep triggerTriggerEvent_*_*_*',
506 'keep GlobalAlgBlkBXVector_*_*_*',
507 'keep GlobalExtBlkBXVector_*_*_*',
508 'keep l1tEGammaBXVector_*_EGamma_*',
509 'keep l1tEtSumBXVector_*_EtSum_*',
510 'keep l1tJetBXVector_*_Jet_*',
511 'keep l1tMuonBXVector_*_Muon_*',
512 'keep l1tTauBXVector_*_Tau_*',
515 %(process)s.MinimalOutput = cms.FinalPath( %(process)s.hltOutputMinimal )
516 %(process)s.schedule.append( %(process)s.MinimalOutput )
518 elif not self.config.fragment
and self.config.output ==
'full':
521 # add a single "keep *" output
522 %(process)s.hltOutputFull = cms.OutputModule( "PoolOutputModule",
523 fileName = cms.untracked.string( "output.root" ),
524 fastCloning = cms.untracked.bool( False ),
525 dataset = cms.untracked.PSet(
526 dataTier = cms.untracked.string( 'RECO' ),
527 filterName = cms.untracked.string( '' )
529 outputCommands = cms.untracked.vstring( 'keep *' )
531 %(process)s.FullOutput = cms.FinalPath( %(process)s.hltOutputFull )
532 %(process)s.schedule.append( %(process)s.FullOutput )
537 if self.config.eras
is None:
539 from Configuration.StandardSequences.Eras
import eras
540 erasSplit = self.config.eras.split(
',')
541 self.
data = re.sub(
r'process = cms.Process\( *"\w+"',
'\n'.
join(eras.pythonCfgLines[era]
for era
in erasSplit)+
'\n\g<0>, '+
', '.
join(era
for era
in erasSplit), self.
data)
545 if self.config.setup
is None:
547 processLine = self.data.find(
"\n",self.data.find(
"cms.Process"))
548 self.
data = self.
data[:processLine]+
'\nprocess.load("%s")'%self.config.setupFile+self.
data[processLine:]
552 if self.config.name
is None:
556 self.config.name = self.config.name.replace(
"_",
"")
559 self.
data = re.compile(
r'^(process\s*=\s*cms\.Process\(\s*' + quote +
r')\w+(' + quote +
r'\s*\).*)$', re.MULTILINE).sub(
r'\1%s\2' % self.config.name, self.
data, 1)
562 if self.config.setup: self.
data +=
"""
563 # avoid PrescaleService error due to missing HLT paths
564 if 'PrescaleService' in process.__dict__:
565 for pset in reversed(process.PrescaleService.prescaleTable):
566 if not hasattr(process,pset.pathName.value()):
567 process.PrescaleService.prescaleTable.remove(pset)
574 # show summaries from trigger analysers used at HLT
575 if 'MessageLogger' in %(dict)s:
576 %(process)s.MessageLogger.TriggerSummaryProducerAOD = cms.untracked.PSet()
577 %(process)s.MessageLogger.L1GtTrigReport = cms.untracked.PSet()
578 %(process)s.MessageLogger.L1TGlobalSummary = cms.untracked.PSet()
579 %(process)s.MessageLogger.HLTrigReport = cms.untracked.PSet()
580 %(process)s.MessageLogger.FastReport = cms.untracked.PSet()
581 %(process)s.MessageLogger.ThroughputService = cms.untracked.PSet()
589 if 'GlobalTag' in %%(dict)s:
591 for condition
in conditions:
592 self.
data +=
""" %%(process)s.GlobalTag.toGet.append(
594 record = cms.string( '%(record)s' ),
595 tag = cms.string( '%(tag)s' ),
596 label = cms.untracked.string( '%(label)s' ),
604 if self.config.fragment:
605 return 'from %s import *\n' % module
607 return 'process.load( "%s" )\n' % module
615 self.
data +=
"if '%s' in %%(dict)s:\n" % module
616 for (parameter, value)
in parameters:
617 self.
data +=
" %%(process)s.%s.%s = %s\n" % (module, parameter, value)
622 if label
in self.
data:
623 label_re =
r'\b(process\.)?' + label
624 self.
data = re.sub(
r' *(\+|,) *' + label_re,
'', self.
data)
625 self.
data = re.sub(label_re +
r' *(\+|,) *',
'', self.
data)
626 self.
data = re.sub(label_re,
'', self.
data)
631 if self.config.timing:
633 # instrument the menu with the modules and EndPath needed for timing studies
636 self.
data +=
'\n# configure the FastTimerService\n'
637 self.
loadCff(
'HLTrigger.Timer.FastTimerService_cfi')
639 self.
data +=
"""# print a text summary at the end of the job
640 %(process)s.FastTimerService.printEventSummary = False
641 %(process)s.FastTimerService.printRunSummary = False
642 %(process)s.FastTimerService.printJobSummary = True
645 %(process)s.FastTimerService.enableDQM = True
647 # enable per-path DQM plots (starting with CMSSW 9.2.3-patch2)
648 %(process)s.FastTimerService.enableDQMbyPath = True
650 # enable per-module DQM plots
651 %(process)s.FastTimerService.enableDQMbyModule = True
653 # enable per-event DQM plots vs lumisection
654 %(process)s.FastTimerService.enableDQMbyLumiSection = True
655 %(process)s.FastTimerService.dqmLumiSectionsRange = 2500
657 # set the time resolution of the DQM plots
658 %(process)s.FastTimerService.dqmTimeRange = 2000.
659 %(process)s.FastTimerService.dqmTimeResolution = 10.
660 %(process)s.FastTimerService.dqmPathTimeRange = 1000.
661 %(process)s.FastTimerService.dqmPathTimeResolution = 5.
662 %(process)s.FastTimerService.dqmModuleTimeRange = 200.
663 %(process)s.FastTimerService.dqmModuleTimeResolution = 1.
665 # set the base DQM folder for the plots
666 %(process)s.FastTimerService.dqmPath = 'HLT/TimerService'
667 %(process)s.FastTimerService.enableDQMbyProcesses = False
672 if not self.config.hilton:
680 dqmstore =
"\n# load the DQMStore and DQMRootOutputModule\n"
683 %(process)s.dqmOutput = cms.OutputModule("DQMRootOutputModule",
684 fileName = cms.untracked.string("DQMIO.root")
687 empty_path = re.compile(
r'.*\b(process\.)?DQMOutput = cms\.(Final|End)Path\( *\).*')
688 other_path = re.compile(
r'(.*\b(process\.)?DQMOutput = cms\.(Final|End)Path\()(.*)')
689 if empty_path.search(self.
data):
691 self.
data = empty_path.sub(dqmstore +
'\n%(process)s.DQMOutput = cms.FinalPath( %(process)s.dqmOutput )\n', self.
data)
692 elif other_path.search(self.
data):
694 self.
data = other_path.sub(dqmstore +
r'\g<1> %(process)s.dqmOutput +\g<4>', self.
data)
697 self.
data += dqmstore
698 self.
data +=
'\n%(process)s.DQMOutput = cms.FinalPath( %(process)s.dqmOutput )\n'
699 self.
data +=
'%(process)s.schedule.append( %(process)s.DQMOutput )\n'
704 sys.stderr.write(
'Path selection:\n')
706 sys.stderr.write(
'\t%s\n' % path)
707 sys.stderr.write(
'\n\n')
712 if self.config.paths:
714 paths = self.config.paths.split(
',')
724 if self.config.fragment
or self.config.output
in (
'none', ):
725 if self.config.paths:
730 paths.append(
"-*Output" )
731 paths.append(
"-RatesMonitoring")
732 paths.append(
"-DQMHistograms")
733 if self.config.fragment: paths.append(
"Scouting*Output" )
735 elif self.config.output
in (
'dqm',
'minimal',
'full'):
736 if self.config.paths:
738 paths.append(
"DQMHistograms" )
741 paths.append(
"-*Output" )
742 paths.append(
"-RatesMonitoring")
743 if self.config.fragment: paths.append(
"Scouting*Output" )
746 if self.config.paths:
748 paths.append(
"*Output" )
749 paths.append(
"DQMHistograms" )
755 if self.config.profiling:
756 paths.append(
"-HLTAnalyzerEndpath" )
759 paths.append(
"-OfflineOutput" )
764 if self.config.paths:
768 raise RuntimeError(
'Error: option "--paths %s" does not select any valid paths' % self.config.paths)
784 if not self.config.hilton:
791 if self.config.fragment:
795 self.
options[
'essources'].
append(
"-XMLIdealGeometryESSource" )
814 self.
options[
'esmodules'].
append(
"-CaloTowerHardcodeGeometryEP" )
815 self.
options[
'esmodules'].
append(
"-CastorHardcodeGeometryEP" )
818 self.
options[
'esmodules'].
append(
"-EcalElectronicsMappingBuilder" )
820 self.
options[
'esmodules'].
append(
"-EcalLaserCorrectionService" )
821 self.
options[
'esmodules'].
append(
"-EcalPreshowerGeometryEP" )
823 self.
options[
'esmodules'].
append(
"-HcalHardcodeGeometryEP" )
825 self.
options[
'esmodules'].
append(
"-MuonNumberingInitialization" )
826 self.
options[
'esmodules'].
append(
"-ParametrizedMagneticFieldProducer" )
829 self.
options[
'esmodules'].
append(
"-SiStripRecHitMatcherESProducer" )
830 self.
options[
'esmodules'].
append(
"-SiStripQualityESProducer" )
831 self.
options[
'esmodules'].
append(
"-StripCPEfromTrackAngleESProducer" )
832 self.
options[
'esmodules'].
append(
"-TrackerAdditionalParametersPerDetESModule" )
833 self.
options[
'esmodules'].
append(
"-TrackerDigiGeometryESModule" )
834 self.
options[
'esmodules'].
append(
"-TrackerGeometricDetESModule" )
835 self.
options[
'esmodules'].
append(
"-VolumeBasedMagneticFieldESProducer" )
838 self.
options[
'esmodules'].
append(
"-L1GtTriggerMaskAlgoTrigTrivialProducer" )
839 self.
options[
'esmodules'].
append(
"-L1GtTriggerMaskTechTrigTrivialProducer" )
840 self.
options[
'esmodules'].
append(
"-hltESPEcalTrigTowerConstituentsMapBuilder" )
841 self.
options[
'esmodules'].
append(
"-hltESPGlobalTrackingGeometryESProducer" )
842 self.
options[
'esmodules'].
append(
"-hltESPMuonDetLayerGeometryESProducer" )
843 self.
options[
'esmodules'].
append(
"-hltESPTrackerRecoGeometryESProducer" )
846 self.
options[
'esmodules'].
append(
"-CaloTowerGeometryFromDBEP" )
847 self.
options[
'esmodules'].
append(
"-CastorGeometryFromDBEP" )
848 self.
options[
'esmodules'].
append(
"-EcalBarrelGeometryFromDBEP" )
849 self.
options[
'esmodules'].
append(
"-EcalEndcapGeometryFromDBEP" )
850 self.
options[
'esmodules'].
append(
"-EcalPreshowerGeometryFromDBEP" )
862 self.
options[
'modules'].
append(
"-hltOutputScoutingCaloMuon" )
865 if self.config.fragment
or (self.config.prescale
and (self.config.prescale.lower() ==
'none')):
868 if self.config.fragment
or self.config.timing:
873 if len(filenames) > 255:
880 self.
data +=
" %s = cms.untracked.vstring%s\n" % (name, token_open)
881 for line
in filenames:
882 self.
data +=
" '%s',\n" % line
883 self.
data +=
" %s,\n" % (token_close)
888 if input[0:8] ==
'dataset:':
889 from .dasFileQuery
import dasFileQuery
895 files = input.split(
',')
899 if self.config.hilton:
903 if self.config.input:
906 elif self.config.data:
908 self.
source = [
"file:RelVal_Raw_%s_DATA.root" % self.config.type ]
911 self.
source = [
"file:RelVal_Raw_%s_MC.root" % self.config.type ]
913 if self.config.parent:
918 # source module (EDM inputs)
919 %(process)s.source = cms.Source( "PoolSource",
925 inputCommands = cms.untracked.vstring(
def getSetupConfigurationFromDB
boost::dynamic_bitset append(const boost::dynamic_bitset<> &bs1, const boost::dynamic_bitset<> &bs2)
this method takes two bitsets bs1 and bs2 and returns result of bs2 appended to the end of bs1 ...
def consolidateNegativeList
def instrumentErrorEventType
def consolidatePositiveList
static std::string join(char **cmd)
def removeElementFromSequencesTasksAndPaths
def getRawConfigurationFromDB
def loadAdditionalConditions