5 Scenario supporting proton collisions
13 from Configuration.DataProcessing.Utils
import stepALCAPRODUCER,stepSKIMPRODUCER,addMonitoring,dictIO,dqmIOSource,harvestingMode,dqmSeq,gtNameAndConnect
14 import FWCore.ParameterSet.Config
as cms
15 from Configuration.DataProcessing.RecoTLR
import customisePrompt,customiseExpress
19 Scenario.__init__(self)
21 self.
cbSc=self.__class__.__name__
28 Implement configuration building for data processing for proton
35 if 'repacked' in args:
36 if args[
'repacked'] ==
True:
37 options.isRepacked =
True
39 options.isRepacked =
False
47 Proton collision data taking prompt reco
52 if (
"PhysicsSkims" in args) :
56 options.__dict__.update(defaultOptions.__dict__)
57 options.scenario = self.
cbSc
63 for a
in args[
'outputs']:
64 if a[
'dataTier'] ==
'MINIAOD':
70 options.runUnscheduled=
True
75 options.customisation_file=args[
'customs']
81 options.step =
'RAW2DIGI,L1Reco,RECO'+self.
recoSeq+eiStep+step+PhysicsSkimStep+miniAODStep+
',DQM'+dqmStep+
',ENDJOB'
87 process = cms.Process(
'RECO', cms.ModifierChain(self.eras, self.
promptModifiers) )
88 cb =
ConfigBuilder(options, process = process, with_output =
True)
91 process.source = cms.Source(
"PoolSource",
92 fileNames = cms.untracked.vstring()
105 Proton collision data taking express processing
108 skims = args[
'skims']
110 pclWkflws = [x
for x
in skims
if "PromptCalibProd" in x]
111 for wfl
in pclWkflws:
117 options.__dict__.update(defaultOptions.__dict__)
118 options.scenario = self.
cbSc
121 if self.
cbSc ==
'pp':
124 options.step =
'RAW2DIGI,L1Reco,RECO'+eiStep+step+
',DQM'+dqmStep+
',ENDJOB'
129 options.filein =
'tobeoverwritten.xyz'
130 if 'inputSource' in args:
131 options.filetype = args[
'inputSource']
132 process = cms.Process(
'RECO', cms.ModifierChain(self.eras, self.
expressModifiers) )
134 if 'customs' in args:
135 options.customisation_file=args[
'customs']
139 cb =
ConfigBuilder(options, process = process, with_output =
True, with_input =
True)
150 _visualizationProcessing_
155 options.__dict__.update(defaultOptions.__dict__)
156 options.scenario = self.
cbSc
159 if 'preFilter' in args:
160 options.step +=
'FILTER:'+args[
'preFilter']+
','
163 if self.
cbSc ==
'pp':
166 options.step +=
'RAW2DIGI,L1Reco,RECO'+eiStep+
',ENDJOB'
171 options.timeoutOutput =
True
173 options.filein =
'tobeoverwritten.xyz'
175 if 'inputSource' in args:
176 options.filetype = args[
'inputSource']
179 options.filetype =
'DQMDAQ'
181 print "Using %s source"%options.filetype
183 process = cms.Process(
'RECO', cms.ModifierChain(self.eras, self.
visModifiers) )
185 if 'customs' in args:
186 options.customisation_file=args[
'customs']
190 cb =
ConfigBuilder(options, process = process, with_output =
True, with_input =
True)
209 AlcaReco processing & skims for proton collisions
214 pclWflws = [x
for x
in skims
if "PromptCalibProd" in x]
215 skims =
filter(
lambda x: x
not in pclWflws, skims)
218 step +=
'ALCA:'+(
'+'.
join(pclWflws))
223 step +=
"ALCAOUTPUT:"+(
'+'.
join(skims))
226 options.__dict__.update(defaultOptions.__dict__)
227 options.scenario = self.
cbSc
229 options.conditions = args[
'globaltag']
if 'globaltag' in args
else 'None'
230 if 'globalTagConnect' in args
and args[
'globalTagConnect'] !=
'':
231 options.conditions +=
','+args[
'globalTagConnect']
233 options.triggerResultsProcess =
'RECO'
235 if 'customs' in args:
236 options.customisation_file=args[
'customs']
238 process = cms.Process(
'ALCA', self.eras)
242 process.source = cms.Source(
244 fileNames = cms.untracked.vstring()
252 methodToCall = getattr(process,
'ALCARECOStream'+wfl)
253 methodToCall.dataset.dataTier = cms.untracked.string(
'ALCAPROMPT')
262 Proton collisions data taking DQM Harvesting
265 options = defaultOptions
266 options.scenario = self.
cbSc
267 options.step =
"HARVESTING"+
dqmSeq(args,
':dqmHarvesting')
268 options.name =
"EDMtoMEConvert"
271 process = cms.Process(
"HARVESTING", self.eras)
274 if 'customs' in args:
275 options.customisation_file=args[
'customs']
278 configBuilder.prepare()
288 Proton collisions data taking AlCa Harvesting
293 skims = args[
'skims']
296 if 'alcapromptdataset' in args:
297 skims.append(
'@'+args[
'alcapromptdataset'])
299 if len(skims) == 0:
return None
300 options = defaultOptions
301 options.scenario = self.
cbSc if hasattr(self,
'cbSc')
else self.__class__.__name__
302 options.step =
"ALCAHARVEST:"+(
'+'.
join(skims))
303 options.name =
"ALCAHARVEST"
306 process = cms.Process(
"ALCAHARVEST", self.eras)
307 process.source = cms.Source(
"PoolSource")
309 if 'customs' in args:
310 options.customisation_file=args[
'customs']
313 configBuilder.prepare()
318 process.source.processingMode = cms.untracked.string(
'RunsAndLumis')
319 process.source.fileNames = cms.untracked(cms.vstring())
320 process.maxEvents.input = -1
321 process.dqmSaver.workflow = datasetName
329 skimming method overload for the prompt skiming
332 options = defaultOptions
333 options.scenario = self.
cbSc if hasattr(self,
'cbSc')
else self.__class__.__name__
334 options.step =
"SKIM:"+(
'+'.
join(skims))
335 options.name =
"SKIM"
337 process = cms.Process(
"SKIM", self.eras)
338 process.source = cms.Source(
"PoolSource")
340 if 'customs' in args:
341 options.customisation_file=args[
'customs']
344 configBuilder.prepare()
349 def repack(self, **args):
350 options = defaultOptions
352 options.filein='file.dat'
353 options.filetype='DAT'
354 options.scenario = self.cbSc if hasattr(self,'cbSc') else self.__class__.__name__
355 process = cms.Process('REPACK', self.eras)
356 cb = ConfigBuilder(options, process = process, with_output = True,with_input=True)
358 print cb.pythonCfgCode
def visualizationProcessing
static std::string join(char **cmd)