5 Scenario supporting proton collisions 8 from __future__
import print_function
14 from Configuration.DataProcessing.Utils
import stepALCAPRODUCER,stepSKIMPRODUCER,addMonitoring,dictIO,dqmIOSource,harvestingMode,dqmSeq,gtNameAndConnect
15 import FWCore.ParameterSet.Config
as cms
16 from Configuration.DataProcessing.RecoTLR
import customisePrompt,customiseExpress
20 Scenario.__init__(self)
23 self.
cbSc=self.__class__.__name__
30 Implement configuration building for data processing for proton 37 if 'repacked' in args:
38 if args[
'repacked'] ==
True:
39 options.isRepacked =
True 41 options.isRepacked =
False 49 Proton collision data taking prompt reco 54 if (
"PhysicsSkims" in args) :
58 options.__dict__.update(defaultOptions.__dict__)
59 options.scenario = self.
cbSc 65 for a
in args[
'outputs']:
66 if a[
'dataTier'] ==
'MINIAOD':
72 options.runUnscheduled=
True 77 options.customisation_file=args[
'customs']
83 options.step =
'RAW2DIGI,L1Reco,RECO'+self.
recoSeq+eiStep+step+PhysicsSkimStep+miniAODStep+
',DQM'+dqmStep+
',ENDJOB' 88 process = cms.Process(
'RECO', cms.ModifierChain(self.eras, self.
promptModifiers) )
89 cb =
ConfigBuilder(options, process = process, with_output =
True)
92 process.source = cms.Source(
"PoolSource",
93 fileNames = cms.untracked.vstring()
106 Proton collision data taking express processing 109 skims = args[
'skims']
111 pclWkflws = [x
for x
in skims
if "PromptCalibProd" in x]
112 for wfl
in pclWkflws:
118 options.__dict__.update(defaultOptions.__dict__)
119 options.scenario = self.
cbSc 125 options.step =
'RAW2DIGI,L1Reco,RECO'+self.
recoSeq+eiStep+step+
',DQM'+dqmStep+
',ENDJOB' 131 options.filein =
'tobeoverwritten.xyz' 132 if 'inputSource' in args:
133 options.filetype = args[
'inputSource']
134 process = cms.Process(
'RECO', cms.ModifierChain(self.eras, self.
expressModifiers) )
136 if 'customs' in args:
137 options.customisation_file=args[
'customs']
141 cb =
ConfigBuilder(options, process = process, with_output =
True, with_input =
True)
152 _visualizationProcessing_ 157 options.__dict__.update(defaultOptions.__dict__)
158 options.scenario = self.
cbSc 161 if 'preFilter' in args:
162 options.step +=
'FILTER:'+args[
'preFilter']+
',' 168 options.step +=
'RAW2DIGI,L1Reco,RECO'+eiStep+
',ENDJOB' 173 options.timeoutOutput =
True 175 options.filein =
'tobeoverwritten.xyz' 177 if 'inputSource' in args:
178 options.filetype = args[
'inputSource']
181 options.filetype =
'DQMDAQ' 183 print(
"Using %s source"%options.filetype)
185 process = cms.Process(
'RECO', cms.ModifierChain(self.eras, self.
visModifiers) )
187 if 'customs' in args:
188 options.customisation_file=args[
'customs']
192 cb =
ConfigBuilder(options, process = process, with_output =
True, with_input =
True)
211 AlcaReco processing & skims for proton collisions 216 pclWflws = [x
for x
in skims
if "PromptCalibProd" in x]
217 skims = [x
for x
in skims
if x
not in pclWflws]
220 step +=
'ALCA:'+(
'+'.
join(pclWflws))
225 step +=
"ALCAOUTPUT:"+(
'+'.
join(skims))
228 options.__dict__.update(defaultOptions.__dict__)
229 options.scenario = self.
cbSc 231 options.conditions = args[
'globaltag']
if 'globaltag' in args
else 'None' 232 if 'globalTagConnect' in args
and args[
'globalTagConnect'] !=
'':
233 options.conditions +=
','+args[
'globalTagConnect']
235 options.triggerResultsProcess =
'RECO' 237 if 'customs' in args:
238 options.customisation_file=args[
'customs']
240 process = cms.Process(
'ALCA', self.eras)
244 process.source = cms.Source(
246 fileNames = cms.untracked.vstring()
254 methodToCall = getattr(process,
'ALCARECOStream'+wfl)
255 methodToCall.dataset.dataTier = cms.untracked.string(
'ALCAPROMPT')
264 Proton collisions data taking DQM Harvesting 267 options = defaultOptions
268 options.scenario = self.
cbSc 269 options.step =
"HARVESTING"+
dqmSeq(args,
':dqmHarvesting')
270 options.name =
"EDMtoMEConvert" 273 process = cms.Process(
"HARVESTING", self.eras)
276 if 'customs' in args:
277 options.customisation_file=args[
'customs']
280 configBuilder.prepare()
290 Proton collisions data taking AlCa Harvesting 295 skims = args[
'skims']
298 if 'alcapromptdataset' in args:
299 skims.append(
'@'+args[
'alcapromptdataset'])
301 if len(skims) == 0:
return None 302 options = defaultOptions
303 options.scenario = self.
cbSc if hasattr(self,
'cbSc')
else self.__class__.__name__
304 options.step =
"ALCAHARVEST:"+(
'+'.
join(skims))
305 options.name =
"ALCAHARVEST" 308 process = cms.Process(
"ALCAHARVEST", self.eras)
309 process.source = cms.Source(
"PoolSource")
311 if 'customs' in args:
312 options.customisation_file=args[
'customs']
315 configBuilder.prepare()
320 process.source.processingMode = cms.untracked.string(
'RunsAndLumis')
321 process.source.fileNames = cms.untracked(cms.vstring())
322 process.maxEvents.input = -1
323 process.dqmSaver.workflow = datasetName
331 skimming method overload for the prompt skiming 334 options = defaultOptions
335 options.scenario = self.
cbSc if hasattr(self,
'cbSc')
else self.__class__.__name__
336 options.step =
"SKIM:"+(
'+'.
join(skims))
337 options.name =
"SKIM" 339 process = cms.Process(
"SKIM", self.eras)
340 process.source = cms.Source(
"PoolSource")
342 if 'customs' in args:
343 options.customisation_file=args[
'customs']
346 configBuilder.prepare()
351 def repack(self, **args): 352 options = defaultOptions 354 options.filein='file.dat' 355 options.filetype='DAT' 356 options.scenario = self.cbSc if hasattr(self,'cbSc') else self.__class__.__name__ 357 process = cms.Process('REPACK', self.eras) 358 cb = ConfigBuilder(options, process = process, with_output = True,with_input=True) 360 print cb.pythonCfgCode def stepSKIMPRODUCER(PhysicsSkims)
def harvestingMode(process, datasetName, args, rANDl=True)
def skimming(self, skims, globalTag, options)
def dqmSeq(args, default)
def gtNameAndConnect(globalTag, args)
def expressProcessing(self, globalTag, args)
def visualizationProcessing(self, globalTag, args)
def alcaSkim(self, skims, args)
S & print(S &os, JobReport::InputFile const &f)
def dictIO(options, args)
def alcaHarvesting(self, globalTag, datasetName, args)
def addMonitoring(process)
def stepALCAPRODUCER(skims)
def promptReco(self, globalTag, args)
def dqmHarvesting(self, datasetName, runNumber, globalTag, args)
static std::string join(char **cmd)
def _checkRepackedFlag(self, options, args)