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__
25 Implement configuration building for data processing for proton
32 if 'repacked' in args:
33 if args[
'repacked'] ==
True:
34 options.isRepacked =
True
36 options.isRepacked =
False
44 Proton collision data taking prompt reco
49 if (
"PhysicsSkims" in args) :
53 options.__dict__.update(defaultOptions.__dict__)
54 options.scenario = self.
cbSc
60 for a
in args[
'outputs']:
61 if a[
'dataTier'] ==
'MINIAOD':
67 options.runUnscheduled=
True
72 options.customisation_file=args[
'customs']
78 options.step =
'RAW2DIGI,L1Reco,RECO'+self.
recoSeq+eiStep+step+PhysicsSkimStep+miniAODStep+
',DQM'+dqmStep+
',ENDJOB'
84 process = cms.Process(
'RECO', self.eras)
85 cb =
ConfigBuilder(options, process = process, with_output =
True)
88 process.source = cms.Source(
"PoolSource",
89 fileNames = cms.untracked.vstring()
102 Proton collision data taking express processing
105 skims = args[
'skims']
107 pclWkflws = [x
for x
in skims
if "PromptCalibProd" in x]
108 for wfl
in pclWkflws:
114 options.__dict__.update(defaultOptions.__dict__)
115 options.scenario = self.
cbSc
118 if self.
cbSc ==
'pp':
121 options.step =
'RAW2DIGI,L1Reco,RECO'+eiStep+step+
',DQM'+dqmStep+
',ENDJOB'
124 options.filein =
'tobeoverwritten.xyz'
125 if 'inputSource' in args:
126 options.filetype = args[
'inputSource']
127 process = cms.Process(
'RECO', self.eras)
129 if 'customs' in args:
130 options.customisation_file=args[
'customs']
134 cb =
ConfigBuilder(options, process = process, with_output =
True, with_input =
True)
145 _visualizationProcessing_
150 options.__dict__.update(defaultOptions.__dict__)
151 options.scenario = self.
cbSc
154 if 'preFilter' in args:
155 options.step +=
'FILTER:'+args[
'preFilter']+
','
158 if self.
cbSc ==
'pp':
161 options.step +=
'RAW2DIGI,L1Reco,RECO'+eiStep+
',ENDJOB'
166 options.timeoutOutput =
True
168 options.filein =
'tobeoverwritten.xyz'
170 if 'inputSource' in args:
171 options.filetype = args[
'inputSource']
174 options.filetype =
'DQMDAQ'
176 print "Using %s source"%options.filetype
178 process = cms.Process(
'RECO', self.eras)
180 if 'customs' in args:
181 options.customisation_file=args[
'customs']
185 cb =
ConfigBuilder(options, process = process, with_output =
True, with_input =
True)
204 AlcaReco processing & skims for proton collisions
209 pclWflws = [x
for x
in skims
if "PromptCalibProd" in x]
210 skims =
filter(
lambda x: x
not in pclWflws, skims)
213 step +=
'ALCA:'+(
'+'.
join(pclWflws))
218 step +=
"ALCAOUTPUT:"+(
'+'.
join(skims))
221 options.__dict__.update(defaultOptions.__dict__)
222 options.scenario = self.
cbSc
224 options.conditions = args[
'globaltag']
if 'globaltag' in args
else 'None'
225 if 'globalTagConnect' in args
and args[
'globalTagConnect'] !=
'':
226 options.conditions +=
','+args[
'globalTagConnect']
228 options.triggerResultsProcess =
'RECO'
230 if 'customs' in args:
231 options.customisation_file=args[
'customs']
233 process = cms.Process(
'ALCA', self.eras)
237 process.source = cms.Source(
239 fileNames = cms.untracked.vstring()
247 methodToCall = getattr(process,
'ALCARECOStream'+wfl)
248 methodToCall.dataset.dataTier = cms.untracked.string(
'ALCAPROMPT')
257 Proton collisions data taking DQM Harvesting
260 options = defaultOptions
261 options.scenario = self.
cbSc
262 options.step =
"HARVESTING"+
dqmSeq(args,
':dqmHarvesting')
263 options.name =
"EDMtoMEConvert"
266 process = cms.Process(
"HARVESTING", self.eras)
269 if 'customs' in args:
270 options.customisation_file=args[
'customs']
273 configBuilder.prepare()
283 Proton collisions data taking AlCa Harvesting
288 skims = args[
'skims']
291 if 'alcapromptdataset' in args:
292 skims.append(
'@'+args[
'alcapromptdataset'])
294 if len(skims) == 0:
return None
295 options = defaultOptions
296 options.scenario = self.
cbSc if hasattr(self,
'cbSc')
else self.__class__.__name__
297 options.step =
"ALCAHARVEST:"+(
'+'.
join(skims))
298 options.name =
"ALCAHARVEST"
301 process = cms.Process(
"ALCAHARVEST", self.eras)
302 process.source = cms.Source(
"PoolSource")
304 if 'customs' in args:
305 options.customisation_file=args[
'customs']
308 configBuilder.prepare()
313 process.source.processingMode = cms.untracked.string(
'RunsAndLumis')
314 process.source.fileNames = cms.untracked(cms.vstring())
315 process.maxEvents.input = -1
316 process.dqmSaver.workflow = datasetName
324 skimming method overload for the prompt skiming
327 options = defaultOptions
328 options.scenario = self.
cbSc if hasattr(self,
'cbSc')
else self.__class__.__name__
329 options.step =
"SKIM:"+(
'+'.
join(skims))
330 options.name =
"SKIM"
332 process = cms.Process(
"SKIM", self.eras)
333 process.source = cms.Source(
"PoolSource")
335 if 'customs' in args:
336 options.customisation_file=args[
'customs']
339 configBuilder.prepare()
344 def repack(self, **args):
345 options = defaultOptions
347 options.filein='file.dat'
348 options.filetype='DAT'
349 options.scenario = self.cbSc if hasattr(self,'cbSc') else self.__class__.__name__
350 process = cms.Process('REPACK', self.eras)
351 cb = ConfigBuilder(options, process = process, with_output = True,with_input=True)
353 print cb.pythonCfgCode
def visualizationProcessing
static std::string join(char **cmd)