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 TrigReport, TimeReport and MultiThreading
293 %(process)s.options = cms.untracked.PSet(
294 wantSummary = cms.untracked.bool( True ),
295 numberOfThreads = cms.untracked.uint32( 4 ),
296 numberOfStreams = cms.untracked.uint32( 0 ),
297 sizeOfStackForThreadsInKB = cms.untracked.uint32( 10*1024 )
303 name: parameter name (optional)
304 type: parameter type (look for tracked and untracked variants)
305 value: original value
306 replace: replacement value
310 r'%(name)s = cms(?P<tracked>(?:\.untracked)?)\.%(type)s\( (?P<quote>["\']?)%(value)s(?P=quote)' % args,
311 r'%(name)s = cms\g<tracked>.%(type)s( \g<quote>%(replace)s\g<quote>' % args,
315 r'cms(?P<tracked>(?:\.untracked)?)\.%(type)s\( (?P<quote>["\']?)%(value)s(?P=quote)' % args,
316 r'cms\g<tracked>.%(type)s( \g<quote>%(replace)s\g<quote>' % args,
323 if self.
options[
'paths'][0][0] ==
'-':
325 for minuspath
in self.
options[
'paths']:
327 self.
data = re.sub(
r' cms.PSet\( pathName = cms.string\( "%s" \),\n prescales = cms.vuint32\( .* \)\n \),?\n' % path,
'', self.
data)
331 if path
not in self.
options[
'paths']:
332 self.
data = re.sub(
r' cms.PSet\( pathName = cms.string\( "%s" \),\n prescales = cms.vuint32\( .* \)\n \),?\n' % path,
'', self.
data)
334 if self.config.prescale
and (self.config.prescale.lower() !=
'none'):
337 # force the use of a specific HLT prescale column
338 if 'PrescaleService' in %(dict)s:
339 %(process)s.PrescaleService.forceDefault = True
340 %(process)s.PrescaleService.lvl1DefaultLabel = '%(prescale)s'
347 filters = [ match[1]
for match
in re.findall(
r'(process\.)?\b(\w+) = cms.EDFilter', self.
data) ]
348 re_sequence = re.compile(
r'cms\.(Path|Sequence)\((.*)\)' )
350 self.
data = re_sequence.sub(
lambda line: re.sub(
r'cms\.ignore *\( *((process\.)?\b(\w+)) *\)',
r'\1', line.group(0) ), self.
data )
351 self.
data = re_sequence.sub(
lambda line: re.sub(
r'~',
'', line.group(0) ), self.
data )
353 for some
in splitter(filters, 1000):
354 re_filters = re.compile(
r'\b((process\.)?(' +
r'|'.
join(some) +
r'))\b' )
355 self.
data = re_sequence.sub(
lambda line: re_filters.sub(
r'cms.ignore( \1 )', line.group(0) ), self.
data )
359 if self.config.errortype:
361 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'1', replace =
'0')
362 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'2', replace =
'0')
363 self.
_fix_parameter(name =
'SelectedTriggerType', type =
'int32', value =
'3', replace =
'0')
379 # override the GlobalTag, connection string and pfnPrefix
380 if 'GlobalTag' in %(dict)s:
384 if not self.config.data
and not self.config.globaltag:
385 if self.config.type
in globalTag:
386 self.config.globaltag = globalTag[self.config.type]
388 self.config.globaltag = globalTag[
'GRun']
391 if self.config.l1.override:
392 self.config.l1.tag = self.config.l1.override
393 self.config.l1.record =
'L1TUtmTriggerMenuRcd'
394 self.config.l1.connect =
'%(connect)s/CMS_CONDITIONS'
395 self.config.l1.label =
''
396 if not self.config.l1.snapshotTime:
397 self.config.l1.snapshotTime =
'9999-12-31 23:59:59.000'
398 self.config.l1cond =
'%(tag)s,%(record)s,%(connect)s,%(label)s,%(snapshotTime)s' % self.config.l1.__dict__
400 self.config.l1cond =
None
402 if self.config.globaltag
or self.config.l1cond:
403 text +=
" from Configuration.AlCa.GlobalTag import GlobalTag as customiseGlobalTag\n"
404 text +=
" %(process)s.GlobalTag = customiseGlobalTag(%(process)s.GlobalTag"
405 if self.config.globaltag:
406 text +=
", globaltag = %s" % repr(self.config.globaltag)
407 if self.config.l1cond:
408 text +=
", conditions = %s" % repr(self.config.l1cond)
411 text +=
""" %(process)s.GlobalTag.connect = '%(connect)s/CMS_CONDITIONS'
423 if self.config.l1Xml.XmlFile:
425 # override the GlobalTag's L1T menu from an Xml file
426 from HLTrigger.Configuration.CustomConfigs import L1XML
427 %%(process)s = L1XML(%%(process)s,"%s")
428 """ % (self.config.l1Xml.XmlFile)
433 if self.config.emulator:
435 # run the Full L1T emulator, then repack the data into a new RAW collection, to be used by the HLT
436 from HLTrigger.Configuration.CustomConfigs import L1REPACK
437 %%(process)s = L1REPACK(%%(process)s,"%s")
438 """ % (self.config.emulator)
444 r'\b(process\.)?hltOutput(\w+) *= *cms\.OutputModule\( *"ShmStreamConsumer" *,',
445 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 ),',
449 if not self.config.fragment
and self.config.output ==
'full':
452 # add a single "keep *" output
453 %(process)s.hltOutputFULL = cms.OutputModule( "PoolOutputModule",
454 fileName = cms.untracked.string( "outputFULL.root" ),
455 fastCloning = cms.untracked.bool( False ),
456 dataset = cms.untracked.PSet(
457 dataTier = cms.untracked.string( 'RECO' ),
458 filterName = cms.untracked.string( '' )
460 outputCommands = cms.untracked.vstring( 'keep *' )
462 %(process)s.FULLOutput = cms.EndPath( %(process)s.hltOutputFULL )
468 if self.config.name
is None:
472 self.config.name = self.config.name.replace(
"_",
"")
475 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)
479 # adapt HLT modules to the correct process name
480 if 'hltTrigReport' in %%(dict)s:
481 %%(process)s.hltTrigReport.HLTriggerResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
483 if 'hltPreExpressCosmicsOutputSmart' in %%(dict)s:
484 %%(process)s.hltPreExpressCosmicsOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
486 if 'hltPreExpressOutputSmart' in %%(dict)s:
487 %%(process)s.hltPreExpressOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
489 if 'hltPreDQMForHIOutputSmart' in %%(dict)s:
490 %%(process)s.hltPreDQMForHIOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
492 if 'hltPreDQMForPPOutputSmart' in %%(dict)s:
493 %%(process)s.hltPreDQMForPPOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
495 if 'hltPreHLTDQMResultsOutputSmart' in %%(dict)s:
496 %%(process)s.hltPreHLTDQMResultsOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
498 if 'hltPreHLTDQMOutputSmart' in %%(dict)s:
499 %%(process)s.hltPreHLTDQMOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
501 if 'hltPreHLTMONOutputSmart' in %%(dict)s:
502 %%(process)s.hltPreHLTMONOutputSmart.hltResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
504 if 'hltDQMHLTScalers' in %%(dict)s:
505 %%(process)s.hltDQMHLTScalers.triggerResults = cms.InputTag( 'TriggerResults', '', '%(name)s' )
506 %%(process)s.hltDQMHLTScalers.processname = '%(name)s'
508 if 'hltDQML1SeedLogicScalers' in %%(dict)s:
509 %%(process)s.hltDQML1SeedLogicScalers.processname = '%(name)s'
510 """ % self.config.__dict__
516 if 'MessageLogger' in %(dict)s:
517 %(process)s.MessageLogger.categories.append('TriggerSummaryProducerAOD')
518 %(process)s.MessageLogger.categories.append('L1GtTrigReport')
519 %(process)s.MessageLogger.categories.append('L1TGlobalSummary')
520 %(process)s.MessageLogger.categories.append('HLTrigReport')
521 %(process)s.MessageLogger.categories.append('FastReport')
529 if 'GlobalTag' in %%(dict)s:
531 for condition
in conditions:
532 self.
data +=
""" %%(process)s.GlobalTag.toGet.append(
534 record = cms.string( '%(record)s' ),
535 tag = cms.string( '%(tag)s' ),
536 label = cms.untracked.string( '%(label)s' ),
537 connect = cms.untracked.string( '%(connect)s' )
545 if self.config.fragment:
546 return 'from %s import *\n' % module
548 return 'process.load( "%s" )\n' % module
556 self.
data +=
"if '%s' in %%(dict)s:\n" % module
557 for (parameter, value)
in parameters:
558 self.
data +=
" %%(process)s.%s.%s = %s\n" % (module, parameter, value)
563 if self.config.profiling:
567 if not 'hltGetRaw' in self.
data:
570 %(process)s.hltGetRaw = cms.EDAnalyzer( "HLTGetRaw",
571 RawDataCollection = cms.InputTag( "rawDataCollector" )
575 if not 'hltGetConditions' in self.
data:
578 %(process)s.hltGetConditions = cms.EDAnalyzer( 'EventSetupRecordDataGetter',
579 verbose = cms.untracked.bool( False ),
584 if not 'hltBoolFalse' in self.
data:
587 %(process)s.hltBoolFalse = cms.EDFilter( "HLTBool",
588 result = cms.bool( False )
595 %(process)s.HLTriggerFirstPath = cms.Path( %(process)s.hltGetRaw + %(process)s.hltGetConditions + %(process)s.hltBoolFalse )
597 self.
data = re.sub(
r'.*cms\.(End)?Path.*', text +
r'\g<0>', self.
data, 1)
602 if self.config.timing:
604 # instrument the menu with the modules and EndPath needed for timing studies
607 if not 'FastTimerService' in self.
data:
608 self.
data +=
'\n# configure the FastTimerService\n'
609 self.
loadCff(
'HLTrigger.Timer.FastTimerService_cfi')
611 self.
data +=
'\n# configure the FastTimerService\n'
613 self.
data +=
"""# this is currently ignored in CMSSW 7.x, always using the real time clock
614 %(process)s.FastTimerService.useRealTimeClock = True
615 # enable specific features
616 %(process)s.FastTimerService.enableTimingPaths = True
617 %(process)s.FastTimerService.enableTimingModules = True
618 %(process)s.FastTimerService.enableTimingExclusive = True
619 # print a text summary at the end of the job
620 %(process)s.FastTimerService.enableTimingSummary = True
621 # skip the first path (disregard the time spent loading event and conditions data)
622 %(process)s.FastTimerService.skipFirstPath = True
624 %(process)s.FastTimerService.enableDQM = True
625 # enable most per-path DQM plots
626 %(process)s.FastTimerService.enableDQMbyPathActive = True
627 %(process)s.FastTimerService.enableDQMbyPathTotal = True
628 %(process)s.FastTimerService.enableDQMbyPathOverhead = False
629 %(process)s.FastTimerService.enableDQMbyPathDetails = True
630 %(process)s.FastTimerService.enableDQMbyPathCounters = True
631 %(process)s.FastTimerService.enableDQMbyPathExclusive = True
632 # disable per-module DQM plots
633 %(process)s.FastTimerService.enableDQMbyModule = False
634 %(process)s.FastTimerService.enableDQMbyModuleType = False
635 # enable per-event DQM sumary plots
636 %(process)s.FastTimerService.enableDQMSummary = True
637 # enable per-event DQM plots by lumisection
638 %(process)s.FastTimerService.enableDQMbyLumiSection = True
639 %(process)s.FastTimerService.dqmLumiSectionsRange = 2500
640 # set the time resolution of the DQM plots
641 %(process)s.FastTimerService.dqmTimeRange = 1000.
642 %(process)s.FastTimerService.dqmTimeResolution = 5.
643 %(process)s.FastTimerService.dqmPathTimeRange = 100.
644 %(process)s.FastTimerService.dqmPathTimeResolution = 0.5
645 %(process)s.FastTimerService.dqmModuleTimeRange = 40.
646 %(process)s.FastTimerService.dqmModuleTimeResolution = 0.2
647 # set the base DQM folder for the plots
648 %(process)s.FastTimerService.dqmPath = 'HLT/TimerService'
649 %(process)s.FastTimerService.enableDQMbyProcesses = True
654 if not self.config.hilton:
656 if 'hltDQMFileSaver' in self.
data:
657 self.
data = re.sub(
r'\b(process\.)?hltDQMFileSaver \+ ',
'', self.
data)
658 self.
data = re.sub(
r' \+ \b(process\.)?hltDQMFileSaver',
'', self.
data)
659 self.
data = re.sub(
r'\b(process\.)?hltDQMFileSaver',
'', self.
data)
662 dqmstore =
"\n# load the DQMStore and DQMRootOutputModule\n"
664 dqmstore +=
"%(process)s.DQMStore.enableMultiThread = True\n"
666 %(process)s.dqmOutput = cms.OutputModule("DQMRootOutputModule",
667 fileName = cms.untracked.string("DQMIO.root")
671 empty_path = re.compile(
r'.*\b(process\.)?DQMOutput = cms\.EndPath\( *\).*')
672 other_path = re.compile(
r'(.*\b(process\.)?DQMOutput = cms\.EndPath\()(.*)')
673 if empty_path.search(self.
data):
675 self.
data = empty_path.sub(dqmstore +
'\n%(process)s.DQMOutput = cms.EndPath( %(process)s.dqmOutput )\n', self.
data)
676 elif other_path.search(self.
data):
678 self.
data = other_path.sub(dqmstore +
r'\g<1> %(process)s.dqmOutput +\g<3>', self.
data)
681 self.
data += dqmstore
682 self.
data +=
'\n%(process)s.DQMOutput = cms.EndPath( %(process)s.dqmOutput )\n'
687 sys.stderr.write(
'Path selection:\n')
689 sys.stderr.write(
'\t%s\n' % path)
690 sys.stderr.write(
'\n\n')
695 if self.config.paths:
697 paths = self.config.paths.split(
',')
702 if self.config.fragment
or self.config.output
in (
'none',
'full'):
704 if self.config.paths:
709 paths.append(
"-*Output" )
710 paths.append(
"-RatesMonitoring")
711 paths.append(
"-DQMHistograms")
712 elif self.config.output ==
'minimal':
714 if self.config.paths:
715 paths.append(
"HLTDQMResultsOutput" )
717 paths.append(
"-*Output" )
718 paths.append(
"-RatesMonitoring")
719 paths.append(
"-DQMHistograms")
720 paths.append(
"HLTDQMResultsOutput" )
723 if self.config.paths:
724 paths.append(
"*Output" )
729 if self.config.profiling:
730 paths.append(
"-HLTriggerFirstPath" )
731 paths.append(
"-HLTAnalyzerEndpath" )
734 paths.append(
"-OfflineOutput" )
739 if self.config.paths:
743 raise RuntimeError(
'Error: option "--paths %s" does not select any valid paths' % self.config.paths)
759 if not self.config.hilton:
765 if self.config.fragment:
769 self.
options[
'essources'].
append(
"-XMLIdealGeometryESSource" )
774 self.
options[
'esmodules'].
append(
"-AutoMagneticFieldESProducer" )
789 self.
options[
'esmodules'].
append(
"-CaloTowerHardcodeGeometryEP" )
790 self.
options[
'esmodules'].
append(
"-CastorHardcodeGeometryEP" )
793 self.
options[
'esmodules'].
append(
"-EcalElectronicsMappingBuilder" )
795 self.
options[
'esmodules'].
append(
"-EcalLaserCorrectionService" )
796 self.
options[
'esmodules'].
append(
"-EcalPreshowerGeometryEP" )
797 self.
options[
'esmodules'].
append(
"-HcalHardcodeGeometryEP" )
799 self.
options[
'esmodules'].
append(
"-MuonNumberingInitialization" )
800 self.
options[
'esmodules'].
append(
"-ParametrizedMagneticFieldProducer" )
803 self.
options[
'esmodules'].
append(
"-SiStripRecHitMatcherESProducer" )
804 self.
options[
'esmodules'].
append(
"-SiStripQualityESProducer" )
805 self.
options[
'esmodules'].
append(
"-StripCPEfromTrackAngleESProducer" )
806 self.
options[
'esmodules'].
append(
"-TrackerDigiGeometryESModule" )
807 self.
options[
'esmodules'].
append(
"-TrackerGeometricDetESModule" )
808 self.
options[
'esmodules'].
append(
"-VolumeBasedMagneticFieldESProducer" )
811 self.
options[
'esmodules'].
append(
"-L1GtTriggerMaskAlgoTrigTrivialProducer" )
812 self.
options[
'esmodules'].
append(
"-L1GtTriggerMaskTechTrigTrivialProducer" )
813 self.
options[
'esmodules'].
append(
"-hltESPEcalTrigTowerConstituentsMapBuilder" )
814 self.
options[
'esmodules'].
append(
"-hltESPGlobalTrackingGeometryESProducer" )
815 self.
options[
'esmodules'].
append(
"-hltESPMuonDetLayerGeometryESProducer" )
816 self.
options[
'esmodules'].
append(
"-hltESPTrackerRecoGeometryESProducer" )
819 self.
options[
'esmodules'].
append(
"-CaloTowerGeometryFromDBEP" )
820 self.
options[
'esmodules'].
append(
"-CastorGeometryFromDBEP" )
821 self.
options[
'esmodules'].
append(
"-EcalBarrelGeometryFromDBEP" )
822 self.
options[
'esmodules'].
append(
"-EcalEndcapGeometryFromDBEP" )
823 self.
options[
'esmodules'].
append(
"-EcalPreshowerGeometryFromDBEP" )
834 if self.config.fragment
or (self.config.prescale
and (self.config.prescale.lower() ==
'none')):
837 if self.config.fragment
or self.config.timing:
842 if len(filenames) > 255:
849 self.
data +=
" %s = cms.untracked.vstring%s\n" % (name, token_open)
850 for line
in filenames:
851 self.
data +=
" '%s',\n" % line
852 self.
data +=
" %s,\n" % (token_close)
857 if input[0:8] ==
'dataset:':
858 from dasFileQuery
import dasFileQuery
864 files = self.config.input.split(
',')
868 if self.config.input:
871 elif self.config.online:
873 self.
source = [
"file:/tmp/InputCollection.root" ]
874 elif self.config.data:
876 self.
source = [
"file:RelVal_Raw_%s_DATA.root" % self.config.type ]
879 self.
source = [
"file:RelVal_Raw_%s_MC.root" % self.config.type ]
881 if self.config.parent:
886 %(process)s.source = cms.Source( "PoolSource",
892 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