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.online:
49 self.
labels[
'connect'] =
'frontier://FrontierProd' 51 self.
labels[
'connect'] =
'frontier://FrontierProd' 53 if self.config.prescale
and (self.config.prescale.lower() !=
'none'):
54 self.
labels[
'prescale'] = self.config.prescale
57 from confdbOfflineConverter
import OfflineConverter
58 self.
converter = OfflineConverter(version = self.config.menu.version, database = self.config.menu.database)
66 if not self.config.setup:
69 if ".py" in self.config.setup:
70 self.config.setupFile = self.config.setup.split(
".py")[0]
72 args = [
'--configName', self.config.setup ]
73 args.append(
'--noedsources')
74 args.append(
'--nopaths')
75 for key, vals
in self.options.iteritems():
77 args.extend((
'--'+key,
','.
join(vals)))
79 data, err = self.converter.query( *args )
80 if 'ERROR' in err
or 'Exhausted Resultset' in err
or 'CONFIG_NOT_FOUND' in err:
81 sys.stderr.write(
"%s: error while retrieving the HLT setup menu\n\n" % os.path.basename(sys.argv[0]))
82 sys.stderr.write(err +
"\n\n")
84 self.config.setupFile =
"setup_"+self.config.setup[1:].
replace(
"/",
"_")+
"_cff" 85 file(self.config.setupFile+
".py",
"w+").
write(
"# This file is automatically generated by hltGetConfiguration.\n" + data)
88 if self.config.menu.run:
89 args = [
'--runNumber', self.config.menu.run]
91 args = [
'--configName', self.config.menu.name ]
92 args.append(
'--noedsources')
93 for key, vals
in self.options.iteritems():
95 args.extend((
'--'+key,
','.
join(vals)))
97 data, err = self.converter.query( *args )
98 if 'ERROR' in err
or 'Exhausted Resultset' in err
or 'CONFIG_NOT_FOUND' in err:
99 sys.stderr.write(
"%s: error while retrieving the HLT menu\n\n" % os.path.basename(sys.argv[0]))
100 sys.stderr.write(err +
"\n\n")
105 if self.config.menu.run:
106 args = [
'--runNumber', self.config.menu.run]
108 args = [
'--configName', self.config.menu.name]
118 data, err = self.converter.query( *args )
119 if 'ERROR' in err
or 'Exhausted Resultset' in err
or 'CONFIG_NOT_FOUND' in err:
120 sys.stderr.write(
"%s: error while retrieving the list of paths from the HLT menu\n\n" % os.path.basename(sys.argv[0]))
121 sys.stderr.write(err +
"\n\n")
123 filter = re.compile(
r' *= *cms.(End)?Path.*')
124 paths = [ filter.sub(
'', line)
for line
in data.splitlines()
if filter.search(line) ]
139 filter = re.compile(
r'^' + glob.replace(
'?',
'.').
replace(
'*',
'.*').
replace(
'[!',
'[^') +
r'$')
140 matches.extend( negate + element
for element
in collection
if filter.match(element) )
149 for element
in elements:
150 if element[0] ==
'-':
151 result.add( element )
153 result.discard(
'-' + element )
154 return sorted( element
for element
in result )
161 for element
in elements:
162 if element[0] ==
'-':
163 result.discard( element[1:] )
165 result.add( element )
166 return sorted( element
for element
in result )
172 if self.config.fragment:
173 self.
data = re.sub(
r'\bprocess\b',
'fragment', self.
data )
174 self.
data = re.sub(
r'\bProcess\b',
'ProcessFragment', self.
data )
181 if self.config.fragment:
183 # add specific customizations 184 from HLTrigger.Configuration.customizeHLTforALL import customizeHLTforAll 185 fragment = customizeHLTforAll(fragment,"%s") 186 """ % (self.config.type)
188 if self.config.type==
"Fake":
192 _gtData =
"auto:"+prefix+
"_hlt_"+self.config.type
193 _gtMc =
"auto:"+prefix+
"_mc_" +self.config.type
195 # add specific customizations 197 _customInfo['menuType' ]= "%s" 198 _customInfo['globalTags']= {} 199 _customInfo['globalTags'][True ] = "%s" 200 _customInfo['globalTags'][False] = "%s" 201 _customInfo['inputFiles']={} 202 _customInfo['inputFiles'][True] = "file:RelVal_Raw_%s_DATA.root" 203 _customInfo['inputFiles'][False] = "file:RelVal_Raw_%s_MC.root" 204 _customInfo['maxEvents' ]= %s 205 _customInfo['globalTag' ]= "%s" 206 _customInfo['inputFile' ]= %s 207 _customInfo['realData' ]= %s 208 from HLTrigger.Configuration.customizeHLTforALL import customizeHLTforAll 209 %%(process)s = customizeHLTforAll(%%(process)s,"%s",_customInfo) 210 """ % (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)
213 from HLTrigger.Configuration.customizeHLTforCMSSW import customizeHLTforCMSSW 214 %%(process)s = customizeHLTforCMSSW(%%(process)s,"%s") 215 """ % (self.config.type)
219 # Eras-based customisations 220 from HLTrigger.Configuration.Eras import modifyHLTforEras 221 modifyHLTforEras(%(process)s) 224 if self.config.customise:
226 self.
data +=
"#User-defined customization functions\n" 227 for customise
in self.config.customise.split(
","):
228 customiseValues = customise.split(
".")
229 if len(customiseValues)>=3:
raise Exception(
"--customise option cannot contain more than one dot.")
230 if len(customiseValues)==1:
231 customiseValues.append(
"customise")
232 customiseValues[0] = customiseValues[0].
replace(
"/",
".")
233 self.
data +=
"from "+customiseValues[0]+
" import "+customiseValues[1]+
"\n" 234 self.
data +=
"process = "+customiseValues[1]+
"(process)\n" 240 if not self.config.fragment:
244 if self.config.type
in (
'HIon', ):
246 if not self.config.fragment:
247 self.
_fix_parameter( type =
'InputTag', value =
'rawDataCollector', replace =
'rawDataRepacker')
270 if self.config.fragment:
272 # dummyfy hltGetConditions in cff's 273 if 'hltGetConditions' in %(dict)s and 'HLTriggerFirstPath' in %(dict)s : 274 %(process)s.hltDummyConditions = cms.EDFilter( "HLTBool", 275 result = cms.bool( True ) 277 %(process)s.HLTriggerFirstPath.replace(%(process)s.hltGetConditions,%(process)s.hltDummyConditions) 330 # limit the number of events to be processed 331 %%(process)s.maxEvents = cms.untracked.PSet( 332 input = cms.untracked.int32( %d ) 334 """ % self.config.events
337 # enable TrigReport, TimeReport and MultiThreading 338 %(process)s.options = cms.untracked.PSet( 339 wantSummary = cms.untracked.bool( True ), 340 numberOfThreads = cms.untracked.uint32( 4 ), 341 numberOfStreams = cms.untracked.uint32( 0 ), 342 sizeOfStackForThreadsInKB = cms.untracked.uint32( 10*1024 ) 348 name: parameter name (optional) 349 type: parameter type (look for tracked and untracked variants) 350 value: original value 351 replace: replacement value 355 r'%(name)s = cms(?P<tracked>(?:\.untracked)?)\.%(type)s\( (?P<quote>["\']?)%(value)s(?P=quote)' % args,
356 r'%(name)s = cms\g<tracked>.%(type)s( \g<quote>%(replace)s\g<quote>' % args,
360 r'cms(?P<tracked>(?:\.untracked)?)\.%(type)s\( (?P<quote>["\']?)%(value)s(?P=quote)' % args,
361 r'cms\g<tracked>.%(type)s( \g<quote>%(replace)s\g<quote>' % args,
368 if self.
options[
'paths'][0][0] ==
'-':
370 for minuspath
in self.
options[
'paths']:
372 self.
data = re.sub(
r' cms.PSet\( pathName = cms.string\( "%s" \),\n prescales = cms.vuint32\( .* \)\n \),?\n' % path,
'', self.
data)
376 if path
not in self.
options[
'paths']:
377 self.
data = re.sub(
r' cms.PSet\( pathName = cms.string\( "%s" \),\n prescales = cms.vuint32\( .* \)\n \),?\n' % path,
'', self.
data)
379 if self.config.prescale
and (self.config.prescale.lower() !=
'none'):
382 # force the use of a specific HLT prescale column 383 if 'PrescaleService' in %(dict)s: 384 %(process)s.PrescaleService.forceDefault = True 385 %(process)s.PrescaleService.lvl1DefaultLabel = '%(prescale)s' 392 filters = [ match[1]
for match
in re.findall(
r'(process\.)?\b(\w+) = cms.EDFilter', self.
data) ]
393 re_sequence = re.compile(
r'cms\.(Path|Sequence)\((.*)\)' )
395 self.
data = re_sequence.sub(
lambda line: re.sub(
r'cms\.ignore *\( *((process\.)?\b(\w+)) *\)',
r'\1', line.group(0) ), self.
data )
396 self.
data = re_sequence.sub(
lambda line: re.sub(
r'~',
'', line.group(0) ), self.
data )
398 for some
in splitter(filters, 1000):
399 re_filters = re.compile(
r'\b((process\.)?(' +
r'|'.
join(some) +
r'))\b' )
400 self.
data = re_sequence.sub(
lambda line: re_filters.sub(
r'cms.ignore( \1 )', line.group(0) ), self.
data )
404 if self.config.errortype:
406 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'1', replace =
'0')
407 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'2', replace =
'0')
408 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'3', replace =
'0')
424 # override the GlobalTag, connection string and pfnPrefix 425 if 'GlobalTag' in %(dict)s: 429 if not self.config.data
and not self.config.globaltag:
430 if self.config.type
in globalTag:
431 self.config.globaltag = globalTag[self.config.type]
433 self.config.globaltag = globalTag[
'GRun']
436 if self.config.l1.override:
437 self.config.l1.tag = self.config.l1.override
438 self.config.l1.record =
'L1TUtmTriggerMenuRcd' 439 self.config.l1.connect =
'%(connect)s/CMS_CONDITIONS' 440 self.config.l1.label =
'' 441 if not self.config.l1.snapshotTime:
442 self.config.l1.snapshotTime =
'9999-12-31 23:59:59.000' 443 self.config.l1cond =
'%(tag)s,%(record)s,%(connect)s,%(label)s,%(snapshotTime)s' % self.config.l1.__dict__
445 self.config.l1cond =
None 447 if self.config.globaltag
or self.config.l1cond:
448 text +=
" from Configuration.AlCa.GlobalTag import GlobalTag as customiseGlobalTag\n" 449 text +=
" %(process)s.GlobalTag = customiseGlobalTag(%(process)s.GlobalTag" 450 if self.config.globaltag:
451 text +=
", globaltag = %s" % repr(self.config.globaltag)
452 if self.config.l1cond:
453 text +=
", conditions = %s" % repr(self.config.l1cond)
456 text +=
""" %(process)s.GlobalTag.connect = '%(connect)s/CMS_CONDITIONS' 468 if self.config.l1Xml.XmlFile:
470 # override the GlobalTag's L1T menu from an Xml file 471 from HLTrigger.Configuration.CustomConfigs import L1XML 472 %%(process)s = L1XML(%%(process)s,"%s") 473 """ % (self.config.l1Xml.XmlFile)
478 if self.config.emulator:
480 # run the Full L1T emulator, then repack the data into a new RAW collection, to be used by the HLT 481 from HLTrigger.Configuration.CustomConfigs import L1REPACK 482 %%(process)s = L1REPACK(%%(process)s,"%s") 483 """ % (self.config.emulator)
489 r'\b(process\.)?hltOutput(\w+) *= *cms\.OutputModule\( *"ShmStreamConsumer" *,',
490 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 ),',
494 if not self.config.fragment
and self.config.output ==
'full':
497 # add a single "keep *" output 498 %(process)s.hltOutputFULL = cms.OutputModule( "PoolOutputModule", 499 fileName = cms.untracked.string( "outputFULL.root" ), 500 fastCloning = cms.untracked.bool( False ), 501 dataset = cms.untracked.PSet( 502 dataTier = cms.untracked.string( 'RECO' ), 503 filterName = cms.untracked.string( '' ) 505 outputCommands = cms.untracked.vstring( 'keep *' ) 507 %(process)s.FULLOutput = cms.EndPath( %(process)s.hltOutputFULL ) 511 if self.config.eras
is None:
513 self.
data = re.sub(
r'process = cms.Process\( *"\w+"',
'from Configuration.StandardSequences.Eras import eras\n\g<0>, '+
', '.
join(
'eras.' + era
for era
in self.config.eras.split(
',')), self.
data)
517 if self.config.setup
is None:
519 processLine = self.data.find(
"\n",self.data.find(
"cms.Process"))
520 self.
data = self.
data[:processLine]+
'\nprocess.load("%s")'%self.config.setupFile+self.
data[processLine:]
524 if self.config.name
is None:
528 self.config.name = self.config.name.replace(
"_",
"")
531 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)
535 # adapt HLT modules to the correct process name 536 if 'hltTrigReport' in %%(dict)s: 537 %%(process)s.hltTrigReport.HLTriggerResults = cms.InputTag( 'TriggerResults', '', '%(name)s' ) 539 if 'hltPreExpressCosmicsOutputSmart' in %%(dict)s: 540 %%(process)s.hltPreExpressCosmicsOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' ) 542 if 'hltPreExpressOutputSmart' in %%(dict)s: 543 %%(process)s.hltPreExpressOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' ) 545 if 'hltPreDQMForHIOutputSmart' in %%(dict)s: 546 %%(process)s.hltPreDQMForHIOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' ) 548 if 'hltPreDQMForPPOutputSmart' in %%(dict)s: 549 %%(process)s.hltPreDQMForPPOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' ) 551 if 'hltPreHLTDQMResultsOutputSmart' in %%(dict)s: 552 %%(process)s.hltPreHLTDQMResultsOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' ) 554 if 'hltPreHLTDQMOutputSmart' in %%(dict)s: 555 %%(process)s.hltPreHLTDQMOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' ) 557 if 'hltPreHLTMONOutputSmart' in %%(dict)s: 558 %%(process)s.hltPreHLTMONOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' ) 560 if 'hltDQMHLTScalers' in %%(dict)s: 561 %%(process)s.hltDQMHLTScalers.triggerResults = cms.InputTag( 'TriggerResults', '', '%(name)s' ) 562 %%(process)s.hltDQMHLTScalers.processname = '%(name)s' 564 if 'hltDQML1SeedLogicScalers' in %%(dict)s: 565 %%(process)s.hltDQML1SeedLogicScalers.processname = '%(name)s' 566 """ % self.config.__dict__
572 if 'MessageLogger' in %(dict)s: 573 %(process)s.MessageLogger.categories.append('TriggerSummaryProducerAOD') 574 %(process)s.MessageLogger.categories.append('L1GtTrigReport') 575 %(process)s.MessageLogger.categories.append('L1TGlobalSummary') 576 %(process)s.MessageLogger.categories.append('HLTrigReport') 577 %(process)s.MessageLogger.categories.append('FastReport') 585 if 'GlobalTag' in %%(dict)s: 587 for condition
in conditions:
588 self.
data +=
""" %%(process)s.GlobalTag.toGet.append( 590 record = cms.string( '%(record)s' ), 591 tag = cms.string( '%(tag)s' ), 592 label = cms.untracked.string( '%(label)s' ), 593 connect = cms.untracked.string( '%(connect)s' ) 601 if self.config.fragment:
602 return 'from %s import *\n' % module
604 return 'process.load( "%s" )\n' % module
612 self.
data +=
"if '%s' in %%(dict)s:\n" % module
613 for (parameter, value)
in parameters:
614 self.
data +=
" %%(process)s.%s.%s = %s\n" % (module, parameter, value)
620 if self.config.timing:
622 # instrument the menu with the modules and EndPath needed for timing studies 625 self.
data +=
'\n# configure the FastTimerService\n' 626 self.
loadCff(
'HLTrigger.Timer.FastTimerService_cfi')
628 self.
data +=
"""# print a text summary at the end of the job 629 %(process)s.FastTimerService.printEventSummary = False 630 %(process)s.FastTimerService.printRunSummary = False 631 %(process)s.FastTimerService.printJobSummary = True 634 %(process)s.FastTimerService.enableDQM = True 636 # enable per-path DQM plots (starting with CMSSW 9.2.3-patch2) 637 %(process)s.FastTimerService.enableDQMbyPath = True 639 # enable per-module DQM plots 640 %(process)s.FastTimerService.enableDQMbyModule = True 642 # enable per-event DQM plots vs lumisection 643 %(process)s.FastTimerService.enableDQMbyLumiSection = True 644 %(process)s.FastTimerService.dqmLumiSectionsRange = 2500 646 # set the time resolution of the DQM plots 647 %(process)s.FastTimerService.dqmTimeRange = 2000. 648 %(process)s.FastTimerService.dqmTimeResolution = 10. 649 %(process)s.FastTimerService.dqmPathTimeRange = 1000. 650 %(process)s.FastTimerService.dqmPathTimeResolution = 5. 651 %(process)s.FastTimerService.dqmModuleTimeRange = 200. 652 %(process)s.FastTimerService.dqmModuleTimeResolution = 1. 654 # set the base DQM folder for the plots 655 %(process)s.FastTimerService.dqmPath = 'HLT/TimerService' 656 %(process)s.FastTimerService.enableDQMbyProcesses = False 661 if not self.config.hilton:
663 if 'hltDQMFileSaver' in self.
data:
664 self.
data = re.sub(
r'\b(process\.)?hltDQMFileSaver \+ ',
'', self.
data)
665 self.
data = re.sub(
r' \+ \b(process\.)?hltDQMFileSaver',
'', self.
data)
666 self.
data = re.sub(
r'\b(process\.)?hltDQMFileSaver',
'', self.
data)
669 dqmstore =
"\n# load the DQMStore and DQMRootOutputModule\n" 671 dqmstore +=
"%(process)s.DQMStore.enableMultiThread = True\n" 673 %(process)s.dqmOutput = cms.OutputModule("DQMRootOutputModule", 674 fileName = cms.untracked.string("DQMIO.root") 678 empty_path = re.compile(
r'.*\b(process\.)?DQMOutput = cms\.EndPath\( *\).*')
679 other_path = re.compile(
r'(.*\b(process\.)?DQMOutput = cms\.EndPath\()(.*)')
680 if empty_path.search(self.
data):
682 self.
data = empty_path.sub(dqmstore +
'\n%(process)s.DQMOutput = cms.EndPath( %(process)s.dqmOutput )\n', self.
data)
683 elif other_path.search(self.
data):
685 self.
data = other_path.sub(dqmstore +
r'\g<1> %(process)s.dqmOutput +\g<3>', self.
data)
688 self.
data += dqmstore
689 self.
data +=
'\n%(process)s.DQMOutput = cms.EndPath( %(process)s.dqmOutput )\n' 694 sys.stderr.write(
'Path selection:\n')
696 sys.stderr.write(
'\t%s\n' % path)
697 sys.stderr.write(
'\n\n')
702 if self.config.paths:
704 paths = self.config.paths.split(
',')
709 if self.config.fragment
or self.config.output
in (
'none',
'full'):
711 if self.config.paths:
716 paths.append(
"-*Output" )
717 paths.append(
"-RatesMonitoring")
718 paths.append(
"-DQMHistograms")
719 elif self.config.output ==
'minimal':
721 if self.config.paths:
722 paths.append(
"HLTDQMResultsOutput" )
724 paths.append(
"-*Output" )
725 paths.append(
"-RatesMonitoring")
726 paths.append(
"-DQMHistograms")
727 paths.append(
"HLTDQMResultsOutput" )
730 if self.config.paths:
731 paths.append(
"*Output" )
736 if self.config.profiling:
737 paths.append(
"-HLTAnalyzerEndpath" )
740 paths.append(
"-OfflineOutput" )
745 if self.config.paths:
749 raise RuntimeError(
'Error: option "--paths %s" does not select any valid paths' % self.config.paths)
765 if not self.config.hilton:
771 if self.config.fragment:
775 self.
options[
'essources'].
append(
"-XMLIdealGeometryESSource" )
780 self.
options[
'esmodules'].
append(
"-AutoMagneticFieldESProducer" )
795 self.
options[
'esmodules'].
append(
"-CaloTowerHardcodeGeometryEP" )
796 self.
options[
'esmodules'].
append(
"-CastorHardcodeGeometryEP" )
799 self.
options[
'esmodules'].
append(
"-EcalElectronicsMappingBuilder" )
801 self.
options[
'esmodules'].
append(
"-EcalLaserCorrectionService" )
802 self.
options[
'esmodules'].
append(
"-EcalPreshowerGeometryEP" )
803 self.
options[
'esmodules'].
append(
"-HcalHardcodeGeometryEP" )
805 self.
options[
'esmodules'].
append(
"-MuonNumberingInitialization" )
806 self.
options[
'esmodules'].
append(
"-ParametrizedMagneticFieldProducer" )
809 self.
options[
'esmodules'].
append(
"-SiStripRecHitMatcherESProducer" )
810 self.
options[
'esmodules'].
append(
"-SiStripQualityESProducer" )
811 self.
options[
'esmodules'].
append(
"-StripCPEfromTrackAngleESProducer" )
812 self.
options[
'esmodules'].
append(
"-TrackerDigiGeometryESModule" )
813 self.
options[
'esmodules'].
append(
"-TrackerGeometricDetESModule" )
814 self.
options[
'esmodules'].
append(
"-VolumeBasedMagneticFieldESProducer" )
817 self.
options[
'esmodules'].
append(
"-L1GtTriggerMaskAlgoTrigTrivialProducer" )
818 self.
options[
'esmodules'].
append(
"-L1GtTriggerMaskTechTrigTrivialProducer" )
819 self.
options[
'esmodules'].
append(
"-hltESPEcalTrigTowerConstituentsMapBuilder" )
820 self.
options[
'esmodules'].
append(
"-hltESPGlobalTrackingGeometryESProducer" )
821 self.
options[
'esmodules'].
append(
"-hltESPMuonDetLayerGeometryESProducer" )
822 self.
options[
'esmodules'].
append(
"-hltESPTrackerRecoGeometryESProducer" )
825 self.
options[
'esmodules'].
append(
"-CaloTowerGeometryFromDBEP" )
826 self.
options[
'esmodules'].
append(
"-CastorGeometryFromDBEP" )
827 self.
options[
'esmodules'].
append(
"-EcalBarrelGeometryFromDBEP" )
828 self.
options[
'esmodules'].
append(
"-EcalEndcapGeometryFromDBEP" )
829 self.
options[
'esmodules'].
append(
"-EcalPreshowerGeometryFromDBEP" )
840 if self.config.fragment
or (self.config.prescale
and (self.config.prescale.lower() ==
'none')):
843 if self.config.fragment
or self.config.timing:
848 if len(filenames) > 255:
855 self.
data +=
" %s = cms.untracked.vstring%s\n" % (name, token_open)
856 for line
in filenames:
857 self.
data +=
" '%s',\n" % line
858 self.
data +=
" %s,\n" % (token_close)
863 if input[0:8] ==
'dataset:':
864 from dasFileQuery
import dasFileQuery
870 files = self.config.input.split(
',')
874 if self.config.input:
877 elif self.config.online:
879 self.
source = [
"file:/tmp/InputCollection.root" ]
880 elif self.config.data:
882 self.
source = [
"file:RelVal_Raw_%s_DATA.root" % self.config.type ]
885 self.
source = [
"file:RelVal_Raw_%s_MC.root" % self.config.type ]
887 if self.config.parent:
892 %(process)s.source = cms.Source( "PoolSource", 898 inputCommands = cms.untracked.vstring( def __init__(self, configuration)
def splitter(iterator, n)
def addGlobalOptions(self)
def getSetupConfigurationFromDB(self)
def overrideProcessName(self)
def instrumentErrorEventType(self)
def replace(string, replacements)
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)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run