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://(proxyurl=http://localhost:3128)(serverurl=http://localhost:8000/FrontierOnProd)(serverurl=http://localhost:8000/FrontierOnProd)(retrieve-ziplevel=0)'
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 self.config.menu.run:
67 args = [
'--runNumber', self.config.menu.run]
69 args = [
'--configName', self.config.menu.name ]
70 args.append(
'--noedsources')
71 for key, vals
in self.options.iteritems():
73 args.extend((
'--'+key,
','.
join(vals)))
75 data, err = self.converter.query( *args )
76 if 'ERROR' in err
or 'Exhausted Resultset' in err
or 'CONFIG_NOT_FOUND' in err:
77 sys.stderr.write(
"%s: error while retrieving the HLT menu\n\n" % os.path.basename(sys.argv[0]))
78 sys.stderr.write(err +
"\n\n")
84 if self.config.menu.run:
85 args = [
'--runNumber', self.config.menu.run]
87 args = [
'--configName', self.config.menu.name]
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 list of paths from the HLT menu\n\n" % os.path.basename(sys.argv[0]))
100 sys.stderr.write(err +
"\n\n")
102 filter = re.compile(
r' *= *cms.(End)?Path.*')
103 paths = [ filter.sub(
'', line)
for line
in data.splitlines()
if filter.search(line) ]
118 filter = re.compile(
r'^' + glob.replace(
'?',
'.').
replace(
'*',
'.*').
replace(
'[!',
'[^') +
r'$')
119 matches.extend( negate + element
for element
in collection
if filter.match(element) )
128 for element
in elements:
129 if element[0] ==
'-':
130 result.add( element )
132 result.discard(
'-' + element )
133 return sorted( element
for element
in result )
140 for element
in elements:
141 if element[0] ==
'-':
142 result.discard( element[1:] )
144 result.add( element )
145 return sorted( element
for element
in result )
151 if self.config.fragment:
152 self.
data = re.sub(
r'\bprocess\b',
'fragment', self.
data )
153 self.
data = re.sub(
r'\bProcess\b',
'ProcessFragment', self.
data )
160 if self.config.fragment:
162 # add specific customizations
163 from HLTrigger.Configuration.customizeHLTforALL import customizeHLTforAll
164 fragment = customizeHLTforAll(fragment,"%s")
165 """ % (self.config.type)
167 if self.config.type==
"Fake":
171 _gtData =
"auto:"+prefix+
"_hlt_"+self.config.type
172 _gtMc =
"auto:"+prefix+
"_mc_" +self.config.type
174 # add specific customizations
176 _customInfo['menuType' ]= "%s"
177 _customInfo['globalTags']= {}
178 _customInfo['globalTags'][True ] = "%s"
179 _customInfo['globalTags'][False] = "%s"
180 _customInfo['inputFiles']={}
181 _customInfo['inputFiles'][True] = "file:RelVal_Raw_%s_DATA.root"
182 _customInfo['inputFiles'][False] = "file:RelVal_Raw_%s_MC.root"
183 _customInfo['maxEvents' ]= %s
184 _customInfo['globalTag' ]= "%s"
185 _customInfo['inputFile' ]= %s
186 _customInfo['realData' ]= %s
187 from HLTrigger.Configuration.customizeHLTforALL import customizeHLTforAll
188 %%(process)s = customizeHLTforAll(%%(process)s,"%s",_customInfo)
189 """ % (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)
192 from HLTrigger.Configuration.customizeHLTforCMSSW import customizeHLTforCMSSW
193 %%(process)s = customizeHLTforCMSSW(%%(process)s,"%s")
194 """ % (self.config.type)
200 if not self.config.fragment:
204 if self.config.type
in (
'HIon', ):
206 if not self.config.fragment:
207 self.
_fix_parameter( type =
'InputTag', value =
'rawDataCollector', replace =
'rawDataRepacker')
227 if self.config.fragment:
229 # dummyfy hltGetConditions in cff's
230 if 'hltGetConditions' in %(dict)s and 'HLTriggerFirstPath' in %(dict)s :
231 %(process)s.hltDummyConditions = cms.EDFilter( "HLTBool",
232 result = cms.bool( True )
234 %(process)s.HLTriggerFirstPath.replace(%(process)s.hltGetConditions,%(process)s.hltDummyConditions)
284 # limit the number of events to be processed
285 %%(process)s.maxEvents = cms.untracked.PSet(
286 input = cms.untracked.int32( %d )
288 """ % self.config.events
290 if not self.config.profiling:
292 # enable the TrigReport and TimeReport
293 %(process)s.options = cms.untracked.PSet(
294 wantSummary = cms.untracked.bool( True )
301 name: parameter name (optional)
302 type: parameter type (look for tracked and untracked variants)
303 value: original value
304 replace: replacement value
308 r'%(name)s = cms(?P<tracked>(?:\.untracked)?)\.%(type)s\( (?P<quote>["\']?)%(value)s(?P=quote)' % args,
309 r'%(name)s = cms\g<tracked>.%(type)s( \g<quote>%(replace)s\g<quote>' % args,
313 r'cms(?P<tracked>(?:\.untracked)?)\.%(type)s\( (?P<quote>["\']?)%(value)s(?P=quote)' % args,
314 r'cms\g<tracked>.%(type)s( \g<quote>%(replace)s\g<quote>' % args,
321 if self.
options[
'paths'][0][0] ==
'-':
323 for minuspath
in self.
options[
'paths']:
325 self.
data = re.sub(
r' cms.PSet\( pathName = cms.string\( "%s" \),\n prescales = cms.vuint32\( .* \)\n \),?\n' % path,
'', self.
data)
329 if path
not in self.
options[
'paths']:
330 self.
data = re.sub(
r' cms.PSet\( pathName = cms.string\( "%s" \),\n prescales = cms.vuint32\( .* \)\n \),?\n' % path,
'', self.
data)
332 if self.config.prescale
and (self.config.prescale.lower() !=
'none'):
335 # force the use of a specific HLT prescale column
336 if 'PrescaleService' in %(dict)s:
337 %(process)s.PrescaleService.forceDefault = True
338 %(process)s.PrescaleService.lvl1DefaultLabel = '%(prescale)s'
345 filters = [ match[1]
for match
in re.findall(
r'(process\.)?\b(\w+) = cms.EDFilter', self.
data) ]
346 re_sequence = re.compile(
r'cms\.(Path|Sequence)\((.*)\)' )
348 self.
data = re_sequence.sub(
lambda line: re.sub(
r'cms\.ignore *\( *((process\.)?\b(\w+)) *\)',
r'\1', line.group(0) ), self.
data )
349 self.
data = re_sequence.sub(
lambda line: re.sub(
r'~',
'', line.group(0) ), self.
data )
351 for some
in splitter(filters, 1000):
352 re_filters = re.compile(
r'\b((process\.)?(' +
r'|'.
join(some) +
r'))\b' )
353 self.
data = re_sequence.sub(
lambda line: re_filters.sub(
r'cms.ignore( \1 )', line.group(0) ), self.
data )
357 if self.config.errortype:
359 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'1', replace =
'0')
360 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'2', replace =
'0')
361 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'3', replace =
'0')
377 # override the GlobalTag, connection string and pfnPrefix
378 if 'GlobalTag' in %(dict)s:
382 if not self.config.data
and not self.config.globaltag:
383 if self.config.type
in globalTag:
384 self.config.globaltag = globalTag[self.config.type]
386 self.config.globaltag = globalTag[
'GRun']
389 if self.config.l1.override:
390 self.config.l1.tag = self.config.l1.override
391 self.config.l1.record =
'L1TUtmTriggerMenuRcd'
392 self.config.l1.connect =
'%(connect)s/CMS_CONDITIONS'
393 self.config.l1.label =
''
394 if not self.config.l1.snapshotTime:
395 self.config.l1.snapshotTime =
'9999-12-31 23:59:59.000'
396 self.config.l1cond =
'%(tag)s,%(record)s,%(connect)s,%(label)s,%(snapshotTime)s' % self.config.l1.__dict__
398 self.config.l1cond =
None
400 if self.config.globaltag
or self.config.l1cond:
401 text +=
" from Configuration.AlCa.GlobalTag import GlobalTag as customiseGlobalTag\n"
402 text +=
" %(process)s.GlobalTag = customiseGlobalTag(%(process)s.GlobalTag"
403 if self.config.globaltag:
404 text +=
", globaltag = %s" % repr(self.config.globaltag)
405 if self.config.l1cond:
406 text +=
", conditions = %s" % repr(self.config.l1cond)
409 text +=
""" %(process)s.GlobalTag.connect = '%(connect)s/CMS_CONDITIONS'
410 %(process)s.GlobalTag.pfnPrefix = cms.untracked.string('%(connect)s/')
411 for pset in %(process)s.GlobalTag.toGet.value():
412 pset.connect = pset.connect.value().replace('frontier://FrontierProd/', '%(connect)s/')
413 # fix for multi-run processing
414 %(process)s.GlobalTag.RefreshEachRun = cms.untracked.bool( False )
415 %(process)s.GlobalTag.ReconnectEachRun = cms.untracked.bool( False )
421 if self.config.l1Xml.XmlFile:
423 # override the GlobalTag's L1T menu from an Xml file
424 from HLTrigger.Configuration.CustomConfigs import L1XML
425 %%(process)s = L1XML(%%(process)s,"%s")
426 """ % (self.config.l1Xml.XmlFile)
431 if self.config.emulator:
433 # run the Full L1T emulator, then repack the data into a new RAW collection, to be used by the HLT
434 from HLTrigger.Configuration.CustomConfigs import L1REPACK
435 %%(process)s = L1REPACK(%%(process)s,"%s")
436 """ % (self.config.emulator)
442 r'\b(process\.)?hltOutput(\w+) *= *cms\.OutputModule\( *"ShmStreamConsumer" *,',
443 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 ),',
447 if not self.config.fragment
and self.config.output ==
'full':
450 # add a single "keep *" output
451 %(process)s.hltOutputFULL = cms.OutputModule( "PoolOutputModule",
452 fileName = cms.untracked.string( "outputFULL.root" ),
453 fastCloning = cms.untracked.bool( False ),
454 dataset = cms.untracked.PSet(
455 dataTier = cms.untracked.string( 'RECO' ),
456 filterName = cms.untracked.string( '' )
458 outputCommands = cms.untracked.vstring( 'keep *' )
460 %(process)s.FULLOutput = cms.EndPath( %(process)s.hltOutputFULL )
466 if self.config.name
is None:
470 self.config.name = self.config.name.replace(
"_",
"")
473 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)
477 # adapt HLT modules to the correct process name
478 if 'hltTrigReport' in %%(dict)s:
479 %%(process)s.hltTrigReport.HLTriggerResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
481 if 'hltPreExpressCosmicsOutputSmart' in %%(dict)s:
482 %%(process)s.hltPreExpressCosmicsOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
484 if 'hltPreExpressOutputSmart' in %%(dict)s:
485 %%(process)s.hltPreExpressOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
487 if 'hltPreDQMForHIOutputSmart' in %%(dict)s:
488 %%(process)s.hltPreDQMForHIOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
490 if 'hltPreDQMForPPOutputSmart' in %%(dict)s:
491 %%(process)s.hltPreDQMForPPOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
493 if 'hltPreHLTDQMResultsOutputSmart' in %%(dict)s:
494 %%(process)s.hltPreHLTDQMResultsOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
496 if 'hltPreHLTDQMOutputSmart' in %%(dict)s:
497 %%(process)s.hltPreHLTDQMOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
499 if 'hltPreHLTMONOutputSmart' in %%(dict)s:
500 %%(process)s.hltPreHLTMONOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
502 if 'hltDQMHLTScalers' in %%(dict)s:
503 %%(process)s.hltDQMHLTScalers.triggerResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
504 %%(process)s.hltDQMHLTScalers.processname = '%(name)s'
506 if 'hltDQML1SeedLogicScalers' in %%(dict)s:
507 %%(process)s.hltDQML1SeedLogicScalers.processname = '%(name)s'
508 """ % self.config.__dict__
514 if 'MessageLogger' in %(dict)s:
515 %(process)s.MessageLogger.categories.append('TriggerSummaryProducerAOD')
516 %(process)s.MessageLogger.categories.append('L1GtTrigReport')
517 %(process)s.MessageLogger.categories.append('L1TGlobalSummary')
518 %(process)s.MessageLogger.categories.append('HLTrigReport')
519 %(process)s.MessageLogger.categories.append('FastReport')
527 if 'GlobalTag' in %%(dict)s:
529 for condition
in conditions:
530 self.
data +=
""" %%(process)s.GlobalTag.toGet.append(
532 record = cms.string( '%(record)s' ),
533 tag = cms.string( '%(tag)s' ),
534 label = cms.untracked.string( '%(label)s' ),
535 connect = cms.untracked.string( '%(connect)s' )
543 if self.config.fragment:
544 return 'from %s import *\n' % module
546 return 'process.load( "%s" )\n' % module
554 self.
data +=
"if '%s' in %%(dict)s:\n" % module
555 for (parameter, value)
in parameters:
556 self.
data +=
" %%(process)s.%s.%s = %s\n" % (module, parameter, value)
561 if self.config.profiling:
565 if not 'hltGetRaw' in self.
data:
568 %(process)s.hltGetRaw = cms.EDAnalyzer( "HLTGetRaw",
569 RawDataCollection = cms.InputTag( "rawDataCollector" )
573 if not 'hltGetConditions' in self.
data:
576 %(process)s.hltGetConditions = cms.EDAnalyzer( 'EventSetupRecordDataGetter',
577 verbose = cms.untracked.bool( False ),
582 if not 'hltBoolFalse' in self.
data:
585 %(process)s.hltBoolFalse = cms.EDFilter( "HLTBool",
586 result = cms.bool( False )
593 %(process)s.HLTriggerFirstPath = cms.Path( %(process)s.hltGetRaw + %(process)s.hltGetConditions + %(process)s.hltBoolFalse )
595 self.
data = re.sub(
r'.*cms\.(End)?Path.*', text +
r'\g<0>', self.
data, 1)
600 if self.config.timing:
602 # instrument the menu with the modules and EndPath needed for timing studies
605 if not 'FastTimerService' in self.
data:
606 self.
data +=
'\n# configure the FastTimerService\n'
607 self.
loadCff(
'HLTrigger.Timer.FastTimerService_cfi')
609 self.
data +=
'\n# configure the FastTimerService\n'
611 self.
data +=
"""# this is currently ignored in CMSSW 7.x, always using the real time clock
612 %(process)s.FastTimerService.useRealTimeClock = True
613 # enable specific features
614 %(process)s.FastTimerService.enableTimingPaths = True
615 %(process)s.FastTimerService.enableTimingModules = True
616 %(process)s.FastTimerService.enableTimingExclusive = True
617 # print a text summary at the end of the job
618 %(process)s.FastTimerService.enableTimingSummary = True
619 # skip the first path (disregard the time spent loading event and conditions data)
620 %(process)s.FastTimerService.skipFirstPath = True
622 %(process)s.FastTimerService.enableDQM = True
623 # enable most per-path DQM plots
624 %(process)s.FastTimerService.enableDQMbyPathActive = True
625 %(process)s.FastTimerService.enableDQMbyPathTotal = True
626 %(process)s.FastTimerService.enableDQMbyPathOverhead = False
627 %(process)s.FastTimerService.enableDQMbyPathDetails = True
628 %(process)s.FastTimerService.enableDQMbyPathCounters = True
629 %(process)s.FastTimerService.enableDQMbyPathExclusive = True
630 # disable per-module DQM plots
631 %(process)s.FastTimerService.enableDQMbyModule = False
632 %(process)s.FastTimerService.enableDQMbyModuleType = False
633 # enable per-event DQM sumary plots
634 %(process)s.FastTimerService.enableDQMSummary = True
635 # enable per-event DQM plots by lumisection
636 %(process)s.FastTimerService.enableDQMbyLumiSection = True
637 %(process)s.FastTimerService.dqmLumiSectionsRange = 2500
638 # set the time resolution of the DQM plots
639 %(process)s.FastTimerService.dqmTimeRange = 1000.
640 %(process)s.FastTimerService.dqmTimeResolution = 5.
641 %(process)s.FastTimerService.dqmPathTimeRange = 100.
642 %(process)s.FastTimerService.dqmPathTimeResolution = 0.5
643 %(process)s.FastTimerService.dqmModuleTimeRange = 40.
644 %(process)s.FastTimerService.dqmModuleTimeResolution = 0.2
645 # set the base DQM folder for the plots
646 %(process)s.FastTimerService.dqmPath = 'HLT/TimerService'
647 %(process)s.FastTimerService.enableDQMbyProcesses = True
652 if not self.config.hilton:
654 if 'hltDQMFileSaver' in self.
data:
655 self.
data = re.sub(
r'\b(process\.)?hltDQMFileSaver \+ ',
'', self.
data)
656 self.
data = re.sub(
r' \+ \b(process\.)?hltDQMFileSaver',
'', self.
data)
657 self.
data = re.sub(
r'\b(process\.)?hltDQMFileSaver',
'', self.
data)
660 dqmstore =
"\n# load the DQMStore and DQMRootOutputModule\n"
662 dqmstore +=
"%(process)s.DQMStore.enableMultiThread = True\n"
664 %(process)s.dqmOutput = cms.OutputModule("DQMRootOutputModule",
665 fileName = cms.untracked.string("DQMIO.root")
669 empty_path = re.compile(
r'.*\b(process\.)?DQMOutput = cms\.EndPath\( *\).*')
670 other_path = re.compile(
r'(.*\b(process\.)?DQMOutput = cms\.EndPath\()(.*)')
671 if empty_path.search(self.
data):
673 self.
data = empty_path.sub(dqmstore +
'\n%(process)s.DQMOutput = cms.EndPath( %(process)s.dqmOutput )\n', self.
data)
674 elif other_path.search(self.
data):
676 self.
data = other_path.sub(dqmstore +
r'\g<1> %(process)s.dqmOutput +\g<3>', self.
data)
679 self.
data += dqmstore
680 self.
data +=
'\n%(process)s.DQMOutput = cms.EndPath( %(process)s.dqmOutput )\n'
685 sys.stderr.write(
'Path selection:\n')
687 sys.stderr.write(
'\t%s\n' % path)
688 sys.stderr.write(
'\n\n')
693 if self.config.paths:
695 paths = self.config.paths.split(
',')
700 if self.config.fragment
or self.config.output
in (
'none',
'full'):
702 if self.config.paths:
707 paths.append(
"-*Output" )
708 paths.append(
"-RatesMonitoring")
709 paths.append(
"-DQMHistograms")
710 elif self.config.output ==
'minimal':
712 if self.config.paths:
713 paths.append(
"HLTDQMResultsOutput" )
715 paths.append(
"-*Output" )
716 paths.append(
"-RatesMonitoring")
717 paths.append(
"-DQMHistograms")
718 paths.append(
"HLTDQMResultsOutput" )
721 if self.config.paths:
722 paths.append(
"*Output" )
727 if self.config.profiling:
728 paths.append(
"-HLTriggerFirstPath" )
729 paths.append(
"-HLTAnalyzerEndpath" )
732 paths.append(
"-OfflineOutput" )
737 if self.config.paths:
741 raise RuntimeError(
'Error: option "--paths %s" does not select any valid paths' % self.config.paths)
757 if not self.config.hilton:
763 if self.config.fragment:
767 self.
options[
'essources'].
append(
"-XMLIdealGeometryESSource" )
772 self.
options[
'esmodules'].
append(
"-AutoMagneticFieldESProducer" )
787 self.
options[
'esmodules'].
append(
"-CaloTowerHardcodeGeometryEP" )
788 self.
options[
'esmodules'].
append(
"-CastorHardcodeGeometryEP" )
791 self.
options[
'esmodules'].
append(
"-EcalElectronicsMappingBuilder" )
793 self.
options[
'esmodules'].
append(
"-EcalLaserCorrectionService" )
794 self.
options[
'esmodules'].
append(
"-EcalPreshowerGeometryEP" )
795 self.
options[
'esmodules'].
append(
"-HcalHardcodeGeometryEP" )
797 self.
options[
'esmodules'].
append(
"-MuonNumberingInitialization" )
798 self.
options[
'esmodules'].
append(
"-ParametrizedMagneticFieldProducer" )
801 self.
options[
'esmodules'].
append(
"-SiStripRecHitMatcherESProducer" )
802 self.
options[
'esmodules'].
append(
"-SiStripQualityESProducer" )
803 self.
options[
'esmodules'].
append(
"-StripCPEfromTrackAngleESProducer" )
804 self.
options[
'esmodules'].
append(
"-TrackerDigiGeometryESModule" )
805 self.
options[
'esmodules'].
append(
"-TrackerGeometricDetESModule" )
806 self.
options[
'esmodules'].
append(
"-VolumeBasedMagneticFieldESProducer" )
809 self.
options[
'esmodules'].
append(
"-L1GtTriggerMaskAlgoTrigTrivialProducer" )
810 self.
options[
'esmodules'].
append(
"-L1GtTriggerMaskTechTrigTrivialProducer" )
811 self.
options[
'esmodules'].
append(
"-hltESPEcalTrigTowerConstituentsMapBuilder" )
812 self.
options[
'esmodules'].
append(
"-hltESPGlobalTrackingGeometryESProducer" )
813 self.
options[
'esmodules'].
append(
"-hltESPMuonDetLayerGeometryESProducer" )
814 self.
options[
'esmodules'].
append(
"-hltESPTrackerRecoGeometryESProducer" )
817 self.
options[
'esmodules'].
append(
"-CaloTowerGeometryFromDBEP" )
818 self.
options[
'esmodules'].
append(
"-CastorGeometryFromDBEP" )
819 self.
options[
'esmodules'].
append(
"-EcalBarrelGeometryFromDBEP" )
820 self.
options[
'esmodules'].
append(
"-EcalEndcapGeometryFromDBEP" )
821 self.
options[
'esmodules'].
append(
"-EcalPreshowerGeometryFromDBEP" )
832 if self.config.fragment
or (self.config.prescale
and (self.config.prescale.lower() ==
'none')):
835 if self.config.fragment
or self.config.timing:
840 if len(filenames) > 255:
847 self.
data +=
" %s = cms.untracked.vstring%s\n" % (name, token_open)
848 for line
in filenames:
849 self.
data +=
" '%s',\n" % line
850 self.
data +=
" %s,\n" % (token_close)
855 if input[0:8] ==
'dataset:':
856 from dasFileQuery
import dasFileQuery
862 files = self.config.input.split(
',')
866 if self.config.input:
869 elif self.config.online:
871 self.
source = [
"file:/tmp/InputCollection.root" ]
872 elif self.config.data:
874 self.
source = [
"file:RelVal_Raw_%s_DATA.root" % self.config.type ]
877 self.
source = [
"file:RelVal_Raw_%s_MC.root" % self.config.type ]
879 if self.config.parent:
884 %(process)s.source = cms.Source( "PoolSource",
890 inputCommands = cms.untracked.vstring(
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 getRawConfigurationFromDB
def loadAdditionalConditions
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