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))
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'):
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, tunnel = self.
config.tunnel, tunnelPort = self.
config.tunnel_port)
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')
72 args.extend((
'--'+key,
','.
join(vals)))
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")
80 outfile = open(self.
config.setupFile+
".py",
"w+")
81 outfile.write(
"# This file is automatically generated by hltGetConfiguration.\n" + data)
85 args = [
'--runNumber', self.
config.menu.run]
87 args = [
'--configName', self.
config.menu.name ]
90 args.append(
'--noedsources')
93 args.extend((
'--'+key,
','.
join(vals)))
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")
103 args = [
'--runNumber', self.
config.menu.run]
105 args = [
'--configName', self.
config.menu.name]
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 )
170 self.
data = re.sub(
r'\bprocess\b',
'fragment', self.
data )
171 self.
data = re.sub(
r'\bProcess\b',
'ProcessFragment', self.
data )
180 # add specific customizations 181 from HLTrigger.Configuration.customizeHLTforALL import customizeHLTforAll 182 fragment = customizeHLTforAll(fragment,"%s") 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) 216 from HLTrigger.Configuration.customizeHLTforCMSSW import customizeHLTforCMSSW 217 %%(process)s = customizeHLTforCMSSW(%%(process)s,"%s") 222 # Eras-based customisations 223 from HLTrigger.Configuration.Eras import modifyHLTforEras 224 modifyHLTforEras(%(process)s) 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:
270 # dummify hltGetConditions in cff's 271 if 'hltGetConditions' in %(dict)s and 'HLTriggerFirstPath' in %(dict)s : 272 %(process)s.hltDummyConditions = cms.EDFilter( "HLTBool", 273 result = cms.bool( True ) 275 %(process)s.HLTriggerFirstPath.replace(%(process)s.hltGetConditions,%(process)s.hltDummyConditions) 286 match = re.match(
r'(Scouting\w+)Output$', path)
288 module =
'hltOutput' + match.group(1)
289 self.
data = self.
data.
replace(path+
' = cms.EndPath', path+
' = cms.Path')
322 # limit the number of events to be processed 323 %%(process)s.maxEvents = cms.untracked.PSet( 324 input = cms.untracked.int32( %d ) 329 # enable TrigReport, TimeReport and MultiThreading 330 %(process)s.options.wantSummary = True 331 %(process)s.options.numberOfThreads = 4 332 %(process)s.options.numberOfStreams = 0 337 name: parameter name (optional) 338 type: parameter type (look for tracked and untracked variants) 339 value: original value 340 replace: replacement value 344 r'%(name)s = cms(?P<tracked>(?:\.untracked)?)\.%(type)s\( (?P<quote>["\']?)%(value)s(?P=quote)' % args,
345 r'%(name)s = cms\g<tracked>.%(type)s( \g<quote>%(replace)s\g<quote>' % args,
349 r'cms(?P<tracked>(?:\.untracked)?)\.%(type)s\( (?P<quote>["\']?)%(value)s(?P=quote)' % args,
350 r'cms\g<tracked>.%(type)s( \g<quote>%(replace)s\g<quote>' % args,
357 if self.
options[
'paths'][0][0] ==
'-':
359 for minuspath
in self.
options[
'paths']:
361 self.
data = re.sub(
r' cms.PSet\( pathName = cms.string\( "%s" \),\n prescales = cms.vuint32\( .* \)\n \),?\n' % path,
'', self.
data)
365 if path
not in self.
options[
'paths']:
366 self.
data = re.sub(
r' cms.PSet\( pathName = cms.string\( "%s" \),\n prescales = cms.vuint32\( .* \)\n \),?\n' % path,
'', self.
data)
368 if self.
config.prescale
and (self.
config.prescale.lower() !=
'none'):
371 # force the use of a specific HLT prescale column 372 if 'PrescaleService' in %(dict)s: 373 %(process)s.PrescaleService.forceDefault = True 374 %(process)s.PrescaleService.lvl1DefaultLabel = '%(prescale)s' 381 filters = [ match[1]
for match
in re.findall(
r'(process\.)?\b(\w+) = cms.EDFilter', self.
data) ]
382 re_sequence = re.compile(
r'cms\.(Path|Sequence)\((.*)\)' )
384 self.
data = re_sequence.sub(
lambda line: re.sub(
r'cms\.ignore *\( *((process\.)?\b(\w+)) *\)',
r'\1', line.group(0) ), self.
data )
385 self.
data = re_sequence.sub(
lambda line: re.sub(
r'~',
'', line.group(0) ), self.
data )
387 for some
in splitter(filters, 1000):
388 re_filters = re.compile(
r'\b((process\.)?(' +
r'|'.
join(some) +
r'))\b' )
389 self.
data = re_sequence.sub(
lambda line: re_filters.sub(
r'cms.ignore( \1 )', line.group(0) ), self.
data )
395 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'1', replace =
'0')
396 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'2', replace =
'0')
397 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'3', replace =
'0')
414 if self.
config.type
in globalTag:
417 self.
config.globaltag = globalTag[
'GRun']
420 if self.
config.l1.override:
422 self.
config.l1.record =
'L1TUtmTriggerMenuRcd' 423 self.
config.l1.connect =
'' 425 if not self.
config.l1.snapshotTime:
426 self.
config.l1.snapshotTime =
'9999-12-31 23:59:59.000' 427 self.
config.l1cond =
'%(tag)s,%(record)s,%(connect)s,%(label)s,%(snapshotTime)s' % self.
config.l1.__dict__
433 # override the GlobalTag, connection string and pfnPrefix 434 if 'GlobalTag' in %(dict)s: 435 from Configuration.AlCa.GlobalTag import GlobalTag as customiseGlobalTag 436 %(process)s.GlobalTag = customiseGlobalTag(%(process)s.GlobalTag""" 438 text +=
", globaltag = %s" % repr(self.
config.globaltag)
440 text +=
", conditions = %s" % repr(self.
config.l1cond)
446 if self.
config.l1Xml.XmlFile:
448 # override the GlobalTag's L1T menu from an Xml file 449 from HLTrigger.Configuration.CustomConfigs import L1XML 450 %%(process)s = L1XML(%%(process)s,"%s") 451 """ % (self.
config.l1Xml.XmlFile)
458 # run the Full L1T emulator, then repack the data into a new RAW collection, to be used by the HLT 459 from HLTrigger.Configuration.CustomConfigs import L1REPACK 460 %%(process)s = L1REPACK(%%(process)s,"%s") 461 """ % (self.
config.emulator)
468 if not self.
config.hilton:
470 r'\b(process\.)?hltOutput(\w+) *= *cms\.OutputModule\( *"(ShmStreamConsumer)" *,',
471 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 ),',
475 self.
data = re.sub(
"""\ 476 \\b(process\.)?hltOutput(\w+) *= *cms\.OutputModule\( *['"](EvFOutputModule|GlobalEvFOutputModule)['"] *, 477 use_compression = cms.untracked.bool\( (True|False) \), 478 compression_algorithm = cms.untracked.string\( ['"](.+?)['"] \), 479 compression_level = cms.untracked.int32\( (-?\d+) \), 480 lumiSection_interval = cms.untracked.int32\( (-?\d+) \), 482 psetMap = cms.untracked.InputTag\( ['"]hltPSetMap['"] \) 484 %(process)s.hltOutput\g<2> = cms.OutputModule( "PoolOutputModule", 485 fileName = cms.untracked.string( "output\g<2>.root" ), 486 compressionAlgorithm = cms.untracked.string( "\g<5>" ), 487 compressionLevel = cms.untracked.int32( \g<6> ), 488 fastCloning = cms.untracked.bool( False ), 489 dataset = cms.untracked.PSet( 490 filterName = cms.untracked.string( "" ), 491 dataTier = cms.untracked.string( "RAW" ) 494 """, self.
data, 0, re.DOTALL)
496 if not self.
config.fragment
and self.
config.output ==
'minimal':
499 # add a single "keep *" output 500 %(process)s.hltOutputMinimal = cms.OutputModule( "PoolOutputModule", 501 fileName = cms.untracked.string( "output.root" ), 502 fastCloning = cms.untracked.bool( False ), 503 dataset = cms.untracked.PSet( 504 dataTier = cms.untracked.string( 'AOD' ), 505 filterName = cms.untracked.string( '' ) 507 outputCommands = cms.untracked.vstring( 'drop *', 508 'keep edmTriggerResults_*_*_*', 509 'keep triggerTriggerEvent_*_*_*', 510 'keep GlobalAlgBlkBXVector_*_*_*', 511 'keep GlobalExtBlkBXVector_*_*_*', 512 'keep l1tEGammaBXVector_*_EGamma_*', 513 'keep l1tEtSumBXVector_*_EtSum_*', 514 'keep l1tJetBXVector_*_Jet_*', 515 'keep l1tMuonBXVector_*_Muon_*', 516 'keep l1tTauBXVector_*_Tau_*', 519 %(process)s.MinimalOutput = cms.FinalPath( %(process)s.hltOutputMinimal ) 520 %(process)s.schedule.append( %(process)s.MinimalOutput ) 522 elif not self.
config.fragment
and self.
config.output ==
'full':
525 # add a single "keep *" output 526 %(process)s.hltOutputFull = cms.OutputModule( "PoolOutputModule", 527 fileName = cms.untracked.string( "output.root" ), 528 fastCloning = cms.untracked.bool( False ), 529 dataset = cms.untracked.PSet( 530 dataTier = cms.untracked.string( 'RECO' ), 531 filterName = cms.untracked.string( '' ) 533 outputCommands = cms.untracked.vstring( 'keep *' ) 535 %(process)s.FullOutput = cms.FinalPath( %(process)s.hltOutputFull ) 536 %(process)s.schedule.append( %(process)s.FullOutput ) 541 if self.
config.eras
is None:
543 from Configuration.StandardSequences.Eras
import eras
544 erasSplit = self.
config.eras.split(
',')
545 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)
549 if self.
config.setup
is None:
552 self.
data = self.
data[:processLine]+
'\nprocess.load("%s")'%self.
config.setupFile+self.
data[processLine:]
556 if self.
config.name
is None:
563 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)
567 # avoid PrescaleService error due to missing HLT paths 568 if 'PrescaleService' in process.__dict__: 569 for pset in reversed(process.PrescaleService.prescaleTable): 570 if not hasattr(process,pset.pathName.value()): 571 process.PrescaleService.prescaleTable.remove(pset) 578 # show summaries from trigger analysers used at HLT 579 if 'MessageLogger' in %(dict)s: 580 %(process)s.MessageLogger.TriggerSummaryProducerAOD = cms.untracked.PSet() 581 %(process)s.MessageLogger.L1GtTrigReport = cms.untracked.PSet() 582 %(process)s.MessageLogger.L1TGlobalSummary = cms.untracked.PSet() 583 %(process)s.MessageLogger.HLTrigReport = cms.untracked.PSet() 584 %(process)s.MessageLogger.FastReport = cms.untracked.PSet() 585 %(process)s.MessageLogger.ThroughputService = cms.untracked.PSet() 593 if 'GlobalTag' in %%(dict)s: 595 for condition
in conditions:
596 self.
data +=
""" %%(process)s.GlobalTag.toGet.append( 598 record = cms.string( '%(record)s' ), 599 tag = cms.string( '%(tag)s' ), 600 label = cms.untracked.string( '%(label)s' ), 609 return 'from %s import *\n' % module
611 return 'process.load( "%s" )\n' % module
619 self.
data +=
"if '%s' in %%(dict)s:\n" % module
620 for (parameter, value)
in parameters:
621 self.
data +=
" %%(process)s.%s.%s = %s\n" % (module, parameter, value)
626 if label
in self.
data:
627 label_re =
r'\b(process\.)?' + label
628 self.
data = re.sub(
r' *(\+|,) *' + label_re,
'', self.
data)
629 self.
data = re.sub(label_re +
r' *(\+|,) *',
'', self.
data)
630 self.
data = re.sub(label_re,
'', self.
data)
637 # instrument the menu with the modules and EndPath needed for timing studies 640 self.
data +=
'\n# configure the FastTimerService\n' 641 self.
loadCff(
'HLTrigger.Timer.FastTimerService_cfi')
643 self.
data +=
"""# print a text summary at the end of the job 644 %(process)s.FastTimerService.printEventSummary = False 645 %(process)s.FastTimerService.printRunSummary = False 646 %(process)s.FastTimerService.printJobSummary = True 649 %(process)s.FastTimerService.enableDQM = True 651 # enable per-path DQM plots 652 %(process)s.FastTimerService.enableDQMbyPath = True 654 # enable per-module DQM plots 655 %(process)s.FastTimerService.enableDQMbyModule = True 657 # enable per-event DQM plots vs lumisection 658 %(process)s.FastTimerService.enableDQMbyLumiSection = True 659 %(process)s.FastTimerService.dqmLumiSectionsRange = 2500 661 # set the time resolution of the DQM plots 662 %(process)s.FastTimerService.dqmTimeRange = 2000. 663 %(process)s.FastTimerService.dqmTimeResolution = 10. 664 %(process)s.FastTimerService.dqmPathTimeRange = 1000. 665 %(process)s.FastTimerService.dqmPathTimeResolution = 5. 666 %(process)s.FastTimerService.dqmModuleTimeRange = 200. 667 %(process)s.FastTimerService.dqmModuleTimeResolution = 1. 669 # set the base DQM folder for the DQM plots 670 %(process)s.FastTimerService.dqmPath = 'HLT/TimerService' 671 %(process)s.FastTimerService.enableDQMbyProcesses = False 673 # write a JSON file with the information to be displayed in a pie chart 674 %(process)s.FastTimerService.writeJSONSummary = True 675 %(process)s.FastTimerService.jsonFileName = 'resources.json' 678 self.
data +=
'\n# configure the ThroughputService\n' 679 self.
loadCff(
'HLTrigger.Timer.ThroughputService_cfi')
681 self.
data +=
"""# enable DQM plots 682 %(process)s.ThroughputService.enableDQM = True 684 # set the resolution of the DQM plots 685 %(process)s.ThroughputService.eventRange = 10000 686 %(process)s.ThroughputService.eventResolution = 1 687 %(process)s.ThroughputService.timeRange = 60000 688 %(process)s.ThroughputService.timeResolution = 10 690 # set the base DQM folder for the DQM plots 691 %(process)s.ThroughputService.dqmPath = 'HLT/Throughput' 692 %(process)s.ThroughputService.dqmPathByProcesses = False 697 if not self.
config.hilton:
705 dqmstore =
"\n# load the DQMStore and DQMRootOutputModule\n" 708 %(process)s.dqmOutput = cms.OutputModule("DQMRootOutputModule", 709 fileName = cms.untracked.string("DQMIO.root") 712 empty_path = re.compile(
r'.*\b(process\.)?DQMOutput = cms\.(Final|End)Path\( *\).*')
713 other_path = re.compile(
r'(.*\b(process\.)?DQMOutput = cms\.(Final|End)Path\()(.*)')
714 if empty_path.search(self.
data):
716 self.
data = empty_path.sub(dqmstore +
'\n%(process)s.DQMOutput = cms.FinalPath( %(process)s.dqmOutput )\n', self.
data)
717 elif other_path.search(self.
data):
719 self.
data = other_path.sub(dqmstore +
r'\g<1> %(process)s.dqmOutput +\g<4>', self.
data)
722 self.
data += dqmstore
723 self.
data +=
'\n%(process)s.DQMOutput = cms.FinalPath( %(process)s.dqmOutput )\n' 724 self.
data +=
'%(process)s.schedule.append( %(process)s.DQMOutput )\n' 729 sys.stderr.write(
'Path selection:\n')
731 sys.stderr.write(
'\t%s\n' % path)
732 sys.stderr.write(
'\n\n')
739 paths = self.
config.paths.split(
',')
749 if self.
config.fragment
or self.
config.output
in (
'none', ):
755 paths.append(
"-*Output" )
756 paths.append(
"-RatesMonitoring")
757 paths.append(
"-DQMHistograms")
758 if self.
config.fragment: paths.append(
"Scouting*Output" )
760 elif self.
config.output
in (
'dqm',
'minimal',
'full'):
763 paths.append(
"DQMHistograms" )
766 paths.append(
"-*Output" )
767 paths.append(
"-RatesMonitoring")
768 if self.
config.fragment: paths.append(
"Scouting*Output" )
773 paths.append(
"*Output" )
774 paths.append(
"DQMHistograms" )
781 paths.append(
"-HLTAnalyzerEndpath" )
784 paths.append(
"-OfflineOutput" )
793 raise RuntimeError(
'Error: option "--paths %s" does not select any valid paths' % self.
config.paths)
809 if not self.
config.hilton:
820 self.
options[
'essources'].
append(
"-XMLIdealGeometryESSource" )
839 self.
options[
'esmodules'].
append(
"-CaloTowerHardcodeGeometryEP" )
840 self.
options[
'esmodules'].
append(
"-CastorHardcodeGeometryEP" )
843 self.
options[
'esmodules'].
append(
"-EcalElectronicsMappingBuilder" )
845 self.
options[
'esmodules'].
append(
"-EcalLaserCorrectionService" )
846 self.
options[
'esmodules'].
append(
"-EcalPreshowerGeometryEP" )
848 self.
options[
'esmodules'].
append(
"-HcalHardcodeGeometryEP" )
850 self.
options[
'esmodules'].
append(
"-MuonNumberingInitialization" )
851 self.
options[
'esmodules'].
append(
"-ParametrizedMagneticFieldProducer" )
854 self.
options[
'esmodules'].
append(
"-SiStripRecHitMatcherESProducer" )
855 self.
options[
'esmodules'].
append(
"-SiStripQualityESProducer" )
856 self.
options[
'esmodules'].
append(
"-StripCPEfromTrackAngleESProducer" )
857 self.
options[
'esmodules'].
append(
"-TrackerAdditionalParametersPerDetESModule" )
858 self.
options[
'esmodules'].
append(
"-TrackerDigiGeometryESModule" )
859 self.
options[
'esmodules'].
append(
"-TrackerGeometricDetESModule" )
860 self.
options[
'esmodules'].
append(
"-VolumeBasedMagneticFieldESProducer" )
863 self.
options[
'esmodules'].
append(
"-L1GtTriggerMaskAlgoTrigTrivialProducer" )
864 self.
options[
'esmodules'].
append(
"-L1GtTriggerMaskTechTrigTrivialProducer" )
865 self.
options[
'esmodules'].
append(
"-hltESPEcalTrigTowerConstituentsMapBuilder" )
866 self.
options[
'esmodules'].
append(
"-hltESPGlobalTrackingGeometryESProducer" )
867 self.
options[
'esmodules'].
append(
"-hltESPMuonDetLayerGeometryESProducer" )
868 self.
options[
'esmodules'].
append(
"-hltESPTrackerRecoGeometryESProducer" )
871 self.
options[
'esmodules'].
append(
"-CaloTowerGeometryFromDBEP" )
872 self.
options[
'esmodules'].
append(
"-CastorGeometryFromDBEP" )
873 self.
options[
'esmodules'].
append(
"-EcalBarrelGeometryFromDBEP" )
874 self.
options[
'esmodules'].
append(
"-EcalEndcapGeometryFromDBEP" )
875 self.
options[
'esmodules'].
append(
"-EcalPreshowerGeometryFromDBEP" )
880 self.
options[
'esmodules'].
append(
"-siPixelQualityESProducer" )
888 self.
options[
'modules'].
append(
"-hltOutputScoutingCaloMuon" )
891 if self.
config.fragment
or (self.
config.prescale
and (self.
config.prescale.lower() ==
'none')):
900 if len(filenames) > 255:
907 self.
data +=
" %s = cms.untracked.vstring%s\n" % (name, token_open)
908 for line
in filenames:
909 self.
data +=
" '%s',\n" % line
910 self.
data +=
" %s,\n" % (token_close)
915 if input[0:8] ==
'dataset:':
916 from .dasFileQuery
import dasFileQuery
922 files = input.split(
',')
935 self.
source = [
"file:RelVal_Raw_%s_DATA.root" % self.
config.type ]
938 self.
source = [
"file:RelVal_Raw_%s_MC.root" % self.
config.type ]
945 # source module (EDM inputs) 946 %(process)s.source = cms.Source( "PoolSource", 952 inputCommands = cms.untracked.vstring( def removeElementFromSequencesTasksAndPaths(self, label)
def __init__(self, configuration)
def splitter(iterator, n)
def addGlobalOptions(self)
def getSetupConfigurationFromDB(self)
def overrideProcessName(self)
def instrumentErrorEventType(self)
def replace(string, replacements)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
def expand_filenames(self, input)
def updateMessageLogger(self)
def overrideL1MenuXml(self)
def overrideGlobalTag(self)
def specificCustomize(self)
def consolidatePositiveList(elements)
def overrideParameters(self, module, parameters)
def instrumentOpenMode(self)
def getRawConfigurationFromDB(self)
def loadAdditionalConditions(self, comment, conditions)
def loadCffCommand(self, module)
static std::string join(char **cmd)
def loadCff(self, module)
def consolidateNegativeList(elements)
def instrumentTiming(self)
def expandWildcards(globs, collection)
def _fix_parameter(self, args)
def append_filenames(self, name, filenames)